<?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>68035</bug_id>
          
          <creation_ts>2011-09-13 15:18:53 -0700</creation_ts>
          <short_desc>[chromium] Zoom animator front-end</short_desc>
          <delta_ts>2011-10-10 06:22:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>69624</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="W. James MacLean">wjmaclean</reporter>
          <assigned_to name="W. James MacLean">wjmaclean</assigned_to>
          <cc>backer</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fsamuel</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>kbr</cc>
    
    <cc>macpherson</cc>
    
    <cc>rjkroege</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>466593</commentid>
    <comment_count>0</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-13 15:18:53 -0700</bug_when>
    <thetext>[chromium] Zoom animator front-end [work-in-progress, not for review yet ...]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466597</commentid>
    <comment_count>1</comment_count>
      <attachid>107241</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-13 15:20:40 -0700</bug_when>
    <thetext>Created attachment 107241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466731</commentid>
    <comment_count>2</comment_count>
      <attachid>107241</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-13 17:44:14 -0700</bug_when>
    <thetext>Comment on attachment 107241
Patch

Attachment 107241 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9657331</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466821</commentid>
    <comment_count>3</comment_count>
      <attachid>107241</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-13 21:31:11 -0700</bug_when>
    <thetext>Comment on attachment 107241
Patch

Attachment 107241 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9655371

New failing tests:
fast/events/wheelevent-in-horizontal-scrollbar-in-rtl.html
fast/events/continuous-platform-wheelevent-in-scrolling-div.html
fast/events/wheelevent-in-vertical-scrollbar-in-rtl.html
fast/events/remove-child-onscroll.html
fast/events/platform-wheelevent-in-scrolling-div.html
fast/events/scroll-in-scaled-page-with-overflow-hidden.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466978</commentid>
    <comment_count>4</comment_count>
      <attachid>107241</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-14 05:14:09 -0700</bug_when>
    <thetext>Comment on attachment 107241
Patch

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

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:58
&gt; +#if ENABLE(GESTURE_EVENTS)

Is this a good idea? In particular what happens when we have gestures and non-accelerated pages?

&gt; Source/WebCore/platform/ScrollableArea.cpp:39
&gt; +#if ENABLE(GESTURE_EVENTS)

I&apos;m not sure we want to to this either.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:585
&gt; +//    PlatformWheelEventBuilder platformEvent(mainFrameImpl()-&gt;frameView(), event);

Is this is test code? I think it ought not to get committed right? Because doubletap via gesture recognition has landed I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466981</commentid>
    <comment_count>5</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-14 05:35:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 107241 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107241&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:58
&gt; &gt; +#if ENABLE(GESTURE_EVENTS)
&gt; 
&gt; Is this a good idea? In particular what happens when we have gestures and non-accelerated pages?

I think I assumed all pages will be accelerated if we want zoom animation to work, but perhaps I&apos;m wrong.

&gt; &gt; Source/WebCore/platform/ScrollableArea.cpp:39
&gt; &gt; +#if ENABLE(GESTURE_EVENTS)
&gt; 
&gt; I&apos;m not sure we want to to this either.

For sure ... I waffled as to whether we should include one header or both ... we can change this.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:585
&gt; &gt; +//    PlatformWheelEventBuilder platformEvent(mainFrameImpl()-&gt;frameView(), event);
&gt; 
&gt; Is this is test code? I think it ought not to get committed right? Because doubletap via gesture recognition has landed I think.

This is just test code ... I left it in since this is a early draft of the patch, but I should have warned people about it.

I use this to generate double tap events on my desktop (since I don&apos;t know how else to get them).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467033</commentid>
    <comment_count>6</comment_count>
      <attachid>107333</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-14 08:20:50 -0700</bug_when>
    <thetext>Created attachment 107333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467034</commentid>
    <comment_count>7</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-14 08:24:08 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=107333) [details]
&gt; Patch

Removed GESTURE_EVENT specialisation in ScrollAnimator::Create() - you need to invoke with --enable-smooth-scrolling for the zoom animator to work. Wheel test code still in this version, so do not commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467039</commentid>
    <comment_count>8</comment_count>
      <attachid>107333</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-14 08:40:32 -0700</bug_when>
    <thetext>Comment on attachment 107333
Patch

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

and you&apos;ll probably want me to have finished https://bugs.webkit.org/show_bug.cgi?id=66272 so you can write the layout tests. :-)

Looks reasonable to me so far.

&gt; Source/WebCore/page/EventHandler.cpp:2233
&gt; +    case PlatformGestureEvent::DoubleTapType:

this will need adjustment to align with https://bugs.webkit.org/show_bug.cgi?id=67822</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467114</commentid>
    <comment_count>9</comment_count>
      <attachid>107333</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-14 10:28:36 -0700</bug_when>
    <thetext>Comment on attachment 107333
Patch

Attachment 107333 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9660606</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467165</commentid>
    <comment_count>10</comment_count>
      <attachid>107359</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-14 11:24:33 -0700</bug_when>
    <thetext>Created attachment 107359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467166</commentid>
    <comment_count>11</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-14 11:25:39 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=107359) [details]
&gt; Patch

Same patch, updated to ToT for fsamuel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467504</commentid>
    <comment_count>12</comment_count>
      <attachid>107359</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-09-14 18:01:41 -0700</bug_when>
    <thetext>Comment on attachment 107359
Patch

Attachment 107359 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9660837</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467639</commentid>
    <comment_count>13</comment_count>
      <attachid>107359</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-14 22:28:35 -0700</bug_when>
    <thetext>Comment on attachment 107359
Patch

Attachment 107359 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9658881

New failing tests:
fast/events/wheelevent-in-horizontal-scrollbar-in-rtl.html
fast/events/continuous-platform-wheelevent-in-scrolling-div.html
fast/events/wheelevent-in-vertical-scrollbar-in-rtl.html
fast/events/remove-child-onscroll.html
fast/events/platform-wheelevent-in-scrolling-div.html
fast/events/scroll-in-scaled-page-with-overflow-hidden.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467960</commentid>
    <comment_count>14</comment_count>
      <attachid>107522</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-15 11:49:25 -0700</bug_when>
    <thetext>Created attachment 107522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468117</commentid>
    <comment_count>15</comment_count>
      <attachid>107522</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-15 15:23:39 -0700</bug_when>
    <thetext>Comment on attachment 107522
Patch

Attachment 107522 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9705092

New failing tests:
fast/events/wheelevent-in-horizontal-scrollbar-in-rtl.html
fast/events/continuous-platform-wheelevent-in-scrolling-div.html
fast/events/wheelevent-in-vertical-scrollbar-in-rtl.html
fast/events/remove-child-onscroll.html
fast/events/platform-wheelevent-in-scrolling-div.html
fast/events/scroll-in-scaled-page-with-overflow-hidden.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468411</commentid>
    <comment_count>16</comment_count>
      <attachid>107522</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-16 03:57:30 -0700</bug_when>
    <thetext>Comment on attachment 107522
Patch

Attachment 107522 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9705467</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475528</commentid>
    <comment_count>17</comment_count>
      <attachid>109176</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-29 10:57:57 -0700</bug_when>
    <thetext>Created attachment 109176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475537</commentid>
    <comment_count>18</comment_count>
      <attachid>109176</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-29 11:11:46 -0700</bug_when>
    <thetext>Comment on attachment 109176
Patch

Attachment 109176 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9893380</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475631</commentid>
    <comment_count>19</comment_count>
      <attachid>109176</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-09-29 13:11:38 -0700</bug_when>
    <thetext>Comment on attachment 109176
Patch

Attachment 109176 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9897004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475672</commentid>
    <comment_count>20</comment_count>
      <attachid>109201</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-29 14:14:40 -0700</bug_when>
    <thetext>Created attachment 109201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475700</commentid>
    <comment_count>21</comment_count>
      <attachid>109201</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-09-29 14:59:56 -0700</bug_when>
    <thetext>Comment on attachment 109201
Patch

Attachment 109201 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9899218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475782</commentid>
    <comment_count>22</comment_count>
      <attachid>109201</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-09-29 17:54:15 -0700</bug_when>
    <thetext>Comment on attachment 109201
Patch

Attachment 109201 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9893492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475795</commentid>
    <comment_count>23</comment_count>
      <attachid>109232</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-29 18:32:22 -0700</bug_when>
    <thetext>Created attachment 109232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475905</commentid>
    <comment_count>24</comment_count>
      <attachid>109232</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-09-29 22:28:02 -0700</bug_when>
    <thetext>Comment on attachment 109232
Patch

Attachment 109232 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9888721</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476056</commentid>
    <comment_count>25</comment_count>
      <attachid>109291</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-30 06:20:48 -0700</bug_when>
    <thetext>Created attachment 109291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476118</commentid>
    <comment_count>26</comment_count>
      <attachid>109291</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-30 08:59:18 -0700</bug_when>
    <thetext>Comment on attachment 109291
Patch

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

looks good to me. The testing stuff is cool. I want to learn more about that. :-)

&gt; Source/WebCore/page/FrameView.cpp:1223
&gt; +void FrameView::zoomAnimatorTransformChanged(double scale, double x, double y, bool isFinished)

if accelerated compositing is turned off, what happens to the layout tests?

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:512
&gt; +        // TODO: add any other event types we should handle

We had decided that any other gesture event should halt the zoom animation. This would be a different CL? Blocked on me?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476120</commentid>
    <comment_count>27</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-30 09:01:09 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 109291 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109291&amp;action=review
&gt; 
&gt; looks good to me. The testing stuff is cool. I want to learn more about that. :-)
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:1223
&gt; &gt; +void FrameView::zoomAnimatorTransformChanged(double scale, double x, double y, bool isFinished)
&gt; 
&gt; if accelerated compositing is turned off, what happens to the layout tests?
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:512
&gt; &gt; +        // TODO: add any other event types we should handle
&gt; 
&gt; We had decided that any other gesture event should halt the zoom animation. This would be a different CL? Blocked on me?

Yes, a different CL, blocked not so much on you as on not wanting to make this patch any bigger than it already is :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476279</commentid>
    <comment_count>28</comment_count>
      <attachid>109291</attachid>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-09-30 13:26:18 -0700</bug_when>
    <thetext>Comment on attachment 109291
Patch

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

&gt; Source/WebCore/platform/ScrollAnimator.cpp:152
&gt; +void ScrollAnimator::testZoomParameters(float scale, float x, float y)

Seems an odd name for this routine. setZoomParameters instead?

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:554
&gt; +        notifyZoomChanged(true);

This looks like it will always call notifyZoomChanged while a scroll animation is in effect, even if no zoom is in flight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476299</commentid>
    <comment_count>29</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-30 13:57:45 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 109291 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109291&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimator.cpp:152
&gt; &gt; +void ScrollAnimator::testZoomParameters(float scale, float x, float y)
&gt; 
&gt; Seems an odd name for this routine. setZoomParameters instead?
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:554
&gt; &gt; +        notifyZoomChanged(true);
&gt; 
&gt; This looks like it will always call notifyZoomChanged while a scroll animation is in effect, even if no zoom is in flight.

Yes, although that&apos;s something we&apos;ll change before this lands ... no sense in calling the scheduleLayerFlush() when not zooming.

We will also need a follow-on patch to deal with interrupting ZAC if a scroll request comes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476960</commentid>
    <comment_count>30</comment_count>
      <attachid>109482</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-03 07:31:34 -0700</bug_when>
    <thetext>Created attachment 109482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476961</commentid>
    <comment_count>31</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-03 07:32:32 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; &gt; 
&gt; &gt; This looks like it will always call notifyZoomChanged while a scroll animation is in effect, even if no zoom is in flight.
&gt; 

I&apos;ve added a check to prevent this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476977</commentid>
    <comment_count>32</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-03 08:11:22 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #29)
&gt; &gt; &gt; 
&gt; &gt; &gt; This looks like it will always call notifyZoomChanged while a scroll animation is in effect, even if no zoom is in flight.
&gt; &gt; 
&gt; 
&gt; I&apos;ve added a check to prevent this.

BTW, I had a alternate idea for preventing the unnecessary calls to notifyZoomChanged(), namely only call when ScrollAnimator::m_currentZoomScale != 1. Since the final frame of the animation triggers a reset of this value to 1 this idea should also work, but I was worried it might be too confusing for others who read the code. But, maybe it&apos;s the more elegant solution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479298</commentid>
    <comment_count>33</comment_count>
      <attachid>109482</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-10-06 11:08:33 -0700</bug_when>
    <thetext>Comment on attachment 109482
Patch

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

The overall structure looks OK to me but there are a few things that should be cleaned up. Please also delete the comments in the ChangeLog about its not being for review yet.

&gt; LayoutTests/platform/chromium/compositing/zoom-animator-scale-test2.html:29
&gt; +                // Check every 100 mS for animation completion.

This comment is out of sync with the value being passed to setInterval.

&gt; LayoutTests/platform/chromium/compositing/zoom-animator-scale-test2.html:30
&gt; +                timer = setInterval(&quot;finishTest()&quot;, 250);

Shouldn&apos;t you add some provision for the test completing within a certain period of time?

&gt; Source/WebCore/page/FrameView.h:173
&gt; +    virtual void zoomAnimatorTransformChanged(double, double, double, bool);

In general WebKit style is to use enums instead of bool arguments so the call site is more self-explanatory. If you can find a good place to define one for this, that would be good.

&gt; Source/WebCore/platform/ScrollAnimator.h:93
&gt; +    virtual void testZoomParameters(float, float, float);

This method name is unclear. It sounds like it is supposed to test the incoming values and return a bool. I think you should rename it to setZoomParametersForTesting if that&apos;s what it&apos;s for, or just call it setZoomParameters.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:370
&gt; +ScrollAnimatorNone::ZoomData::ZoomData(WebCore::ScrollAnimatorNone* parent, float* scale, float* transX, float* transY)

Passing these pointers is pretty gross. Since you&apos;re already passing the parent ScrollAnimatorNone (and ignoring it right now, which is poor), why not just make ZoomData a friend and set its fields directly?

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:390
&gt; +    *m_currentScale = deltaTime / m_animationTime * (m_desiredScale - m_startScale) + m_startScale;

Compute deltaTime / m_animationTime into a local variable for clarity.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:469
&gt; +    // FIXME(wjmaclean): modify this so we can start even if the timer is active.

WebKit style doesn&apos;t put user names into FIXMEs. Here and below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479435</commentid>
    <comment_count>34</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-06 13:47:25 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 109482 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109482&amp;action=review
&gt; 
&gt; The overall structure looks OK to me but there are a few things that should be cleaned up. Please also delete the comments in the ChangeLog about its not being for review yet.

Done.

&gt; &gt; LayoutTests/platform/chromium/compositing/zoom-animator-scale-test2.html:29
&gt; &gt; +                // Check every 100 mS for animation completion.
&gt; 
&gt; This comment is out of sync with the value being passed to setInterval.
&gt; 
&gt; &gt; LayoutTests/platform/chromium/compositing/zoom-animator-scale-test2.html:30
&gt; &gt; +                timer = setInterval(&quot;finishTest()&quot;, 250);
&gt; 
&gt; Shouldn&apos;t you add some provision for the test completing within a certain period of time?

I was figuring the test timeout would catch that, but have added a maximum number of intervals. Could this possibly lead to flake, say if a test bot runs slow enough sometimes to hit the max, but not everytime?

&gt; &gt; Source/WebCore/page/FrameView.h:173
&gt; &gt; +    virtual void zoomAnimatorTransformChanged(double, double, double, bool);
&gt; 
&gt; In general WebKit style is to use enums instead of bool arguments so the call site is more self-explanatory. If you can find a good place to define one for this, that would be good.

OK. There are two levels of calls here, so I hope two enums are ok (otherwise we need to include ScrollableArea.h in ScrollAnimator.h instead of just using a forward declaration for ScrollableArea.)

&gt; &gt; Source/WebCore/platform/ScrollAnimator.h:93
&gt; &gt; +    virtual void testZoomParameters(float, float, float);
&gt; 
&gt; This method name is unclear. It sounds like it is supposed to test the incoming values and return a bool. I think you should rename it to setZoomParametersForTesting if that&apos;s what it&apos;s for, or just call it setZoomParameters.

Fixed.

&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:370
&gt; &gt; +ScrollAnimatorNone::ZoomData::ZoomData(WebCore::ScrollAnimatorNone* parent, float* scale, float* transX, float* transY)
&gt; 
&gt; Passing these pointers is pretty gross. Since you&apos;re already passing the parent ScrollAnimatorNone (and ignoring it right now, which is poor), why not just make ZoomData a friend and set its fields directly?

Fixed. Nice suggestion, thanks!

&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:390
&gt; &gt; +    *m_currentScale = deltaTime / m_animationTime * (m_desiredScale - m_startScale) + m_startScale;
&gt; 
&gt; Compute deltaTime / m_animationTime into a local variable for clarity.

Fixed.

&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:469
&gt; &gt; +    // FIXME(wjmaclean): modify this so we can start even if the timer is active.
&gt; 
&gt; WebKit style doesn&apos;t put user names into FIXMEs. Here and below.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479440</commentid>
    <comment_count>35</comment_count>
      <attachid>110008</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-06 13:47:56 -0700</bug_when>
    <thetext>Created attachment 110008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479443</commentid>
    <comment_count>36</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-06 13:48:55 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Created an attachment (id=110008) [details]
&gt; Patch

Also adds some TRACE_EVENTS calls so we can verify latency on zoom animator events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479452</commentid>
    <comment_count>37</comment_count>
      <attachid>110008</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-06 13:55:59 -0700</bug_when>
    <thetext>Comment on attachment 110008
Patch

Attachment 110008 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9968342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479456</commentid>
    <comment_count>38</comment_count>
      <attachid>110008</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-06 13:59:44 -0700</bug_when>
    <thetext>Comment on attachment 110008
Patch

Attachment 110008 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9978323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479468</commentid>
    <comment_count>39</comment_count>
      <attachid>110016</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-06 14:07:52 -0700</bug_when>
    <thetext>Created attachment 110016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479469</commentid>
    <comment_count>40</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-06 14:08:37 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; Created an attachment (id=110016) [details]
&gt; Patch

Fixed QT compilation issue, re-baselined new test expectation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479484</commentid>
    <comment_count>41</comment_count>
      <attachid>110016</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-06 14:25:40 -0700</bug_when>
    <thetext>Comment on attachment 110016
Patch

Attachment 110016 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9979314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479493</commentid>
    <comment_count>42</comment_count>
      <attachid>110016</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-06 14:34:23 -0700</bug_when>
    <thetext>Comment on attachment 110016
Patch

Attachment 110016 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9968359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479684</commentid>
    <comment_count>43</comment_count>
      <attachid>110016</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-10-06 18:13:03 -0700</bug_when>
    <thetext>Comment on attachment 110016
Patch

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

Thanks, looks better but a couple of remaining issues.

&gt; LayoutTests/platform/chromium/compositing/zoom-animator-scale-test2.html:27
&gt; +                clearInterval(timer);

The layoutTestController won&apos;t be notified if this happens. There should be a clear indication that the test failed in this case. Please test by manually injecting a failure.

&gt; LayoutTests/platform/chromium/test_expectations.txt:2666
&gt; +BUGWKxxxxx MAC WIN GPU GPU-CG : platform/chromium/compositing/zoom-animator-scale-test2.html = IMAGE

Could you go ahead and file the follow-on bug so you can reference it here? (Why doesn&apos;t this test work on the other platforms?)

&gt; Source/WebCore/page/FrameView.cpp:70
&gt; +#include &quot;TraceEvent.h&quot;

This is failing the bots. If you&apos;re putting it here it needs #if PLATFORM(CHROMIUM).

&gt; Source/WebCore/page/FrameView.cpp:1236
&gt; +            TRACE_EVENT(&quot;FrameView::zoomAnimatorTransformChanged&quot;, this, 0);

PLATFORM(CHROMIUM) needed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479687</commentid>
    <comment_count>44</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-10-06 18:17:03 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; I was figuring the test timeout would catch that, but have added a maximum number of intervals. Could this possibly lead to flake, say if a test bot runs slow enough sometimes to hit the max, but not everytime?

Yes, it could be flaky. Given the nature of the test, I&apos;m not sure how to fix it, though. You might ask on IRC.

&gt; OK. There are two levels of calls here, so I hope two enums are ok (otherwise we need to include ScrollableArea.h in ScrollAnimator.h instead of just using a forward declaration for ScrollableArea.)

It&apos;s OK to me though it might be cleaner to just split it into its own header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479984</commentid>
    <comment_count>45</comment_count>
      <attachid>110142</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-07 07:39:23 -0700</bug_when>
    <thetext>Created attachment 110142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479985</commentid>
    <comment_count>46</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-07 07:43:07 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 110016 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110016&amp;action=review
&gt; 
&gt; Thanks, looks better but a couple of remaining issues.
&gt; 
&gt; &gt; LayoutTests/platform/chromium/compositing/zoom-animator-scale-test2.html:27
&gt; &gt; +                clearInterval(timer);
&gt; 
&gt; The layoutTestController won&apos;t be notified if this happens. There should be a clear indication that the test failed in this case. Please test by manually injecting a failure.

Done.

I looked to see if there was some way in js to directly tell layoutTestController the test had failed, but couldn&apos;t find one, so I modified the test to turn the div red again and print &quot;Fail!&quot; in the div.

&gt; &gt; LayoutTests/platform/chromium/test_expectations.txt:2666
&gt; &gt; +BUGWKxxxxx MAC WIN GPU GPU-CG : platform/chromium/compositing/zoom-animator-scale-test2.html = IMAGE
&gt; 
&gt; Could you go ahead and file the follow-on bug so you can reference it here? 

Done.

&gt; (Why doesn&apos;t this test work on the other platforms?)

It does, but I don&apos;t have easy access to all these dev platforms, so I plan on getting the new baselines off the bots. The line is test expectations is to give a heads up to anyone gardening, but I forgot to create the issue in advance and reference it accordingly.

&gt; &gt; Source/WebCore/page/FrameView.cpp:70
&gt; &gt; +#include &quot;TraceEvent.h&quot;
&gt; 
&gt; This is failing the bots. If you&apos;re putting it here it needs #if PLATFORM(CHROMIUM).

Ahh, OK. Wasn&apos;t sure why it was still unhappy (although as yet hadn&apos;t had a chance to look further).

&gt; &gt; Source/WebCore/page/FrameView.cpp:1236
&gt; &gt; +            TRACE_EVENT(&quot;FrameView::zoomAnimatorTransformChanged&quot;, this, 0);
&gt; 
&gt; PLATFORM(CHROMIUM) needed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479986</commentid>
    <comment_count>47</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-07 07:44:04 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (In reply to comment #34)
&gt; &gt; I was figuring the test timeout would catch that, but have added a maximum number of intervals. Could this possibly lead to flake, say if a test bot runs slow enough sometimes to hit the max, but not everytime?
&gt; 
&gt; Yes, it could be flaky. Given the nature of the test, I&apos;m not sure how to fix it, though. You might ask on IRC.

OK, I&apos;ll follow up on this, and revise in a subsequent CL if a better solution can be found.

&gt; &gt; OK. There are two levels of calls here, so I hope two enums are ok (otherwise we need to include ScrollableArea.h in ScrollAnimator.h instead of just using a forward declaration for ScrollableArea.)
&gt; 
&gt; It&apos;s OK to me though it might be cleaner to just split it into its own header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480600</commentid>
    <comment_count>48</comment_count>
      <attachid>110142</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-10-08 12:57:00 -0700</bug_when>
    <thetext>Comment on attachment 110142
Patch

Looks good to me. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480769</commentid>
    <comment_count>49</comment_count>
      <attachid>110142</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 17:20:59 -0700</bug_when>
    <thetext>Comment on attachment 110142
Patch

Clearing flags on attachment: 110142

Committed r97034: &lt;http://trac.webkit.org/changeset/97034&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480770</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 17:21:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480795</commentid>
    <comment_count>51</comment_count>
      <attachid>110142</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-09 20:04:54 -0700</bug_when>
    <thetext>Comment on attachment 110142
Patch

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

&gt; Source/WebCore/testing/Internals.cpp:260
&gt; +void Internals::setZoomAnimatorTransform(Document *document, float scale, float tx, float ty, ExceptionCode&amp; ec)

This breaks my build because scale, tx and ty are not used if GESTURE_EVENTS is disabled.

&gt; Source/WebCore/testing/Internals.cpp:283
&gt; +void Internals::setZoomParameters(Document* document, float scale, float x, float y, ExceptionCode&amp; ec)

probably same problem here when SMOOTH_SCROLLING disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480808</commentid>
    <comment_count>52</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-09 21:03:09 -0700</bug_when>
    <thetext>I&apos;ve posted a fix here: https://bugs.webkit.org/show_bug.cgi?id=69735 seems not many reviewers are online tonight though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480819</commentid>
    <comment_count>53</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-09 21:32:41 -0700</bug_when>
    <thetext>This patch broke the Leopard, Snow Leopard, and Lion builds:

Leopard Intel Debug:
&lt;http://build.webkit.org/builders/Leopard%20Intel%20Debug%20%28Build%29/builds/40399/steps/compile-webkit/logs/stdio&gt;

Snow Leopard Intel Release:
&lt;http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Build%29/builds/34595/steps/compile-webkit/logs/stdio&gt;

Snow Leopard Intel Debug:
&lt;http://build.webkit.org/builders/SnowLeopard%20Intel%20Debug%20%28Build%29/builds/2753/steps/compile-webkit/logs/stdio&gt;

Lion Intel Debug:
&lt;http://build.webkit.org/builders/Lion%20Intel%20Debug%20%28Build%29/builds/2246/steps/compile-webkit/logs/stdio&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480839</commentid>
    <comment_count>54</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-09 23:19:56 -0700</bug_when>
    <thetext>Committed build fix in changeset 97040 &lt;http://trac.webkit.org/changeset/97040&gt; (bug #69735).

For the &quot;implicit conversion shortens 64-bit value into a 32-bit value&quot; warnings I added some casts and committed this in  changeset 97041 &lt;http://trac.webkit.org/changeset/97041&gt; and changeset 97042 &lt;http://trac.webkit.org/changeset/97042&gt;. See bug #69739 for more details.

As remarked in &lt;https://bugs.webkit.org/show_bug.cgi?id=69739#c3&gt;:

From reading the patch (attachment #110142) the only caller of zoomAnimatorTransformChanged() passes floats for the arguments. So, it seems sufficient to modify the prototype of zoomAnimatorTransformChanged() to take arguments of type float instead of double. Then we don&apos;t need any type casts. Is there a reason that zoomAnimatorTransformChanged() takes arguments of type double?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480930</commentid>
    <comment_count>55</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-10-10 06:22:40 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; Committed build fix in changeset 97040 &lt;http://trac.webkit.org/changeset/97040&gt; (bug #69735).
&gt; 
&gt; For the &quot;implicit conversion shortens 64-bit value into a 32-bit value&quot; warnings I added some casts and committed this in  changeset 97041 &lt;http://trac.webkit.org/changeset/97041&gt; and changeset 97042 &lt;http://trac.webkit.org/changeset/97042&gt;. See bug #69739 for more details.
&gt; 
&gt; As remarked in &lt;https://bugs.webkit.org/show_bug.cgi?id=69739#c3&gt;:
&gt; 
&gt; From reading the patch (attachment #110142 [details]) the only caller of zoomAnimatorTransformChanged() passes floats for the arguments. So, it seems sufficient to modify the prototype of zoomAnimatorTransformChanged() to take arguments of type float instead of double. Then we don&apos;t need any type casts. Is there a reason that zoomAnimatorTransformChanged() takes arguments of type double?

The parameters for zoomAnimationTransformChanged can be changed to float without problem as fas as I know, but I can look into this to verify.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107241</attachid>
            <date>2011-09-13 15:20:40 -0700</date>
            <delta_ts>2011-09-14 08:20:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20110913181725.patch</filename>
            <type>text/plain</type>
            <size>17677</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwNDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNGFjNjZhY2I1MTZkOWQ3
NzIwNzJlZjc2MWMxZTc4NTc4MmVmNmIxLi4xZGNhYTJlY2I3NWIwZWFlOWUzOGE3MmY5ODcwMTcw
ZjcwMTcyYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMTMgIFcuIEph
bWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gWm9vbSBhbmltYXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2
aWV3IHlldCAuLi5dCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6em9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6bm90aWZ5Wm9vbUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVpvb20p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpTY3JvbGxBbmltYXRvck5v
bmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFy
ZWE6Onpvb21BbmltYXRvclNjYWxlQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKwogMjAxMS0wOS0xMyAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QgYXMgaXQgaXMgYSByZXF1aXJlZCBwYXJ0IG9mIEhUTUw1CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKaW5kZXggNGU0NjdlYTJjMTZiMjVlOTliN2IwZjA0NWRiMDdjZWJlZGJlOGI2
Yy4uYzUxMWQzYmM1MDc5YWVhYzBkOTYyZjllZmEwNWFlNDc5NWY4ZTYyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjIyMSw4ICsyMjIxLDYgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2Vz
dHVyZUV2ZW50KQogICAgICAgICBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChmYWtlTW91c2VVcCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpEb3VibGVUYXBUeXBlOgotICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CiAgICAgICAgIGNvbnN0IGZsb2F0IHRpY2tE
aXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwogICAgICAgICAvLyBG
SVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0gaW1wbGVtZW50YXRpb24gb25jZSB0aGUgYWJvdmUg
Zml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgpAQCAtMjIzMiw2ICsyMjMwLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50KQogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZl
bnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6RG91YmxlVGFwVHlwZToKICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpT
Y3JvbGxCZWdpblR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5k
VHlwZToKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDRkYjlmYTliZmQ2MDIwODJiNTU3YjgyZTkxNTkyZDYz
ZDE1MDc5NDkuLmM5N2FkMTgwM2FmYTNmMWE5ZjkwZWY1MzBiZjBlOTgxY2Y2ZDY5MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyMDUsNiArMTIwNSwyMCBAQCB2b2lkIEZyYW1l
Vmlldzo6c2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogICAgIG1fbWVkaWFU
eXBlID0gbWVkaWFUeXBlOwogfQogCit2b2lkIEZyYW1lVmlldzo6em9vbUFuaW1hdG9yU2NhbGVD
aGFuZ2VkKGRvdWJsZSBzY2FsZSwgYm9vbCBpc0ZpbmlzaGVkKQoreworICAgIGlmIChpc0Zpbmlz
aGVkKSB7CisgICAgICAgIGZyYW1lKCktPnNldFBhZ2Vab29tRmFjdG9yKGZyYW1lKCktPnBhZ2Va
b29tRmFjdG9yKCkgKiBzY2FsZSk7CisgICAgICAgIHNjYWxlID0gMTsKKyAgICB9CisKKyAgICAv
LyBUT0RPKHdqbWFjbGVhbikgVGhlIHNjYWxlIGlzIGN1cnJlbnRseSBjb21tdW5pY2F0ZWQgdGhy
b3VnaCBwYWdlIHNldHRpbmdzCisgICAgLy8gdG8gbWFpbnRhaW4gY29uc2lzdGVuY3kgd2l0aCB0
aGUgYmFjay1lbmQgbGF5b3V0IHRlc3QgbWVjaGFuaXNtLiBUaGlzCisgICAgLy8gc2hvdWxkIHBy
b2JhYmx5IGJlIHNpbXBsaWZpZWQuCisgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tQW5p
bWF0b3JTY2FsZShzY2FsZSk7CisgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmNvbXBv
c2l0b3IoKS0+c2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKIFN0cmluZyBGcmFtZVZpZXc6Om1l
ZGlhVHlwZSgpIGNvbnN0CiB7CiAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYW4gb3ZlcnJpZGUgdHlw
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDdiZTY2NDFiYmFmZTM0Nzc3NDlhMTUxNzUw
NThiZGM2NmNkZjdkMzEuLjBhZTA2MTczODNkM2IwM2ZhNjg4MjVmNWZiOGI2ZWU1MTAxZGFiNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwYWludEZpeGVkRWxlbWVudHNBZnRlclNjcm9sbGluZygpOwogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9u
KSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCB6b29tQW5pbWF0b3JTY2FsZUNoYW5nZWQoZG91
YmxlLCBib29sKTsKKwogICAgIFN0cmluZyBtZWRpYVR5cGUoKSBjb25zdDsKICAgICB2b2lkIHNl
dE1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFkanVzdE1lZGlhVHlwZUZvclBy
aW50aW5nKGJvb2wgcHJpbnRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwCmluZGV4IDU1MzhlZmRkMWFjZDlkMTNjZjI4NmM2ZGFkMDUxZTE4OGYxM2U3M2Eu
LjVjZmJlMDYyNzFiM2E1YWViOTIwOTMyZGYzZmM5YThhODFlZjVjZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgU2Nyb2xs
QW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkK
ICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2N1cnJlbnRQ
b3NYKDApCiAgICAgLCBtX2N1cnJlbnRQb3NZKDApCisgICAgLCBtX2N1cnJlbnRab29tKDEpCiB7
CiB9CiAKQEAgLTEyOSw0ICsxMzAsOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3Np
dGlvbkNoYW5nZWQoKQogICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldFNjcm9sbE9mZnNldEZyb21B
bmltYXRpb24oSW50UG9pbnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50UG9zWSkpOwogfQogCit2
b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlab29tQ2hhbmdlZChib29sIGlzRmluaXNoZWQpCit7
CisgICAgbV9zY3JvbGxhYmxlQXJlYS0+em9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKG1fY3VycmVu
dFpvb20sIGlzRmluaXNoZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2NjczODFiMzExZDkyZjU1OThj
MTdlMjI0YzBiZTBjNTY2NDU1MWI2Li5mYmFhNTQ0MDc2MWNjMGM3OWFmZGM1ZmFhZjAwODRjZTgx
ZDJlNzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTkx
LDEwICs5MSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFy
ZWEqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5nZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5Wm9vbUNoYW5nZWQoYm9vbCk7CiAKICAgICBTY3JvbGxhYmxlQXJl
YSogbV9zY3JvbGxhYmxlQXJlYTsKICAgICBmbG9hdCBtX2N1cnJlbnRQb3NYOyAvLyBXZSBhdm9p
ZCB1c2luZyBhIEZsb2F0UG9pbnQgaW4gb3JkZXIgdG8gcmVkdWNlCiAgICAgZmxvYXQgbV9jdXJy
ZW50UG9zWTsgLy8gc3ViY2xhc3MgY29kZSBjb21wbGV4aXR5LgorICAgIGZsb2F0IG1fY3VycmVu
dFpvb207CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAppbmRleCA5YTM5ZGQyNWI5MzA0ZjNjNTRk
YzYwZThlMmVhZTdiOWZjNDQxMzY5Li40NjFmYWJiOWE2NzQzN2YzNjIwZTI1NTI0Zjg3ZTNiYzA4
MjMzOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ck5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9u
ZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJPd25BcnJheVB0ci5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKQEAgLTU0
LDkgKzU1LDEzIEBAIHN0YXRpYyBkb3VibGUga01pbmltdW1UaW1lckludGVydmFsID0gLjAwMTsK
IAogUGFzc093blB0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3Jv
bGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiB7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQorICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsQW5pbWF0b3JOb25lKHNjcm9sbGFibGVB
cmVhKSk7CisjZWxzZQogICAgIGlmIChzY3JvbGxhYmxlQXJlYSAmJiBzY3JvbGxhYmxlQXJlYS0+
c2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Ny
b2xsQW5pbWF0b3JOb25lKHNjcm9sbGFibGVBcmVhKSk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkpOworI2VuZGlmCiB9CiAKIFNjcm9sbEFu
aW1hdG9yTm9uZTo6UGFyYW1ldGVyczo6UGFyYW1ldGVycygpCkBAIC0zMjYsNiArMzMxLDIxIEBA
IGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6dXBkYXRlRGF0YUZyb21QYXJh
bWV0ZXJzKGZsb2F0IHN0ZXAsIGZsb2F0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgU2Ny
b2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVpvb20oZG91YmxlIGN1cnJlbnRU
aW1lKQoreworICAgIG1fbGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKyAgICBkb3Vi
bGUgZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZTsKKyAgICBkb3VibGUgbmV3
UG9zaXRpb24gPSAqbV9jdXJyZW50UG9zaXRpb247CisKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9h
bmltYXRpb25UaW1lKSB7CisgICAgICAgICptX2N1cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJlZFBv
c2l0aW9uOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG5ld1Bvc2l0aW9uID0g
ZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogKG1fZGVzaXJlZFBvc2l0aW9uIC0gbV9zdGFy
dFBvc2l0aW9uKSArIG1fc3RhcnRQb3NpdGlvbjsKKyAgICAqbV9jdXJyZW50UG9zaXRpb24gPSBu
ZXdQb3NpdGlvbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLy8gRklYTUU6IEFkZCBpbiBqYW5r
IGRldGVjdGlvbiB0cmFjZSBldmVudHMgaW50byB0aGlzIGZ1bmN0aW9uLgogYm9vbCBTY3JvbGxB
bmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKGRvdWJsZSBjdXJyZW50VGlt
ZSkKIHsKQEAgLTM3MCw2ICszOTAsNyBAQCBTY3JvbGxBbmltYXRvck5vbmU6OlNjcm9sbEFuaW1h
dG9yTm9uZShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmlt
YXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1faG9yaXpvbnRhbERhdGEodGhpcywgJm1fY3Vy
cmVudFBvc1gsIHNjcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSkKICAgICAsIG1fdmVydGlj
YWxEYXRhKHRoaXMsICZtX2N1cnJlbnRQb3NZLCBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdo
dCgpKQorICAgICwgbV96b29tRGF0YSh0aGlzLCAmbV9jdXJyZW50Wm9vbSwgMSkKICAgICAsIG1f
YW5pbWF0aW9uVGltZXIodGhpcywgJlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJG
aXJlZCkKIHsKIH0KQEAgLTQyMCw2ICs0NDEsMzIgQEAgYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6
OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXIK
ICAgICByZXR1cm4gbmVlZFRvU2Nyb2xsOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6
em9vbShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQoreworICAgIEFTU0VSVChwZ2Uu
dHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlKTsKKyAgICAvLyBU
T0RPKHdqbWFjbGVhbikgbW9kaWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhlIHRp
bWVyIGlzIGFjdGl2ZS4KKyAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgewor
ICAgICAgICBtX2N1cnJlbnRab29tID0gMTsKKyAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0g
V1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAgICAgICBtX3pvb21EYXRh
Lm1fc3RhcnRUaW1lID0gY3VycmVudFRpbWUgLSBrVGlja1RpbWUgLyAyOworICAgICAgICBtX3pv
b21EYXRhLm1fc3RhcnRQb3NpdGlvbiA9IG1fY3VycmVudFpvb207CisgICAgICAgIG1fem9vbURh
dGEubV9kZXNpcmVkUG9zaXRpb24gPSBwZ2UuZGVsdGFYKCk7CisgICAgICAgIG1fem9vbURhdGEu
bV9sYXN0QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX3pvb21EYXRhLm1f
YW5pbWF0aW9uVGltZSA9IDUwICoga1RpY2tUaW1lOworICAgICAgICBtX3pvb21EYXRhLm1fYXR0
YWNrVGltZSA9IG1fem9vbURhdGEubV9hbmltYXRpb25UaW1lIC8gMTAuMDsKKyAgICAgICAgbV96
b29tRGF0YS5tX2F0dGFja0N1cnZlID0gUXVhZHJhdGljOworICAgICAgICBtX3pvb21EYXRhLm1f
cmVsZWFzZVRpbWUgPSBtX3pvb21EYXRhLm1fYW5pbWF0aW9uVGltZSAvIDEwLjA7CisgICAgICAg
IG1fem9vbURhdGEubV9yZWxlYXNlQ3VydmUgPSBRdWFkcmF0aWM7CisgICAgICAgIGJvb2wgaXND
b250aW51aW5nID0gbV96b29tRGF0YS5hbmltYXRlWm9vbShjdXJyZW50VGltZSk7CisgICAgICAg
IGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGlt
ZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGlt
ZSk7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9IG1heChrTWluaW11bVRpbWVy
SW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICBpZiAoaXNDb250aW51aW5nKQor
ICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2
YWwpOworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghaXNDb250aW51aW5nKTsKKyAgICB9Cit9
CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRp
b24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQogewogICAgIHN0b3BBbmltYXRpb25UaW1lcklm
TmVlZGVkKCk7CkBAIC00MzUsNiArNDgyLDIxIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpz
Y3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0CiAg
ICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVO
VFMpCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCit7CisgICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7Cisg
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICAgICAgem9v
bShwZ2UpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRPRE86
IGFkZCBhbnkgb3RoZXIgZXZlbnQgdHlwZXMgd2Ugc2hvdWxkIGhhbmRsZQorICAgICAgICB7IH0K
KyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OndpbGxFbmRMaXZl
UmVzaXplKCkKIHsKICAgICB1cGRhdGVWaXNpYmxlTGVuZ3RocygpOwpAQCAtNDY2LDYgKzUyOCwx
MSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxT
Y3JvbGxBbmltYXRvck5vbmU+KiB0aW1lcikKICAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0
cnVlOwogICAgIGlmIChtX3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0
YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpCiAgICAgICAg
IGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKKyAgICBpZiAobV96b29tRGF0YS5tX3N0YXJ0VGlt
ZSAmJiBtX3pvb21EYXRhLmFuaW1hdGVab29tKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFt
ZSkpIHsKKyAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOworICAgICAgICBub3RpZnla
b29tQ2hhbmdlZCghY29udGludWVBbmltYXRpb24pOworICAgIH0gZWxzZQorICAgICAgICBub3Rp
Znlab29tQ2hhbmdlZCh0cnVlKTsKICAgICBpZiAoY29udGludWVBbmltYXRpb24pIHsKICAgICAg
ICAgZG91YmxlIG5leHRUaW1lckludGVydmFsID0gbWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwg
ZGVsdGFUb05leHRGcmFtZSk7CiAgICAgICAgIHRpbWVyLT5zdGFydE9uZVNob3QobmV4dFRpbWVy
SW50ZXJ2YWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3JOb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
aAppbmRleCAwYzBlYjE2YTFmZjk0MTIxZTQ3Mzg1OWZmYWQ4ZmE1NmQxODE5ZmZlLi5iMGRlODcz
OTM1ZmJkNTk4MmE2Nzk5NTc4NDQ2Njc1Nzc3NmZjZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtNDksOCArNDksMTEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yTm9uZSgpOwogCiAgICAgdmlydHVhbCBib29sIHNj
cm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAs
IGZsb2F0IG11bHRpcGxpZXIpOworICAgIHZpcnR1YWwgdm9pZCB6b29tKGNvbnN0IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFu
aW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEVuZExpdmVSZXNpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxT
Y3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxT
Y3JvbGxiYXIoU2Nyb2xsYmFyKik7CkBAIC05Miw2ICs5NSw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgdm9pZCByZXNldCgpOwogICAgICAgICBib29sIHVwZGF0ZURhdGFGcm9tUGFyYW1ldGVycyhm
bG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBmbG9hdCBzY3JvbGxhYmxlU2l6ZSwgZG91Ymxl
IGN1cnJlbnRUaW1lLCBQYXJhbWV0ZXJzKik7CiAgICAgICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChk
b3VibGUgY3VycmVudFRpbWUpOworICAgICAgICBib29sIGFuaW1hdGVab29tKGRvdWJsZSBjdXJy
ZW50VGltZSk7CiAgICAgICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aChMYXlvdXRVbml0IHZp
c2libGVMZW5ndGgpOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3VydmVBdChDdXJ2ZSwgZG91
YmxlIHQpOwpAQCAtMTMzLDYgKzEzNyw3IEBAIHByb3RlY3RlZDoKIAogICAgIFBlckF4aXNEYXRh
IG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAg
UGVyQXhpc0RhdGEgbV96b29tRGF0YTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBU
aW1lcjxTY3JvbGxBbmltYXRvck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNGI1MWE2NTA1NTJhYmJiMjg3OTI0
ODcyNmY5NzUyNDI2YjhkZjJkOC4uYTUxNTdjMGM3NWY4ZjIwN2U0M2UwYzA4NjAzOTVmM2IzMWRk
ODBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAt
MzYsNyArMzYsMTEgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRvck5vbmUuaCIKKyNlbHNlCiAj
aW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtMTIzLDYgKzEyNywxMSBA
QCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZs
b2F0IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoc2Ny
b2xsQW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9CiAKK3ZvaWQgU2Ny
b2xsYWJsZUFyZWE6Onpvb21BbmltYXRvclNjYWxlQ2hhbmdlZChkb3VibGUsIGJvb2wpCit7Cisg
ICAgLy8gUmVxdWlyZXMgRnJhbWVWaWV3IHRvIG92ZXJyaWRlIHRoaXMuCit9CisKIHZvaWQgU2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50KQogewogICAgIHNjcm9sbEFuaW1hdG9yKCktPmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBjMzllMTVj
NWMwYjNhZDlhMWViZjI3OWU0ZTFjM2JlM2NlNTY5OTJhLi41NzU3MjM0YzY2NTA2OTU5MWYyODBk
NmRhNDkwNTU0NjJhNzJiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsVG9YT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihmbG9hdCB4KTsKICAgICB2b2lkIHNjcm9sbFRvWU9mZnNldFdpdGhv
dXRBbmltYXRpb24oZmxvYXQgeCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdG9yU2Nh
bGVDaGFuZ2VkKGRvdWJsZSwgYm9vbCk7CisKICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoUGxh
dGZvcm1XaGVlbEV2ZW50Jik7CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIHZvaWQg
aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBkZGVmZmU3MjgyNDI5NzE1MTIzMzY4MjQ5NjFk
NmIzZWRhNTIyOThlLi5iOWJmOGRkOWFhMTI5N2NjOTdjZWUxYTYyNTE1ZTE0MzNhN2JiNmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE5OCw3ICsxOTgsMTEgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAogICAgICAgICAg
ICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0KTsKKyNpZiBFTkFCTEUoR0VT
VFVSRV9FVkVOVFMpCisgICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5FQVI7CisjZWxzZQogICAgICAgICAgICAgY29uc3QgR0MzRGludCBmaWx0
ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKKyNlbmRpZgogICAgICAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwog
ICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDc3YjNhMTgxM2EzYjkxOTlhMjM1NmJiN2E3ZjQ1OTZmNzdhYmM4MTQuLjc4
ZmZiOTQwOTM4N2VhZTc1YTg1MWRiZWY3ZjhhOTYwMDI5NTE3NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMTMgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2aWV3IHlldCAuLi5d
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om1vdXNlV2hlZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5
KToKKwogMjAxMS0wOS0xMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgYXMgaXQgaXMgYSByZXF1aXJlZCBw
YXJ0IG9mIEhUTUw1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggNjliNzU4MTFkODBlODU1OGRjYzVhMDlkMDY5NDkwZDUxNzljMzk3YS4uOTZkYTcwYjc0
YWVmODcxNzJmYjE0ZWY4MTc0OGQ2MzNhY2JhNDUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNTgyLDggKzU4MiwxNSBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjptb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogCiBib29sIFdlYlZpZXdJ
bXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiB7Ci0gICAg
UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+
ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgp
LT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKKy8vICAg
IFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCkt
PmZyYW1lVmlldygpLCBldmVudCk7CisvLyAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKKyAg
ICBmbG9hdCBzY2FsZSA9IDE7CisgICAgaWYgKGV2ZW50LndoZWVsVGlja3NZID4gMCkKKyAgICAg
ICAgc2NhbGUgPSAwLjg7CisgICAgZWxzZQorICAgICAgICBzY2FsZSA9IDEuMjU7CisgICAgUGxh
dGZvcm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBl
LCBJbnRQb2ludCgwLCAwKSwgSW50UG9pbnQoMCwgMCksIDAsIHNjYWxlLCAwLmYsIDAsIDAsIDAs
IDApOworICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5oYW5kbGVHZXN0dXJlRXZlbnQocGdlKTsKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5U
UykKQEAgLTI1NTksOCArMjU2NiwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9v
dExheWVyTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFpvb21BbmltYXRvclNjYWxlKG1fcGFnZS0+c2V0dGluZ3Mo
KS0+em9vbUFuaW1hdG9yU2NhbGUoKSk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworLy8g
ICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdGF0aWNfY2FzdDxmbG9hdD4oem9vbUxldmVsVG9a
b29tRmFjdG9yKG1fem9vbUxldmVsKSkgKiBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21BbmltYXRv
clNjYWxlKCk7CisvLyAgICAgICAgaWYgKHpvb21GYWN0b3IgPj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHpvb21MZXZlbFRvWm9vbUZhY3RvcihtX21pbmltdW1ab29tTGV2ZWwpKSAmJgorLy8gICAgICAg
ICAgICB6b29tRmFjdG9yIDw9IHN0YXRpY19jYXN0PGZsb2F0Pih6b29tTGV2ZWxUb1pvb21GYWN0
b3IobV9tYXhpbXVtWm9vbUxldmVsKSkpCisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFpvb21BbmltYXRvclNjYWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yU2NhbGUo
KSk7CisgICAgfQogI2lmIFVTRShUSFJFQURFRF9DT01QT1NJVElORykKICAgICBpZiAobV9sYXll
clRyZWVIb3N0KQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0QW5kUmVk
cmF3KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107333</attachid>
            <date>2011-09-14 08:20:50 -0700</date>
            <delta_ts>2011-09-14 11:24:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20110914111729.patch</filename>
            <type>text/plain</type>
            <size>17206</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwNDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNGFjNjZhY2I1MTZkOWQ3
NzIwNzJlZjc2MWMxZTc4NTc4MmVmNmIxLi5mYTcyNGQyMGMxNzMyNDllNmZjYWU5OGY4MmQ4ODIz
OWQyNmNlNjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDktMTQgIFcuIEph
bWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gWm9vbSBhbmltYXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2
aWV3IHlldCAuLi5dCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6em9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6bm90aWZ5Wm9vbUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6
OmFuaW1hdGVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6U2Ny
b2xsQW5pbWF0b3JOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6
em9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1
cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlv
blRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp6b29tQW5pbWF0b3JTY2FsZUNoYW5nZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisKIDIwMTEtMDktMTMgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfU1ZH
X0ZPUkVJR05fT0JKRUNUIGFzIGl0IGlzIGEgcmVxdWlyZWQgcGFydCBvZiBIVE1MNQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDRlNDY3ZWEyYzE2YjI1ZTk5YjdiMGYwNDVk
YjA3Y2ViZWRiZThiNmMuLmM1MTFkM2JjNTA3OWFlYWMwZDk2MmY5ZWZhMDVhZTQ3OTVmOGU2Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyMjEsOCArMjIyMSw2IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
ZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKLSAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogewogICAgICAgICBjb25z
dCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsK
ICAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgdGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9u
Y2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVuIGFkZHJlc3NlZC4KQEAgLTIyMzIsNiArMjIzMCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50
aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZp
ZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0ZGI5ZmE5YmZkNjAyMDgyYjU1
N2I4MmU5MTU5MmQ2M2QxNTA3OTQ5Li5jOTdhZDE4MDNhZmEzZjFhOWY5MGVmNTMwYmYwZTk4MWNm
NmQ2OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjA1LDYgKzEyMDUsMjAg
QEAgdm9pZCBGcmFtZVZpZXc6OnNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkK
ICAgICBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsKIH0KIAordm9pZCBGcmFtZVZpZXc6Onpvb21B
bmltYXRvclNjYWxlQ2hhbmdlZChkb3VibGUgc2NhbGUsIGJvb2wgaXNGaW5pc2hlZCkKK3sKKyAg
ICBpZiAoaXNGaW5pc2hlZCkgeworICAgICAgICBmcmFtZSgpLT5zZXRQYWdlWm9vbUZhY3Rvcihm
cmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpICogc2NhbGUpOworICAgICAgICBzY2FsZSA9IDE7Cisg
ICAgfQorCisgICAgLy8gVE9ETyh3am1hY2xlYW4pIFRoZSBzY2FsZSBpcyBjdXJyZW50bHkgY29t
bXVuaWNhdGVkIHRocm91Z2ggcGFnZSBzZXR0aW5ncworICAgIC8vIHRvIG1haW50YWluIGNvbnNp
c3RlbmN5IHdpdGggdGhlIGJhY2stZW5kIGxheW91dCB0ZXN0IG1lY2hhbmlzbS4gVGhpcworICAg
IC8vIHNob3VsZCBwcm9iYWJseSBiZSBzaW1wbGlmaWVkLgorICAgIG1fcGFnZS0+c2V0dGluZ3Mo
KS0+c2V0Wm9vbUFuaW1hdG9yU2NhbGUoc2NhbGUpOworICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5k
ZXJlcigpLT5jb21wb3NpdG9yKCktPnNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCiBTdHJpbmcg
RnJhbWVWaWV3OjptZWRpYVR5cGUoKSBjb25zdAogewogICAgIC8vIFNlZSBpZiB3ZSBoYXZlIGFu
IG92ZXJyaWRlIHR5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA3YmU2NjQxYmJhZmUz
NDc3NzQ5YTE1MTc1MDU4YmRjNjZjZGY3ZDMxLi4wYWUwNjE3MzgzZDNiMDNmYTY4ODI1ZjVmYjhi
NmVlNTEwMWRhYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE2Nyw2ICsxNjcsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRGaXhlZEVsZW1lbnRzQWZ0ZXJTY3Jv
bGxpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNj
cm9sbERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdG9yU2Nh
bGVDaGFuZ2VkKGRvdWJsZSwgYm9vbCk7CisKICAgICBTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBhZGp1c3RN
ZWRpYVR5cGVGb3JQcmludGluZyhib29sIHByaW50aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCA1NTM4ZWZkZDFhY2Q5ZDEzY2YyODZjNmRhZDA1
MWUxODhmMTNlNzNhLi41Y2ZiZTA2MjcxYjNhNWFlYjkyMDkzMmRmM2ZjOWE4YTgxZWY1Y2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01Miw2ICs1
Miw3IEBAIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEpCiAgICAgOiBtX3Njcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAg
ICwgbV9jdXJyZW50UG9zWCgwKQogICAgICwgbV9jdXJyZW50UG9zWSgwKQorICAgICwgbV9jdXJy
ZW50Wm9vbSgxKQogewogfQogCkBAIC0xMjksNCArMTMwLDkgQEAgdm9pZCBTY3JvbGxBbmltYXRv
cjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKCkKICAgICBtX3Njcm9sbGFibGVBcmVhLT5zZXRTY3Jv
bGxPZmZzZXRGcm9tQW5pbWF0aW9uKEludFBvaW50KG1fY3VycmVudFBvc1gsIG1fY3VycmVudFBv
c1kpKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6bm90aWZ5Wm9vbUNoYW5nZWQoYm9vbCBp
c0ZpbmlzaGVkKQoreworICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnpvb21BbmltYXRvclNjYWxlQ2hh
bmdlZChtX2N1cnJlbnRab29tLCBpc0ZpbmlzaGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNjY3Mzgx
YjMxMWQ5MmY1NTk4YzE3ZTIyNGMwYmUwYzU2NjQ1NTFiNi4uZmJhYTU0NDA3NjFjYzBjNzlhZmRj
NWZhYWYwMDg0Y2U4MWQyZTc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5oCkBAIC05MSwxMCArOTEsMTIgQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbEFuaW1hdG9y
KFNjcm9sbGFibGVBcmVhKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVpvb21DaGFuZ2VkKGJvb2wpOwogCiAgICAg
U2Nyb2xsYWJsZUFyZWEqIG1fc2Nyb2xsYWJsZUFyZWE7CiAgICAgZmxvYXQgbV9jdXJyZW50UG9z
WDsgLy8gV2UgYXZvaWQgdXNpbmcgYSBGbG9hdFBvaW50IGluIG9yZGVyIHRvIHJlZHVjZQogICAg
IGZsb2F0IG1fY3VycmVudFBvc1k7IC8vIHN1YmNsYXNzIGNvZGUgY29tcGxleGl0eS4KKyAgICBm
bG9hdCBtX2N1cnJlbnRab29tOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggOWEzOWRk
MjViOTMwNGYzYzU0ZGM2MGU4ZTJlYWU3YjlmYzQ0MTM2OS4uZGY3MjA5YTZiYTYzOGRiZTJjNzdk
Njg1YWExODEwNzgwZDlhNjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvck5vbmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQdHIu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFi
bGVBcmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCkBAIC0zMjYsNiArMzI3LDIxIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJB
eGlzRGF0YTo6dXBkYXRlRGF0YUZyb21QYXJhbWV0ZXJzKGZsb2F0IHN0ZXAsIGZsb2F0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6
YW5pbWF0ZVpvb20oZG91YmxlIGN1cnJlbnRUaW1lKQoreworICAgIG1fbGFzdEFuaW1hdGlvblRp
bWUgPSBjdXJyZW50VGltZTsKKyAgICBkb3VibGUgZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSBt
X3N0YXJ0VGltZTsKKyAgICBkb3VibGUgbmV3UG9zaXRpb24gPSAqbV9jdXJyZW50UG9zaXRpb247
CisKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25UaW1lKSB7CisgICAgICAgICptX2N1
cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJlZFBvc2l0aW9uOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIG5ld1Bvc2l0aW9uID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICog
KG1fZGVzaXJlZFBvc2l0aW9uIC0gbV9zdGFydFBvc2l0aW9uKSArIG1fc3RhcnRQb3NpdGlvbjsK
KyAgICAqbV9jdXJyZW50UG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogLy8gRklYTUU6IEFkZCBpbiBqYW5rIGRldGVjdGlvbiB0cmFjZSBldmVudHMgaW50byB0
aGlzIGZ1bmN0aW9uLgogYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjphbmlt
YXRlU2Nyb2xsKGRvdWJsZSBjdXJyZW50VGltZSkKIHsKQEAgLTM3MCw2ICszODYsNyBAQCBTY3Jv
bGxBbmltYXRvck5vbmU6OlNjcm9sbEFuaW1hdG9yTm9uZShTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1f
aG9yaXpvbnRhbERhdGEodGhpcywgJm1fY3VycmVudFBvc1gsIHNjcm9sbGFibGVBcmVhLT52aXNp
YmxlV2lkdGgoKSkKICAgICAsIG1fdmVydGljYWxEYXRhKHRoaXMsICZtX2N1cnJlbnRQb3NZLCBz
Y3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgpKQorICAgICwgbV96b29tRGF0YSh0aGlzLCAm
bV9jdXJyZW50Wm9vbSwgMSkKICAgICAsIG1fYW5pbWF0aW9uVGltZXIodGhpcywgJlNjcm9sbEFu
aW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKIH0KQEAgLTQyMCw2ICs0MzcsMzIg
QEAgYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXIKICAgICByZXR1cm4gbmVlZFRvU2Nyb2xsOwogfQog
Cit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCYgcGdlKQoreworICAgIEFTU0VSVChwZ2UudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpEb3VibGVUYXBUeXBlKTsKKyAgICAvLyBUT0RPKHdqbWFjbGVhbikgbW9kaWZ5IHRoaXMgc28g
d2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIGFjdGl2ZS4KKyAgICBpZiAoIW1fYW5p
bWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX2N1cnJlbnRab29tID0gMTsKKyAg
ICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsKKworICAgICAgICBtX3pvb21EYXRhLm1fc3RhcnRUaW1lID0gY3VycmVudFRpbWUgLSBr
VGlja1RpbWUgLyAyOworICAgICAgICBtX3pvb21EYXRhLm1fc3RhcnRQb3NpdGlvbiA9IG1fY3Vy
cmVudFpvb207CisgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkUG9zaXRpb24gPSBwZ2UuZGVs
dGFYKCk7CisgICAgICAgIG1fem9vbURhdGEubV9sYXN0QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRU
aW1lOworICAgICAgICBtX3pvb21EYXRhLm1fYW5pbWF0aW9uVGltZSA9IDUwICoga1RpY2tUaW1l
OworICAgICAgICBtX3pvb21EYXRhLm1fYXR0YWNrVGltZSA9IG1fem9vbURhdGEubV9hbmltYXRp
b25UaW1lIC8gMTAuMDsKKyAgICAgICAgbV96b29tRGF0YS5tX2F0dGFja0N1cnZlID0gUXVhZHJh
dGljOworICAgICAgICBtX3pvb21EYXRhLm1fcmVsZWFzZVRpbWUgPSBtX3pvb21EYXRhLm1fYW5p
bWF0aW9uVGltZSAvIDEwLjA7CisgICAgICAgIG1fem9vbURhdGEubV9yZWxlYXNlQ3VydmUgPSBR
dWFkcmF0aWM7CisgICAgICAgIGJvb2wgaXNDb250aW51aW5nID0gbV96b29tRGF0YS5hbmltYXRl
Wm9vbShjdXJyZW50VGltZSk7CisgICAgICAgIGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2Vp
bCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUg
LSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSk7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJ
bnRlcnZhbCA9IG1heChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOwor
ICAgICAgICBpZiAoaXNDb250aW51aW5nKQorICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5z
dGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2YWwpOworICAgICAgICBub3RpZnlab29tQ2hhbmdl
ZCghaXNDb250aW51aW5nKTsKKyAgICB9Cit9CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpz
Y3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQog
ewogICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7CkBAIC00MzUsNiArNDc4LDIxIEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0CiAgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKCk7CiB9
CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6
aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCit7Cisg
ICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
RG91YmxlVGFwVHlwZToKKyAgICAgICAgem9vbShwZ2UpOworICAgICAgICBicmVhazsKKworICAg
IGRlZmF1bHQ6CisgICAgICAgIC8vIFRPRE86IGFkZCBhbnkgb3RoZXIgZXZlbnQgdHlwZXMgd2Ug
c2hvdWxkIGhhbmRsZQorICAgICAgICB7IH0KKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBTY3Jv
bGxBbmltYXRvck5vbmU6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAgICB1cGRhdGVWaXNpYmxl
TGVuZ3RocygpOwpAQCAtNDY2LDYgKzUyNCwxMSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6
YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+KiB0aW1lcikKICAg
ICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwogICAgIGlmIChtX3ZlcnRpY2FsRGF0YS5t
X3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsg
ZGVsdGFUb05leHRGcmFtZSkpCiAgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKKyAg
ICBpZiAobV96b29tRGF0YS5tX3N0YXJ0VGltZSAmJiBtX3pvb21EYXRhLmFuaW1hdGVab29tKGN1
cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpIHsKKyAgICAgICAgY29udGludWVBbmltYXRp
b24gPSB0cnVlOworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghY29udGludWVBbmltYXRpb24p
OworICAgIH0gZWxzZQorICAgICAgICBub3RpZnlab29tQ2hhbmdlZCh0cnVlKTsKICAgICBpZiAo
Y29udGludWVBbmltYXRpb24pIHsKICAgICAgICAgZG91YmxlIG5leHRUaW1lckludGVydmFsID0g
bWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGFUb05leHRGcmFtZSk7CiAgICAgICAgIHRp
bWVyLT5zdGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2YWwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAppbmRleCAwYzBlYjE2YTFmZjk0MTIxZTQ3Mzg1
OWZmYWQ4ZmE1NmQxODE5ZmZlLi5iMGRlODczOTM1ZmJkNTk4MmE2Nzk5NTc4NDQ2Njc1Nzc3NmZj
ZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5v
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApA
QCAtNDksOCArNDksMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yTm9u
ZSgpOwogCiAgICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpOworICAgIHZpcnR1
YWwgdm9pZCB6b29tKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50Jik7CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CkBAIC05Miw2
ICs5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCByZXNldCgpOwogICAgICAgICBib29s
IHVwZGF0ZURhdGFGcm9tUGFyYW1ldGVycyhmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBm
bG9hdCBzY3JvbGxhYmxlU2l6ZSwgZG91YmxlIGN1cnJlbnRUaW1lLCBQYXJhbWV0ZXJzKik7CiAg
ICAgICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRpbWUpOworICAgICAgICBi
b29sIGFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSk7CiAgICAgICAgIHZvaWQgdXBkYXRl
VmlzaWJsZUxlbmd0aChMYXlvdXRVbml0IHZpc2libGVMZW5ndGgpOwogCiAgICAgICAgIHN0YXRp
YyBkb3VibGUgY3VydmVBdChDdXJ2ZSwgZG91YmxlIHQpOwpAQCAtMTMzLDYgKzEzNyw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhp
c0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAgUGVyQXhpc0RhdGEgbV96b29tRGF0YTsKIAogICAg
IGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+IG1fYW5p
bWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
aW5kZXggNGI1MWE2NTA1NTJhYmJiMjg3OTI0ODcyNmY5NzUyNDI2YjhkZjJkOC4uZmYxYjNiY2U4
YTZiZWU3NDFlNmU5NmYxNmY4YTMzMjlmZDIwZjExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2b2lkIFNjcm9sbGFi
bGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0IHkpCiAgICAgc2Ny
b2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS0+
Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6Onpv
b21BbmltYXRvclNjYWxlQ2hhbmdlZChkb3VibGUsIGJvb2wpCit7CisgICAgLy8gUmVxdWlyZXMg
RnJhbWVWaWV3IHRvIG92ZXJyaWRlIHRoaXMuCit9CisKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6Omhh
bmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIHNj
cm9sbEFuaW1hdG9yKCktPmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBjMzllMTVjNWMwYjNhZDlhMWViZjI3
OWU0ZTFjM2JlM2NlNTY5OTJhLi41NzU3MjM0YzY2NTA2OTU5MWYyODBkNmRhNDkwNTU0NjJhNzJi
OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTUyLDYg
KzUyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsVG9YT2Zmc2V0V2l0aG91dEFuaW1hdGlv
bihmbG9hdCB4KTsKICAgICB2b2lkIHNjcm9sbFRvWU9mZnNldFdpdGhvdXRBbmltYXRpb24oZmxv
YXQgeCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKGRvdWJs
ZSwgYm9vbCk7CisKICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50
Jik7CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIHZvaWQgaGFuZGxlR2VzdHVyZUV2
ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAppbmRleCBkZGVmZmU3MjgyNDI5NzE1MTIzMzY4MjQ5NjFkNmIzZWRhNTIyOThlLi5i
OWJmOGRkOWFhMTI5N2NjOTdjZWUxYTYyNTE1ZTE0MzNhN2JiNmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE5OCw3ICsxOTgsMTEgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAogICAgICAgICAgICAgdGlsZS0+dGV4dHVy
ZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0KTsKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisg
ICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVI7CisjZWxzZQogICAgICAgICAgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGVyLT5o
YXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0Nv
bnRleHQzRDo6TkVBUkVTVDsKKyNlbmRpZgogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwog
ICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc3
YjNhMTgxM2EzYjkxOTlhMjM1NmJiN2E3ZjQ1OTZmNzdhYmM4MTQuLmU2NDgxM2VkMWExMTU5ZGIw
MTE2Yjc0MTI0ZjE4OGQyZDJmY2VmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTEtMDktMTQgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmltYXRvciBmcm9udC1lbmQg
W3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2aWV3IHlldCAuLi5dCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om1vdXNlV2hlZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KToKKwogMjAxMS0wOS0x
MyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1QgYXMgaXQgaXMgYSByZXF1aXJlZCBwYXJ0IG9mIEhUTUw1CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNjliNzU4MTFk
ODBlODU1OGRjYzVhMDlkMDY5NDkwZDUxNzljMzk3YS4uZmJhNTIwZTk3YTUyMjUzY2M3ODFkOTZi
ZTRmZjNhOTY2NTg1ZjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtNTgyLDggKzU4MiwxOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZVVwKGNv
bnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogCiBib29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVs
KGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiB7Ci0gICAgUGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2
ZW50KTsKLSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKKy8vICAgIFBsYXRmb3JtV2hlZWxF
dmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBl
dmVudCk7CisvLyAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKKworICAgIC8vIFRPRE8od2pt
YWNsZWFuKSBBbGwgdGhlc2UgcmVtYWluaW5nIGxpbmVzIGFyZSB0ZXN0LWNvZGUsIGFuZCBuZWVk
IHRvIGJlIHJlbW92ZWQKKyAgICAvLyBiZWZvcmUgdGhpcyBwYXRjaCBsYW5kcy4KKyAgICBmbG9h
dCBzY2FsZSA9IDE7CisgICAgaWYgKGV2ZW50LndoZWVsVGlja3NZID4gMCkKKyAgICAgICAgc2Nh
bGUgPSAwLjg7CisgICAgZWxzZQorICAgICAgICBzY2FsZSA9IDEuMjU7CisgICAgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlLCBJbnRQ
b2ludCgwLCAwKSwgSW50UG9pbnQoMCwgMCksIDAsIHNjYWxlLCAwLmYsIDAsIDAsIDAsIDApOwor
ICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5k
bGVHZXN0dXJlRXZlbnQocGdlKTsKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKQEAg
LTI1NTksOCArMjU2OSwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVy
TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFpvb21BbmltYXRvclNjYWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9v
bUFuaW1hdG9yU2NhbGUoKSk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICAv
LyBUT0RPKHdqbWFjbGVhbikgRmlndXJlIG91dCBob3cgdG8gcHJvcGVybHkgbGltaXQgdGhlIHpv
b20gYW5pbWF0aW9uIHNvIGl0IGRvZXMgbm90CisgICAgICAgIC8vIGdvIHBhc3QgdGhlIG1pbi9t
YXggem9vbSBmYWN0b3IuIFdvdWxkIGxpa2UgdG8gZG8gdGhpcyBhdCB0aGUgRnJhbWVWaWV3IGxl
dmVsIC4uLgorICAgICAgICAvLyBpcyB0aGlzIHBvc3NpYmxlPworLy8gICAgICAgIGZsb2F0IHpv
b21GYWN0b3IgPSBzdGF0aWNfY2FzdDxmbG9hdD4oem9vbUxldmVsVG9ab29tRmFjdG9yKG1fem9v
bUxldmVsKSkgKiBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21BbmltYXRvclNjYWxlKCk7CisvLyAg
ICAgICAgaWYgKHpvb21GYWN0b3IgPj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHpvb21MZXZlbFRvWm9v
bUZhY3RvcihtX21pbmltdW1ab29tTGV2ZWwpKSAmJgorLy8gICAgICAgICAgICB6b29tRmFjdG9y
IDw9IHN0YXRpY19jYXN0PGZsb2F0Pih6b29tTGV2ZWxUb1pvb21GYWN0b3IobV9tYXhpbXVtWm9v
bUxldmVsKSkpCisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFpvb21BbmltYXRvclNj
YWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yU2NhbGUoKSk7CisgICAgfQogI2lm
IFVTRShUSFJFQURFRF9DT01QT1NJVElORykKICAgICBpZiAobV9sYXllclRyZWVIb3N0KQogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107359</attachid>
            <date>2011-09-14 11:24:33 -0700</date>
            <delta_ts>2011-09-15 11:49:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20110914142111.patch</filename>
            <type>text/plain</type>
            <size>17234</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxMDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNjBmMGIzMjg0NzFlNWM3
MzliOWI1Y2M1MjcxNTk4NWViNWVhMzQ0Li5hYzY4MDYwYjQ0ZTNmYjk3ZWM2NTE4MDc0NTIzNTRm
MzQ0NTFkY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDktMTQgIFcuIEph
bWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gWm9vbSBhbmltYXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2
aWV3IHlldCAuLi5dCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6em9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6bm90aWZ5Wm9vbUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6
OmFuaW1hdGVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6U2Ny
b2xsQW5pbWF0b3JOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6
em9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1
cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlv
blRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp6b29tQW5pbWF0b3JTY2FsZUNoYW5nZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisKIDIwMTEtMDktMTQgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1d
IE1vdmUgY29udGVudHMgdGV4dHVyZSBtYW5hZ2VyIGZyb20gTGF5ZXJSZW5kZXJlckNocm9taXVt
IHRvIENDTGF5ZXJUcmVlSG9zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDRlNDY3ZWEyYzE2YjI1ZTk5YjdiMGYwNDVkYjA3Y2ViZWRiZThiNmMuLmM1MTFkM2JjNTA3OWFl
YWMwZDk2MmY5ZWZhMDVhZTQ3OTVmOGU2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTIyMjEsOCArMjIyMSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAg
ICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlw
ZToKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xs
VXBkYXRlVHlwZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClX
aGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgdGhp
cyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVuIGFk
ZHJlc3NlZC4KQEAgLTIyMzIsNiArMjIzMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAg
ICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRh
cFR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgog
ICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAgIEZy
YW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA0ZGI5ZmE5YmZkNjAyMDgyYjU1N2I4MmU5MTU5MmQ2M2QxNTA3OTQ5Li5jOTdhZDE4
MDNhZmEzZjFhOWY5MGVmNTMwYmYwZTk4MWNmNmQ2OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xMjA1LDYgKzEyMDUsMjAgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE1lZGlhVHlw
ZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKICAgICBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsK
IH0KIAordm9pZCBGcmFtZVZpZXc6Onpvb21BbmltYXRvclNjYWxlQ2hhbmdlZChkb3VibGUgc2Nh
bGUsIGJvb2wgaXNGaW5pc2hlZCkKK3sKKyAgICBpZiAoaXNGaW5pc2hlZCkgeworICAgICAgICBm
cmFtZSgpLT5zZXRQYWdlWm9vbUZhY3RvcihmcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpICogc2Nh
bGUpOworICAgICAgICBzY2FsZSA9IDE7CisgICAgfQorCisgICAgLy8gVE9ETyh3am1hY2xlYW4p
IFRoZSBzY2FsZSBpcyBjdXJyZW50bHkgY29tbXVuaWNhdGVkIHRocm91Z2ggcGFnZSBzZXR0aW5n
cworICAgIC8vIHRvIG1haW50YWluIGNvbnNpc3RlbmN5IHdpdGggdGhlIGJhY2stZW5kIGxheW91
dCB0ZXN0IG1lY2hhbmlzbS4gVGhpcworICAgIC8vIHNob3VsZCBwcm9iYWJseSBiZSBzaW1wbGlm
aWVkLgorICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbUFuaW1hdG9yU2NhbGUoc2NhbGUp
OworICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5jb21wb3NpdG9yKCktPnNjaGVkdWxl
TGF5ZXJGbHVzaCgpOworfQorCiBTdHJpbmcgRnJhbWVWaWV3OjptZWRpYVR5cGUoKSBjb25zdAog
ewogICAgIC8vIFNlZSBpZiB3ZSBoYXZlIGFuIG92ZXJyaWRlIHR5cGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAppbmRleCA3YmU2NjQxYmJhZmUzNDc3NzQ5YTE1MTc1MDU4YmRjNjZjZGY3ZDMxLi4w
YWUwNjE3MzgzZDNiMDNmYTY4ODI1ZjVmYjhiNmVlNTEwMWRhYjQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKQEAgLTE2Nyw2ICsxNjcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
cGFpbnRGaXhlZEVsZW1lbnRzQWZ0ZXJTY3JvbGxpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgem9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKGRvdWJsZSwgYm9vbCk7CisKICAg
ICBTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBhZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyhib29sIHByaW50
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCA1
NTM4ZWZkZDFhY2Q5ZDEzY2YyODZjNmRhZDA1MWUxODhmMTNlNzNhLi41Y2ZiZTA2MjcxYjNhNWFl
YjkyMDkzMmRmM2ZjOWE4YTgxZWY1Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwCkBAIC01Miw2ICs1Miw3IEBAIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxB
bmltYXRvcihTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBtX3Njcm9sbGFi
bGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9jdXJyZW50UG9zWCgwKQogICAgICwgbV9j
dXJyZW50UG9zWSgwKQorICAgICwgbV9jdXJyZW50Wm9vbSgxKQogewogfQogCkBAIC0xMjksNCAr
MTMwLDkgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKCkKICAg
ICBtX3Njcm9sbGFibGVBcmVhLT5zZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uKEludFBvaW50
KG1fY3VycmVudFBvc1gsIG1fY3VycmVudFBvc1kpKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRv
cjo6bm90aWZ5Wm9vbUNoYW5nZWQoYm9vbCBpc0ZpbmlzaGVkKQoreworICAgIG1fc2Nyb2xsYWJs
ZUFyZWEtPnpvb21BbmltYXRvclNjYWxlQ2hhbmdlZChtX2N1cnJlbnRab29tLCBpc0ZpbmlzaGVk
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmgKaW5kZXggNjY3MzgxYjMxMWQ5MmY1NTk4YzE3ZTIyNGMwYmUwYzU2NjQ1
NTFiNi4uZmJhYTU0NDA3NjFjYzBjNzlhZmRjNWZhYWYwMDg0Y2U4MWQyZTc5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC05MSwxMCArOTEsMTIgQEAgcHJv
dGVjdGVkOgogICAgIFNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhKik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlm
eVpvb21DaGFuZ2VkKGJvb2wpOwogCiAgICAgU2Nyb2xsYWJsZUFyZWEqIG1fc2Nyb2xsYWJsZUFy
ZWE7CiAgICAgZmxvYXQgbV9jdXJyZW50UG9zWDsgLy8gV2UgYXZvaWQgdXNpbmcgYSBGbG9hdFBv
aW50IGluIG9yZGVyIHRvIHJlZHVjZQogICAgIGZsb2F0IG1fY3VycmVudFBvc1k7IC8vIHN1YmNs
YXNzIGNvZGUgY29tcGxleGl0eS4KKyAgICBmbG9hdCBtX2N1cnJlbnRab29tOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAKaW5kZXggOWEzOWRkMjViOTMwNGYzYzU0ZGM2MGU4ZTJlYWU3YjlmYzQ0
MTM2OS4uZGY3MjA5YTZiYTYzOGRiZTJjNzdkNjg1YWExODEwNzgwZDlhNjhjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQdHIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVF
dmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFy
VGhlbWUuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCkBAIC0zMjYsNiArMzI3LDIxIEBAIGJv
b2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6dXBkYXRlRGF0YUZyb21QYXJhbWV0
ZXJzKGZsb2F0IHN0ZXAsIGZsb2F0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgU2Nyb2xs
QW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVpvb20oZG91YmxlIGN1cnJlbnRUaW1l
KQoreworICAgIG1fbGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKyAgICBkb3VibGUg
ZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZTsKKyAgICBkb3VibGUgbmV3UG9z
aXRpb24gPSAqbV9jdXJyZW50UG9zaXRpb247CisKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmlt
YXRpb25UaW1lKSB7CisgICAgICAgICptX2N1cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJlZFBvc2l0
aW9uOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG5ld1Bvc2l0aW9uID0gZGVs
dGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogKG1fZGVzaXJlZFBvc2l0aW9uIC0gbV9zdGFydFBv
c2l0aW9uKSArIG1fc3RhcnRQb3NpdGlvbjsKKyAgICAqbV9jdXJyZW50UG9zaXRpb24gPSBuZXdQ
b3NpdGlvbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLy8gRklYTUU6IEFkZCBpbiBqYW5rIGRl
dGVjdGlvbiB0cmFjZSBldmVudHMgaW50byB0aGlzIGZ1bmN0aW9uLgogYm9vbCBTY3JvbGxBbmlt
YXRvck5vbmU6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKGRvdWJsZSBjdXJyZW50VGltZSkK
IHsKQEAgLTM3MCw2ICszODYsNyBAQCBTY3JvbGxBbmltYXRvck5vbmU6OlNjcm9sbEFuaW1hdG9y
Tm9uZShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRv
cihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1faG9yaXpvbnRhbERhdGEodGhpcywgJm1fY3VycmVu
dFBvc1gsIHNjcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSkKICAgICAsIG1fdmVydGljYWxE
YXRhKHRoaXMsICZtX2N1cnJlbnRQb3NZLCBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgp
KQorICAgICwgbV96b29tRGF0YSh0aGlzLCAmbV9jdXJyZW50Wm9vbSwgMSkKICAgICAsIG1fYW5p
bWF0aW9uVGltZXIodGhpcywgJlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJl
ZCkKIHsKIH0KQEAgLTQyMCw2ICs0MzcsMzIgQEAgYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OnNj
cm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXIKICAg
ICByZXR1cm4gbmVlZFRvU2Nyb2xsOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9v
bShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQoreworICAgIEFTU0VSVChwZ2UudHlw
ZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlKTsKKyAgICAvLyBUT0RP
KHdqbWFjbGVhbikgbW9kaWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhlIHRpbWVy
IGlzIGFjdGl2ZS4KKyAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgeworICAg
ICAgICBtX2N1cnJlbnRab29tID0gMTsKKyAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAgICAgICBtX3pvb21EYXRhLm1f
c3RhcnRUaW1lID0gY3VycmVudFRpbWUgLSBrVGlja1RpbWUgLyAyOworICAgICAgICBtX3pvb21E
YXRhLm1fc3RhcnRQb3NpdGlvbiA9IG1fY3VycmVudFpvb207CisgICAgICAgIG1fem9vbURhdGEu
bV9kZXNpcmVkUG9zaXRpb24gPSBwZ2UuZGVsdGFYKCk7CisgICAgICAgIG1fem9vbURhdGEubV9s
YXN0QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX3pvb21EYXRhLm1fYW5p
bWF0aW9uVGltZSA9IDUwICoga1RpY2tUaW1lOworICAgICAgICBtX3pvb21EYXRhLm1fYXR0YWNr
VGltZSA9IG1fem9vbURhdGEubV9hbmltYXRpb25UaW1lIC8gMTAuMDsKKyAgICAgICAgbV96b29t
RGF0YS5tX2F0dGFja0N1cnZlID0gUXVhZHJhdGljOworICAgICAgICBtX3pvb21EYXRhLm1fcmVs
ZWFzZVRpbWUgPSBtX3pvb21EYXRhLm1fYW5pbWF0aW9uVGltZSAvIDEwLjA7CisgICAgICAgIG1f
em9vbURhdGEubV9yZWxlYXNlQ3VydmUgPSBRdWFkcmF0aWM7CisgICAgICAgIGJvb2wgaXNDb250
aW51aW5nID0gbV96b29tRGF0YS5hbmltYXRlWm9vbShjdXJyZW50VGltZSk7CisgICAgICAgIGRv
dWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSkg
KiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSk7
CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9IG1heChrTWluaW11bVRpbWVySW50
ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICBpZiAoaXNDb250aW51aW5nKQorICAg
ICAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2YWwp
OworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghaXNDb250aW51aW5nKTsKKyAgICB9Cit9CisK
IHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQogewogICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVl
ZGVkKCk7CkBAIC00MzUsNiArNDc4LDIxIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3Jv
bGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0CiAgICAg
bm90aWZ5UG9zaXRpb25DaGFuZ2VkKCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
Cit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JiBwZ2UpCit7CisgICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7CisgICAg
Y2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICAgICAgem9vbShw
Z2UpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRPRE86IGFk
ZCBhbnkgb3RoZXIgZXZlbnQgdHlwZXMgd2Ugc2hvdWxkIGhhbmRsZQorICAgICAgICB7IH0KKyAg
ICB9Cit9CisjZW5kaWYKKwogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OndpbGxFbmRMaXZlUmVz
aXplKCkKIHsKICAgICB1cGRhdGVWaXNpYmxlTGVuZ3RocygpOwpAQCAtNDY2LDYgKzUyNCwxMSBA
QCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3Jv
bGxBbmltYXRvck5vbmU+KiB0aW1lcikKICAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVl
OwogICAgIGlmIChtX3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5h
bmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpCiAgICAgICAgIGNv
bnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKKyAgICBpZiAobV96b29tRGF0YS5tX3N0YXJ0VGltZSAm
JiBtX3pvb21EYXRhLmFuaW1hdGVab29tKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkp
IHsKKyAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOworICAgICAgICBub3RpZnlab29t
Q2hhbmdlZCghY29udGludWVBbmltYXRpb24pOworICAgIH0gZWxzZQorICAgICAgICBub3RpZnla
b29tQ2hhbmdlZCh0cnVlKTsKICAgICBpZiAoY29udGludWVBbmltYXRpb24pIHsKICAgICAgICAg
ZG91YmxlIG5leHRUaW1lckludGVydmFsID0gbWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVs
dGFUb05leHRGcmFtZSk7CiAgICAgICAgIHRpbWVyLT5zdGFydE9uZVNob3QobmV4dFRpbWVySW50
ZXJ2YWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApp
bmRleCAwYzBlYjE2YTFmZjk0MTIxZTQ3Mzg1OWZmYWQ4ZmE1NmQxODE5ZmZlLi5iMGRlODczOTM1
ZmJkNTk4MmE2Nzk5NTc4NDQ2Njc1Nzc3NmZjZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtNDksOCArNDksMTEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yTm9uZSgpOwogCiAgICAgdmlydHVhbCBib29sIHNjcm9s
bChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZs
b2F0IG11bHRpcGxpZXIpOworICAgIHZpcnR1YWwgdm9pZCB6b29tKGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1h
dGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbEVuZExpdmVSZXNpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3Jv
bGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3Jv
bGxiYXIoU2Nyb2xsYmFyKik7CkBAIC05Miw2ICs5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
dm9pZCByZXNldCgpOwogICAgICAgICBib29sIHVwZGF0ZURhdGFGcm9tUGFyYW1ldGVycyhmbG9h
dCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBmbG9hdCBzY3JvbGxhYmxlU2l6ZSwgZG91YmxlIGN1
cnJlbnRUaW1lLCBQYXJhbWV0ZXJzKik7CiAgICAgICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChkb3Vi
bGUgY3VycmVudFRpbWUpOworICAgICAgICBib29sIGFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50
VGltZSk7CiAgICAgICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aChMYXlvdXRVbml0IHZpc2li
bGVMZW5ndGgpOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3VydmVBdChDdXJ2ZSwgZG91Ymxl
IHQpOwpAQCAtMTMzLDYgKzEzNyw3IEBAIHByb3RlY3RlZDoKIAogICAgIFBlckF4aXNEYXRhIG1f
aG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAgUGVy
QXhpc0RhdGEgbV96b29tRGF0YTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBUaW1l
cjxTY3JvbGxBbmltYXRvck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNGI1MWE2NTA1NTJhYmJiMjg3OTI0ODcy
NmY5NzUyNDI2YjhkZjJkOC4uZmYxYjNiY2U4YTZiZWU3NDFlNmU5NmYxNmY4YTMzMjlmZDIwZjEx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTIz
LDYgKzEyMywxMSBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0
QW5pbWF0aW9uKGZsb2F0IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZs
b2F0UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9
CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6Onpvb21BbmltYXRvclNjYWxlQ2hhbmdlZChkb3VibGUs
IGJvb2wpCit7CisgICAgLy8gUmVxdWlyZXMgRnJhbWVWaWV3IHRvIG92ZXJyaWRlIHRoaXMuCit9
CisKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50KQogewogICAgIHNjcm9sbEFuaW1hdG9yKCktPmhhbmRsZVdoZWVsRXZl
bnQod2hlZWxFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApp
bmRleCBjMzllMTVjNWMwYjNhZDlhMWViZjI3OWU0ZTFjM2JlM2NlNTY5OTJhLi41NzU3MjM0YzY2
NTA2OTU5MWYyODBkNmRhNDkwNTU0NjJhNzJiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2Ny
b2xsVG9YT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihmbG9hdCB4KTsKICAgICB2b2lkIHNjcm9sbFRv
WU9mZnNldFdpdGhvdXRBbmltYXRpb24oZmxvYXQgeCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9v
bUFuaW1hdG9yU2NhbGVDaGFuZ2VkKGRvdWJsZSwgYm9vbCk7CisKICAgICB2b2lkIGhhbmRsZVdo
ZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQogICAgIHZvaWQgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCA2YmQyODIxZGNmMWRiMjkx
ZTM0NTU3ZDUyMmRmZWJiNmRiOTE0NGY5Li5jMzgyM2Q4ZDgxYjMwM2Y5NDc0YmVmMjgwZGY0NTJi
Yjk5OWEwN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE5OCw3ICsx
OTgsMTEgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsK
IAogICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0KTsKKyNp
ZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRl
ciA9IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVI7CisjZWxzZQogICAgICAgICAgICAgY29uc3Qg
R0MzRGludCBmaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKKyNlbmRpZgogICAg
ICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIs
IGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRjYTZlOTE3MzlhNjc2NTFkNTMzNmQ1NDA2MmMxMTI1
ZTJjOWI4OTMuLjFlNTFmYWVmZDI4MzI2NjRhY2ZlMjcyOTZhM2MyNmM0NjEyY2M0N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMTQgIFcuIEph
bWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gWm9vbSBhbmltYXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2
aWV3IHlldCAuLi5dCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
Om1vdXNlV2hlZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVy
TmVlZHNEaXNwbGF5KToKKwogMjAxMS0wOS0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVGhlIGNoZWNrZWQgc3RhdGUgb2YgV2ViUG9wdXBN
ZW51SXRlbSBpc24ndCBpbml0aWFsaXplZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IDY5Yjc1ODExZDgwZTg1NThkY2M1YTA5ZDA2OTQ5MGQ1MTc5YzM5
N2EuLmZiYTUyMGU5N2E1MjI1M2NjNzgxZDk2YmU0ZmYzYTk2NjU4NWYxN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTU4Miw4ICs1ODIsMTggQEAg
dm9pZCBXZWJWaWV3SW1wbDo6bW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIAog
Ym9vbCBXZWJWaWV3SW1wbDo6bW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmIGV2
ZW50KQogewotICAgIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7Ci0gICAgcmV0dXJuIG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1F
dmVudCk7CisvLyAgICBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQobWFp
bkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOworLy8gICAgcmV0dXJuIG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZv
cm1FdmVudCk7CisKKyAgICAvLyBUT0RPKHdqbWFjbGVhbikgQWxsIHRoZXNlIHJlbWFpbmluZyBs
aW5lcyBhcmUgdGVzdC1jb2RlLCBhbmQgbmVlZCB0byBiZSByZW1vdmVkCisgICAgLy8gYmVmb3Jl
IHRoaXMgcGF0Y2ggbGFuZHMuCisgICAgZmxvYXQgc2NhbGUgPSAxOworICAgIGlmIChldmVudC53
aGVlbFRpY2tzWSA+IDApCisgICAgICAgIHNjYWxlID0gMC44OworICAgIGVsc2UKKyAgICAgICAg
c2NhbGUgPSAxLjI1OworICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50IHBnZShQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgSW50UG9pbnQoMCwgMCksIEludFBvaW50KDAsIDApLCAw
LCBzY2FsZSwgMC5mLCAwLCAwLCAwLCAwKTsKKyAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBnZSk7CiB9CiAKICNp
ZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCkBAIC0yNTU5LDggKzI1NjksMTUgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKIHZv
aWQgV2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JT
Y2FsZShtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21BbmltYXRvclNjYWxlKCkpOworICAgIGlmICht
X2xheWVyVHJlZUhvc3QpIHsKKyAgICAgICAgLy8gVE9ETyh3am1hY2xlYW4pIEZpZ3VyZSBvdXQg
aG93IHRvIHByb3Blcmx5IGxpbWl0IHRoZSB6b29tIGFuaW1hdGlvbiBzbyBpdCBkb2VzIG5vdAor
ICAgICAgICAvLyBnbyBwYXN0IHRoZSBtaW4vbWF4IHpvb20gZmFjdG9yLiBXb3VsZCBsaWtlIHRv
IGRvIHRoaXMgYXQgdGhlIEZyYW1lVmlldyBsZXZlbCAuLi4KKyAgICAgICAgLy8gaXMgdGhpcyBw
b3NzaWJsZT8KKy8vICAgICAgICBmbG9hdCB6b29tRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHpvb21MZXZlbFRvWm9vbUZhY3RvcihtX3pvb21MZXZlbCkpICogbV9wYWdlLT5zZXR0aW5ncygp
LT56b29tQW5pbWF0b3JTY2FsZSgpOworLy8gICAgICAgIGlmICh6b29tRmFjdG9yID49IHN0YXRp
Y19jYXN0PGZsb2F0Pih6b29tTGV2ZWxUb1pvb21GYWN0b3IobV9taW5pbXVtWm9vbUxldmVsKSkg
JiYKKy8vICAgICAgICAgICAgem9vbUZhY3RvciA8PSBzdGF0aWNfY2FzdDxmbG9hdD4oem9vbUxl
dmVsVG9ab29tRmFjdG9yKG1fbWF4aW11bVpvb21MZXZlbCkpKQorICAgICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JTY2FsZShtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21B
bmltYXRvclNjYWxlKCkpOworICAgIH0KICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCiAg
ICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVk
c0NvbW1pdEFuZFJlZHJhdygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107522</attachid>
            <date>2011-09-15 11:49:25 -0700</date>
            <delta_ts>2011-09-29 10:57:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20110915144553.patch</filename>
            <type>text/plain</type>
            <size>30422</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZmM1YWQ2MWIxODg0OThi
MzIwZWU3YTkzMjgxZWFiMTRiZmYzYjFkLi44YjQ5MjdmY2IwMDQxM2MxZGY0ODkyZmQ0OTVhMDgz
ZTQ4ZDQ2ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDktMTUgIFcuIEph
bWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gWm9vbSBhbmltYXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2
aWV3IHlldCAuLi5dCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6em9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXRab29tQW5pbWF0b3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6em9vbUFuaW1hdG9yUG9zWCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbUFu
aW1hdG9yUG9zWSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpub3RpZnlab29tQ2hhbmdlZCk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvck5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJB
eGlzRGF0YTo6YW5pbWF0ZVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JO
b25lOjpTY3JvbGxBbmltYXRvck5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3JOb25lOjp6b29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFu
ZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6
YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Onpvb21BbmltYXRvclNjYWxlQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRab29tQW5p
bWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmNvbW1pdFRvKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGw6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorCiAy
MDExLTA5LTE1ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbQ2hyb21pdW1dIE1ha2Ugc3VyZSB0aGF0IHRoZSBBUk0gTkVPTiBmaWxlcyBidWlsZCB3aXRo
IC1tYXJtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNGU0NjdlYTJjMTZi
MjVlOTliN2IwZjA0NWRiMDdjZWJlZGJlOGI2Yy4uYzUxMWQzYmM1MDc5YWVhYzBkOTYyZjllZmEw
NWFlNDc5NWY4ZTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjIy
MSw4ICsyMjIxLDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICBoYW5kbGVNb3Vz
ZVJlbGVhc2VFdmVudChmYWtlTW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgotICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7
CiAgICAgICAgIGNvbnN0IGZsb2F0IHRpY2tEaXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6OnRp
Y2tNdWx0aXBsaWVyOwogICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0gaW1w
bGVtZW50YXRpb24gb25jZSB0aGUgYWJvdmUgZml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgpAQCAt
MjIzMiw2ICsyMjMwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICBoYW5kbGVX
aGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKICAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CiAgICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3
ID0gbV9mcmFtZS0+dmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ3YTg0
ZmY0OTA2YjBlYmU3ODc4YjcxMDEwZTAyMDM2Nzg5MjcyZjUuLmJkMjIzNTllMjU1M2YzNjU2MGNk
MDhhZjQxOTMxM2UyZDMxZDYyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEy
MTUsNiArMTIxNSwyNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0TWVkaWFUeXBlKGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlKQogICAgIG1fbWVkaWFUeXBlID0gbWVkaWFUeXBlOwogfQogCit2b2lkIEZy
YW1lVmlldzo6em9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKGRvdWJsZSBzY2FsZSwgZG91YmxlIHgs
IGRvdWJsZSB5LCBib29sIGlzRmluaXNoZWQpCit7CisgICAgaWYgKGlzRmluaXNoZWQpIHsKKyAg
ICAgICAgLy8gVE9ETyh3am1hY2xlYW4sIGZzYW11ZWwsIHZhcnVuamFpbikgVmVyaWZ5IHdlIGRv
bid0IG5lZWQgdG8gZ2V0IHNvbWUKKyAgICAgICAgLy8gY3VycmVudCBzY3JvbGwgcG9pbnQgYW5k
IGFkZCBpdCB0byAoeCx5KSBmaXJzdC4KKy8vICAgICAgICBtX3BhZ2UtPnNldFBhZ2VTY2FsZUZh
Y3RvcihtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpICogc2NhbGUsIExheW91dFBvaW50KHgsIHkp
KTsKKyAgICAgICAgZnJhbWUoKS0+c2V0UGFnZVpvb21GYWN0b3IoZnJhbWUoKS0+cGFnZVpvb21G
YWN0b3IoKSAqIHNjYWxlKTsKKyAgICAgICAgc2Nyb2xsVG8oSW50U2l6ZSh4LCB5KSk7CisgICAg
ICAgIHNjYWxlID0gMTsKKyAgICAgICAgeCA9IDA7CisgICAgICAgIHkgPSAwOworICAgIH0KKwor
ICAgIC8vIFRPRE8od2ptYWNsZWFuKSBUaGUgc2NhbGUgaXMgY3VycmVudGx5IGNvbW11bmljYXRl
ZCB0aHJvdWdoIHBhZ2Ugc2V0dGluZ3MKKyAgICAvLyB0byBtYWludGFpbiBjb25zaXN0ZW5jeSB3
aXRoIHRoZSBiYWNrLWVuZCBsYXlvdXQgdGVzdCBtZWNoYW5pc20uIFRoaXMKKyAgICAvLyBzaG91
bGQgcHJvYmFibHkgYmUgc2ltcGxpZmllZC4KKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpv
b21BbmltYXRvclNjYWxlKHNjYWxlKTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpvb21B
bmltYXRvclBvc2l0aW9uKHgsIHkpOworICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5j
b21wb3NpdG9yKCktPnNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCiBTdHJpbmcgRnJhbWVWaWV3
OjptZWRpYVR5cGUoKSBjb25zdAogewogICAgIC8vIFNlZSBpZiB3ZSBoYXZlIGFuIG92ZXJyaWRl
IHR5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA4NjQ5ODExYmFiOTE4NTRiMGE5ZjE1
ZmE2NzE5YWI5MzhkOTNkY2MxLi44MWZkYzZlMzEwNGVhMDQzYmExYWFhY2UyYzUxNjk4OWQxZjZh
MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE2Nyw2ICsxNjcsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRGaXhlZEVsZW1lbnRzQWZ0ZXJTY3JvbGxpbmcoKTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVj
dGlvbikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdG9yU2NhbGVDaGFuZ2Vk
KGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGJvb2wpOworCiAgICAgU3RyaW5nIG1lZGlhVHlwZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
YWRqdXN0TWVkaWFUeXBlRm9yUHJpbnRpbmcoYm9vbCBwcmludGluZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmgKaW5kZXggYTliNGFjNTAxMTFlYmQ2YzU5NTkyM2NlYzhjODlhMGE0MTc3ODc0YS4uZDMx
ZTI3ZjBjODUzYjcwYzFjMjFlZjgxYzgwNWVjNzkyZjBmZjJiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaApAQCAtNDQxLDYgKzQ0MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlIHNjYWxlKSB7IG1fem9vbUFuaW1hdG9yU2Nh
bGUgPSBzY2FsZTsgfQogICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9yU2NhbGUoKSB7IHJldHVy
biBtX3pvb21BbmltYXRvclNjYWxlOyB9CiAKKyAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JQ
b3NpdGlvbihkb3VibGUgeCwgZG91YmxlIHkpIHsgbV96b29tQW5pbWF0b3JQb3NYID0geDsgbV96
b29tQW5pbWF0b3JQb3NZID0geTsgfQorICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9yUG9zWCgp
IHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWDsgfQorICAgICAgICBkb3VibGUgem9vbUFuaW1h
dG9yUG9zWSgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWTsgfQorCiAgICAgICAgIHZvaWQg
c2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGJvb2wgZmxh
ZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCA9IGZs
YWc7IH0KICAgICAgICAgYm9vbCBzaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5
RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1w
dHlEb2N1bWVudDsgfQogCkBAIC02MDAsNiArNjA0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2VuZGlmCiAKICAgICAgICAgZG91YmxlIG1fem9vbUFuaW1hdG9yU2NhbGU7CisgICAgICAgIGRv
dWJsZSBtX3pvb21BbmltYXRvclBvc1g7CisgICAgICAgIGRvdWJsZSBtX3pvb21BbmltYXRvclBv
c1k7CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxk
UGFpbnROYXRpdmVDb250cm9sczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcAppbmRleCA1NTM4ZWZkZDFhY2Q5ZDEzY2YyODZjNmRhZDA1MWUxODhmMTNlNzNhLi5m
OGY5OWFjNDA1NjMzMmE5OGQyOTcyYjkzYWQzM2M0ZmExN2U0ODU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01Miw2ICs1Miw5IEBAIFNjcm9sbEFu
aW1hdG9yOjpTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgOiBtX3Njcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9jdXJyZW50UG9z
WCgwKQogICAgICwgbV9jdXJyZW50UG9zWSgwKQorICAgICwgbV9jdXJyZW50Wm9vbSgxKQorICAg
ICwgbV9jdXJyZW50Wm9vbVBvc1goMCkKKyAgICAsIG1fY3VycmVudFpvb21Qb3NZKDApCiB7CiB9
CiAKQEAgLTEyOSw0ICsxMzIsOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlv
bkNoYW5nZWQoKQogICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldFNjcm9sbE9mZnNldEZyb21Bbmlt
YXRpb24oSW50UG9pbnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50UG9zWSkpOwogfQogCit2b2lk
IFNjcm9sbEFuaW1hdG9yOjpub3RpZnlab29tQ2hhbmdlZChib29sIGlzRmluaXNoZWQpCit7Cisg
ICAgbV9zY3JvbGxhYmxlQXJlYS0+em9vbUFuaW1hdG9yU2NhbGVDaGFuZ2VkKG1fY3VycmVudFpv
b20sIG1fY3VycmVudFpvb21Qb3NYLCBtX2N1cnJlbnRab29tUG9zWSwgaXNGaW5pc2hlZCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5oCmluZGV4IDY2NzM4MWIzMTFkOTJmNTU5OGMxN2UyMjRjMGJlMGM1NjY0NTUxYjYu
LjMzYjU1ZDRiYzQyYWFiYWQxMmJmZjA3MGJlN2Q2ZmZiMTVkNDA2Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtOTEsMTAgKzkxLDE0IEBAIHByb3RlY3Rl
ZDoKICAgICBTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSopOwogCiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlab29t
Q2hhbmdlZChib29sKTsKIAogICAgIFNjcm9sbGFibGVBcmVhKiBtX3Njcm9sbGFibGVBcmVhOwog
ICAgIGZsb2F0IG1fY3VycmVudFBvc1g7IC8vIFdlIGF2b2lkIHVzaW5nIGEgRmxvYXRQb2ludCBp
biBvcmRlciB0byByZWR1Y2UKICAgICBmbG9hdCBtX2N1cnJlbnRQb3NZOyAvLyBzdWJjbGFzcyBj
b2RlIGNvbXBsZXhpdHkuCisgICAgZmxvYXQgbV9jdXJyZW50Wm9vbTsKKyAgICBmbG9hdCBtX2N1
cnJlbnRab29tUG9zWDsKKyAgICBmbG9hdCBtX2N1cnJlbnRab29tUG9zWTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvck5vbmUuY3BwCmluZGV4IDlhMzlkZDI1YjkzMDRmM2M1NGRjNjBlOGUyZWFlN2I5ZmM0NDEz
NjkuLjA3OGJhNjNiYmZhYzk5MTEyYzdlZjU2ZGZlMzRkZjE4ZTQ5OTdkMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIk93bkFycmF5UHRyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZl
bnQuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgpAQCAtMzI2LDYgKzMyNywyMSBAQCBib29s
IFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OnVwZGF0ZURhdGFGcm9tUGFyYW1ldGVy
cyhmbG9hdCBzdGVwLCBmbG9hdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFNjcm9sbEFu
aW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSkK
K3sKKyAgICBtX2xhc3RBbmltYXRpb25UaW1lID0gY3VycmVudFRpbWU7CisgICAgZG91YmxlIGRl
bHRhVGltZSA9IGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWU7CisgICAgZG91YmxlIG5ld1Bvc2l0
aW9uID0gKm1fY3VycmVudFBvc2l0aW9uOworCisgICAgaWYgKGRlbHRhVGltZSA+IG1fYW5pbWF0
aW9uVGltZSkgeworICAgICAgICAqbV9jdXJyZW50UG9zaXRpb24gPSBtX2Rlc2lyZWRQb3NpdGlv
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBuZXdQb3NpdGlvbiA9IGRlbHRh
VGltZSAvIG1fYW5pbWF0aW9uVGltZSAqIChtX2Rlc2lyZWRQb3NpdGlvbiAtIG1fc3RhcnRQb3Np
dGlvbikgKyBtX3N0YXJ0UG9zaXRpb247CisgICAgKm1fY3VycmVudFBvc2l0aW9uID0gbmV3UG9z
aXRpb247CisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8vIEZJWE1FOiBBZGQgaW4gamFuayBkZXRl
Y3Rpb24gdHJhY2UgZXZlbnRzIGludG8gdGhpcyBmdW5jdGlvbi4KIGJvb2wgU2Nyb2xsQW5pbWF0
b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRpbWUpCiB7
CkBAIC0zNzAsNiArMzg2LDkgQEAgU2Nyb2xsQW5pbWF0b3JOb25lOjpTY3JvbGxBbmltYXRvck5v
bmUoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogICAgIDogU2Nyb2xsQW5pbWF0b3Io
c2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2hvcml6b250YWxEYXRhKHRoaXMsICZtX2N1cnJlbnRQ
b3NYLCBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkpCiAgICAgLCBtX3ZlcnRpY2FsRGF0
YSh0aGlzLCAmbV9jdXJyZW50UG9zWSwgc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWlnaHQoKSkK
KyAgICAsIG1fem9vbURhdGEodGhpcywgJm1fY3VycmVudFpvb20sIDEpCisgICAgLCBtX3pvb21E
YXRhUG9zWCh0aGlzLCAmbV9jdXJyZW50Wm9vbVBvc1gsIDEpCisgICAgLCBtX3pvb21EYXRhUG9z
WSh0aGlzLCAmbV9jdXJyZW50Wm9vbVBvc1ksIDEpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKHRo
aXMsICZTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7CiB9CkBAIC00
MjAsNiArNDM5LDYxIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGwoU2Nyb2xsYmFy
T3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyCiAgICAgcmV0dXJuIG5lZWRU
b1Njcm9sbDsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6Onpvb20oY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmIHBnZSkKK3sKKyAgICBBU1NFUlQocGdlLnR5cGUoKSA9PSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSk7CisgICAgLy8gVE9ETyh3am1hY2xlYW4pIG1v
ZGlmeSB0aGlzIHNvIHdlIGNhbiBzdGFydCBldmVuIGlmIHRoZSB0aW1lciBpcyBhY3RpdmUuCisg
ICAgaWYgKCFtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgbV9jdXJyZW50
Wm9vbSA9IDE7CisgICAgICAgIG1fY3VycmVudFpvb21Qb3NYID0gMDsKKyAgICAgICAgbV9jdXJy
ZW50Wm9vbVBvc1kgPSAwOworCisgICAgICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICAgICAgbV96b29tRGF0YS5tX3N0YXJ0
VGltZSA9IGN1cnJlbnRUaW1lIC0ga1RpY2tUaW1lIC8gMjsKKyAgICAgICAgbV96b29tRGF0YS5t
X3N0YXJ0UG9zaXRpb24gPSBtX2N1cnJlbnRab29tOworICAgICAgICBtX3pvb21EYXRhLm1fZGVz
aXJlZFBvc2l0aW9uID0gcGdlLmRlbHRhWCgpOworICAgICAgICBtX3pvb21EYXRhLm1fbGFzdEFu
aW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAgICAgbV96b29tRGF0YS5tX2FuaW1hdGlv
blRpbWUgPSA1MCAqIGtUaWNrVGltZTsKKyAgICAgICAgbV96b29tRGF0YS5tX2F0dGFja1RpbWUg
PSBtX3pvb21EYXRhLm1fYW5pbWF0aW9uVGltZSAvIDEwLjA7CisgICAgICAgIG1fem9vbURhdGEu
bV9hdHRhY2tDdXJ2ZSA9IFF1YWRyYXRpYzsKKyAgICAgICAgbV96b29tRGF0YS5tX3JlbGVhc2VU
aW1lID0gbV96b29tRGF0YS5tX2FuaW1hdGlvblRpbWUgLyAxMC4wOworICAgICAgICBtX3pvb21E
YXRhLm1fcmVsZWFzZUN1cnZlID0gUXVhZHJhdGljOworCisgICAgICAgIC8vIFRPRE8od2ptYWNs
ZWFuKSBGaW5kIGxlc3MgaGFja3kgd2F5IHRvIGFuaW1hdGUgcG9zIGRhdGEuCisgICAgICAgIGZs
b2F0IHNjYWxlID0gcGdlLmRlbHRhWCgpOworICAgICAgICBtX3pvb21EYXRhUG9zWC5tX3N0YXJ0
VGltZSA9IGN1cnJlbnRUaW1lIC0ga1RpY2tUaW1lIC8gMjsKKyAgICAgICAgbV96b29tRGF0YVBv
c1gubV9sYXN0QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX3pvb21EYXRh
UG9zWC5tX2FuaW1hdGlvblRpbWUgPSA1MCAqIGtUaWNrVGltZTsKKyAgICAgICAgbV96b29tRGF0
YVBvc1gubV9hdHRhY2tUaW1lID0gbV96b29tRGF0YS5tX2FuaW1hdGlvblRpbWUgLyAxMC4wOwor
ICAgICAgICBtX3pvb21EYXRhUG9zWC5tX2F0dGFja0N1cnZlID0gUXVhZHJhdGljOworICAgICAg
ICBtX3pvb21EYXRhUG9zWC5tX3JlbGVhc2VUaW1lID0gbV96b29tRGF0YS5tX2FuaW1hdGlvblRp
bWUgLyAxMC4wOworICAgICAgICBtX3pvb21EYXRhUG9zWC5tX3JlbGVhc2VDdXJ2ZSA9IFF1YWRy
YXRpYzsKKyAgICAgICAgbV96b29tRGF0YVBvc1gubV9zdGFydFBvc2l0aW9uID0gMDsKKyAgICAg
ICAgbV96b29tRGF0YVBvc1gubV9kZXNpcmVkUG9zaXRpb24gPSAoMSAtIHNjYWxlKSAqIHBnZS5w
b3NpdGlvbigpLngoKTsKKworICAgICAgICBtX3pvb21EYXRhUG9zWS5tX3N0YXJ0VGltZSA9IGN1
cnJlbnRUaW1lIC0ga1RpY2tUaW1lIC8gMjsKKyAgICAgICAgbV96b29tRGF0YVBvc1kubV9sYXN0
QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX3pvb21EYXRhUG9zWS5tX2Fu
aW1hdGlvblRpbWUgPSA1MCAqIGtUaWNrVGltZTsKKyAgICAgICAgbV96b29tRGF0YVBvc1kubV9h
dHRhY2tUaW1lID0gbV96b29tRGF0YS5tX2FuaW1hdGlvblRpbWUgLyAxMC4wOworICAgICAgICBt
X3pvb21EYXRhUG9zWS5tX2F0dGFja0N1cnZlID0gUXVhZHJhdGljOworICAgICAgICBtX3pvb21E
YXRhUG9zWS5tX3JlbGVhc2VUaW1lID0gbV96b29tRGF0YS5tX2FuaW1hdGlvblRpbWUgLyAxMC4w
OworICAgICAgICBtX3pvb21EYXRhUG9zWS5tX3JlbGVhc2VDdXJ2ZSA9IFF1YWRyYXRpYzsKKyAg
ICAgICAgbV96b29tRGF0YVBvc1kubV9zdGFydFBvc2l0aW9uID0gMDsKKyAgICAgICAgbV96b29t
RGF0YVBvc1kubV9kZXNpcmVkUG9zaXRpb24gPSAoMSAtIHNjYWxlKSAqIHBnZS5wb3NpdGlvbigp
LnkoKTsKKworICAgICAgICBib29sIGlzQ29udGludWluZyA9IG1fem9vbURhdGEuYW5pbWF0ZVpv
b20oY3VycmVudFRpbWUpOworICAgICAgICBpc0NvbnRpbnVpbmcgPSBtX3pvb21EYXRhUG9zWC5h
bmltYXRlWm9vbShjdXJyZW50VGltZSkgfHwgaXNDb250aW51aW5nOworICAgICAgICBpc0NvbnRp
bnVpbmcgPSBtX3pvb21EYXRhUG9zWS5hbmltYXRlWm9vbShjdXJyZW50VGltZSkgfHwgaXNDb250
aW51aW5nOworCisgICAgICAgIGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVu
dFRpbWUgLSBtX3N0YXJ0VGltZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVu
dFRpbWUgLSBtX3N0YXJ0VGltZSk7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9
IG1heChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICBp
ZiAoaXNDb250aW51aW5nKQorICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNo
b3QobmV4dFRpbWVySW50ZXJ2YWwpOworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghaXNDb250
aW51aW5nKTsKKyAgICB9Cit9CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09m
ZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQogewogICAgIHN0
b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7CkBAIC00MzUsNiArNTA5LDIxIEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxv
YXRQb2ludCYgb2Zmc2V0CiAgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKCk7CiB9CiAKKyNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCit7CisgICAgc3dpdGNo
IChwZ2UudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFw
VHlwZToKKyAgICAgICAgem9vbShwZ2UpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6
CisgICAgICAgIC8vIFRPRE86IGFkZCBhbnkgb3RoZXIgZXZlbnQgdHlwZXMgd2Ugc2hvdWxkIGhh
bmRsZQorICAgICAgICB7IH0KKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBTY3JvbGxBbmltYXRv
ck5vbmU6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAgICB1cGRhdGVWaXNpYmxlTGVuZ3Rocygp
OwpAQCAtNDY2LDYgKzU1NSwxNCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9u
VGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+KiB0aW1lcikKICAgICAgICAgY29u
dGludWVBbmltYXRpb24gPSB0cnVlOwogICAgIGlmIChtX3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGlt
ZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsgZGVsdGFUb05l
eHRGcmFtZSkpCiAgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKKyAgICBib29sIHph
YzEgPSBtX3pvb21EYXRhLmFuaW1hdGVab29tKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFt
ZSk7CisgICAgYm9vbCB6YWMyID0gbV96b29tRGF0YVBvc1guYW5pbWF0ZVpvb20oY3VycmVudFRp
bWUgKyBkZWx0YVRvTmV4dEZyYW1lKTsKKyAgICBib29sIHphYzMgPSBtX3pvb21EYXRhUG9zWS5h
bmltYXRlWm9vbShjdXJyZW50VGltZSArIGRlbHRhVG9OZXh0RnJhbWUpOworICAgIGlmIChtX3pv
b21EYXRhLm1fc3RhcnRUaW1lICYmICh6YWMxIHx8IHphYzIgfHwgemFjMykpIHsKKyAgICAgICAg
Y29udGludWVBbmltYXRpb24gPSB0cnVlOworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghY29u
dGludWVBbmltYXRpb24pOworICAgIH0gZWxzZQorICAgICAgICBub3RpZnlab29tQ2hhbmdlZCh0
cnVlKTsKICAgICBpZiAoY29udGludWVBbmltYXRpb24pIHsKICAgICAgICAgZG91YmxlIG5leHRU
aW1lckludGVydmFsID0gbWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGFUb05leHRGcmFt
ZSk7CiAgICAgICAgIHRpbWVyLT5zdGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2YWwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAppbmRleCAwYzBlYjE2
YTFmZjk0MTIxZTQ3Mzg1OWZmYWQ4ZmE1NmQxODE5ZmZlLi41ZDcyNGM3OWRiYWNiNjE3ZmZhZjhi
ZTZjMTM3MTQ4ZjQ1MGRmNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuaApAQCAtNDksOCArNDksMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNj
cm9sbEFuaW1hdG9yTm9uZSgpOwogCiAgICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxiYXJP
cmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxp
ZXIpOworICAgIHZpcnR1YWwgdm9pZCB6b29tKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBG
bG9hdFBvaW50Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVS
ZXNpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xs
YmFyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xs
YmFyKik7CkBAIC05Miw2ICs5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCByZXNldCgp
OwogICAgICAgICBib29sIHVwZGF0ZURhdGFGcm9tUGFyYW1ldGVycyhmbG9hdCBzdGVwLCBmbG9h
dCBtdWx0aXBsaWVyLCBmbG9hdCBzY3JvbGxhYmxlU2l6ZSwgZG91YmxlIGN1cnJlbnRUaW1lLCBQ
YXJhbWV0ZXJzKik7CiAgICAgICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRp
bWUpOworICAgICAgICBib29sIGFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSk7CiAgICAg
ICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aChMYXlvdXRVbml0IHZpc2libGVMZW5ndGgpOwog
CiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3VydmVBdChDdXJ2ZSwgZG91YmxlIHQpOwpAQCAtMTMz
LDYgKzEzNyw5IEBAIHByb3RlY3RlZDoKIAogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERh
dGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAgUGVyQXhpc0RhdGEgbV96
b29tRGF0YTsKKyAgICBQZXJBeGlzRGF0YSBtX3pvb21EYXRhUG9zWDsKKyAgICBQZXJBeGlzRGF0
YSBtX3pvb21EYXRhUG9zWTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBUaW1lcjxT
Y3JvbGxBbmltYXRvck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNGI1MWE2NTA1NTJhYmJiMjg3OTI0ODcyNmY5
NzUyNDI2YjhkZjJkOC4uMDZlMGVjOWU0YzQ2OTMwMGUwZmM5NGQwZmUyN2U1ZjgwM2YzMjIzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTIzLDYg
KzEyMywxMSBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5p
bWF0aW9uKGZsb2F0IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0
UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9CiAK
K3ZvaWQgU2Nyb2xsYWJsZUFyZWE6Onpvb21BbmltYXRvclNjYWxlQ2hhbmdlZChkb3VibGUsIGRv
dWJsZSwgZG91YmxlLCBib29sKQoreworICAgIC8vIFJlcXVpcmVzIEZyYW1lVmlldyB0byBvdmVy
cmlkZSB0aGlzLgorfQorCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50KFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBzY3JvbGxBbmltYXRvcigpLT5o
YW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmgKaW5kZXggMTJhMzUyM2Q3ZGM1Y2NlY2M0ZjhkYTgxNTM2OGYwMmJhM2VmZmQ3
Mi4uZmM3NWVmMDMyZDZkMzBhNzE3NjU1YWFjNTU1YThhY2IxN2MxOTkyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjcm9sbFRvWE9mZnNldFdpdGhvdXRBbmltYXRpb24oZmxvYXQgeCk7CiAgICAg
dm9pZCBzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0IHgpOwogCisgICAgdmly
dHVhbCB2b2lkIHpvb21BbmltYXRvclNjYWxlQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91Ymxl
LCBib29sKTsKKwogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQm
KTsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgdm9pZCBoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwCmluZGV4IGYzYmEwYzVkNzZkNGQ2NTY2MzJmZDc2ZmRhNjU1OWU5NDcyODkw
MDguLjRjMDgzZmY1Y2FhZGFkYzczOGQ5NjY1ZmIwYjc3Mzg3MGIzZDVkZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMTQ3LDcgKzE0Nyw2IEBAIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKENDTGF5ZXJUcmVlSG9zdEltcGwq
IG93bmVyLAogICAgIDogbV9vd25lcihvd25lcikKICAgICAsIG1fY3VycmVudFJlbmRlclN1cmZh
Y2UoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQotICAgICwgbV96b29tQW5p
bWF0b3JTY2FsZSgxKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RlZmF1bHRS
ZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9hdFJlY3QoLTAu
NWYsIC0wLjVmLCAxLjBmLCAxLjBmKSkKQEAgLTI2Niw4ICsyNjUsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsKCkKICAgICBDQ0xheWVyTGlzdCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJv
b3REcmF3TGF5ZXIpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggem9vbU1hdHJpeDsKLSAg
ICB6b29tTWF0cml4LnNjYWxlM2QobV96b29tQW5pbWF0b3JTY2FsZSwgbV96b29tQW5pbWF0b3JT
Y2FsZSwgMSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggem9vbU1hdHJpeCA9IG1fem9vbUFu
aW1hdG9yVHJhbnNmb3JtOwogICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgPSByb290RHJhd0xh
eWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y2xlYXJM
YXllckxpc3QoKTsKIApAQCAtMjkwLDcgKzI4OCw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwoKQogICAgIHVzZVJlbmRlclN1cmZhY2UobV9kZWZhdWx0
UmVuZGVyU3VyZmFjZSk7CiAKICAgICAvLyBDbGVhciB0byBibHVlIHRvIG1ha2UgaXQgZWFzaWVy
IHRvIHNwb3QgdW5yZW5kZXJlZCByZWdpb25zLgotICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigw
LCAwLCAxLCAxKTsKKyAgICAvLyBUT0RPKHdqbWFjbGVhbikgLSBibGl0IGEgdGV4dHVyZSB0byB1
bnJlbmRlcmVkIHJlZ2lvbnMgYXMgZHVyaW5nIHpvb20KKyAgICAvLyBhbmltYXRpb24gdGhlc2Ug
d2lsbCBleGlzdC4gRm9yIHRoZSBzaG9ydCB0ZXJtLCBvdmVycmlkZSBibHVlIHdpdGggZ3JleS4K
KyAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IoMC4yNSwgMC4yNSwgMC4yNSwgMSk7CiAgICAgbV9j
b250ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgbV9jb250ZXh0
LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggMmU2ZDczNjM2OWQ1ZWNiMmI1N2EyYTVhMGIy
YTkwMDAxZmYzMGQ5Ny4uZjM1NTExOGJmODM1MWM2YmM3NGZmZTI4NDQ0MDhjYmZkYjcyMDVkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBw
dWJsaWM6CiAgICAgLy8gcHV0cyBiYWNrYnVmZmVyIG9uc2NyZWVuCiAgICAgdm9pZCBwcmVzZW50
KCk7CiAKLSAgICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKGRvdWJsZSBmYWN0b3IpIHsgbV96
b29tQW5pbWF0b3JTY2FsZSA9IGZhY3RvcjsgfQorICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KSB7IG1fem9vbUFuaW1hdG9yVHJh
bnNmb3JtID0gdDsgfQogCiAgICAgdW5zaWduZWQgY3JlYXRlTGF5ZXJUZXh0dXJlKCk7CiAgICAg
dm9pZCBkZWxldGVMYXllclRleHR1cmUodW5zaWduZWQpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHBy
aXZhdGU6CiAKICAgICBDQ1JlbmRlclN1cmZhY2UqIG1fY3VycmVudFJlbmRlclN1cmZhY2U7CiAg
ICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkOwotICAgIGRvdWJsZSBtX3pvb21B
bmltYXRvclNjYWxlOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fem9vbUFuaW1hdG9yVHJh
bnNmb3JtOwogCiAgICAgLy8gU3RvcmUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGlu
c3RhbmNlcyBvZiBlYWNoIGxheWVyIHR5cGUKICAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhpcyBp
bnN0YW5jZSBvZiB0aGUgY29tcG9zaXRvci4gU2luY2UgdGhlcmUgY2FuIGJlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcAppbmRleCBiOGFkMjBhODQ5MGQyYzkzNDEzNzRiNTRhMmQ2MWU5
YmI1OTFkY2ZlLi4wZjU2OTAzNGMyODY4YzdlMGMyNDA0MjY1ZWFhNmFiMWQ2ZGU1YmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE5OCw3ICsxOTgsMTEgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAogICAgICAgICAgICAg
dGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0KTsKKyNpZiBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCisgICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVI7CisjZWxzZQogICAgICAgICAgICAgY29uc3QgR0MzRGludCBmaWx0ZXIg
PSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIg
OiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKKyNlbmRpZgogICAgICAgICAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAg
ICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAppbmRleCBlODIxYWViNDMyMDNkMzk0YWQwMmRiZThmOWQ2MDRjNmJmNDI3Y2Ji
Li5mNjZhYjQzOGJkNTEzMTVlYzBiYzcxMzFjOWE0MTgwNjQ4ODNiZTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTUzLDcgKzUzLDYgQEAgQ0NMYXllclRyZWVIb3N0OjpD
Q0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8
TGF5ZXIKICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKICAgICAsIG1fcm9vdExheWVyKHJvb3RMYXll
cikKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCi0gICAgLCBtX3pvb21BbmltYXRvclNjYWxl
KDEpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKIHsKIH0KQEAgLTExOSw3ICsxMTgsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8oQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwp
CiAgICAgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKICAgICBob3N0SW1wbC0+c2V0VmlzaWJsZSht
X3Zpc2libGUpOwotICAgIGhvc3RJbXBsLT5zZXRab29tQW5pbWF0b3JTY2FsZShtX3pvb21Bbmlt
YXRvclNjYWxlKTsKKyAgICBob3N0SW1wbC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKG1fem9v
bUFuaW1hdG9yVHJhbnNmb3JtKTsKICAgICBob3N0SW1wbC0+c2V0Vmlld3BvcnQodmlld3BvcnRT
aXplKCkpOwogCiAgICAgaG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+c2V0Q29udGVudHNUZXh0
dXJlTWVtb3J5VXNlQnl0ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5
VXNlQnl0ZXMoKSk7CkBAIC0xODcsMTEgKzE4NiwxMSBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBj
bwogICAgIHJldHVybiBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiB9CiAK
LXZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JTY2FsZShkb3VibGUgem9vbSkK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHpvb20pCiB7Ci0gICAgYm9vbCB6b29tQ2hhbmdlZCA9IG1fem9v
bUFuaW1hdG9yU2NhbGUgIT0gem9vbTsKKyAgICBib29sIHpvb21DaGFuZ2VkID0gbV96b29tQW5p
bWF0b3JUcmFuc2Zvcm0gIT0gem9vbTsKIAotICAgIG1fem9vbUFuaW1hdG9yU2NhbGUgPSB6b29t
OworICAgIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtID0gem9vbTsKIAogICAgIGlmICh6b29tQ2hh
bmdlZCkKICAgICAgICAgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKQEAgLTI4Myw4ICsyODIs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJv
b3RMYXllcikKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0g
cm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFy
TGF5ZXJMaXN0KCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29tTWF0cml4OwotICAg
IHpvb21NYXRyaXguc2NhbGUzZChtX3pvb21BbmltYXRvclNjYWxlLCBtX3pvb21BbmltYXRvclNj
YWxlLCAxKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29tTWF0cml4ID0gbV96b29tQW5p
bWF0b3JUcmFuc2Zvcm07CiAgICAgewogICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CiAgICAgICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJv
b3RMYXllciwgcm9vdExheWVyLCB6b29tTWF0cml4LCB6b29tTWF0cml4LCBtX3VwZGF0ZUxpc3Qs
IHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLm1heFRleHR1cmVTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggYjUy
M2Y3NzVkOWNjYjZjM2ZjZGY3MmZjZDBkYTAwMjRmMzNjMmY3OC4uYzg0OTZlNzJhYWIxZDdmYmM4
YTcxZjcwMGY0ZDRjMTgzNDNiODI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUg
ImNjL0NDUHJveHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0xMjYsNyAr
MTI3LDcgQEAgcHVibGljOgogCiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZU51bWJlcjsgfQogCi0gICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShkb3VibGUp
OworICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7CiAKICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CiAKQEAgLTE4Miw3ICsxODMsNyBAQCBwcml2YXRl
OgogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIAogICAgIEludFNpemUgbV92aWV3cG9ydFNp
emU7Ci0gICAgZG91YmxlIG1fem9vbUFuaW1hdG9yU2NhbGU7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbV96b29tQW5pbWF0b3JUcmFuc2Zvcm07CiAgICAgYm9vbCBtX3Zpc2libGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGIzMDQ4MzY4ZGFh
MjA3NmZhNDlkYmExNGJiOWM5MzY5OGI2NzZlMWQuLmFlMWM1ZGI0ZmM3NGU1ZGU5YmZkYmJiYTZh
NGUxMTRjZGNmMjdjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CkBAIC0xNTEsOSArMTUxLDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaWV3cG9y
dChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+
dmlld3BvcnRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Wm9v
bUFuaW1hdG9yU2NhbGUoZG91YmxlIHpvb20pCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNl
dFpvb21BbmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgem9vbSkK
IHsKLSAgICBtX2xheWVyUmVuZGVyZXItPnNldFpvb21BbmltYXRvclNjYWxlKHpvb20pOworICAg
IG1fbGF5ZXJSZW5kZXJlci0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb20pOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYzc1MmUwMDE0MDBhNTIx
YmI5M2ZkNTY1YzM3OWI2YmQ3OWUzMTJiYi4uMjAzODMzNzQ4OWE2NTA3YTVjYWZkZGU0ODBjNGY0
MzJiOGM5NTkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMzgs
NiArMzgsNyBAQCBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXM7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogLy8gQ0NMYXllclRyZWVIb3N0
SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5k
ZXJpbmcgc3RhdGUKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGwgewpAQCAtNzUsNyArNzYsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSk7CiAgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1cm4g
bV92aWV3cG9ydFNpemU7IH0KLSAgICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKGRvdWJsZSk7
CisgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKTsKIAogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5nczsgfQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA3ZGQyYWE3OGJmZGI2MzUzOWYwMDFlZTQzMGEwYjdhNWEwNWE4MTNjLi5hZTU0MDYxMWE2NWU5
OGVkYzI5MGY0MWExY2EwZjFjMDUxYTAzZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDExLTA5LTE1ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFpvb20gYW5pbWF0b3IgZnJvbnQt
ZW5kIFt3b3JrLWluLXByb2dyZXNzLCBub3QgZm9yIHJldmlldyB5ZXQgLi4uXQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjptb3VzZVdoZWVsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFpvb21MZXZlbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkpOgorCiAyMDExLTA5LTE0ICBIYW8g
WmhlbmcgIDx6aGVuZ2hhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgZGVw
ZW5kZW5jaWVzIG9mIERSVCBmb3IgQW5kcm9pZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCA1MTI5ZGYyYjBkMTNhOWNjODQ3ZjBjMWIwZTQxM2VkMGZh
Mzg2MGJjLi5iMWI2MGEyYzY5YjhhOTM1NGE0M2U2NTI1NDM4NGFhOGEyMzllZGMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC01ODQsOCArNTg0LDE5
IEBAIHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQp
CiAKIGJvb2wgV2ViVmlld0ltcGw6Om1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50
JiBldmVudCkKIHsKLSAgICBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQo
bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwotICAgIHJldHVybiBtYWluRnJh
bWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KHBsYXRm
b3JtRXZlbnQpOworLy8gICAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50
KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKKy8vICAgIHJldHVybiBtYWlu
RnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KHBs
YXRmb3JtRXZlbnQpOworCisgICAgLy8gVE9ETyh3am1hY2xlYW4pIEFsbCB0aGVzZSByZW1haW5p
bmcgbGluZXMgYXJlIHRlc3QtY29kZSwgYW5kIG5lZWQgdG8gYmUgcmVtb3ZlZAorICAgIC8vIGJl
Zm9yZSB0aGlzIHBhdGNoIGxhbmRzLgorICAgIGZsb2F0IHNjYWxlID0gMTsKKyAgICBpZiAoZXZl
bnQud2hlZWxUaWNrc1kgPiAwKQorICAgICAgICBzY2FsZSA9IDAuODsKKyAgICBlbHNlCisgICAg
ICAgIHNjYWxlID0gMS4yNTsKKyAgICAvLyBTaW11bGF0ZSBkb3VibGV0YXAgYXQgY2VudHJlIG9m
IHdpbmRvdy4KKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCBwZ2UoUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OkRvdWJsZVRhcFR5cGUsIEludFBvaW50KG1fc2l6ZS53aWR0aCAvIDIsIG1fc2l6ZS5oZWln
aHQgLyAyKSwgSW50UG9pbnQoMCwgMCksIDAsIHNjYWxlLCAwLmYsIDAsIDAsIDAsIDApOworICAg
IHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVH
ZXN0dXJlRXZlbnQocGdlKTsKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKQEAgLTE4
MjcsNyArMTgzOCw3IEBAIGRvdWJsZSBXZWJWaWV3SW1wbDo6em9vbUxldmVsKCkKIGRvdWJsZSBX
ZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKGJvb2wgdGV4dE9ubHksIGRvdWJsZSB6b29tTGV2ZWwp
CiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRab29tQW5pbWF0b3JTY2FsZSgxKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRab29t
QW5pbWF0b3JUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICBpZiAoem9v
bUxldmVsIDwgbV9taW5pbXVtWm9vbUxldmVsKQogICAgICAgICBtX3pvb21MZXZlbCA9IG1fbWlu
aW11bVpvb21MZXZlbDsKQEAgLTI1NjEsOCArMjU3MiwxOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBXZWJWaWV3
SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9sYXllclRyZWVI
b3N0KQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFpvb21BbmltYXRvclNjYWxlKG1fcGFn
ZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yU2NhbGUoKSk7CisgICAgaWYgKG1fbGF5ZXJUcmVl
SG9zdCkgeworICAgICAgICAvLyBUT0RPKHdqbWFjbGVhbikgRmlndXJlIG91dCBob3cgdG8gcHJv
cGVybHkgbGltaXQgdGhlIHpvb20gYW5pbWF0aW9uIHNvIGl0IGRvZXMgbm90CisgICAgICAgIC8v
IGdvIHBhc3QgdGhlIG1pbi9tYXggem9vbSBmYWN0b3IuIFdvdWxkIGxpa2UgdG8gZG8gdGhpcyBh
dCB0aGUgRnJhbWVWaWV3IGxldmVsIC4uLgorICAgICAgICAvLyBpcyB0aGlzIHBvc3NpYmxlPwor
Ly8gICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdGF0aWNfY2FzdDxmbG9hdD4oem9vbUxldmVs
VG9ab29tRmFjdG9yKG1fem9vbUxldmVsKSkgKiBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Bbmlt
YXRvclNjYWxlKCk7CisvLyAgICAgICAgaWYgKHpvb21GYWN0b3IgPj0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHpvb21MZXZlbFRvWm9vbUZhY3RvcihtX21pbmltdW1ab29tTGV2ZWwpKSAmJgorLy8gICAg
ICAgICAgICB6b29tRmFjdG9yIDw9IHN0YXRpY19jYXN0PGZsb2F0Pih6b29tTGV2ZWxUb1pvb21G
YWN0b3IobV9tYXhpbXVtWm9vbUxldmVsKSkpCisgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB6b29tTWF0cml4OworICAgICAgICAgICAgem9vbU1hdHJpeC5zY2FsZTNkKG1fcGFnZS0+
c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yU2NhbGUoKSwgbV9wYWdlLT5zZXR0aW5ncygpLT56b29t
QW5pbWF0b3JTY2FsZSgpLCAxKTsKKyAgICAgICAgICAgIHpvb21NYXRyaXgudHJhbnNsYXRlM2Qo
bV9wYWdlLT5zZXR0aW5ncygpLT56b29tQW5pbWF0b3JQb3NYKCksIG1fcGFnZS0+c2V0dGluZ3Mo
KS0+em9vbUFuaW1hdG9yUG9zWSgpLCAwKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb21NYXRyaXgpOworICAgIH0KICNpZiBVU0UoVEhS
RUFERURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109176</attachid>
            <date>2011-09-29 10:57:57 -0700</date>
            <delta_ts>2011-09-29 14:14:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20110929135631.patch</filename>
            <type>text/plain</type>
            <size>31708</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYWJhMGQ4NjBiODg2YjkwMzlhMmZj
ODMxZWM4NWI0YWQ4YThkZThkLi5hNjRiYzAyMzYxZTMwN2E1NzNiNjMzNDUyNTM0ZDcxZGM4NTA4
YmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMjkgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2aWV3IHlldCAuLi5d
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20t
YW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDktMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIEdUSyBiYXNlbGluZXMgZm9yIG5ldyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNDQ2NmI4YjU1ZjQ4NzAzMTBkN2RlZGZlMDJhYzMwN2YzYWU4MWFkCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAzMzMzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9
aF5obEElQFdzJGxIYG9rPG19P29UIXRoQQp6dnNDam1PVCpOKEckVmBUcXxfOCszajxUalIxO0gr
UkFVUGheUihDLUtiI3BEYyYyOzBJRUdacmQzKk9AdTJlTEcKekwqUnhOamI8d2ozVkI7Q25Fdjlz
az9hTjtPO2FDZnlAdVEkLTdYVlQzdjZ6ZkpLbEp7cnRQNiZtR3RUR19sQWMqCnptMDBPQUZ3OTds
SWxnQFBeNlUzdipJJlE9d3JwZD5udHU8Y0ZmaEVrVlppaElaezR7V09HUn1VOHE5a2l8MHBpYQp6
SShNUmR6cFhTd2dafjQ1PipuWG10WVFvZkpfKEVyTV85eGQ0cHszPktpJk50RDBIQ3UmempaVXl7
YTErN31rQjsKenYtK0kwSCY5ODteRjFyIz02cVpiJGs2YjUmcmdYIT9GYUAyISR3dkgwYnZtMXt5
YD4mOEwxTCZHZUpmaygzeVFVCno/YzlkVVN2aTdDVjU4eDdQe0loP0s5N09uSzwkaVduYUAwY184
T2VkK2lxPU5YKEphdT1qWHFfeUxGdXk4ZkZ8fAp6Vig4IW1kVWxrN0g0dHZSeCtjNnN7cStCNyt2
Z24kRlpvcnI+I0dSRTFGSkEjRyQlMX1HYnBIeUdEWlZ8UClnWGcKej5ucUU8bFBfPC15Y1BeQlZq
NGgyMypCP3UrQntvRWhLQXE4N0JjaHAqOHN1NEFXLT5+eVohY0c4dzxKcT1rSVNSCnp1YHFOKjAh
eVNGdiV0anloXlJsczF1VTRaZj1lVjJAaDVtUiQmY3B5KEsycyU8YnVgRnt0T0hjPn0yQGJZMWpZ
KAp6d3ZpfWx6bD5eIXZAOz1MaHwhdj4rZHRucE19alQ3MS1WJVhZRn5hPEVlQUZeYio3KkdKYkMl
JG0pfCNucytgdzAKemA3NjhBTDU8ZHteVGUtSz03U28yLSskWjtlT3xnJTBONU9UVSQkfGI3JHt8
ezFEaURXdyNCVn4tWSlfYSZjQl92Cnp7ams5diVOJldld2BJRilhXkRMdUc+OUs3dGZ7SzFkVkJZ
NCkhd14jO0B3QnJBTmNoLWdQfiNsJVd+dGApVTZSWgp6WkhZSkRmNndRV1pBO3ZJYjVDO0dXZlAj
KkApYGpLeVAxYXtlJU0jUD48e2x7bGUwYnhFRHo3Q21OQD9MKV9EZW8KejhkK2VvVGp1eWB5SDUk
fTB0XnEldVkwPlJ7SnFraUFLR21VNEQpWHNjSytQWmRPQUVYezZpKSV4bkFkRXUkVWZsCnpxNGh2
ZUlLelNQWnkme35CcUxzTkYobUIjYjc4WW54UElKeHp2Y1RjTWpVQF54TD9pU0BfWUxPcFAzby1l
bSQ2Ywp6THFBOGJZTVY4fmhwRHhEVEpgRXIjd0goSntfKTM7QUdhNzhvPUBWY2BXb2xiJWdSdD1Z
RzMhcVc4TFFzYXFBfkAKekdjd2VLVUheOUphTV5Dend1a3k+KiUlKCY8Ml92UF9QeT1AVTk1I04/
KXpzbEdraUV5d1JoalBiejxFfHw5P0ZCCldAVCNJVyVXK2A4aFFaVS0mdDt1Y0xLNlQpSSNzT3oK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2Fs
ZS10ZXN0Lmh0bWwKaW5kZXggZTFiYWM5ZWI3MzRkOWU4N2NjNzI4YjY4ZDBhMWQ0OWYwNGQzZWU5
NC4uNmQzODhmMzIxNzYxOTkzN2RlNzA1MTQ0NjVjMjUzODk2NjU3Yzc3MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1z
Y2FsZS10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9z
aXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKQEAgLTMsNyArMyw3IEBACiAgICAg
PHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAgICAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZG9jdW1lbnQsIHRydWUpOwot
ICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oZG9j
dW1lbnQsIDEuMjUsIC0yNS4wLCAtMjUuMCk7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldFpvb21QYXJhbWV0ZXJzKGRvY3VtZW50LCAxLjI1LCAxMDAsIDEwMCk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICAgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9y
LXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29t
LWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5p
bWF0b3Itc2NhbGUtdGVzdDIuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Nv
bXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Zjc1
OWEzMjJlZWUxMzAyMTZjNjRlY2IxNWNlNWRhY2VlZDY3NGQwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1z
Y2FsZS10ZXN0Mi5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgd2lu
ZG93LmludGVybmFscy5zZXRFbmFibGVTY3JvbGxBbmltYXRvcihkb2N1bWVudCwgdHJ1ZSk7Cisg
ICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGRvY3Vt
ZW50LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KHRydWUpOworICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0aW1lcjsKKworICAgICAg
ICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzIHx8ICh3aW5kb3cuaW50ZXJuYWxzLmdldFBhZ2VTY2FsZUZhY3Rvcihkb2N1bWVudCkgPT0g
MS4yNSkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTsKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVu
IjsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9UZXN0KCkg
eworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFCb3giKS5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSAiZ3JlZW4iOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFpvb21BbmltYXRvclRyYW5z
Zm9ybShkb2N1bWVudCwgMS4yNSwgMTAwLjAsIDEwMC4wKTsKKyAgICAgICAgICAgICAgICAvLyBD
aGVjayBldmVyeSAxMDAgbVMgZm9yIGFuaW1hdGlvbiBjb21wbGV0aW9uLgorICAgICAgICAgICAg
ICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoImZpbmlzaFRlc3QoKSIsIDI1MCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+Cis8Ym9keSBpZD0idGhl
Qm9keSI+CisgIDwhLS0gICAgSWYgc3VjY2Vzc2Z1bCwgdGhlIGJveCBzaG91bGQgZW5sYXJnZSB0
byBiZSAxMjV4MTI1IGF0ICgxMjUsMTI1KS4KKyAgICAtLT4KKyAgPGRpdiBpZD0iYUJveCIgc3R5
bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6MTAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjEw
MHB4OyB0b3A6MTAwcHg7IGJhY2tncm91bmQtY29sb3I6I0ZGMDAwMCI+PC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKaW5kZXggMGU0ZTdkMTI0OTM0NjI0MzUwMjU4OGMzNTI2YTUyY2Y5YjY2
NTQ0My4uNmE5NzE3NGM5YWYyY2QzYzRjODUyZThmOTYyMTZmZDQ2Nzc2YTRiMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApA
QCAtMjY2NCw2ICsyNjY0LDggQEAgQlVHV0s1NTk2OCBXSU4gREVCVUcgR1BVIDogY29tcG9zaXRp
bmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlwbGllZC1ibGVuZC5odG1sID0KIEJVR1dLNTg1ODcg
TElOVVggR1BVIERFQlVHIDogbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLmh0bWwgPSBJ
TUFHRQogQlVHQ1I5NzY4NiBMSU5VWCBHUFUgUkVMRUFTRSA6IG1lZGlhL3ZpZGVvLWNvbnRyb2xz
LXJlbmRlcmluZy5odG1sID0gSU1BR0UKIAorQlVHV0t4eHh4eCBNQUMgV0lOIEdQVSBHUFUtQ0cg
OiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3Qy
Lmh0bWwgPSBJTUFHRQorCiBCVUdDUjcyMjIzIDogbWVkaWEvdmlkZW8tZnJhbWUtYWNjdXJhdGUt
c2Vlay5odG1sID0gUEFTUyBJTUFHRQogCiBCVUdXSzUzODY4IDogZmFzdC9ub3RpZmljYXRpb25z
L25vdGlmaWNhdGlvbnMtZG9jdW1lbnQtY2xvc2UtY3Jhc2guaHRtbCA9IFBBU1MgVEVYVApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDdlZDA2Yzk4OTM3M2Q1YTI5OWI1NjhlYjc3MTM2MjliNGZmZTgxN2IuLjM0MDFl
ZjY2OTZiNjM4NzM3YjFkNzZkMjA5OGE4MjdhMGFlMzdhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAxMS0wOS0yOSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBab29tIGFuaW1hdG9yIGZyb250LWVuZCBbd29y
ay1pbi1wcm9ncmVzcywgbm90IGZvciByZXZpZXcgeWV0IC4uLl0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDM1CisKKyAgICAgICAgQWRkcyBuZWNl
c3NhcnkgY29tcG9uZW50cyB0byBTY3JvbGxBbmltYXRvck5vbmUgdG8gc3VwcG9ydCBhIHpvb20g
YW5pbWF0aW9uCisgICAgICAgIGZlYXR1cmUuIEluY2x1ZGVzIHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
dmlhIHRlc3RpbmcvSW50ZXJuYWxzIHRvIGNhcHR1cmUKKyAgICAgICAgaW4tcHJvZ3Jlc3MgdGV4
dHVyZSBzY2FsaW5nICh6b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbCkgYXMgd2VsbCBhcyBh
CisgICAgICAgIGZpbmFsIHZpZXcgLS0tIGFmdGVyIHBhZ2VTY2FsZUZhY3RvciBoYXMgYmVlbiBh
cHBsaWVkIC0tLSBpbiB6b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwuCisKKyAgICAgICAg
UmVtb3ZlcyB0ZW1wb3JhcnkgdGVzdCBmaWVsZHMgZnJvbSBTZXR0aW5ncy4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9jaHJv
bWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwKKworICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Onpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5nZWQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBh
Z2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVpvb21DaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp6b29tVHJhbnNsYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3I6OnJlc2V0Wm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6dGVzdFpvb21QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Onpvb21TY2Fs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6Olpvb21EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6OmFuaW1hdGVab29tKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6U2Nyb2xsQW5pbWF0b3JOb25l
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
Ojp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpzZXRab29tUGFyYW1ldGVycyk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTEtMDktMjcg
IFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogbGl2ZSBlZGl0IGN1cnNvciBhbHdheXMgYXBwZWFycyBhdCB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDQy
OWI5MjBlNjNiNmIwOTg2ZTIyYWJmMGQ1ODA4ZGViNDE4NWJjNzkuLjkyYWI4NGNlNjEyZTNiODEx
YWNhM2EyOGU5NjFkNjBhOGM0OGEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTIyMjUsOCArMjIyNSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJl
RXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAg
aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToK
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBk
YXRlVHlwZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXaGVl
bEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgdGhpcyBp
bnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVuIGFkZHJl
c3NlZC4KQEAgLTIyMzYsNiArMjIzNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAg
ICAgaGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5
cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgogICAg
IGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAgIEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCA2YzdjNjU4ZGFhZjgxZmI3Y2E1ZTdhYjA0OTZjOWVmZjZjYmQ4MTA4Li43ZGFiYTMxNzNl
ZmYzNzgxMzgxZmZjMWRmZGVjNDU4Yzc4MjA4YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0xMjIwLDYgKzEyMjAsMTcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVdpZGdldFRv
VXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0KiBvYmplY3QpCiAgICAgbV93aWRnZXRVcGRhdGVT
ZXQtPnJlbW92ZShvYmplY3QpOwogfQogCit2b2lkIEZyYW1lVmlldzo6em9vbUFuaW1hdG9yVHJh
bnNmb3JtQ2hhbmdlZChkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSwgYm9vbCBpc0Zp
bmlzaGVkKQoreworICAgIGlmIChpc0ZpbmlzaGVkKSB7CisgICAgICAgIG1fcGFnZS0+c2V0UGFn
ZVNjYWxlRmFjdG9yKG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgKiBzY2FsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQoc2NhbGUgKiBzY3JvbGxYKCkg
LSB4LCBzY2FsZSAqIHNjcm9sbFkoKSAtIHkpKTsKKyAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS0+
cmVzZXRab29tKCk7CisgICAgfQorCisgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmNv
bXBvc2l0b3IoKS0+c2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojpz
ZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAgICAgbV9tZWRpYVR5cGUg
PSBtZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA0NDJlMDhjYWJlMTA0Njdl
YWRlZmM5ZTZlZTYyNGVlZTVmYWZkOGM3Li45MTExYjE2NmYwYjQzMTNmZmEwZjZjOGFmM2QwNDQ5
NGIyYWY4NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE3MCw2ICsxNzAsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRGaXhlZEVsZW1lbnRzQWZ0ZXJTY3JvbGxp
bmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9s
bERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdG9yVHJhbnNm
b3JtQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBib29sKTsKKwogICAgIFN0cmluZyBt
ZWRpYVR5cGUoKSBjb25zdDsKICAgICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIGFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nKGJvb2wgcHJpbnRpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBkN2UwMGQxYzdkYTYyN2QxYTdmYTViNGFiZTI2ZWEw
YmI5MDA5YjA0Li5lMDQxY2YwM2Y1NmVkODgwMzZiZDdmMWFjOTcyMzdiNTg0M2IwZGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMjE4LDkgKzIxOCw2IEBAIFNldHRpbmdzOjpTZXR0
aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKHRydWUp
CiAgICAgLCBtX3Bhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2xvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5VGltZXJGaXJlZCkKLSAgICAsIG1fem9vbUFuaW1hdG9yU2NhbGUoMSkKLSAgICAsIG1fem9v
bUFuaW1hdG9yUG9zWCgwKQotICAgICwgbV96b29tQW5pbWF0b3JQb3NZKDApCiB7CiAgICAgLy8g
QSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0
aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggZGI3MzY0OGQ0YTEwYjliMmRjZjU1NDQyYjkyN2ExOWY4
YjBmYjFjMC4uNGIwY2ZiZjhmYjY4OGY5NmNlNGE4NDMwYWIyOGRmODdlOTdhODI5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaApAQCAtNDMyLDEzICs0MzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9vbCBmbGFnKSB7IG1fZm9y
Y2VDb21wb3NpdGluZ01vZGUgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgZm9yY2VDb21wb3NpdGlu
Z01vZGUoKSB7IHJldHVybiBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOyB9CiAKLSAgICAgICAgdm9p
ZCBzZXRab29tQW5pbWF0b3JTY2FsZShmbG9hdCBzY2FsZSkgeyBtX3pvb21BbmltYXRvclNjYWxl
ID0gc2NhbGU7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yU2NhbGUoKSB7IHJldHVybiBt
X3pvb21BbmltYXRvclNjYWxlOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JQb3Np
dGlvbihmbG9hdCB4LCBmbG9hdCB5KSB7IG1fem9vbUFuaW1hdG9yUG9zWCA9IHg7IG1fem9vbUFu
aW1hdG9yUG9zWSA9IHk7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yUG9zWCgpIHsgcmV0
dXJuIG1fem9vbUFuaW1hdG9yUG9zWDsgfQotICAgICAgICBmbG9hdCB6b29tQW5pbWF0b3JQb3NZ
KCkgeyByZXR1cm4gbV96b29tQW5pbWF0b3JQb3NZOyB9Ci0KICAgICAgICAgdm9pZCBzZXRTaG91
bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoYm9vbCBmbGFnKSB7IG1f
c2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50ID0gZmxhZzsgfQog
ICAgICAgICBib29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVu
dCgpIHsgcmV0dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3Vt
ZW50OyB9CiAKQEAgLTYwNywxMCArNjAwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAgICAgICAgIHN0YXRpYyBib29sIGdNb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CiAKLSAgICAgICAg
ZmxvYXQgbV96b29tQW5pbWF0b3JTY2FsZTsKLSAgICAgICAgZmxvYXQgbV96b29tQW5pbWF0b3JQ
b3NYOwotICAgICAgICBmbG9hdCBtX3pvb21BbmltYXRvclBvc1k7Ci0KICNpZiBVU0UoU0FGQVJJ
X1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4
IDU1MzhlZmRkMWFjZDlkMTNjZjI4NmM2ZGFkMDUxZTE4OGYxM2U3M2EuLjUyZTFhYTBiNDRkOWU2
MmM1Njk1YmY5OGVmMTQ5ZTJkNmE5ZDZjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHAKQEAgLTUyLDYgKzUyLDkgQEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9s
bEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IG1fc2Nyb2xs
YWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2N1cnJlbnRQb3NYKDApCiAgICAgLCBt
X2N1cnJlbnRQb3NZKDApCisgICAgLCBtX2N1cnJlbnRab29tU2NhbGUoMSkKKyAgICAsIG1fY3Vy
cmVudFpvb21UcmFuc1goMCkKKyAgICAsIG1fY3VycmVudFpvb21UcmFuc1koMCkKIHsKIH0KIApA
QCAtMTI5LDQgKzEzMiwyOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlvbkNo
YW5nZWQoKQogICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldFNjcm9sbE9mZnNldEZyb21BbmltYXRp
b24oSW50UG9pbnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50UG9zWSkpOwogfQogCit2b2lkIFNj
cm9sbEFuaW1hdG9yOjpub3RpZnlab29tQ2hhbmdlZChib29sIGlzRmluaXNoZWQpCit7CisgICAg
bV9zY3JvbGxhYmxlQXJlYS0+em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChtX2N1cnJlbnRa
b29tU2NhbGUsIG1fY3VycmVudFpvb21UcmFuc1gsIG1fY3VycmVudFpvb21UcmFuc1ksIGlzRmlu
aXNoZWQpOworfQorCitGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjp6b29tVHJhbnNsYXRpb24o
KSBjb25zdAoreworICAgIHJldHVybiBGbG9hdFBvaW50KG1fY3VycmVudFpvb21UcmFuc1gsIG1f
Y3VycmVudFpvb21UcmFuc1kpOworfQorCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpyZXNldFpvb20o
KQoreworICAgIG1fY3VycmVudFpvb21TY2FsZSA9IDE7CisgICAgbV9jdXJyZW50Wm9vbVRyYW5z
WCA9IDA7CisgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7Cit9CisKK3ZvaWQgU2Nyb2xsQW5p
bWF0b3I6OnRlc3Rab29tUGFyYW1ldGVycyhmbG9hdCBzY2FsZSwgZmxvYXQgeCwgZmxvYXQgeSkK
K3sKKyAgICBtX2N1cnJlbnRab29tU2NhbGUgPSBzY2FsZTsKKyAgICBtX2N1cnJlbnRab29tVHJh
bnNYID0gKDEgLSBzY2FsZSkgKiB4OworICAgIG1fY3VycmVudFpvb21UcmFuc1kgPSAoMSAtIHNj
YWxlKSAqIHk7CisgICAgbm90aWZ5Wm9vbUNoYW5nZWQoZmFsc2UpOyAvLyBEb24ndCBsZXQgcGFn
ZSByZS1zY2FsZS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNjY3MzgxYjMxMWQ5MmY1NTk4YzE3ZTIyNGMw
YmUwYzU2NjQ1NTFiNi4uYjU2ZTMzM2MzY2EzYmYwMWQzZDU2YzgzOTVhMmZhMDEyODRjNmNlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC04NywxNCArODcs
MjQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFy
KFNjcm9sbGJhciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlSG9yaXpvbnRhbFNj
cm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KIAorICAgIGZsb2F0IHpvb21TY2FsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudFpvb21TY2FsZTsgfQorICAgIEZsb2F0UG9pbnQgem9vbVRyYW5zbGF0
aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0Wm9vbSgpOworICAgIHZpcnR1YWwg
dm9pZCB0ZXN0Wm9vbVBhcmFtZXRlcnMoZmxvYXQsIGZsb2F0LCBmbG9hdCk7CisKIHByb3RlY3Rl
ZDoKICAgICBTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSopOwogCiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlab29t
Q2hhbmdlZChib29sKTsKIAogICAgIFNjcm9sbGFibGVBcmVhKiBtX3Njcm9sbGFibGVBcmVhOwog
ICAgIGZsb2F0IG1fY3VycmVudFBvc1g7IC8vIFdlIGF2b2lkIHVzaW5nIGEgRmxvYXRQb2ludCBp
biBvcmRlciB0byByZWR1Y2UKICAgICBmbG9hdCBtX2N1cnJlbnRQb3NZOyAvLyBzdWJjbGFzcyBj
b2RlIGNvbXBsZXhpdHkuCisKKyAgICBmbG9hdCBtX2N1cnJlbnRab29tU2NhbGU7CisgICAgZmxv
YXQgbV9jdXJyZW50Wm9vbVRyYW5zWDsKKyAgICBmbG9hdCBtX2N1cnJlbnRab29tVHJhbnNZOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggOWEzOWRkMjViOTMwNGYzYzU0ZGM2MGU4ZTJl
YWU3YjlmYzQ0MTM2OS4uMWVjMmMxNmQ2MWZmOTRjNjMzZDE5OGI3YTk2OTIyZjRjNmJmZDhhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQdHIuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCkBAIC0zNjYsMTAgKzM2
NywzNiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OnVwZGF0ZVZpc2li
bGVMZW5ndGgoTGF5b3V0VW5pdCB2aXNpYmxlTGVuZwogICAgIG1fdmlzaWJsZUxlbmd0aCA9IHZp
c2libGVMZW5ndGg7CiB9CiAKK1Njcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6Olpvb21EYXRh
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZSogcGFyZW50LCBmbG9hdCogc2NhbGUsIGZsb2F0
KiB0cmFuc1gsIGZsb2F0KiB0cmFuc1kpCisgICAgOiBtX2N1cnJlbnRTY2FsZShzY2FsZSkKKyAg
ICAsIG1fY3VycmVudFRyYW5zWCh0cmFuc1gpCisgICAgLCBtX2N1cnJlbnRUcmFuc1kodHJhbnNZ
KQoreworfQorCitib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6OmFuaW1hdGVab29t
KGRvdWJsZSBjdXJyZW50VGltZSkKK3sKKyAgICBtX2xhc3RBbmltYXRpb25UaW1lID0gY3VycmVu
dFRpbWU7CisgICAgZG91YmxlIGRlbHRhVGltZSA9IGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWU7
CisKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25UaW1lKSB7CisgICAgICAgICptX2N1
cnJlbnRTY2FsZSA9IG1fZGVzaXJlZFNjYWxlOworICAgICAgICAqbV9jdXJyZW50VHJhbnNYID0g
bV9kZXNpcmVkVHJhbnNYOworICAgICAgICAqbV9jdXJyZW50VHJhbnNZID0gbV9kZXNpcmVkVHJh
bnNZOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgKm1fY3VycmVudFNjYWxl
ID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogKG1fZGVzaXJlZFNjYWxlIC0gbV9zdGFy
dFNjYWxlKSArIG1fc3RhcnRTY2FsZTsKKyAgICAqbV9jdXJyZW50VHJhbnNYID0gZGVsdGFUaW1l
IC8gbV9hbmltYXRpb25UaW1lICogbV9kZXNpcmVkVHJhbnNYOworICAgICptX2N1cnJlbnRUcmFu
c1kgPSBkZWx0YVRpbWUgLyBtX2FuaW1hdGlvblRpbWUgKiBtX2Rlc2lyZWRUcmFuc1k7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIFNjcm9sbEFuaW1hdG9yTm9uZTo6U2Nyb2xsQW5pbWF0b3JOb25l
KFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNj
cm9sbGFibGVBcmVhKQogICAgICwgbV9ob3Jpem9udGFsRGF0YSh0aGlzLCAmbV9jdXJyZW50UG9z
WCwgc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpKQogICAgICwgbV92ZXJ0aWNhbERhdGEo
dGhpcywgJm1fY3VycmVudFBvc1ksIHNjcm9sbGFibGVBcmVhLT52aXNpYmxlSGVpZ2h0KCkpCisg
ICAgLCBtX3pvb21EYXRhKHRoaXMsICZtX2N1cnJlbnRab29tU2NhbGUsICZtX2N1cnJlbnRab29t
VHJhbnNYLCAmbV9jdXJyZW50Wm9vbVRyYW5zWSkKICAgICAsIG1fYW5pbWF0aW9uVGltZXIodGhp
cywgJlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKIH0KQEAgLTQz
NSw2ICs0NjIsNTkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbFRvT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQKICAgICBub3RpZnlQb3NpdGlv
bkNoYW5nZWQoKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6Onpvb20oY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKK3sKKyAgICBBU1NFUlQocGdlLnR5cGUoKSA9PSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSk7CisgICAgLy8gRklYTUUod2ptYWNsZWFu
KTogbW9kaWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIGFjdGl2
ZS4KKyAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX2N1
cnJlbnRab29tU2NhbGUgPSAxOworICAgICAgICBtX2N1cnJlbnRab29tVHJhbnNYID0gMDsKKyAg
ICAgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7CisKKyAgICAgICAgZG91YmxlIGN1cnJlbnRU
aW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAgICAgZmxvYXQg
c2NhbGUgPSBwZ2UuZGVsdGFYKCk7CisKKyAgICAgICAgbV96b29tRGF0YS5tX3N0YXJ0VGltZSA9
IGN1cnJlbnRUaW1lIC0ga1RpY2tUaW1lIC8gMjsKKyAgICAgICAgbV96b29tRGF0YS5tX3N0YXJ0
U2NhbGUgPSBtX2N1cnJlbnRab29tU2NhbGU7CisgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVk
U2NhbGUgPSBzY2FsZTsKKyAgICAgICAgLy8gRklYTUUod2ptYWNsZWFuKSBEb2N1bWVudCB0aGVu
IHNpbXBsaWZ5IHRoZSBmb2xsb3dpbmcgZXF1YXRpb25zLgorICAgICAgICBtX3pvb21EYXRhLm1f
ZGVzaXJlZFRyYW5zWCA9ICgxIC0gc2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueCgpOwor
ICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWSA9ICgxIC0gc2NhbGUpICogcGdlLmds
b2JhbFBvc2l0aW9uKCkueSgpOworI2lmIEVOQUJMRShET1VCTEVfVEFQX0NFTlRFUlMpCisgICAg
ICAgIGlmIChwZ2UudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBl
KSB7CisgICAgICAgICAgICAvLyBab29tIHRvIGNlbnRyZSBvZiBkaXNwbGF5LiBQaW5jaC10by16
b29tIG1heSBub3Qgd2FudCB0aGlzIGJlaGF2aW91ci4KKyAgICAgICAgICAgIG1fem9vbURhdGEu
bV9kZXNpcmVkVHJhbnNYICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpIC8gMiAt
IHBnZS5nbG9iYWxQb3NpdGlvbigpLngoKTsKKyAgICAgICAgICAgIG1fem9vbURhdGEubV9kZXNp
cmVkVHJhbnNZICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWlnaHQoKSAvIDIgLSBwZ2Uu
Z2xvYmFsUG9zaXRpb24oKS55KCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBtX3pvb21E
YXRhLm1fbGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAgICAgbV96b29tRGF0
YS5tX2FuaW1hdGlvblRpbWUgPSA1MCAqIGtUaWNrVGltZTsKKworICAgICAgICBib29sIGlzQ29u
dGludWluZyA9IG1fem9vbURhdGEuYW5pbWF0ZVpvb20oY3VycmVudFRpbWUpOworCisgICAgICAg
IGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGlt
ZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGlt
ZSk7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9IG1heChrTWluaW11bVRpbWVy
SW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICBpZiAoaXNDb250aW51aW5nKQor
ICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2
YWwpOworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghaXNDb250aW51aW5nKTsKKyAgICB9Cit9
CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6
aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCit7Cisg
ICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
RG91YmxlVGFwVHlwZToKKyAgICAgICAgem9vbShwZ2UpOworICAgICAgICBicmVhazsKKworICAg
IGRlZmF1bHQ6CisgICAgICAgIC8vIFRPRE86IGFkZCBhbnkgb3RoZXIgZXZlbnQgdHlwZXMgd2Ug
c2hvdWxkIGhhbmRsZQorICAgICAgICB7IH0KKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBTY3Jv
bGxBbmltYXRvck5vbmU6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAgICB1cGRhdGVWaXNpYmxl
TGVuZ3RocygpOwpAQCAtNDY2LDYgKzU0NiwxMyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6
YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+KiB0aW1lcikKICAg
ICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwogICAgIGlmIChtX3ZlcnRpY2FsRGF0YS5t
X3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsg
ZGVsdGFUb05leHRGcmFtZSkpCiAgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKKwor
ICAgIGlmIChtX3pvb21EYXRhLm1fc3RhcnRUaW1lICYmIG1fem9vbURhdGEuYW5pbWF0ZVpvb20o
Y3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkgeworICAgICAgICBjb250aW51ZUFuaW1h
dGlvbiA9IHRydWU7CisgICAgICAgIG5vdGlmeVpvb21DaGFuZ2VkKCFjb250aW51ZUFuaW1hdGlv
bik7CisgICAgfSBlbHNlCisgICAgICAgIG5vdGlmeVpvb21DaGFuZ2VkKHRydWUpOworCiAgICAg
aWYgKGNvbnRpbnVlQW5pbWF0aW9uKSB7CiAgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZh
bCA9IG1heChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOwogICAgICAg
ICB0aW1lci0+c3RhcnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggMGMwZWIxNmExZmY5NDEyMWU0
NzM4NTlmZmFkOGZhNTZkMTgxOWZmZS4uZTUyNDExZTQwN2JmOTViYTFhMWFmZTExNzQ4NzAwZjc4
Yzc1MzliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25l
LmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Ny
b2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBt
dWx0aXBsaWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAorICAgIHZpcnR1YWwgdm9pZCB6b29tKGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworCiAgICAgdmlydHVhbCB2b2lkIHdpbGxF
bmRMaXZlUmVzaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFy
KFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFy
KFNjcm9sbGJhciopOwpAQCAtMTI3LDEyICsxMzAsMzQgQEAgcHJvdGVjdGVkOgogICAgICAgICBM
YXlvdXRVbml0IG1fdmlzaWJsZUxlbmd0aDsKICAgICB9OwogCisgICAgLy8gV2hpbGUgem9vbWlu
Zywgc2NhbGUsIHBvc1ggYW5kIHBvc1kgbmVlZCB0byBzdGF5IHRpZ2h0bHkgY291cGxlZCwgc28g
dXNlIGEgc2VwYXJhdGUKKyAgICAvLyBkYXRhIHN0cnVjdHVyZS4KKyAgICBzdHJ1Y3QgWm9vbURh
dGEgeworICAgICAgICBab29tRGF0YShTY3JvbGxBbmltYXRvck5vbmUqIHBhcmVudCwgZmxvYXQq
IGN1cnJlbnRTY2FsZSwgZmxvYXQqIGN1cnJlbnRQb3NYLCBmbG9hdCogY3VycmVudFBvc1kpOwor
ICAgICAgICBib29sIGFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSk7CisKKyAgICAgICAg
ZmxvYXQqIG1fY3VycmVudFNjYWxlOworICAgICAgICBmbG9hdCogbV9jdXJyZW50VHJhbnNYOwor
ICAgICAgICBmbG9hdCogbV9jdXJyZW50VHJhbnNZOworCisgICAgICAgIGRvdWJsZSBtX3N0YXJ0
VGltZTsKKworICAgICAgICBkb3VibGUgbV9hbmltYXRpb25UaW1lOworICAgICAgICBkb3VibGUg
bV9sYXN0QW5pbWF0aW9uVGltZTsKKworICAgICAgICBkb3VibGUgbV9zdGFydFNjYWxlOworICAg
ICAgICBkb3VibGUgbV9kZXNpcmVkU2NhbGU7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFu
c1g7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFuc1k7CisgICAgfTsKKwogICAgIHZvaWQg
YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+Kik7CiAgICAgdm9p
ZCBzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxl
bmd0aHMoKTsKIAogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhp
c0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAgWm9vbURhdGEgbV96b29tRGF0YTsKIAogICAgIGRv
dWJsZSBtX3N0YXJ0VGltZTsKICAgICBUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+IG1fYW5pbWF0
aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5k
ZXggYzdhMzk5N2I1NTU4MjhjNDY2ZWNmZWE5ZDEzNjhmMTk3ZjgxMjlhOC4uZGIxNTQ3ZmE4ZTI1
YjA5MjI3NDc2MmFkY2U3NTE5ZGQ2ZmI4MGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2b2lkIFNjcm9sbGFibGVB
cmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0IHkpCiAgICAgc2Nyb2xs
VG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS0+Y3Vy
cmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6Onpvb21B
bmltYXRvclRyYW5zZm9ybUNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgYm9vbCkKK3sK
KyAgICAvLyBSZXF1aXJlcyBGcmFtZVZpZXcgdG8gb3ZlcnJpZGUgdGhpcy4KK30KKwogdm9pZCBT
Y3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCiB7CiAgICAgc2Nyb2xsQW5pbWF0b3IoKS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDViNTRj
YmNjNGFiNjIzYjA4ZmZjNjRlYzU0OTU2NTcyNGYxMDNiNjUuLmM2ZjkyMjgyNGYxMTExZTg0NmNl
YWUwZWUyZDFhN2Y5NTVkMTQ0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxUb1hPZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0IHgpOwogICAgIHZvaWQgc2Nyb2xsVG9ZT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihmbG9hdCB4KTsKIAorICAgIHZpcnR1YWwgdm9pZCB6b29tQW5pbWF0b3JU
cmFuc2Zvcm1DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGJvb2wpOworCiAgICAgdm9p
ZCBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYpOwogI2lmIEVOQUJMRShHRVNU
VVJFX0VWRU5UUykKICAgICB2b2lkIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ2NGQw
YjdjNDc2OGYxM2NlYmIwOGNhZWQzODEwNGMyOGFiZGVhZDYuLjcyNzdkN2EyZmNlODg4ZGE3ZTBm
ZGZjMTc3YTlhMWI2Y2QwYjdhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKQEAgLTUyLDYgKzU0LDEwIEBACiAjaW5jbHVkZSAiQ29sb3JDaG9vc2Vy
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0
Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29u
c3QgY2hhciogSW50ZXJuYWxzOjppbnRlcm5hbHNJZCA9ICJpbnRlcm5hbHMiOwpAQCAtMjQ0LDE1
ICsyNTAsNDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHQKICAgICBkb2N1bWVudC0+c2V0dGlu
Z3MoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW50ZXJu
YWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1lbnQgKmRvY3VtZW50LCBkb3VibGUg
c2NhbGUsIGRvdWJsZSB0eCwgZG91YmxlIHR5LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSW50
ZXJuYWxzOjpzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
ZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPnNldHRpbmdzKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0Wm9v
bUFuaW1hdG9yU2NhbGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNjYWxlKSk7Ci0gICAgZG9jdW1lbnQt
PnNldHRpbmdzKCktPnNldFpvb21BbmltYXRvclBvc2l0aW9uKHN0YXRpY19jYXN0PGZsb2F0Pih0
eCksIHN0YXRpY19jYXN0PGZsb2F0Pih0eSkpOworICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5z
ZXRFbmFibGVTY3JvbGxBbmltYXRvcihlbmFibGVkKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnNl
dFpvb21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVudCAqZG9jdW1lbnQsIGZsb2F0IHNjYWxlLCBm
bG9hdCB0eCwgZmxvYXQgdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT52aWV3KCkgfHwgIWRvY3VtZW50LT52aWV3KCktPmZyYW1lKCkpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQg
cGdlKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlLCBJbnRQb2ludCh0eCwgdHkp
LCBJbnRQb2ludCh0eCwgdHkpLCAwLCBzY2FsZSwgMC5mLCAwLCAwLCAwLCAwKTsKKyAgICBkb2N1
bWVudC0+dmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50
KHBnZSk7CisjZW5kaWYKK30KKworZmxvYXQgSW50ZXJuYWxzOjpnZXRQYWdlU2NhbGVGYWN0b3Io
RG9jdW1lbnQgKmRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gZG9jdW1lbnQtPnBh
Z2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRab29tUGFy
YW1ldGVycyhEb2N1bWVudCogZG9jdW1lbnQsIGZsb2F0IHNjYWxlLCBmbG9hdCB4LCBmbG9hdCB5
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+
dmlldygpIHx8ICFkb2N1bWVudC0+dmlldygpLT5mcmFtZSgpKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZG9jdW1lbnQt
PnZpZXcoKS0+c2Nyb2xsQW5pbWF0b3IoKS0+dGVzdFpvb21QYXJhbWV0ZXJzKHNjYWxlLCB4LCB5
KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggNjdhMTg5OTQ5YTU2MjdlMmYyNzAyZjNhYThhZTBiN2U4YjJh
ODFmNy4uYWExNzZmZTg1ZTBjMDViNzg1ZWM3ZDcyOWQ0MTE1OTIzMjczZTM0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03Nyw3ICs3NywxMSBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCB1bnNpZ25lZCwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShEb2N1bWVudCos
IGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9y
VHJhbnNmb3JtKERvY3VtZW50KiwgZG91YmxlIHNjYWxlLCBkb3VibGUgdHgsIGRvdWJsZSB0eSwg
RXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1
bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0Wm9vbUFu
aW1hdG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZmxvYXQgc2NhbGUsIGZsb2F0IHR4LCBmbG9hdCB0
eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIGZsb2F0IGdldFBhZ2VTY2FsZUZhY3RvcihEb2N1bWVu
dCosICBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRab29tUGFyYW1ldGVycyhEb2N1bWVu
dCosIGZsb2F0IHNjYWxlLCBmbG9hdCB4LCBmbG9hdCB5LCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1lbnQqLCBib29sIGVuYWJsZWQsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRz
KERvY3VtZW50KiwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZDQ0MDBiOWNkOTI4NDEwYzU0ZTlk
ZjA1Mzk0MmM4YzMwZjk4NzMxZS4uNDdkMGFlN2EwNzQzZDk2NTA0MjI3NGIwYThkZjU5ZWZjNDg2
Yjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTEsNyArNTEsMTAg
QEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFJhbmdlIG1hcmtlclJhbmdlRm9yTm9kZShpbiBO
b2RlIG5vZGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNlcHRpb24pOwog
CiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoaW4gRG9jdW1lbnQgZG9jdW1l
bnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIHZv
aWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3Vi
bGUgc2NhbGUsIGluIGRvdWJsZSB0eCwgaW4gZG91YmxlIHR5KSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyAgICAgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihpbiBEb2N1bWVudCBkb2N1
bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAg
dm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGZs
b2F0IHNjYWxlLCBpbiBmbG9hdCB0eCwgaW4gZmxvYXQgdHkpIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICBmbG9hdCBnZXRQYWdlU2NhbGVGYWN0b3IoaW4gRG9jdW1lbnQgZG9jdW1lbnQp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldFpvb21QYXJhbWV0ZXJzKGlu
IERvY3VtZW50IGRvY3VtZW50LCBpbiBmbG9hdCBzY2FsZSwgaW4gZmxvYXQgeCwgaW4gZmxvYXQg
eSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9F
bmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNv
bmRzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgZHVyYXRpb25JblNlY29uZHMpIHJh
aXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhMTEzMzU0
OWU4NWQ4MzJiYTUyZDA0ZmI0MDljZDRlYTExYzY2YmRjLi4yZWMxYjdhNDQ3NGQ1N2EwNDIwMDY4
NGZiNDRmNDJiMDZhMGU3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDExLTA5LTI5ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFpvb20gYW5pbWF0b3IgZnJvbnQtZW5kIFt3b3Jr
LWluLXByb2dyZXNzLCBub3QgZm9yIHJldmlldyB5ZXQgLi4uXQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwMzUKKworICAgICAgICBNb2RpZmljYXRp
b25zIHRvIGdldCB6b29tIHRleHR1cmUtc2NhbGUgcGFyYW1ldGVycyBmcm9tIFNjYWxlQW5pbWF0
b3IgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVhZCBvZiB2aWEgU2V0dGluZ3MuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNw
bGF5KToKKwogMjAxMS0wOS0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGZjMDZjNjU5Y2JmZTQxMjQ1OWUy
NzBjYzg1NTlmZDI5MWU2NTg1YTkuLjMxMzQyN2Q3ODMxMWQzNDdmMDBkMWU4ZmE0NzFkMGViNWQx
ZTU0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTkzLDYgKzkzLDcgQEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJTY3Jv
bGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKQEAgLTI1NjgsOCAr
MjU2OSw5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpCiB7
CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB6b29tTWF0cml4OwotICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0ZShtX3BhZ2UtPnNldHRp
bmdzKCktPnpvb21BbmltYXRvclBvc1goKSwgbV9wYWdlLT5zZXR0aW5ncygpLT56b29tQW5pbWF0
b3JQb3NZKCkpOwotICAgICAgICB6b29tTWF0cml4LnNjYWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+
em9vbUFuaW1hdG9yU2NhbGUoKSk7CisgICAgICAgIEZsb2F0UG9pbnQgdHJhbnMgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnpvb21UcmFuc2xhdGlvbigp
OworICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0ZSh0cmFucy54KCksIHRyYW5zLnkoKSk7Cisg
ICAgICAgIHpvb21NYXRyaXguc2NhbGUobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5zY3Jv
bGxBbmltYXRvcigpLT56b29tU2NhbGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb21NYXRyaXgpOwogICAgIH0KICNpZiBVU0UoVEhSRUFE
RURfQ09NUE9TSVRJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109201</attachid>
            <date>2011-09-29 14:14:40 -0700</date>
            <delta_ts>2011-09-29 18:32:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20110929171312.patch</filename>
            <type>text/plain</type>
            <size>31776</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzNDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzOTcyNmRiYTRiYzBiMjNhZTM5ZmJl
MDJlNTQyN2ZlNjY4M2Q0MzA4Li43MmQ0NGFjNTk1OTgwYTY2NTI0N2E0Y2M5YjI2YWM0YzdmNGQy
YzNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMjkgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2aWV3IHlldCAuLi5d
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20t
YW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDktMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBXZSBzaG91
bGQgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgR2V0UmVhbE5hbWVkUHJvcGVydHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJv
bWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNDQ2NmI4YjU1ZjQ4NzAzMTBkN2RlZGZlMDJhYzMwN2YzYWU4MWFkCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMzMzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllW
MmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UIXRoQQp6dnNDam1PVCpOKEckVmBUcXxfOCsz
ajxUalIxO0grUkFVUGheUihDLUtiI3BEYyYyOzBJRUdacmQzKk9AdTJlTEcKekwqUnhOamI8d2oz
VkI7Q25Fdjlzaz9hTjtPO2FDZnlAdVEkLTdYVlQzdjZ6ZkpLbEp7cnRQNiZtR3RUR19sQWMqCnpt
MDBPQUZ3OTdsSWxnQFBeNlUzdipJJlE9d3JwZD5udHU8Y0ZmaEVrVlppaElaezR7V09HUn1VOHE5
a2l8MHBpYQp6SShNUmR6cFhTd2dafjQ1PipuWG10WVFvZkpfKEVyTV85eGQ0cHszPktpJk50RDBI
Q3UmempaVXl7YTErN31rQjsKenYtK0kwSCY5ODteRjFyIz02cVpiJGs2YjUmcmdYIT9GYUAyISR3
dkgwYnZtMXt5YD4mOEwxTCZHZUpmaygzeVFVCno/YzlkVVN2aTdDVjU4eDdQe0loP0s5N09uSzwk
aVduYUAwY184T2VkK2lxPU5YKEphdT1qWHFfeUxGdXk4ZkZ8fAp6Vig4IW1kVWxrN0g0dHZSeCtj
NnN7cStCNyt2Z24kRlpvcnI+I0dSRTFGSkEjRyQlMX1HYnBIeUdEWlZ8UClnWGcKej5ucUU8bFBf
PC15Y1BeQlZqNGgyMypCP3UrQntvRWhLQXE4N0JjaHAqOHN1NEFXLT5+eVohY0c4dzxKcT1rSVNS
Cnp1YHFOKjAheVNGdiV0anloXlJsczF1VTRaZj1lVjJAaDVtUiQmY3B5KEsycyU8YnVgRnt0T0hj
Pn0yQGJZMWpZKAp6d3ZpfWx6bD5eIXZAOz1MaHwhdj4rZHRucE19alQ3MS1WJVhZRn5hPEVlQUZe
Yio3KkdKYkMlJG0pfCNucytgdzAKemA3NjhBTDU8ZHteVGUtSz03U28yLSskWjtlT3xnJTBONU9U
VSQkfGI3JHt8ezFEaURXdyNCVn4tWSlfYSZjQl92Cnp7ams5diVOJldld2BJRilhXkRMdUc+OUs3
dGZ7SzFkVkJZNCkhd14jO0B3QnJBTmNoLWdQfiNsJVd+dGApVTZSWgp6WkhZSkRmNndRV1pBO3ZJ
YjVDO0dXZlAjKkApYGpLeVAxYXtlJU0jUD48e2x7bGUwYnhFRHo3Q21OQD9MKV9EZW8KejhkK2Vv
VGp1eWB5SDUkfTB0XnEldVkwPlJ7SnFraUFLR21VNEQpWHNjSytQWmRPQUVYezZpKSV4bkFkRXUk
VWZsCnpxNGh2ZUlLelNQWnkme35CcUxzTkYobUIjYjc4WW54UElKeHp2Y1RjTWpVQF54TD9pU0Bf
WUxPcFAzby1lbSQ2Ywp6THFBOGJZTVY4fmhwRHhEVEpgRXIjd0goSntfKTM7QUdhNzhvPUBWY2BX
b2xiJWdSdD1ZRzMhcVc4TFFzYXFBfkAKekdjd2VLVUheOUphTV5Dend1a3k+KiUlKCY8Ml92UF9Q
eT1AVTk1I04/KXpzbEdraUV5d1JoalBiejxFfHw5P0ZCCldAVCNJVyVXK2A4aFFaVS0mdDt1Y0xL
NlQpSSNzT3oKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5o
dG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmlt
YXRvci1zY2FsZS10ZXN0Lmh0bWwKaW5kZXggZTFiYWM5ZWI3MzRkOWU4N2NjNzI4YjY4ZDBhMWQ0
OWYwNGQzZWU5NC4uNmQzODhmMzIxNzYxOTkzN2RlNzA1MTQ0NjVjMjUzODk2NjU3Yzc3MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1h
bmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKQEAgLTMsNyArMyw3
IEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAg
ICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZG9jdW1lbnQs
IHRydWUpOwotICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oZG9jdW1lbnQsIDEuMjUsIC0yNS4wLCAtMjUuMCk7CisgICAgICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldFpvb21QYXJhbWV0ZXJzKGRvY3VtZW50LCAxLjI1LCAxMDAsIDEwMCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAg
ICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29t
LWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBA
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Zjc1OWEzMjJlZWUxMzAyMTZjNjRlY2IxNWNlNWRhY2VlZDY3NGQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1h
bmltYXRvci1zY2FsZS10ZXN0Mi5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorICA8aGVh
ZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXRFbmFibGVTY3JvbGxBbmltYXRvcihkb2N1bWVudCwg
dHJ1ZSk7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKGRvY3VtZW50LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0aW1lcjsK
KworICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgaWYgKCF3aW5k
b3cuaW50ZXJuYWxzIHx8ICh3aW5kb3cuaW50ZXJuYWxzLmdldFBhZ2VTY2FsZUZhY3Rvcihkb2N1
bWVudCkgPT0gMS4yNSkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cg
PSAiaGlkZGVuIjsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
ZG9UZXN0KCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFCb3giKS5z
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiZ3JlZW4iOworICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybShkb2N1bWVudCwgMS4yNSwgMTAwLjAsIDEwMC4wKTsKKyAgICAgICAgICAg
ICAgICAvLyBDaGVjayBldmVyeSAxMDAgbVMgZm9yIGFuaW1hdGlvbiBjb21wbGV0aW9uLgorICAg
ICAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoImZpbmlzaFRlc3QoKSIsIDI1MCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+Cis8Ym9k
eSBpZD0idGhlQm9keSI+CisgIDwhLS0gICAgSWYgc3VjY2Vzc2Z1bCwgdGhlIGJveCBzaG91bGQg
ZW5sYXJnZSB0byBiZSAxMjV4MTI1IGF0ICgxMjUsMTI1KS4KKyAgICAtLT4KKyAgPGRpdiBpZD0i
YUJveCIgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6MTAwcHg7IHBvc2l0aW9uOmFic29sdXRl
OyBsZWZ0OjEwMHB4OyB0b3A6MTAwcHg7IGJhY2tncm91bmQtY29sb3I6I0ZGMDAwMCI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggY2QzODYzZDNkOTY0MTY0MGFhYzBhOGY0NmVk
ZDI3ZWQ1ZTE5YjFjOS4uZjc1NmI5MjFjNmQ2YzA3ZTE0YmM4Zjk0N2Q3MDRlMDcyZTA3NDEzZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dApAQCAtMjY2MSw2ICsyNjYxLDggQEAgQlVHV0s1NTk2OCBXSU4gREVCVUcgR1BVIDog
Y29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlwbGllZC1ibGVuZC5odG1sID0KIEJV
R1dLNTg1ODcgTElOVVggR1BVIERFQlVHIDogbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5n
Lmh0bWwgPSBJTUFHRQogQlVHQ1I5NzY4NiBMSU5VWCBHUFUgUkVMRUFTRSA6IG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLXJlbmRlcmluZy5odG1sID0gSU1BR0UKIAorQlVHV0t4eHh4eCBNQUMgV0lOIEdQ
VSBHUFUtQ0cgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLmh0bWwgPSBJTUFHRQorCiBCVUdDUjcyMjIzIDogbWVkaWEvdmlkZW8tZnJhbWUt
YWNjdXJhdGUtc2Vlay5odG1sID0gUEFTUyBJTUFHRQogCiBCVUdXSzUzODY4IDogZmFzdC9ub3Rp
ZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG9jdW1lbnQtY2xvc2UtY3Jhc2guaHRtbCA9IFBBU1Mg
VEVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDhkMzJjMWIyYmVlYTFmZWYxNGFlYzY0ZTMzNDI0Y2Y5NzkzMTVm
MjcuLjg4MmE3NDcxMjA0MjJkN2Y5ZDViMzkzM2ZiZmViNTAyODc5YWY4NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NCBAQAorMjAxMS0wOS0yOSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBab29tIGFuaW1hdG9yIGZyb250
LWVuZCBbd29yay1pbi1wcm9ncmVzcywgbm90IGZvciByZXZpZXcgeWV0IC4uLl0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDM1CisKKyAgICAgICAg
QWRkcyBuZWNlc3NhcnkgY29tcG9uZW50cyB0byBTY3JvbGxBbmltYXRvck5vbmUgdG8gc3VwcG9y
dCBhIHpvb20gYW5pbWF0aW9uCisgICAgICAgIGZlYXR1cmUuIEluY2x1ZGVzIHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdmlhIHRlc3RpbmcvSW50ZXJuYWxzIHRvIGNhcHR1cmUKKyAgICAgICAgaW4tcHJv
Z3Jlc3MgdGV4dHVyZSBzY2FsaW5nICh6b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbCkgYXMg
d2VsbCBhcyBhCisgICAgICAgIGZpbmFsIHZpZXcgLS0tIGFmdGVyIHBhZ2VTY2FsZUZhY3RvciBo
YXMgYmVlbiBhcHBsaWVkIC0tLSBpbiB6b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwuCisK
KyAgICAgICAgUmVtb3ZlcyB0ZW1wb3JhcnkgdGVzdCBmaWVsZHMgZnJvbSBTZXR0aW5ncy4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBwbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwK
KworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Onpvb21BbmltYXRvclRyYW5zZm9y
bUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9T
ZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVpvb21DaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp6b29tVHJhbnNsYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnJlc2V0Wm9vbSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6dGVzdFpvb21QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
Onpvb21TY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6Olpvb21EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6OmFuaW1h
dGVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6U2Nyb2xsQW5p
bWF0b3JOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVy
RmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGFibGVBcmVhOjp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRab29tUGFyYW1ldGVycyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MTEtMDktMjkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNo
cmluayBGb250RmFsbGJhY2tMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmlu
ZGV4IDQyOWI5MjBlNjNiNmIwOTg2ZTIyYWJmMGQ1ODA4ZGViNDE4NWJjNzkuLjkyYWI4NGNlNjEy
ZTNiODExYWNhM2EyOGU5NjFkNjBhOGM0OGEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKQEAgLTIyMjUsOCArMjIyNSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAg
ICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFw
VHlwZToKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Ny
b2xsVXBkYXRlVHlwZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9h
dClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJlcGxhY2Ug
dGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVu
IGFkZHJlc3NlZC4KQEAgLTIyMzYsNiArMjIzNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkK
ICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJs
ZVRhcFR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBl
OgogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAg
IEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCBkMTIzMzE4MWEyYWY1N2IzNThmMWQyNjE3YzRlOGEyM2UxMzQ5ODczLi4xMzc1
OThkNzNjMWIwOWM5YjNmNTY0ZjhjODAwMTUxZTU4ZWYzYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC0xMjIwLDYgKzEyMjAsMjIgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVdp
ZGdldFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0KiBvYmplY3QpCiAgICAgbV93aWRnZXRV
cGRhdGVTZXQtPnJlbW92ZShvYmplY3QpOwogfQogCit2b2lkIEZyYW1lVmlldzo6em9vbUFuaW1h
dG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSwgYm9v
bCBpc0ZpbmlzaGVkKQoreworICAgIGlmIChpc0ZpbmlzaGVkKSB7CisgICAgICAgIG1fcGFnZS0+
c2V0UGFnZVNjYWxlRmFjdG9yKG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgKiBzY2FsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQoc2NhbGUgKiBzY3Jv
bGxYKCkgLSB4LCBzY2FsZSAqIHNjcm9sbFkoKSAtIHkpKTsKKyAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS0+cmVzZXRab29tKCk7CisgICAgfQorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gcm9vdFJlbmRlcmVyKHRoaXMpKSB7Cisg
ICAgICAgIGlmIChyb290LT51c2VzQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgICAgIHJvb3QtPmNv
bXBvc2l0b3IoKS0+c2NoZWR1bGVMYXllckZsdXNoKCk7CisgICAgfQorI2VuZGlmCit9CisKIHZv
aWQgRnJhbWVWaWV3OjpzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAg
ICAgbV9tZWRpYVR5cGUgPSBtZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA0
NDJlMDhjYWJlMTA0NjdlYWRlZmM5ZTZlZTYyNGVlZTVmYWZkOGM3Li45MTExYjE2NmYwYjQzMTNm
ZmEwZjZjOGFmM2QwNDQ5NGIyYWY4NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE3
MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRGaXhlZEVsZW1l
bnRzQWZ0ZXJTY3JvbGxpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZElu
RGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9v
bUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBib29sKTsK
KwogICAgIFN0cmluZyBtZWRpYVR5cGUoKSBjb25zdDsKICAgICB2b2lkIHNldE1lZGlhVHlwZShj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nKGJvb2wg
cHJpbnRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBkN2UwMGQxYzdkYTYyN2Qx
YTdmYTViNGFiZTI2ZWEwYmI5MDA5YjA0Li5lMDQxY2YwM2Y1NmVkODgwMzZiZDdmMWFjOTcyMzdi
NTg0M2IwZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMjE4LDkgKzIxOCw2IEBA
IFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9tZWRpYVBsYXliYWNrQWxs
b3dzSW5saW5lKHRydWUpCiAgICAgLCBtX3Bhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpCiAgICAg
LCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKLSAgICAsIG1fem9vbUFuaW1hdG9yU2NhbGUo
MSkKLSAgICAsIG1fem9vbUFuaW1hdG9yUG9zWCgwKQotICAgICwgbV96b29tQW5pbWF0b3JQb3NZ
KDApCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28g
d2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWlu
ZyB0byB1c2UgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggZGI3MzY0OGQ0YTEwYjliMmRj
ZjU1NDQyYjkyN2ExOWY4YjBmYjFjMC4uNGIwY2ZiZjhmYjY4OGY5NmNlNGE4NDMwYWIyOGRmODdl
OTdhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNDMyLDEzICs0MzIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9v
bCBmbGFnKSB7IG1fZm9yY2VDb21wb3NpdGluZ01vZGUgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wg
Zm9yY2VDb21wb3NpdGluZ01vZGUoKSB7IHJldHVybiBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShmbG9hdCBzY2FsZSkgeyBtX3pv
b21BbmltYXRvclNjYWxlID0gc2NhbGU7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yU2Nh
bGUoKSB7IHJldHVybiBtX3pvb21BbmltYXRvclNjYWxlOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRa
b29tQW5pbWF0b3JQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5KSB7IG1fem9vbUFuaW1hdG9yUG9z
WCA9IHg7IG1fem9vbUFuaW1hdG9yUG9zWSA9IHk7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1h
dG9yUG9zWCgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWDsgfQotICAgICAgICBmbG9hdCB6
b29tQW5pbWF0b3JQb3NZKCkgeyByZXR1cm4gbV96b29tQW5pbWF0b3JQb3NZOyB9Ci0KICAgICAg
ICAgdm9pZCBzZXRTaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQo
Ym9vbCBmbGFnKSB7IG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3Vt
ZW50ID0gZmxhZzsgfQogICAgICAgICBib29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0
aWFsRW1wdHlEb2N1bWVudCgpIHsgcmV0dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbklu
aXRpYWxFbXB0eURvY3VtZW50OyB9CiAKQEAgLTYwNywxMCArNjAwLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2VuZGlmCiAgICAgICAgIHN0YXRpYyBib29sIGdNb2NrU2Nyb2xsYmFyc0VuYWJs
ZWQ7CiAKLSAgICAgICAgZmxvYXQgbV96b29tQW5pbWF0b3JTY2FsZTsKLSAgICAgICAgZmxvYXQg
bV96b29tQW5pbWF0b3JQb3NYOwotICAgICAgICBmbG9hdCBtX3pvb21BbmltYXRvclBvc1k7Ci0K
ICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnRO
YXRpdmVDb250cm9sczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwCmluZGV4IDU1MzhlZmRkMWFjZDlkMTNjZjI4NmM2ZGFkMDUxZTE4OGYxM2U3M2Eu
LjUyZTFhYTBiNDRkOWU2MmM1Njk1YmY5OGVmMTQ5ZTJkNmE5ZDZjMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTUyLDYgKzUyLDkgQEAgU2Nyb2xs
QW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkK
ICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2N1cnJlbnRQ
b3NYKDApCiAgICAgLCBtX2N1cnJlbnRQb3NZKDApCisgICAgLCBtX2N1cnJlbnRab29tU2NhbGUo
MSkKKyAgICAsIG1fY3VycmVudFpvb21UcmFuc1goMCkKKyAgICAsIG1fY3VycmVudFpvb21UcmFu
c1koMCkKIHsKIH0KIApAQCAtMTI5LDQgKzEzMiwyOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoKQogICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldFNjcm9sbE9m
ZnNldEZyb21BbmltYXRpb24oSW50UG9pbnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50UG9zWSkp
OwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlab29tQ2hhbmdlZChib29sIGlzRmlu
aXNoZWQpCit7CisgICAgbV9zY3JvbGxhYmxlQXJlYS0+em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hh
bmdlZChtX2N1cnJlbnRab29tU2NhbGUsIG1fY3VycmVudFpvb21UcmFuc1gsIG1fY3VycmVudFpv
b21UcmFuc1ksIGlzRmluaXNoZWQpOworfQorCitGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjp6
b29tVHJhbnNsYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBGbG9hdFBvaW50KG1fY3VycmVu
dFpvb21UcmFuc1gsIG1fY3VycmVudFpvb21UcmFuc1kpOworfQorCit2b2lkIFNjcm9sbEFuaW1h
dG9yOjpyZXNldFpvb20oKQoreworICAgIG1fY3VycmVudFpvb21TY2FsZSA9IDE7CisgICAgbV9j
dXJyZW50Wm9vbVRyYW5zWCA9IDA7CisgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7Cit9CisK
K3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnRlc3Rab29tUGFyYW1ldGVycyhmbG9hdCBzY2FsZSwgZmxv
YXQgeCwgZmxvYXQgeSkKK3sKKyAgICBtX2N1cnJlbnRab29tU2NhbGUgPSBzY2FsZTsKKyAgICBt
X2N1cnJlbnRab29tVHJhbnNYID0gKDEgLSBzY2FsZSkgKiB4OworICAgIG1fY3VycmVudFpvb21U
cmFuc1kgPSAoMSAtIHNjYWxlKSAqIHk7CisgICAgbm90aWZ5Wm9vbUNoYW5nZWQoZmFsc2UpOyAv
LyBEb24ndCBsZXQgcGFnZSByZS1zY2FsZS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNjY3MzgxYjMxMWQ5
MmY1NTk4YzE3ZTIyNGMwYmUwYzU2NjQ1NTFiNi4uYjU2ZTMzM2MzY2EzYmYwMWQzZDU2YzgzOTVh
MmZhMDEyODRjNmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5o
CkBAIC04NywxNCArODcsMjQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVt
b3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KIAorICAgIGZsb2F0IHpvb21T
Y2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFpvb21TY2FsZTsgfQorICAgIEZsb2F0UG9p
bnQgem9vbVRyYW5zbGF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0Wm9vbSgp
OworICAgIHZpcnR1YWwgdm9pZCB0ZXN0Wm9vbVBhcmFtZXRlcnMoZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CisKIHByb3RlY3RlZDoKICAgICBTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSopOwog
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZCgpOworICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlab29tQ2hhbmdlZChib29sKTsKIAogICAgIFNjcm9sbGFibGVBcmVhKiBtX3Nj
cm9sbGFibGVBcmVhOwogICAgIGZsb2F0IG1fY3VycmVudFBvc1g7IC8vIFdlIGF2b2lkIHVzaW5n
IGEgRmxvYXRQb2ludCBpbiBvcmRlciB0byByZWR1Y2UKICAgICBmbG9hdCBtX2N1cnJlbnRQb3NZ
OyAvLyBzdWJjbGFzcyBjb2RlIGNvbXBsZXhpdHkuCisKKyAgICBmbG9hdCBtX2N1cnJlbnRab29t
U2NhbGU7CisgICAgZmxvYXQgbV9jdXJyZW50Wm9vbVRyYW5zWDsKKyAgICBmbG9hdCBtX2N1cnJl
bnRab29tVHJhbnNZOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggOWEzOWRkMjViOTMw
NGYzYzU0ZGM2MGU4ZTJlYWU3YjlmYzQ0MTM2OS4uMWVjMmMxNmQ2MWZmOTRjNjMzZDE5OGI3YTk2
OTIyZjRjNmJmZDhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvck5vbmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQdHIuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVh
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50Lmgi
CkBAIC0zNjYsMTAgKzM2NywzNiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0Rh
dGE6OnVwZGF0ZVZpc2libGVMZW5ndGgoTGF5b3V0VW5pdCB2aXNpYmxlTGVuZwogICAgIG1fdmlz
aWJsZUxlbmd0aCA9IHZpc2libGVMZW5ndGg7CiB9CiAKK1Njcm9sbEFuaW1hdG9yTm9uZTo6Wm9v
bURhdGE6Olpvb21EYXRhKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZSogcGFyZW50LCBmbG9h
dCogc2NhbGUsIGZsb2F0KiB0cmFuc1gsIGZsb2F0KiB0cmFuc1kpCisgICAgOiBtX2N1cnJlbnRT
Y2FsZShzY2FsZSkKKyAgICAsIG1fY3VycmVudFRyYW5zWCh0cmFuc1gpCisgICAgLCBtX2N1cnJl
bnRUcmFuc1kodHJhbnNZKQoreworfQorCitib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURh
dGE6OmFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSkKK3sKKyAgICBtX2xhc3RBbmltYXRp
b25UaW1lID0gY3VycmVudFRpbWU7CisgICAgZG91YmxlIGRlbHRhVGltZSA9IGN1cnJlbnRUaW1l
IC0gbV9zdGFydFRpbWU7CisKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25UaW1lKSB7
CisgICAgICAgICptX2N1cnJlbnRTY2FsZSA9IG1fZGVzaXJlZFNjYWxlOworICAgICAgICAqbV9j
dXJyZW50VHJhbnNYID0gbV9kZXNpcmVkVHJhbnNYOworICAgICAgICAqbV9jdXJyZW50VHJhbnNZ
ID0gbV9kZXNpcmVkVHJhbnNZOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Km1fY3VycmVudFNjYWxlID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogKG1fZGVzaXJl
ZFNjYWxlIC0gbV9zdGFydFNjYWxlKSArIG1fc3RhcnRTY2FsZTsKKyAgICAqbV9jdXJyZW50VHJh
bnNYID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogbV9kZXNpcmVkVHJhbnNYOworICAg
ICptX2N1cnJlbnRUcmFuc1kgPSBkZWx0YVRpbWUgLyBtX2FuaW1hdGlvblRpbWUgKiBtX2Rlc2ly
ZWRUcmFuc1k7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFNjcm9sbEFuaW1hdG9yTm9uZTo6U2Ny
b2xsQW5pbWF0b3JOb25lKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNj
cm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9ob3Jpem9udGFsRGF0YSh0aGlz
LCAmbV9jdXJyZW50UG9zWCwgc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpKQogICAgICwg
bV92ZXJ0aWNhbERhdGEodGhpcywgJm1fY3VycmVudFBvc1ksIHNjcm9sbGFibGVBcmVhLT52aXNp
YmxlSGVpZ2h0KCkpCisgICAgLCBtX3pvb21EYXRhKHRoaXMsICZtX2N1cnJlbnRab29tU2NhbGUs
ICZtX2N1cnJlbnRab29tVHJhbnNYLCAmbV9jdXJyZW50Wm9vbVRyYW5zWSkKICAgICAsIG1fYW5p
bWF0aW9uVGltZXIodGhpcywgJlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJl
ZCkKIHsKIH0KQEAgLTQzNSw2ICs0NjIsNTkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNj
cm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQKICAg
ICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
Onpvb20oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKK3sKKyAgICBBU1NFUlQocGdl
LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSk7CisgICAgLy8g
RklYTUUod2ptYWNsZWFuKTogbW9kaWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhl
IHRpbWVyIGlzIGFjdGl2ZS4KKyAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkg
eworICAgICAgICBtX2N1cnJlbnRab29tU2NhbGUgPSAxOworICAgICAgICBtX2N1cnJlbnRab29t
VHJhbnNYID0gMDsKKyAgICAgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7CisKKyAgICAgICAg
ZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsK
KyAgICAgICAgZmxvYXQgc2NhbGUgPSBwZ2UuZGVsdGFYKCk7CisKKyAgICAgICAgbV96b29tRGF0
YS5tX3N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lIC0ga1RpY2tUaW1lIC8gMjsKKyAgICAgICAgbV96
b29tRGF0YS5tX3N0YXJ0U2NhbGUgPSBtX2N1cnJlbnRab29tU2NhbGU7CisgICAgICAgIG1fem9v
bURhdGEubV9kZXNpcmVkU2NhbGUgPSBzY2FsZTsKKyAgICAgICAgLy8gRklYTUUod2ptYWNsZWFu
KSBEb2N1bWVudCB0aGVuIHNpbXBsaWZ5IHRoZSBmb2xsb3dpbmcgZXF1YXRpb25zLgorICAgICAg
ICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWCA9ICgxIC0gc2NhbGUpICogcGdlLmdsb2JhbFBv
c2l0aW9uKCkueCgpOworICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWSA9ICgxIC0g
c2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueSgpOworI2lmIEVOQUJMRShET1VCTEVfVEFQ
X0NFTlRFUlMpCisgICAgICAgIGlmIChwZ2UudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpEb3VibGVUYXBUeXBlKSB7CisgICAgICAgICAgICAvLyBab29tIHRvIGNlbnRyZSBvZiBkaXNw
bGF5LiBQaW5jaC10by16b29tIG1heSBub3Qgd2FudCB0aGlzIGJlaGF2aW91ci4KKyAgICAgICAg
ICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNYICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2li
bGVXaWR0aCgpIC8gMiAtIHBnZS5nbG9iYWxQb3NpdGlvbigpLngoKTsKKyAgICAgICAgICAgIG1f
em9vbURhdGEubV9kZXNpcmVkVHJhbnNZICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWln
aHQoKSAvIDIgLSBwZ2UuZ2xvYmFsUG9zaXRpb24oKS55KCk7CisgICAgICAgIH0KKyNlbmRpZgor
ICAgICAgICBtX3pvb21EYXRhLm1fbGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKyAg
ICAgICAgbV96b29tRGF0YS5tX2FuaW1hdGlvblRpbWUgPSA1MCAqIGtUaWNrVGltZTsKKworICAg
ICAgICBib29sIGlzQ29udGludWluZyA9IG1fem9vbURhdGEuYW5pbWF0ZVpvb20oY3VycmVudFRp
bWUpOworCisgICAgICAgIGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRp
bWUgLSBtX3N0YXJ0VGltZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRp
bWUgLSBtX3N0YXJ0VGltZSk7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9IG1h
eChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICBpZiAo
aXNDb250aW51aW5nKQorICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qo
bmV4dFRpbWVySW50ZXJ2YWwpOworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghaXNDb250aW51
aW5nKTsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9s
bEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JiBwZ2UpCit7CisgICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICAgICAgem9vbShwZ2UpOworICAgICAg
ICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRPRE86IGFkZCBhbnkgb3RoZXIg
ZXZlbnQgdHlwZXMgd2Ugc2hvdWxkIGhhbmRsZQorICAgICAgICB7IH0KKyAgICB9Cit9CisjZW5k
aWYKKwogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAg
ICB1cGRhdGVWaXNpYmxlTGVuZ3RocygpOwpAQCAtNDY2LDYgKzU0NiwxMyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5v
bmU+KiB0aW1lcikKICAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwogICAgIGlmICht
X3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xs
KGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpCiAgICAgICAgIGNvbnRpbnVlQW5pbWF0
aW9uID0gdHJ1ZTsKKworICAgIGlmIChtX3pvb21EYXRhLm1fc3RhcnRUaW1lICYmIG1fem9vbURh
dGEuYW5pbWF0ZVpvb20oY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkgeworICAgICAg
ICBjb250aW51ZUFuaW1hdGlvbiA9IHRydWU7CisgICAgICAgIG5vdGlmeVpvb21DaGFuZ2VkKCFj
b250aW51ZUFuaW1hdGlvbik7CisgICAgfSBlbHNlCisgICAgICAgIG5vdGlmeVpvb21DaGFuZ2Vk
KHRydWUpOworCiAgICAgaWYgKGNvbnRpbnVlQW5pbWF0aW9uKSB7CiAgICAgICAgIGRvdWJsZSBu
ZXh0VGltZXJJbnRlcnZhbCA9IG1heChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0
RnJhbWUpOwogICAgICAgICB0aW1lci0+c3RhcnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggMGMw
ZWIxNmExZmY5NDEyMWU0NzM4NTlmZmFkOGZhNTZkMTgxOWZmZS4uZTUyNDExZTQwN2JmOTViYTFh
MWFmZTExNzQ4NzAwZjc4Yzc1MzliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3JOb25lLmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9h
dCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAorICAgIHZpcnR1YWwgdm9p
ZCB6b29tKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworCiAgICAgdmly
dHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFZl
cnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwpAQCAtMTI3LDEyICsxMzAsMzQgQEAgcHJvdGVj
dGVkOgogICAgICAgICBMYXlvdXRVbml0IG1fdmlzaWJsZUxlbmd0aDsKICAgICB9OwogCisgICAg
Ly8gV2hpbGUgem9vbWluZywgc2NhbGUsIHBvc1ggYW5kIHBvc1kgbmVlZCB0byBzdGF5IHRpZ2h0
bHkgY291cGxlZCwgc28gdXNlIGEgc2VwYXJhdGUKKyAgICAvLyBkYXRhIHN0cnVjdHVyZS4KKyAg
ICBzdHJ1Y3QgWm9vbURhdGEgeworICAgICAgICBab29tRGF0YShTY3JvbGxBbmltYXRvck5vbmUq
IHBhcmVudCwgZmxvYXQqIGN1cnJlbnRTY2FsZSwgZmxvYXQqIGN1cnJlbnRQb3NYLCBmbG9hdCog
Y3VycmVudFBvc1kpOworICAgICAgICBib29sIGFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGlt
ZSk7CisKKyAgICAgICAgZmxvYXQqIG1fY3VycmVudFNjYWxlOworICAgICAgICBmbG9hdCogbV9j
dXJyZW50VHJhbnNYOworICAgICAgICBmbG9hdCogbV9jdXJyZW50VHJhbnNZOworCisgICAgICAg
IGRvdWJsZSBtX3N0YXJ0VGltZTsKKworICAgICAgICBkb3VibGUgbV9hbmltYXRpb25UaW1lOwor
ICAgICAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uVGltZTsKKworICAgICAgICBkb3VibGUgbV9z
dGFydFNjYWxlOworICAgICAgICBkb3VibGUgbV9kZXNpcmVkU2NhbGU7CisgICAgICAgIGRvdWJs
ZSBtX2Rlc2lyZWRUcmFuc1g7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFuc1k7CisgICAg
fTsKKwogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5v
bmU+Kik7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQg
dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIAogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERh
dGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAgWm9vbURhdGEgbV96b29t
RGF0YTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBUaW1lcjxTY3JvbGxBbmltYXRv
ck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAKaW5kZXggYzdhMzk5N2I1NTU4MjhjNDY2ZWNmZWE5ZDEzNjhmMTk3ZjgxMjlh
OC4uZGIxNTQ3ZmE4ZTI1YjA5MjI3NDc2MmFkY2U3NTE5ZGQ2ZmI4MGE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2
b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0
IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoc2Nyb2xs
QW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9CiAKK3ZvaWQgU2Nyb2xs
YWJsZUFyZWE6Onpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRv
dWJsZSwgYm9vbCkKK3sKKyAgICAvLyBSZXF1aXJlcyBGcmFtZVZpZXcgdG8gb3ZlcnJpZGUgdGhp
cy4KK30KKwogdm9pZCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgc2Nyb2xsQW5pbWF0b3IoKS0+aGFuZGxlV2hl
ZWxFdmVudCh3aGVlbEV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCmluZGV4IDViNTRjYmNjNGFiNjIzYjA4ZmZjNjRlYzU0OTU2NTcyNGYxMDNiNjUuLmM2Zjky
MjgyNGYxMTExZTg0NmNlYWUwZWUyZDFhN2Y5NTVkMTQ0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY3JvbGxUb1hPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0IHgpOwogICAgIHZvaWQgc2Ny
b2xsVG9ZT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihmbG9hdCB4KTsKIAorICAgIHZpcnR1YWwgdm9p
ZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGJv
b2wpOworCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYpOwog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICB2b2lkIGhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGQ2NGQwYjdjNDc2OGYxM2NlYmIwOGNhZWQzODEwNGMyOGFiZGVhZDYuLjcyNzdk
N2EyZmNlODg4ZGE3ZTBmZGZjMTc3YTlhMWI2Y2QwYjdhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDQs
NiArNDUsNyBAQAogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTUyLDYgKzU0LDEwIEBACiAjaW5jbHVk
ZSAiQ29sb3JDaG9vc2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
KyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3QgY2hhciogSW50ZXJuYWxzOjppbnRlcm5hbHNJZCA9ICJpbnRlcm5h
bHMiOwpAQCAtMjQ0LDE1ICsyNTAsNDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEZvcmNlQ29tcG9z
aXRpbmdNb2RlKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHQKICAgICBk
b2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZW5hYmxlZCk7CiB9
CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1lbnQgKmRv
Y3VtZW50LCBkb3VibGUgc2NhbGUsIGRvdWJsZSB0eCwgZG91YmxlIHR5LCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgSW50ZXJuYWxzOjpzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFk
b2N1bWVudCB8fCAhZG9jdW1lbnQtPnNldHRpbmdzKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkb2N1bWVudC0+c2V0
dGluZ3MoKS0+c2V0Wm9vbUFuaW1hdG9yU2NhbGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNjYWxlKSk7
Ci0gICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldFpvb21BbmltYXRvclBvc2l0aW9uKHN0YXRp
Y19jYXN0PGZsb2F0Pih0eCksIHN0YXRpY19jYXN0PGZsb2F0Pih0eSkpOworICAgIGRvY3VtZW50
LT5zZXR0aW5ncygpLT5zZXRFbmFibGVTY3JvbGxBbmltYXRvcihlbmFibGVkKTsKK30KKwordm9p
ZCBJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVudCAqZG9jdW1lbnQs
IGZsb2F0IHNjYWxlLCBmbG9hdCB0eCwgZmxvYXQgdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkgfHwgIWRvY3VtZW50LT52aWV3
KCktPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgUGxhdGZv
cm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlLCBJ
bnRQb2ludCh0eCwgdHkpLCBJbnRQb2ludCh0eCwgdHkpLCAwLCBzY2FsZSwgMC5mLCAwLCAwLCAw
LCAwKTsKKyAgICBkb2N1bWVudC0+dmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFu
ZGxlR2VzdHVyZUV2ZW50KHBnZSk7CisjZW5kaWYKK30KKworZmxvYXQgSW50ZXJuYWxzOjpnZXRQ
YWdlU2NhbGVGYWN0b3IoRG9jdW1lbnQgKmRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1
cm4gZG9jdW1lbnQtPnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKK3ZvaWQgSW50ZXJu
YWxzOjpzZXRab29tUGFyYW1ldGVycyhEb2N1bWVudCogZG9jdW1lbnQsIGZsb2F0IHNjYWxlLCBm
bG9hdCB4LCBmbG9hdCB5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50
IHx8ICFkb2N1bWVudC0+dmlldygpIHx8ICFkb2N1bWVudC0+dmlldygpLT5mcmFtZSgpKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+c2Nyb2xsQW5pbWF0b3IoKS0+dGVzdFpvb21QYXJhbWV0
ZXJzKHNjYWxlLCB4LCB5KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFBhc3N3b3JkRWNob0Vu
YWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNjdhMTg5OTQ5YTU2MjdlMmYyNzAy
ZjNhYThhZTBiN2U4YjJhODFmNy4uYWExNzZmZTg1ZTBjMDViNzg1ZWM3ZDcyOWQ0MTE1OTIzMjcz
ZTM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03Nyw3ICs3NywxMSBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCB1
bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZShEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZG91YmxlIHNjYWxlLCBkb3VibGUg
dHgsIGRvdWJsZSB0eSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCBzZXRFbmFibGVTY3Jv
bGxBbmltYXRvcihEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZmxvYXQgc2NhbGUsIGZs
b2F0IHR4LCBmbG9hdCB0eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIGZsb2F0IGdldFBhZ2VTY2Fs
ZUZhY3RvcihEb2N1bWVudCosICBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRab29tUGFy
YW1ldGVycyhEb2N1bWVudCosIGZsb2F0IHNjYWxlLCBmbG9hdCB4LCBmbG9hdCB5LCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1lbnQqLCBi
b29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1
cmF0aW9uSW5TZWNvbmRzKERvY3VtZW50KiwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzLCBFeGNl
cHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZDQ0MDBi
OWNkOTI4NDEwYzU0ZTlkZjA1Mzk0MmM4YzMwZjk4NzMxZS4uNDdkMGFlN2EwNzQzZDk2NTA0MjI3
NGIwYThkZjU5ZWZjNDg2Yjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtNTEsNyArNTEsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFJhbmdlIG1hcmtlclJh
bmdlRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoaW4g
RG9jdW1lbnQgZG9jdW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7Ci0gICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGluIERvY3VtZW50IGRv
Y3VtZW50LCBpbiBkb3VibGUgc2NhbGUsIGluIGRvdWJsZSB0eCwgaW4gZG91YmxlIHR5KSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihp
biBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oaW4gRG9jdW1lbnQg
ZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlLCBpbiBmbG9hdCB0eCwgaW4gZmxvYXQgdHkpIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgICAgICBmbG9hdCBnZXRQYWdlU2NhbGVGYWN0b3IoaW4gRG9j
dW1lbnQgZG9jdW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldFpv
b21QYXJhbWV0ZXJzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBmbG9hdCBzY2FsZSwgaW4gZmxv
YXQgeCwgaW4gZmxvYXQgeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCBz
ZXRQYXNzd29yZEVjaG9FbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVu
YWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNo
b0R1cmF0aW9uSW5TZWNvbmRzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgZHVyYXRp
b25JblNlY29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBjNmZmZmEwYWQ5NmE5ZDExMTQzMDY1MWQ5NDM5NmFmNWViMThlYzVjLi5hOGFiZjIy
ZDA1MGE4ZjhmMDFkZTMzZDhjY2JiZWIxMWUyYmIwYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTA5LTI5ICBXLiBKYW1lcyBNYWNMZWFuICA8d2pt
YWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFpvb20gYW5pbWF0b3Ig
ZnJvbnQtZW5kIFt3b3JrLWluLXByb2dyZXNzLCBub3QgZm9yIHJldmlldyB5ZXQgLi4uXQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwMzUKKworICAg
ICAgICBNb2RpZmljYXRpb25zIHRvIGdldCB6b29tIHRleHR1cmUtc2NhbGUgcGFyYW1ldGVycyBm
cm9tIFNjYWxlQW5pbWF0b3IgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVhZCBvZiB2aWEgU2V0dGlu
Z3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9v
dExheWVyTmVlZHNEaXNwbGF5KToKKwogMjAxMS0wOS0yOSAgSWFpbiBNZXJyaWNrICA8aHVza3lA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBBZGQgdW5pdCB0ZXN0IGZvciBDQ0xheWVyU29ydGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMDExMjU2YjYz
MjY4ZmEzN2I4Mjg5MDRiZDM5ZmUxNzE1OTZlNGEzMC4uOTNlNmJiNjgyYTk2NmY2MDZiYmEyODQw
YjY3MWE4MzhhODExZmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtOTMsNiArOTMsNyBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2lu
Y2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgpA
QCAtMjU2OCw4ICsyNTY5LDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNE
aXNwbGF5KCkKIHsKICAgICBpZiAobV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHpvb21NYXRyaXg7Ci0gICAgICAgIHpvb21NYXRyaXgudHJhbnNsYXRlKG1f
cGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yUG9zWCgpLCBtX3BhZ2UtPnNldHRpbmdzKCkt
Pnpvb21BbmltYXRvclBvc1koKSk7Ci0gICAgICAgIHpvb21NYXRyaXguc2NhbGUobV9wYWdlLT5z
ZXR0aW5ncygpLT56b29tQW5pbWF0b3JTY2FsZSgpKTsKKyAgICAgICAgRmxvYXRQb2ludCB0cmFu
cyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Nyb2xsQW5pbWF0b3IoKS0+em9vbVRy
YW5zbGF0aW9uKCk7CisgICAgICAgIHpvb21NYXRyaXgudHJhbnNsYXRlKHRyYW5zLngoKSwgdHJh
bnMueSgpKTsKKyAgICAgICAgem9vbU1hdHJpeC5zY2FsZShtX3BhZ2UtPm1haW5GcmFtZSgpLT52
aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnpvb21TY2FsZSgpKTsKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oem9vbU1hdHJpeCk7CiAgICAgfQogI2lm
IFVTRShUSFJFQURFRF9DT01QT1NJVElORykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109232</attachid>
            <date>2011-09-29 18:32:22 -0700</date>
            <delta_ts>2011-09-30 06:20:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20110929213052.patch</filename>
            <type>text/plain</type>
            <size>31814</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzNDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzOTcyNmRiYTRiYzBiMjNhZTM5ZmJl
MDJlNTQyN2ZlNjY4M2Q0MzA4Li43MmQ0NGFjNTk1OTgwYTY2NTI0N2E0Y2M5YjI2YWM0YzdmNGQy
YzNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMjkgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2aWV3IHlldCAuLi5d
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20t
YW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDktMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBXZSBzaG91
bGQgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgR2V0UmVhbE5hbWVkUHJvcGVydHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJv
bWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNDQ2NmI4YjU1ZjQ4NzAzMTBkN2RlZGZlMDJhYzMwN2YzYWU4MWFkCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMzMzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllW
MmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UIXRoQQp6dnNDam1PVCpOKEckVmBUcXxfOCsz
ajxUalIxO0grUkFVUGheUihDLUtiI3BEYyYyOzBJRUdacmQzKk9AdTJlTEcKekwqUnhOamI8d2oz
VkI7Q25Fdjlzaz9hTjtPO2FDZnlAdVEkLTdYVlQzdjZ6ZkpLbEp7cnRQNiZtR3RUR19sQWMqCnpt
MDBPQUZ3OTdsSWxnQFBeNlUzdipJJlE9d3JwZD5udHU8Y0ZmaEVrVlppaElaezR7V09HUn1VOHE5
a2l8MHBpYQp6SShNUmR6cFhTd2dafjQ1PipuWG10WVFvZkpfKEVyTV85eGQ0cHszPktpJk50RDBI
Q3UmempaVXl7YTErN31rQjsKenYtK0kwSCY5ODteRjFyIz02cVpiJGs2YjUmcmdYIT9GYUAyISR3
dkgwYnZtMXt5YD4mOEwxTCZHZUpmaygzeVFVCno/YzlkVVN2aTdDVjU4eDdQe0loP0s5N09uSzwk
aVduYUAwY184T2VkK2lxPU5YKEphdT1qWHFfeUxGdXk4ZkZ8fAp6Vig4IW1kVWxrN0g0dHZSeCtj
NnN7cStCNyt2Z24kRlpvcnI+I0dSRTFGSkEjRyQlMX1HYnBIeUdEWlZ8UClnWGcKej5ucUU8bFBf
PC15Y1BeQlZqNGgyMypCP3UrQntvRWhLQXE4N0JjaHAqOHN1NEFXLT5+eVohY0c4dzxKcT1rSVNS
Cnp1YHFOKjAheVNGdiV0anloXlJsczF1VTRaZj1lVjJAaDVtUiQmY3B5KEsycyU8YnVgRnt0T0hj
Pn0yQGJZMWpZKAp6d3ZpfWx6bD5eIXZAOz1MaHwhdj4rZHRucE19alQ3MS1WJVhZRn5hPEVlQUZe
Yio3KkdKYkMlJG0pfCNucytgdzAKemA3NjhBTDU8ZHteVGUtSz03U28yLSskWjtlT3xnJTBONU9U
VSQkfGI3JHt8ezFEaURXdyNCVn4tWSlfYSZjQl92Cnp7ams5diVOJldld2BJRilhXkRMdUc+OUs3
dGZ7SzFkVkJZNCkhd14jO0B3QnJBTmNoLWdQfiNsJVd+dGApVTZSWgp6WkhZSkRmNndRV1pBO3ZJ
YjVDO0dXZlAjKkApYGpLeVAxYXtlJU0jUD48e2x7bGUwYnhFRHo3Q21OQD9MKV9EZW8KejhkK2Vv
VGp1eWB5SDUkfTB0XnEldVkwPlJ7SnFraUFLR21VNEQpWHNjSytQWmRPQUVYezZpKSV4bkFkRXUk
VWZsCnpxNGh2ZUlLelNQWnkme35CcUxzTkYobUIjYjc4WW54UElKeHp2Y1RjTWpVQF54TD9pU0Bf
WUxPcFAzby1lbSQ2Ywp6THFBOGJZTVY4fmhwRHhEVEpgRXIjd0goSntfKTM7QUdhNzhvPUBWY2BX
b2xiJWdSdD1ZRzMhcVc4TFFzYXFBfkAKekdjd2VLVUheOUphTV5Dend1a3k+KiUlKCY8Ml92UF9Q
eT1AVTk1I04/KXpzbEdraUV5d1JoalBiejxFfHw5P0ZCCldAVCNJVyVXK2A4aFFaVS0mdDt1Y0xL
NlQpSSNzT3oKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5o
dG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmlt
YXRvci1zY2FsZS10ZXN0Lmh0bWwKaW5kZXggZTFiYWM5ZWI3MzRkOWU4N2NjNzI4YjY4ZDBhMWQ0
OWYwNGQzZWU5NC4uNmQzODhmMzIxNzYxOTkzN2RlNzA1MTQ0NjVjMjUzODk2NjU3Yzc3MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1h
bmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKQEAgLTMsNyArMyw3
IEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAg
ICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZG9jdW1lbnQs
IHRydWUpOwotICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oZG9jdW1lbnQsIDEuMjUsIC0yNS4wLCAtMjUuMCk7CisgICAgICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldFpvb21QYXJhbWV0ZXJzKGRvY3VtZW50LCAxLjI1LCAxMDAsIDEwMCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAg
ICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29t
LWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBA
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Zjc1OWEzMjJlZWUxMzAyMTZjNjRlY2IxNWNlNWRhY2VlZDY3NGQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1h
bmltYXRvci1zY2FsZS10ZXN0Mi5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorICA8aGVh
ZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXRFbmFibGVTY3JvbGxBbmltYXRvcihkb2N1bWVudCwg
dHJ1ZSk7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKGRvY3VtZW50LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0aW1lcjsK
KworICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgaWYgKCF3aW5k
b3cuaW50ZXJuYWxzIHx8ICh3aW5kb3cuaW50ZXJuYWxzLmdldFBhZ2VTY2FsZUZhY3Rvcihkb2N1
bWVudCkgPT0gMS4yNSkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cg
PSAiaGlkZGVuIjsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
ZG9UZXN0KCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFCb3giKS5z
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiZ3JlZW4iOworICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybShkb2N1bWVudCwgMS4yNSwgMTAwLjAsIDEwMC4wKTsKKyAgICAgICAgICAg
ICAgICAvLyBDaGVjayBldmVyeSAxMDAgbVMgZm9yIGFuaW1hdGlvbiBjb21wbGV0aW9uLgorICAg
ICAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoImZpbmlzaFRlc3QoKSIsIDI1MCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+Cis8Ym9k
eSBpZD0idGhlQm9keSI+CisgIDwhLS0gICAgSWYgc3VjY2Vzc2Z1bCwgdGhlIGJveCBzaG91bGQg
ZW5sYXJnZSB0byBiZSAxMjV4MTI1IGF0ICgxMjUsMTI1KS4KKyAgICAtLT4KKyAgPGRpdiBpZD0i
YUJveCIgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6MTAwcHg7IHBvc2l0aW9uOmFic29sdXRl
OyBsZWZ0OjEwMHB4OyB0b3A6MTAwcHg7IGJhY2tncm91bmQtY29sb3I6I0ZGMDAwMCI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggY2QzODYzZDNkOTY0MTY0MGFhYzBhOGY0NmVk
ZDI3ZWQ1ZTE5YjFjOS4uZjc1NmI5MjFjNmQ2YzA3ZTE0YmM4Zjk0N2Q3MDRlMDcyZTA3NDEzZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dApAQCAtMjY2MSw2ICsyNjYxLDggQEAgQlVHV0s1NTk2OCBXSU4gREVCVUcgR1BVIDog
Y29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlwbGllZC1ibGVuZC5odG1sID0KIEJV
R1dLNTg1ODcgTElOVVggR1BVIERFQlVHIDogbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5n
Lmh0bWwgPSBJTUFHRQogQlVHQ1I5NzY4NiBMSU5VWCBHUFUgUkVMRUFTRSA6IG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLXJlbmRlcmluZy5odG1sID0gSU1BR0UKIAorQlVHV0t4eHh4eCBNQUMgV0lOIEdQ
VSBHUFUtQ0cgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLmh0bWwgPSBJTUFHRQorCiBCVUdDUjcyMjIzIDogbWVkaWEvdmlkZW8tZnJhbWUt
YWNjdXJhdGUtc2Vlay5odG1sID0gUEFTUyBJTUFHRQogCiBCVUdXSzUzODY4IDogZmFzdC9ub3Rp
ZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG9jdW1lbnQtY2xvc2UtY3Jhc2guaHRtbCA9IFBBU1Mg
VEVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDhkMzJjMWIyYmVlYTFmZWYxNGFlYzY0ZTMzNDI0Y2Y5NzkzMTVm
MjcuLjg4MmE3NDcxMjA0MjJkN2Y5ZDViMzkzM2ZiZmViNTAyODc5YWY4NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NCBAQAorMjAxMS0wOS0yOSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBab29tIGFuaW1hdG9yIGZyb250
LWVuZCBbd29yay1pbi1wcm9ncmVzcywgbm90IGZvciByZXZpZXcgeWV0IC4uLl0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDM1CisKKyAgICAgICAg
QWRkcyBuZWNlc3NhcnkgY29tcG9uZW50cyB0byBTY3JvbGxBbmltYXRvck5vbmUgdG8gc3VwcG9y
dCBhIHpvb20gYW5pbWF0aW9uCisgICAgICAgIGZlYXR1cmUuIEluY2x1ZGVzIHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdmlhIHRlc3RpbmcvSW50ZXJuYWxzIHRvIGNhcHR1cmUKKyAgICAgICAgaW4tcHJv
Z3Jlc3MgdGV4dHVyZSBzY2FsaW5nICh6b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbCkgYXMg
d2VsbCBhcyBhCisgICAgICAgIGZpbmFsIHZpZXcgLS0tIGFmdGVyIHBhZ2VTY2FsZUZhY3RvciBo
YXMgYmVlbiBhcHBsaWVkIC0tLSBpbiB6b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwuCisK
KyAgICAgICAgUmVtb3ZlcyB0ZW1wb3JhcnkgdGVzdCBmaWVsZHMgZnJvbSBTZXR0aW5ncy4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBwbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwK
KworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Onpvb21BbmltYXRvclRyYW5zZm9y
bUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9T
ZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVpvb21DaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp6b29tVHJhbnNsYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnJlc2V0Wm9vbSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6dGVzdFpvb21QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
Onpvb21TY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6Olpvb21EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6OmFuaW1h
dGVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6U2Nyb2xsQW5p
bWF0b3JOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVy
RmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGFibGVBcmVhOjp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRab29tUGFyYW1ldGVycyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MTEtMDktMjkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNo
cmluayBGb250RmFsbGJhY2tMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmlu
ZGV4IDQyOWI5MjBlNjNiNmIwOTg2ZTIyYWJmMGQ1ODA4ZGViNDE4NWJjNzkuLjkyYWI4NGNlNjEy
ZTNiODExYWNhM2EyOGU5NjFkNjBhOGM0OGEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKQEAgLTIyMjUsOCArMjIyNSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAg
ICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFw
VHlwZToKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Ny
b2xsVXBkYXRlVHlwZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9h
dClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJlcGxhY2Ug
dGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVu
IGFkZHJlc3NlZC4KQEAgLTIyMzYsNiArMjIzNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkK
ICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJs
ZVRhcFR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBl
OgogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAg
IEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCBkMTIzMzE4MWEyYWY1N2IzNThmMWQyNjE3YzRlOGEyM2UxMzQ5ODczLi4xMzc1
OThkNzNjMWIwOWM5YjNmNTY0ZjhjODAwMTUxZTU4ZWYzYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC0xMjIwLDYgKzEyMjAsMjIgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVdp
ZGdldFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0KiBvYmplY3QpCiAgICAgbV93aWRnZXRV
cGRhdGVTZXQtPnJlbW92ZShvYmplY3QpOwogfQogCit2b2lkIEZyYW1lVmlldzo6em9vbUFuaW1h
dG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSwgYm9v
bCBpc0ZpbmlzaGVkKQoreworICAgIGlmIChpc0ZpbmlzaGVkKSB7CisgICAgICAgIG1fcGFnZS0+
c2V0UGFnZVNjYWxlRmFjdG9yKG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgKiBzY2FsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQoc2NhbGUgKiBzY3Jv
bGxYKCkgLSB4LCBzY2FsZSAqIHNjcm9sbFkoKSAtIHkpKTsKKyAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS0+cmVzZXRab29tKCk7CisgICAgfQorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gcm9vdFJlbmRlcmVyKHRoaXMpKSB7Cisg
ICAgICAgIGlmIChyb290LT51c2VzQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgICAgIHJvb3QtPmNv
bXBvc2l0b3IoKS0+c2NoZWR1bGVMYXllckZsdXNoKCk7CisgICAgfQorI2VuZGlmCit9CisKIHZv
aWQgRnJhbWVWaWV3OjpzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAg
ICAgbV9tZWRpYVR5cGUgPSBtZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA0
NDJlMDhjYWJlMTA0NjdlYWRlZmM5ZTZlZTYyNGVlZTVmYWZkOGM3Li45MTExYjE2NmYwYjQzMTNm
ZmEwZjZjOGFmM2QwNDQ5NGIyYWY4NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE3
MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRGaXhlZEVsZW1l
bnRzQWZ0ZXJTY3JvbGxpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZElu
RGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9v
bUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBib29sKTsK
KwogICAgIFN0cmluZyBtZWRpYVR5cGUoKSBjb25zdDsKICAgICB2b2lkIHNldE1lZGlhVHlwZShj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nKGJvb2wg
cHJpbnRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBkN2UwMGQxYzdkYTYyN2Qx
YTdmYTViNGFiZTI2ZWEwYmI5MDA5YjA0Li5lMDQxY2YwM2Y1NmVkODgwMzZiZDdmMWFjOTcyMzdi
NTg0M2IwZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMjE4LDkgKzIxOCw2IEBA
IFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9tZWRpYVBsYXliYWNrQWxs
b3dzSW5saW5lKHRydWUpCiAgICAgLCBtX3Bhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpCiAgICAg
LCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKLSAgICAsIG1fem9vbUFuaW1hdG9yU2NhbGUo
MSkKLSAgICAsIG1fem9vbUFuaW1hdG9yUG9zWCgwKQotICAgICwgbV96b29tQW5pbWF0b3JQb3NZ
KDApCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28g
d2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWlu
ZyB0byB1c2UgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggZGI3MzY0OGQ0YTEwYjliMmRj
ZjU1NDQyYjkyN2ExOWY4YjBmYjFjMC4uNGIwY2ZiZjhmYjY4OGY5NmNlNGE4NDMwYWIyOGRmODdl
OTdhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNDMyLDEzICs0MzIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9v
bCBmbGFnKSB7IG1fZm9yY2VDb21wb3NpdGluZ01vZGUgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wg
Zm9yY2VDb21wb3NpdGluZ01vZGUoKSB7IHJldHVybiBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShmbG9hdCBzY2FsZSkgeyBtX3pv
b21BbmltYXRvclNjYWxlID0gc2NhbGU7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yU2Nh
bGUoKSB7IHJldHVybiBtX3pvb21BbmltYXRvclNjYWxlOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRa
b29tQW5pbWF0b3JQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5KSB7IG1fem9vbUFuaW1hdG9yUG9z
WCA9IHg7IG1fem9vbUFuaW1hdG9yUG9zWSA9IHk7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1h
dG9yUG9zWCgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWDsgfQotICAgICAgICBmbG9hdCB6
b29tQW5pbWF0b3JQb3NZKCkgeyByZXR1cm4gbV96b29tQW5pbWF0b3JQb3NZOyB9Ci0KICAgICAg
ICAgdm9pZCBzZXRTaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQo
Ym9vbCBmbGFnKSB7IG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3Vt
ZW50ID0gZmxhZzsgfQogICAgICAgICBib29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0
aWFsRW1wdHlEb2N1bWVudCgpIHsgcmV0dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbklu
aXRpYWxFbXB0eURvY3VtZW50OyB9CiAKQEAgLTYwNywxMCArNjAwLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2VuZGlmCiAgICAgICAgIHN0YXRpYyBib29sIGdNb2NrU2Nyb2xsYmFyc0VuYWJs
ZWQ7CiAKLSAgICAgICAgZmxvYXQgbV96b29tQW5pbWF0b3JTY2FsZTsKLSAgICAgICAgZmxvYXQg
bV96b29tQW5pbWF0b3JQb3NYOwotICAgICAgICBmbG9hdCBtX3pvb21BbmltYXRvclBvc1k7Ci0K
ICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnRO
YXRpdmVDb250cm9sczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwCmluZGV4IDU1MzhlZmRkMWFjZDlkMTNjZjI4NmM2ZGFkMDUxZTE4OGYxM2U3M2Eu
LjUyZTFhYTBiNDRkOWU2MmM1Njk1YmY5OGVmMTQ5ZTJkNmE5ZDZjMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTUyLDYgKzUyLDkgQEAgU2Nyb2xs
QW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkK
ICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2N1cnJlbnRQ
b3NYKDApCiAgICAgLCBtX2N1cnJlbnRQb3NZKDApCisgICAgLCBtX2N1cnJlbnRab29tU2NhbGUo
MSkKKyAgICAsIG1fY3VycmVudFpvb21UcmFuc1goMCkKKyAgICAsIG1fY3VycmVudFpvb21UcmFu
c1koMCkKIHsKIH0KIApAQCAtMTI5LDQgKzEzMiwyOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoKQogICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldFNjcm9sbE9m
ZnNldEZyb21BbmltYXRpb24oSW50UG9pbnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50UG9zWSkp
OwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlab29tQ2hhbmdlZChib29sIGlzRmlu
aXNoZWQpCit7CisgICAgbV9zY3JvbGxhYmxlQXJlYS0+em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hh
bmdlZChtX2N1cnJlbnRab29tU2NhbGUsIG1fY3VycmVudFpvb21UcmFuc1gsIG1fY3VycmVudFpv
b21UcmFuc1ksIGlzRmluaXNoZWQpOworfQorCitGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjp6
b29tVHJhbnNsYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBGbG9hdFBvaW50KG1fY3VycmVu
dFpvb21UcmFuc1gsIG1fY3VycmVudFpvb21UcmFuc1kpOworfQorCit2b2lkIFNjcm9sbEFuaW1h
dG9yOjpyZXNldFpvb20oKQoreworICAgIG1fY3VycmVudFpvb21TY2FsZSA9IDE7CisgICAgbV9j
dXJyZW50Wm9vbVRyYW5zWCA9IDA7CisgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7Cit9CisK
K3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnRlc3Rab29tUGFyYW1ldGVycyhmbG9hdCBzY2FsZSwgZmxv
YXQgeCwgZmxvYXQgeSkKK3sKKyAgICBtX2N1cnJlbnRab29tU2NhbGUgPSBzY2FsZTsKKyAgICBt
X2N1cnJlbnRab29tVHJhbnNYID0gKDEgLSBzY2FsZSkgKiB4OworICAgIG1fY3VycmVudFpvb21U
cmFuc1kgPSAoMSAtIHNjYWxlKSAqIHk7CisgICAgbm90aWZ5Wm9vbUNoYW5nZWQoZmFsc2UpOyAv
LyBEb24ndCBsZXQgcGFnZSByZS1zY2FsZS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNjY3MzgxYjMxMWQ5
MmY1NTk4YzE3ZTIyNGMwYmUwYzU2NjQ1NTFiNi4uYjU2ZTMzM2MzY2EzYmYwMWQzZDU2YzgzOTVh
MmZhMDEyODRjNmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5o
CkBAIC04NywxNCArODcsMjQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVt
b3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KIAorICAgIGZsb2F0IHpvb21T
Y2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFpvb21TY2FsZTsgfQorICAgIEZsb2F0UG9p
bnQgem9vbVRyYW5zbGF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0Wm9vbSgp
OworICAgIHZpcnR1YWwgdm9pZCB0ZXN0Wm9vbVBhcmFtZXRlcnMoZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CisKIHByb3RlY3RlZDoKICAgICBTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSopOwog
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZCgpOworICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlab29tQ2hhbmdlZChib29sKTsKIAogICAgIFNjcm9sbGFibGVBcmVhKiBtX3Nj
cm9sbGFibGVBcmVhOwogICAgIGZsb2F0IG1fY3VycmVudFBvc1g7IC8vIFdlIGF2b2lkIHVzaW5n
IGEgRmxvYXRQb2ludCBpbiBvcmRlciB0byByZWR1Y2UKICAgICBmbG9hdCBtX2N1cnJlbnRQb3NZ
OyAvLyBzdWJjbGFzcyBjb2RlIGNvbXBsZXhpdHkuCisKKyAgICBmbG9hdCBtX2N1cnJlbnRab29t
U2NhbGU7CisgICAgZmxvYXQgbV9jdXJyZW50Wm9vbVRyYW5zWDsKKyAgICBmbG9hdCBtX2N1cnJl
bnRab29tVHJhbnNZOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggOWEzOWRkMjViOTMw
NGYzYzU0ZGM2MGU4ZTJlYWU3YjlmYzQ0MTM2OS4uMWVjMmMxNmQ2MWZmOTRjNjMzZDE5OGI3YTk2
OTIyZjRjNmJmZDhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvck5vbmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQdHIuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVh
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50Lmgi
CkBAIC0zNjYsMTAgKzM2NywzNiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0Rh
dGE6OnVwZGF0ZVZpc2libGVMZW5ndGgoTGF5b3V0VW5pdCB2aXNpYmxlTGVuZwogICAgIG1fdmlz
aWJsZUxlbmd0aCA9IHZpc2libGVMZW5ndGg7CiB9CiAKK1Njcm9sbEFuaW1hdG9yTm9uZTo6Wm9v
bURhdGE6Olpvb21EYXRhKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZSogcGFyZW50LCBmbG9h
dCogc2NhbGUsIGZsb2F0KiB0cmFuc1gsIGZsb2F0KiB0cmFuc1kpCisgICAgOiBtX2N1cnJlbnRT
Y2FsZShzY2FsZSkKKyAgICAsIG1fY3VycmVudFRyYW5zWCh0cmFuc1gpCisgICAgLCBtX2N1cnJl
bnRUcmFuc1kodHJhbnNZKQoreworfQorCitib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURh
dGE6OmFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSkKK3sKKyAgICBtX2xhc3RBbmltYXRp
b25UaW1lID0gY3VycmVudFRpbWU7CisgICAgZG91YmxlIGRlbHRhVGltZSA9IGN1cnJlbnRUaW1l
IC0gbV9zdGFydFRpbWU7CisKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25UaW1lKSB7
CisgICAgICAgICptX2N1cnJlbnRTY2FsZSA9IG1fZGVzaXJlZFNjYWxlOworICAgICAgICAqbV9j
dXJyZW50VHJhbnNYID0gbV9kZXNpcmVkVHJhbnNYOworICAgICAgICAqbV9jdXJyZW50VHJhbnNZ
ID0gbV9kZXNpcmVkVHJhbnNZOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Km1fY3VycmVudFNjYWxlID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogKG1fZGVzaXJl
ZFNjYWxlIC0gbV9zdGFydFNjYWxlKSArIG1fc3RhcnRTY2FsZTsKKyAgICAqbV9jdXJyZW50VHJh
bnNYID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogbV9kZXNpcmVkVHJhbnNYOworICAg
ICptX2N1cnJlbnRUcmFuc1kgPSBkZWx0YVRpbWUgLyBtX2FuaW1hdGlvblRpbWUgKiBtX2Rlc2ly
ZWRUcmFuc1k7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFNjcm9sbEFuaW1hdG9yTm9uZTo6U2Ny
b2xsQW5pbWF0b3JOb25lKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNj
cm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9ob3Jpem9udGFsRGF0YSh0aGlz
LCAmbV9jdXJyZW50UG9zWCwgc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpKQogICAgICwg
bV92ZXJ0aWNhbERhdGEodGhpcywgJm1fY3VycmVudFBvc1ksIHNjcm9sbGFibGVBcmVhLT52aXNp
YmxlSGVpZ2h0KCkpCisgICAgLCBtX3pvb21EYXRhKHRoaXMsICZtX2N1cnJlbnRab29tU2NhbGUs
ICZtX2N1cnJlbnRab29tVHJhbnNYLCAmbV9jdXJyZW50Wm9vbVRyYW5zWSkKICAgICAsIG1fYW5p
bWF0aW9uVGltZXIodGhpcywgJlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJl
ZCkKIHsKIH0KQEAgLTQzNSw2ICs0NjIsNTkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNj
cm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQKICAg
ICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
Onpvb20oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKK3sKKyAgICBBU1NFUlQocGdl
LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSk7CisgICAgLy8g
RklYTUUod2ptYWNsZWFuKTogbW9kaWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhl
IHRpbWVyIGlzIGFjdGl2ZS4KKyAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkg
eworICAgICAgICBtX2N1cnJlbnRab29tU2NhbGUgPSAxOworICAgICAgICBtX2N1cnJlbnRab29t
VHJhbnNYID0gMDsKKyAgICAgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7CisKKyAgICAgICAg
ZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsK
KyAgICAgICAgZmxvYXQgc2NhbGUgPSBwZ2UuZGVsdGFYKCk7CisKKyAgICAgICAgbV96b29tRGF0
YS5tX3N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lIC0ga1RpY2tUaW1lIC8gMjsKKyAgICAgICAgbV96
b29tRGF0YS5tX3N0YXJ0U2NhbGUgPSBtX2N1cnJlbnRab29tU2NhbGU7CisgICAgICAgIG1fem9v
bURhdGEubV9kZXNpcmVkU2NhbGUgPSBzY2FsZTsKKyAgICAgICAgLy8gRklYTUUod2ptYWNsZWFu
KSBEb2N1bWVudCB0aGVuIHNpbXBsaWZ5IHRoZSBmb2xsb3dpbmcgZXF1YXRpb25zLgorICAgICAg
ICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWCA9ICgxIC0gc2NhbGUpICogcGdlLmdsb2JhbFBv
c2l0aW9uKCkueCgpOworICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWSA9ICgxIC0g
c2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueSgpOworI2lmIEVOQUJMRShET1VCTEVfVEFQ
X0NFTlRFUlMpCisgICAgICAgIGlmIChwZ2UudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpEb3VibGVUYXBUeXBlKSB7CisgICAgICAgICAgICAvLyBab29tIHRvIGNlbnRyZSBvZiBkaXNw
bGF5LiBQaW5jaC10by16b29tIG1heSBub3Qgd2FudCB0aGlzIGJlaGF2aW91ci4KKyAgICAgICAg
ICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNYICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2li
bGVXaWR0aCgpIC8gMiAtIHBnZS5nbG9iYWxQb3NpdGlvbigpLngoKTsKKyAgICAgICAgICAgIG1f
em9vbURhdGEubV9kZXNpcmVkVHJhbnNZICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWln
aHQoKSAvIDIgLSBwZ2UuZ2xvYmFsUG9zaXRpb24oKS55KCk7CisgICAgICAgIH0KKyNlbmRpZgor
ICAgICAgICBtX3pvb21EYXRhLm1fbGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKyAg
ICAgICAgbV96b29tRGF0YS5tX2FuaW1hdGlvblRpbWUgPSA1MCAqIGtUaWNrVGltZTsKKworICAg
ICAgICBib29sIGlzQ29udGludWluZyA9IG1fem9vbURhdGEuYW5pbWF0ZVpvb20oY3VycmVudFRp
bWUpOworCisgICAgICAgIGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRp
bWUgLSBtX3N0YXJ0VGltZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRp
bWUgLSBtX3N0YXJ0VGltZSk7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9IG1h
eChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICBpZiAo
aXNDb250aW51aW5nKQorICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qo
bmV4dFRpbWVySW50ZXJ2YWwpOworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghaXNDb250aW51
aW5nKTsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9s
bEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JiBwZ2UpCit7CisgICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICAgICAgem9vbShwZ2UpOworICAgICAg
ICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRPRE86IGFkZCBhbnkgb3RoZXIg
ZXZlbnQgdHlwZXMgd2Ugc2hvdWxkIGhhbmRsZQorICAgICAgICB7IH0KKyAgICB9Cit9CisjZW5k
aWYKKwogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAg
ICB1cGRhdGVWaXNpYmxlTGVuZ3RocygpOwpAQCAtNDY2LDYgKzU0NiwxMyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5v
bmU+KiB0aW1lcikKICAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwogICAgIGlmICht
X3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xs
KGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpCiAgICAgICAgIGNvbnRpbnVlQW5pbWF0
aW9uID0gdHJ1ZTsKKworICAgIGlmIChtX3pvb21EYXRhLm1fc3RhcnRUaW1lICYmIG1fem9vbURh
dGEuYW5pbWF0ZVpvb20oY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkgeworICAgICAg
ICBjb250aW51ZUFuaW1hdGlvbiA9IHRydWU7CisgICAgICAgIG5vdGlmeVpvb21DaGFuZ2VkKCFj
b250aW51ZUFuaW1hdGlvbik7CisgICAgfSBlbHNlCisgICAgICAgIG5vdGlmeVpvb21DaGFuZ2Vk
KHRydWUpOworCiAgICAgaWYgKGNvbnRpbnVlQW5pbWF0aW9uKSB7CiAgICAgICAgIGRvdWJsZSBu
ZXh0VGltZXJJbnRlcnZhbCA9IG1heChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0
RnJhbWUpOwogICAgICAgICB0aW1lci0+c3RhcnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggMGMw
ZWIxNmExZmY5NDEyMWU0NzM4NTlmZmFkOGZhNTZkMTgxOWZmZS4uZTUyNDExZTQwN2JmOTViYTFh
MWFmZTExNzQ4NzAwZjc4Yzc1MzliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3JOb25lLmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9h
dCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAorICAgIHZpcnR1YWwgdm9p
ZCB6b29tKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworCiAgICAgdmly
dHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFZl
cnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwpAQCAtMTI3LDEyICsxMzAsMzQgQEAgcHJvdGVj
dGVkOgogICAgICAgICBMYXlvdXRVbml0IG1fdmlzaWJsZUxlbmd0aDsKICAgICB9OwogCisgICAg
Ly8gV2hpbGUgem9vbWluZywgc2NhbGUsIHBvc1ggYW5kIHBvc1kgbmVlZCB0byBzdGF5IHRpZ2h0
bHkgY291cGxlZCwgc28gdXNlIGEgc2VwYXJhdGUKKyAgICAvLyBkYXRhIHN0cnVjdHVyZS4KKyAg
ICBzdHJ1Y3QgWm9vbURhdGEgeworICAgICAgICBab29tRGF0YShTY3JvbGxBbmltYXRvck5vbmUq
IHBhcmVudCwgZmxvYXQqIGN1cnJlbnRTY2FsZSwgZmxvYXQqIGN1cnJlbnRQb3NYLCBmbG9hdCog
Y3VycmVudFBvc1kpOworICAgICAgICBib29sIGFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGlt
ZSk7CisKKyAgICAgICAgZmxvYXQqIG1fY3VycmVudFNjYWxlOworICAgICAgICBmbG9hdCogbV9j
dXJyZW50VHJhbnNYOworICAgICAgICBmbG9hdCogbV9jdXJyZW50VHJhbnNZOworCisgICAgICAg
IGRvdWJsZSBtX3N0YXJ0VGltZTsKKworICAgICAgICBkb3VibGUgbV9hbmltYXRpb25UaW1lOwor
ICAgICAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uVGltZTsKKworICAgICAgICBkb3VibGUgbV9z
dGFydFNjYWxlOworICAgICAgICBkb3VibGUgbV9kZXNpcmVkU2NhbGU7CisgICAgICAgIGRvdWJs
ZSBtX2Rlc2lyZWRUcmFuc1g7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFuc1k7CisgICAg
fTsKKwogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5v
bmU+Kik7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQg
dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIAogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERh
dGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAgWm9vbURhdGEgbV96b29t
RGF0YTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBUaW1lcjxTY3JvbGxBbmltYXRv
ck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAKaW5kZXggYzdhMzk5N2I1NTU4MjhjNDY2ZWNmZWE5ZDEzNjhmMTk3ZjgxMjlh
OC4uZGIxNTQ3ZmE4ZTI1YjA5MjI3NDc2MmFkY2U3NTE5ZGQ2ZmI4MGE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2
b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0
IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoc2Nyb2xs
QW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9CiAKK3ZvaWQgU2Nyb2xs
YWJsZUFyZWE6Onpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRv
dWJsZSwgYm9vbCkKK3sKKyAgICAvLyBSZXF1aXJlcyBGcmFtZVZpZXcgdG8gb3ZlcnJpZGUgdGhp
cy4KK30KKwogdm9pZCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgc2Nyb2xsQW5pbWF0b3IoKS0+aGFuZGxlV2hl
ZWxFdmVudCh3aGVlbEV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCmluZGV4IDViNTRjYmNjNGFiNjIzYjA4ZmZjNjRlYzU0OTU2NTcyNGYxMDNiNjUuLmM2Zjky
MjgyNGYxMTExZTg0NmNlYWUwZWUyZDFhN2Y5NTVkMTQ0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY3JvbGxUb1hPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0IHgpOwogICAgIHZvaWQgc2Ny
b2xsVG9ZT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihmbG9hdCB4KTsKIAorICAgIHZpcnR1YWwgdm9p
ZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGJv
b2wpOworCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYpOwog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICB2b2lkIGhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGQ2NGQwYjdjNDc2OGYxM2NlYmIwOGNhZWQzODEwNGMyOGFiZGVhZDYuLjUwNGUx
NjRmMzk3NWIxOTEzZjljYmJjYWJiZmFkYzFiNTNjN2VhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDQs
NiArNDUsNyBAQAogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTUyLDYgKzU0LDEwIEBACiAjaW5jbHVk
ZSAiQ29sb3JDaG9vc2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
KyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3QgY2hhciogSW50ZXJuYWxzOjppbnRlcm5hbHNJZCA9ICJpbnRlcm5h
bHMiOwpAQCAtMjQ0LDE1ICsyNTAsNDkgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEZvcmNlQ29tcG9z
aXRpbmdNb2RlKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHQKICAgICBk
b2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZW5hYmxlZCk7CiB9
CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1lbnQgKmRv
Y3VtZW50LCBkb3VibGUgc2NhbGUsIGRvdWJsZSB0eCwgZG91YmxlIHR5LCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgSW50ZXJuYWxzOjpzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFk
b2N1bWVudCB8fCAhZG9jdW1lbnQtPnNldHRpbmdzKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkb2N1bWVudC0+c2V0
dGluZ3MoKS0+c2V0Wm9vbUFuaW1hdG9yU2NhbGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNjYWxlKSk7
Ci0gICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldFpvb21BbmltYXRvclBvc2l0aW9uKHN0YXRp
Y19jYXN0PGZsb2F0Pih0eCksIHN0YXRpY19jYXN0PGZsb2F0Pih0eSkpOworI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQorICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRFbmFibGVTY3Jv
bGxBbmltYXRvcihlbmFibGVkKTsKKyNlbmRpZgorfQorCit2b2lkIEludGVybmFsczo6c2V0Wm9v
bUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50ICpkb2N1bWVudCwgZmxvYXQgc2NhbGUsIGZsb2F0
IHR4LCBmbG9hdCB0eSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8
fCAhZG9jdW1lbnQtPnZpZXcoKSB8fCAhZG9jdW1lbnQtPnZpZXcoKS0+ZnJhbWUoKSkgeworICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCBwZ2Uo
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUsIEludFBvaW50KHR4LCB0eSksIElu
dFBvaW50KHR4LCB0eSksIDAsIHNjYWxlLCAwLmYsIDAsIDAsIDAsIDApOworICAgIGRvY3VtZW50
LT52aWV3KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQocGdl
KTsKKyNlbmRpZgorfQorCitmbG9hdCBJbnRlcm5hbHM6OmdldFBhZ2VTY2FsZUZhY3RvcihEb2N1
bWVudCAqZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT5wYWdlKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBkb2N1bWVudC0+cGFnZSgp
LT5wYWdlU2NhbGVGYWN0b3IoKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnNldFpvb21QYXJhbWV0
ZXJzKERvY3VtZW50KiBkb2N1bWVudCwgZmxvYXQgc2NhbGUsIGZsb2F0IHgsIGZsb2F0IHksIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3
KCkgfHwgIWRvY3VtZW50LT52aWV3KCktPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkb2N1bWVudC0+dmll
dygpLT5zY3JvbGxBbmltYXRvcigpLT50ZXN0Wm9vbVBhcmFtZXRlcnMoc2NhbGUsIHgsIHkpOwog
fQogCiB2b2lkIEludGVybmFsczo6c2V0UGFzc3dvcmRFY2hvRW5hYmxlZChEb2N1bWVudCogZG9j
dW1lbnQsIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCA2N2ExODk5NDlhNTYyN2UyZjI3MDJmM2FhOGFlMGI3ZThiMmE4MWY3
Li5hYTE3NmZlODVlMGMwNWI3ODVlYzdkNzI5ZDQxMTU5MjMyNzNlMzQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTc3LDcgKzc3LDExIEBAIHB1YmxpYzoKICAgICBQYXNzUmVm
UHRyPFJhbmdlPiBtYXJrZXJSYW5nZUZvck5vZGUoTm9kZSosIHVuc2lnbmVkLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICB2b2lkIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKERvY3VtZW50KiwgYm9v
bCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oRG9jdW1lbnQqLCBkb3VibGUgc2NhbGUsIGRvdWJsZSB0eCwgZG91YmxlIHR5LCBFeGNl
cHRpb25Db2RlJik7CisKKyAgICB2b2lkIHNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKERvY3VtZW50
KiwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRab29tQW5pbWF0
b3JUcmFuc2Zvcm0oRG9jdW1lbnQqLCBmbG9hdCBzY2FsZSwgZmxvYXQgdHgsIGZsb2F0IHR5LCBF
eGNlcHRpb25Db2RlJik7CisgICAgZmxvYXQgZ2V0UGFnZVNjYWxlRmFjdG9yKERvY3VtZW50Kiwg
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFpvb21QYXJhbWV0ZXJzKERvY3VtZW50Kiwg
ZmxvYXQgc2NhbGUsIGZsb2F0IHgsIGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZv
aWQgc2V0UGFzc3dvcmRFY2hvRW5hYmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0UGFzc3dvcmRFY2hvRHVyYXRpb25JblNlY29uZHMoRG9j
dW1lbnQqLCBkb3VibGUgZHVyYXRpb25JblNlY29uZHMsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBkNDQwMGI5Y2Q5Mjg0MTBjNTRlOWRmMDUz
OTQyYzhjMzBmOTg3MzFlLi40N2QwYWU3YTA3NDNkOTY1MDQyMjc0YjBhOGRmNTllZmM0ODZiNzQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01MSw3ICs1MSwxMCBAQCBt
b2R1bGUgd2luZG93IHsKICAgICAgICAgUmFuZ2UgbWFya2VyUmFuZ2VGb3JOb2RlKGluIE5vZGUg
bm9kZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAg
ICAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShpbiBEb2N1bWVudCBkb2N1bWVudCwg
aW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGRvdWJsZSBz
Y2FsZSwgaW4gZG91YmxlIHR4LCBpbiBkb3VibGUgdHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICB2b2lkIHNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGluIERvY3VtZW50IGRvY3VtZW50
LCBpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lk
IHNldFpvb21BbmltYXRvclRyYW5zZm9ybShpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gZmxvYXQg
c2NhbGUsIGluIGZsb2F0IHR4LCBpbiBmbG9hdCB0eSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Cisg
ICAgICAgIGZsb2F0IGdldFBhZ2VTY2FsZUZhY3RvcihpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0Wm9vbVBhcmFtZXRlcnMoaW4gRG9j
dW1lbnQgZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJs
ZWQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0UGFzc3dvcmRFY2hvRHVyYXRpb25JblNlY29uZHMo
aW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcykgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM2ZmZmYTBhZDk2
YTlkMTExNDMwNjUxZDk0Mzk2YWY1ZWIxOGVjNWMuLmE4YWJmMjJkMDUwYThmOGYwMWRlMzNkOGNj
YmJlYjExZTJiYjBjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDktMjkgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmltYXRvciBmcm9udC1lbmQgW3dvcmstaW4t
cHJvZ3Jlc3MsIG5vdCBmb3IgcmV2aWV3IHlldCAuLi5dCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQorCisgICAgICAgIE1vZGlmaWNhdGlvbnMg
dG8gZ2V0IHpvb20gdGV4dHVyZS1zY2FsZSBwYXJhbWV0ZXJzIGZyb20gU2NhbGVBbmltYXRvciBk
aXJlY3RseQorICAgICAgICBpbnN0ZWFkIG9mIHZpYSBTZXR0aW5ncy4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkp
OgorCiAyMDExLTA5LTI5ICBJYWluIE1lcnJpY2sgIDxodXNreUBnb29nbGUuY29tPgogCiAgICAg
ICAgIEFkZCB1bml0IHRlc3QgZm9yIENDTGF5ZXJTb3J0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwMTEyNTZiNjMyNjhmYTM3YjgyODkwNGJkMzlm
ZTE3MTU5NmU0YTMwLi45M2U2YmI2ODJhOTY2ZjYwNmJiYTI4NDBiNjcxYTgzOGE4MTFmZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC05Myw2ICs5
Myw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0
b3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCkBAIC0yNTY4LDggKzI1NjksOSBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKQogewogICAgIGlm
IChtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggem9vbU1h
dHJpeDsKLSAgICAgICAgem9vbU1hdHJpeC50cmFuc2xhdGUobV9wYWdlLT5zZXR0aW5ncygpLT56
b29tQW5pbWF0b3JQb3NYKCksIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yUG9zWSgp
KTsKLSAgICAgICAgem9vbU1hdHJpeC5zY2FsZShtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Bbmlt
YXRvclNjYWxlKCkpOworICAgICAgICBGbG9hdFBvaW50IHRyYW5zID0gbV9wYWdlLT5tYWluRnJh
bWUoKS0+dmlldygpLT5zY3JvbGxBbmltYXRvcigpLT56b29tVHJhbnNsYXRpb24oKTsKKyAgICAg
ICAgem9vbU1hdHJpeC50cmFuc2xhdGUodHJhbnMueCgpLCB0cmFucy55KCkpOworICAgICAgICB6
b29tTWF0cml4LnNjYWxlKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Nyb2xsQW5pbWF0
b3IoKS0+em9vbVNjYWxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybSh6b29tTWF0cml4KTsKICAgICB9CiAjaWYgVVNFKFRIUkVBREVEX0NPTVBP
U0lUSU5HKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109291</attachid>
            <date>2011-09-30 06:20:48 -0700</date>
            <delta_ts>2011-10-03 07:31:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20110930091911.patch</filename>
            <type>text/plain</type>
            <size>31839</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzNDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzOTcyNmRiYTRiYzBiMjNhZTM5ZmJl
MDJlNTQyN2ZlNjY4M2Q0MzA4Li43MmQ0NGFjNTk1OTgwYTY2NTI0N2E0Y2M5YjI2YWM0YzdmNGQy
YzNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMjkgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2aWV3IHlldCAuLi5d
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20t
YW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDktMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBXZSBzaG91
bGQgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgR2V0UmVhbE5hbWVkUHJvcGVydHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJv
bWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNDQ2NmI4YjU1ZjQ4NzAzMTBkN2RlZGZlMDJhYzMwN2YzYWU4MWFkCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMzMzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllW
MmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UIXRoQQp6dnNDam1PVCpOKEckVmBUcXxfOCsz
ajxUalIxO0grUkFVUGheUihDLUtiI3BEYyYyOzBJRUdacmQzKk9AdTJlTEcKekwqUnhOamI8d2oz
VkI7Q25Fdjlzaz9hTjtPO2FDZnlAdVEkLTdYVlQzdjZ6ZkpLbEp7cnRQNiZtR3RUR19sQWMqCnpt
MDBPQUZ3OTdsSWxnQFBeNlUzdipJJlE9d3JwZD5udHU8Y0ZmaEVrVlppaElaezR7V09HUn1VOHE5
a2l8MHBpYQp6SShNUmR6cFhTd2dafjQ1PipuWG10WVFvZkpfKEVyTV85eGQ0cHszPktpJk50RDBI
Q3UmempaVXl7YTErN31rQjsKenYtK0kwSCY5ODteRjFyIz02cVpiJGs2YjUmcmdYIT9GYUAyISR3
dkgwYnZtMXt5YD4mOEwxTCZHZUpmaygzeVFVCno/YzlkVVN2aTdDVjU4eDdQe0loP0s5N09uSzwk
aVduYUAwY184T2VkK2lxPU5YKEphdT1qWHFfeUxGdXk4ZkZ8fAp6Vig4IW1kVWxrN0g0dHZSeCtj
NnN7cStCNyt2Z24kRlpvcnI+I0dSRTFGSkEjRyQlMX1HYnBIeUdEWlZ8UClnWGcKej5ucUU8bFBf
PC15Y1BeQlZqNGgyMypCP3UrQntvRWhLQXE4N0JjaHAqOHN1NEFXLT5+eVohY0c4dzxKcT1rSVNS
Cnp1YHFOKjAheVNGdiV0anloXlJsczF1VTRaZj1lVjJAaDVtUiQmY3B5KEsycyU8YnVgRnt0T0hj
Pn0yQGJZMWpZKAp6d3ZpfWx6bD5eIXZAOz1MaHwhdj4rZHRucE19alQ3MS1WJVhZRn5hPEVlQUZe
Yio3KkdKYkMlJG0pfCNucytgdzAKemA3NjhBTDU8ZHteVGUtSz03U28yLSskWjtlT3xnJTBONU9U
VSQkfGI3JHt8ezFEaURXdyNCVn4tWSlfYSZjQl92Cnp7ams5diVOJldld2BJRilhXkRMdUc+OUs3
dGZ7SzFkVkJZNCkhd14jO0B3QnJBTmNoLWdQfiNsJVd+dGApVTZSWgp6WkhZSkRmNndRV1pBO3ZJ
YjVDO0dXZlAjKkApYGpLeVAxYXtlJU0jUD48e2x7bGUwYnhFRHo3Q21OQD9MKV9EZW8KejhkK2Vv
VGp1eWB5SDUkfTB0XnEldVkwPlJ7SnFraUFLR21VNEQpWHNjSytQWmRPQUVYezZpKSV4bkFkRXUk
VWZsCnpxNGh2ZUlLelNQWnkme35CcUxzTkYobUIjYjc4WW54UElKeHp2Y1RjTWpVQF54TD9pU0Bf
WUxPcFAzby1lbSQ2Ywp6THFBOGJZTVY4fmhwRHhEVEpgRXIjd0goSntfKTM7QUdhNzhvPUBWY2BX
b2xiJWdSdD1ZRzMhcVc4TFFzYXFBfkAKekdjd2VLVUheOUphTV5Dend1a3k+KiUlKCY8Ml92UF9Q
eT1AVTk1I04/KXpzbEdraUV5d1JoalBiejxFfHw5P0ZCCldAVCNJVyVXK2A4aFFaVS0mdDt1Y0xL
NlQpSSNzT3oKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5o
dG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmlt
YXRvci1zY2FsZS10ZXN0Lmh0bWwKaW5kZXggZTFiYWM5ZWI3MzRkOWU4N2NjNzI4YjY4ZDBhMWQ0
OWYwNGQzZWU5NC4uNmQzODhmMzIxNzYxOTkzN2RlNzA1MTQ0NjVjMjUzODk2NjU3Yzc3MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1h
bmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKQEAgLTMsNyArMyw3
IEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAg
ICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZG9jdW1lbnQs
IHRydWUpOwotICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oZG9jdW1lbnQsIDEuMjUsIC0yNS4wLCAtMjUuMCk7CisgICAgICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldFpvb21QYXJhbWV0ZXJzKGRvY3VtZW50LCAxLjI1LCAxMDAsIDEwMCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAg
ICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29t
LWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBA
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Zjc1OWEzMjJlZWUxMzAyMTZjNjRlY2IxNWNlNWRhY2VlZDY3NGQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1h
bmltYXRvci1zY2FsZS10ZXN0Mi5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorICA8aGVh
ZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXRFbmFibGVTY3JvbGxBbmltYXRvcihkb2N1bWVudCwg
dHJ1ZSk7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKGRvY3VtZW50LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0aW1lcjsK
KworICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgaWYgKCF3aW5k
b3cuaW50ZXJuYWxzIHx8ICh3aW5kb3cuaW50ZXJuYWxzLmdldFBhZ2VTY2FsZUZhY3Rvcihkb2N1
bWVudCkgPT0gMS4yNSkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cg
PSAiaGlkZGVuIjsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
ZG9UZXN0KCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFCb3giKS5z
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiZ3JlZW4iOworICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybShkb2N1bWVudCwgMS4yNSwgMTAwLjAsIDEwMC4wKTsKKyAgICAgICAgICAg
ICAgICAvLyBDaGVjayBldmVyeSAxMDAgbVMgZm9yIGFuaW1hdGlvbiBjb21wbGV0aW9uLgorICAg
ICAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoImZpbmlzaFRlc3QoKSIsIDI1MCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+Cis8Ym9k
eSBpZD0idGhlQm9keSI+CisgIDwhLS0gICAgSWYgc3VjY2Vzc2Z1bCwgdGhlIGJveCBzaG91bGQg
ZW5sYXJnZSB0byBiZSAxMjV4MTI1IGF0ICgxMjUsMTI1KS4KKyAgICAtLT4KKyAgPGRpdiBpZD0i
YUJveCIgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6MTAwcHg7IHBvc2l0aW9uOmFic29sdXRl
OyBsZWZ0OjEwMHB4OyB0b3A6MTAwcHg7IGJhY2tncm91bmQtY29sb3I6I0ZGMDAwMCI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggY2QzODYzZDNkOTY0MTY0MGFhYzBhOGY0NmVk
ZDI3ZWQ1ZTE5YjFjOS4uZjc1NmI5MjFjNmQ2YzA3ZTE0YmM4Zjk0N2Q3MDRlMDcyZTA3NDEzZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dApAQCAtMjY2MSw2ICsyNjYxLDggQEAgQlVHV0s1NTk2OCBXSU4gREVCVUcgR1BVIDog
Y29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlwbGllZC1ibGVuZC5odG1sID0KIEJV
R1dLNTg1ODcgTElOVVggR1BVIERFQlVHIDogbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5n
Lmh0bWwgPSBJTUFHRQogQlVHQ1I5NzY4NiBMSU5VWCBHUFUgUkVMRUFTRSA6IG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLXJlbmRlcmluZy5odG1sID0gSU1BR0UKIAorQlVHV0t4eHh4eCBNQUMgV0lOIEdQ
VSBHUFUtQ0cgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLmh0bWwgPSBJTUFHRQorCiBCVUdDUjcyMjIzIDogbWVkaWEvdmlkZW8tZnJhbWUt
YWNjdXJhdGUtc2Vlay5odG1sID0gUEFTUyBJTUFHRQogCiBCVUdXSzUzODY4IDogZmFzdC9ub3Rp
ZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG9jdW1lbnQtY2xvc2UtY3Jhc2guaHRtbCA9IFBBU1Mg
VEVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDhkMzJjMWIyYmVlYTFmZWYxNGFlYzY0ZTMzNDI0Y2Y5NzkzMTVm
MjcuLjg4MmE3NDcxMjA0MjJkN2Y5ZDViMzkzM2ZiZmViNTAyODc5YWY4NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NCBAQAorMjAxMS0wOS0yOSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBab29tIGFuaW1hdG9yIGZyb250
LWVuZCBbd29yay1pbi1wcm9ncmVzcywgbm90IGZvciByZXZpZXcgeWV0IC4uLl0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDM1CisKKyAgICAgICAg
QWRkcyBuZWNlc3NhcnkgY29tcG9uZW50cyB0byBTY3JvbGxBbmltYXRvck5vbmUgdG8gc3VwcG9y
dCBhIHpvb20gYW5pbWF0aW9uCisgICAgICAgIGZlYXR1cmUuIEluY2x1ZGVzIHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdmlhIHRlc3RpbmcvSW50ZXJuYWxzIHRvIGNhcHR1cmUKKyAgICAgICAgaW4tcHJv
Z3Jlc3MgdGV4dHVyZSBzY2FsaW5nICh6b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbCkgYXMg
d2VsbCBhcyBhCisgICAgICAgIGZpbmFsIHZpZXcgLS0tIGFmdGVyIHBhZ2VTY2FsZUZhY3RvciBo
YXMgYmVlbiBhcHBsaWVkIC0tLSBpbiB6b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwuCisK
KyAgICAgICAgUmVtb3ZlcyB0ZW1wb3JhcnkgdGVzdCBmaWVsZHMgZnJvbSBTZXR0aW5ncy4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBwbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwK
KworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Onpvb21BbmltYXRvclRyYW5zZm9y
bUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9T
ZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVpvb21DaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp6b29tVHJhbnNsYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnJlc2V0Wm9vbSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6dGVzdFpvb21QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
Onpvb21TY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6Olpvb21EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6OmFuaW1h
dGVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6U2Nyb2xsQW5p
bWF0b3JOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVy
RmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGFibGVBcmVhOjp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRab29tUGFyYW1ldGVycyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MTEtMDktMjkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNo
cmluayBGb250RmFsbGJhY2tMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmlu
ZGV4IDQyOWI5MjBlNjNiNmIwOTg2ZTIyYWJmMGQ1ODA4ZGViNDE4NWJjNzkuLjkyYWI4NGNlNjEy
ZTNiODExYWNhM2EyOGU5NjFkNjBhOGM0OGEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKQEAgLTIyMjUsOCArMjIyNSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAg
ICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFw
VHlwZToKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Ny
b2xsVXBkYXRlVHlwZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9h
dClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJlcGxhY2Ug
dGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVu
IGFkZHJlc3NlZC4KQEAgLTIyMzYsNiArMjIzNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkK
ICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJs
ZVRhcFR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBl
OgogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAg
IEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCBkMTIzMzE4MWEyYWY1N2IzNThmMWQyNjE3YzRlOGEyM2UxMzQ5ODczLi4xMzc1
OThkNzNjMWIwOWM5YjNmNTY0ZjhjODAwMTUxZTU4ZWYzYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC0xMjIwLDYgKzEyMjAsMjIgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVdp
ZGdldFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0KiBvYmplY3QpCiAgICAgbV93aWRnZXRV
cGRhdGVTZXQtPnJlbW92ZShvYmplY3QpOwogfQogCit2b2lkIEZyYW1lVmlldzo6em9vbUFuaW1h
dG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSwgYm9v
bCBpc0ZpbmlzaGVkKQoreworICAgIGlmIChpc0ZpbmlzaGVkKSB7CisgICAgICAgIG1fcGFnZS0+
c2V0UGFnZVNjYWxlRmFjdG9yKG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgKiBzY2FsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQoc2NhbGUgKiBzY3Jv
bGxYKCkgLSB4LCBzY2FsZSAqIHNjcm9sbFkoKSAtIHkpKTsKKyAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS0+cmVzZXRab29tKCk7CisgICAgfQorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gcm9vdFJlbmRlcmVyKHRoaXMpKSB7Cisg
ICAgICAgIGlmIChyb290LT51c2VzQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgICAgIHJvb3QtPmNv
bXBvc2l0b3IoKS0+c2NoZWR1bGVMYXllckZsdXNoKCk7CisgICAgfQorI2VuZGlmCit9CisKIHZv
aWQgRnJhbWVWaWV3OjpzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAg
ICAgbV9tZWRpYVR5cGUgPSBtZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA0
NDJlMDhjYWJlMTA0NjdlYWRlZmM5ZTZlZTYyNGVlZTVmYWZkOGM3Li45MTExYjE2NmYwYjQzMTNm
ZmEwZjZjOGFmM2QwNDQ5NGIyYWY4NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE3
MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRGaXhlZEVsZW1l
bnRzQWZ0ZXJTY3JvbGxpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZElu
RGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9v
bUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBib29sKTsK
KwogICAgIFN0cmluZyBtZWRpYVR5cGUoKSBjb25zdDsKICAgICB2b2lkIHNldE1lZGlhVHlwZShj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nKGJvb2wg
cHJpbnRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBkN2UwMGQxYzdkYTYyN2Qx
YTdmYTViNGFiZTI2ZWEwYmI5MDA5YjA0Li5lMDQxY2YwM2Y1NmVkODgwMzZiZDdmMWFjOTcyMzdi
NTg0M2IwZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMjE4LDkgKzIxOCw2IEBA
IFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9tZWRpYVBsYXliYWNrQWxs
b3dzSW5saW5lKHRydWUpCiAgICAgLCBtX3Bhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpCiAgICAg
LCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKLSAgICAsIG1fem9vbUFuaW1hdG9yU2NhbGUo
MSkKLSAgICAsIG1fem9vbUFuaW1hdG9yUG9zWCgwKQotICAgICwgbV96b29tQW5pbWF0b3JQb3NZ
KDApCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28g
d2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWlu
ZyB0byB1c2UgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggZGI3MzY0OGQ0YTEwYjliMmRj
ZjU1NDQyYjkyN2ExOWY4YjBmYjFjMC4uNGIwY2ZiZjhmYjY4OGY5NmNlNGE4NDMwYWIyOGRmODdl
OTdhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNDMyLDEzICs0MzIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9v
bCBmbGFnKSB7IG1fZm9yY2VDb21wb3NpdGluZ01vZGUgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wg
Zm9yY2VDb21wb3NpdGluZ01vZGUoKSB7IHJldHVybiBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShmbG9hdCBzY2FsZSkgeyBtX3pv
b21BbmltYXRvclNjYWxlID0gc2NhbGU7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yU2Nh
bGUoKSB7IHJldHVybiBtX3pvb21BbmltYXRvclNjYWxlOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRa
b29tQW5pbWF0b3JQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5KSB7IG1fem9vbUFuaW1hdG9yUG9z
WCA9IHg7IG1fem9vbUFuaW1hdG9yUG9zWSA9IHk7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1h
dG9yUG9zWCgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWDsgfQotICAgICAgICBmbG9hdCB6
b29tQW5pbWF0b3JQb3NZKCkgeyByZXR1cm4gbV96b29tQW5pbWF0b3JQb3NZOyB9Ci0KICAgICAg
ICAgdm9pZCBzZXRTaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQo
Ym9vbCBmbGFnKSB7IG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3Vt
ZW50ID0gZmxhZzsgfQogICAgICAgICBib29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0
aWFsRW1wdHlEb2N1bWVudCgpIHsgcmV0dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbklu
aXRpYWxFbXB0eURvY3VtZW50OyB9CiAKQEAgLTYwNywxMCArNjAwLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2VuZGlmCiAgICAgICAgIHN0YXRpYyBib29sIGdNb2NrU2Nyb2xsYmFyc0VuYWJs
ZWQ7CiAKLSAgICAgICAgZmxvYXQgbV96b29tQW5pbWF0b3JTY2FsZTsKLSAgICAgICAgZmxvYXQg
bV96b29tQW5pbWF0b3JQb3NYOwotICAgICAgICBmbG9hdCBtX3pvb21BbmltYXRvclBvc1k7Ci0K
ICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnRO
YXRpdmVDb250cm9sczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwCmluZGV4IDU1MzhlZmRkMWFjZDlkMTNjZjI4NmM2ZGFkMDUxZTE4OGYxM2U3M2Eu
LjUyZTFhYTBiNDRkOWU2MmM1Njk1YmY5OGVmMTQ5ZTJkNmE5ZDZjMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTUyLDYgKzUyLDkgQEAgU2Nyb2xs
QW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkK
ICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2N1cnJlbnRQ
b3NYKDApCiAgICAgLCBtX2N1cnJlbnRQb3NZKDApCisgICAgLCBtX2N1cnJlbnRab29tU2NhbGUo
MSkKKyAgICAsIG1fY3VycmVudFpvb21UcmFuc1goMCkKKyAgICAsIG1fY3VycmVudFpvb21UcmFu
c1koMCkKIHsKIH0KIApAQCAtMTI5LDQgKzEzMiwyOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoKQogICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldFNjcm9sbE9m
ZnNldEZyb21BbmltYXRpb24oSW50UG9pbnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50UG9zWSkp
OwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlab29tQ2hhbmdlZChib29sIGlzRmlu
aXNoZWQpCit7CisgICAgbV9zY3JvbGxhYmxlQXJlYS0+em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hh
bmdlZChtX2N1cnJlbnRab29tU2NhbGUsIG1fY3VycmVudFpvb21UcmFuc1gsIG1fY3VycmVudFpv
b21UcmFuc1ksIGlzRmluaXNoZWQpOworfQorCitGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjp6
b29tVHJhbnNsYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBGbG9hdFBvaW50KG1fY3VycmVu
dFpvb21UcmFuc1gsIG1fY3VycmVudFpvb21UcmFuc1kpOworfQorCit2b2lkIFNjcm9sbEFuaW1h
dG9yOjpyZXNldFpvb20oKQoreworICAgIG1fY3VycmVudFpvb21TY2FsZSA9IDE7CisgICAgbV9j
dXJyZW50Wm9vbVRyYW5zWCA9IDA7CisgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7Cit9CisK
K3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnRlc3Rab29tUGFyYW1ldGVycyhmbG9hdCBzY2FsZSwgZmxv
YXQgeCwgZmxvYXQgeSkKK3sKKyAgICBtX2N1cnJlbnRab29tU2NhbGUgPSBzY2FsZTsKKyAgICBt
X2N1cnJlbnRab29tVHJhbnNYID0gKDEgLSBzY2FsZSkgKiB4OworICAgIG1fY3VycmVudFpvb21U
cmFuc1kgPSAoMSAtIHNjYWxlKSAqIHk7CisgICAgbm90aWZ5Wm9vbUNoYW5nZWQoZmFsc2UpOyAv
LyBEb24ndCBsZXQgcGFnZSByZS1zY2FsZS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNjY3MzgxYjMxMWQ5
MmY1NTk4YzE3ZTIyNGMwYmUwYzU2NjQ1NTFiNi4uYjU2ZTMzM2MzY2EzYmYwMWQzZDU2YzgzOTVh
MmZhMDEyODRjNmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5o
CkBAIC04NywxNCArODcsMjQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVt
b3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KIAorICAgIGZsb2F0IHpvb21T
Y2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFpvb21TY2FsZTsgfQorICAgIEZsb2F0UG9p
bnQgem9vbVRyYW5zbGF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0Wm9vbSgp
OworICAgIHZpcnR1YWwgdm9pZCB0ZXN0Wm9vbVBhcmFtZXRlcnMoZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CisKIHByb3RlY3RlZDoKICAgICBTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSopOwog
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZCgpOworICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlab29tQ2hhbmdlZChib29sKTsKIAogICAgIFNjcm9sbGFibGVBcmVhKiBtX3Nj
cm9sbGFibGVBcmVhOwogICAgIGZsb2F0IG1fY3VycmVudFBvc1g7IC8vIFdlIGF2b2lkIHVzaW5n
IGEgRmxvYXRQb2ludCBpbiBvcmRlciB0byByZWR1Y2UKICAgICBmbG9hdCBtX2N1cnJlbnRQb3NZ
OyAvLyBzdWJjbGFzcyBjb2RlIGNvbXBsZXhpdHkuCisKKyAgICBmbG9hdCBtX2N1cnJlbnRab29t
U2NhbGU7CisgICAgZmxvYXQgbV9jdXJyZW50Wm9vbVRyYW5zWDsKKyAgICBmbG9hdCBtX2N1cnJl
bnRab29tVHJhbnNZOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggOWEzOWRkMjViOTMw
NGYzYzU0ZGM2MGU4ZTJlYWU3YjlmYzQ0MTM2OS4uMWVjMmMxNmQ2MWZmOTRjNjMzZDE5OGI3YTk2
OTIyZjRjNmJmZDhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvck5vbmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQdHIuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVh
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50Lmgi
CkBAIC0zNjYsMTAgKzM2NywzNiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0Rh
dGE6OnVwZGF0ZVZpc2libGVMZW5ndGgoTGF5b3V0VW5pdCB2aXNpYmxlTGVuZwogICAgIG1fdmlz
aWJsZUxlbmd0aCA9IHZpc2libGVMZW5ndGg7CiB9CiAKK1Njcm9sbEFuaW1hdG9yTm9uZTo6Wm9v
bURhdGE6Olpvb21EYXRhKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZSogcGFyZW50LCBmbG9h
dCogc2NhbGUsIGZsb2F0KiB0cmFuc1gsIGZsb2F0KiB0cmFuc1kpCisgICAgOiBtX2N1cnJlbnRT
Y2FsZShzY2FsZSkKKyAgICAsIG1fY3VycmVudFRyYW5zWCh0cmFuc1gpCisgICAgLCBtX2N1cnJl
bnRUcmFuc1kodHJhbnNZKQoreworfQorCitib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURh
dGE6OmFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSkKK3sKKyAgICBtX2xhc3RBbmltYXRp
b25UaW1lID0gY3VycmVudFRpbWU7CisgICAgZG91YmxlIGRlbHRhVGltZSA9IGN1cnJlbnRUaW1l
IC0gbV9zdGFydFRpbWU7CisKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25UaW1lKSB7
CisgICAgICAgICptX2N1cnJlbnRTY2FsZSA9IG1fZGVzaXJlZFNjYWxlOworICAgICAgICAqbV9j
dXJyZW50VHJhbnNYID0gbV9kZXNpcmVkVHJhbnNYOworICAgICAgICAqbV9jdXJyZW50VHJhbnNZ
ID0gbV9kZXNpcmVkVHJhbnNZOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Km1fY3VycmVudFNjYWxlID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogKG1fZGVzaXJl
ZFNjYWxlIC0gbV9zdGFydFNjYWxlKSArIG1fc3RhcnRTY2FsZTsKKyAgICAqbV9jdXJyZW50VHJh
bnNYID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lICogbV9kZXNpcmVkVHJhbnNYOworICAg
ICptX2N1cnJlbnRUcmFuc1kgPSBkZWx0YVRpbWUgLyBtX2FuaW1hdGlvblRpbWUgKiBtX2Rlc2ly
ZWRUcmFuc1k7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFNjcm9sbEFuaW1hdG9yTm9uZTo6U2Ny
b2xsQW5pbWF0b3JOb25lKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNj
cm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9ob3Jpem9udGFsRGF0YSh0aGlz
LCAmbV9jdXJyZW50UG9zWCwgc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpKQogICAgICwg
bV92ZXJ0aWNhbERhdGEodGhpcywgJm1fY3VycmVudFBvc1ksIHNjcm9sbGFibGVBcmVhLT52aXNp
YmxlSGVpZ2h0KCkpCisgICAgLCBtX3pvb21EYXRhKHRoaXMsICZtX2N1cnJlbnRab29tU2NhbGUs
ICZtX2N1cnJlbnRab29tVHJhbnNYLCAmbV9jdXJyZW50Wm9vbVRyYW5zWSkKICAgICAsIG1fYW5p
bWF0aW9uVGltZXIodGhpcywgJlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJl
ZCkKIHsKIH0KQEAgLTQzNSw2ICs0NjIsNTkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNj
cm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQKICAg
ICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
Onpvb20oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKK3sKKyAgICBBU1NFUlQocGdl
LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSk7CisgICAgLy8g
RklYTUUod2ptYWNsZWFuKTogbW9kaWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhl
IHRpbWVyIGlzIGFjdGl2ZS4KKyAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkg
eworICAgICAgICBtX2N1cnJlbnRab29tU2NhbGUgPSAxOworICAgICAgICBtX2N1cnJlbnRab29t
VHJhbnNYID0gMDsKKyAgICAgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7CisKKyAgICAgICAg
ZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsK
KyAgICAgICAgZmxvYXQgc2NhbGUgPSBwZ2UuZGVsdGFYKCk7CisKKyAgICAgICAgbV96b29tRGF0
YS5tX3N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lIC0ga1RpY2tUaW1lIC8gMjsKKyAgICAgICAgbV96
b29tRGF0YS5tX3N0YXJ0U2NhbGUgPSBtX2N1cnJlbnRab29tU2NhbGU7CisgICAgICAgIG1fem9v
bURhdGEubV9kZXNpcmVkU2NhbGUgPSBzY2FsZTsKKyAgICAgICAgLy8gRklYTUUod2ptYWNsZWFu
KSBEb2N1bWVudCB0aGVuIHNpbXBsaWZ5IHRoZSBmb2xsb3dpbmcgZXF1YXRpb25zLgorICAgICAg
ICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWCA9ICgxIC0gc2NhbGUpICogcGdlLmdsb2JhbFBv
c2l0aW9uKCkueCgpOworICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWSA9ICgxIC0g
c2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueSgpOworI2lmIEVOQUJMRShET1VCTEVfVEFQ
X0NFTlRFUlMpCisgICAgICAgIGlmIChwZ2UudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpEb3VibGVUYXBUeXBlKSB7CisgICAgICAgICAgICAvLyBab29tIHRvIGNlbnRyZSBvZiBkaXNw
bGF5LiBQaW5jaC10by16b29tIG1heSBub3Qgd2FudCB0aGlzIGJlaGF2aW91ci4KKyAgICAgICAg
ICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNYICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2li
bGVXaWR0aCgpIC8gMiAtIHBnZS5nbG9iYWxQb3NpdGlvbigpLngoKTsKKyAgICAgICAgICAgIG1f
em9vbURhdGEubV9kZXNpcmVkVHJhbnNZICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWln
aHQoKSAvIDIgLSBwZ2UuZ2xvYmFsUG9zaXRpb24oKS55KCk7CisgICAgICAgIH0KKyNlbmRpZgor
ICAgICAgICBtX3pvb21EYXRhLm1fbGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKyAg
ICAgICAgbV96b29tRGF0YS5tX2FuaW1hdGlvblRpbWUgPSA1MCAqIGtUaWNrVGltZTsKKworICAg
ICAgICBib29sIGlzQ29udGludWluZyA9IG1fem9vbURhdGEuYW5pbWF0ZVpvb20oY3VycmVudFRp
bWUpOworCisgICAgICAgIGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRp
bWUgLSBtX3N0YXJ0VGltZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRp
bWUgLSBtX3N0YXJ0VGltZSk7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9IG1h
eChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICBpZiAo
aXNDb250aW51aW5nKQorICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qo
bmV4dFRpbWVySW50ZXJ2YWwpOworICAgICAgICBub3RpZnlab29tQ2hhbmdlZCghaXNDb250aW51
aW5nKTsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9s
bEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JiBwZ2UpCit7CisgICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICAgICAgem9vbShwZ2UpOworICAgICAg
ICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRPRE86IGFkZCBhbnkgb3RoZXIg
ZXZlbnQgdHlwZXMgd2Ugc2hvdWxkIGhhbmRsZQorICAgICAgICB7IH0KKyAgICB9Cit9CisjZW5k
aWYKKwogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAg
ICB1cGRhdGVWaXNpYmxlTGVuZ3RocygpOwpAQCAtNDY2LDYgKzU0NiwxMyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5v
bmU+KiB0aW1lcikKICAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwogICAgIGlmICht
X3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xs
KGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpCiAgICAgICAgIGNvbnRpbnVlQW5pbWF0
aW9uID0gdHJ1ZTsKKworICAgIGlmIChtX3pvb21EYXRhLm1fc3RhcnRUaW1lICYmIG1fem9vbURh
dGEuYW5pbWF0ZVpvb20oY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkgeworICAgICAg
ICBjb250aW51ZUFuaW1hdGlvbiA9IHRydWU7CisgICAgICAgIG5vdGlmeVpvb21DaGFuZ2VkKCFj
b250aW51ZUFuaW1hdGlvbik7CisgICAgfSBlbHNlCisgICAgICAgIG5vdGlmeVpvb21DaGFuZ2Vk
KHRydWUpOworCiAgICAgaWYgKGNvbnRpbnVlQW5pbWF0aW9uKSB7CiAgICAgICAgIGRvdWJsZSBu
ZXh0VGltZXJJbnRlcnZhbCA9IG1heChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0
RnJhbWUpOwogICAgICAgICB0aW1lci0+c3RhcnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggMGMw
ZWIxNmExZmY5NDEyMWU0NzM4NTlmZmFkOGZhNTZkMTgxOWZmZS4uZTUyNDExZTQwN2JmOTViYTFh
MWFmZTExNzQ4NzAwZjc4Yzc1MzliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3JOb25lLmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9h
dCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAorICAgIHZpcnR1YWwgdm9p
ZCB6b29tKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworCiAgICAgdmly
dHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFZl
cnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwpAQCAtMTI3LDEyICsxMzAsMzQgQEAgcHJvdGVj
dGVkOgogICAgICAgICBMYXlvdXRVbml0IG1fdmlzaWJsZUxlbmd0aDsKICAgICB9OwogCisgICAg
Ly8gV2hpbGUgem9vbWluZywgc2NhbGUsIHBvc1ggYW5kIHBvc1kgbmVlZCB0byBzdGF5IHRpZ2h0
bHkgY291cGxlZCwgc28gdXNlIGEgc2VwYXJhdGUKKyAgICAvLyBkYXRhIHN0cnVjdHVyZS4KKyAg
ICBzdHJ1Y3QgWm9vbURhdGEgeworICAgICAgICBab29tRGF0YShTY3JvbGxBbmltYXRvck5vbmUq
IHBhcmVudCwgZmxvYXQqIGN1cnJlbnRTY2FsZSwgZmxvYXQqIGN1cnJlbnRQb3NYLCBmbG9hdCog
Y3VycmVudFBvc1kpOworICAgICAgICBib29sIGFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGlt
ZSk7CisKKyAgICAgICAgZmxvYXQqIG1fY3VycmVudFNjYWxlOworICAgICAgICBmbG9hdCogbV9j
dXJyZW50VHJhbnNYOworICAgICAgICBmbG9hdCogbV9jdXJyZW50VHJhbnNZOworCisgICAgICAg
IGRvdWJsZSBtX3N0YXJ0VGltZTsKKworICAgICAgICBkb3VibGUgbV9hbmltYXRpb25UaW1lOwor
ICAgICAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uVGltZTsKKworICAgICAgICBkb3VibGUgbV9z
dGFydFNjYWxlOworICAgICAgICBkb3VibGUgbV9kZXNpcmVkU2NhbGU7CisgICAgICAgIGRvdWJs
ZSBtX2Rlc2lyZWRUcmFuc1g7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFuc1k7CisgICAg
fTsKKwogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5v
bmU+Kik7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQg
dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIAogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERh
dGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAgWm9vbURhdGEgbV96b29t
RGF0YTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBUaW1lcjxTY3JvbGxBbmltYXRv
ck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAKaW5kZXggYzdhMzk5N2I1NTU4MjhjNDY2ZWNmZWE5ZDEzNjhmMTk3ZjgxMjlh
OC4uZGIxNTQ3ZmE4ZTI1YjA5MjI3NDc2MmFkY2U3NTE5ZGQ2ZmI4MGE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2
b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0
IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoc2Nyb2xs
QW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9CiAKK3ZvaWQgU2Nyb2xs
YWJsZUFyZWE6Onpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRv
dWJsZSwgYm9vbCkKK3sKKyAgICAvLyBSZXF1aXJlcyBGcmFtZVZpZXcgdG8gb3ZlcnJpZGUgdGhp
cy4KK30KKwogdm9pZCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgc2Nyb2xsQW5pbWF0b3IoKS0+aGFuZGxlV2hl
ZWxFdmVudCh3aGVlbEV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCmluZGV4IDViNTRjYmNjNGFiNjIzYjA4ZmZjNjRlYzU0OTU2NTcyNGYxMDNiNjUuLmM2Zjky
MjgyNGYxMTExZTg0NmNlYWUwZWUyZDFhN2Y5NTVkMTQ0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY3JvbGxUb1hPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0IHgpOwogICAgIHZvaWQgc2Ny
b2xsVG9ZT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihmbG9hdCB4KTsKIAorICAgIHZpcnR1YWwgdm9p
ZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGJv
b2wpOworCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYpOwog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICB2b2lkIGhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGQ2NGQwYjdjNDc2OGYxM2NlYmIwOGNhZWQzODEwNGMyOGFiZGVhZDYuLjIwZTdi
MzQ5Y2RmODA5MDgzYThjYWExZjJjNTk5NWQ4OWE3ZTQ3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDEs
OSArNDIsMTUgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2lmIEVOQUJMRShHRVNUVVJFX0VW
RU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlmCiAjaW5jbHVk
ZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJU
cmVlQXNUZXh0LmgiCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisjaW5jbHVkZSAiU2Ny
b2xsQW5pbWF0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2hhZG93Q29udGVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0yNDQs
MTUgKzI1MSw1MSBAQCB2b2lkIEludGVybmFsczo6c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoRG9j
dW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdAogICAgIGRvY3VtZW50LT5zZXR0
aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShlbmFibGVkKTsKIH0KIAotdm9pZCBJbnRl
cm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVudCAqZG9jdW1lbnQsIGRvdWJs
ZSBzY2FsZSwgZG91YmxlIHR4LCBkb3VibGUgdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJ
bnRlcm5hbHM6OnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFk
b2N1bWVudC0+c2V0dGluZ3MoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRa
b29tQW5pbWF0b3JTY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4oc2NhbGUpKTsKLSAgICBkb2N1bWVu
dC0+c2V0dGluZ3MoKS0+c2V0Wm9vbUFuaW1hdG9yUG9zaXRpb24oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHR4KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHR5KSk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCisgICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGVu
YWJsZWQpOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oRG9jdW1lbnQgKmRvY3VtZW50LCBmbG9hdCBzY2FsZSwgZmxvYXQgdHgsIGZsb2F0IHR5
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+
dmlldygpIHx8ICFkb2N1bWVudC0+dmlldygpLT5mcmFtZSgpKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50IHBnZShQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgSW50UG9pbnQodHgsIHR5KSwgSW50UG9pbnQodHgsIHR5
KSwgMCwgc2NhbGUsIDAuZiwgMCwgMCwgMCwgMCk7CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwZ2UpOworI2VuZGlmCit9
CisKK2Zsb2F0IEludGVybmFsczo6Z2V0UGFnZVNjYWxlRmFjdG9yKERvY3VtZW50ICpkb2N1bWVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PnBhZ2UoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGRvY3VtZW50LT5wYWdlKCktPnBhZ2VTY2FsZUZh
Y3RvcigpOworfQorCit2b2lkIEludGVybmFsczo6c2V0Wm9vbVBhcmFtZXRlcnMoRG9jdW1lbnQq
IGRvY3VtZW50LCBmbG9hdCBzY2FsZSwgZmxvYXQgeCwgZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSB8fCAhZG9jdW1l
bnQtPnZpZXcoKS0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQor
ICAgIGRvY3VtZW50LT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnRlc3Rab29tUGFyYW1ldGVy
cyhzY2FsZSwgeCwgeSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFBhc3N3b3Jk
RWNob0VuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNjdhMTg5OTQ5YTU2Mjdl
MmYyNzAyZjNhYThhZTBiN2U4YjJhODFmNy4uYWExNzZmZTg1ZTBjMDViNzg1ZWM3ZDcyOWQ0MTE1
OTIzMjczZTM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03Nyw3ICs3Nywx
MSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5v
ZGUqLCB1bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRGb3JjZUNvbXBv
c2l0aW5nTW9kZShEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZG91YmxlIHNjYWxlLCBk
b3VibGUgdHgsIGRvdWJsZSB0eSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCBzZXRFbmFi
bGVTY3JvbGxBbmltYXRvcihEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZmxvYXQgc2Nh
bGUsIGZsb2F0IHR4LCBmbG9hdCB0eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIGZsb2F0IGdldFBh
Z2VTY2FsZUZhY3RvcihEb2N1bWVudCosICBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRa
b29tUGFyYW1ldGVycyhEb2N1bWVudCosIGZsb2F0IHNjYWxlLCBmbG9hdCB4LCBmbG9hdCB5LCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1l
bnQqLCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBhc3N3b3Jk
RWNob0R1cmF0aW9uSW5TZWNvbmRzKERvY3VtZW50KiwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRz
LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
ZDQ0MDBiOWNkOTI4NDEwYzU0ZTlkZjA1Mzk0MmM4YzMwZjk4NzMxZS4uNDdkMGFlN2EwNzQzZDk2
NTA0MjI3NGIwYThkZjU5ZWZjNDg2Yjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtNTEsNyArNTEsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFJhbmdlIG1h
cmtlclJhbmdlRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJh
aXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01v
ZGUoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGluIERvY3Vt
ZW50IGRvY3VtZW50LCBpbiBkb3VibGUgc2NhbGUsIGluIGRvdWJsZSB0eCwgaW4gZG91YmxlIHR5
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmlt
YXRvcihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oaW4gRG9j
dW1lbnQgZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlLCBpbiBmbG9hdCB0eCwgaW4gZmxvYXQgdHkp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBmbG9hdCBnZXRQYWdlU2NhbGVGYWN0b3Io
aW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lk
IHNldFpvb21QYXJhbWV0ZXJzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBmbG9hdCBzY2FsZSwg
aW4gZmxvYXQgeCwgaW4gZmxvYXQgeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAg
dm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29s
ZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhc3N3
b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUg
ZHVyYXRpb25JblNlY29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBjNmZmZmEwYWQ5NmE5ZDExMTQzMDY1MWQ5NDM5NmFmNWViMThlYzVjLi5h
OGFiZjIyZDA1MGE4ZjhmMDFkZTMzZDhjY2JiZWIxMWUyYmIwYzNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTA5LTI5ICBXLiBKYW1lcyBNYWNMZWFu
ICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFpvb20gYW5p
bWF0b3IgZnJvbnQtZW5kIFt3b3JrLWluLXByb2dyZXNzLCBub3QgZm9yIHJldmlldyB5ZXQgLi4u
XQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwMzUK
KworICAgICAgICBNb2RpZmljYXRpb25zIHRvIGdldCB6b29tIHRleHR1cmUtc2NhbGUgcGFyYW1l
dGVycyBmcm9tIFNjYWxlQW5pbWF0b3IgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVhZCBvZiB2aWEg
U2V0dGluZ3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KToKKwogMjAxMS0wOS0yOSAgSWFpbiBNZXJyaWNrICA8
aHVza3lAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBZGQgdW5pdCB0ZXN0IGZvciBDQ0xheWVyU29y
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMDEx
MjU2YjYzMjY4ZmEzN2I4Mjg5MDRiZDM5ZmUxNzE1OTZlNGEzMC4uOTNlNmJiNjgyYTk2NmY2MDZi
YmEyODQwYjY3MWE4MzhhODExZmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcApAQCAtOTMsNiArOTMsNyBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1w
bC5oIgpAQCAtMjU2OCw4ICsyNTY5LDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVy
TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAobV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHpvb21NYXRyaXg7Ci0gICAgICAgIHpvb21NYXRyaXgudHJhbnNs
YXRlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yUG9zWCgpLCBtX3BhZ2UtPnNldHRp
bmdzKCktPnpvb21BbmltYXRvclBvc1koKSk7Ci0gICAgICAgIHpvb21NYXRyaXguc2NhbGUobV9w
YWdlLT5zZXR0aW5ncygpLT56b29tQW5pbWF0b3JTY2FsZSgpKTsKKyAgICAgICAgRmxvYXRQb2lu
dCB0cmFucyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Nyb2xsQW5pbWF0b3IoKS0+
em9vbVRyYW5zbGF0aW9uKCk7CisgICAgICAgIHpvb21NYXRyaXgudHJhbnNsYXRlKHRyYW5zLngo
KSwgdHJhbnMueSgpKTsKKyAgICAgICAgem9vbU1hdHJpeC5zY2FsZShtX3BhZ2UtPm1haW5GcmFt
ZSgpLT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnpvb21TY2FsZSgpKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oem9vbU1hdHJpeCk7CiAgICAg
fQogI2lmIFVTRShUSFJFQURFRF9DT01QT1NJVElORykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109482</attachid>
            <date>2011-10-03 07:31:34 -0700</date>
            <delta_ts>2011-10-06 13:47:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20111003102913.patch</filename>
            <type>text/plain</type>
            <size>32152</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0OTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNDFlZTA4YmE0NGM0YjMzNzE3OGQ2
ZjcwNDc4Y2Y4NTcyYTEzZTVjLi42MzRlMjNkMTBhMGFjNDRlMjcyNGFiZDYxYTg5MDM5YWJjNDZl
ZWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMjkgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQgW3dvcmstaW4tcHJvZ3Jlc3MsIG5vdCBmb3IgcmV2aWV3IHlldCAuLi5d
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20t
YW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MTAtMDMgIEtyaXN0w7NmIEtvc3p0ecOzICA8a2tyaXN0b2ZAaW5mLnUtc3plZ2VkLmh1PgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgUXQgZ2FyZGVuaW5nIGFmdGVyIHI5NjQwNApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQucG5nIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVtL2Nv
bXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQucG5nCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ0NDY2YjhiNTVmNDg3MDMxMGQ3ZGVkZmUwMmFjMzA3ZjNhZTgxYWQKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDMzMzMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpa
KT1oXmhsQSVAV3MkbEhgb2s8bX0/b1QhdGhBCnp2c0NqbU9UKk4oRyRWYFRxfF84KzNqPFRqUjE7
SCtSQVVQaF5SKEMtS2IjcERjJjI7MElFR1pyZDMqT0B1MmVMRwp6TCpSeE5qYjx3ajNWQjtDbkV2
OXNrP2FOO087YUNmeUB1USQtN1hWVDN2NnpmSktsSntydFA2Jm1HdFRHX2xBYyoKem0wME9BRnc5
N2xJbGdAUF42VTN2KkkmUT13cnBkPm50dTxjRmZoRWtWWmloSVp7NHtXT0dSfVU4cTlraXwwcGlh
CnpJKE1SZHpwWFN3Z1p+NDU+Km5YbXRZUW9mSl8oRXJNXzl4ZDRwezM+S2kmTnREMEhDdSZ6alpV
eXthMSs3fWtCOwp6di0rSTBIJjk4O15GMXIjPTZxWmIkazZiNSZyZ1ghP0ZhQDIhJHd2SDBidm0x
e3lgPiY4TDFMJkdlSmZrKDN5UVUKej9jOWRVU3ZpN0NWNTh4N1B7SWg/Szk3T25LPCRpV25hQDBj
XzhPZWQraXE9TlgoSmF1PWpYcV95TEZ1eThmRnx8CnpWKDghbWRVbGs3SDR0dlJ4K2M2c3txK0I3
K3ZnbiRGWm9ycj4jR1JFMUZKQSNHJCUxfUdicEh5R0RaVnxQKWdYZwp6Pm5xRTxsUF88LXljUF5C
Vmo0aDIzKkI/dStCe29FaEtBcTg3QmNocCo4c3U0QVctPn55WiFjRzh3PEpxPWtJU1IKenVgcU4q
MCF5U0Z2JXRqeWheUmxzMXVVNFpmPWVWMkBoNW1SJCZjcHkoSzJzJTxidWBGe3RPSGM+fTJAYlkx
alkoCnp3dml9bHpsPl4hdkA7PUxofCF2PitkdG5wTX1qVDcxLVYlWFlGfmE8RWVBRl5iKjcqR0pi
QyUkbSl8I25zK2B3MAp6YDc2OEFMNTxke15UZS1LPTdTbzItKyRaO2VPfGclME41T1RVJCR8Yjck
e3x7MURpRFd3I0JWfi1ZKV9hJmNCX3YKentqazl2JU4mV2V3YElGKWFeREx1Rz45Szd0ZntLMWRW
Qlk0KSF3XiM7QHdCckFOY2gtZ1B+I2wlV350YClVNlJaCnpaSFlKRGY2d1FXWkE7dkliNUM7R1dm
UCMqQClgakt5UDFhe2UlTSNQPjx7bHtsZTBieEVEejdDbU5AP0wpX0Rlbwp6OGQrZW9UanV5YHlI
NSR9MHRecSV1WTA+UntKcWtpQUtHbVU0RClYc2NLK1BaZE9BRVh7NmkpJXhuQWRFdSRVZmwKenE0
aHZlSUt6U1BaeSZ7fkJxTHNORihtQiNiNzhZbnhQSUp4enZjVGNNalVAXnhMP2lTQF9ZTE9wUDNv
LWVtJDZjCnpMcUE4YllNVjh+aHBEeERUSmBFciN3SChKe18pMztBR2E3OG89QFZjYFdvbGIlZ1J0
PVlHMyFxVzhMUXNhcUF+QAp6R2N3ZUtVSF45SmFNXkN6d3VreT4qJSUoJjwyX3ZQX1B5PUBVOTUj
Tj8penNsR2tpRXl3UmhqUGJ6PEV8fDk/RkIKV0BUI0lXJVcrYDhoUVpVLSZ0O3VjTEs2VClJI3NP
egoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QuaHRtbAppbmRleCBlMWJhYzllYjczNGQ5ZTg3Y2M3MjhiNjhkMGExZDQ5ZjA0ZDNl
ZTk0Li42ZDM4OGYzMjE3NjE5OTM3ZGU3MDUxNDQ2NWMyNTM4OTY2NTdjNzczIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9y
LXNjYWxlLXRlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbApAQCAtMyw3ICszLDcgQEAKICAg
ICA8c2NyaXB0PgogICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewogICAgICAgICAgICAg
d2luZG93LmludGVybmFscy5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShkb2N1bWVudCwgdHJ1ZSk7
Ci0gICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFpvb21BbmltYXRvclRyYW5zZm9ybShk
b2N1bWVudCwgMS4yNSwgLTI1LjAsIC0yNS4wKTsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0Wm9vbVBhcmFtZXRlcnMoZG9jdW1lbnQsIDEuMjUsIDEwMCwgMTAwKTsKICAgICAgICAg
fQogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgICAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0
b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pv
b20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1h
bmltYXRvci1zY2FsZS10ZXN0Mi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
NzU5YTMyMmVlZTEzMDIxNmM2NGVjYjE1Y2U1ZGFjZWVkNjc0ZDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9y
LXNjYWxlLXRlc3QyLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+CisgIDxoZWFkPgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGRvY3VtZW50LCB0cnVlKTsK
KyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZG9j
dW1lbnQsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQodHJ1ZSk7CisgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRpbWVyOworCisgICAg
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRl
cm5hbHMgfHwgKHdpbmRvdy5pbnRlcm5hbHMuZ2V0UGFnZVNjYWxlRmFjdG9yKGRvY3VtZW50KSA9
PSAxLjI1KSkgeworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOworICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICJoaWRk
ZW4iOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBkb1Rlc3Qo
KSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYUJveCIpLnN0eWxlLmJh
Y2tncm91bmRDb2xvciA9ICJncmVlbiI7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Wm9vbUFuaW1hdG9yVHJh
bnNmb3JtKGRvY3VtZW50LCAxLjI1LCAxMDAuMCwgMTAwLjApOworICAgICAgICAgICAgICAgIC8v
IENoZWNrIGV2ZXJ5IDEwMCBtUyBmb3IgYW5pbWF0aW9uIGNvbXBsZXRpb24uCisgICAgICAgICAg
ICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbCgiZmluaXNoVGVzdCgpIiwgMjUwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgZG9UZXN0LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKzxib2R5IGlkPSJ0
aGVCb2R5Ij4KKyAgPCEtLSAgICBJZiBzdWNjZXNzZnVsLCB0aGUgYm94IHNob3VsZCBlbmxhcmdl
IHRvIGJlIDEyNXgxMjUgYXQgKDEyNSwxMjUpLgorICAgIC0tPgorICA8ZGl2IGlkPSJhQm94IiBz
dHlsZT0id2lkdGg6MTAwcHg7IGhlaWdodDoxMDBweDsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6
MTAwcHg7IHRvcDoxMDBweDsgYmFja2dyb3VuZC1jb2xvcjojRkYwMDAwIj48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAppbmRleCBhM2YxZTExZTk2YmI1Nzk4OTJkMDdhOWEzZGVmODdkNmRl
NDc0YTZlLi41Zjg1OGVlODRiZGIxYWRjZjg3M2M1YzhlNWZmNzgwOWIwY2M0NDFiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CkBAIC0yNjY0LDYgKzI2NjQsOCBAQCBCVUdXSzU1OTY4IFdJTiBERUJVRyBHUFUgOiBjb21wb3Np
dGluZy93ZWJnbC93ZWJnbC1ub25wcmVtdWx0aXBsaWVkLWJsZW5kLmh0bWwgPQogQlVHV0s1ODU4
NyBMSU5VWCBHUFUgREVCVUcgOiBtZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCA9
IElNQUdFCiBCVUdDUjk3Njg2IExJTlVYIEdQVSBSRUxFQVNFIDogbWVkaWEvdmlkZW8tY29udHJv
bHMtcmVuZGVyaW5nLmh0bWwgPSBJTUFHRQogCitCVUdXS3h4eHh4IE1BQyBXSU4gR1BVIEdQVS1D
RyA6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVz
dDIuaHRtbCA9IElNQUdFCisKIEJVR0NSNzIyMjMgOiBtZWRpYS92aWRlby1mcmFtZS1hY2N1cmF0
ZS1zZWVrLmh0bWwgPSBQQVNTIElNQUdFCiAKIEJVR1dLNTM4NjggOiBmYXN0L25vdGlmaWNhdGlv
bnMvbm90aWZpY2F0aW9ucy1kb2N1bWVudC1jbG9zZS1jcmFzaC5odG1sID0gUEFTUyBURVhUCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNDg0OGVlZDJkODJhZDhkNjRkNWVkMmMwM2Y4MDUwYjkyZGQzYTJkNC4uNjJl
NGExZDMwMDI1ODIwMDhlZDI4OTE0Njc4ODRkOTE5N2I5OWZiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU0IEBACisyMDExLTA5LTI5ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFpvb20gYW5pbWF0b3IgZnJvbnQtZW5kIFt3
b3JrLWluLXByb2dyZXNzLCBub3QgZm9yIHJldmlldyB5ZXQgLi4uXQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwMzUKKworICAgICAgICBBZGRzIG5l
Y2Vzc2FyeSBjb21wb25lbnRzIHRvIFNjcm9sbEFuaW1hdG9yTm9uZSB0byBzdXBwb3J0IGEgem9v
bSBhbmltYXRpb24KKyAgICAgICAgZmVhdHVyZS4gSW5jbHVkZXMgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB2aWEgdGVzdGluZy9JbnRlcm5hbHMgdG8gY2FwdHVyZQorICAgICAgICBpbi1wcm9ncmVzcyB0
ZXh0dXJlIHNjYWxpbmcgKHpvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5odG1sKSBhcyB3ZWxsIGFz
IGEKKyAgICAgICAgZmluYWwgdmlldyAtLS0gYWZ0ZXIgcGFnZVNjYWxlRmFjdG9yIGhhcyBiZWVu
IGFwcGxpZWQgLS0tIGluIHpvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbC4KKworICAgICAg
ICBSZW1vdmVzIHRlbXBvcmFyeSB0ZXN0IGZpZWxkcyBmcm9tIFNldHRpbmdzLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbAorCisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdl
ZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6bm90aWZ5Wm9vbUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Onpvb21UcmFuc2xhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6cmVzZXRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjp0ZXN0Wm9vbVBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6em9vbVNj
YWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpab29tRGF0YTo6Wm9vbURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpab29tRGF0YTo6YW5pbWF0ZVpvb20p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpTY3JvbGxBbmltYXRvck5v
bmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFy
ZWE6Onpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRFbmFibGVTY3JvbGxBbmltYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmdldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldFpvb21QYXJhbWV0ZXJzKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMS0xMC0w
MyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogbW92ZSBjb25zb2xlIG1lc3NhZ2UgZm9ybWF0dGluZyBmcm9tIENvbnNvbGVWaWV3
LmpzIGludG8gQ29uc29sZU1lc3NhZ2UuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCA0MjliOTIwZTYzYjZiMDk4NmUyMmFiZjBkNTgwOGRlYjQxODViYzc5Li45MmFiODRj
ZTYxMmUzYjgxMWFjYTNhMjhlOTYxZDYwYThjNDhhMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC0yMjI1LDggKzIyMjUsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQp
CiAgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJs
ZVRhcFR5cGU6Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlNjcm9sbFVwZGF0ZVR5cGU6IHsKICAgICAgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlzb3IgPSAo
ZmxvYXQpV2hlZWxFdmVudDo6dGlja011bHRpcGxpZXI7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBs
YWNlIHRoaXMgaW50ZXJpbSBpbXBsZW1lbnRhdGlvbiBvbmNlIHRoZSBhYm92ZSBmaXhtZSBoYXMg
YmVlbiBhZGRyZXNzZWQuCkBAIC0yMjM2LDYgKzIyMzQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZl
bnQpCiAgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpE
b3VibGVUYXBUeXBlOgogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2lu
VHlwZToKICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgogICAg
ICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggZDEyMzMxODFhMmFmNTdiMzU4ZjFkMjYxN2M0ZThhMjNlMTM0OTg3My4u
MTM3NTk4ZDczYzFiMDljOWIzZjU2NGY4YzgwMDE1MWU1OGVmM2M2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMTIyMCw2ICsxMjIwLDIyIEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1v
dmVXaWRnZXRUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCogb2JqZWN0KQogICAgIG1fd2lk
Z2V0VXBkYXRlU2V0LT5yZW1vdmUob2JqZWN0KTsKIH0KIAordm9pZCBGcmFtZVZpZXc6Onpvb21B
bmltYXRvclRyYW5zZm9ybUNoYW5nZWQoZG91YmxlIHNjYWxlLCBkb3VibGUgeCwgZG91YmxlIHks
IGJvb2wgaXNGaW5pc2hlZCkKK3sKKyAgICBpZiAoaXNGaW5pc2hlZCkgeworICAgICAgICBtX3Bh
Z2UtPnNldFBhZ2VTY2FsZUZhY3RvcihtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpICogc2NhbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFBvaW50KHNjYWxlICog
c2Nyb2xsWCgpIC0geCwgc2NhbGUgKiBzY3JvbGxZKCkgLSB5KSk7CisgICAgICAgIHNjcm9sbEFu
aW1hdG9yKCktPnJlc2V0Wm9vbSgpOworICAgIH0KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9IHJvb3RSZW5kZXJlcih0aGlzKSkg
eworICAgICAgICBpZiAocm9vdC0+dXNlc0NvbXBvc2l0aW5nKCkpCisgICAgICAgICAgICByb290
LT5jb21wb3NpdG9yKCktPnNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIH0KKyNlbmRpZgorfQor
CiB2b2lkIEZyYW1lVmlldzo6c2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQog
ewogICAgIG1fbWVkaWFUeXBlID0gbWVkaWFUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5k
ZXggNDQyZTA4Y2FiZTEwNDY3ZWFkZWZjOWU2ZWU2MjRlZWU1ZmFmZDhjNy4uOTExMWIxNjZmMGI0
MzEzZmZhMGY2YzhhZjNkMDQ0OTRiMmFmODU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBA
IC0xNzAsNiArMTcwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Rml4ZWRF
bGVtZW50c0FmdGVyU2Nyb2xsaW5nKCk7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJh
bmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lk
IHpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgYm9v
bCk7CisKICAgICBTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVR5
cGUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBhZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyhi
b29sIHByaW50aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggZDdlMDBkMWM3ZGE2
MjdkMWE3ZmE1YjRhYmUyNmVhMGJiOTAwOWIwNC4uZTA0MWNmMDNmNTZlZDg4MDM2YmQ3ZjFhYzk3
MjM3YjU4NDNiMGRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTIxOCw5ICsyMTgs
NiBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fbWVkaWFQbGF5YmFj
a0FsbG93c0lubGluZSh0cnVlKQogICAgICwgbV9wYXNzd29yZEVjaG9FbmFibGVkKGZhbHNlKQog
ICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6Omxv
YWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCi0gICAgLCBtX3pvb21BbmltYXRvclNj
YWxlKDEpCi0gICAgLCBtX3pvb21BbmltYXRvclBvc1goMCkKLSAgICAsIG1fem9vbUFuaW1hdG9y
UG9zWSgwKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQs
IHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAvLyBoYXNoIGJlZm9yZSB0
cnlpbmcgdG8gdXNlIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGRiNzM2NDhkNGExMGI5
YjJkY2Y1NTQ0MmI5MjdhMTlmOGIwZmIxYzAuLjRiMGNmYmY4ZmI2ODhmOTZjZTRhODQzMGFiMjhk
Zjg3ZTk3YTgyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTQzMiwxMyArNDMyLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEZvcmNlQ29tcG9zaXRpbmdNb2Rl
KGJvb2wgZmxhZykgeyBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlID0gZmxhZzsgfQogICAgICAgICBi
b29sIGZvcmNlQ29tcG9zaXRpbmdNb2RlKCkgeyByZXR1cm4gbV9mb3JjZUNvbXBvc2l0aW5nTW9k
ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoZmxvYXQgc2NhbGUpIHsg
bV96b29tQW5pbWF0b3JTY2FsZSA9IHNjYWxlOyB9Ci0gICAgICAgIGZsb2F0IHpvb21BbmltYXRv
clNjYWxlKCkgeyByZXR1cm4gbV96b29tQW5pbWF0b3JTY2FsZTsgfQotCi0gICAgICAgIHZvaWQg
c2V0Wm9vbUFuaW1hdG9yUG9zaXRpb24oZmxvYXQgeCwgZmxvYXQgeSkgeyBtX3pvb21BbmltYXRv
clBvc1ggPSB4OyBtX3pvb21BbmltYXRvclBvc1kgPSB5OyB9Ci0gICAgICAgIGZsb2F0IHpvb21B
bmltYXRvclBvc1goKSB7IHJldHVybiBtX3pvb21BbmltYXRvclBvc1g7IH0KLSAgICAgICAgZmxv
YXQgem9vbUFuaW1hdG9yUG9zWSgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWTsgfQotCiAg
ICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3Vt
ZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlE
b2N1bWVudCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBzaG91bGRJbmplY3RVc2VyU2NyaXB0c0lu
SW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRz
SW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQogCkBAIC02MDcsMTAgKzYwMCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICBzdGF0aWMgYm9vbCBnTW9ja1Njcm9sbGJhcnNF
bmFibGVkOwogCi0gICAgICAgIGZsb2F0IG1fem9vbUFuaW1hdG9yU2NhbGU7Ci0gICAgICAgIGZs
b2F0IG1fem9vbUFuaW1hdG9yUG9zWDsKLSAgICAgICAgZmxvYXQgbV96b29tQW5pbWF0b3JQb3NZ
OwotCiAjaWYgVVNFKFNBRkFSSV9USEVNRSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBh
aW50TmF0aXZlQ29udHJvbHM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcAppbmRleCA1NTM4ZWZkZDFhY2Q5ZDEzY2YyODZjNmRhZDA1MWUxODhmMTNl
NzNhLi41MmUxYWEwYjQ0ZDllNjJjNTY5NWJmOThlZjE0OWUyZDZhOWQ2YzI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01Miw2ICs1Miw5IEBAIFNj
cm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFy
ZWEpCiAgICAgOiBtX3Njcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9jdXJy
ZW50UG9zWCgwKQogICAgICwgbV9jdXJyZW50UG9zWSgwKQorICAgICwgbV9jdXJyZW50Wm9vbVNj
YWxlKDEpCisgICAgLCBtX2N1cnJlbnRab29tVHJhbnNYKDApCisgICAgLCBtX2N1cnJlbnRab29t
VHJhbnNZKDApCiB7CiB9CiAKQEAgLTEyOSw0ICsxMzIsMjkgQEAgdm9pZCBTY3JvbGxBbmltYXRv
cjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKCkKICAgICBtX3Njcm9sbGFibGVBcmVhLT5zZXRTY3Jv
bGxPZmZzZXRGcm9tQW5pbWF0aW9uKEludFBvaW50KG1fY3VycmVudFBvc1gsIG1fY3VycmVudFBv
c1kpKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6bm90aWZ5Wm9vbUNoYW5nZWQoYm9vbCBp
c0ZpbmlzaGVkKQoreworICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnpvb21BbmltYXRvclRyYW5zZm9y
bUNoYW5nZWQobV9jdXJyZW50Wm9vbVNjYWxlLCBtX2N1cnJlbnRab29tVHJhbnNYLCBtX2N1cnJl
bnRab29tVHJhbnNZLCBpc0ZpbmlzaGVkKTsKK30KKworRmxvYXRQb2ludCBTY3JvbGxBbmltYXRv
cjo6em9vbVRyYW5zbGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludChtX2N1
cnJlbnRab29tVHJhbnNYLCBtX2N1cnJlbnRab29tVHJhbnNZKTsKK30KKwordm9pZCBTY3JvbGxB
bmltYXRvcjo6cmVzZXRab29tKCkKK3sKKyAgICBtX2N1cnJlbnRab29tU2NhbGUgPSAxOworICAg
IG1fY3VycmVudFpvb21UcmFuc1ggPSAwOworICAgIG1fY3VycmVudFpvb21UcmFuc1kgPSAwOwor
fQorCit2b2lkIFNjcm9sbEFuaW1hdG9yOjp0ZXN0Wm9vbVBhcmFtZXRlcnMoZmxvYXQgc2NhbGUs
IGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgbV9jdXJyZW50Wm9vbVNjYWxlID0gc2NhbGU7Cisg
ICAgbV9jdXJyZW50Wm9vbVRyYW5zWCA9ICgxIC0gc2NhbGUpICogeDsKKyAgICBtX2N1cnJlbnRa
b29tVHJhbnNZID0gKDEgLSBzY2FsZSkgKiB5OworICAgIG5vdGlmeVpvb21DaGFuZ2VkKGZhbHNl
KTsgLy8gRG9uJ3QgbGV0IHBhZ2UgcmUtc2NhbGUuCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDY2NzM4MWIz
MTFkOTJmNTU5OGMxN2UyMjRjMGJlMGM1NjY0NTUxYjYuLmI1NmUzMzNjM2NhM2JmMDFkM2Q1NmM4
Mzk1YTJmYTAxMjg0YzZjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaApAQCAtODcsMTQgKzg3LDI0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRk
SG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgeyB9CiAKKyAgICBmbG9hdCB6
b29tU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRab29tU2NhbGU7IH0KKyAgICBGbG9h
dFBvaW50IHpvb21UcmFuc2xhdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZXNldFpv
b20oKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGVzdFpvb21QYXJhbWV0ZXJzKGZsb2F0LCBmbG9hdCwg
ZmxvYXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEq
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5nZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5Wm9vbUNoYW5nZWQoYm9vbCk7CiAKICAgICBTY3JvbGxhYmxlQXJlYSog
bV9zY3JvbGxhYmxlQXJlYTsKICAgICBmbG9hdCBtX2N1cnJlbnRQb3NYOyAvLyBXZSBhdm9pZCB1
c2luZyBhIEZsb2F0UG9pbnQgaW4gb3JkZXIgdG8gcmVkdWNlCiAgICAgZmxvYXQgbV9jdXJyZW50
UG9zWTsgLy8gc3ViY2xhc3MgY29kZSBjb21wbGV4aXR5LgorCisgICAgZmxvYXQgbV9jdXJyZW50
Wm9vbVNjYWxlOworICAgIGZsb2F0IG1fY3VycmVudFpvb21UcmFuc1g7CisgICAgZmxvYXQgbV9j
dXJyZW50Wm9vbVRyYW5zWTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCmluZGV4IDlhMzlkZDI1
YjkzMDRmM2M1NGRjNjBlOGUyZWFlN2I5ZmM0NDEzNjkuLmY5YjliZTFmMGI2MGQ2MGE4ODVhZGQy
YTIyZjM5NjQ3MzlkZGY0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JOb25lLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIk93bkFycmF5UHRyLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxl
QXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgpAQCAtMzY2LDEwICszNjcsMzcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4
aXNEYXRhOjp1cGRhdGVWaXNpYmxlTGVuZ3RoKExheW91dFVuaXQgdmlzaWJsZUxlbmcKICAgICBt
X3Zpc2libGVMZW5ndGggPSB2aXNpYmxlTGVuZ3RoOwogfQogCitTY3JvbGxBbmltYXRvck5vbmU6
Olpvb21EYXRhOjpab29tRGF0YShXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmUqIHBhcmVudCwg
ZmxvYXQqIHNjYWxlLCBmbG9hdCogdHJhbnNYLCBmbG9hdCogdHJhbnNZKQorICAgIDogbV9jdXJy
ZW50U2NhbGUoc2NhbGUpCisgICAgLCBtX2N1cnJlbnRUcmFuc1godHJhbnNYKQorICAgICwgbV9j
dXJyZW50VHJhbnNZKHRyYW5zWSkKKyAgICAsIG1faXNBbmltYXRpbmcoZmFsc2UpCit7Cit9CisK
K2Jvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpab29tRGF0YTo6YW5pbWF0ZVpvb20oZG91YmxlIGN1
cnJlbnRUaW1lKQoreworICAgIG1fbGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKyAg
ICBkb3VibGUgZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZTsKKworICAgIGlm
IChkZWx0YVRpbWUgPiBtX2FuaW1hdGlvblRpbWUpIHsKKyAgICAgICAgKm1fY3VycmVudFNjYWxl
ID0gbV9kZXNpcmVkU2NhbGU7CisgICAgICAgICptX2N1cnJlbnRUcmFuc1ggPSBtX2Rlc2lyZWRU
cmFuc1g7CisgICAgICAgICptX2N1cnJlbnRUcmFuc1kgPSBtX2Rlc2lyZWRUcmFuc1k7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqbV9jdXJyZW50U2NhbGUgPSBkZWx0YVRp
bWUgLyBtX2FuaW1hdGlvblRpbWUgKiAobV9kZXNpcmVkU2NhbGUgLSBtX3N0YXJ0U2NhbGUpICsg
bV9zdGFydFNjYWxlOworICAgICptX2N1cnJlbnRUcmFuc1ggPSBkZWx0YVRpbWUgLyBtX2FuaW1h
dGlvblRpbWUgKiBtX2Rlc2lyZWRUcmFuc1g7CisgICAgKm1fY3VycmVudFRyYW5zWSA9IGRlbHRh
VGltZSAvIG1fYW5pbWF0aW9uVGltZSAqIG1fZGVzaXJlZFRyYW5zWTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogU2Nyb2xsQW5pbWF0b3JOb25lOjpTY3JvbGxBbmltYXRvck5vbmUoU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogICAgIDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFy
ZWEpCiAgICAgLCBtX2hvcml6b250YWxEYXRhKHRoaXMsICZtX2N1cnJlbnRQb3NYLCBzY3JvbGxh
YmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkpCiAgICAgLCBtX3ZlcnRpY2FsRGF0YSh0aGlzLCAmbV9j
dXJyZW50UG9zWSwgc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWlnaHQoKSkKKyAgICAsIG1fem9v
bURhdGEodGhpcywgJm1fY3VycmVudFpvb21TY2FsZSwgJm1fY3VycmVudFpvb21UcmFuc1gsICZt
X2N1cnJlbnRab29tVHJhbnNZKQogICAgICwgbV9hbmltYXRpb25UaW1lcih0aGlzLCAmU2Nyb2xs
QW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZpcmVkKQogewogfQpAQCAtNDM1LDYgKzQ2Myw2
MSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldAogICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZCgp
OwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbShjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgcGdlKQoreworICAgIEFTU0VSVChwZ2UudHlwZSgpID09IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpEb3VibGVUYXBUeXBlKTsKKyAgICAvLyBGSVhNRSh3am1hY2xlYW4pOiBtb2RpZnkg
dGhpcyBzbyB3ZSBjYW4gc3RhcnQgZXZlbiBpZiB0aGUgdGltZXIgaXMgYWN0aXZlLgorICAgIGlm
ICghbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fY3VycmVudFpvb21T
Y2FsZSA9IDE7CisgICAgICAgIG1fY3VycmVudFpvb21UcmFuc1ggPSAwOworICAgICAgICBtX2N1
cnJlbnRab29tVHJhbnNZID0gMDsKKworICAgICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6
Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgICAgICBmbG9hdCBzY2FsZSA9IHBn
ZS5kZWx0YVgoKTsKKworICAgICAgICBtX3pvb21EYXRhLm1fc3RhcnRUaW1lID0gY3VycmVudFRp
bWUgLSBrVGlja1RpbWUgLyAyOworICAgICAgICBtX3pvb21EYXRhLm1fc3RhcnRTY2FsZSA9IG1f
Y3VycmVudFpvb21TY2FsZTsKKyAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRTY2FsZSA9IHNj
YWxlOworICAgICAgICAvLyBGSVhNRSh3am1hY2xlYW4pIERvY3VtZW50IHRoZW4gc2ltcGxpZnkg
dGhlIGZvbGxvd2luZyBlcXVhdGlvbnMuCisgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJh
bnNYID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24oKS54KCk7CisgICAgICAgIG1f
em9vbURhdGEubV9kZXNpcmVkVHJhbnNZID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRp
b24oKS55KCk7CisjaWYgRU5BQkxFKERPVUJMRV9UQVBfQ0VOVEVSUykKKyAgICAgICAgaWYgKHBn
ZS50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpIHsKKyAgICAg
ICAgICAgIC8vIFpvb20gdG8gY2VudHJlIG9mIGRpc3BsYXkuIFBpbmNoLXRvLXpvb20gbWF5IG5v
dCB3YW50IHRoaXMgYmVoYXZpb3VyLgorICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRU
cmFuc1ggKz0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkgLyAyIC0gcGdlLmdsb2Jh
bFBvc2l0aW9uKCkueCgpOworICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1kg
Kz0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgpIC8gMiAtIHBnZS5nbG9iYWxQb3Np
dGlvbigpLnkoKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1fem9vbURhdGEubV9sYXN0
QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX3pvb21EYXRhLm1fYW5pbWF0
aW9uVGltZSA9IDUwICoga1RpY2tUaW1lOworCisgICAgICAgIGJvb2wgaXNDb250aW51aW5nID0g
bV96b29tRGF0YS5hbmltYXRlWm9vbShjdXJyZW50VGltZSk7CisKKyAgICAgICAgZG91YmxlIGRl
bHRhVG9OZXh0RnJhbWUgPSBjZWlsKChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKSAqIGtGcmFt
ZVJhdGUpIC8ga0ZyYW1lUmF0ZSAtIChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKKyAgICAg
ICAgZG91YmxlIG5leHRUaW1lckludGVydmFsID0gbWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwg
ZGVsdGFUb05leHRGcmFtZSk7CisgICAgICAgIGlmIChpc0NvbnRpbnVpbmcpIHsKKyAgICAgICAg
ICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsKKyAg
ICAgICAgICAgIG1fem9vbURhdGEubV9pc0FuaW1hdGluZyA9IHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgbm90aWZ5Wm9vbUNoYW5nZWQoIWlzQ29udGludWluZyk7CisgICAgfQorfQorCisjaWYg
RU5BQkxFKEdFU1RVUkVfRVZFTlRTKQordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQoreworICAgIHN3aXRj
aCAocGdlLnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRh
cFR5cGU6CisgICAgICAgIHpvb20ocGdlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0
OgorICAgICAgICAvLyBUT0RPOiBhZGQgYW55IG90aGVyIGV2ZW50IHR5cGVzIHdlIHNob3VsZCBo
YW5kbGUKKyAgICAgICAgeyB9CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgU2Nyb2xsQW5pbWF0
b3JOb25lOjp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiB7CiAgICAgdXBkYXRlVmlzaWJsZUxlbmd0aHMo
KTsKQEAgLTQ2Niw2ICs1NDksMTcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlv
blRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiogdGltZXIpCiAgICAgICAgIGNv
bnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKICAgICBpZiAobV92ZXJ0aWNhbERhdGEubV9zdGFydFRp
bWUgJiYgbV92ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSArIGRlbHRhVG9O
ZXh0RnJhbWUpKQogICAgICAgICBjb250aW51ZUFuaW1hdGlvbiA9IHRydWU7CisKKyAgICBpZiAo
bV96b29tRGF0YS5tX2lzQW5pbWF0aW5nKSB7CisgICAgICAgIGlmIChtX3pvb21EYXRhLm1fc3Rh
cnRUaW1lICYmIG1fem9vbURhdGEuYW5pbWF0ZVpvb20oY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4
dEZyYW1lKSkgeworICAgICAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOworICAgICAg
ICAgICAgbm90aWZ5Wm9vbUNoYW5nZWQoIWNvbnRpbnVlQW5pbWF0aW9uKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG5vdGlmeVpvb21DaGFuZ2VkKHRydWUpOworICAgICAgICAgICAg
bV96b29tRGF0YS5tX2lzQW5pbWF0aW5nID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBpZiAoY29udGludWVBbmltYXRpb24pIHsKICAgICAgICAgZG91YmxlIG5leHRUaW1lckludGVy
dmFsID0gbWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGFUb05leHRGcmFtZSk7CiAgICAg
ICAgIHRpbWVyLT5zdGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2YWwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAppbmRleCAwYzBlYjE2YTFmZjk0MTIx
ZTQ3Mzg1OWZmYWQ4ZmE1NmQxODE5ZmZlLi45ZTFjY2I1OWM0M2M5MTU2NWY0ZjBkMjY1ZWZkM2E1
YzJlMWI1OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5v
bmUuaApAQCAtNTEsNiArNTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChT
Y3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0
IG11bHRpcGxpZXIpOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmlt
YXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogCisgICAgdmlydHVhbCB2b2lkIHpvb20oY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2VzdHVyZUV2
ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEVuZExpdmVSZXNpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxi
YXIoU2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3JvbGxi
YXIoU2Nyb2xsYmFyKik7CkBAIC0xMjcsMTIgKzEzMCwzNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IExheW91dFVuaXQgbV92aXNpYmxlTGVuZ3RoOwogICAgIH07CiAKKyAgICAvLyBXaGlsZSB6b29t
aW5nLCBzY2FsZSwgcG9zWCBhbmQgcG9zWSBuZWVkIHRvIHN0YXkgdGlnaHRseSBjb3VwbGVkLCBz
byB1c2UgYSBzZXBhcmF0ZQorICAgIC8vIGRhdGEgc3RydWN0dXJlLgorICAgIHN0cnVjdCBab29t
RGF0YSB7CisgICAgICAgIFpvb21EYXRhKFNjcm9sbEFuaW1hdG9yTm9uZSogcGFyZW50LCBmbG9h
dCogY3VycmVudFNjYWxlLCBmbG9hdCogY3VycmVudFBvc1gsIGZsb2F0KiBjdXJyZW50UG9zWSk7
CisgICAgICAgIGJvb2wgYW5pbWF0ZVpvb20oZG91YmxlIGN1cnJlbnRUaW1lKTsKKworICAgICAg
ICBmbG9hdCogbV9jdXJyZW50U2NhbGU7CisgICAgICAgIGZsb2F0KiBtX2N1cnJlbnRUcmFuc1g7
CisgICAgICAgIGZsb2F0KiBtX2N1cnJlbnRUcmFuc1k7CisKKyAgICAgICAgYm9vbCBtX2lzQW5p
bWF0aW5nOworCisgICAgICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKworICAgICAgICBkb3VibGUg
bV9hbmltYXRpb25UaW1lOworICAgICAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uVGltZTsKKwor
ICAgICAgICBkb3VibGUgbV9zdGFydFNjYWxlOworICAgICAgICBkb3VibGUgbV9kZXNpcmVkU2Nh
bGU7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFuc1g7CisgICAgICAgIGRvdWJsZSBtX2Rl
c2lyZWRUcmFuc1k7CisgICAgfTsKKwogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZChUaW1l
cjxTY3JvbGxBbmltYXRvck5vbmU+Kik7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uVGltZXJJZk5l
ZWRlZCgpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIAogICAgIFBlckF4aXNE
YXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7Cisg
ICAgWm9vbURhdGEgbV96b29tRGF0YTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBU
aW1lcjxTY3JvbGxBbmltYXRvck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggYzdhMzk5N2I1NTU4MjhjNDY2ZWNm
ZWE5ZDEzNjhmMTk3ZjgxMjlhOC4uZGIxNTQ3ZmE4ZTI1YjA5MjI3NDc2MmFkY2U3NTE5ZGQ2ZmI4
MGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAt
MTIzLDYgKzEyMywxMSBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKGZsb2F0IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9u
KEZsb2F0UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7
CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6Onpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5nZWQo
ZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgYm9vbCkKK3sKKyAgICAvLyBSZXF1aXJlcyBGcmFtZVZp
ZXcgdG8gb3ZlcnJpZGUgdGhpcy4KK30KKwogdm9pZCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hl
ZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgc2Nyb2xsQW5p
bWF0b3IoKS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDViNTRjYmNjNGFiNjIzYjA4ZmZjNjRlYzU0OTU2
NTcyNGYxMDNiNjUuLmM2ZjkyMjgyNGYxMTExZTg0NmNlYWUwZWUyZDFhN2Y5NTVkMTQ0OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNTIsNiArNTIsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxUb1hPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0
IHgpOwogICAgIHZvaWQgc2Nyb2xsVG9ZT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihmbG9hdCB4KTsK
IAorICAgIHZpcnR1YWwgdm9pZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGRvdWJsZSwg
ZG91YmxlLCBkb3VibGUsIGJvb2wpOworCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFBsYXRm
b3JtV2hlZWxFdmVudCYpOwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICB2b2lkIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ2NGQwYjdjNDc2OGYxM2NlYmIwOGNhZWQzODEw
NGMyOGFiZGVhZDYuLjIwZTdiMzQ5Y2RmODA5MDgzYThjYWExZjJjNTk5NWQ4OWE3ZTQ3NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgpAQCAtNDEsOSArNDIsMTUgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2lm
IEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5o
IgorI2VuZGlmCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCkBAIC0yNDQsMTUgKzI1MSw1MSBAQCB2b2lkIEludGVybmFsczo6c2V0Rm9yY2VD
b21wb3NpdGluZ01vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdAog
ICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShlbmFibGVk
KTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVu
dCAqZG9jdW1lbnQsIGRvdWJsZSBzY2FsZSwgZG91YmxlIHR4LCBkb3VibGUgdHksIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBJbnRlcm5hbHM6OnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2V0dGluZ3MoKSkgewogICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvY3VtZW50
LT5zZXR0aW5ncygpLT5zZXRab29tQW5pbWF0b3JTY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4oc2Nh
bGUpKTsKLSAgICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0Wm9vbUFuaW1hdG9yUG9zaXRpb24o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHR4KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHR5KSk7CisjaWYgRU5B
QkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldEVuYWJs
ZVNjcm9sbEFuaW1hdG9yKGVuYWJsZWQpOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJuYWxzOjpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1lbnQgKmRvY3VtZW50LCBmbG9hdCBzY2FsZSwg
ZmxvYXQgdHgsIGZsb2F0IHR5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+dmlldygpIHx8ICFkb2N1bWVudC0+dmlldygpLT5mcmFtZSgpKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50
IHBnZShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgSW50UG9pbnQodHgsIHR5
KSwgSW50UG9pbnQodHgsIHR5KSwgMCwgc2NhbGUsIDAuZiwgMCwgMCwgMCwgMCk7CisgICAgZG9j
dW1lbnQtPnZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVu
dChwZ2UpOworI2VuZGlmCit9CisKK2Zsb2F0IEludGVybmFsczo6Z2V0UGFnZVNjYWxlRmFjdG9y
KERvY3VtZW50ICpkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGRvY3VtZW50LT5w
YWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOworfQorCit2b2lkIEludGVybmFsczo6c2V0Wm9vbVBh
cmFtZXRlcnMoRG9jdW1lbnQqIGRvY3VtZW50LCBmbG9hdCBzY2FsZSwgZmxvYXQgeCwgZmxvYXQg
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PnZpZXcoKSB8fCAhZG9jdW1lbnQtPnZpZXcoKS0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQorICAgIGRvY3VtZW50LT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCkt
PnRlc3Rab29tUGFyYW1ldGVycyhzY2FsZSwgeCwgeSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnRl
cm5hbHM6OnNldFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVu
YWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggNjdhMTg5OTQ5YTU2MjdlMmYyNzAyZjNhYThhZTBiN2U4YjJhODFmNy4uYWExNzZmZTg1ZTBj
MDViNzg1ZWM3ZDcyOWQ0MTE1OTIzMjczZTM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCkBAIC03Nyw3ICs3NywxMSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFy
a2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCB1bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
dm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50
KiwgZG91YmxlIHNjYWxlLCBkb3VibGUgdHgsIGRvdWJsZSB0eSwgRXhjZXB0aW9uQ29kZSYpOwor
CisgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1bWVudCosIGJvb2wgZW5hYmxl
ZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERv
Y3VtZW50KiwgZmxvYXQgc2NhbGUsIGZsb2F0IHR4LCBmbG9hdCB0eSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIGZsb2F0IGdldFBhZ2VTY2FsZUZhY3RvcihEb2N1bWVudCosICBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCBzZXRab29tUGFyYW1ldGVycyhEb2N1bWVudCosIGZsb2F0IHNjYWxlLCBm
bG9hdCB4LCBmbG9hdCB5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHNldFBhc3N3b3Jk
RWNob0VuYWJsZWQoRG9jdW1lbnQqLCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKERvY3VtZW50KiwgZG91Ymxl
IGR1cmF0aW9uSW5TZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggZDQ0MDBiOWNkOTI4NDEwYzU0ZTlkZjA1Mzk0MmM4YzMwZjk4NzMx
ZS4uNDdkMGFlN2EwNzQzZDk2NTA0MjI3NGIwYThkZjU5ZWZjNDg2Yjc0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTEsNyArNTEsMTAgQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgICAgIFJhbmdlIG1hcmtlclJhbmdlRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIHVuc2ln
bmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgc2V0
Rm9yY2VDb21wb3NpdGluZ01vZGUoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGJvb2xlYW4gZW5h
YmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9y
VHJhbnNmb3JtKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgc2NhbGUsIGluIGRvdWJs
ZSB0eCwgaW4gZG91YmxlIHR5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBz
ZXRFbmFibGVTY3JvbGxBbmltYXRvcihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBl
bmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0
b3JUcmFuc2Zvcm0oaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlLCBpbiBmbG9h
dCB0eCwgaW4gZmxvYXQgdHkpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBmbG9hdCBn
ZXRQYWdlU2NhbGVGYWN0b3IoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyhET01FeGNlcHRp
b24pOworICAgICAgICB2b2lkIHNldFpvb21QYXJhbWV0ZXJzKGluIERvY3VtZW50IGRvY3VtZW50
LCBpbiBmbG9hdCBzY2FsZSwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKICAgICAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVkKGluIERvY3VtZW50
IGRvY3VtZW50LCBpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKGluIERvY3VtZW50IGRv
Y3VtZW50LCBpbiBkb3VibGUgZHVyYXRpb25JblNlY29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyMTY5YTc3NDhhY2UxYjkxZDhlMzhlM2U5
NDI1MWU2OGQ3ZjRjZWMyLi45OTdlYmQ2NGFlMmIxMDM3YTE3NzI0NTU3MDI0MjQyNzU2YTZhYjY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTA5LTI5
ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIFpvb20gYW5pbWF0b3IgZnJvbnQtZW5kIFt3b3JrLWluLXByb2dyZXNzLCBub3Qg
Zm9yIHJldmlldyB5ZXQgLi4uXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgwMzUKKworICAgICAgICBNb2RpZmljYXRpb25zIHRvIGdldCB6b29tIHRl
eHR1cmUtc2NhbGUgcGFyYW1ldGVycyBmcm9tIFNjYWxlQW5pbWF0b3IgZGlyZWN0bHkKKyAgICAg
ICAgaW5zdGVhZCBvZiB2aWEgU2V0dGluZ3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KToKKwogMjAxMS0xMC0w
MyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk2NDgxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGIzYjE3YmE2YjEyMThkNGZhYjNlZmI4ZDY1OTdlNTNk
NWFmYjhhY2YuLjhiNzljNGI0OTZhYmRhYjRlY2NjOGMyY2ZjZmZiNzEzODA2MjQ4YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTkyLDYgKzkyLDcg
QEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKQEAgLTI1NjcsOCArMjU2OCw5IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpCiB7CiAgICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdCkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29tTWF0cml4
OwotICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0ZShtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21B
bmltYXRvclBvc1goKSwgbV9wYWdlLT5zZXR0aW5ncygpLT56b29tQW5pbWF0b3JQb3NZKCkpOwot
ICAgICAgICB6b29tTWF0cml4LnNjYWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9y
U2NhbGUoKSk7CisgICAgICAgIEZsb2F0UG9pbnQgdHJhbnMgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnpvb21UcmFuc2xhdGlvbigpOworICAgICAgICB6
b29tTWF0cml4LnRyYW5zbGF0ZSh0cmFucy54KCksIHRyYW5zLnkoKSk7CisgICAgICAgIHpvb21N
YXRyaXguc2NhbGUobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5zY3JvbGxBbmltYXRvcigp
LT56b29tU2NhbGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Wm9vbUFuaW1hdG9y
VHJhbnNmb3JtKHpvb21NYXRyaXgpOwogICAgIH0KICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJ
TkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110008</attachid>
            <date>2011-10-06 13:47:56 -0700</date>
            <delta_ts>2011-10-06 14:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20111006164450.patch</filename>
            <type>text/plain</type>
            <size>32430</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4MDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YTc0NzI1YTJiNTJiMGZhMTdjOGZi
YTE3MjI3YTg5MmU3NDBjYTQ1Li4xNmY5YmI5YWM1NjJiMmUxMGJlOTlmMmI3MWRmNmIzOWJlODdm
N2Y1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMDYgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2Nh
bGUtdGVzdC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pv
b20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMS0xMC0wNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtRdF0gaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS1pbmhlcml0
ZWQuaHRtbCBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCBhZnRlciByOTYyNTcKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMTBiZTMxNmQzZTgxODhlYjM3NGUwYjljMGY1ZDFkNGEzNmIwNGE0CkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAyODYyCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAq
Wik9aF5obEElQFdzJGxIYG9rPG19P29UbX5aKAp6QmVPSlAhe2spcyMxdnoqTTYqPGJxfnhSfGF8
MlRZIXo1JCNCbT1jMk9NV3BoYTJAYjthU1ctTF5ZK0Y/UE5xTnMKejdSVUtCd29Da3M8OGVDdEN7
cHhiamFoTnBHZSFvNz1SMGl+NyNgJVloJXE/JEJycX1AOEQkS3VLIzA0fFR6QiY0CnpvVlQzK0d3
eUErV258ZCpfI2hLUTJkNTUwITtBeD9qTHw/S2tQPmRwb2NXZlFmbm9jaihOcl48VkA4WE8oSVJz
KwppN21WaEQhSTJBWXU8a1lDVF4rdVkpZCQhQlg3Rl9OYjZNdzwmOyRTJWBXTCRaCgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5o
dG1sCmluZGV4IGUxYmFjOWViNzM0ZDllODdjYzcyOGI2OGQwYTFkNDlmMDRkM2VlOTQuLjZkMzg4
ZjMyMTc2MTk5MzdkZTcwNTE0NDY1YzI1Mzg5NjY1N2M3NzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVz
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pv
b20tYW5pbWF0b3Itc2NhbGUtdGVzdC5odG1sCkBAIC0zLDcgKzMsNyBAQAogICAgIDxzY3JpcHQ+
CiAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgICAgICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGRvY3VtZW50LCB0cnVlKTsKLSAgICAgICAg
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGRvY3VtZW50LCAx
LjI1LCAtMjUuMCwgLTI1LjApOworICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRab29t
UGFyYW1ldGVycyhkb2N1bWVudCwgMS4yNSwgMTAwLCAxMDApOwogICAgICAgICB9CiAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10
ZXN0Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRv
ci1zY2FsZS10ZXN0Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QyLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAxNmJhNDMwMTUw
MzlmNmRkODRjOTI5ODlmNWRkYWFjNWUxNjI3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVz
dDIuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoZG9jdW1lbnQsIHRydWUpOworICAgICAgICAg
ICAgd2luZG93LmludGVybmFscy5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShkb2N1bWVudCwgdHJ1
ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0
cnVlKTsKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgdGltZXI7CisgICAgICAgIHZhciBjb3Vu
dCA9IDA7CisKKyAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgIGlm
ICghd2luZG93LmludGVybmFscyB8fCAod2luZG93LmludGVybmFscy5nZXRQYWdlU2NhbGVGYWN0
b3IoZG9jdW1lbnQpID09IDEuMjUpKSB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0
aW1lcik7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92
ZXJmbG93ID0gImhpZGRlbiI7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY291bnQrKzsK
KyAgICAgICAgICAgIGlmIChjb3VudCA+PSAxMCkgLy8gQXNzdW1pbmcgMTAgaXMgZW5vdWdoLgor
ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gZG9UZXN0KCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImFCb3giKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiZ3JlZW4iOworICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldFpvb21BbmltYXRvclRyYW5zZm9ybShkb2N1bWVudCwgMS4yNSwgMTAwLjAsIDEwMC4wKTsK
KyAgICAgICAgICAgICAgICAvLyBDaGVjayBwZXJpb2RpY2FsbHkgZm9yIGFuaW1hdGlvbiBjb21w
bGV0aW9uLgorICAgICAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoImZpbmlzaFRlc3Qo
KSIsIDI1MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorICA8
L2hlYWQ+Cis8Ym9keSBpZD0idGhlQm9keSI+CisgIDwhLS0gICAgSWYgc3VjY2Vzc2Z1bCwgdGhl
IGJveCBzaG91bGQgZW5sYXJnZSB0byBiZSAxMjV4MTI1IGF0ICgxMjUsMTI1KS4KKyAgICAtLT4K
KyAgPGRpdiBpZD0iYUJveCIgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6MTAwcHg7IHBvc2l0
aW9uOmFic29sdXRlOyBsZWZ0OjEwMHB4OyB0b3A6MTAwcHg7IGJhY2tncm91bmQtY29sb3I6I0ZG
MDAwMCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMDc2ZWI5MjU5M2YzYzk2
NGNjZDc4NTNjOTRiOTg4YjU5YTQwNWExMS4uMmI3MjU1ZGVkOGYxYWI1OTA4YjExNjE4OTdjNDkw
ODMxNDU5MzI3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjY2Myw2ICsyNjYzLDggQEAgQlVHV0s1NTk2OCBXSU4g
REVCVUcgR1BVIDogY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlwbGllZC1ibGVu
ZC5odG1sID0KIEJVR1dLNTg1ODcgTElOVVggR1BVIERFQlVHIDogbWVkaWEvdmlkZW8tY29udHJv
bHMtcmVuZGVyaW5nLmh0bWwgPSBJTUFHRQogQlVHQ1I5NzY4NiBMSU5VWCBHUFUgUkVMRUFTRSA6
IG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy5odG1sID0gSU1BR0UKIAorQlVHV0t4eHh4
eCBNQUMgV0lOIEdQVSBHUFUtQ0cgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29t
LWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwgPSBJTUFHRQorCiBCVUdDUjcyMjIzIDogbWVkaWEv
dmlkZW8tZnJhbWUtYWNjdXJhdGUtc2Vlay5odG1sID0gUEFTUyBJTUFHRQogCiBCVUdXSzUzODY4
IDogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG9jdW1lbnQtY2xvc2UtY3Jhc2gu
aHRtbCA9IFBBU1MgVEVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJhYmFkNWI0Njc4ZDM3YzBjNDdkMjRiMmE4
NTVlN2JlZGQ2MGFkMjYuLmUxOWJkYTI2ZjM1NzVmYmIxYWRmNDYwNzNlNGRlZTZlNmY3ZjMxYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMS0xMC0wNiAgVy4gSmFtZXMgTWFjTGVh
biAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBab29tIGFu
aW1hdG9yIGZyb250LWVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjgwMzUKKworICAgICAgICBBZGRzIG5lY2Vzc2FyeSBjb21wb25lbnRzIHRvIFNj
cm9sbEFuaW1hdG9yTm9uZSB0byBzdXBwb3J0IGEgem9vbSBhbmltYXRpb24KKyAgICAgICAgZmVh
dHVyZS4gSW5jbHVkZXMgdGVzdCBpbmZyYXN0cnVjdHVyZSB2aWEgdGVzdGluZy9JbnRlcm5hbHMg
dG8gY2FwdHVyZQorICAgICAgICBpbi1wcm9ncmVzcyB0ZXh0dXJlIHNjYWxpbmcgKHpvb20tYW5p
bWF0b3Itc2NhbGUtdGVzdC5odG1sKSBhcyB3ZWxsIGFzIGEKKyAgICAgICAgZmluYWwgdmlldyAt
LS0gYWZ0ZXIgcGFnZVNjYWxlRmFjdG9yIGhhcyBiZWVuIGFwcGxpZWQgLS0tIGluIHpvb20tYW5p
bWF0b3Itc2NhbGUtdGVzdDIuaHRtbC4KKworICAgICAgICBSZW1vdmVzIHRlbXBvcmFyeSB0ZXN0
IGZpZWxkcyBmcm9tIFNldHRpbmdzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20t
YW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbAorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvcjo6bm90aWZ5Wm9vbUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6Onpvb21UcmFuc2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
cmVzZXRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzZXRab29tUGFy
YW1ldGVyc0ZvclRlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6em9vbVNjYWxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JOb25lOjpab29tRGF0YTo6Wm9vbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JOb25lOjpab29tRGF0YTo6YW5pbWF0ZVpvb20pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpTY3JvbGxBbmltYXRvck5vbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JOb25lLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Onpvb21BbmltYXRvclRy
YW5zZm9ybUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpzZXRFbmFibGVTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmdldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNl
dFpvb21QYXJhbWV0ZXJzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMS0xMC0wNSAgUGF2ZWwgRmVsZG1hbiAg
PHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIDEwIG1v
cmUgZnJvbnQtZW5kIGNsYXNzZXMgdG8gdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggODBkMTQyYzk5MjM5ODBjMzk3YjgxNzdiNDk0
NTZlMDMzZmNkMTZhNS4uYzYzZmFlZTg0ODk0ODc3N2JkNTY3Y2MxZjkzNmQ2NjBhOWFkNTMzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjIzNSw4ICsyMjM1LDYgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChm
YWtlTW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgotICAgICAgICBicmVhazsKICAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CiAgICAgICAgIGNvbnN0
IGZsb2F0IHRpY2tEaXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwog
ICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0gaW1wbGVtZW50YXRpb24gb25j
ZSB0aGUgYWJvdmUgZml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgpAQCAtMjI0Niw2ICsyMjQ0LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRo
ZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgY2FzZSBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKICAgICBjYXNlIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6U2Nyb2xsRW5kVHlwZToKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmll
dygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNjZjdlZGEzNjNlOGE3NjljM2Jj
YTYxZmZhMWUyZGY1NDY2ZjU3MDIuLjVmZGIzZDU5NzU1ZTQ0MmZkNGRmM2M0ODk3NjNhZDlhOGM5
ZDQwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNp
bmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKQEAgLTEyMjAsNiArMTIyMSwyNCBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlV2lkZ2V0VG9V
cGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QqIG9iamVjdCkKICAgICBtX3dpZGdldFVwZGF0ZVNl
dC0+cmVtb3ZlKG9iamVjdCk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3Ojp6b29tQW5pbWF0b3JUcmFu
c2Zvcm1DaGFuZ2VkKGRvdWJsZSBzY2FsZSwgZG91YmxlIHgsIGRvdWJsZSB5LCBab29tQW5pbWF0
aW9uU3RhdGUgc3RhdGUpCit7CisgICAgaWYgKHN0YXRlID09IFpvb21BbmltYXRpb25GaW5pc2hp
bmcpIHsKKyAgICAgICAgbV9wYWdlLT5zZXRQYWdlU2NhbGVGYWN0b3IobV9wYWdlLT5wYWdlU2Nh
bGVGYWN0b3IoKSAqIHNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
YXlvdXRQb2ludChzY2FsZSAqIHNjcm9sbFgoKSAtIHgsIHNjYWxlICogc2Nyb2xsWSgpIC0geSkp
OworICAgICAgICBzY3JvbGxBbmltYXRvcigpLT5yZXNldFpvb20oKTsKKyAgICB9CisKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSBy
b290UmVuZGVyZXIodGhpcykpIHsKKyAgICAgICAgaWYgKHJvb3QtPnVzZXNDb21wb3NpdGluZygp
KSB7CisgICAgICAgICAgICByb290LT5jb21wb3NpdG9yKCktPnNjaGVkdWxlTGF5ZXJGbHVzaCgp
OworICAgICAgICAgICAgVFJBQ0VfRVZFTlQoIkZyYW1lVmlldzo6em9vbUFuaW1hdG9yVHJhbnNm
b3JtQ2hhbmdlZCIsIHRoaXMsIDApOworICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKIHZv
aWQgRnJhbWVWaWV3OjpzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAg
ICAgbV9tZWRpYVR5cGUgPSBtZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA0
NDJlMDhjYWJlMTA0NjdlYWRlZmM5ZTZlZTYyNGVlZTVmYWZkOGM3Li44NzI2YjZiOTZkNmU0ZjUz
MzA0YWIxN2ZhZDliYWFlNTRmYmMxOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE3
MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRGaXhlZEVsZW1l
bnRzQWZ0ZXJTY3JvbGxpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZElu
RGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9v
bUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBab29tQW5p
bWF0aW9uU3RhdGUpOworCiAgICAgU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRqdXN0TWVkaWFUeXBlRm9y
UHJpbnRpbmcoYm9vbCBwcmludGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDZj
YWY2ZTIxZDYzYzJhM2Q1ZmRlZDMyYjQ1Mjc4NWNiYzIyNDBiZjguLmMyMmZkMTMwOWJkOTEzMTE3
N2QzMGNhODFjNDNiNTRlOTk4YTI2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0y
MTgsOSArMjE4LDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3Bh
c3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3N1cHByZXNzSW5jcmVtZW50YWxSZW5k
ZXJpbmcoZmFsc2UpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMs
ICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKLSAgICAsIG1f
em9vbUFuaW1hdG9yU2NhbGUoMSkKLSAgICAsIG1fem9vbUFuaW1hdG9yUG9zWCgwKQotICAgICwg
bV96b29tQW5pbWF0b3JQb3NZKDApCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVl
biBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8v
IGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXgg
YmMyMDY2MjAwNWQxYWQ5ZjkwN2EzM2YyMjk4ZWY3NTljNDk2YTNhMi4uZTM1N2RhOTAwM2Y3ODQ3
NWUxNWQ5YmVkMWMwY2NmOWQ4NTljYzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNDI5
LDEzICs0MjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Rm9yY2VD
b21wb3NpdGluZ01vZGUoYm9vbCBmbGFnKSB7IG1fZm9yY2VDb21wb3NpdGluZ01vZGUgPSBmbGFn
OyB9CiAgICAgICAgIGJvb2wgZm9yY2VDb21wb3NpdGluZ01vZGUoKSB7IHJldHVybiBtX2ZvcmNl
Q29tcG9zaXRpbmdNb2RlOyB9CiAKLSAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShm
bG9hdCBzY2FsZSkgeyBtX3pvb21BbmltYXRvclNjYWxlID0gc2NhbGU7IH0KLSAgICAgICAgZmxv
YXQgem9vbUFuaW1hdG9yU2NhbGUoKSB7IHJldHVybiBtX3pvb21BbmltYXRvclNjYWxlOyB9Ci0K
LSAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5KSB7
IG1fem9vbUFuaW1hdG9yUG9zWCA9IHg7IG1fem9vbUFuaW1hdG9yUG9zWSA9IHk7IH0KLSAgICAg
ICAgZmxvYXQgem9vbUFuaW1hdG9yUG9zWCgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWDsg
fQotICAgICAgICBmbG9hdCB6b29tQW5pbWF0b3JQb3NZKCkgeyByZXR1cm4gbV96b29tQW5pbWF0
b3JQb3NZOyB9Ci0KICAgICAgICAgdm9pZCBzZXRTaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5p
dGlhbEVtcHR5RG9jdW1lbnQoYm9vbCBmbGFnKSB7IG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJ
bkluaXRpYWxFbXB0eURvY3VtZW50ID0gZmxhZzsgfQogICAgICAgICBib29sIHNob3VsZEluamVj
dFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCgpIHsgcmV0dXJuIG1fc2hvdWxkSW5q
ZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50OyB9CiAKQEAgLTYwNywxMCArNjAw
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHN0YXRpYyBib29sIGdN
b2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CiAKLSAgICAgICAgZmxvYXQgbV96b29tQW5pbWF0b3JTY2Fs
ZTsKLSAgICAgICAgZmxvYXQgbV96b29tQW5pbWF0b3JQb3NYOwotICAgICAgICBmbG9hdCBtX3pv
b21BbmltYXRvclBvc1k7Ci0KICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMg
Ym9vbCBnU2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDVjM2QyNzAyMTlkODQ4OTVhMGEwMzk1
MTQ5NzQyYmEwOGJkYzZhZDguLjMyOThlMThhNTI1N2MxYzdkZmU2ZjE0MDhkOTA5OWEwNzE2ZDJi
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTUy
LDYgKzUyLDkgQEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEp
CiAgICAgLCBtX2N1cnJlbnRQb3NYKDApCiAgICAgLCBtX2N1cnJlbnRQb3NZKDApCisgICAgLCBt
X2N1cnJlbnRab29tU2NhbGUoMSkKKyAgICAsIG1fY3VycmVudFpvb21UcmFuc1goMCkKKyAgICAs
IG1fY3VycmVudFpvb21UcmFuc1koMCkKIHsKIH0KIApAQCAtMTMzLDQgKzEzNiwzMSBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoKQogICAgIG1fc2Nyb2xsYWJs
ZUFyZWEtPnNldFNjcm9sbE9mZnNldEZyb21BbmltYXRpb24oSW50UG9pbnQobV9jdXJyZW50UG9z
WCwgbV9jdXJyZW50UG9zWSkpOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlab29t
Q2hhbmdlZChab29tQW5pbWF0aW9uU3RhdGUgc3RhdGUpCit7CisgICAgbV9zY3JvbGxhYmxlQXJl
YS0+em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChtX2N1cnJlbnRab29tU2NhbGUsIG1fY3Vy
cmVudFpvb21UcmFuc1gsIG1fY3VycmVudFpvb21UcmFuc1ksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9PSBab29tQW5pbWF0aW9uQ29u
dGludWluZyA/IFNjcm9sbGFibGVBcmVhOjpab29tQW5pbWF0aW9uQ29udGludWluZworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBTY3JvbGxhYmxlQXJlYTo6Wm9vbUFuaW1hdGlvbkZpbmlz
aGluZyk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Onpvb21UcmFuc2xhdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQobV9jdXJyZW50Wm9vbVRyYW5zWCwgbV9j
dXJyZW50Wm9vbVRyYW5zWSk7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlc2V0Wm9vbSgp
Cit7CisgICAgbV9jdXJyZW50Wm9vbVNjYWxlID0gMTsKKyAgICBtX2N1cnJlbnRab29tVHJhbnNY
ID0gMDsKKyAgICBtX2N1cnJlbnRab29tVHJhbnNZID0gMDsKK30KKwordm9pZCBTY3JvbGxBbmlt
YXRvcjo6c2V0Wm9vbVBhcmFtZXRlcnNGb3JUZXN0KGZsb2F0IHNjYWxlLCBmbG9hdCB4LCBmbG9h
dCB5KQoreworICAgIG1fY3VycmVudFpvb21TY2FsZSA9IHNjYWxlOworICAgIG1fY3VycmVudFpv
b21UcmFuc1ggPSAoMSAtIHNjYWxlKSAqIHg7CisgICAgbV9jdXJyZW50Wm9vbVRyYW5zWSA9ICgx
IC0gc2NhbGUpICogeTsKKyAgICBub3RpZnlab29tQ2hhbmdlZChab29tQW5pbWF0aW9uQ29udGlu
dWluZyk7IC8vIERvbid0IGxldCBwYWdlIHJlLXNjYWxlLgorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA3Y2U2
MTM4ODgzMTA5NjM0YTdmMzA2N2FiODQ5OWYyMjQ0MDk2Mzg3Li5kOGU0OTU0NTZkYWU5MmUxYjc2
MDgwMDBhNjExMGVjZGY0OWVjMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmgKQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CiAK
IGNsYXNzIFNjcm9sbEFuaW1hdG9yIHsKIHB1YmxpYzoKKyAgICBlbnVtIFpvb21BbmltYXRpb25T
dGF0ZSB7IFpvb21BbmltYXRpb25Db250aW51aW5nLCBab29tQW5pbWF0aW9uRmluaXNoaW5nIH07
CisKICAgICBzdGF0aWMgUGFzc093blB0cjxTY3JvbGxBbmltYXRvcj4gY3JlYXRlKFNjcm9sbGFi
bGVBcmVhKik7CiAKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvcigpOwpAQCAtODcsMTQgKzg5
LDI0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJh
cihTY3JvbGxiYXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZUhvcml6b250YWxT
Y3JvbGxiYXIoU2Nyb2xsYmFyKikgeyB9CiAKKyAgICBmbG9hdCB6b29tU2NhbGUoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRab29tU2NhbGU7IH0KKyAgICBGbG9hdFBvaW50IHpvb21UcmFuc2xh
dGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZXNldFpvb20oKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Wm9vbVBhcmFtZXRlcnNGb3JUZXN0KGZsb2F0LCBmbG9hdCwgZmxvYXQpOworCiBw
cm90ZWN0ZWQ6CiAgICAgU2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEqKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5Wm9vbUNoYW5nZWQoWm9vbUFuaW1hdGlvblN0YXRlKTsKIAogICAgIFNjcm9sbGFibGVBcmVh
KiBtX3Njcm9sbGFibGVBcmVhOwogICAgIGZsb2F0IG1fY3VycmVudFBvc1g7IC8vIFdlIGF2b2lk
IHVzaW5nIGEgRmxvYXRQb2ludCBpbiBvcmRlciB0byByZWR1Y2UKICAgICBmbG9hdCBtX2N1cnJl
bnRQb3NZOyAvLyBzdWJjbGFzcyBjb2RlIGNvbXBsZXhpdHkuCisKKyAgICBmbG9hdCBtX2N1cnJl
bnRab29tU2NhbGU7CisgICAgZmxvYXQgbV9jdXJyZW50Wm9vbVRyYW5zWDsKKyAgICBmbG9hdCBt
X2N1cnJlbnRab29tVHJhbnNZOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggOWEzOWRk
MjViOTMwNGYzYzU0ZGM2MGU4ZTJlYWU3YjlmYzQ0MTM2OS4uNGM2NWY5NTczMjE3MjdiYTI3ZDJl
ZjIxM2RhYmM2ODhiNjMyY2FjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvck5vbmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQdHIu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFi
bGVBcmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCkBAIC0zNjYsMTAgKzM2NywzNiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVy
QXhpc0RhdGE6OnVwZGF0ZVZpc2libGVMZW5ndGgoTGF5b3V0VW5pdCB2aXNpYmxlTGVuZwogICAg
IG1fdmlzaWJsZUxlbmd0aCA9IHZpc2libGVMZW5ndGg7CiB9CiAKK1Njcm9sbEFuaW1hdG9yTm9u
ZTo6Wm9vbURhdGE6Olpvb21EYXRhKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZSogcGFyZW50
KQorICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgICwgbV9pc0FuaW1hdGluZyhmYWxzZSkKK3sK
K30KKworYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6Olpvb21EYXRhOjphbmltYXRlWm9vbShkb3Vi
bGUgY3VycmVudFRpbWUpCit7CisgICAgbV9sYXN0QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1l
OworICAgIGRvdWJsZSBkZWx0YVRpbWUgPSBjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lOworCisg
ICAgaWYgKGRlbHRhVGltZSA+IG1fYW5pbWF0aW9uVGltZSkgeworICAgICAgICBtX3BhcmVudC0+
bV9jdXJyZW50Wm9vbVNjYWxlID0gbV9kZXNpcmVkU2NhbGU7CisgICAgICAgIG1fcGFyZW50LT5t
X2N1cnJlbnRab29tVHJhbnNYID0gbV9kZXNpcmVkVHJhbnNYOworICAgICAgICBtX3BhcmVudC0+
bV9jdXJyZW50Wm9vbVRyYW5zWSA9IG1fZGVzaXJlZFRyYW5zWTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGRvdWJsZSBlbGFwc2VkVGltZUZyYWN0aW9uID0gZGVsdGFUaW1l
IC8gbV9hbmltYXRpb25UaW1lOworICAgIG1fcGFyZW50LT5tX2N1cnJlbnRab29tU2NhbGUgPSBl
bGFwc2VkVGltZUZyYWN0aW9uICogKG1fZGVzaXJlZFNjYWxlIC0gbV9zdGFydFNjYWxlKSArIG1f
c3RhcnRTY2FsZTsKKyAgICBtX3BhcmVudC0+bV9jdXJyZW50Wm9vbVRyYW5zWCA9IGVsYXBzZWRU
aW1lRnJhY3Rpb24gKiBtX2Rlc2lyZWRUcmFuc1g7CisgICAgbV9wYXJlbnQtPm1fY3VycmVudFpv
b21UcmFuc1kgPSBlbGFwc2VkVGltZUZyYWN0aW9uICogbV9kZXNpcmVkVHJhbnNZOworICAgIHJl
dHVybiB0cnVlOworfQorCiBTY3JvbGxBbmltYXRvck5vbmU6OlNjcm9sbEFuaW1hdG9yTm9uZShT
Y3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3Jv
bGxhYmxlQXJlYSkKICAgICAsIG1faG9yaXpvbnRhbERhdGEodGhpcywgJm1fY3VycmVudFBvc1gs
IHNjcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSkKICAgICAsIG1fdmVydGljYWxEYXRhKHRo
aXMsICZtX2N1cnJlbnRQb3NZLCBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgpKQorICAg
ICwgbV96b29tRGF0YSh0aGlzKQogICAgICwgbV9hbmltYXRpb25UaW1lcih0aGlzLCAmU2Nyb2xs
QW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZpcmVkKQogewogfQpAQCAtNDM1LDYgKzQ2Miw2
MyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldAogICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZCgp
OwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbShjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgcGdlKQoreworICAgIEFTU0VSVChwZ2UudHlwZSgpID09IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpEb3VibGVUYXBUeXBlKTsKKyAgICAvLyBGSVhNRTogbW9kaWZ5IHRoaXMgc28gd2Ug
Y2FuIHN0YXJ0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIGFjdGl2ZS4KKyAgICBpZiAoIW1fYW5pbWF0
aW9uVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX2N1cnJlbnRab29tU2NhbGUgPSAxOwor
ICAgICAgICBtX2N1cnJlbnRab29tVHJhbnNYID0gMDsKKyAgICAgICAgbV9jdXJyZW50Wm9vbVRy
YW5zWSA9IDA7CisKKyAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAgICAgZmxvYXQgc2NhbGUgPSBwZ2UuZGVsdGFYKCk7
CisKKyAgICAgICAgbV96b29tRGF0YS5tX3N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lIC0ga1RpY2tU
aW1lIC8gMjsKKyAgICAgICAgbV96b29tRGF0YS5tX3N0YXJ0U2NhbGUgPSBtX2N1cnJlbnRab29t
U2NhbGU7CisgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkU2NhbGUgPSBzY2FsZTsKKyAgICAg
ICAgLy8gRklYTUU6IERvY3VtZW50IHRoZW4gc2ltcGxpZnkgdGhlIGZvbGxvd2luZyBlcXVhdGlv
bnMuCisgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNYID0gKDEgLSBzY2FsZSkgKiBw
Z2UuZ2xvYmFsUG9zaXRpb24oKS54KCk7CisgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJh
bnNZID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24oKS55KCk7CisjaWYgRU5BQkxF
KERPVUJMRV9UQVBfQ0VOVEVSUykKKyAgICAgICAgaWYgKHBnZS50eXBlKCkgPT0gUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpIHsKKyAgICAgICAgICAgIC8vIFpvb20gdG8gY2Vu
dHJlIG9mIGRpc3BsYXkuIFBpbmNoLXRvLXpvb20gbWF5IG5vdCB3YW50IHRoaXMgYmVoYXZpb3Vy
LgorICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1ggKz0gbV9zY3JvbGxhYmxl
QXJlYS0+dmlzaWJsZVdpZHRoKCkgLyAyIC0gcGdlLmdsb2JhbFBvc2l0aW9uKCkueCgpOworICAg
ICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1kgKz0gbV9zY3JvbGxhYmxlQXJlYS0+
dmlzaWJsZUhlaWdodCgpIC8gMiAtIHBnZS5nbG9iYWxQb3NpdGlvbigpLnkoKTsKKyAgICAgICAg
fQorI2VuZGlmCisgICAgICAgIG1fem9vbURhdGEubV9sYXN0QW5pbWF0aW9uVGltZSA9IGN1cnJl
bnRUaW1lOworICAgICAgICBtX3pvb21EYXRhLm1fYW5pbWF0aW9uVGltZSA9IDUwICoga1RpY2tU
aW1lOworCisgICAgICAgIGJvb2wgaXNDb250aW51aW5nID0gbV96b29tRGF0YS5hbmltYXRlWm9v
bShjdXJyZW50VGltZSk7CisKKyAgICAgICAgZG91YmxlIGRlbHRhVG9OZXh0RnJhbWUgPSBjZWls
KChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKSAqIGtGcmFtZVJhdGUpIC8ga0ZyYW1lUmF0ZSAt
IChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKKyAgICAgICAgZG91YmxlIG5leHRUaW1lcklu
dGVydmFsID0gbWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGFUb05leHRGcmFtZSk7Cisg
ICAgICAgIGlmIChpc0NvbnRpbnVpbmcpIHsKKyAgICAgICAgICAgIG1fYW5pbWF0aW9uVGltZXIu
c3RhcnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsKKyAgICAgICAgICAgIG1fem9vbURhdGEu
bV9pc0FuaW1hdGluZyA9IHRydWU7CisgICAgICAgICAgICBub3RpZnlab29tQ2hhbmdlZChab29t
QW5pbWF0aW9uQ29udGludWluZyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbm90aWZ5
Wm9vbUNoYW5nZWQoWm9vbUFuaW1hdGlvbkZpbmlzaGluZyk7CisgICAgfQorfQorCisjaWYgRU5B
QkxFKEdFU1RVUkVfRVZFTlRTKQordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQoreworICAgIFRSQUNFX0VW
RU5UKCJTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVFdmVudCIsIHRoaXMsIDApOwor
ICAgIHN3aXRjaCAocGdlLnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OkRvdWJsZVRhcFR5cGU6CisgICAgICAgIHpvb20ocGdlKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICAvLyBUT0RPOiBhZGQgYW55IG90aGVyIGV2ZW50IHR5cGVzIHdl
IHNob3VsZCBoYW5kbGUKKyAgICAgICAgeyB9CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgU2Ny
b2xsQW5pbWF0b3JOb25lOjp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiB7CiAgICAgdXBkYXRlVmlzaWJs
ZUxlbmd0aHMoKTsKQEAgLTQ2Niw2ICs1NTAsMTcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiogdGltZXIpCiAg
ICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKICAgICBpZiAobV92ZXJ0aWNhbERhdGEu
bV9zdGFydFRpbWUgJiYgbV92ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSAr
IGRlbHRhVG9OZXh0RnJhbWUpKQogICAgICAgICBjb250aW51ZUFuaW1hdGlvbiA9IHRydWU7CisK
KyAgICBpZiAobV96b29tRGF0YS5tX2lzQW5pbWF0aW5nKSB7CisgICAgICAgIGlmIChtX3pvb21E
YXRhLm1fc3RhcnRUaW1lICYmIG1fem9vbURhdGEuYW5pbWF0ZVpvb20oY3VycmVudFRpbWUgKyBk
ZWx0YVRvTmV4dEZyYW1lKSkgeworICAgICAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVl
OworICAgICAgICAgICAgbm90aWZ5Wm9vbUNoYW5nZWQoWm9vbUFuaW1hdGlvbkNvbnRpbnVpbmcp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90aWZ5Wm9vbUNoYW5nZWQoWm9vbUFu
aW1hdGlvbkZpbmlzaGluZyk7CisgICAgICAgICAgICBtX3pvb21EYXRhLm1faXNBbmltYXRpbmcg
PSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChjb250aW51ZUFuaW1hdGlvbikg
ewogICAgICAgICBkb3VibGUgbmV4dFRpbWVySW50ZXJ2YWwgPSBtYXgoa01pbmltdW1UaW1lcklu
dGVydmFsLCBkZWx0YVRvTmV4dEZyYW1lKTsKICAgICAgICAgdGltZXItPnN0YXJ0T25lU2hvdChu
ZXh0VGltZXJJbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvck5vbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yTm9uZS5oCmluZGV4IDBjMGViMTZhMWZmOTQxMjFlNDczODU5ZmZhZDhmYTU2ZDE4MTlmZmUu
Ljg5Mjk3Zjc5NTYxYzM4OTllM2JmMDE4NDA4YjQ2NmExMGJlZjNiYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCkBAIC01MSw2ICs1MSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3Jv
bGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcik7CiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jik7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmKTsKKwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKQEAgLTEyNywx
MiArMTMwLDM1IEBAIHByb3RlY3RlZDoKICAgICAgICAgTGF5b3V0VW5pdCBtX3Zpc2libGVMZW5n
dGg7CiAgICAgfTsKIAorICAgIC8vIFdoaWxlIHpvb21pbmcsIHNjYWxlLCBwb3NYIGFuZCBwb3NZ
IG5lZWQgdG8gc3RheSB0aWdodGx5IGNvdXBsZWQsIHNvIHVzZSBhIHNlcGFyYXRlCisgICAgLy8g
ZGF0YSBzdHJ1Y3R1cmUuCisgICAgc3RydWN0IFpvb21EYXRhIHsKKyAgICAgICAgWm9vbURhdGEo
U2Nyb2xsQW5pbWF0b3JOb25lKiBwYXJlbnQpOworICAgICAgICBib29sIGFuaW1hdGVab29tKGRv
dWJsZSBjdXJyZW50VGltZSk7CisKKyAgICAgICAgU2Nyb2xsQW5pbWF0b3JOb25lKiBtX3BhcmVu
dDsKKyAgICAgICAgYm9vbCBtX2lzQW5pbWF0aW5nOworCisgICAgICAgIGRvdWJsZSBtX3N0YXJ0
VGltZTsKKworICAgICAgICBkb3VibGUgbV9hbmltYXRpb25UaW1lOworICAgICAgICBkb3VibGUg
bV9sYXN0QW5pbWF0aW9uVGltZTsKKworICAgICAgICBkb3VibGUgbV9zdGFydFNjYWxlOworICAg
ICAgICBkb3VibGUgbV9kZXNpcmVkU2NhbGU7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFu
c1g7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFuc1k7CisgICAgfTsKKworICAgIGZyaWVu
ZCBjbGFzcyBab29tRGF0YTsKKwogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxT
Y3JvbGxBbmltYXRvck5vbmU+Kik7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRl
ZCgpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIAogICAgIFBlckF4aXNEYXRh
IG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CisgICAg
Wm9vbURhdGEgbV96b29tRGF0YTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBUaW1l
cjxTY3JvbGxBbmltYXRvck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggMGM2MTcwMzRkNDQ3M2UxMDUzNjdhMGJm
YjU1ZjM4NThlZjllODA2Yi4uMzRkZGMzZDkzYzgwNzU4MzAxOTMyYmI3OTM3MGFkYzk4OTZlNDgy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTIz
LDYgKzEyMywxMSBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1lPZmZzZXRXaXRob3V0
QW5pbWF0aW9uKGZsb2F0IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZs
b2F0UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9uKCkueCgpLCB5KSk7CiB9
CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6Onpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5nZWQoZG91
YmxlLCBkb3VibGUsIGRvdWJsZSwgWm9vbUFuaW1hdGlvblN0YXRlKQoreworICAgIC8vIFJlcXVp
cmVzIEZyYW1lVmlldyB0byBvdmVycmlkZSB0aGlzLgorfQorCiBib29sIFNjcm9sbGFibGVBcmVh
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkK
IHsKICAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3IoKS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDI0MzJj
ZDI5NDcxMGNhNzQ2N2MzZGZmOGU0YWVjYTZiZjljNTkwMGIuLjZmNDM2YTlhYTkzZDQ4YzRiNmI2
YWU1MDYyMmMzY2Y4ZTUyN2U2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaApAQCAtNDMsNiArNDMsOCBAQCBjbGFzcyBHcmFwaGljc0xheWVyOwogCiBjbGFzcyBT
Y3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CisgICAgZW51bSBab29tQW5pbWF0aW9uU3RhdGUgeyBa
b29tQW5pbWF0aW9uQ29udGludWluZywgWm9vbUFuaW1hdGlvbkZpbmlzaGluZyB9OworCiAgICAg
U2Nyb2xsYWJsZUFyZWEoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxhYmxlQXJlYSgpOwogCkBAIC01
Miw2ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbFRvWE9mZnNldFdpdGhvdXRBbmlt
YXRpb24oZmxvYXQgeCk7CiAgICAgdm9pZCBzY3JvbGxUb1lPZmZzZXRXaXRob3V0QW5pbWF0aW9u
KGZsb2F0IHgpOwogCisgICAgdmlydHVhbCB2b2lkIHpvb21BbmltYXRvclRyYW5zZm9ybUNoYW5n
ZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgWm9vbUFuaW1hdGlvblN0YXRlKTsKKwogICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgdm9pZCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCBkZjhhYzJlYWJkMjEyNDUxYzBjNzQ3ZTBlNmU0ZjM3M2RjNmIxMWMzLi42NTVjZGUxNTEzYzQ0
NWY4NjhmNGFkZjExMmYzNzY4ODc2NDI4Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhU
TUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTQwLDkgKzQxLDE1
IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyNpbmNs
dWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0Lmgi
CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3Iu
aCIKKyNlbmRpZgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVu
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0yMzgsMTUgKzI0NSw1MSBA
QCB2b2lkIEludGVybmFsczo6c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdAogICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRG
b3JjZUNvbXBvc2l0aW5nTW9kZShlbmFibGVkKTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldFpv
b21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVudCAqZG9jdW1lbnQsIGRvdWJsZSBzY2FsZSwgZG91
YmxlIHR4LCBkb3VibGUgdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJbnRlcm5hbHM6OnNl
dEVuYWJsZVNjcm9sbEFuaW1hdG9yKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBlbmFibGVkLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2V0
dGluZ3MoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRab29tQW5pbWF0b3JT
Y2FsZShzdGF0aWNfY2FzdDxmbG9hdD4oc2NhbGUpKTsKLSAgICBkb2N1bWVudC0+c2V0dGluZ3Mo
KS0+c2V0Wm9vbUFuaW1hdG9yUG9zaXRpb24oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHR4KSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHR5KSk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgZG9j
dW1lbnQtPnNldHRpbmdzKCktPnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGVuYWJsZWQpOworI2Vu
ZGlmCit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1l
bnQgKmRvY3VtZW50LCBmbG9hdCBzY2FsZSwgZmxvYXQgdHgsIGZsb2F0IHR5LCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpIHx8ICFk
b2N1bWVudC0+dmlldygpLT5mcmFtZSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50IHBnZShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91
YmxlVGFwVHlwZSwgSW50UG9pbnQodHgsIHR5KSwgSW50UG9pbnQodHgsIHR5KSwgMCwgc2NhbGUs
IDAuZiwgMCwgMCwgMCwgMCk7CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwZ2UpOworI2VuZGlmCit9CisKK2Zsb2F0IElu
dGVybmFsczo6Z2V0UGFnZVNjYWxlRmFjdG9yKERvY3VtZW50ICpkb2N1bWVudCwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgcmV0dXJuIGRvY3VtZW50LT5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOworfQor
Cit2b2lkIEludGVybmFsczo6c2V0Wm9vbVBhcmFtZXRlcnMoRG9jdW1lbnQqIGRvY3VtZW50LCBm
bG9hdCBzY2FsZSwgZmxvYXQgeCwgZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
aWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSB8fCAhZG9jdW1lbnQtPnZpZXcoKS0+
ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGRvY3VtZW50
LT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnNldFpvb21QYXJhbWV0ZXJzRm9yVGVzdChzY2Fs
ZSwgeCwgeSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFBhc3N3b3JkRWNob0Vu
YWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNThiODlkNWEzY2IyMDY2NjFjNDk3
MTcwYWNiNzMxMTUxZGU5NzFlYi4uNDEwYjZlZDhkNzg0MDQ4NWYzNGNhY2U4NWU5NTcxOGYxOTk2
ZWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03Niw3ICs3NiwxMSBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCB1
bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZShEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZG91YmxlIHNjYWxlLCBkb3VibGUg
dHgsIGRvdWJsZSB0eSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCBzZXRFbmFibGVTY3Jv
bGxBbmltYXRvcihEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZmxvYXQgc2NhbGUsIGZs
b2F0IHR4LCBmbG9hdCB0eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIGZsb2F0IGdldFBhZ2VTY2Fs
ZUZhY3RvcihEb2N1bWVudCosICBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRab29tUGFy
YW1ldGVycyhEb2N1bWVudCosIGZsb2F0IHNjYWxlLCBmbG9hdCB4LCBmbG9hdCB5LCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1lbnQqLCBi
b29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1
cmF0aW9uSW5TZWNvbmRzKERvY3VtZW50KiwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzLCBFeGNl
cHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYTY4MzA1
YWNhMDYwNjZmODcxZWZhYTk1Yjg5MzhkYjczZDk1MTdlNC4uOTA5OTg5ZGEyYTJhMmQ0MmM3Zjlm
Y2E1MjJjMDc4NTM3NWMxNzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtNTAsNyArNTAsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFJhbmdlIG1hcmtlclJh
bmdlRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoaW4g
RG9jdW1lbnQgZG9jdW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7Ci0gICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGluIERvY3VtZW50IGRv
Y3VtZW50LCBpbiBkb3VibGUgc2NhbGUsIGluIGRvdWJsZSB0eCwgaW4gZG91YmxlIHR5KSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihp
biBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oaW4gRG9jdW1lbnQg
ZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlLCBpbiBmbG9hdCB0eCwgaW4gZmxvYXQgdHkpIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgICAgICBmbG9hdCBnZXRQYWdlU2NhbGVGYWN0b3IoaW4gRG9j
dW1lbnQgZG9jdW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldFpv
b21QYXJhbWV0ZXJzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBmbG9hdCBzY2FsZSwgaW4gZmxv
YXQgeCwgaW4gZmxvYXQgeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCBz
ZXRQYXNzd29yZEVjaG9FbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVu
YWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNo
b0R1cmF0aW9uSW5TZWNvbmRzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgZHVyYXRp
b25JblNlY29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA5MTdjNTU2M2FkMjEwYjEwZmM0YTc0Y2M0ZTg5YzM3MjM3YTYwZThjLi5iZDVjYzUy
NjVlODFhOGRjYTk5NTAyMGEyYjFkODE0MjBlYTVjYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTEwLTA2ICBXLiBKYW1lcyBNYWNMZWFuICA8d2pt
YWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFpvb20gYW5pbWF0b3Ig
ZnJvbnQtZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODAzNQorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gZ2V0IHpvb20gdGV4dHVyZS1zY2Fs
ZSBwYXJhbWV0ZXJzIGZyb20gU2NhbGVBbmltYXRvciBkaXJlY3RseQorICAgICAgICBpbnN0ZWFk
IG9mIHZpYSBTZXR0aW5ncy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkpOgorCiAyMDExLTEwLTAzICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBSZW1vdmUg
U1FMaXRlLUxldmVsREIgbWlncmF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCBkYzI0MGFlYzczNDEyZGNkM2RlY2Y2ZjE0Y2YwOWE1MmY5
ZTY4NDkxLi4wNDRiMTAyMzBjODNmMDE1NDA4YmY0NmNmYjc0YjY3ZjQ2NTY5MWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC05Miw2ICs5Miw3IEBA
CiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCkBAIC0yNTY0LDggKzI1NjUsOSBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKQogewogICAgIGlmIChtX2xh
eWVyVHJlZUhvc3QpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggem9vbU1hdHJpeDsK
LSAgICAgICAgem9vbU1hdHJpeC50cmFuc2xhdGUobV9wYWdlLT5zZXR0aW5ncygpLT56b29tQW5p
bWF0b3JQb3NYKCksIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yUG9zWSgpKTsKLSAg
ICAgICAgem9vbU1hdHJpeC5zY2FsZShtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21BbmltYXRvclNj
YWxlKCkpOworICAgICAgICBGbG9hdFBvaW50IHRyYW5zID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+
dmlldygpLT5zY3JvbGxBbmltYXRvcigpLT56b29tVHJhbnNsYXRpb24oKTsKKyAgICAgICAgem9v
bU1hdHJpeC50cmFuc2xhdGUodHJhbnMueCgpLCB0cmFucy55KCkpOworICAgICAgICB6b29tTWF0
cml4LnNjYWxlKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Nyb2xsQW5pbWF0b3IoKS0+
em9vbVNjYWxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFpvb21BbmltYXRvclRy
YW5zZm9ybSh6b29tTWF0cml4KTsKICAgICB9CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110016</attachid>
            <date>2011-10-06 14:07:52 -0700</date>
            <delta_ts>2011-10-07 07:39:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20111006170445.patch</filename>
            <type>text/plain</type>
            <size>33300</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4MDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YTc0NzI1YTJiNTJiMGZhMTdjOGZi
YTE3MjI3YTg5MmU3NDBjYTQ1Li4xNmY5YmI5YWM1NjJiMmUxMGJlOTlmMmI3MWRmNmIzOWJlODdm
N2Y1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMDYgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2Nh
bGUtdGVzdC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pv
b20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMS0xMC0wNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtRdF0gaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS1pbmhlcml0
ZWQuaHRtbCBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCBhZnRlciByOTYyNTcKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNDQ2NmI4YjU1ZjQ4NzAzMTBkN2RlZGZlMDJhYzMwN2YzYWU4MWFkCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAzMzMzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAq
Wik9aF5obEElQFdzJGxIYG9rPG19P29UIXRoQQp6dnNDam1PVCpOKEckVmBUcXxfOCszajxUalIx
O0grUkFVUGheUihDLUtiI3BEYyYyOzBJRUdacmQzKk9AdTJlTEcKekwqUnhOamI8d2ozVkI7Q25F
djlzaz9hTjtPO2FDZnlAdVEkLTdYVlQzdjZ6ZkpLbEp7cnRQNiZtR3RUR19sQWMqCnptMDBPQUZ3
OTdsSWxnQFBeNlUzdipJJlE9d3JwZD5udHU8Y0ZmaEVrVlppaElaezR7V09HUn1VOHE5a2l8MHBp
YQp6SShNUmR6cFhTd2dafjQ1PipuWG10WVFvZkpfKEVyTV85eGQ0cHszPktpJk50RDBIQ3Umempa
VXl7YTErN31rQjsKenYtK0kwSCY5ODteRjFyIz02cVpiJGs2YjUmcmdYIT9GYUAyISR3dkgwYnZt
MXt5YD4mOEwxTCZHZUpmaygzeVFVCno/YzlkVVN2aTdDVjU4eDdQe0loP0s5N09uSzwkaVduYUAw
Y184T2VkK2lxPU5YKEphdT1qWHFfeUxGdXk4ZkZ8fAp6Vig4IW1kVWxrN0g0dHZSeCtjNnN7cStC
Nyt2Z24kRlpvcnI+I0dSRTFGSkEjRyQlMX1HYnBIeUdEWlZ8UClnWGcKej5ucUU8bFBfPC15Y1Be
QlZqNGgyMypCP3UrQntvRWhLQXE4N0JjaHAqOHN1NEFXLT5+eVohY0c4dzxKcT1rSVNSCnp1YHFO
KjAheVNGdiV0anloXlJsczF1VTRaZj1lVjJAaDVtUiQmY3B5KEsycyU8YnVgRnt0T0hjPn0yQGJZ
MWpZKAp6d3ZpfWx6bD5eIXZAOz1MaHwhdj4rZHRucE19alQ3MS1WJVhZRn5hPEVlQUZeYio3KkdK
YkMlJG0pfCNucytgdzAKemA3NjhBTDU8ZHteVGUtSz03U28yLSskWjtlT3xnJTBONU9UVSQkfGI3
JHt8ezFEaURXdyNCVn4tWSlfYSZjQl92Cnp7ams5diVOJldld2BJRilhXkRMdUc+OUs3dGZ7SzFk
VkJZNCkhd14jO0B3QnJBTmNoLWdQfiNsJVd+dGApVTZSWgp6WkhZSkRmNndRV1pBO3ZJYjVDO0dX
ZlAjKkApYGpLeVAxYXtlJU0jUD48e2x7bGUwYnhFRHo3Q21OQD9MKV9EZW8KejhkK2VvVGp1eWB5
SDUkfTB0XnEldVkwPlJ7SnFraUFLR21VNEQpWHNjSytQWmRPQUVYezZpKSV4bkFkRXUkVWZsCnpx
NGh2ZUlLelNQWnkme35CcUxzTkYobUIjYjc4WW54UElKeHp2Y1RjTWpVQF54TD9pU0BfWUxPcFAz
by1lbSQ2Ywp6THFBOGJZTVY4fmhwRHhEVEpgRXIjd0goSntfKTM7QUdhNzhvPUBWY2BXb2xiJWdS
dD1ZRzMhcVc4TFFzYXFBfkAKekdjd2VLVUheOUphTV5Dend1a3k+KiUlKCY8Ml92UF9QeT1AVTk1
I04/KXpzbEdraUV5d1JoalBiejxFfHw5P0ZCCldAVCNJVyVXK2A4aFFaVS0mdDt1Y0xLNlQpSSNz
T3oKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5odG1sIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1z
Y2FsZS10ZXN0Lmh0bWwKaW5kZXggZTFiYWM5ZWI3MzRkOWU4N2NjNzI4YjY4ZDBhMWQ0OWYwNGQz
ZWU5NC4uNmQzODhmMzIxNzYxOTkzN2RlNzA1MTQ0NjVjMjUzODk2NjU3Yzc3MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRv
ci1zY2FsZS10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKQEAgLTMsNyArMyw3IEBACiAg
ICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAgICAgICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZG9jdW1lbnQsIHRydWUp
OwotICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0o
ZG9jdW1lbnQsIDEuMjUsIC0yNS4wLCAtMjUuMCk7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldFpvb21QYXJhbWV0ZXJzKGRvY3VtZW50LCAxLjI1LCAxMDAsIDEwMCk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICAg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1h
dG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96
b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20t
YW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MDE2YmE0MzAxNTAzOWY2ZGQ4NGM5Mjk4OWY1ZGRhYWM1ZTE2MjdiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRv
ci1zY2FsZS10ZXN0Mi5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAg
d2luZG93LmludGVybmFscy5zZXRFbmFibGVTY3JvbGxBbmltYXRvcihkb2N1bWVudCwgdHJ1ZSk7
CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGRv
Y3VtZW50LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KHRydWUpOworICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0aW1lcjsKKyAgICAg
ICAgdmFyIGNvdW50ID0gMDsKKworICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAg
ICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzIHx8ICh3aW5kb3cuaW50ZXJuYWxzLmdldFBh
Z2VTY2FsZUZhY3Rvcihkb2N1bWVudCkgPT0gMS4yNSkpIHsKKyAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKHRpbWVyKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBjb3VudCsrOworICAgICAgICAgICAgaWYgKGNvdW50ID49IDEwKSAvLyBBc3N1bWluZyAxMCBp
cyBlbm91Z2guCisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYUJveCIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJncmVlbiI7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGRvY3VtZW50LCAxLjI1LCAxMDAu
MCwgMTAwLjApOworICAgICAgICAgICAgICAgIC8vIENoZWNrIHBlcmlvZGljYWxseSBmb3IgYW5p
bWF0aW9uIGNvbXBsZXRpb24uCisgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbCgi
ZmluaXNoVGVzdCgpIiwgMjUwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZG9UZXN0LCBmYWxzZSk7CisgICAgPC9z
Y3JpcHQ+CisgIDwvaGVhZD4KKzxib2R5IGlkPSJ0aGVCb2R5Ij4KKyAgPCEtLSAgICBJZiBzdWNj
ZXNzZnVsLCB0aGUgYm94IHNob3VsZCBlbmxhcmdlIHRvIGJlIDEyNXgxMjUgYXQgKDEyNSwxMjUp
LgorICAgIC0tPgorICA8ZGl2IGlkPSJhQm94IiBzdHlsZT0id2lkdGg6MTAwcHg7IGhlaWdodDox
MDBweDsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTAwcHg7IHRvcDoxMDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjojRkYwMDAwIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAwNzZl
YjkyNTkzZjNjOTY0Y2NkNzg1M2M5NGI5ODhiNTlhNDA1YTExLi4yYjcyNTVkZWQ4ZjFhYjU5MDhi
MTE2MTg5N2M0OTA4MzE0NTkzMjc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yNjYzLDYgKzI2NjMsOCBAQCBCVUdX
SzU1OTY4IFdJTiBERUJVRyBHUFUgOiBjb21wb3NpdGluZy93ZWJnbC93ZWJnbC1ub25wcmVtdWx0
aXBsaWVkLWJsZW5kLmh0bWwgPQogQlVHV0s1ODU4NyBMSU5VWCBHUFUgREVCVUcgOiBtZWRpYS92
aWRlby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCA9IElNQUdFCiBCVUdDUjk3Njg2IExJTlVYIEdQ
VSBSRUxFQVNFIDogbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLmh0bWwgPSBJTUFHRQog
CitCVUdXS3h4eHh4IE1BQyBXSU4gR1BVIEdQVS1DRyA6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBv
c2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbCA9IElNQUdFCisKIEJVR0NSNzIy
MjMgOiBtZWRpYS92aWRlby1mcmFtZS1hY2N1cmF0ZS1zZWVrLmh0bWwgPSBQQVNTIElNQUdFCiAK
IEJVR1dLNTM4NjggOiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kb2N1bWVudC1j
bG9zZS1jcmFzaC5odG1sID0gUEFTUyBURVhUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFiYWQ1YjQ2NzhkMzdj
MGM0N2QyNGIyYTg1NWU3YmVkZDYwYWQyNi4uZTE5YmRhMjZmMzU3NWZiYjFhZGY0NjA3M2U0ZGVl
NmU2ZjdmMzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDExLTEwLTA2ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIFpvb20gYW5pbWF0b3IgZnJvbnQtZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzNQorCisgICAgICAgIEFkZHMgbmVjZXNzYXJ5IGNvbXBv
bmVudHMgdG8gU2Nyb2xsQW5pbWF0b3JOb25lIHRvIHN1cHBvcnQgYSB6b29tIGFuaW1hdGlvbgor
ICAgICAgICBmZWF0dXJlLiBJbmNsdWRlcyB0ZXN0IGluZnJhc3RydWN0dXJlIHZpYSB0ZXN0aW5n
L0ludGVybmFscyB0byBjYXB0dXJlCisgICAgICAgIGluLXByb2dyZXNzIHRleHR1cmUgc2NhbGlu
ZyAoem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwpIGFzIHdlbGwgYXMgYQorICAgICAgICBm
aW5hbCB2aWV3IC0tLSBhZnRlciBwYWdlU2NhbGVGYWN0b3IgaGFzIGJlZW4gYXBwbGllZCAtLS0g
aW4gem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi5odG1sLgorCisgICAgICAgIFJlbW92ZXMgdGVt
cG9yYXJ5IHRlc3QgZmllbGRzIGZyb20gU2V0dGluZ3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9z
aXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdl
c3R1cmVFdmVudCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yOjpub3RpZnlab29tQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvcjo6em9vbVRyYW5zbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjpyZXNldFpvb20pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
OnNldFpvb21QYXJhbWV0ZXJzRm9yVGVzdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp6b29tU2NhbGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvck5vbmU6Olpvb21EYXRhOjpab29tRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6Olpvb21EYXRhOjphbmltYXRlWm9vbSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlNjcm9sbEFuaW1hdG9yTm9uZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6Onpvb20pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZpcmVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6em9v
bUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6Z2V0UGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6c2V0Wm9vbVBhcmFtZXRlcnMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDExLTEwLTA1ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBhZGQgMTAgbW9yZSBmcm9udC1lbmQgY2xhc3NlcyB0byB0aGUgY29tcGlsYXRpb24gcHJvY2Vz
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4MGQxNDJjOTkyMzk4MGMz
OTdiODE3N2I0OTQ1NmUwMzNmY2QxNmE1Li5jNjNmYWVlODQ4OTQ4Nzc3YmQ1NjdjYzFmOTM2ZDY2
MGE5YWQ1MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMjM1LDgg
KzIyMzUsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgICAgIGhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAg
IGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6Ci0gICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKICAg
ICAgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlzb3IgPSAoZmxvYXQpV2hlZWxFdmVudDo6dGlja011
bHRpcGxpZXI7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgaW50ZXJpbSBpbXBsZW1l
bnRhdGlvbiBvbmNlIHRoZSBhYm92ZSBmaXhtZSBoYXMgYmVlbiBhZGRyZXNzZWQuCkBAIC0yMjQ2
LDYgKzIyNDQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgICAgIGhhbmRsZVdoZWVs
RXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgogICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKICAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgogICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X2ZyYW1lLT52aWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggY2NmN2VkYTM2
M2U4YTc2OWMzYmNhNjFmZmExZTJkZjU0NjZmNTcwMi4uZWZiODdiMmY2NzI0YTU1NWJlNmQyZWM4
ZmRhMmQzYjYwMTljMjliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNjcsNiAr
NjcsNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIlJl
bmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFNWRykKQEAgLTEyMjAsNiArMTIyMSwyNCBAQCB2b2lkIEZyYW1lVmlldzo6
cmVtb3ZlV2lkZ2V0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QqIG9iamVjdCkKICAgICBt
X3dpZGdldFVwZGF0ZVNldC0+cmVtb3ZlKG9iamVjdCk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3Ojp6
b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGRvdWJsZSBzY2FsZSwgZG91YmxlIHgsIGRvdWJs
ZSB5LCBab29tQW5pbWF0aW9uU3RhdGUgc3RhdGUpCit7CisgICAgaWYgKHN0YXRlID09IFpvb21B
bmltYXRpb25GaW5pc2hpbmcpIHsKKyAgICAgICAgbV9wYWdlLT5zZXRQYWdlU2NhbGVGYWN0b3Io
bV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAqIHNjYWxlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMYXlvdXRQb2ludChzY2FsZSAqIHNjcm9sbFgoKSAtIHgsIHNjYWxlICog
c2Nyb2xsWSgpIC0geSkpOworICAgICAgICBzY3JvbGxBbmltYXRvcigpLT5yZXNldFpvb20oKTsK
KyAgICB9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFJlbmRl
clZpZXcqIHJvb3QgPSByb290UmVuZGVyZXIodGhpcykpIHsKKyAgICAgICAgaWYgKHJvb3QtPnVz
ZXNDb21wb3NpdGluZygpKSB7CisgICAgICAgICAgICByb290LT5jb21wb3NpdG9yKCktPnNjaGVk
dWxlTGF5ZXJGbHVzaCgpOworICAgICAgICAgICAgVFJBQ0VfRVZFTlQoIkZyYW1lVmlldzo6em9v
bUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZCIsIHRoaXMsIDApOworICAgICAgICB9CisgICAgfQor
I2VuZGlmCit9CisKIHZvaWQgRnJhbWVWaWV3OjpzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpCiB7CiAgICAgbV9tZWRpYVR5cGUgPSBtZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAppbmRleCA0NDJlMDhjYWJlMTA0NjdlYWRlZmM5ZTZlZTYyNGVlZTVmYWZkOGM3Li44
NzI2YjZiOTZkNmU0ZjUzMzA0YWIxN2ZhZDliYWFlNTRmYmMxOTAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKQEAgLTE3MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
cGFpbnRGaXhlZEVsZW1lbnRzQWZ0ZXJTY3JvbGxpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgem9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwg
ZG91YmxlLCBab29tQW5pbWF0aW9uU3RhdGUpOworCiAgICAgU3RyaW5nIG1lZGlhVHlwZSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRq
dXN0TWVkaWFUeXBlRm9yUHJpbnRpbmcoYm9vbCBwcmludGluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwCmluZGV4IDZjYWY2ZTIxZDYzYzJhM2Q1ZmRlZDMyYjQ1Mjc4NWNiYzIyNDBiZjguLmMy
MmZkMTMwOWJkOTEzMTE3N2QzMGNhODFjNDNiNTRlOTk4YTI2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCkBAIC0yMTgsOSArMjE4LDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBh
Z2UpCiAgICAgLCBtX3Bhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3N1cHByZXNz
SW5jcmVtZW50YWxSZW5kZXJpbmcoZmFsc2UpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJG
aXJlZCkKLSAgICAsIG1fem9vbUFuaW1hdG9yU2NhbGUoMSkKLSAgICAsIG1fem9vbUFuaW1hdG9y
UG9zWCgwKQotICAgICwgbV96b29tQW5pbWF0b3JQb3NZKDApCiB7CiAgICAgLy8gQSBGcmFtZSBt
YXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWlj
U3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKaW5kZXggYmMyMDY2MjAwNWQxYWQ5ZjkwN2EzM2YyMjk4ZWY3NTljNDk2YTNhMi4u
ZTM1N2RhOTAwM2Y3ODQ3NWUxNWQ5YmVkMWMwY2NmOWQ4NTljYzU0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaApAQCAtNDI5LDEzICs0MjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9vbCBmbGFnKSB7IG1fZm9yY2VDb21wb3Np
dGluZ01vZGUgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgZm9yY2VDb21wb3NpdGluZ01vZGUoKSB7
IHJldHVybiBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOyB9CiAKLSAgICAgICAgdm9pZCBzZXRab29t
QW5pbWF0b3JTY2FsZShmbG9hdCBzY2FsZSkgeyBtX3pvb21BbmltYXRvclNjYWxlID0gc2NhbGU7
IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yU2NhbGUoKSB7IHJldHVybiBtX3pvb21Bbmlt
YXRvclNjYWxlOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JQb3NpdGlvbihmbG9h
dCB4LCBmbG9hdCB5KSB7IG1fem9vbUFuaW1hdG9yUG9zWCA9IHg7IG1fem9vbUFuaW1hdG9yUG9z
WSA9IHk7IH0KLSAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yUG9zWCgpIHsgcmV0dXJuIG1fem9v
bUFuaW1hdG9yUG9zWDsgfQotICAgICAgICBmbG9hdCB6b29tQW5pbWF0b3JQb3NZKCkgeyByZXR1
cm4gbV96b29tQW5pbWF0b3JQb3NZOyB9Ci0KICAgICAgICAgdm9pZCBzZXRTaG91bGRJbmplY3RV
c2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoYm9vbCBmbGFnKSB7IG1fc2hvdWxkSW5q
ZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50ID0gZmxhZzsgfQogICAgICAgICBi
b29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCgpIHsgcmV0
dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50OyB9CiAK
QEAgLTYwNywxMCArNjAwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAg
IHN0YXRpYyBib29sIGdNb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CiAKLSAgICAgICAgZmxvYXQgbV96
b29tQW5pbWF0b3JTY2FsZTsKLSAgICAgICAgZmxvYXQgbV96b29tQW5pbWF0b3JQb3NYOwotICAg
ICAgICBmbG9hdCBtX3pvb21BbmltYXRvclBvc1k7Ci0KICNpZiBVU0UoU0FGQVJJX1RIRU1FKQog
ICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDVjM2QyNzAy
MTlkODQ4OTVhMGEwMzk1MTQ5NzQyYmEwOGJkYzZhZDguLjMyOThlMThhNTI1N2MxYzdkZmU2ZjE0
MDhkOTA5OWEwNzE2ZDJiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAKQEAgLTUyLDYgKzUyLDkgQEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9y
KFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEo
c2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2N1cnJlbnRQb3NYKDApCiAgICAgLCBtX2N1cnJlbnRQ
b3NZKDApCisgICAgLCBtX2N1cnJlbnRab29tU2NhbGUoMSkKKyAgICAsIG1fY3VycmVudFpvb21U
cmFuc1goMCkKKyAgICAsIG1fY3VycmVudFpvb21UcmFuc1koMCkKIHsKIH0KIApAQCAtMTMzLDQg
KzEzNiwzMSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoKQog
ICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldFNjcm9sbE9mZnNldEZyb21BbmltYXRpb24oSW50UG9p
bnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50UG9zWSkpOwogfQogCit2b2lkIFNjcm9sbEFuaW1h
dG9yOjpub3RpZnlab29tQ2hhbmdlZChab29tQW5pbWF0aW9uU3RhdGUgc3RhdGUpCit7CisgICAg
bV9zY3JvbGxhYmxlQXJlYS0+em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChtX2N1cnJlbnRa
b29tU2NhbGUsIG1fY3VycmVudFpvb21UcmFuc1gsIG1fY3VycmVudFpvb21UcmFuc1ksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9PSBa
b29tQW5pbWF0aW9uQ29udGludWluZyA/IFNjcm9sbGFibGVBcmVhOjpab29tQW5pbWF0aW9uQ29u
dGludWluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTY3JvbGxhYmxlQXJlYTo6Wm9v
bUFuaW1hdGlvbkZpbmlzaGluZyk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Onpv
b21UcmFuc2xhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQobV9jdXJyZW50
Wm9vbVRyYW5zWCwgbV9jdXJyZW50Wm9vbVRyYW5zWSk7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0
b3I6OnJlc2V0Wm9vbSgpCit7CisgICAgbV9jdXJyZW50Wm9vbVNjYWxlID0gMTsKKyAgICBtX2N1
cnJlbnRab29tVHJhbnNYID0gMDsKKyAgICBtX2N1cnJlbnRab29tVHJhbnNZID0gMDsKK30KKwor
dm9pZCBTY3JvbGxBbmltYXRvcjo6c2V0Wm9vbVBhcmFtZXRlcnNGb3JUZXN0KGZsb2F0IHNjYWxl
LCBmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIG1fY3VycmVudFpvb21TY2FsZSA9IHNjYWxlOwor
ICAgIG1fY3VycmVudFpvb21UcmFuc1ggPSAoMSAtIHNjYWxlKSAqIHg7CisgICAgbV9jdXJyZW50
Wm9vbVRyYW5zWSA9ICgxIC0gc2NhbGUpICogeTsKKyAgICBub3RpZnlab29tQ2hhbmdlZChab29t
QW5pbWF0aW9uQ29udGludWluZyk7IC8vIERvbid0IGxldCBwYWdlIHJlLXNjYWxlLgorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaAppbmRleCA3Y2U2MTM4ODgzMTA5NjM0YTdmMzA2N2FiODQ5OWYyMjQ0MDk2Mzg3Li5kOGU0
OTU0NTZkYWU5MmUxYjc2MDgwMDBhNjExMGVjZGY0OWVjMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdG9yIHsKIHB1YmxpYzoKKyAgICBlbnVt
IFpvb21BbmltYXRpb25TdGF0ZSB7IFpvb21BbmltYXRpb25Db250aW51aW5nLCBab29tQW5pbWF0
aW9uRmluaXNoaW5nIH07CisKICAgICBzdGF0aWMgUGFzc093blB0cjxTY3JvbGxBbmltYXRvcj4g
Y3JlYXRlKFNjcm9sbGFibGVBcmVhKik7CiAKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvcigp
OwpAQCAtODcsMTQgKzg5LDI0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSG9y
aXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJl
bW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgeyB9CiAKKyAgICBmbG9hdCB6b29t
U2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRab29tU2NhbGU7IH0KKyAgICBGbG9hdFBv
aW50IHpvb21UcmFuc2xhdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZXNldFpvb20o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Wm9vbVBhcmFtZXRlcnNGb3JUZXN0KGZsb2F0LCBmbG9h
dCwgZmxvYXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFy
ZWEqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5nZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5Wm9vbUNoYW5nZWQoWm9vbUFuaW1hdGlvblN0YXRlKTsKIAogICAg
IFNjcm9sbGFibGVBcmVhKiBtX3Njcm9sbGFibGVBcmVhOwogICAgIGZsb2F0IG1fY3VycmVudFBv
c1g7IC8vIFdlIGF2b2lkIHVzaW5nIGEgRmxvYXRQb2ludCBpbiBvcmRlciB0byByZWR1Y2UKICAg
ICBmbG9hdCBtX2N1cnJlbnRQb3NZOyAvLyBzdWJjbGFzcyBjb2RlIGNvbXBsZXhpdHkuCisKKyAg
ICBmbG9hdCBtX2N1cnJlbnRab29tU2NhbGU7CisgICAgZmxvYXQgbV9jdXJyZW50Wm9vbVRyYW5z
WDsKKyAgICBmbG9hdCBtX2N1cnJlbnRab29tVHJhbnNZOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5j
cHAKaW5kZXggOWEzOWRkMjViOTMwNGYzYzU0ZGM2MGU4ZTJlYWU3YjlmYzQ0MTM2OS4uNGM2NWY5
NTczMjE3MjdiYTI3ZDJlZjIxM2RhYmM2ODhiNjMyY2FjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiT3duQXJyYXlQdHIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCkBAIC0zNjYsMTAgKzM2NywzNiBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OnVwZGF0ZVZpc2libGVMZW5ndGgoTGF5b3V0VW5pdCB2
aXNpYmxlTGVuZwogICAgIG1fdmlzaWJsZUxlbmd0aCA9IHZpc2libGVMZW5ndGg7CiB9CiAKK1Nj
cm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURhdGE6Olpvb21EYXRhKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yTm9uZSogcGFyZW50KQorICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgICwgbV9pc0FuaW1h
dGluZyhmYWxzZSkKK3sKK30KKworYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6Olpvb21EYXRhOjph
bmltYXRlWm9vbShkb3VibGUgY3VycmVudFRpbWUpCit7CisgICAgbV9sYXN0QW5pbWF0aW9uVGlt
ZSA9IGN1cnJlbnRUaW1lOworICAgIGRvdWJsZSBkZWx0YVRpbWUgPSBjdXJyZW50VGltZSAtIG1f
c3RhcnRUaW1lOworCisgICAgaWYgKGRlbHRhVGltZSA+IG1fYW5pbWF0aW9uVGltZSkgeworICAg
ICAgICBtX3BhcmVudC0+bV9jdXJyZW50Wm9vbVNjYWxlID0gbV9kZXNpcmVkU2NhbGU7CisgICAg
ICAgIG1fcGFyZW50LT5tX2N1cnJlbnRab29tVHJhbnNYID0gbV9kZXNpcmVkVHJhbnNYOworICAg
ICAgICBtX3BhcmVudC0+bV9jdXJyZW50Wm9vbVRyYW5zWSA9IG1fZGVzaXJlZFRyYW5zWTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGRvdWJsZSBlbGFwc2VkVGltZUZyYWN0
aW9uID0gZGVsdGFUaW1lIC8gbV9hbmltYXRpb25UaW1lOworICAgIG1fcGFyZW50LT5tX2N1cnJl
bnRab29tU2NhbGUgPSBlbGFwc2VkVGltZUZyYWN0aW9uICogKG1fZGVzaXJlZFNjYWxlIC0gbV9z
dGFydFNjYWxlKSArIG1fc3RhcnRTY2FsZTsKKyAgICBtX3BhcmVudC0+bV9jdXJyZW50Wm9vbVRy
YW5zWCA9IGVsYXBzZWRUaW1lRnJhY3Rpb24gKiBtX2Rlc2lyZWRUcmFuc1g7CisgICAgbV9wYXJl
bnQtPm1fY3VycmVudFpvb21UcmFuc1kgPSBlbGFwc2VkVGltZUZyYWN0aW9uICogbV9kZXNpcmVk
VHJhbnNZOworICAgIHJldHVybiB0cnVlOworfQorCiBTY3JvbGxBbmltYXRvck5vbmU6OlNjcm9s
bEFuaW1hdG9yTm9uZShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBTY3Jv
bGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1faG9yaXpvbnRhbERhdGEodGhpcywg
Jm1fY3VycmVudFBvc1gsIHNjcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSkKICAgICAsIG1f
dmVydGljYWxEYXRhKHRoaXMsICZtX2N1cnJlbnRQb3NZLCBzY3JvbGxhYmxlQXJlYS0+dmlzaWJs
ZUhlaWdodCgpKQorICAgICwgbV96b29tRGF0YSh0aGlzKQogICAgICwgbV9hbmltYXRpb25UaW1l
cih0aGlzLCAmU2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZpcmVkKQogewogfQpA
QCAtNDM1LDYgKzQ2Miw2MyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldAogICAgIG5vdGlmeVBv
c2l0aW9uQ2hhbmdlZCgpOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbShjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQoreworICAgIEFTU0VSVChwZ2UudHlwZSgpID09
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlKTsKKyAgICAvLyBGSVhNRTogbW9k
aWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIGFjdGl2ZS4KKyAg
ICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX2N1cnJlbnRa
b29tU2NhbGUgPSAxOworICAgICAgICBtX2N1cnJlbnRab29tVHJhbnNYID0gMDsKKyAgICAgICAg
bV9jdXJyZW50Wm9vbVRyYW5zWSA9IDA7CisKKyAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0g
V1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAgICAgZmxvYXQgc2NhbGUg
PSBwZ2UuZGVsdGFYKCk7CisKKyAgICAgICAgbV96b29tRGF0YS5tX3N0YXJ0VGltZSA9IGN1cnJl
bnRUaW1lIC0ga1RpY2tUaW1lIC8gMjsKKyAgICAgICAgbV96b29tRGF0YS5tX3N0YXJ0U2NhbGUg
PSBtX2N1cnJlbnRab29tU2NhbGU7CisgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkU2NhbGUg
PSBzY2FsZTsKKyAgICAgICAgLy8gRklYTUU6IERvY3VtZW50IHRoZW4gc2ltcGxpZnkgdGhlIGZv
bGxvd2luZyBlcXVhdGlvbnMuCisgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNYID0g
KDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24oKS54KCk7CisgICAgICAgIG1fem9vbURh
dGEubV9kZXNpcmVkVHJhbnNZID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24oKS55
KCk7CisjaWYgRU5BQkxFKERPVUJMRV9UQVBfQ0VOVEVSUykKKyAgICAgICAgaWYgKHBnZS50eXBl
KCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpIHsKKyAgICAgICAgICAg
IC8vIFpvb20gdG8gY2VudHJlIG9mIGRpc3BsYXkuIFBpbmNoLXRvLXpvb20gbWF5IG5vdCB3YW50
IHRoaXMgYmVoYXZpb3VyLgorICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1gg
Kz0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkgLyAyIC0gcGdlLmdsb2JhbFBvc2l0
aW9uKCkueCgpOworICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1kgKz0gbV9z
Y3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgpIC8gMiAtIHBnZS5nbG9iYWxQb3NpdGlvbigp
LnkoKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1fem9vbURhdGEubV9sYXN0QW5pbWF0
aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX3pvb21EYXRhLm1fYW5pbWF0aW9uVGlt
ZSA9IDUwICoga1RpY2tUaW1lOworCisgICAgICAgIGJvb2wgaXNDb250aW51aW5nID0gbV96b29t
RGF0YS5hbmltYXRlWm9vbShjdXJyZW50VGltZSk7CisKKyAgICAgICAgZG91YmxlIGRlbHRhVG9O
ZXh0RnJhbWUgPSBjZWlsKChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKSAqIGtGcmFtZVJhdGUp
IC8ga0ZyYW1lUmF0ZSAtIChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKKyAgICAgICAgZG91
YmxlIG5leHRUaW1lckludGVydmFsID0gbWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGFU
b05leHRGcmFtZSk7CisgICAgICAgIGlmIChpc0NvbnRpbnVpbmcpIHsKKyAgICAgICAgICAgIG1f
YW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsKKyAgICAgICAg
ICAgIG1fem9vbURhdGEubV9pc0FuaW1hdGluZyA9IHRydWU7CisgICAgICAgICAgICBub3RpZnla
b29tQ2hhbmdlZChab29tQW5pbWF0aW9uQ29udGludWluZyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbm90aWZ5Wm9vbUNoYW5nZWQoWm9vbUFuaW1hdGlvbkZpbmlzaGluZyk7CisgICAg
fQorfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQordm9pZCBTY3JvbGxBbmltYXRvck5v
bmU6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQor
eworICAgIFRSQUNFX0VWRU5UKCJTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVFdmVu
dCIsIHRoaXMsIDApOworICAgIHN3aXRjaCAocGdlLnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6CisgICAgICAgIHpvb20ocGdlKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBUT0RPOiBhZGQgYW55IG90aGVy
IGV2ZW50IHR5cGVzIHdlIHNob3VsZCBoYW5kbGUKKyAgICAgICAgeyB9CisgICAgfQorfQorI2Vu
ZGlmCisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiB7CiAg
ICAgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKQEAgLTQ2Niw2ICs1NTAsMTcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JO
b25lPiogdGltZXIpCiAgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKICAgICBpZiAo
bV92ZXJ0aWNhbERhdGEubV9zdGFydFRpbWUgJiYgbV92ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9s
bChjdXJyZW50VGltZSArIGRlbHRhVG9OZXh0RnJhbWUpKQogICAgICAgICBjb250aW51ZUFuaW1h
dGlvbiA9IHRydWU7CisKKyAgICBpZiAobV96b29tRGF0YS5tX2lzQW5pbWF0aW5nKSB7CisgICAg
ICAgIGlmIChtX3pvb21EYXRhLm1fc3RhcnRUaW1lICYmIG1fem9vbURhdGEuYW5pbWF0ZVpvb20o
Y3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkgeworICAgICAgICAgICAgY29udGludWVB
bmltYXRpb24gPSB0cnVlOworICAgICAgICAgICAgbm90aWZ5Wm9vbUNoYW5nZWQoWm9vbUFuaW1h
dGlvbkNvbnRpbnVpbmcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90aWZ5Wm9v
bUNoYW5nZWQoWm9vbUFuaW1hdGlvbkZpbmlzaGluZyk7CisgICAgICAgICAgICBtX3pvb21EYXRh
Lm1faXNBbmltYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChjb250
aW51ZUFuaW1hdGlvbikgewogICAgICAgICBkb3VibGUgbmV4dFRpbWVySW50ZXJ2YWwgPSBtYXgo
a01pbmltdW1UaW1lckludGVydmFsLCBkZWx0YVRvTmV4dEZyYW1lKTsKICAgICAgICAgdGltZXIt
PnN0YXJ0T25lU2hvdChuZXh0VGltZXJJbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCmluZGV4IDBjMGViMTZhMWZmOTQxMjFlNDczODU5ZmZh
ZDhmYTU2ZDE4MTlmZmUuLjg5Mjk3Zjc5NTYxYzM4OTllM2JmMDE4NDA4YjQ2NmExMGJlZjNiYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCkBAIC01
MSw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9y
aWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGll
cik7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25z
dCBGbG9hdFBvaW50Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbShjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJl
c2l6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxi
YXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxi
YXIqKTsKQEAgLTEyNywxMiArMTMwLDM1IEBAIHByb3RlY3RlZDoKICAgICAgICAgTGF5b3V0VW5p
dCBtX3Zpc2libGVMZW5ndGg7CiAgICAgfTsKIAorICAgIC8vIFdoaWxlIHpvb21pbmcsIHNjYWxl
LCBwb3NYIGFuZCBwb3NZIG5lZWQgdG8gc3RheSB0aWdodGx5IGNvdXBsZWQsIHNvIHVzZSBhIHNl
cGFyYXRlCisgICAgLy8gZGF0YSBzdHJ1Y3R1cmUuCisgICAgc3RydWN0IFpvb21EYXRhIHsKKyAg
ICAgICAgWm9vbURhdGEoU2Nyb2xsQW5pbWF0b3JOb25lKiBwYXJlbnQpOworICAgICAgICBib29s
IGFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSk7CisKKyAgICAgICAgU2Nyb2xsQW5pbWF0
b3JOb25lKiBtX3BhcmVudDsKKyAgICAgICAgYm9vbCBtX2lzQW5pbWF0aW5nOworCisgICAgICAg
IGRvdWJsZSBtX3N0YXJ0VGltZTsKKworICAgICAgICBkb3VibGUgbV9hbmltYXRpb25UaW1lOwor
ICAgICAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uVGltZTsKKworICAgICAgICBkb3VibGUgbV9z
dGFydFNjYWxlOworICAgICAgICBkb3VibGUgbV9kZXNpcmVkU2NhbGU7CisgICAgICAgIGRvdWJs
ZSBtX2Rlc2lyZWRUcmFuc1g7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRUcmFuc1k7CisgICAg
fTsKKworICAgIGZyaWVuZCBjbGFzcyBab29tRGF0YTsKKwogICAgIHZvaWQgYW5pbWF0aW9uVGlt
ZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+Kik7CiAgICAgdm9pZCBzdG9wQW5pbWF0
aW9uVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIAog
ICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0
aWNhbERhdGE7CisgICAgWm9vbURhdGEgbV96b29tRGF0YTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0
VGltZTsKICAgICBUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+IG1fYW5pbWF0aW9uVGltZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggMGM2MTcwMzRk
NDQ3M2UxMDUzNjdhMGJmYjU1ZjM4NThlZjllODA2Yi4uMzRkZGMzZDkzYzgwNzU4MzAxOTMyYmI3
OTM3MGFkYzk4OTZlNDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxU
b1lPZmZzZXRXaXRob3V0QW5pbWF0aW9uKGZsb2F0IHkpCiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS0+Y3VycmVudFBvc2l0aW9u
KCkueCgpLCB5KSk7CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6Onpvb21BbmltYXRvclRyYW5z
Zm9ybUNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgWm9vbUFuaW1hdGlvblN0YXRlKQor
eworICAgIC8vIFJlcXVpcmVzIEZyYW1lVmlldyB0byBvdmVycmlkZSB0aGlzLgorfQorCiBib29s
IFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCkKIHsKICAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3IoKS0+aGFuZGxlV2hl
ZWxFdmVudCh3aGVlbEV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCmluZGV4IDI0MzJjZDI5NDcxMGNhNzQ2N2MzZGZmOGU0YWVjYTZiZjljNTkwMGIuLjZmNDM2
YTlhYTkzZDQ4YzRiNmI2YWU1MDYyMmMzY2Y4ZTUyN2U2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNDMsNiArNDMsOCBAQCBjbGFzcyBHcmFwaGljc0xh
eWVyOwogCiBjbGFzcyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CisgICAgZW51bSBab29tQW5p
bWF0aW9uU3RhdGUgeyBab29tQW5pbWF0aW9uQ29udGludWluZywgWm9vbUFuaW1hdGlvbkZpbmlz
aGluZyB9OworCiAgICAgU2Nyb2xsYWJsZUFyZWEoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxhYmxl
QXJlYSgpOwogCkBAIC01Miw2ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbFRvWE9m
ZnNldFdpdGhvdXRBbmltYXRpb24oZmxvYXQgeCk7CiAgICAgdm9pZCBzY3JvbGxUb1lPZmZzZXRX
aXRob3V0QW5pbWF0aW9uKGZsb2F0IHgpOwogCisgICAgdmlydHVhbCB2b2lkIHpvb21BbmltYXRv
clRyYW5zZm9ybUNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgWm9vbUFuaW1hdGlvblN0
YXRlKTsKKwogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmKTsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgdm9pZCBoYW5kbGVHZXN0dXJl
RXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCBkZjhhYzJlYWJkMjEyNDUxYzBjNzQ3ZTBlNmU0ZjM3M2RjNmIxMWMz
Li42NTVjZGUxNTEzYzQ0NWY4NjhmNGFkZjExMmYzNzY4ODc2NDI4Nzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
QEAgLTQwLDkgKzQxLDE1IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vZGVS
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2lmIEVOQUJMRShHRVNUVVJF
X0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlmCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5k
ZXJUcmVlQXNUZXh0LmgiCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisjaW5jbHVkZSAi
U2Nyb2xsQW5pbWF0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0y
MzgsMTUgKzI0NSw1MSBAQCB2b2lkIEludGVybmFsczo6c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUo
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdAogICAgIGRvY3VtZW50LT5z
ZXR0aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShlbmFibGVkKTsKIH0KIAotdm9pZCBJ
bnRlcm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVudCAqZG9jdW1lbnQsIGRv
dWJsZSBzY2FsZSwgZG91YmxlIHR4LCBkb3VibGUgdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBJbnRlcm5hbHM6OnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8
ICFkb2N1bWVudC0+c2V0dGluZ3MoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5z
ZXRab29tQW5pbWF0b3JTY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4oc2NhbGUpKTsKLSAgICBkb2N1
bWVudC0+c2V0dGluZ3MoKS0+c2V0Wm9vbUFuaW1hdG9yUG9zaXRpb24oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHR4KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHR5KSk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JP
TExJTkcpCisgICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldEVuYWJsZVNjcm9sbEFuaW1hdG9y
KGVuYWJsZWQpOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JU
cmFuc2Zvcm0oRG9jdW1lbnQgKmRvY3VtZW50LCBmbG9hdCBzY2FsZSwgZmxvYXQgdHgsIGZsb2F0
IHR5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVu
dC0+dmlldygpIHx8ICFkb2N1bWVudC0+dmlldygpLT5mcmFtZSgpKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50IHBnZShQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgSW50UG9pbnQodHgsIHR5KSwgSW50UG9pbnQodHgs
IHR5KSwgMCwgc2NhbGUsIDAuZiwgMCwgMCwgMCwgMCk7CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+
ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwZ2UpOworI2VuZGlm
Cit9CisKK2Zsb2F0IEludGVybmFsczo6Z2V0UGFnZVNjYWxlRmFjdG9yKERvY3VtZW50ICpkb2N1
bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1l
bnQtPnBhZ2UoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGRvY3VtZW50LT5wYWdlKCktPnBhZ2VTY2Fs
ZUZhY3RvcigpOworfQorCit2b2lkIEludGVybmFsczo6c2V0Wm9vbVBhcmFtZXRlcnMoRG9jdW1l
bnQqIGRvY3VtZW50LCBmbG9hdCBzY2FsZSwgZmxvYXQgeCwgZmxvYXQgeSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSB8fCAhZG9j
dW1lbnQtPnZpZXcoKS0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQorICAgIGRvY3VtZW50LT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnNldFpvb21QYXJhbWV0
ZXJzRm9yVGVzdChzY2FsZSwgeCwgeSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNl
dFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNThiODlk
NWEzY2IyMDY2NjFjNDk3MTcwYWNiNzMxMTUxZGU5NzFlYi4uNDEwYjZlZDhkNzg0MDQ4NWYzNGNh
Y2U4NWU5NTcxOGYxOTk2ZWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03
Niw3ICs3NiwxMSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VG
b3JOb2RlKE5vZGUqLCB1bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRG
b3JjZUNvbXBvc2l0aW5nTW9kZShEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZG91Ymxl
IHNjYWxlLCBkb3VibGUgdHgsIGRvdWJsZSB0eSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9p
ZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50Kiwg
ZmxvYXQgc2NhbGUsIGZsb2F0IHR4LCBmbG9hdCB0eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIGZs
b2F0IGdldFBhZ2VTY2FsZUZhY3RvcihEb2N1bWVudCosICBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBzZXRab29tUGFyYW1ldGVycyhEb2N1bWVudCosIGZsb2F0IHNjYWxlLCBmbG9hdCB4LCBm
bG9hdCB5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJs
ZWQoRG9jdW1lbnQqLCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNl
dFBhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKERvY3VtZW50KiwgZG91YmxlIGR1cmF0aW9u
SW5TZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKaW5kZXggYTY4MzA1YWNhMDYwNjZmODcxZWZhYTk1Yjg5MzhkYjczZDk1MTdlNC4uOTA5OTg5
ZGEyYTJhMmQ0MmM3ZjlmY2E1MjJjMDc4NTM3NWMxNzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbApAQCAtNTAsNyArNTAsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAg
IFJhbmdlIG1hcmtlclJhbmdlRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIHVuc2lnbmVkIGxvbmcg
aW5kZXgpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21w
b3NpdGluZ01vZGUoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3Jt
KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgc2NhbGUsIGluIGRvdWJsZSB0eCwgaW4g
ZG91YmxlIHR5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRFbmFibGVT
Y3JvbGxBbmltYXRvcihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zv
cm0oaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlLCBpbiBmbG9hdCB0eCwgaW4g
ZmxvYXQgdHkpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBmbG9hdCBnZXRQYWdlU2Nh
bGVGYWN0b3IoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICB2b2lkIHNldFpvb21QYXJhbWV0ZXJzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBmbG9h
dCBzY2FsZSwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAK
ICAgICAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50
LCBpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lk
IHNldFBhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKGluIERvY3VtZW50IGRvY3VtZW50LCBp
biBkb3VibGUgZHVyYXRpb25JblNlY29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA5MTdjNTU2M2FkMjEwYjEwZmM0YTc0Y2M0ZTg5YzM3MjM3
YTYwZThjLi5iZDVjYzUyNjVlODFhOGRjYTk5NTAyMGEyYjFkODE0MjBlYTVjYzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTEwLTA2ICBXLiBKYW1l
cyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFpvb20gYW5pbWF0b3IgZnJvbnQtZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODAzNQorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gZ2V0IHpv
b20gdGV4dHVyZS1zY2FsZSBwYXJhbWV0ZXJzIGZyb20gU2NhbGVBbmltYXRvciBkaXJlY3RseQor
ICAgICAgICBpbnN0ZWFkIG9mIHZpYSBTZXR0aW5ncy4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkpOgorCiAyMDEx
LTEwLTAzICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5k
ZXhlZERCOiBSZW1vdmUgU1FMaXRlLUxldmVsREIgbWlncmF0aW9uIGNvZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBkYzI0MGFlYzczNDEyZGNkM2Rl
Y2Y2ZjE0Y2YwOWE1MmY5ZTY4NDkxLi4wNDRiMTAyMzBjODNmMDE1NDA4YmY0NmNmYjc0YjY3ZjQ2
NTY5MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBA
IC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiU2Ny
b2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCkBAIC0yNTY0LDgg
KzI1NjUsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKQog
ewogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggem9vbU1hdHJpeDsKLSAgICAgICAgem9vbU1hdHJpeC50cmFuc2xhdGUobV9wYWdlLT5zZXR0
aW5ncygpLT56b29tQW5pbWF0b3JQb3NYKCksIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1h
dG9yUG9zWSgpKTsKLSAgICAgICAgem9vbU1hdHJpeC5zY2FsZShtX3BhZ2UtPnNldHRpbmdzKCkt
Pnpvb21BbmltYXRvclNjYWxlKCkpOworICAgICAgICBGbG9hdFBvaW50IHRyYW5zID0gbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpLT5zY3JvbGxBbmltYXRvcigpLT56b29tVHJhbnNsYXRpb24o
KTsKKyAgICAgICAgem9vbU1hdHJpeC50cmFuc2xhdGUodHJhbnMueCgpLCB0cmFucy55KCkpOwor
ICAgICAgICB6b29tTWF0cml4LnNjYWxlKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Ny
b2xsQW5pbWF0b3IoKS0+em9vbVNjYWxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFpvb21BbmltYXRvclRyYW5zZm9ybSh6b29tTWF0cml4KTsKICAgICB9CiAgICAgaWYgKG1fbGF5
ZXJUcmVlSG9zdCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110142</attachid>
            <date>2011-10-07 07:39:23 -0700</date>
            <delta_ts>2011-10-09 20:04:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68035-20111007103606.patch</filename>
            <type>text/plain</type>
            <size>33647</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4MDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YTc0NzI1YTJiNTJiMGZhMTdjOGZi
YTE3MjI3YTg5MmU3NDBjYTQ1Li4xNmY5YmI5YWM1NjJiMmUxMGJlOTlmMmI3MWRmNmIzOWJlODdm
N2Y1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMDYgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gWm9vbSBhbmlt
YXRvciBmcm9udC1lbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Mi1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2Nh
bGUtdGVzdC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pv
b20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMS0xMC0wNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtRdF0gaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS1pbmhlcml0
ZWQuaHRtbCBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCBhZnRlciByOTYyNTcKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNDQ2NmI4YjU1ZjQ4NzAzMTBkN2RlZGZlMDJhYzMwN2YzYWU4MWFkCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAzMzMzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAq
Wik9aF5obEElQFdzJGxIYG9rPG19P29UIXRoQQp6dnNDam1PVCpOKEckVmBUcXxfOCszajxUalIx
O0grUkFVUGheUihDLUtiI3BEYyYyOzBJRUdacmQzKk9AdTJlTEcKekwqUnhOamI8d2ozVkI7Q25F
djlzaz9hTjtPO2FDZnlAdVEkLTdYVlQzdjZ6ZkpLbEp7cnRQNiZtR3RUR19sQWMqCnptMDBPQUZ3
OTdsSWxnQFBeNlUzdipJJlE9d3JwZD5udHU8Y0ZmaEVrVlppaElaezR7V09HUn1VOHE5a2l8MHBp
YQp6SShNUmR6cFhTd2dafjQ1PipuWG10WVFvZkpfKEVyTV85eGQ0cHszPktpJk50RDBIQ3Umempa
VXl7YTErN31rQjsKenYtK0kwSCY5ODteRjFyIz02cVpiJGs2YjUmcmdYIT9GYUAyISR3dkgwYnZt
MXt5YD4mOEwxTCZHZUpmaygzeVFVCno/YzlkVVN2aTdDVjU4eDdQe0loP0s5N09uSzwkaVduYUAw
Y184T2VkK2lxPU5YKEphdT1qWHFfeUxGdXk4ZkZ8fAp6Vig4IW1kVWxrN0g0dHZSeCtjNnN7cStC
Nyt2Z24kRlpvcnI+I0dSRTFGSkEjRyQlMX1HYnBIeUdEWlZ8UClnWGcKej5ucUU8bFBfPC15Y1Be
QlZqNGgyMypCP3UrQntvRWhLQXE4N0JjaHAqOHN1NEFXLT5+eVohY0c4dzxKcT1rSVNSCnp1YHFO
KjAheVNGdiV0anloXlJsczF1VTRaZj1lVjJAaDVtUiQmY3B5KEsycyU8YnVgRnt0T0hjPn0yQGJZ
MWpZKAp6d3ZpfWx6bD5eIXZAOz1MaHwhdj4rZHRucE19alQ3MS1WJVhZRn5hPEVlQUZeYio3KkdK
YkMlJG0pfCNucytgdzAKemA3NjhBTDU8ZHteVGUtSz03U28yLSskWjtlT3xnJTBONU9UVSQkfGI3
JHt8ezFEaURXdyNCVn4tWSlfYSZjQl92Cnp7ams5diVOJldld2BJRilhXkRMdUc+OUs3dGZ7SzFk
VkJZNCkhd14jO0B3QnJBTmNoLWdQfiNsJVd+dGApVTZSWgp6WkhZSkRmNndRV1pBO3ZJYjVDO0dX
ZlAjKkApYGpLeVAxYXtlJU0jUD48e2x7bGUwYnhFRHo3Q21OQD9MKV9EZW8KejhkK2VvVGp1eWB5
SDUkfTB0XnEldVkwPlJ7SnFraUFLR21VNEQpWHNjSytQWmRPQUVYezZpKSV4bkFkRXUkVWZsCnpx
NGh2ZUlLelNQWnkme35CcUxzTkYobUIjYjc4WW54UElKeHp2Y1RjTWpVQF54TD9pU0BfWUxPcFAz
by1lbSQ2Ywp6THFBOGJZTVY4fmhwRHhEVEpgRXIjd0goSntfKTM7QUdhNzhvPUBWY2BXb2xiJWdS
dD1ZRzMhcVc4TFFzYXFBfkAKekdjd2VLVUheOUphTV5Dend1a3k+KiUlKCY8Ml92UF9QeT1AVTk1
I04/KXpzbEdraUV5d1JoalBiejxFfHw5P0ZCCldAVCNJVyVXK2A4aFFaVS0mdDt1Y0xLNlQpSSNz
T3oKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5odG1sIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1z
Y2FsZS10ZXN0Lmh0bWwKaW5kZXggZTFiYWM5ZWI3MzRkOWU4N2NjNzI4YjY4ZDBhMWQ0OWYwNGQz
ZWU5NC4uNmQzODhmMzIxNzYxOTkzN2RlNzA1MTQ0NjVjMjUzODk2NjU3Yzc3MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRv
ci1zY2FsZS10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKQEAgLTMsNyArMyw3IEBACiAg
ICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAgICAgICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZG9jdW1lbnQsIHRydWUp
OwotICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0o
ZG9jdW1lbnQsIDEuMjUsIC0yNS4wLCAtMjUuMCk7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldFpvb21QYXJhbWV0ZXJzKGRvY3VtZW50LCAxLjI1LCAxMDAsIDEwMCk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICAg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1h
dG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96
b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20t
YW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
Y2E5ZTljOWVlODVlNGJlNDU2ZTc4YmZhZDNjZDc5ZDI5MWI5Y2MyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRv
ci1zY2FsZS10ZXN0Mi5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorICA8aGVhZD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAg
d2luZG93LmludGVybmFscy5zZXRFbmFibGVTY3JvbGxBbmltYXRvcihkb2N1bWVudCwgdHJ1ZSk7
CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGRv
Y3VtZW50LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KHRydWUpOworICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0aW1lcjsKKyAgICAg
ICAgdmFyIGNvdW50ID0gMDsKKyAgICAgICAgdmFyIG1heENvdW50ID0gMTA7CisgICAgICAgIHZh
ciBuZXdTY2FsZSA9IDEuMjU7CisKKyAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAg
ICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMgfHwg
KHdpbmRvdy5pbnRlcm5hbHMuZ2V0UGFnZVNjYWxlRmFjdG9yKGRvY3VtZW50KSA9PSBuZXdTY2Fs
ZSB8fCBjb3VudCA+IG1heENvdW50KSkgeworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
dGltZXIpOworCisgICAgICAgICAgICAgICAgaWYgKGNvdW50ID4gbWF4Q291bnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFCb3giKS5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSAicmVkIjsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImFCb3giKS5pbm5lckhUTUwgPSAiPGNlbnRlcj5GQUlMITwvY2VudGVyPiI7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGRvVGVzdCgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJhQm94Iikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyZWVuIjsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgd2luZG93Lmlu
dGVybmFscy5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oZG9jdW1lbnQsIG5ld1NjYWxlLCAxMDAu
MCwgMTAwLjApOworICAgICAgICAgICAgICAgIC8vIENoZWNrIHBlcmlvZGljYWxseSBmb3IgYW5p
bWF0aW9uIGNvbXBsZXRpb24uCisgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbCgi
ZmluaXNoVGVzdCgpIiwgMjUwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZG9UZXN0LCBmYWxzZSk7CisgICAgPC9z
Y3JpcHQ+CisgIDwvaGVhZD4KKzxib2R5IGlkPSJ0aGVCb2R5Ij4KKyAgPCEtLSAgICBJZiBzdWNj
ZXNzZnVsLCB0aGUgYm94IHNob3VsZCBlbmxhcmdlIHRvIGJlIDEyNXgxMjUgYXQgKDEyNSwxMjUp
LgorICAgIC0tPgorICA8ZGl2IGlkPSJhQm94IiBzdHlsZT0id2lkdGg6MTAwcHg7IGhlaWdodDox
MDBweDsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTAwcHg7IHRvcDoxMDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjojRkYwMDAwIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAwNzZl
YjkyNTkzZjNjOTY0Y2NkNzg1M2M5NGI5ODhiNTlhNDA1YTExLi4xOGY4MDk0MjE3OTg0YWNiNGNk
ODY4YTQ4YzE4YWY2MWE2NDYwNzFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yNjYzLDYgKzI2NjMsOSBAQCBCVUdX
SzU1OTY4IFdJTiBERUJVRyBHUFUgOiBjb21wb3NpdGluZy93ZWJnbC93ZWJnbC1ub25wcmVtdWx0
aXBsaWVkLWJsZW5kLmh0bWwgPQogQlVHV0s1ODU4NyBMSU5VWCBHUFUgREVCVUcgOiBtZWRpYS92
aWRlby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCA9IElNQUdFCiBCVUdDUjk3Njg2IExJTlVYIEdQ
VSBSRUxFQVNFIDogbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLmh0bWwgPSBJTUFHRQog
CisvLyBUYWtlIG5ldyBiYXNlbGluZXMgZnJvbSB0aGUgYm90cyB3aGVuIDY4MDM1IGxhbmRzLgor
QlVHV0s2OTYyNCBNQUMgV0lOIEdQVSBHUFUtQ0cgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QyLmh0bWwgPSBJTUFHRQorCiBCVUdDUjcyMjIz
IDogbWVkaWEvdmlkZW8tZnJhbWUtYWNjdXJhdGUtc2Vlay5odG1sID0gUEFTUyBJTUFHRQogCiBC
VUdXSzUzODY4IDogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG9jdW1lbnQtY2xv
c2UtY3Jhc2guaHRtbCA9IFBBU1MgVEVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJhYmFkNWI0Njc4ZDM3YzBj
NDdkMjRiMmE4NTVlN2JlZGQ2MGFkMjYuLmUxOWJkYTI2ZjM1NzVmYmIxYWRmNDYwNzNlNGRlZTZl
NmY3ZjMxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMS0xMC0wNiAgVy4gSmFt
ZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBab29tIGFuaW1hdG9yIGZyb250LWVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjgwMzUKKworICAgICAgICBBZGRzIG5lY2Vzc2FyeSBjb21wb25l
bnRzIHRvIFNjcm9sbEFuaW1hdG9yTm9uZSB0byBzdXBwb3J0IGEgem9vbSBhbmltYXRpb24KKyAg
ICAgICAgZmVhdHVyZS4gSW5jbHVkZXMgdGVzdCBpbmZyYXN0cnVjdHVyZSB2aWEgdGVzdGluZy9J
bnRlcm5hbHMgdG8gY2FwdHVyZQorICAgICAgICBpbi1wcm9ncmVzcyB0ZXh0dXJlIHNjYWxpbmcg
KHpvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5odG1sKSBhcyB3ZWxsIGFzIGEKKyAgICAgICAgZmlu
YWwgdmlldyAtLS0gYWZ0ZXIgcGFnZVNjYWxlRmFjdG9yIGhhcyBiZWVuIGFwcGxpZWQgLS0tIGlu
IHpvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbC4KKworICAgICAgICBSZW1vdmVzIHRlbXBv
cmFyeSB0ZXN0IGZpZWxkcyBmcm9tIFNldHRpbmdzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0
aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdDIuaHRtbAorCisgICAgICAgICogcGFnZS9FdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6em9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZCk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvcjo6bm90aWZ5Wm9vbUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6Onpvb21UcmFuc2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6cmVzZXRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpz
ZXRab29tUGFyYW1ldGVyc0ZvclRlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6em9vbVNjYWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpab29tRGF0YTo6Wm9vbURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpab29tRGF0YTo6YW5pbWF0ZVpvb20pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpTY3JvbGxBbmltYXRvck5vbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Onpvb21B
bmltYXRvclRyYW5zZm9ybUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpzZXRFbmFibGVTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmdldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldFpvb21QYXJhbWV0ZXJzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMS0xMC0wNSAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWRkIDEwIG1vcmUgZnJvbnQtZW5kIGNsYXNzZXMgdG8gdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggODBkMTQyYzk5MjM5ODBjMzk3
YjgxNzdiNDk0NTZlMDMzZmNkMTZhNS4uYzYzZmFlZTg0ODk0ODc3N2JkNTY3Y2MxZjkzNmQ2NjBh
OWFkNTMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjIzNSw4ICsy
MjM1LDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0
Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICBoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChmYWtlTW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgotICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CiAgICAg
ICAgIGNvbnN0IGZsb2F0IHRpY2tEaXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6OnRpY2tNdWx0
aXBsaWVyOwogICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0gaW1wbGVtZW50
YXRpb24gb25jZSB0aGUgYWJvdmUgZml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgpAQCAtMjI0Niw2
ICsyMjQ0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICBoYW5kbGVXaGVlbEV2
ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKICAgICBjYXNlIFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9m
cmFtZS0+dmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNjZjdlZGEzNjNl
OGE3NjljM2JjYTYxZmZhMWUyZGY1NDY2ZjU3MDIuLjZkZGViZGUyNTMzM2Y4M2Q5MDBkM2QzNzhh
NzIzN2I0ZDQ0ZjU2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTY3LDYgKzY3
LDkgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJSZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCIKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJU
cmFjZUV2ZW50LmgiCisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTEyMjAs
NiArMTIyMywyNiBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlV2lkZ2V0VG9VcGRhdGUoUmVuZGVy
RW1iZWRkZWRPYmplY3QqIG9iamVjdCkKICAgICBtX3dpZGdldFVwZGF0ZVNldC0+cmVtb3ZlKG9i
amVjdCk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3Ojp6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2Vk
KGRvdWJsZSBzY2FsZSwgZG91YmxlIHgsIGRvdWJsZSB5LCBab29tQW5pbWF0aW9uU3RhdGUgc3Rh
dGUpCit7CisgICAgaWYgKHN0YXRlID09IFpvb21BbmltYXRpb25GaW5pc2hpbmcpIHsKKyAgICAg
ICAgbV9wYWdlLT5zZXRQYWdlU2NhbGVGYWN0b3IobV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAq
IHNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRQb2ludChz
Y2FsZSAqIHNjcm9sbFgoKSAtIHgsIHNjYWxlICogc2Nyb2xsWSgpIC0geSkpOworICAgICAgICBz
Y3JvbGxBbmltYXRvcigpLT5yZXNldFpvb20oKTsKKyAgICB9CisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSByb290UmVuZGVyZXIo
dGhpcykpIHsKKyAgICAgICAgaWYgKHJvb3QtPnVzZXNDb21wb3NpdGluZygpKSB7CisgICAgICAg
ICAgICByb290LT5jb21wb3NpdG9yKCktPnNjaGVkdWxlTGF5ZXJGbHVzaCgpOworI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorICAgICAgICAgICAgVFJBQ0VfRVZFTlQoIkZyYW1lVmlldzo6em9vbUFu
aW1hdG9yVHJhbnNmb3JtQ2hhbmdlZCIsIHRoaXMsIDApOworI2VuZGlmCisgICAgICAgIH0KKyAg
ICB9CisjZW5kaWYKK30KKwogdm9pZCBGcmFtZVZpZXc6OnNldE1lZGlhVHlwZShjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSkKIHsKICAgICBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCmluZGV4IDQ0MmUwOGNhYmUxMDQ2N2VhZGVmYzllNmVlNjI0ZWVlNWZhZmQ4
YzcuLjg3MjZiNmI5NmQ2ZTRmNTMzMDRhYjE3ZmFkOWJhYWU1NGZiYzE5MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaApAQCAtMTcwLDYgKzE3MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVwYWludEZpeGVkRWxlbWVudHNBZnRlclNjcm9sbGluZygpOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBjb25zdDsKIAor
ICAgIHZpcnR1YWwgdm9pZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKGRvdWJsZSwgZG91
YmxlLCBkb3VibGUsIFpvb21BbmltYXRpb25TdGF0ZSk7CisKICAgICBTdHJpbmcgbWVkaWFUeXBl
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBhZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyhib29sIHByaW50aW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKaW5kZXggNmNhZjZlMjFkNjNjMmEzZDVmZGVkMzJiNDUyNzg1Y2JjMjI0MGJm
OC4uYzIyZmQxMzA5YmQ5MTMxMTc3ZDMwY2E4MWM0M2I1NGU5OThhMjYxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKQEAgLTIxOCw5ICsyMTgsNiBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFn
ZSogcGFnZSkKICAgICAsIG1fcGFzc3dvcmRFY2hvRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc3Vw
cHJlc3NJbmNyZW1lbnRhbFJlbmRlcmluZyhmYWxzZSkKICAgICAsIG1fbG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5VGltZXIodGhpcywgJlNldHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlU
aW1lckZpcmVkKQotICAgICwgbV96b29tQW5pbWF0b3JTY2FsZSgxKQotICAgICwgbV96b29tQW5p
bWF0b3JQb3NYKDApCi0gICAgLCBtX3pvb21BbmltYXRvclBvc1koMCkKIHsKICAgICAvLyBBIEZy
YW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBB
dG9taWNTdHJpbmcgCiAgICAgLy8gaGFzaCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaAppbmRleCBiYzIwNjYyMDA1ZDFhZDlmOTA3YTMzZjIyOThlZjc1OWM0OTZh
M2EyLi5lMzU3ZGE5MDAzZjc4NDc1ZTE1ZDliZWQxYzBjY2Y5ZDg1OWNjNTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCkBAIC00MjksMTMgKzQyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sIGZsYWcpIHsgbV9mb3JjZUNv
bXBvc2l0aW5nTW9kZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBmb3JjZUNvbXBvc2l0aW5nTW9k
ZSgpIHsgcmV0dXJuIG1fZm9yY2VDb21wb3NpdGluZ01vZGU7IH0KIAotICAgICAgICB2b2lkIHNl
dFpvb21BbmltYXRvclNjYWxlKGZsb2F0IHNjYWxlKSB7IG1fem9vbUFuaW1hdG9yU2NhbGUgPSBz
Y2FsZTsgfQotICAgICAgICBmbG9hdCB6b29tQW5pbWF0b3JTY2FsZSgpIHsgcmV0dXJuIG1fem9v
bUFuaW1hdG9yU2NhbGU7IH0KLQotICAgICAgICB2b2lkIHNldFpvb21BbmltYXRvclBvc2l0aW9u
KGZsb2F0IHgsIGZsb2F0IHkpIHsgbV96b29tQW5pbWF0b3JQb3NYID0geDsgbV96b29tQW5pbWF0
b3JQb3NZID0geTsgfQotICAgICAgICBmbG9hdCB6b29tQW5pbWF0b3JQb3NYKCkgeyByZXR1cm4g
bV96b29tQW5pbWF0b3JQb3NYOyB9Ci0gICAgICAgIGZsb2F0IHpvb21BbmltYXRvclBvc1koKSB7
IHJldHVybiBtX3pvb21BbmltYXRvclBvc1k7IH0KLQogICAgICAgICB2b2lkIHNldFNob3VsZElu
amVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudChib29sIGZsYWcpIHsgbV9zaG91
bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQgPSBmbGFnOyB9CiAgICAg
ICAgIGJvb2wgc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KCkg
eyByZXR1cm4gbV9zaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQ7
IH0KIApAQCAtNjA3LDEwICs2MDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAg
ICAgICAgc3RhdGljIGJvb2wgZ01vY2tTY3JvbGxiYXJzRW5hYmxlZDsKIAotICAgICAgICBmbG9h
dCBtX3pvb21BbmltYXRvclNjYWxlOwotICAgICAgICBmbG9hdCBtX3pvb21BbmltYXRvclBvc1g7
Ci0gICAgICAgIGZsb2F0IG1fem9vbUFuaW1hdG9yUG9zWTsKLQogI2lmIFVTRShTQUZBUklfVEhF
TUUpCiAgICAgICAgIHN0YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggNWMz
ZDI3MDIxOWQ4NDg5NWEwYTAzOTUxNDk3NDJiYTA4YmRjNmFkOC4uMzI5OGUxOGE1MjU3YzFjN2Rm
ZTZmMTQwOGQ5MDk5YTA3MTZkMmIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcApAQCAtNTIsNiArNTIsOSBAQCBTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5p
bWF0b3IoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogICAgIDogbV9zY3JvbGxhYmxl
QXJlYShzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fY3VycmVudFBvc1goMCkKICAgICAsIG1fY3Vy
cmVudFBvc1koMCkKKyAgICAsIG1fY3VycmVudFpvb21TY2FsZSgxKQorICAgICwgbV9jdXJyZW50
Wm9vbVRyYW5zWCgwKQorICAgICwgbV9jdXJyZW50Wm9vbVRyYW5zWSgwKQogewogfQogCkBAIC0x
MzMsNCArMTM2LDMxIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVBvc2l0aW9uQ2hhbmdl
ZCgpCiAgICAgbV9zY3JvbGxhYmxlQXJlYS0+c2V0U2Nyb2xsT2Zmc2V0RnJvbUFuaW1hdGlvbihJ
bnRQb2ludChtX2N1cnJlbnRQb3NYLCBtX2N1cnJlbnRQb3NZKSk7CiB9CiAKK3ZvaWQgU2Nyb2xs
QW5pbWF0b3I6Om5vdGlmeVpvb21DaGFuZ2VkKFpvb21BbmltYXRpb25TdGF0ZSBzdGF0ZSkKK3sK
KyAgICBtX3Njcm9sbGFibGVBcmVhLT56b29tQW5pbWF0b3JUcmFuc2Zvcm1DaGFuZ2VkKG1fY3Vy
cmVudFpvb21TY2FsZSwgbV9jdXJyZW50Wm9vbVRyYW5zWCwgbV9jdXJyZW50Wm9vbVRyYW5zWSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID09IFpvb21BbmltYXRpb25Db250aW51aW5nID8gU2Nyb2xsYWJsZUFyZWE6Olpvb21BbmltYXRp
b25Db250aW51aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNjcm9sbGFibGVBcmVh
Ojpab29tQW5pbWF0aW9uRmluaXNoaW5nKTsKK30KKworRmxvYXRQb2ludCBTY3JvbGxBbmltYXRv
cjo6em9vbVRyYW5zbGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludChtX2N1
cnJlbnRab29tVHJhbnNYLCBtX2N1cnJlbnRab29tVHJhbnNZKTsKK30KKwordm9pZCBTY3JvbGxB
bmltYXRvcjo6cmVzZXRab29tKCkKK3sKKyAgICBtX2N1cnJlbnRab29tU2NhbGUgPSAxOworICAg
IG1fY3VycmVudFpvb21UcmFuc1ggPSAwOworICAgIG1fY3VycmVudFpvb21UcmFuc1kgPSAwOwor
fQorCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpzZXRab29tUGFyYW1ldGVyc0ZvclRlc3QoZmxvYXQg
c2NhbGUsIGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgbV9jdXJyZW50Wm9vbVNjYWxlID0gc2Nh
bGU7CisgICAgbV9jdXJyZW50Wm9vbVRyYW5zWCA9ICgxIC0gc2NhbGUpICogeDsKKyAgICBtX2N1
cnJlbnRab29tVHJhbnNZID0gKDEgLSBzY2FsZSkgKiB5OworICAgIG5vdGlmeVpvb21DaGFuZ2Vk
KFpvb21BbmltYXRpb25Db250aW51aW5nKTsgLy8gRG9uJ3QgbGV0IHBhZ2UgcmUtc2NhbGUuCit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5oCmluZGV4IDdjZTYxMzg4ODMxMDk2MzRhN2YzMDY3YWI4NDk5ZjIyNDQwOTYzODcu
LmQ4ZTQ5NTQ1NmRhZTkyZTFiNzYwODAwMGE2MTEwZWNkZjQ5ZWMzOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtNDcsNiArNDcsOCBAQCBjbGFzcyBQbGF0
Zm9ybUdlc3R1cmVFdmVudDsKIAogY2xhc3MgU2Nyb2xsQW5pbWF0b3IgewogcHVibGljOgorICAg
IGVudW0gWm9vbUFuaW1hdGlvblN0YXRlIHsgWm9vbUFuaW1hdGlvbkNvbnRpbnVpbmcsIFpvb21B
bmltYXRpb25GaW5pc2hpbmcgfTsKKwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcm9sbEFuaW1h
dG9yPiBjcmVhdGUoU2Nyb2xsYWJsZUFyZWEqKTsKIAogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1h
dG9yKCk7CkBAIC04NywxNCArODksMjQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRB
ZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KIAorICAgIGZsb2F0
IHpvb21TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFpvb21TY2FsZTsgfQorICAgIEZs
b2F0UG9pbnQgem9vbVRyYW5zbGF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0
Wm9vbSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRab29tUGFyYW1ldGVyc0ZvclRlc3QoZmxvYXQs
IGZsb2F0LCBmbG9hdCk7CisKIHByb3RlY3RlZDoKICAgICBTY3JvbGxBbmltYXRvcihTY3JvbGxh
YmxlQXJlYSopOwogCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlab29tQ2hhbmdlZChab29tQW5pbWF0aW9uU3RhdGUpOwog
CiAgICAgU2Nyb2xsYWJsZUFyZWEqIG1fc2Nyb2xsYWJsZUFyZWE7CiAgICAgZmxvYXQgbV9jdXJy
ZW50UG9zWDsgLy8gV2UgYXZvaWQgdXNpbmcgYSBGbG9hdFBvaW50IGluIG9yZGVyIHRvIHJlZHVj
ZQogICAgIGZsb2F0IG1fY3VycmVudFBvc1k7IC8vIHN1YmNsYXNzIGNvZGUgY29tcGxleGl0eS4K
KworICAgIGZsb2F0IG1fY3VycmVudFpvb21TY2FsZTsKKyAgICBmbG9hdCBtX2N1cnJlbnRab29t
VHJhbnNYOworICAgIGZsb2F0IG1fY3VycmVudFpvb21UcmFuc1k7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmNwcAppbmRleCA5YTM5ZGQyNWI5MzA0ZjNjNTRkYzYwZThlMmVhZTdiOWZjNDQxMzY5Li40
YzY1Zjk1NzMyMTcyN2JhMjdkMmVmMjEzZGFiYzY4OGI2MzJjYWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJPd25BcnJheVB0ci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5o
IgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKQEAgLTM2NiwxMCArMzY3LDM2IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6dXBkYXRlVmlzaWJsZUxlbmd0aChMYXlvdXRV
bml0IHZpc2libGVMZW5nCiAgICAgbV92aXNpYmxlTGVuZ3RoID0gdmlzaWJsZUxlbmd0aDsKIH0K
IAorU2Nyb2xsQW5pbWF0b3JOb25lOjpab29tRGF0YTo6Wm9vbURhdGEoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JOb25lKiBwYXJlbnQpCisgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX2lz
QW5pbWF0aW5nKGZhbHNlKQoreworfQorCitib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6Wm9vbURh
dGE6OmFuaW1hdGVab29tKGRvdWJsZSBjdXJyZW50VGltZSkKK3sKKyAgICBtX2xhc3RBbmltYXRp
b25UaW1lID0gY3VycmVudFRpbWU7CisgICAgZG91YmxlIGRlbHRhVGltZSA9IGN1cnJlbnRUaW1l
IC0gbV9zdGFydFRpbWU7CisKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25UaW1lKSB7
CisgICAgICAgIG1fcGFyZW50LT5tX2N1cnJlbnRab29tU2NhbGUgPSBtX2Rlc2lyZWRTY2FsZTsK
KyAgICAgICAgbV9wYXJlbnQtPm1fY3VycmVudFpvb21UcmFuc1ggPSBtX2Rlc2lyZWRUcmFuc1g7
CisgICAgICAgIG1fcGFyZW50LT5tX2N1cnJlbnRab29tVHJhbnNZID0gbV9kZXNpcmVkVHJhbnNZ
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZG91YmxlIGVsYXBzZWRUaW1l
RnJhY3Rpb24gPSBkZWx0YVRpbWUgLyBtX2FuaW1hdGlvblRpbWU7CisgICAgbV9wYXJlbnQtPm1f
Y3VycmVudFpvb21TY2FsZSA9IGVsYXBzZWRUaW1lRnJhY3Rpb24gKiAobV9kZXNpcmVkU2NhbGUg
LSBtX3N0YXJ0U2NhbGUpICsgbV9zdGFydFNjYWxlOworICAgIG1fcGFyZW50LT5tX2N1cnJlbnRa
b29tVHJhbnNYID0gZWxhcHNlZFRpbWVGcmFjdGlvbiAqIG1fZGVzaXJlZFRyYW5zWDsKKyAgICBt
X3BhcmVudC0+bV9jdXJyZW50Wm9vbVRyYW5zWSA9IGVsYXBzZWRUaW1lRnJhY3Rpb24gKiBtX2Rl
c2lyZWRUcmFuc1k7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFNjcm9sbEFuaW1hdG9yTm9uZTo6
U2Nyb2xsQW5pbWF0b3JOb25lKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAgICA6
IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9ob3Jpem9udGFsRGF0YSh0
aGlzLCAmbV9jdXJyZW50UG9zWCwgc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpKQogICAg
ICwgbV92ZXJ0aWNhbERhdGEodGhpcywgJm1fY3VycmVudFBvc1ksIHNjcm9sbGFibGVBcmVhLT52
aXNpYmxlSGVpZ2h0KCkpCisgICAgLCBtX3pvb21EYXRhKHRoaXMpCiAgICAgLCBtX2FuaW1hdGlv
blRpbWVyKHRoaXMsICZTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7
CiB9CkBAIC00MzUsNiArNDYyLDYzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxU
b09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0CiAgICAgbm90
aWZ5UG9zaXRpb25DaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjp6b29t
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCit7CisgICAgQVNTRVJUKHBnZS50eXBl
KCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpOworICAgIC8vIEZJWE1F
OiBtb2RpZnkgdGhpcyBzbyB3ZSBjYW4gc3RhcnQgZXZlbiBpZiB0aGUgdGltZXIgaXMgYWN0aXZl
LgorICAgIGlmICghbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fY3Vy
cmVudFpvb21TY2FsZSA9IDE7CisgICAgICAgIG1fY3VycmVudFpvb21UcmFuc1ggPSAwOworICAg
ICAgICBtX2N1cnJlbnRab29tVHJhbnNZID0gMDsKKworICAgICAgICBkb3VibGUgY3VycmVudFRp
bWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgICAgICBmbG9hdCBz
Y2FsZSA9IHBnZS5kZWx0YVgoKTsKKworICAgICAgICBtX3pvb21EYXRhLm1fc3RhcnRUaW1lID0g
Y3VycmVudFRpbWUgLSBrVGlja1RpbWUgLyAyOworICAgICAgICBtX3pvb21EYXRhLm1fc3RhcnRT
Y2FsZSA9IG1fY3VycmVudFpvb21TY2FsZTsKKyAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRT
Y2FsZSA9IHNjYWxlOworICAgICAgICAvLyBGSVhNRTogRG9jdW1lbnQgdGhlbiBzaW1wbGlmeSB0
aGUgZm9sbG93aW5nIGVxdWF0aW9ucy4KKyAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFu
c1ggPSAoMSAtIHNjYWxlKSAqIHBnZS5nbG9iYWxQb3NpdGlvbigpLngoKTsKKyAgICAgICAgbV96
b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1kgPSAoMSAtIHNjYWxlKSAqIHBnZS5nbG9iYWxQb3NpdGlv
bigpLnkoKTsKKyNpZiBFTkFCTEUoRE9VQkxFX1RBUF9DRU5URVJTKQorICAgICAgICBpZiAocGdl
LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSkgeworICAgICAg
ICAgICAgLy8gWm9vbSB0byBjZW50cmUgb2YgZGlzcGxheS4gUGluY2gtdG8tem9vbSBtYXkgbm90
IHdhbnQgdGhpcyBiZWhhdmlvdXIuCisgICAgICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRy
YW5zWCArPSBtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSAvIDIgLSBwZ2UuZ2xvYmFs
UG9zaXRpb24oKS54KCk7CisgICAgICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWSAr
PSBtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlSGVpZ2h0KCkgLyAyIC0gcGdlLmdsb2JhbFBvc2l0
aW9uKCkueSgpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgbV96b29tRGF0YS5tX2xhc3RB
bmltYXRpb25UaW1lID0gY3VycmVudFRpbWU7CisgICAgICAgIG1fem9vbURhdGEubV9hbmltYXRp
b25UaW1lID0gNTAgKiBrVGlja1RpbWU7CisKKyAgICAgICAgYm9vbCBpc0NvbnRpbnVpbmcgPSBt
X3pvb21EYXRhLmFuaW1hdGVab29tKGN1cnJlbnRUaW1lKTsKKworICAgICAgICBkb3VibGUgZGVs
dGFUb05leHRGcmFtZSA9IGNlaWwoKGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWUpICoga0ZyYW1l
UmF0ZSkgLyBrRnJhbWVSYXRlIC0gKGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWUpOworICAgICAg
ICBkb3VibGUgbmV4dFRpbWVySW50ZXJ2YWwgPSBtYXgoa01pbmltdW1UaW1lckludGVydmFsLCBk
ZWx0YVRvTmV4dEZyYW1lKTsKKyAgICAgICAgaWYgKGlzQ29udGludWluZykgeworICAgICAgICAg
ICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2YWwpOworICAg
ICAgICAgICAgbV96b29tRGF0YS5tX2lzQW5pbWF0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIG5v
dGlmeVpvb21DaGFuZ2VkKFpvb21BbmltYXRpb25Db250aW51aW5nKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBub3RpZnlab29tQ2hhbmdlZChab29tQW5pbWF0aW9uRmluaXNoaW5nKTsK
KyAgICB9Cit9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9sbEFuaW1h
dG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBw
Z2UpCit7CisgICAgVFJBQ0VfRVZFTlQoIlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVy
ZUV2ZW50IiwgdGhpcywgMCk7CisgICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7CisgICAgY2FzZSBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICAgICAgem9vbShwZ2UpOwor
ICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRPRE86IGFkZCBhbnkg
b3RoZXIgZXZlbnQgdHlwZXMgd2Ugc2hvdWxkIGhhbmRsZQorICAgICAgICB7IH0KKyAgICB9Cit9
CisjZW5kaWYKKwogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OndpbGxFbmRMaXZlUmVzaXplKCkK
IHsKICAgICB1cGRhdGVWaXNpYmxlTGVuZ3RocygpOwpAQCAtNDY2LDYgKzU1MCwxNyBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmlt
YXRvck5vbmU+KiB0aW1lcikKICAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwogICAg
IGlmIChtX3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRl
U2Nyb2xsKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpCiAgICAgICAgIGNvbnRpbnVl
QW5pbWF0aW9uID0gdHJ1ZTsKKworICAgIGlmIChtX3pvb21EYXRhLm1faXNBbmltYXRpbmcpIHsK
KyAgICAgICAgaWYgKG1fem9vbURhdGEubV9zdGFydFRpbWUgJiYgbV96b29tRGF0YS5hbmltYXRl
Wm9vbShjdXJyZW50VGltZSArIGRlbHRhVG9OZXh0RnJhbWUpKSB7CisgICAgICAgICAgICBjb250
aW51ZUFuaW1hdGlvbiA9IHRydWU7CisgICAgICAgICAgICBub3RpZnlab29tQ2hhbmdlZChab29t
QW5pbWF0aW9uQ29udGludWluZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBub3Rp
Znlab29tQ2hhbmdlZChab29tQW5pbWF0aW9uRmluaXNoaW5nKTsKKyAgICAgICAgICAgIG1fem9v
bURhdGEubV9pc0FuaW1hdGluZyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYg
KGNvbnRpbnVlQW5pbWF0aW9uKSB7CiAgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9
IG1heChrTWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOwogICAgICAgICB0
aW1lci0+c3RhcnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggMGMwZWIxNmExZmY5NDEyMWU0NzM4
NTlmZmFkOGZhNTZkMTgxOWZmZS4uODkyOTdmNzk1NjFjMzg5OWUzYmYwMTg0MDhiNDY2YTEwYmVm
M2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgK
QEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xs
YmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0
aXBsaWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmKTsKIAorICAgIHZpcnR1YWwgdm9pZCB6b29tKGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworCiAgICAgdmlydHVhbCB2b2lkIHdpbGxFbmRM
aXZlUmVzaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNj
cm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNj
cm9sbGJhciopOwpAQCAtMTI3LDEyICsxMzAsMzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBMYXlv
dXRVbml0IG1fdmlzaWJsZUxlbmd0aDsKICAgICB9OwogCisgICAgLy8gV2hpbGUgem9vbWluZywg
c2NhbGUsIHBvc1ggYW5kIHBvc1kgbmVlZCB0byBzdGF5IHRpZ2h0bHkgY291cGxlZCwgc28gdXNl
IGEgc2VwYXJhdGUKKyAgICAvLyBkYXRhIHN0cnVjdHVyZS4KKyAgICBzdHJ1Y3QgWm9vbURhdGEg
eworICAgICAgICBab29tRGF0YShTY3JvbGxBbmltYXRvck5vbmUqIHBhcmVudCk7CisgICAgICAg
IGJvb2wgYW5pbWF0ZVpvb20oZG91YmxlIGN1cnJlbnRUaW1lKTsKKworICAgICAgICBTY3JvbGxB
bmltYXRvck5vbmUqIG1fcGFyZW50OworICAgICAgICBib29sIG1faXNBbmltYXRpbmc7CisKKyAg
ICAgICAgZG91YmxlIG1fc3RhcnRUaW1lOworCisgICAgICAgIGRvdWJsZSBtX2FuaW1hdGlvblRp
bWU7CisgICAgICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25UaW1lOworCisgICAgICAgIGRvdWJs
ZSBtX3N0YXJ0U2NhbGU7CisgICAgICAgIGRvdWJsZSBtX2Rlc2lyZWRTY2FsZTsKKyAgICAgICAg
ZG91YmxlIG1fZGVzaXJlZFRyYW5zWDsKKyAgICAgICAgZG91YmxlIG1fZGVzaXJlZFRyYW5zWTsK
KyAgICB9OworCisgICAgZnJpZW5kIGNsYXNzIFpvb21EYXRhOworCiAgICAgdm9pZCBhbmltYXRp
b25UaW1lckZpcmVkKFRpbWVyPFNjcm9sbEFuaW1hdG9yTm9uZT4qKTsKICAgICB2b2lkIHN0b3BB
bmltYXRpb25UaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCB1cGRhdGVWaXNpYmxlTGVuZ3Rocygp
OwogCiAgICAgUGVyQXhpc0RhdGEgbV9ob3Jpem9udGFsRGF0YTsKICAgICBQZXJBeGlzRGF0YSBt
X3ZlcnRpY2FsRGF0YTsKKyAgICBab29tRGF0YSBtX3pvb21EYXRhOwogCiAgICAgZG91YmxlIG1f
c3RhcnRUaW1lOwogICAgIFRpbWVyPFNjcm9sbEFuaW1hdG9yTm9uZT4gbV9hbmltYXRpb25UaW1l
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCAwYzYx
NzAzNGQ0NDczZTEwNTM2N2EwYmZiNTVmMzg1OGVmOWU4MDZiLi4zNGRkYzNkOTNjODA3NTgzMDE5
MzJiYjc5MzcwYWRjOTg5NmU0ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCkBAIC0xMjMsNiArMTIzLDExIEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNj
cm9sbFRvWU9mZnNldFdpdGhvdXRBbmltYXRpb24oZmxvYXQgeSkKICAgICBzY3JvbGxUb09mZnNl
dFdpdGhvdXRBbmltYXRpb24oRmxvYXRQb2ludChzY3JvbGxBbmltYXRvcigpLT5jdXJyZW50UG9z
aXRpb24oKS54KCksIHkpKTsKIH0KIAordm9pZCBTY3JvbGxhYmxlQXJlYTo6em9vbUFuaW1hdG9y
VHJhbnNmb3JtQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBab29tQW5pbWF0aW9uU3Rh
dGUpCit7CisgICAgLy8gUmVxdWlyZXMgRnJhbWVWaWV3IHRvIG92ZXJyaWRlIHRoaXMuCit9CisK
IGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIHJldHVybiBzY3JvbGxBbmltYXRvcigpLT5oYW5k
bGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgKaW5kZXggMjQzMmNkMjk0NzEwY2E3NDY3YzNkZmY4ZTRhZWNhNmJmOWM1OTAwYi4u
NmY0MzZhOWFhOTNkNDhjNGI2YjZhZTUwNjIyYzNjZjhlNTI3ZTY2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC00Myw2ICs0Myw4IEBAIGNsYXNzIEdyYXBo
aWNzTGF5ZXI7CiAKIGNsYXNzIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKKyAgICBlbnVtIFpv
b21BbmltYXRpb25TdGF0ZSB7IFpvb21BbmltYXRpb25Db250aW51aW5nLCBab29tQW5pbWF0aW9u
RmluaXNoaW5nIH07CisKICAgICBTY3JvbGxhYmxlQXJlYSgpOwogICAgIHZpcnR1YWwgflNjcm9s
bGFibGVBcmVhKCk7CiAKQEAgLTUyLDYgKzU0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xs
VG9YT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihmbG9hdCB4KTsKICAgICB2b2lkIHNjcm9sbFRvWU9m
ZnNldFdpdGhvdXRBbmltYXRpb24oZmxvYXQgeCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgem9vbUFu
aW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBab29tQW5pbWF0
aW9uU3RhdGUpOworCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpOwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICB2b2lkIGhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGRmOGFjMmVhYmQyMTI0NTFjMGM3NDdlMGU2ZTRmMzczZGM2
YjExYzMuLjY1NWNkZTE1MTNjNDQ1Zjg2OGY0YWRmMTEyZjM3Njg4NzY0Mjg3NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgpAQCAtNDAsOSArNDEsMTUgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYK
ICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlclRyZWVBc1RleHQuaCIKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNs
dWRlICJTY3JvbGxBbmltYXRvci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
QEAgLTIzOCwxNSArMjQ1LDUxIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZShEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgZW5hYmxlZCwgRXhjZXB0CiAgICAgZG9jdW1l
bnQtPnNldHRpbmdzKCktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGVuYWJsZWQpOwogfQogCi12
b2lkIEludGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50ICpkb2N1bWVu
dCwgZG91YmxlIHNjYWxlLCBkb3VibGUgdHgsIGRvdWJsZSB0eSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIEludGVybmFsczo6c2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5zZXR0aW5ncygpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZG9jdW1lbnQtPnNldHRpbmdz
KCktPnNldFpvb21BbmltYXRvclNjYWxlKHN0YXRpY19jYXN0PGZsb2F0PihzY2FsZSkpOwotICAg
IGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRab29tQW5pbWF0b3JQb3NpdGlvbihzdGF0aWNfY2Fz
dDxmbG9hdD4odHgpLCBzdGF0aWNfY2FzdDxmbG9hdD4odHkpKTsKKyNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKKyAgICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0RW5hYmxlU2Nyb2xsQW5p
bWF0b3IoZW5hYmxlZCk7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcm5hbHM6OnNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybShEb2N1bWVudCAqZG9jdW1lbnQsIGZsb2F0IHNjYWxlLCBmbG9hdCB0eCwg
ZmxvYXQgdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQgfHwgIWRv
Y3VtZW50LT52aWV3KCkgfHwgIWRvY3VtZW50LT52aWV3KCktPmZyYW1lKCkpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlLCBJbnRQb2ludCh0eCwgdHkpLCBJbnRQb2lu
dCh0eCwgdHkpLCAwLCBzY2FsZSwgMC5mLCAwLCAwLCAwLCAwKTsKKyAgICBkb2N1bWVudC0+dmll
dygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBnZSk7Cisj
ZW5kaWYKK30KKworZmxvYXQgSW50ZXJuYWxzOjpnZXRQYWdlU2NhbGVGYWN0b3IoRG9jdW1lbnQg
KmRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFk
b2N1bWVudC0+cGFnZSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gZG9jdW1lbnQtPnBhZ2UoKS0+cGFn
ZVNjYWxlRmFjdG9yKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRab29tUGFyYW1ldGVycyhE
b2N1bWVudCogZG9jdW1lbnQsIGZsb2F0IHNjYWxlLCBmbG9hdCB4LCBmbG9hdCB5LCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpIHx8
ICFkb2N1bWVudC0+dmlldygpLT5mcmFtZSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JP
TExJTkcpCisgICAgZG9jdW1lbnQtPnZpZXcoKS0+c2Nyb2xsQW5pbWF0b3IoKS0+c2V0Wm9vbVBh
cmFtZXRlcnNGb3JUZXN0KHNjYWxlLCB4LCB5KTsKKyNlbmRpZgogfQogCiB2b2lkIEludGVybmFs
czo6c2V0UGFzc3dvcmRFY2hvRW5hYmxlZChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgZW5hYmxl
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA1
OGI4OWQ1YTNjYjIwNjY2MWM0OTcxNzBhY2I3MzExNTFkZTk3MWViLi40MTBiNmVkOGQ3ODQwNDg1
ZjM0Y2FjZTg1ZTk1NzE4ZjE5OTZlZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTc2LDcgKzc2LDExIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBtYXJrZXJS
YW5nZUZvck5vZGUoTm9kZSosIHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lk
IHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKERvY3VtZW50KiwgYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1lbnQqLCBk
b3VibGUgc2NhbGUsIGRvdWJsZSB0eCwgZG91YmxlIHR5LCBFeGNlcHRpb25Db2RlJik7CisKKyAg
ICB2b2lkIHNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKERvY3VtZW50KiwgYm9vbCBlbmFibGVkLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1l
bnQqLCBmbG9hdCBzY2FsZSwgZmxvYXQgdHgsIGZsb2F0IHR5LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgZmxvYXQgZ2V0UGFnZVNjYWxlRmFjdG9yKERvY3VtZW50KiwgIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHNldFpvb21QYXJhbWV0ZXJzKERvY3VtZW50KiwgZmxvYXQgc2NhbGUsIGZsb2F0
IHgsIGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2V0UGFzc3dvcmRFY2hv
RW5hYmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgc2V0UGFzc3dvcmRFY2hvRHVyYXRpb25JblNlY29uZHMoRG9jdW1lbnQqLCBkb3VibGUgZHVy
YXRpb25JblNlY29uZHMsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAppbmRleCBhNjgzMDVhY2EwNjA2NmY4NzFlZmFhOTViODkzOGRiNzNkOTUxN2U0Li45
MDk5ODlkYTJhMmEyZDQyYzdmOWZjYTUyMmMwNzg1Mzc1YzE3NzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCkBAIC01MCw3ICs1MCwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAg
ICAgICAgUmFuZ2UgbWFya2VyUmFuZ2VGb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4gdW5zaWduZWQg
bG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCBzZXRGb3Jj
ZUNvbXBvc2l0aW5nTW9kZShpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVk
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGRvdWJsZSBzY2FsZSwgaW4gZG91YmxlIHR4
LCBpbiBkb3VibGUgdHkpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldEVu
YWJsZVNjcm9sbEFuaW1hdG9yKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVuYWJs
ZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldFpvb21BbmltYXRvclRy
YW5zZm9ybShpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gZmxvYXQgc2NhbGUsIGluIGZsb2F0IHR4
LCBpbiBmbG9hdCB0eSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIGZsb2F0IGdldFBh
Z2VTY2FsZUZhY3RvcihpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIHZvaWQgc2V0Wm9vbVBhcmFtZXRlcnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGlu
IGZsb2F0IHNjYWxlLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKIAogICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJsZWQoaW4gRG9jdW1lbnQgZG9j
dW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAg
IHZvaWQgc2V0UGFzc3dvcmRFY2hvRHVyYXRpb25JblNlY29uZHMoaW4gRG9jdW1lbnQgZG9jdW1l
bnQsIGluIGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDkxN2M1NTYzYWQyMTBiMTBmYzRhNzRjYzRlODlj
MzcyMzdhNjBlOGMuLmJkNWNjNTI2NWU4MWE4ZGNhOTk1MDIwYTJiMWQ4MTQyMGVhNWNjNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMDYgIFcu
IEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gWm9vbSBhbmltYXRvciBmcm9udC1lbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDM1CisKKyAgICAgICAgTW9kaWZpY2F0aW9ucyB0byBn
ZXQgem9vbSB0ZXh0dXJlLXNjYWxlIHBhcmFtZXRlcnMgZnJvbSBTY2FsZUFuaW1hdG9yIGRpcmVj
dGx5CisgICAgICAgIGluc3RlYWQgb2YgdmlhIFNldHRpbmdzLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSk6CisK
IDIwMTEtMTAtMDMgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbmRleGVkREI6IFJlbW92ZSBTUUxpdGUtTGV2ZWxEQiBtaWdyYXRpb24gY29kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGRjMjQwYWVjNzM0MTJk
Y2QzZGVjZjZmMTRjZjA5YTUyZjllNjg0OTEuLjA0NGIxMDIzMGM4M2YwMTU0MDhiZjQ2Y2ZiNzRi
NjdmNDY1NjkxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRl
ICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKQEAgLTI1
NjQsOCArMjU2NSw5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxh
eSgpCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewogICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB6b29tTWF0cml4OwotICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0ZShtX3BhZ2Ut
PnNldHRpbmdzKCktPnpvb21BbmltYXRvclBvc1goKSwgbV9wYWdlLT5zZXR0aW5ncygpLT56b29t
QW5pbWF0b3JQb3NZKCkpOwotICAgICAgICB6b29tTWF0cml4LnNjYWxlKG1fcGFnZS0+c2V0dGlu
Z3MoKS0+em9vbUFuaW1hdG9yU2NhbGUoKSk7CisgICAgICAgIEZsb2F0UG9pbnQgdHJhbnMgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnpvb21UcmFuc2xh
dGlvbigpOworICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0ZSh0cmFucy54KCksIHRyYW5zLnko
KSk7CisgICAgICAgIHpvb21NYXRyaXguc2NhbGUobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygp
LT5zY3JvbGxBbmltYXRvcigpLT56b29tU2NhbGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb21NYXRyaXgpOwogICAgIH0KICAgICBpZiAo
bV9sYXllclRyZWVIb3N0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>