<?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>88807</bug_id>
          
          <creation_ts>2012-06-11 14:24:24 -0700</creation_ts>
          <short_desc>Input elements with type=range do not have default touch handlers.</short_desc>
          <delta_ts>2012-07-27 01:14:33 -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>WebCore Misc.</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>
          <dependson>89304</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kevin Ellis">kevers</reporter>
          <assigned_to name="Kevin Ellis">kevers</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>benm</cc>
    
    <cc>gmak</cc>
    
    <cc>gustavo</cc>
    
    <cc>jonlee</cc>
    
    <cc>mifenton</cc>
    
    <cc>philn</cc>
    
    <cc>rbyers</cc>
    
    <cc>rjkroege</cc>
    
    <cc>steveblock</cc>
    
    <cc>tdanderson</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>646262</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-11 14:24:24 -0700</bug_when>
    <thetext>Input elements with type=range do not have default touch handlers.  Cannot manipulate a slider on a touch screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646273</commentid>
    <comment_count>1</comment_count>
      <attachid>146912</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-11 14:32:57 -0700</bug_when>
    <thetext>Created attachment 146912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646286</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 14:39:39 -0700</bug_when>
    <thetext>Attachment 146912 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646297</commentid>
    <comment_count>3</comment_count>
      <attachid>146912</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-11 14:58:39 -0700</bug_when>
    <thetext>Comment on attachment 146912
Patch

Attachment 146912 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12943352</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646323</commentid>
    <comment_count>4</comment_count>
      <attachid>146912</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-11 15:24:40 -0700</bug_when>
    <thetext>Comment on attachment 146912
Patch

Attachment 146912 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12935821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647107</commentid>
    <comment_count>5</comment_count>
      <attachid>146912</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-12 11:22:29 -0700</bug_when>
    <thetext>Comment on attachment 146912
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        No new tests. (OOPS!)
&gt; 
&gt; You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]

You need to update this or it will get bounced from the commit queue.

Also, a longer more detailed ChangeLog is necessary.

&gt; Source/WebCore/dom/Touch.cpp:76
&gt; +{

you will need to test your slider inside a transform. Like rotated.

&gt; Source/WebCore/dom/Touch.h:69
&gt; +    RefPtr&lt;Frame&gt; m_frame;

this seems wrong to me. How do other events deal with this?

&gt; Source/WebCore/dom/TouchEvent.h:72
&gt; +    virtual bool isTouchEvent() const OVERRIDE;

afaik WebCore doesn&apos;t use the OVERRIDE macro

&gt; Source/WebCore/html/RangeInputType.cpp:37
&gt; +#include &quot;Frame.h&quot;

i expect that you should avoid this.

&gt; Source/WebCore/html/RangeInputType.cpp:155
&gt; +        event-&gt;preventDefault();

you are the default handler? do you need to call this?

&gt; Source/WebCore/html/RangeInputType.h:54
&gt; +    virtual void handleTouchEvent(TouchEvent*) OVERRIDE;

ok... maybe I was wrong about the OVERRIDE. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648053</commentid>
    <comment_count>6</comment_count>
      <attachid>147321</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-13 08:27:08 -0700</bug_when>
    <thetext>Created attachment 147321
Patch

(In reply to comment #5)
&gt; (From update of attachment 146912 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146912&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:8
&gt; &gt;&gt; +        No new tests. (OOPS!)
&gt; &gt; 
&gt; &gt; You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
&gt; 
&gt; You need to update this or it will get bounced from the commit queue.
&gt; 
&gt; Also, a longer more detailed ChangeLog is necessary.
&gt; 
Added touch slider test, and more detail in the Change Log.

&gt; &gt; Source/WebCore/dom/Touch.cpp:76
&gt; &gt; +{
&gt; 
&gt; you will need to test your slider inside a transform. Like rotated.
&gt; 
&gt; &gt; Source/WebCore/dom/Touch.h:69
&gt; &gt; +    RefPtr&lt;Frame&gt; m_frame;
&gt; 
&gt; this seems wrong to me. How do other events deal with this?
&gt; 
Removed keeping a reference to the frame.  The thumb scroll element relies on absolute page position and not adjusted page position.  The logic for correcting the page scale and zoom is consistent with MouseRelatedEvent.

&gt; &gt; Source/WebCore/dom/TouchEvent.h:72
&gt; &gt; +    virtual bool isTouchEvent() const OVERRIDE;
&gt; 
&gt; afaik WebCore doesn&apos;t use the OVERRIDE macro
&gt; 
&gt; &gt; Source/WebCore/html/RangeInputType.cpp:37
&gt; &gt; +#include &quot;Frame.h&quot;
&gt; 
&gt; i expect that you should avoid this.
&gt; 
&gt; &gt; Source/WebCore/html/RangeInputType.cpp:155
&gt; &gt; +        event-&gt;preventDefault();
&gt; 
&gt; you are the default handler? do you need to call this?
&gt; 
Unless preventDefault is called, the gesture recognizer can still scroll the page while trying to drag the slider.

&gt; &gt; Source/WebCore/html/RangeInputType.h:54
&gt; &gt; +    virtual void handleTouchEvent(TouchEvent*) OVERRIDE;
&gt; 
&gt; ok... maybe I was wrong about the OVERRIDE. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648085</commentid>
    <comment_count>7</comment_count>
      <attachid>147321</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-13 08:57:59 -0700</bug_when>
    <thetext>Comment on attachment 147321
Patch

Attachment 147321 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12945896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648091</commentid>
    <comment_count>8</comment_count>
      <attachid>147321</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-13 09:04:46 -0700</bug_when>
    <thetext>Comment on attachment 147321
Patch

Attachment 147321 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12948818</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648268</commentid>
    <comment_count>9</comment_count>
      <attachid>147365</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-13 11:13:28 -0700</bug_when>
    <thetext>Created attachment 147365
Patch

Fix to conditionally add touch support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648786</commentid>
    <comment_count>10</comment_count>
      <attachid>147365</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-13 21:42:42 -0700</bug_when>
    <thetext>Comment on attachment 147365
Patch

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

&gt; Source/WebCore/html/RangeInputType.cpp:156
&gt; +    if (event-&gt;type() == eventNames().touchendEvent)
&gt; +        return;
&gt; +
&gt; +    if (element()-&gt;disabled() || element()-&gt;readOnly())
&gt; +        return;
&gt; +
&gt; +    TouchList* touches = event-&gt;targetTouches();
&gt; +    if (touches-&gt;length() == 1) {
&gt; +        Touch* touch = touches-&gt;item(0);
&gt; +        SliderThumbElement* thumb = sliderThumbElementOf(element());
&gt; +        thumb-&gt;setPositionFromPoint(touch-&gt;absoluteLocation());

So, we don&apos;t start dragging the thumb unlike mousedown.  Is it intentional?  Is ti compatible with synthetic mouse events?

&gt; Source/WebCore/html/RangeInputType.cpp:158
&gt; +        event-&gt;preventDefault();

preventDefault is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649453</commentid>
    <comment_count>11</comment_count>
      <attachid>147365</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-14 13:52:00 -0700</bug_when>
    <thetext>Comment on attachment 147365
Patch

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

&gt;&gt; Source/WebCore/html/RangeInputType.cpp:156
&gt;&gt; +        thumb-&gt;setPositionFromPoint(touch-&gt;absoluteLocation());
&gt; 
&gt; So, we don&apos;t start dragging the thumb unlike mousedown.  Is it intentional?  Is ti compatible with synthetic mouse events?

Yes, not triggering drag on the thumb element is deliberate.  For mouse handling, there is extra work to be done to start and stop mouse capture on the thumb element.  For touch events, subsequent moves are delivered to the same target as the touch start, so no additional capture control is needed.  Handling touch moves inside of the thumb element would still require forwarding the event from the input element.  Implementing a simple snap-to directly from the range input type seemed like a reasonable solution.

&gt;&gt; Source/WebCore/html/RangeInputType.cpp:158
&gt;&gt; +        event-&gt;preventDefault();
&gt; 
&gt; preventDefault is not needed.

Without preventDefault, the gesture recognizer in Chrome can trigger scrolling.  Tested with and without preventDefault using a slider inside of a div with width=&quot;200%&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650629</commentid>
    <comment_count>12</comment_count>
      <attachid>147365</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-15 16:46:54 -0700</bug_when>
    <thetext>Comment on attachment 147365
Patch

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

&gt;&gt;&gt; Source/WebCore/html/RangeInputType.cpp:158
&gt;&gt;&gt; +        event-&gt;preventDefault();
&gt;&gt; 
&gt;&gt; preventDefault is not needed.
&gt; 
&gt; Without preventDefault, the gesture recognizer in Chrome can trigger scrolling.  Tested with and without preventDefault using a slider inside of a div with width=&quot;200%&quot;.

This might be so but I concur with tkent@ that it is probably not right.

I believe that this patch is the first time that we introduce a default action on touch events that do not involve punting off to the gesture recognizer. Since there are *no* other touch default actions, setDefaultHandled probably does not have the right consequence in EventHandler::handleTouchEvent

Note how mouse events compute the boolean that is returned to the embedder: http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/dom/MouseEvent.cpp&amp;exact_package=chromium&amp;q=MouseEventDispatchMediator&amp;type=cs&amp;l=208

where swallowEvent = event()-&gt;defaultHandled() || event()-&gt;defaultPrevented();

I think that http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/page/EventHandler.cpp&amp;exact_package=chromium&amp;q=handleTouchEvent&amp;type=cs&amp;l=3617

needs to be altered to:

defaultPrevented = defaultPrevented || touchEvent-&gt;defaultPrevented() || touchEvent-&gt;defaultHandled();

btw: this means that defaultPrevented should be renamed to swallowEvent in EventHandler::handleTouchEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651657</commentid>
    <comment_count>13</comment_count>
      <attachid>148160</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-18 13:26:33 -0700</bug_when>
    <thetext>Created attachment 148160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651662</commentid>
    <comment_count>14</comment_count>
      <attachid>147365</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-18 13:30:10 -0700</bug_when>
    <thetext>Comment on attachment 147365
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/html/RangeInputType.cpp:158
&gt;&gt;&gt;&gt; +        event-&gt;preventDefault();
&gt;&gt;&gt; 
&gt;&gt;&gt; preventDefault is not needed.
&gt;&gt; 
&gt;&gt; Without preventDefault, the gesture recognizer in Chrome can trigger scrolling.  Tested with and without preventDefault using a slider inside of a div with width=&quot;200%&quot;.
&gt; 
&gt; This might be so but I concur with tkent@ that it is probably not right.
&gt; 
&gt; I believe that this patch is the first time that we introduce a default action on touch events that do not involve punting off to the gesture recognizer. Since there are *no* other touch default actions, setDefaultHandled probably does not have the right consequence in EventHandler::handleTouchEvent
&gt; 
&gt; Note how mouse events compute the boolean that is returned to the embedder: http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/dom/MouseEvent.cpp&amp;exact_package=chromium&amp;q=MouseEventDispatchMediator&amp;type=cs&amp;l=208
&gt; 
&gt; where swallowEvent = event()-&gt;defaultHandled() || event()-&gt;defaultPrevented();
&gt; 
&gt; I think that http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/page/EventHandler.cpp&amp;exact_package=chromium&amp;q=handleTouchEvent&amp;type=cs&amp;l=3617
&gt; 
&gt; needs to be altered to:
&gt; 
&gt; defaultPrevented = defaultPrevented || touchEvent-&gt;defaultPrevented() || touchEvent-&gt;defaultHandled();
&gt; 
&gt; btw: this means that defaultPrevented should be renamed to swallowEvent in EventHandler::handleTouchEvent.

Confirmed that preventDefault is no longer needed with Rob&apos;s patch.  Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651712</commentid>
    <comment_count>15</comment_count>
      <attachid>148160</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-18 14:11:09 -0700</bug_when>
    <thetext>Comment on attachment 148160
Patch

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

&gt; LayoutTests/fast/events/touch/script-tests/touch-slider.js:6
&gt; +slider.style.height = &quot;30px&quot;;

please add a test where the slider is CSS transformed (scale, rotation) to be sure that things work correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651713</commentid>
    <comment_count>16</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-18 14:11:54 -0700</bug_when>
    <thetext>fwiw: this looks reasonable to me. Just add an additional test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651930</commentid>
    <comment_count>17</comment_count>
      <attachid>148160</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-18 17:52:53 -0700</bug_when>
    <thetext>Comment on attachment 148160
Patch

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

Changes in WebCore/html/ looks ok.
I&apos;m not sure WebCore/dom/ changes.

&gt; LayoutTests/fast/events/touch/script-tests/touch-slider.js:63
&gt; +    eventSender.addTouchPoint(x + w/2, y);
&gt; +    eventSender.touchStart();
&gt; +
&gt; +    eventSender.updateTouchPoint(0, x, y);
&gt; +    eventSender.touchMove();
&gt; +
&gt; +    eventSender.updateTouchPoint(0, x + w, y);
&gt; +    eventSender.touchMove();
&gt; +
&gt; +    eventSender.updateTouchPoint(0, x + w/2, y);

Let&apos;s move y position too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652640</commentid>
    <comment_count>18</comment_count>
      <attachid>148371</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-19 11:33:54 -0700</bug_when>
    <thetext>Created attachment 148371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652642</commentid>
    <comment_count>19</comment_count>
      <attachid>148160</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-19 11:35:58 -0700</bug_when>
    <thetext>Comment on attachment 148160
Patch

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

&gt;&gt; LayoutTests/fast/events/touch/script-tests/touch-slider.js:6
&gt;&gt; +slider.style.height = &quot;30px&quot;;
&gt; 
&gt; please add a test where the slider is CSS transformed (scale, rotation) to be sure that things work correctly.

Added rotated slider and slider with &quot;-webkit-appearance: slider-vertical&quot;.

&gt;&gt; LayoutTests/fast/events/touch/script-tests/touch-slider.js:63
&gt;&gt; +    eventSender.updateTouchPoint(0, x + w/2, y);
&gt; 
&gt; Let&apos;s move y position too.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656543</commentid>
    <comment_count>20</comment_count>
      <attachid>148371</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2012-06-25 07:21:56 -0700</bug_when>
    <thetext>Comment on attachment 148371
Patch

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

&gt; Source/WebCore/html/RangeInputType.cpp:146
&gt; +    if (event-&gt;type() == eventNames().touchendEvent)

should we also set default handled in this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656549</commentid>
    <comment_count>21</comment_count>
      <attachid>148371</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-25 07:33:08 -0700</bug_when>
    <thetext>Comment on attachment 148371
Patch

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

&gt;&gt; Source/WebCore/html/RangeInputType.cpp:146
&gt;&gt; +    if (event-&gt;type() == eventNames().touchendEvent)
&gt; 
&gt; should we also set default handled in this case?

good catch. This makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657630</commentid>
    <comment_count>22</comment_count>
      <attachid>149538</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-26 08:47:57 -0700</bug_when>
    <thetext>Created attachment 149538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657631</commentid>
    <comment_count>23</comment_count>
      <attachid>148371</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-26 08:49:03 -0700</bug_when>
    <thetext>Comment on attachment 148371
Patch

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

&gt;&gt;&gt; Source/WebCore/html/RangeInputType.cpp:146
&gt;&gt;&gt; +    if (event-&gt;type() == eventNames().touchendEvent)
&gt;&gt; 
&gt;&gt; should we also set default handled in this case?
&gt; 
&gt; good catch. This makes sense.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657729</commentid>
    <comment_count>24</comment_count>
      <attachid>149538</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-26 10:58:00 -0700</bug_when>
    <thetext>Comment on attachment 149538
Patch

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

&gt; Source/WebCore/dom/Touch.cpp:74
&gt; +    float scaleFactor = frame-&gt;pageZoomFactor() * frame-&gt;frameScaleFactor();
&gt; +    float x = pageX * scaleFactor;
&gt; +    float y = pageY * scaleFactor;

I&apos;m not sure whether this is the right idiom.  Should we be using FrameView::mapFromCSSToLayoutUnits instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657731</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-26 10:58:40 -0700</bug_when>
    <thetext>@tkent: Are you interested in reviewing this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657894</commentid>
    <comment_count>26</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-06-26 13:03:58 -0700</bug_when>
    <thetext>some questions: does chromium dor android do any touch-to-mouse conversion?

In the way we did for the BlackBerry port, in the case of a input slide, the touch move event is not handled, but the mouse move event converted from the touch move is

It was basically one-line of code (to be upstreamed):

270 void SliderThumbElement::defaultEventHandler(Event* event)
271 {
272     if (!event-&gt;isMouseEvent()) {
273         HTMLDivElement::defaultEventHandler(event);
274         return;
275     }
...
292     // mouse events.
293     if (eventType == eventNames().mousedownEvent &amp;&amp; isLeftButton) {
294         startDragging();
295         return;
296     } else if (eventType == eventNames().mouseupEvent &amp;&amp; isLeftButton) {
297         stopDragging();
298         return;
299     } else if (eventType == eventNames().mousemoveEvent) {
300         if (m_inDragMode)
301             setPositionFromPoint(mouseEvent-&gt;absoluteLocation());
302 #if PLATFORM(BLACKBERRY)
303         // On Playbook ENABLE(DRAG_SUPPORT) is false, so consume event here
304         event-&gt;setDefaultHandled();
305 #endif
306         return;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657912</commentid>
    <comment_count>27</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-26 13:18:55 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; some questions: does chromium dor android do any touch-to-mouse conversion?
&gt; 
&gt; In the way we did for the BlackBerry port, in the case of a input slide, the touch move event is not handled, but the mouse move event converted from the touch move is
&gt; 
&gt; It was basically one-line of code (to be upstreamed):
&gt; 
&gt; 270 void SliderThumbElement::defaultEventHandler(Event* event)
&gt; 271 {
&gt; 272     if (!event-&gt;isMouseEvent()) {
&gt; 273         HTMLDivElement::defaultEventHandler(event);
&gt; 274         return;
&gt; 275     }
&gt; ...
&gt; 292     // mouse events.
&gt; 293     if (eventType == eventNames().mousedownEvent &amp;&amp; isLeftButton) {
&gt; 294         startDragging();
&gt; 295         return;
&gt; 296     } else if (eventType == eventNames().mouseupEvent &amp;&amp; isLeftButton) {
&gt; 297         stopDragging();
&gt; 298         return;
&gt; 299     } else if (eventType == eventNames().mousemoveEvent) {
&gt; 300         if (m_inDragMode)
&gt; 301             setPositionFromPoint(mouseEvent-&gt;absoluteLocation());
&gt; 302 #if PLATFORM(BLACKBERRY)
&gt; 303         // On Playbook ENABLE(DRAG_SUPPORT) is false, so consume event here
&gt; 304         event-&gt;setDefaultHandled();
&gt; 305 #endif
&gt; 306         return;

In Chromium, only tap and scroll gestures are converted to synthetic mouse events.  For the input slider, no synthetic mouse events are generated for a drag operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657921</commentid>
    <comment_count>28</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-06-26 13:29:41 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; some questions: does chromium dor android do any touch-to-mouse conversion?
&gt; &gt; 
&gt; &gt; In the way we did for the BlackBerry port, in the case of a input slide, &gt; 
&gt; In Chromium, only tap and scroll gestures are converted to synthetic mouse events.  For the input slider, no synthetic mouse events are generated for a drag operation.

Ok, for BlackBerry that could also need some other bits to be plumbed in to make use of it

4027 bool WebPage::touchEvent(const Platform::TouchEvent&amp; event)
4028 {
...
4086     bool handled = false;
4087 
4088     if (d-&gt;m_needTouchEvents &amp;&amp; !event.hasGesture(Platform::Gesture::Injected))
4089         handled = d-&gt;m_mainFrame-&gt;eventHandler()-&gt;handleTouchEvent(PlatformTouchEvent(&amp;tEvent))

the first condition in the IF allows us to skip submitting Touch events to WebCore if there is not touch listeners attached to the page.

See also Document.cpp

4040 void Document::addListenerTypeIfNeeded(const AtomicString&amp; eventType)
4041 {
...
4068 #if ENABLE(TOUCH_EVENTS)
4069     else if (eventType == eventNames().touchstartEvent
4070              || eventType == eventNames().touchmoveEvent
4071              || eventType == eventNames().touchendEvent
4072              || eventType == eventNames().touchcancelEvent) {
4073         addListenerType(TOUCH_LISTENER);
4074         if (Page* page = this-&gt;page())
4075             page-&gt;chrome()-&gt;client()-&gt;needTouchEvents(true);
4076     }
4077 #endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660435</commentid>
    <comment_count>29</comment_count>
      <attachid>150168</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-29 06:52:01 -0700</bug_when>
    <thetext>Created attachment 150168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660442</commentid>
    <comment_count>30</comment_count>
      <attachid>149538</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-29 07:05:51 -0700</bug_when>
    <thetext>Comment on attachment 149538
Patch

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

&gt;&gt; Source/WebCore/dom/Touch.cpp:74
&gt;&gt; +    float y = pageY * scaleFactor;
&gt; 
&gt; I&apos;m not sure whether this is the right idiom.  Should we be using FrameView::mapFromCSSToLayoutUnits instead?

Consistent with approach used in MouseReleatedEvent.cpp and EventHandler.cpp for handling scaling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660444</commentid>
    <comment_count>31</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-29 07:08:03 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; some questions: does chromium dor android do any touch-to-mouse conversion?
&gt; &gt; &gt; 
&gt; &gt; &gt; In the way we did for the BlackBerry port, in the case of a input slide, &gt; 
&gt; &gt; In Chromium, only tap and scroll gestures are converted to synthetic mouse events.  For the input slider, no synthetic mouse events are generated for a drag operation.
&gt; 
&gt; Ok, for BlackBerry that could also need some other bits to be plumbed in to make use of it
&gt; 
&gt; 4027 bool WebPage::touchEvent(const Platform::TouchEvent&amp; event)
&gt; 4028 {
&gt; ...
&gt; 4086     bool handled = false;
&gt; 4087 
&gt; 4088     if (d-&gt;m_needTouchEvents &amp;&amp; !event.hasGesture(Platform::Gesture::Injected))
&gt; 4089         handled = d-&gt;m_mainFrame-&gt;eventHandler()-&gt;handleTouchEvent(PlatformTouchEvent(&amp;tEvent))
&gt; 
&gt; the first condition in the IF allows us to skip submitting Touch events to WebCore if there is not touch listeners attached to the page.
&gt; 
&gt; See also Document.cpp
&gt; 
&gt; 4040 void Document::addListenerTypeIfNeeded(const AtomicString&amp; eventType)
&gt; 4041 {
&gt; ...
&gt; 4068 #if ENABLE(TOUCH_EVENTS)
&gt; 4069     else if (eventType == eventNames().touchstartEvent
&gt; 4070              || eventType == eventNames().touchmoveEvent
&gt; 4071              || eventType == eventNames().touchendEvent
&gt; 4072              || eventType == eventNames().touchcancelEvent) {
&gt; 4073         addListenerType(TOUCH_LISTENER);
&gt; 4074         if (Page* page = this-&gt;page())
&gt; 4075             page-&gt;chrome()-&gt;client()-&gt;needTouchEvents(true);
&gt; 4076     }
&gt; 4077 #endif

Added mechanism to add/remove the touch handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660448</commentid>
    <comment_count>32</comment_count>
      <attachid>150168</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-29 07:14:59 -0700</bug_when>
    <thetext>Comment on attachment 150168
Patch

Attachment 150168 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13117314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660452</commentid>
    <comment_count>33</comment_count>
      <attachid>150172</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-06-29 07:27:54 -0700</bug_when>
    <thetext>Created attachment 150172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664872</commentid>
    <comment_count>34</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-07-09 08:17:05 -0700</bug_when>
    <thetext>I think the patch looks fine, but I would like a way to opt-out it (maybe a USE macro is an overkill?), so BlackBerry port have time to adjust to the implications of this change.

I.e., we will certainly make use of it, and it will save us lots of special cases we handle, but as is it will break other cases.

Does it sound reasonable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664906</commentid>
    <comment_count>35</comment_count>
      <attachid>150172</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-07-09 09:15:22 -0700</bug_when>
    <thetext>Comment on attachment 150172
Patch

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

&gt; Source/WebCore/html/InputType.cpp:887
&gt; +bool InputType::hasTouchEventHandler()
&gt; +{
&gt; +    return false;
&gt; +}
&gt; +#endif

const

&gt; Source/WebCore/html/RangeInputType.h:56
&gt; +    virtual bool hasTouchEventHandler() OVERRIDE;

const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664907</commentid>
    <comment_count>36</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-07-09 09:16:32 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; I think the patch looks fine, but I would like a way to opt-out it (maybe a USE macro is an overkill?), so BlackBerry port have time to adjust to the implications of this change.
&gt; 
&gt; I.e., we will certainly make use of it, and it will save us lots of special cases we handle, but as is it will break other cases.
&gt; 
&gt; Does it sound reasonable?

At this point, my main concern is about media (video and audio) timeline elements working with it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665161</commentid>
    <comment_count>37</comment_count>
      <attachid>151317</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-07-09 14:15:28 -0700</bug_when>
    <thetext>Created attachment 151317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665165</commentid>
    <comment_count>38</comment_count>
      <attachid>150172</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-07-09 14:18:23 -0700</bug_when>
    <thetext>Comment on attachment 150172
Patch

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

&gt;&gt; Source/WebCore/html/InputType.cpp:887
&gt;&gt; +#endif
&gt; 
&gt; const

Done.

&gt;&gt; Source/WebCore/html/RangeInputType.h:56
&gt;&gt; +    virtual bool hasTouchEventHandler() OVERRIDE;
&gt; 
&gt; const

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665191</commentid>
    <comment_count>39</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-07-09 14:40:35 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #34)
&gt; &gt; I think the patch looks fine, but I would like a way to opt-out it (maybe a USE macro is an overkill?), so BlackBerry port have time to adjust to the implications of this change.
&gt; &gt; 
&gt; &gt; I.e., we will certainly make use of it, and it will save us lots of special cases we handle, but as is it will break other cases.
&gt; &gt; 
&gt; &gt; Does it sound reasonable?
&gt; 
&gt; At this point, my main concern is about media (video and audio) timeline elements working with it...

Added ENABLE(TOUCH_SLIDER) for conditional support.  Currently enabled for Chromium only.  

Tested on video and audio tags, and fix for &lt;input type=&quot;range&quot;&gt; works for the other tags as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665729</commentid>
    <comment_count>40</comment_count>
      <attachid>151317</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-07-10 06:55:49 -0700</bug_when>
    <thetext>Comment on attachment 151317
Patch

thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665829</commentid>
    <comment_count>41</comment_count>
      <attachid>151473</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-07-10 09:59:27 -0700</bug_when>
    <thetext>Created attachment 151473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665832</commentid>
    <comment_count>42</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-07-10 10:01:00 -0700</bug_when>
    <thetext>Added conditional expectations.  Tests are expected to fail unless ENABLE_TOUCH_SLIDER is set, which is currently only enabled for Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666048</commentid>
    <comment_count>43</comment_count>
      <attachid>151473</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-10 14:08:11 -0700</bug_when>
    <thetext>Comment on attachment 151473
Patch

Rejecting attachment 151473 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
t/git/webkit-commit-queue/Source/WebKit/chromium/v8 --revision 11988 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
47&gt;At revision 11988.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/13198090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666052</commentid>
    <comment_count>44</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-10 14:11:04 -0700</bug_when>
    <thetext>    The following ChangeLog files contain OOPS:

        trunk/LayoutTests/ChangeLog
        trunk/Source/WebCore/ChangeLog
        trunk/Source/WebKit/chromium/ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666089</commentid>
    <comment_count>45</comment_count>
      <attachid>151533</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-07-10 15:01:31 -0700</bug_when>
    <thetext>Created attachment 151533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666250</commentid>
    <comment_count>46</comment_count>
      <attachid>151533</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-10 18:48:18 -0700</bug_when>
    <thetext>Comment on attachment 151533
Patch

Clearing flags on attachment: 151533

Committed r122286: &lt;http://trac.webkit.org/changeset/122286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666251</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-10 18:48:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680264</commentid>
    <comment_count>48</comment_count>
      <attachid>148371</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:13:36 -0700</bug_when>
    <thetext>Comment on attachment 148371
Patch

Cleared review? from obsolete attachment 148371 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680267</commentid>
    <comment_count>49</comment_count>
      <attachid>149538</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:13:54 -0700</bug_when>
    <thetext>Comment on attachment 149538
Patch

Cleared review? from obsolete attachment 149538 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680269</commentid>
    <comment_count>50</comment_count>
      <attachid>150172</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:14:33 -0700</bug_when>
    <thetext>Comment on attachment 150172
Patch

Cleared review? from obsolete attachment 150172 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146912</attachid>
            <date>2012-06-11 14:32:57 -0700</date>
            <delta_ts>2012-06-13 08:26:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120611173256.patch</filename>
            <type>text/plain</type>
            <size>11342</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNjMmEzNmViN2IxMjgx
NGIxMzI5NzViYTNjYzM5NTBiY2M1MzU0OC4uZTRkMjRkMjUyMzFhZTRiNGEyODA2Nzg1MjVkNDQ5
ODYzYTljMDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA2LTExICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
KE9PUFMhKQorCisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50Ojppc1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2
ZW50Lmg6CisgICAgICAgIChFdmVudCk6CisgICAgICAgICogZG9tL1RvdWNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRvdWNoOjpUb3VjaCk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6YWJz
b2x1dGVMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vVG91Y2gu
aDoKKyAgICAgICAgKFRvdWNoKToKKyAgICAgICAgKiBkb20vVG91Y2hFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50Ojppc1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaDoKKyAgICAgICAgKFRvdWNoRXZlbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2xpY2tIYW5kbGluZ1N0YXRlKToKKyAgICAgICAg
KElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgIChSYW5n
ZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6
CisgICAgICAgIChTbGlkZXJUaHVtYkVsZW1lbnQpOgorCiAyMDEyLTA2LTExICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXaW5dIEZpeCBVU3Ry
aW5nIHJlbGF0ZWQgYnVpbGQgcHJvYmxlbSBpbiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
aW5zdGFuY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCBjOWE0NWRjNDllZDg5M2M3ZDdmNWQ0
MjBkNjA3OWIyNjQ4MGVjY2NiLi43NjEzMTNjNTk5OWZjNTZhNjkyNDgyYTk1NmM4YjA0NDhiM2Nk
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTEyNiw2ICsxMjYsMTEgQEAgYm9vbCBFdmVudDo6
aXNLZXlib2FyZEV2ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZl
bnQ6OmlzVG91Y2hFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29s
IEV2ZW50Ojppc0RyYWdFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaAppbmRleCAzNmVkOWE2ZDk2N2RlZmQxZTgzZWUyNTllOWM4YjcyZTdkMDZlNTUzLi5kMjk4
ZDkwYTc3YTE2NTBkMmE4YjU2MmI1M2U1MzhmZGUzNTU0MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAt
MTIwLDYgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29s
IGlzVUlFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUV2ZW50KCkg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRXZlbnQoKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0OwogCiAgICAgICAgIC8vIERy
YWcgZXZlbnRzIGFyZSBhIHN1YnNldCBvZiBtb3VzZSBldmVudHMuCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0RyYWdFdmVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RvdWNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5jcHAKaW5kZXggY2Y3MjFkZjkw
NjBmZmU0ZDgyNzhmMGU3OTQwNjQ5ZmY4YjEwZTVhZi4uY2ZiZjg4NTg1YTlhYTk1NjA1OTIzMzM0
ZTI4M2VjNjJiZjJkZmM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJUb3VjaC5oIgogCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKIApAQCAtNTUsNyArNTYsOCBAQCBzdGF0
aWMgaW50IGNvbnRlbnRzWShGcmFtZSogZnJhbWUpCiB9CiAKIFRvdWNoOjpUb3VjaChGcmFtZSog
ZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCByYWRpdXNYLCBpbnQg
cmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpCi0gICAgOiBtX3Rhcmdl
dCh0YXJnZXQpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV90YXJnZXQodGFyZ2V0KQog
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2NsaWVudFgocGFnZVggLSBj
b250ZW50c1goZnJhbWUpKQogICAgICwgbV9jbGllbnRZKHBhZ2VZIC0gY29udGVudHNZKGZyYW1l
KSkKQEAgLTcwLDYgKzcyLDE0IEBAIFRvdWNoOjpUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFy
Z2V0KiB0YXJnZXQsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGludCBzY3JlZW5YCiB7CiB9CiAKK0xh
eW91dFBvaW50IFRvdWNoOjphYnNvbHV0ZUxvY2F0aW9uKCkKK3sKKyAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgKiBtX2ZyYW1lLT5mcmFtZVNjYWxlRmFj
dG9yKCk7CisgICAgZmxvYXQgeCA9IHBhZ2VYKCkgKiBzY2FsZUZhY3RvcjsKKyAgICBmbG9hdCB5
ID0gcGFnZVkoKSAqIHNjYWxlRmFjdG9yOworICAgIHJldHVybiByb3VuZGVkTGF5b3V0UG9pbnQo
RmxvYXRQb2ludCh4LCB5KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaC5oCmluZGV4IGY0YzllODA2MWQ4YzczYWEwMjAzM2FjNDRjNDkwNGZkMjQwMzA5
ZjYuLjVlMWIyYzkxZDE1ZTRhMjJkOTc2OTNkMmFiYThlMTA2NjZlNmQzM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3Vj
aC5oCkBAIC0yOSwxNCArMjksMTQgQEAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkxheW91
dFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBGcmFtZTsKLQogY2xhc3MgVG91Y2ggOiBwdWJsaWMgUmVmQ291bnRlZDxUb3Vj
aD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRvdWNoPiBjcmVhdGUoRnJhbWUq
IGZyYW1lLCBFdmVudFRhcmdldCogdGFyZ2V0LApAQCAtNTksMTIgKzU5LDE0IEBAIHB1YmxpYzoK
ICAgICBpbnQgd2Via2l0UmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWTsgfQogICAg
IGZsb2F0IHdlYmtpdFJvdGF0aW9uQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX3JvdGF0aW9uQW5n
bGU7IH0KICAgICBmbG9hdCB3ZWJraXRGb3JjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2U7IH0K
KyAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZUxvY2F0aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgVG91
Y2goRnJhbWUqIGZyYW1lLCBFdmVudFRhcmdldCogdGFyZ2V0LCB1bnNpZ25lZCBpZGVudGlmaWVy
LAogICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBw
YWdlWSwKICAgICAgICAgICAgIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRp
b25BbmdsZSwgZmxvYXQgZm9yY2UpOwogCisgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogICAg
IFJlZlB0cjxFdmVudFRhcmdldD4gbV90YXJnZXQ7CiAgICAgdW5zaWduZWQgbV9pZGVudGlmaWVy
OwogICAgIGludCBtX2NsaWVudFg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5kZXggYmZk
NjM2MGZiODVmMzdiZjBiZjJlYThkOTRkZGExOWEwMWQ4MzFhNS4uYTU4ZjFkY2M5ZTIzOGViZWE0
NjJjZmE1YjY1OTQ3NmUxYjYwMzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApAQCAt
OTQsNiArOTQsMTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUb3VjaEV2ZW50OjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRvdWNoRXZl
bnQ7CiB9CiAKK2Jvb2wgVG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCmluZGV4IDI5N2UzNDBmNDZi
NDNiY2E3NjU5MDE1MmJjY2UxOTE1NWU1NzlkYTMuLmIyZTViMmVlMzQ2YmQ4MDA3NTJkYjE5ZDZl
ODI4MTQ1MDNjODRjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaApAQCAtNjksNiArNjksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3VjaEhvbGQoYm9vbCB0b3VjaEhvbGQpIHsgbV90b3Vj
aEhvbGQgPSB0b3VjaEhvbGQ7IH0KICAgICBib29sIGlzVG91Y2hIb2xkKCkgY29uc3QgeyByZXR1
cm4gbV90b3VjaEhvbGQ7IH0KICNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQo
KSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCmluZGV4IGM2Y2YxZjQ5NzFlNmFkNjJkZGJjNWYzNzlkZGI3OGI5M2MzNGNlOGMuLmNmYTVm
MDE5ZmM5YTQ0NzU2MGNkMzk3OWJjOTk3MmYyYWY3OTQxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIlNlYXJj
aElucHV0VHlwZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTY3JpcHRF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgIldoZWVs
RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KQEAgLTEwMzYsNiArMTAzNywxMiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBpZiAoZXZ0LT5pc1RvdWNoRXZlbnQoKSkgeworICAgICAgICBtX2lucHV0VHlw
ZS0+aGFuZGxlVG91Y2hFdmVudChzdGF0aWNfY2FzdDxUb3VjaEV2ZW50Kj4oZXZ0KSk7CisgICAg
ICAgIGlmIChldnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgaWYgKGV2dC0+aXNLZXlib2FyZEV2ZW50KCkgJiYgZXZ0LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleWRvd25FdmVudCkgewogICAgICAgICBtX2lucHV0VHlwZS0+aGFuZGxlS2V5
ZG93bkV2ZW50KHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldnQpKTsKICAgICAgICAgaWYg
KGV2dC0+ZGVmYXVsdEhhbmRsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5
YmI2MDI5NmM4ZWY2MjQ5YTZhZDBmMjY1MDMwOWEwMTg5MWI5NjAyLi4xYmQyY2Q4MzYzNGIxNjkw
YTBlNzA4NDMwNDAzZmY1NDMxMGVmNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBA
IC00MTcsNiArNDE3LDEwIEBAIHZvaWQgSW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVs
RXZlbnQqKQogewogfQogCit2b2lkIElucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2
ZW50KikKK3sKK30KKwogdm9pZCBJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCopCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCBiNmI5Yjc4ODIyYWRkNzUwNWRmYmM3ZmFmZGJi
MzI3YjI5MzdhMDJhLi44OTlkZGU3YmU0ZTgyMzBlNmE2ZDIwNzQzNzUyZDIyYmQ0MTgyMzdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTYwLDEyICs2MCwxNCBAQCBjbGFzcyBOb2RlOwog
Y2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHls
ZTsKK2NsYXNzIFRvdWNoRXZlbnQ7CiBjbGFzcyBXaGVlbEV2ZW50OwogCiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCiBzdHJ1Y3QgQ2xpY2tIYW5kbGluZ1N0YXRlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgCiBwdWJsaWM6CiAgICAgYm9vbCBjaGVja2VkOwogICAgIGJv
b2wgaW5kZXRlcm1pbmF0ZTsKQEAgLTE4OSw2ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopOwogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCop
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIGZvcndhcmRFdmVudChFdmVudCopOwogICAgIC8vIEhlbHBlcnMgZm9yIGV2ZW50IGhhbmRs
ZXJzLgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGZiOGJlMGVlZGU2YzhkNmQx
OGJmYjc2YjY5NTQ0NTlmNDBiYmEwZjEuLjQwY2EzOGY0MjY1YjJkNDBlMWU0MGQ2YWQ2YjI5NmEw
Mjg1ZWNhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiRWxlbWVu
dFNoYWRvdy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CkBAIC00NSw2ICs0Niw5IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNs
aWRlclRodW1iRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0ZXBSYW5nZS5oIgorI2luY2x1ZGUgIlRv
dWNoLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgog
I2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0xMzQsNiArMTM4LDI0IEBAIHZvaWQgUmFuZ2VJbnB1dFR5
cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogICAgIHRodW1iLT5k
cmFnRnJvbShldmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKTsKIH0KIAordm9pZCBSYW5nZUlucHV0
VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFRvdWNoTGlzdCogdG91Y2hlcyA9IGV2ZW50LT50
YXJnZXRUb3VjaGVzKCk7CisgICAgaWYgKHRvdWNoZXMtPmxlbmd0aCgpID09IDEpIHsKKyAgICAg
ICAgVG91Y2gqIHRvdWNoID0gdG91Y2hlcy0+aXRlbSgwKTsKKyAgICAgICAgU2xpZGVyVGh1bWJF
bGVtZW50KiB0aHVtYiA9IHNsaWRlclRodW1iRWxlbWVudE9mKGVsZW1lbnQoKSk7CisgICAgICAg
IHRodW1iLT5zZXRQb3NpdGlvbkZyb21Qb2ludCh0b3VjaC0+YWJzb2x1dGVMb2NhdGlvbigpKTsK
KyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIGV2ZW50LT5wcmV2
ZW50RGVmYXVsdCgpOworICAgIH0KK30KKwogdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChlbGVtZW50KCktPmRp
c2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25seSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5oCmluZGV4IDBjOGEyYTkyZGVjMDBmZTJhMjI5MWFkZjhmZWU2ZmM1NTM1OWE1ZDku
LmM0ZTJlNGQ5NTU5NmZjN2I0NTE5NmVkYmNjNzlhY2Y2MzVkYjFiZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IGUyZDhiNjZlYmIxMWY0OWQxYzhiMDFi
NGM4MWVlMWJiMDUxMDllOWIuLjM2ZDY0MTg2ZjhjMWRhMjA0MjI1N2QxMThjYWUxZjIxMzgzNDRj
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7
CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7
CiAgICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQ
b3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCiBwcml2YXRlOgogICAgIFNs
aWRlclRodW1iRWxlbWVudChEb2N1bWVudCopOwpAQCAtNjcsNyArNjgsNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgTm9kZSogZm9jdXNEZWxlZ2F0ZSgpOwogICAgIHZvaWQgc3RhcnREcmFnZ2lu
ZygpOwogICAgIHZvaWQgc3RvcERyYWdnaW5nKCk7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbkZyb21Q
b2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9vbCBtX2luRHJhZ01vZGU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147321</attachid>
            <date>2012-06-13 08:27:08 -0700</date>
            <delta_ts>2012-06-13 11:13:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120613112707.patch</filename>
            <type>text/plain</type>
            <size>15761</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNjMmEzNmViN2IxMjgx
NGIxMzI5NzViYTNjYzM5NTBiY2M1MzU0OC4uYTJmNGIxNTlmMGU0NjRhMzFmMjg3M2NhYWM5YzVj
YmVjZjY0NGE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTEzICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5o
dG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6
OmlzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnQu
aDoKKyAgICAgICAgKEV2ZW50KToKKyAgICAgICAgKiBkb20vVG91Y2guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VG91Y2g6OlRvdWNoKToKKyAgICAgICAgKiBkb20vVG91Y2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoOjphYnNvbHV0ZUxvY2F0aW9uKToKKyAgICAgICAgKFRvdWNoKToKKyAg
ICAgICAgKiBkb20vVG91Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50
Ojppc1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1RvdWNo
RXZlbnQuaDoKKyAgICAgICAgKFRvdWNoRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ2xpY2tIYW5kbGluZ1N0YXRlKToKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgIChSYW5nZUlucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgIChTbGlkZXJUaHVtYkVs
ZW1lbnQpOgorCiAyMDEyLTA2LTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1F0XVtXaW5dIEZpeCBVU3RyaW5nIHJlbGF0ZWQgYnVpbGQgcHJvYmxl
bSBpbiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmNwcAppbmRleCBjOWE0NWRjNDllZDg5M2M3ZDdmNWQ0MjBkNjA3OWIyNjQ4MGVjY2NiLi43NjEz
MTNjNTk5OWZjNTZhNjkyNDgyYTk1NmM4YjA0NDhiM2NkMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAK
QEAgLTEyNiw2ICsxMjYsMTEgQEAgYm9vbCBFdmVudDo6aXNLZXlib2FyZEV2ZW50KCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZlbnQ6OmlzVG91Y2hFdmVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV2ZW50Ojppc0RyYWdFdmVudCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCAzNmVkOWE2ZDk2N2Rl
ZmQxZTgzZWUyNTllOWM4YjcyZTdkMDZlNTUzLi5kMjk4ZDkwYTc3YTE2NTBkMmE4YjU2MmI1M2U1
MzhmZGUzNTU0MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTIwLDYgKzEyMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVUlFdmVudCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0tleWJvYXJkRXZlbnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGlzVG91
Y2hFdmVudCgpIGNvbnN0OwogCiAgICAgICAgIC8vIERyYWcgZXZlbnRzIGFyZSBhIHN1YnNldCBv
ZiBtb3VzZSBldmVudHMuCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RyYWdFdmVudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaC5jcHAKaW5kZXggY2Y3MjFkZjkwNjBmZmU0ZDgyNzhmMGU3OTQwNjQ5ZmY4
YjEwZTVhZi4uYTZiZGEyNTY4ZjIwNDIzMTQ5NzUwNDJjOThhNWMzMDA3MTMyNWMxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2guY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJUb3VjaC5oIgogCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKIApAQCAtNjgsNiArNjksMTAgQEAgVG91Y2g6OlRvdWNoKEZyYW1lKiBmcmFtZSwg
RXZlbnRUYXJnZXQqIHRhcmdldCwgdW5zaWduZWQgaWRlbnRpZmllciwgaW50IHNjcmVlblgKICAg
ICAsIG1fcm90YXRpb25BbmdsZShyb3RhdGlvbkFuZ2xlKQogICAgICwgbV9mb3JjZShmb3JjZSkK
IHsKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJh
bWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICBmbG9hdCB4ID0gcGFnZVggKiBzY2FsZUZhY3Rv
cjsKKyAgICBmbG9hdCB5ID0gcGFnZVkgKiBzY2FsZUZhY3RvcjsKKyAgICBtX2Fic29sdXRlTG9j
YXRpb24gPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmgKaW5kZXggZjRjOWU4MDYxZDhjNzNhYTAyMDMz
YWM0NGM0OTA0ZmQyNDAzMDlmNi4uYzRjYjVlMjk1NWIxMjFmM2M2MjEyMDU0MmU2MTU5NjAzMjk0
YTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RvdWNoLmgKQEAgLTI5LDE0ICsyOSwxNCBAQAogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwotCiBjbGFzcyBUb3VjaCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFRvdWNoPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VG91
Y2g+IGNyZWF0ZShGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsCkBAIC01OSw2ICs1
OSw3IEBAIHB1YmxpYzoKICAgICBpbnQgd2Via2l0UmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFkaXVzWTsgfQogICAgIGZsb2F0IHdlYmtpdFJvdGF0aW9uQW5nbGUoKSBjb25zdCB7IHJldHVy
biBtX3JvdGF0aW9uQW5nbGU7IH0KICAgICBmbG9hdCB3ZWJraXRGb3JjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9yY2U7IH0KKyAgICBjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVMb2NhdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFRv
dWNoKEZyYW1lKiBmcmFtZSwgRXZlbnRUYXJnZXQqIHRhcmdldCwgdW5zaWduZWQgaWRlbnRpZmll
ciwKQEAgLTc3LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9yYWRpdXNZOwogICAgIGZs
b2F0IG1fcm90YXRpb25BbmdsZTsKICAgICBmbG9hdCBtX2ZvcmNlOworICAgIExheW91dFBvaW50
IG1fYWJzb2x1dGVMb2NhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmNwcAppbmRleCBiZmQ2MzYwZmI4NWYzN2JmMGJmMmVhOGQ5NGRkYTE5
YTAxZDgzMWE1Li5hNThmMWRjYzllMjM4ZWJlYTQ2MmNmYTViNjU5NDc2ZTFiNjAzNmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCkBAIC05NCw2ICs5NCwxMSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIFRvdWNoRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAogICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yVG91Y2hFdmVudDsKIH0KIAorYm9vbCBUb3VjaEV2ZW50Ojpp
c1RvdWNoRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
b3VjaEV2ZW50LmgKaW5kZXggMjk3ZTM0MGY0NmI0M2JjYTc2NTkwMTUyYmNjZTE5MTU1ZTU3OWRh
My4uYjJlNWIyZWUzNDZiZDgwMDc1MmRiMTlkNmU4MjgxNDUwM2M4NGM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VG91Y2hFdmVudC5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvdWNo
SG9sZChib29sIHRvdWNoSG9sZCkgeyBtX3RvdWNoSG9sZCA9IHRvdWNoSG9sZDsgfQogICAgIGJv
b2wgaXNUb3VjaEhvbGQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoSG9sZDsgfQogI2VuZGlmCisg
ICAgdmlydHVhbCBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggYzZjZjFmNDk3MWU2YWQ2MmRk
YmM1ZjM3OWRkYjc4YjkzYzM0Y2U4Yy4uY2ZhNWYwMTlmYzlhNDQ3NTYwY2QzOTc5YmM5OTcyZjJh
Zjc5NDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01
NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU2VhcmNoSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJU
b3VjaEV2ZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTAzNiw2ICsxMDM3
LDEyIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZ0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChldnQtPmlzVG91Y2hF
dmVudCgpKSB7CisgICAgICAgIG1faW5wdXRUeXBlLT5oYW5kbGVUb3VjaEV2ZW50KHN0YXRpY19j
YXN0PFRvdWNoRXZlbnQqPihldnQpKTsKKyAgICAgICAgaWYgKGV2dC0+ZGVmYXVsdEhhbmRsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoZXZ0LT5pc0tleWJvYXJk
RXZlbnQoKSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CiAg
ICAgICAgIG1faW5wdXRUeXBlLT5oYW5kbGVLZXlkb3duRXZlbnQoc3RhdGljX2Nhc3Q8S2V5Ym9h
cmRFdmVudCo+KGV2dCkpOwogICAgICAgICBpZiAoZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDliYjYwMjk2YzhlZjYyNDlhNmFkMGYyNjUwMzA5
YTAxODkxYjk2MDIuLjFiZDJjZDgzNjM0YjE2OTBhMGU3MDg0MzA0MDNmZjU0MzEwZWY2OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTQxNyw2ICs0MTcsMTAgQEAgdm9pZCBJbnB1
dFR5cGU6OmhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCopCiB7CiB9CiAKK3ZvaWQgSW5wdXRU
eXBlOjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqKQoreworfQorCiB2b2lkIElucHV0VHlw
ZTo6Zm9yd2FyZEV2ZW50KEV2ZW50KikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4
IGI2YjliNzg4MjJhZGQ3NTA1ZGZiYzdmYWZkYmIzMjdiMjkzN2EwMmEuLjg5OWRkZTdiZTRlODIz
MGU2YTZkMjA3NDM3NTJkMjJiZDQxODIzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAt
NjAsMTIgKzYwLDE0IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJBcmVuYTsKIGNsYXNzIFJl
bmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgVG91Y2hFdmVudDsKIGNsYXNz
IFdoZWVsRXZlbnQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIHN0cnVjdCBDbGlj
a0hhbmRsaW5nU3RhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAKIHB1Ymxp
YzoKICAgICBib29sIGNoZWNrZWQ7CiAgICAgYm9vbCBpbmRldGVybWluYXRlOwpAQCAtMTg5LDYg
KzE5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5dXBFdmVudChLZXli
b2FyZEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2
ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdo
ZWVsRXZlbnQoV2hlZWxFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50
KFRvdWNoRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yd2FyZEV2ZW50KEV2ZW50Kik7CiAg
ICAgLy8gSGVscGVycyBmb3IgZXZlbnQgaGFuZGxlcnMuCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5jcHAKaW5kZXggZmI4YmUwZWVkZTZjOGQ2ZDE4YmZiNzZiNjk1NDQ1OWY0MGJiYTBmMS4uNDY5
YWZkY2JlMzU2NmZjNmI3MTE1YzQ3NmJkZGE3MWNmNzI4YTJhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTQ1LDYgKzQ1LDkgQEAKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAjaW5jbHVkZSAiU2xpZGVyVGh1bWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3RlcFJh
bmdlLmgiCisjaW5jbHVkZSAiVG91Y2guaCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjaW5j
bHVkZSAiVG91Y2hMaXN0LmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTEzNCw2ICsxMzcsMjQg
QEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCog
ZXZlbnQpCiAgICAgdGh1bWItPmRyYWdGcm9tKGV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwog
fQogCit2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqIGV2
ZW50KQoreworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8
IGVsZW1lbnQoKS0+cmVhZE9ubHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVG91Y2hMaXN0
KiB0b3VjaGVzID0gZXZlbnQtPnRhcmdldFRvdWNoZXMoKTsKKyAgICBpZiAodG91Y2hlcy0+bGVu
Z3RoKCkgPT0gMSkgeworICAgICAgICBUb3VjaCogdG91Y2ggPSB0b3VjaGVzLT5pdGVtKDApOwor
ICAgICAgICBTbGlkZXJUaHVtYkVsZW1lbnQqIHRodW1iID0gc2xpZGVyVGh1bWJFbGVtZW50T2Yo
ZWxlbWVudCgpKTsKKyAgICAgICAgdGh1bWItPnNldFBvc2l0aW9uRnJvbVBvaW50KHRvdWNoLT5h
YnNvbHV0ZUxvY2F0aW9uKCkpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
KyAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CisgICAgfQorfQorCiB2b2lkIFJhbmdl
SW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAg
ICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggMGM4YTJhOTJkZWMwMGZlMmEyMjkx
YWRmOGZlZTZmYzU1MzU5YTVkOS4uYzRlMmU0ZDk1NTk2ZmM3YjQ1MTk2ZWRiY2M3OWFjZjYzNWRi
MWJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTEsNiArNTEsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVw
SGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURvd25FdmVudChN
b3VzZUV2ZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVRvdWNoRXZlbnQo
VG91Y2hFdmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZl
bnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggZTJk
OGI2NmViYjExZjQ5ZDFjOGIwMWI0YzgxZWUxYmIwNTEwOWU5Yi4uMzZkNjQxODZmOGMxZGEyMDQy
MjU3ZDExOGNhZTFmMjEzODM0NGM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hh
ZG93UHNldWRvSWQoKSBjb25zdDsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBob3N0SW5wdXQoKSBj
b25zdDsKKyAgICB2b2lkIHNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50Jik7
CiAKIHByaXZhdGU6CiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KERvY3VtZW50Kik7CkBAIC02Nyw3
ICs2OCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlKiBmb2N1c0RlbGVnYXRlKCk7CiAg
ICAgdm9pZCBzdGFydERyYWdnaW5nKCk7CiAgICAgdm9pZCBzdG9wRHJhZ2dpbmcoKTsKLSAgICB2
b2lkIHNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICBib29s
IG1faW5EcmFnTW9kZTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDM2NDMwYzg5M2U5MzZjOTg2N2M5NzNkMWY5NTIy
NmYyNDY1YmMwOS4uNjI4NzZlYTQzMmZmMGJiODQxZWE3ZDMwMWQ2YmI1NTZiZjAyMjYxMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA2LTEzICBLZXZpbiBFbGxpcyAgPGtldmVyc0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMgd2l0aCB0eXBlPXJhbmdlIGRvIG5v
dCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAgICAgIEFkZCBhdXRvbWF0ZWQgdGVz
dCBmb3IgbWFuaXB1bGF0aW5nIGFuIGlucHV0IHNsaWRlciB2aWEgdG91Y2ggZXZlbnRzLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXNsaWRlci5qczogQWRkZWQuCisgICAgICAgIChv
blRvdWNoU3RhcnQpOgorICAgICAgICAob25Ub3VjaE1vdmUpOgorICAgICAgICAob25Ub3VjaEVu
ZCk6CisgICAgICAgIChjaGVja1Bvc2l0aW9uKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3Vj
aC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50
cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMTEgIERvbWluaWMg
Q29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5y
ZXZpZXdlZDogUmViYXNlbGluZXMgYW5kIHVwZGF0ZWQgZXhwZWN0YXRpb25zIGZvciBtZWRpYSB0
ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRl
c3RzL3RvdWNoLXNsaWRlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Njcmlw
dC10ZXN0cy90b3VjaC1zbGlkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjMWZlYjQwNmU3Y2UyMGRiMWYw
NzJkYmI5YjA0MzYyZDg1OWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanMKQEAgLTAsMCArMSw3MSBA
QAordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZGl2LnN0eWxlLndp
ZHRoID0gIjIwMCUiOwordmFyIHNsaWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0
Iik7CitzbGlkZXIuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhbmdlIik7CitzbGlkZXIuc3R5bGUu
d2lkdGggPSAiMjAwcHgiOworc2xpZGVyLnN0eWxlLmhlaWdodCA9ICIzMHB4IjsKKworZG9jdW1l
bnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpKTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIpOworCitmdW5jdGlvbiBvblRvdWNoU3RhcnQo
KSB7CisgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LnRh
Z05hbWUiLCBzbGlkZXIudGFnTmFtZSk7CisgICBjaGVja1Bvc2l0aW9uKCk7Cit9CisKK2Z1bmN0
aW9uIG9uVG91Y2hNb3ZlKCkgeworICAgIGNoZWNrUG9zaXRpb24oKTsKK30KKworZnVuY3Rpb24g
b25Ub3VjaEVuZCgpIHsKKyAgICBjaGVja1Bvc2l0aW9uKCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9CisKK3Zh
ciBjaGVja1Bvc2l0aW9uID0gKGZ1bmN0aW9uKCkgeworCisgIHZhciBuQ2hlY2sgPSAwOworCisg
IHZhciBleHBlY3RlZFBvc2l0aW9ucyA9IFs1MCwgNTAsIDAsIDEwMCwgNTBdOworCisgIHJldHVy
biBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci52YWx1ZSIs
IFN0cmluZyhleHBlY3RlZFBvc2l0aW9uc1tuQ2hlY2srK10pKTsKKyAgfTsKKworfSkoKTsKKwor
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIG9uVG91Y2hTdGFydCwgZmFs
c2UpOworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgb25Ub3VjaE1vdmUs
IGZhbHNlKTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgb25Ub3VjaEVu
ZCwgZmFsc2UpOworCitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZlbnRzIG9y
aWdpbmF0aW5nIG9uIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0ZSB0aGUg
c2xpZGVyIHBvc2l0aW9uLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdmFyIHggPSBzbGlkZXIub2Zmc2V0TGVmdDsKKyAgICB2
YXIgeSA9IHNsaWRlci5vZmZzZXRUb3AgKyBzbGlkZXIuY2xpZW50SGVpZ2h0LzI7CisgICAgdmFy
IHcgPSBzbGlkZXIuY2xpZW50V2lkdGg7CisKKyAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9p
bnRzKCk7CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCh4ICsgdy8yLCB5KTsKKyAgICBl
dmVudFNlbmRlci50b3VjaFN0YXJ0KCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBv
aW50KDAsIHgsIHkpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRT
ZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCB4ICsgdywgeSk7CisgICAgZXZlbnRTZW5kZXIudG91
Y2hNb3ZlKCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHggKyB3LzIs
IHkpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVs
ZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKworfSBlbHNl
IHsKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4nKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkzODIwOGJmZTdkNmIxYWJhYmJiY2ZmZjMwZThmOTA1NjJhMDUyNTYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlk
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHRoYXQgdGhlIHRvdWNoIGV2
ZW50cyBvcmlnaW5hdGluZyBvbiBhbiBpbnB1dCBlbGVtZW50IHdpdGggdHlwZT1yYW5nZSB1cGRh
dGUgdGhlIHNsaWRlciBwb3NpdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
KworUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIGlzICJJTlBVVCIKK1BBU1Mg
c2xpZGVyLnZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyLnZhbHVlIGlzICI1MCIKK1BBU1Mgc2xp
ZGVyLnZhbHVlIGlzICIwIgorUEFTUyBzbGlkZXIudmFsdWUgaXMgIjEwMCIKK1BBU1Mgc2xpZGVy
LnZhbHVlIGlzICI1MCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3Vj
aC1zbGlkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhjN2Q1MTZlOWFkNTM1ZjY1Nzg3Y2QxYzA3YWU3YzEyM2U1Y2M2
MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3Vj
aC1zbGlkZXIuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8IS0tCisgIFRvdWNoIHRl
c3RzIHRoYXQgaW52b2x2ZSB0aGUgb250b3VjaHN0YXJ0LCBvbnRvdWNobW92ZSwgb250b3VjaGVu
ZCBvciBvbnRvdWNoY2FuY2VsIGNhbGxiYWNrcworICBzaG91bGQgYmUgd3JpdHRlbiBpbiBhbiBh
c3luY2hyb25vdXMgZmFzaGlvbiBzbyB0aGV5IGNhbiBiZSBydW4gb24gbW9iaWxlIHBsYXRmb3Jt
cyBsaWtlIEFuZHJvaWQuCisgIFlvdSB3aWxsIG5lZWQgdG8gaW52b2tlIGlzU3VjY2Vzc2Z1bGx5
UGFyc2VkKCkgaW4geW91ciB0ZXN0IHNjcmlwdCB3aGVuIHRoZSB0ZXN0IGNvbXBsZXRlcy4KKy0t
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147365</attachid>
            <date>2012-06-13 11:13:28 -0700</date>
            <delta_ts>2012-06-18 13:30:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120613141327.patch</filename>
            <type>text/plain</type>
            <size>15687</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNjMmEzNmViN2IxMjgx
NGIxMzI5NzViYTNjYzM5NTBiY2M1MzU0OC4uYTJmNGIxNTlmMGU0NjRhMzFmMjg3M2NhYWM5YzVj
YmVjZjY0NGE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTEzICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5o
dG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6
OmlzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnQu
aDoKKyAgICAgICAgKEV2ZW50KToKKyAgICAgICAgKiBkb20vVG91Y2guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VG91Y2g6OlRvdWNoKToKKyAgICAgICAgKiBkb20vVG91Y2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoOjphYnNvbHV0ZUxvY2F0aW9uKToKKyAgICAgICAgKFRvdWNoKToKKyAg
ICAgICAgKiBkb20vVG91Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50
Ojppc1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1RvdWNo
RXZlbnQuaDoKKyAgICAgICAgKFRvdWNoRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ2xpY2tIYW5kbGluZ1N0YXRlKToKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgIChSYW5nZUlucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgIChTbGlkZXJUaHVtYkVs
ZW1lbnQpOgorCiAyMDEyLTA2LTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1F0XVtXaW5dIEZpeCBVU3RyaW5nIHJlbGF0ZWQgYnVpbGQgcHJvYmxl
bSBpbiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmNwcAppbmRleCBjOWE0NWRjNDllZDg5M2M3ZDdmNWQ0MjBkNjA3OWIyNjQ4MGVjY2NiLi43NjEz
MTNjNTk5OWZjNTZhNjkyNDgyYTk1NmM4YjA0NDhiM2NkMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAK
QEAgLTEyNiw2ICsxMjYsMTEgQEAgYm9vbCBFdmVudDo6aXNLZXlib2FyZEV2ZW50KCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZlbnQ6OmlzVG91Y2hFdmVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV2ZW50Ojppc0RyYWdFdmVudCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCAzNmVkOWE2ZDk2N2Rl
ZmQxZTgzZWUyNTllOWM4YjcyZTdkMDZlNTUzLi5kMjk4ZDkwYTc3YTE2NTBkMmE4YjU2MmI1M2U1
MzhmZGUzNTU0MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTIwLDYgKzEyMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVUlFdmVudCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0tleWJvYXJkRXZlbnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGlzVG91
Y2hFdmVudCgpIGNvbnN0OwogCiAgICAgICAgIC8vIERyYWcgZXZlbnRzIGFyZSBhIHN1YnNldCBv
ZiBtb3VzZSBldmVudHMuCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RyYWdFdmVudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaC5jcHAKaW5kZXggY2Y3MjFkZjkwNjBmZmU0ZDgyNzhmMGU3OTQwNjQ5ZmY4
YjEwZTVhZi4uYTZiZGEyNTY4ZjIwNDIzMTQ5NzUwNDJjOThhNWMzMDA3MTMyNWMxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2guY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJUb3VjaC5oIgogCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKIApAQCAtNjgsNiArNjksMTAgQEAgVG91Y2g6OlRvdWNoKEZyYW1lKiBmcmFtZSwg
RXZlbnRUYXJnZXQqIHRhcmdldCwgdW5zaWduZWQgaWRlbnRpZmllciwgaW50IHNjcmVlblgKICAg
ICAsIG1fcm90YXRpb25BbmdsZShyb3RhdGlvbkFuZ2xlKQogICAgICwgbV9mb3JjZShmb3JjZSkK
IHsKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJh
bWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICBmbG9hdCB4ID0gcGFnZVggKiBzY2FsZUZhY3Rv
cjsKKyAgICBmbG9hdCB5ID0gcGFnZVkgKiBzY2FsZUZhY3RvcjsKKyAgICBtX2Fic29sdXRlTG9j
YXRpb24gPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmgKaW5kZXggZjRjOWU4MDYxZDhjNzNhYTAyMDMz
YWM0NGM0OTA0ZmQyNDAzMDlmNi4uMWU4MDI1M2U2ZTljZWU1ZGU3M2I4MTRkMDAzZjAwZTY5YzIx
NDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RvdWNoLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJMYXlvdXRUeXBl
cy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01OSw2ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICBpbnQgd2Via2l0UmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWTsgfQogICAg
IGZsb2F0IHdlYmtpdFJvdGF0aW9uQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX3JvdGF0aW9uQW5n
bGU7IH0KICAgICBmbG9hdCB3ZWJraXRGb3JjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2U7IH0K
KyAgICBjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYWJzb2x1dGVMb2NhdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFRvdWNoKEZyYW1lKiBmcmFt
ZSwgRXZlbnRUYXJnZXQqIHRhcmdldCwgdW5zaWduZWQgaWRlbnRpZmllciwKQEAgLTc3LDYgKzc5
LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9yYWRpdXNZOwogICAgIGZsb2F0IG1fcm90YXRpb25B
bmdsZTsKICAgICBmbG9hdCBtX2ZvcmNlOworICAgIExheW91dFBvaW50IG1fYWJzb2x1dGVMb2Nh
dGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50
LmNwcAppbmRleCBiZmQ2MzYwZmI4NWYzN2JmMGJmMmVhOGQ5NGRkYTE5YTAxZDgzMWE1Li5hNThm
MWRjYzllMjM4ZWJlYTQ2MmNmYTViNjU5NDc2ZTFiNjAzNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNo
RXZlbnQuY3BwCkBAIC05NCw2ICs5NCwxMSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFRvdWNoRXZl
bnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yVG91Y2hFdmVudDsKIH0KIAorYm9vbCBUb3VjaEV2ZW50Ojppc1RvdWNoRXZlbnQoKSBj
b25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5k
ZXggMjk3ZTM0MGY0NmI0M2JjYTc2NTkwMTUyYmNjZTE5MTU1ZTU3OWRhMy4uYjJlNWIyZWUzNDZi
ZDgwMDc1MmRiMTlkNmU4MjgxNDUwM2M4NGM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBA
IC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvdWNoSG9sZChib29sIHRvdWNo
SG9sZCkgeyBtX3RvdWNoSG9sZCA9IHRvdWNoSG9sZDsgfQogICAgIGJvb2wgaXNUb3VjaEhvbGQo
KSBjb25zdCB7IHJldHVybiBtX3RvdWNoSG9sZDsgfQogI2VuZGlmCisgICAgdmlydHVhbCBib29s
IGlzVG91Y2hFdmVudCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggYzZjZjFmNDk3MWU2YWQ2MmRkYmM1ZjM3OWRkYjc4Yjkz
YzM0Y2U4Yy4uNjA1MTE3YThmNjIxYzg0ZTRkMDQ3NDBlNzg4NzliOTNjYTNkOGY5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02Nyw2ICs2NywxMCBAQAog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAzNSw2ICsxMDM5LDEz
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0
KQogICAgICAgICBpZiAoZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChldnQtPmlzVG91Y2hF
dmVudCgpKSB7CisgICAgICAgIG1faW5wdXRUeXBlLT5oYW5kbGVUb3VjaEV2ZW50KHN0YXRpY19j
YXN0PFRvdWNoRXZlbnQqPihldnQpKTsKKyAgICAgICAgaWYgKGV2dC0+ZGVmYXVsdEhhbmRsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIAogICAgIGlmIChldnQtPmlz
S2V5Ym9hcmRFdmVudCgpICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZl
bnQpIHsKICAgICAgICAgbV9pbnB1dFR5cGUtPmhhbmRsZUtleWRvd25FdmVudChzdGF0aWNfY2Fz
dDxLZXlib2FyZEV2ZW50Kj4oZXZ0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXgg
OWJiNjAyOTZjOGVmNjI0OWE2YWQwZjI2NTAzMDlhMDE4OTFiOTYwMi4uMzgzZDY0ODFjNWU2ZDg2
OWRkZDA1Y2Q0ODVkODg4NjljM2E2ODVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApA
QCAtNDE3LDYgKzQxNywxMiBAQCB2b2lkIElucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudChXaGVl
bEV2ZW50KikKIHsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIElucHV0VHlw
ZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KikKK3sKK30KKyNlbmRpZgorCiB2b2lkIElu
cHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50KikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CmluZGV4IGI2YjliNzg4MjJhZGQ3NTA1ZGZiYzdmYWZkYmIzMjdiMjkzN2EwMmEuLmFlNWZkOTAy
NTJkYTIwODA1OGU5NDllNWEwN2UyMjJmMjAwYmJkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aApAQCAtNjAsMTIgKzYwLDE0IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJBcmVuYTsKIGNs
YXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgVG91Y2hFdmVudDsK
IGNsYXNzIFdoZWVsRXZlbnQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIHN0cnVj
dCBDbGlja0hhbmRsaW5nU3RhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAK
IHB1YmxpYzoKICAgICBib29sIGNoZWNrZWQ7CiAgICAgYm9vbCBpbmRldGVybWluYXRlOwpAQCAt
MTg5LDYgKzE5MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5dXBFdmVu
dChLZXlib2FyZEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCopOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCopOworI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIGZvcndhcmRFdmVudChFdmVudCopOwogICAgIC8vIEhlbHBlcnMgZm9y
IGV2ZW50IGhhbmRsZXJzLgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBsaWNpdGx5
KEV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGZiOGJl
MGVlZGU2YzhkNmQxOGJmYjc2YjY5NTQ0NTlmNDBiYmEwZjEuLmU1MDIyMmU4MGQ1NjI4NjdmNWVj
NjM4YzdiMDZiM2NlODQ4ZWUxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
Y3BwCkBAIC00OSw2ICs0OSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5j
bHVkZSAiVG91Y2guaCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiVG91Y2hM
aXN0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwpAQCAtMTM0LDYgKzE0MCwyNiBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5k
bGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50KiBldmVudCkKICAgICB0aHVtYi0+ZHJhZ0Zyb20o
ZXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSk7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQordm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KiBldmVu
dCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hlbmRFdmVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBl
bGVtZW50KCktPnJlYWRPbmx5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFRvdWNoTGlzdCog
dG91Y2hlcyA9IGV2ZW50LT50YXJnZXRUb3VjaGVzKCk7CisgICAgaWYgKHRvdWNoZXMtPmxlbmd0
aCgpID09IDEpIHsKKyAgICAgICAgVG91Y2gqIHRvdWNoID0gdG91Y2hlcy0+aXRlbSgwKTsKKyAg
ICAgICAgU2xpZGVyVGh1bWJFbGVtZW50KiB0aHVtYiA9IHNsaWRlclRodW1iRWxlbWVudE9mKGVs
ZW1lbnQoKSk7CisgICAgICAgIHRodW1iLT5zZXRQb3NpdGlvbkZyb21Qb2ludCh0b3VjaC0+YWJz
b2x1dGVMb2NhdGlvbigpKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cisg
ICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiB7CiAgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggMGM4YTJhOTJkZWMwMGZl
MmEyMjkxYWRmOGZlZTZmYzU1MzU5YTVkOS4uMzMyODQ5MDk5YmZlMGYyZTdlYmNkNjkyZjExNjYz
Nzk1ZDg1MzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTEsNiAr
NTEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBw
YWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURvd25F
dmVudChNb3VzZUV2ZW50KikgT1ZFUlJJREU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KikgT1ZFUlJJREU7Cisj
ZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IGUyZDhiNjZlYmIxMWY0OWQxYzhi
MDFiNGM4MWVlMWJiMDUxMDllOWIuLjM2ZDY0MTg2ZjhjMWRhMjA0MjI1N2QxMThjYWUxZjIxMzgz
NDRjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
KCk7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3Q7CiAgICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCiBwcml2YXRlOgogICAg
IFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCopOwpAQCAtNjcsNyArNjgsNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgTm9kZSogZm9jdXNEZWxlZ2F0ZSgpOwogICAgIHZvaWQgc3RhcnREcmFn
Z2luZygpOwogICAgIHZvaWQgc3RvcERyYWdnaW5nKCk7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbkZy
b21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9vbCBtX2luRHJhZ01vZGU7CiB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDAzNjQzMGM4OTNlOTM2Yzk4NjdjOTczZDFmOTUyMjZmMjQ2NWJjMDkuLjYyODc2
ZWE0MzJmZjBiYjg0MWVhN2QzMDFkNmJiNTU2YmYwMjI2MTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMi0wNi0xMyAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIElucHV0IGVsZW1lbnRzIHdpdGggdHlwZT1yYW5nZSBkbyBub3QgaGF2ZSBkZWZhdWx0IHRv
dWNoIGhhbmRsZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODg4MDcKKworICAgICAgICBBZGQgYXV0b21hdGVkIHRlc3QgZm9yIG1hbmlwdWxhdGlu
ZyBhbiBpbnB1dCBzbGlkZXIgdmlhIHRvdWNoIGV2ZW50cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10
ZXN0cy90b3VjaC1zbGlkZXIuanM6IEFkZGVkLgorICAgICAgICAob25Ub3VjaFN0YXJ0KToKKyAg
ICAgICAgKG9uVG91Y2hNb3ZlKToKKyAgICAgICAgKG9uVG91Y2hFbmQpOgorICAgICAgICAoY2hl
Y2tQb3NpdGlvbik6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xp
ZGVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTExICBEb21pbmljIENvb25leSAgPGRvbWluaWNj
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQ6IFJlYmFzZWxp
bmVzIGFuZCB1cGRhdGVkIGV4cGVjdGF0aW9ucyBmb3IgbWVkaWEgdGVzdHMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xp
ZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgyYzFmZWI0MDZlN2NlMjBkYjFmMDcyZGJiOWIwNDM2MmQ4NTlk
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3Jp
cHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCkBAIC0wLDAgKzEsNzEgQEAKK3ZhciBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS53aWR0aCA9ICIyMDAlIjsKK3Zh
ciBzbGlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworc2xpZGVyLnNldEF0
dHJpYnV0ZSgidHlwZSIsICJyYW5nZSIpOworc2xpZGVyLnN0eWxlLndpZHRoID0gIjIwMHB4IjsK
K3NsaWRlci5zdHlsZS5oZWlnaHQgPSAiMzBweCI7CisKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVm
b3JlKGRpdiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKSk7CitkaXYuYXBwZW5k
Q2hpbGQoc2xpZGVyKTsKKworZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KCkgeworICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIiwgc2xpZGVyLnRh
Z05hbWUpOworICAgY2hlY2tQb3NpdGlvbigpOworfQorCitmdW5jdGlvbiBvblRvdWNoTW92ZSgp
IHsKKyAgICBjaGVja1Bvc2l0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9uVG91Y2hFbmQoKSB7Cisg
ICAgY2hlY2tQb3NpdGlvbigpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworfQorCit2YXIgY2hlY2tQb3NpdGlvbiA9
IChmdW5jdGlvbigpIHsKKworICB2YXIgbkNoZWNrID0gMDsKKworICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbnMgPSBbNTAsIDUwLCAwLCAxMDAsIDUwXTsKKworICByZXR1cm4gZnVuY3Rpb24oKSB7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXIudmFsdWUiLCBTdHJpbmcoZXhwZWN0ZWRQ
b3NpdGlvbnNbbkNoZWNrKytdKSk7CisgIH07CisKK30pKCk7CisKK2RvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBvblRvdWNoU3RhcnQsIGZhbHNlKTsKK2RvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIG9uVG91Y2hNb3ZlLCBmYWxzZSk7Citkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIG9uVG91Y2hFbmQsIGZhbHNlKTsKKworZGVz
Y3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIHRvdWNoIGV2ZW50cyBvcmlnaW5hdGluZyBvbiBhbiBp
bnB1dCBlbGVtZW50IHdpdGggdHlwZT1yYW5nZSB1cGRhdGUgdGhlIHNsaWRlciBwb3NpdGlvbi4i
KTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgIHZhciB4ID0gc2xpZGVyLm9mZnNldExlZnQ7CisgICAgdmFyIHkgPSBzbGlkZXIub2Zm
c2V0VG9wICsgc2xpZGVyLmNsaWVudEhlaWdodC8yOworICAgIHZhciB3ID0gc2xpZGVyLmNsaWVu
dFdpZHRoOworCisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygpOworICAgIGV2ZW50
U2VuZGVyLmFkZFRvdWNoUG9pbnQoeCArIHcvMiwgeSk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hT
dGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCB4LCB5KTsKKyAg
ICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNo
UG9pbnQoMCwgeCArIHcsIHkpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAg
ZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCB4ICsgdy8yLCB5KTsKKyAgICBldmVudFNl
bmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVyLnJlbGVhc2VUb3VjaFBvaW50KDAp
OworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisKK30gZWxzZSB7CisgICAgZGVidWcoJ1Ro
aXMgdGVzdCByZXF1aXJlcyBEUlQuJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Mzgy
MDhiZmU3ZDZiMWFiYWJiYmNmZmYzMGU4ZjkwNTYyYTA1MjU2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE2IEBACitUZXN0cyB0aGF0IHRoZSB0b3VjaCBldmVudHMgb3JpZ2luYXRpbmcg
b24gYW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgdXBkYXRlIHRoZSBzbGlkZXIgcG9z
aXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BBU1MgZXZlbnQudG91
Y2hlc1swXS50YXJnZXQudGFnTmFtZSBpcyAiSU5QVVQiCitQQVNTIHNsaWRlci52YWx1ZSBpcyAi
NTAiCitQQVNTIHNsaWRlci52YWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlci52YWx1ZSBpcyAiMCIK
K1BBU1Mgc2xpZGVyLnZhbHVlIGlzICIxMDAiCitQQVNTIHNsaWRlci52YWx1ZSBpcyAiNTAiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YzdkNTE2ZTlhZDUzNWY2NTc4N2NkMWMwN2FlN2MxMjNlNWNjNjM4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWwKQEAg
LTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPCEtLQorICBUb3VjaCB0ZXN0cyB0aGF0IGludm9sdmUg
dGhlIG9udG91Y2hzdGFydCwgb250b3VjaG1vdmUsIG9udG91Y2hlbmQgb3Igb250b3VjaGNhbmNl
bCBjYWxsYmFja3MKKyAgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYW4gYXN5bmNocm9ub3VzIGZhc2hp
b24gc28gdGhleSBjYW4gYmUgcnVuIG9uIG1vYmlsZSBwbGF0Zm9ybXMgbGlrZSBBbmRyb2lkLgor
ICBZb3Ugd2lsbCBuZWVkIHRvIGludm9rZSBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpIGluIHlvdXIg
dGVzdCBzY3JpcHQgd2hlbiB0aGUgdGVzdCBjb21wbGV0ZXMuCistLT4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148160</attachid>
            <date>2012-06-18 13:26:33 -0700</date>
            <delta_ts>2012-06-19 11:35:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120618162632.patch</filename>
            <type>text/plain</type>
            <size>15705</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRkYTNlNTcwYjc0NTkz
NzYyMzgyYjExODI0ODIxYTYzYjk2YWMyZC4uMTQ5OTZkMWEyNWVjMGU1N2UxY2M5NGEzNmJiZDkz
MDMyYzI0OWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTEzICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5o
dG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6
OmlzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnQu
aDoKKyAgICAgICAgKEV2ZW50KToKKyAgICAgICAgKiBkb20vVG91Y2guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VG91Y2g6OlRvdWNoKToKKyAgICAgICAgKiBkb20vVG91Y2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoOjphYnNvbHV0ZUxvY2F0aW9uKToKKyAgICAgICAgKFRvdWNoKToKKyAg
ICAgICAgKiBkb20vVG91Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50
Ojppc1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1RvdWNo
RXZlbnQuaDoKKyAgICAgICAgKFRvdWNoRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ2xpY2tIYW5kbGluZ1N0YXRlKToKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgIChSYW5nZUlucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgIChTbGlkZXJUaHVtYkVs
ZW1lbnQpOgorCiAyMDEyLTA2LTE4ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBFdmVudCBkaXNwYXRjaGVyIHNob3VsZCB1c2UgSW5zZXJ0aW9uUG9pbnQ6Omhh
c0Rpc3RyaWJ1dGlvbiBpbnN0ZWFkIG9mIEluc2VydGluUG9pbnQ6OmlzQWN0aXZlIGluIHJlLXRh
cmdldGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCmluZGV4IGM5YTQ1ZGM0OWVkODkzYzdkN2Y1ZDQyMGQ2
MDc5YjI2NDgwZWNjY2IuLjc2MTMxM2M1OTk5ZmM1NmE2OTI0ODJhOTU2YzhiMDQ0OGIzY2QyODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcApAQCAtMTI2LDYgKzEyNiwxMSBAQCBib29sIEV2ZW50Ojppc0tl
eWJvYXJkRXZlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFdmVudDo6
aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZl
bnQ6OmlzRHJhZ0V2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5o
CmluZGV4IDM2ZWQ5YTZkOTY3ZGVmZDFlODNlZTI1OWU5YzhiNzJlN2QwNmU1NTMuLmQyOThkOTBh
NzdhMTY1MGQyYThiNTYyYjUzZTUzOGZkZTM1NTQyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC0xMjAs
NiArMTIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNV
SUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRXZlbnQoKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50KCkgY29uc3Q7CiAKICAgICAgICAgLy8gRHJhZyBl
dmVudHMgYXJlIGEgc3Vic2V0IG9mIG1vdXNlIGV2ZW50cy4KICAgICAgICAgdmlydHVhbCBib29s
IGlzRHJhZ0V2ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcAppbmRleCBjZjcyMWRmOTA2MGZm
ZTRkODI3OGYwZTc5NDA2NDlmZjhiMTBlNWFmLi5hNmJkYTI1NjhmMjA0MjMxNDk3NTA0MmM5OGE1
YzMwMDcxMzI1YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIlRvdWNoLmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogCkBAIC02OCw2ICs2OSwxMCBAQCBUb3VjaDo6
VG91Y2goRnJhbWUqIGZyYW1lLCBFdmVudFRhcmdldCogdGFyZ2V0LCB1bnNpZ25lZCBpZGVudGlm
aWVyLCBpbnQgc2NyZWVuWAogICAgICwgbV9yb3RhdGlvbkFuZ2xlKHJvdGF0aW9uQW5nbGUpCiAg
ICAgLCBtX2ZvcmNlKGZvcmNlKQogeworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZnJhbWUtPnBh
Z2Vab29tRmFjdG9yKCkgKiBmcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpOworICAgIGZsb2F0IHgg
PSBwYWdlWCAqIHNjYWxlRmFjdG9yOworICAgIGZsb2F0IHkgPSBwYWdlWSAqIHNjYWxlRmFjdG9y
OworICAgIG1fYWJzb2x1dGVMb2NhdGlvbiA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50
KHgsIHkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RvdWNoLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaAppbmRleCBm
NGM5ZTgwNjFkOGM3M2FhMDIwMzNhYzQ0YzQ5MDRmZDI0MDMwOWY2Li4xZTgwMjUzZTZlOWNlZTVk
ZTczYjgxNGQwMDNmMDBlNjljMjE0MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VG91Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgor
I2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTU5
LDYgKzYwLDcgQEAgcHVibGljOgogICAgIGludCB3ZWJraXRSYWRpdXNZKCkgY29uc3QgeyByZXR1
cm4gbV9yYWRpdXNZOyB9CiAgICAgZmxvYXQgd2Via2l0Um90YXRpb25BbmdsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcm90YXRpb25BbmdsZTsgfQogICAgIGZsb2F0IHdlYmtpdEZvcmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JjZTsgfQorICAgIGNvbnN0IExheW91dFBvaW50JiBhYnNvbHV0ZUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVG91Y2goRnJhbWUqIGZyYW1lLCBFdmVudFRhcmdldCogdGFyZ2V0LCB1bnNpZ25lZCBpZGVu
dGlmaWVyLApAQCAtNzcsNiArNzksNyBAQCBwcml2YXRlOgogICAgIGludCBtX3JhZGl1c1k7CiAg
ICAgZmxvYXQgbV9yb3RhdGlvbkFuZ2xlOwogICAgIGZsb2F0IG1fZm9yY2U7CisgICAgTGF5b3V0
UG9pbnQgbV9hYnNvbHV0ZUxvY2F0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCmluZGV4IGJmZDYzNjBmYjg1ZjM3YmYwYmYyZWE4ZDk0
ZGRhMTlhMDFkODMxYTUuLmE1OGYxZGNjOWUyMzhlYmVhNDYyY2ZhNWI2NTk0NzZlMWI2MDM2YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKQEAgLTk0LDYgKzk0LDExIEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgVG91Y2hFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUb3VjaEV2ZW50OwogfQogCitib29sIFRvdWNoRXZl
bnQ6OmlzVG91Y2hFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaAppbmRleCAyOTdlMzQwZjQ2YjQzYmNhNzY1OTAxNTJiY2NlMTkxNTVl
NTc5ZGEzLi5iMmU1YjJlZTM0NmJkODAwNzUyZGIxOWQ2ZTgyODE0NTAzYzg0Yzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
VG91Y2hIb2xkKGJvb2wgdG91Y2hIb2xkKSB7IG1fdG91Y2hIb2xkID0gdG91Y2hIb2xkOyB9CiAg
ICAgYm9vbCBpc1RvdWNoSG9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hIb2xkOyB9CiAjZW5k
aWYKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAyOTJlYjliMjE2OWZm
MzI4ZmE3ODFkZGRlYjAwNzAyMWZiMWFjZDQ1Li5mMDU3NTYxMDA4YWJkMjEzNDcwZDdhNzVkZDdl
Mzg4OTc1MGE5OTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
QEAgLTY3LDYgKzY3LDEwIEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRvdWNoRXZlbnQu
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xMDI1LDYgKzEwMjksMTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZXZ0LT5pc1RvdWNoRXZlbnQoKSkgeworICAg
ICAgICBtX2lucHV0VHlwZS0+aGFuZGxlVG91Y2hFdmVudChzdGF0aWNfY2FzdDxUb3VjaEV2ZW50
Kj4oZXZ0KSk7CisgICAgICAgIGlmIChldnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoZXZ0LT5pc0tleWJvYXJkRXZlbnQo
KSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CiAgICAgICAg
IG1faW5wdXRUeXBlLT5oYW5kbGVLZXlkb3duRXZlbnQoc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVu
dCo+KGV2dCkpOwogICAgICAgICBpZiAoZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCmluZGV4IDhkMzgzZTI0ZjMxNjJjYjhmZTI5OTA1NjI3MmEwNTJkMjM0
YWMxOTguLmQ4NDE4OWJhNjJjNDFjNWI5ZWYzMTBlYmJlYjhjMTRjMTRjYTU3NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTQxNyw2ICs0MTcsMTIgQEAgdm9pZCBJbnB1dFR5cGU6
OmhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCopCiB7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQordm9pZCBJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCopCit7
Cit9CisjZW5kaWYKKwogdm9pZCBJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCopCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCBhY2QwYTdiZWM5MjhkOGIyYWUyODZhNmYxN2E1
YWYwY2JhOWZiYjIzLi4yYmM4ZjM1Njk2ZWU2NDM5ZDZjMGU5NDg1ZWY3ZDYyYWQ2MDI1YjlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTYxLDEyICs2MSwxNCBAQCBjbGFzcyBOb2RlOwog
Y2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHls
ZTsKK2NsYXNzIFRvdWNoRXZlbnQ7CiBjbGFzcyBXaGVlbEV2ZW50OwogCiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCiBzdHJ1Y3QgQ2xpY2tIYW5kbGluZ1N0YXRlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgCiBwdWJsaWM6CiAgICAgYm9vbCBjaGVja2VkOwogICAgIGJv
b2wgaW5kZXRlcm1pbmF0ZTsKQEAgLTE5MCw2ICsxOTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopOwogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCop
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKTsKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRv
dWNoRXZlbnQqKTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBmb3J3YXJkRXZlbnQoRXZlbnQq
KTsKICAgICAvLyBIZWxwZXJzIGZvciBldmVudCBoYW5kbGVycy4KICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmNwcAppbmRleCBmZDExY2JhYTc5NWM2MTg5YmJjYzEyYTQ4ZjliMjcxNWQ1MDEzYTdj
Li41YzhmYzA4MjNhNzJhZTZkZWUzNWFmM2YyYmU4YWMzNDJkMDdhYTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtNDksNiArNDksMTIgQEAKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRvdWNoLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVu
dC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEzNCw2ICsxNDAsMjUgQEAgdm9p
ZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCogZXZlbnQp
CiAgICAgdGh1bWItPmRyYWdGcm9tKGV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogfQogCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNo
RXZlbnQoVG91Y2hFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChlbGVt
ZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25seSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBUb3VjaExpc3QqIHRvdWNoZXMgPSBldmVudC0+dGFyZ2V0VG91Y2hlcygpOwor
ICAgIGlmICh0b3VjaGVzLT5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgIFRvdWNoKiB0b3VjaCA9
IHRvdWNoZXMtPml0ZW0oMCk7CisgICAgICAgIFNsaWRlclRodW1iRWxlbWVudCogdGh1bWIgPSBz
bGlkZXJUaHVtYkVsZW1lbnRPZihlbGVtZW50KCkpOworICAgICAgICB0aHVtYi0+c2V0UG9zaXRp
b25Gcm9tUG9pbnQodG91Y2gtPmFic29sdXRlTG9jYXRpb24oKSk7CisgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIFJhbmdlSW5wdXRU
eXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaWYg
KGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggZmY4ZjQwMjhmMjA3NTllODFlN2Q2NTNhNjM4
ZDkzMTI4NzdhMGI5Zi4uZDEyMjM3OTA5OGY4ZTA5NGVhYTUzYmY0MWQ1NTE1Y2FjYzczYTBiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTEsNiArNTEsOSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxp
bmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2
ZW50KikgT1ZFUlJJREU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KikgT1ZFUlJJREU7CisjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFk
b3dTdWJ0cmVlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5oCmluZGV4IGUyZDhiNjZlYmIxMWY0OWQxYzhiMDFiNGM4MWVlMWJi
MDUxMDllOWIuLjM2ZDY0MTg2ZjhjMWRhMjA0MjI1N2QxMThjYWUxZjIxMzgzNDRjNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC01
Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgSFRN
TElucHV0RWxlbWVudCogaG9zdElucHV0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQb3NpdGlvbkZy
b21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCiBwcml2YXRlOgogICAgIFNsaWRlclRodW1i
RWxlbWVudChEb2N1bWVudCopOwpAQCAtNjcsNyArNjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgTm9kZSogZm9jdXNEZWxlZ2F0ZSgpOwogICAgIHZvaWQgc3RhcnREcmFnZ2luZygpOwogICAg
IHZvaWQgc3RvcERyYWdnaW5nKCk7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbkZyb21Qb2ludChjb25z
dCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9vbCBtX2luRHJhZ01vZGU7CiB9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0
YjVmYzQyNmExOGE5NjRkNTA5ZjA4ZDdjYmE5Y2FkZTE2MjBlMDUuLmJlNDI4YTA3ZGFhYjNiOWYx
ZGRkMTczMmRmYzc5ZmNhNDMwODBiMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNi0x
MyAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElucHV0IGVs
ZW1lbnRzIHdpdGggdHlwZT1yYW5nZSBkbyBub3QgaGF2ZSBkZWZhdWx0IHRvdWNoIGhhbmRsZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MDcK
KworICAgICAgICBBZGQgYXV0b21hdGVkIHRlc3QgZm9yIG1hbmlwdWxhdGluZyBhbiBpbnB1dCBz
bGlkZXIgdmlhIHRvdWNoIGV2ZW50cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1z
bGlkZXIuanM6IEFkZGVkLgorICAgICAgICAob25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKG9uVG91
Y2hNb3ZlKToKKyAgICAgICAgKG9uVG91Y2hFbmQpOgorICAgICAgICAoY2hlY2tQb3NpdGlvbik6
CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA2LTE4ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBFdmVudCBkaXNwYXRjaGVyIHNob3VsZCB1c2UgSW5zZXJ0aW9uUG9pbnQ6Omhhc0Rp
c3RyaWJ1dGlvbiBpbnN0ZWFkIG9mIEluc2VydGluUG9pbnQ6OmlzQWN0aXZlIGluIHJlLXRhcmdl
dGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10
ZXN0cy90b3VjaC1zbGlkZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3Jp
cHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyYzFmZWI0MDZlN2NlMjBkYjFm
MDcyZGJiOWIwNDM2MmQ4NTlkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCkBAIC0wLDAgKzEsNzEg
QEAKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS53
aWR0aCA9ICIyMDAlIjsKK3ZhciBzbGlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1
dCIpOworc2xpZGVyLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYW5nZSIpOworc2xpZGVyLnN0eWxl
LndpZHRoID0gIjIwMHB4IjsKK3NsaWRlci5zdHlsZS5oZWlnaHQgPSAiMzBweCI7CisKK2RvY3Vt
ZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKSk7CitkaXYuYXBwZW5kQ2hpbGQoc2xpZGVyKTsKKworZnVuY3Rpb24gb25Ub3VjaFN0YXJ0
KCkgeworICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50b3VjaGVzWzBdLnRhcmdldC50
YWdOYW1lIiwgc2xpZGVyLnRhZ05hbWUpOworICAgY2hlY2tQb3NpdGlvbigpOworfQorCitmdW5j
dGlvbiBvblRvdWNoTW92ZSgpIHsKKyAgICBjaGVja1Bvc2l0aW9uKCk7Cit9CisKK2Z1bmN0aW9u
IG9uVG91Y2hFbmQoKSB7CisgICAgY2hlY2tQb3NpdGlvbigpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworfQorCit2
YXIgY2hlY2tQb3NpdGlvbiA9IChmdW5jdGlvbigpIHsKKworICB2YXIgbkNoZWNrID0gMDsKKwor
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbnMgPSBbNTAsIDUwLCAwLCAxMDAsIDUwXTsKKworICByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXIudmFsdWUi
LCBTdHJpbmcoZXhwZWN0ZWRQb3NpdGlvbnNbbkNoZWNrKytdKSk7CisgIH07CisKK30pKCk7CisK
K2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBvblRvdWNoU3RhcnQsIGZh
bHNlKTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIG9uVG91Y2hNb3Zl
LCBmYWxzZSk7Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIG9uVG91Y2hF
bmQsIGZhbHNlKTsKKworZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIHRvdWNoIGV2ZW50cyBv
cmlnaW5hdGluZyBvbiBhbiBpbnB1dCBlbGVtZW50IHdpdGggdHlwZT1yYW5nZSB1cGRhdGUgdGhl
IHNsaWRlciBwb3NpdGlvbi4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgIHZhciB4ID0gc2xpZGVyLm9mZnNldExlZnQ7CisgICAg
dmFyIHkgPSBzbGlkZXIub2Zmc2V0VG9wICsgc2xpZGVyLmNsaWVudEhlaWdodC8yOworICAgIHZh
ciB3ID0gc2xpZGVyLmNsaWVudFdpZHRoOworCisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBv
aW50cygpOworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoeCArIHcvMiwgeSk7CisgICAg
ZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQ
b2ludCgwLCB4LCB5KTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50
U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgeCArIHcsIHkpOworICAgIGV2ZW50U2VuZGVyLnRv
dWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCB4ICsgdy8y
LCB5KTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVyLnJl
bGVhc2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisKK30gZWxz
ZSB7CisgICAgZGVidWcoJ1RoaXMgdGVzdCByZXF1aXJlcyBEUlQuJyk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MzgyMDhiZmU3ZDZiMWFiYWJiYmNmZmYzMGU4ZjkwNTYyYTA1MjU2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xp
ZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUZXN0cyB0aGF0IHRoZSB0b3VjaCBl
dmVudHMgb3JpZ2luYXRpbmcgb24gYW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgdXBk
YXRlIHRoZSBzbGlkZXIgcG9zaXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CisKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSBpcyAiSU5QVVQiCitQQVNT
IHNsaWRlci52YWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlci52YWx1ZSBpcyAiNTAiCitQQVNTIHNs
aWRlci52YWx1ZSBpcyAiMCIKK1BBU1Mgc2xpZGVyLnZhbHVlIGlzICIxMDAiCitQQVNTIHNsaWRl
ci52YWx1ZSBpcyAiNTAiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91
Y2gtc2xpZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlk
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YzdkNTE2ZTlhZDUzNWY2NTc4N2NkMWMwN2FlN2MxMjNlNWNj
NjM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91
Y2gtc2xpZGVyLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPCEtLQorICBUb3VjaCB0
ZXN0cyB0aGF0IGludm9sdmUgdGhlIG9udG91Y2hzdGFydCwgb250b3VjaG1vdmUsIG9udG91Y2hl
bmQgb3Igb250b3VjaGNhbmNlbCBjYWxsYmFja3MKKyAgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYW4g
YXN5bmNocm9ub3VzIGZhc2hpb24gc28gdGhleSBjYW4gYmUgcnVuIG9uIG1vYmlsZSBwbGF0Zm9y
bXMgbGlrZSBBbmRyb2lkLgorICBZb3Ugd2lsbCBuZWVkIHRvIGludm9rZSBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpIGluIHlvdXIgdGVzdCBzY3JpcHQgd2hlbiB0aGUgdGVzdCBjb21wbGV0ZXMuCist
LT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148371</attachid>
            <date>2012-06-19 11:33:54 -0700</date>
            <delta_ts>2012-07-27 01:13:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120619143354.patch</filename>
            <type>text/plain</type>
            <size>17447</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRkYTNlNTcwYjc0NTkz
NzYyMzgyYjExODI0ODIxYTYzYjk2YWMyZC4uMTQ5OTZkMWEyNWVjMGU1N2UxY2M5NGEzNmJiZDkz
MDMyYzI0OWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTEzICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5o
dG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6
OmlzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnQu
aDoKKyAgICAgICAgKEV2ZW50KToKKyAgICAgICAgKiBkb20vVG91Y2guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VG91Y2g6OlRvdWNoKToKKyAgICAgICAgKiBkb20vVG91Y2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoOjphYnNvbHV0ZUxvY2F0aW9uKToKKyAgICAgICAgKFRvdWNoKToKKyAg
ICAgICAgKiBkb20vVG91Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50
Ojppc1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1RvdWNo
RXZlbnQuaDoKKyAgICAgICAgKFRvdWNoRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ2xpY2tIYW5kbGluZ1N0YXRlKToKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgIChSYW5nZUlucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgIChTbGlkZXJUaHVtYkVs
ZW1lbnQpOgorCiAyMDEyLTA2LTE4ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBFdmVudCBkaXNwYXRjaGVyIHNob3VsZCB1c2UgSW5zZXJ0aW9uUG9pbnQ6Omhh
c0Rpc3RyaWJ1dGlvbiBpbnN0ZWFkIG9mIEluc2VydGluUG9pbnQ6OmlzQWN0aXZlIGluIHJlLXRh
cmdldGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCmluZGV4IGM5YTQ1ZGM0OWVkODkzYzdkN2Y1ZDQyMGQ2
MDc5YjI2NDgwZWNjY2IuLjc2MTMxM2M1OTk5ZmM1NmE2OTI0ODJhOTU2YzhiMDQ0OGIzY2QyODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcApAQCAtMTI2LDYgKzEyNiwxMSBAQCBib29sIEV2ZW50Ojppc0tl
eWJvYXJkRXZlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFdmVudDo6
aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZl
bnQ6OmlzRHJhZ0V2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5o
CmluZGV4IDM2ZWQ5YTZkOTY3ZGVmZDFlODNlZTI1OWU5YzhiNzJlN2QwNmU1NTMuLmQyOThkOTBh
NzdhMTY1MGQyYThiNTYyYjUzZTUzOGZkZTM1NTQyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC0xMjAs
NiArMTIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNV
SUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRXZlbnQoKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50KCkgY29uc3Q7CiAKICAgICAgICAgLy8gRHJhZyBl
dmVudHMgYXJlIGEgc3Vic2V0IG9mIG1vdXNlIGV2ZW50cy4KICAgICAgICAgdmlydHVhbCBib29s
IGlzRHJhZ0V2ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcAppbmRleCBjZjcyMWRmOTA2MGZm
ZTRkODI3OGYwZTc5NDA2NDlmZjhiMTBlNWFmLi5hNmJkYTI1NjhmMjA0MjMxNDk3NTA0MmM5OGE1
YzMwMDcxMzI1YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIlRvdWNoLmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogCkBAIC02OCw2ICs2OSwxMCBAQCBUb3VjaDo6
VG91Y2goRnJhbWUqIGZyYW1lLCBFdmVudFRhcmdldCogdGFyZ2V0LCB1bnNpZ25lZCBpZGVudGlm
aWVyLCBpbnQgc2NyZWVuWAogICAgICwgbV9yb3RhdGlvbkFuZ2xlKHJvdGF0aW9uQW5nbGUpCiAg
ICAgLCBtX2ZvcmNlKGZvcmNlKQogeworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZnJhbWUtPnBh
Z2Vab29tRmFjdG9yKCkgKiBmcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpOworICAgIGZsb2F0IHgg
PSBwYWdlWCAqIHNjYWxlRmFjdG9yOworICAgIGZsb2F0IHkgPSBwYWdlWSAqIHNjYWxlRmFjdG9y
OworICAgIG1fYWJzb2x1dGVMb2NhdGlvbiA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50
KHgsIHkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RvdWNoLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaAppbmRleCBm
NGM5ZTgwNjFkOGM3M2FhMDIwMzNhYzQ0YzQ5MDRmZDI0MDMwOWY2Li4xZTgwMjUzZTZlOWNlZTVk
ZTczYjgxNGQwMDNmMDBlNjljMjE0MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VG91Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgor
I2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTU5
LDYgKzYwLDcgQEAgcHVibGljOgogICAgIGludCB3ZWJraXRSYWRpdXNZKCkgY29uc3QgeyByZXR1
cm4gbV9yYWRpdXNZOyB9CiAgICAgZmxvYXQgd2Via2l0Um90YXRpb25BbmdsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcm90YXRpb25BbmdsZTsgfQogICAgIGZsb2F0IHdlYmtpdEZvcmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JjZTsgfQorICAgIGNvbnN0IExheW91dFBvaW50JiBhYnNvbHV0ZUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVG91Y2goRnJhbWUqIGZyYW1lLCBFdmVudFRhcmdldCogdGFyZ2V0LCB1bnNpZ25lZCBpZGVu
dGlmaWVyLApAQCAtNzcsNiArNzksNyBAQCBwcml2YXRlOgogICAgIGludCBtX3JhZGl1c1k7CiAg
ICAgZmxvYXQgbV9yb3RhdGlvbkFuZ2xlOwogICAgIGZsb2F0IG1fZm9yY2U7CisgICAgTGF5b3V0
UG9pbnQgbV9hYnNvbHV0ZUxvY2F0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCmluZGV4IGJmZDYzNjBmYjg1ZjM3YmYwYmYyZWE4ZDk0
ZGRhMTlhMDFkODMxYTUuLmE1OGYxZGNjOWUyMzhlYmVhNDYyY2ZhNWI2NTk0NzZlMWI2MDM2YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKQEAgLTk0LDYgKzk0LDExIEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgVG91Y2hFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUb3VjaEV2ZW50OwogfQogCitib29sIFRvdWNoRXZl
bnQ6OmlzVG91Y2hFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaAppbmRleCAyOTdlMzQwZjQ2YjQzYmNhNzY1OTAxNTJiY2NlMTkxNTVl
NTc5ZGEzLi5iMmU1YjJlZTM0NmJkODAwNzUyZGIxOWQ2ZTgyODE0NTAzYzg0Yzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
VG91Y2hIb2xkKGJvb2wgdG91Y2hIb2xkKSB7IG1fdG91Y2hIb2xkID0gdG91Y2hIb2xkOyB9CiAg
ICAgYm9vbCBpc1RvdWNoSG9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hIb2xkOyB9CiAjZW5k
aWYKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAyOTJlYjliMjE2OWZm
MzI4ZmE3ODFkZGRlYjAwNzAyMWZiMWFjZDQ1Li5mMDU3NTYxMDA4YWJkMjEzNDcwZDdhNzVkZDdl
Mzg4OTc1MGE5OTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
QEAgLTY3LDYgKzY3LDEwIEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRvdWNoRXZlbnQu
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xMDI1LDYgKzEwMjksMTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZXZ0LT5pc1RvdWNoRXZlbnQoKSkgeworICAg
ICAgICBtX2lucHV0VHlwZS0+aGFuZGxlVG91Y2hFdmVudChzdGF0aWNfY2FzdDxUb3VjaEV2ZW50
Kj4oZXZ0KSk7CisgICAgICAgIGlmIChldnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoZXZ0LT5pc0tleWJvYXJkRXZlbnQo
KSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CiAgICAgICAg
IG1faW5wdXRUeXBlLT5oYW5kbGVLZXlkb3duRXZlbnQoc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVu
dCo+KGV2dCkpOwogICAgICAgICBpZiAoZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCmluZGV4IDhkMzgzZTI0ZjMxNjJjYjhmZTI5OTA1NjI3MmEwNTJkMjM0
YWMxOTguLmQ4NDE4OWJhNjJjNDFjNWI5ZWYzMTBlYmJlYjhjMTRjMTRjYTU3NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTQxNyw2ICs0MTcsMTIgQEAgdm9pZCBJbnB1dFR5cGU6
OmhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCopCiB7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQordm9pZCBJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCopCit7
Cit9CisjZW5kaWYKKwogdm9pZCBJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCopCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCBhY2QwYTdiZWM5MjhkOGIyYWUyODZhNmYxN2E1
YWYwY2JhOWZiYjIzLi4yYmM4ZjM1Njk2ZWU2NDM5ZDZjMGU5NDg1ZWY3ZDYyYWQ2MDI1YjlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTYxLDEyICs2MSwxNCBAQCBjbGFzcyBOb2RlOwog
Y2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHls
ZTsKK2NsYXNzIFRvdWNoRXZlbnQ7CiBjbGFzcyBXaGVlbEV2ZW50OwogCiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCiBzdHJ1Y3QgQ2xpY2tIYW5kbGluZ1N0YXRlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgCiBwdWJsaWM6CiAgICAgYm9vbCBjaGVja2VkOwogICAgIGJv
b2wgaW5kZXRlcm1pbmF0ZTsKQEAgLTE5MCw2ICsxOTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopOwogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCop
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKTsKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRv
dWNoRXZlbnQqKTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBmb3J3YXJkRXZlbnQoRXZlbnQq
KTsKICAgICAvLyBIZWxwZXJzIGZvciBldmVudCBoYW5kbGVycy4KICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmNwcAppbmRleCBmZDExY2JhYTc5NWM2MTg5YmJjYzEyYTQ4ZjliMjcxNWQ1MDEzYTdj
Li41YzhmYzA4MjNhNzJhZTZkZWUzNWFmM2YyYmU4YWMzNDJkMDdhYTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtNDksNiArNDksMTIgQEAKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRvdWNoLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVu
dC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEzNCw2ICsxNDAsMjUgQEAgdm9p
ZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCogZXZlbnQp
CiAgICAgdGh1bWItPmRyYWdGcm9tKGV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogfQogCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNo
RXZlbnQoVG91Y2hFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChlbGVt
ZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25seSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBUb3VjaExpc3QqIHRvdWNoZXMgPSBldmVudC0+dGFyZ2V0VG91Y2hlcygpOwor
ICAgIGlmICh0b3VjaGVzLT5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgIFRvdWNoKiB0b3VjaCA9
IHRvdWNoZXMtPml0ZW0oMCk7CisgICAgICAgIFNsaWRlclRodW1iRWxlbWVudCogdGh1bWIgPSBz
bGlkZXJUaHVtYkVsZW1lbnRPZihlbGVtZW50KCkpOworICAgICAgICB0aHVtYi0+c2V0UG9zaXRp
b25Gcm9tUG9pbnQodG91Y2gtPmFic29sdXRlTG9jYXRpb24oKSk7CisgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIFJhbmdlSW5wdXRU
eXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaWYg
KGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggZmY4ZjQwMjhmMjA3NTllODFlN2Q2NTNhNjM4
ZDkzMTI4NzdhMGI5Zi4uZDEyMjM3OTA5OGY4ZTA5NGVhYTUzYmY0MWQ1NTE1Y2FjYzczYTBiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTEsNiArNTEsOSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxp
bmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2
ZW50KikgT1ZFUlJJREU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KikgT1ZFUlJJREU7CisjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFk
b3dTdWJ0cmVlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5oCmluZGV4IGUyZDhiNjZlYmIxMWY0OWQxYzhiMDFiNGM4MWVlMWJi
MDUxMDllOWIuLjM2ZDY0MTg2ZjhjMWRhMjA0MjI1N2QxMThjYWUxZjIxMzgzNDRjNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC01
Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgSFRN
TElucHV0RWxlbWVudCogaG9zdElucHV0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQb3NpdGlvbkZy
b21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCiBwcml2YXRlOgogICAgIFNsaWRlclRodW1i
RWxlbWVudChEb2N1bWVudCopOwpAQCAtNjcsNyArNjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgTm9kZSogZm9jdXNEZWxlZ2F0ZSgpOwogICAgIHZvaWQgc3RhcnREcmFnZ2luZygpOwogICAg
IHZvaWQgc3RvcERyYWdnaW5nKCk7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbkZyb21Qb2ludChjb25z
dCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9vbCBtX2luRHJhZ01vZGU7CiB9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0
YjVmYzQyNmExOGE5NjRkNTA5ZjA4ZDdjYmE5Y2FkZTE2MjBlMDUuLmJlNDI4YTA3ZGFhYjNiOWYx
ZGRkMTczMmRmYzc5ZmNhNDMwODBiMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNi0x
MyAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElucHV0IGVs
ZW1lbnRzIHdpdGggdHlwZT1yYW5nZSBkbyBub3QgaGF2ZSBkZWZhdWx0IHRvdWNoIGhhbmRsZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MDcK
KworICAgICAgICBBZGQgYXV0b21hdGVkIHRlc3QgZm9yIG1hbmlwdWxhdGluZyBhbiBpbnB1dCBz
bGlkZXIgdmlhIHRvdWNoIGV2ZW50cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1z
bGlkZXIuanM6IEFkZGVkLgorICAgICAgICAob25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKG9uVG91
Y2hNb3ZlKToKKyAgICAgICAgKG9uVG91Y2hFbmQpOgorICAgICAgICAoY2hlY2tQb3NpdGlvbik6
CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA2LTE4ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBFdmVudCBkaXNwYXRjaGVyIHNob3VsZCB1c2UgSW5zZXJ0aW9uUG9pbnQ6Omhhc0Rp
c3RyaWJ1dGlvbiBpbnN0ZWFkIG9mIEluc2VydGluUG9pbnQ6OmlzQWN0aXZlIGluIHJlLXRhcmdl
dGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10
ZXN0cy90b3VjaC1zbGlkZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3Jp
cHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NWNhOWU0MzAwMDI2M2FlYTky
MzYzMzZjZjIxZDA5MTJjZWI1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCkBAIC0wLDAgKzEsMTIw
IEBACit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYuc3R5bGUu
d2lkdGggPSAiMjAwJSI7Cit2YXIgc2xpZGVyMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7CitzbGlkZXIxLmlkID0gInNsaWRlcjEiOworc2xpZGVyMS5zZXRBdHRyaWJ1dGUoInR5
cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjEuc3R5bGUud2lkdGggPSAiMjAwcHgiOworc2xpZGVyMS5z
dHlsZS5oZWlnaHQgPSAiMzBweCI7Cit2YXIgc2xpZGVyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlucHV0Iik7CitzbGlkZXIyLmlkID0gInNsaWRlcjIiOworc2xpZGVyMi5zZXRBdHRyaWJ1
dGUoInR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjIuc3R5bGUud2lkdGggPSAiMzBweCI7CitzbGlk
ZXIyLnN0eWxlLmhlaWdodCA9ICIyMDBweCI7CitzbGlkZXIyLnN0eWxlLnNldFByb3BlcnR5KCIt
d2Via2l0LWFwcGVhcmFuY2UiLCAic2xpZGVyLXZlcnRpY2FsIik7Cit2YXIgc2xpZGVyMyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CitzbGlkZXIzLmlkID0gInNsaWRlcjMiOwor
c2xpZGVyMy5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjMuc3R5bGUud2lk
dGggPSAiMjAwcHgiOworc2xpZGVyMy5zdHlsZS5oZWlnaHQgPSAiMzBweCI7CitzbGlkZXIzLnN0
eWxlLnNldFByb3BlcnR5KCItd2Via2l0LXRyYW5zZm9ybSIsICJyb3RhdGUoLTkwZGVnKSIpOwor
c2xpZGVyMy5zdHlsZS5zZXRQcm9wZXJ0eSgibWFyZ2luIiwgIjEyMHB4IDAiKTsKKworZG9jdW1l
bnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpKTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIxKTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIy
KTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIzKTsKKwordmFyIG9uVG91Y2hTdGFydCA9IChmdW5j
dGlvbigpIHsKKworICAgIHZhciBzbGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVyM107
CisgICAgdmFyIG5DaGVjayA9IDA7CisKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQiLCBzbGlk
ZXJbbkNoZWNrKytdLmlkKTsKKyAgICAgICAgY2hlY2tQb3NpdGlvbigpOworICAgIH0KKworfSko
KTsKKworZnVuY3Rpb24gb25Ub3VjaE1vdmUoKSB7CisgICAgY2hlY2tQb3NpdGlvbigpOworfQor
CitmdW5jdGlvbiBvblRvdWNoRW5kKCkgeworICAgIGNoZWNrUG9zaXRpb24oKTsKK30KKworZnVu
Y3Rpb24gb25LZXlEb3duKCkgeworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgc2xpZGVyVmFsdWUgPSAw
OworCit2YXIgY2hlY2tQb3NpdGlvbiA9IChmdW5jdGlvbigpIHsKKworICAgIHZhciBuQ2hlY2sg
PSAwOworICAgIHZhciBzbGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVyM107CisgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb25zID0gWzUwLCA1MCwgMCwgMTAwLCA1MF07CisgICAgdmFyIHNs
aWRlckluZGV4ID0gMDsKKworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc2xpZGVy
VmFsdWUgPSBzbGlkZXJbc2xpZGVySW5kZXhdLnZhbHVlOworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNsaWRlclZhbHVlIiwgU3RyaW5nKGV4cGVjdGVkUG9zaXRpb25zW25DaGVjaysr
XSkpOworICAgICAgICBpZiAobkNoZWNrICUgZXhwZWN0ZWRQb3NpdGlvbnMubGVuZ3RoID09IDAp
IHsKKyAgICAgICAgICAgIHNsaWRlckluZGV4Kys7CisgICAgICAgICAgICBuQ2hlY2sgPSAwOwor
ICAgICAgICB9CisgICAgfTsKKworfSkoKTsKKworZnVuY3Rpb24gcnVuVGVzdChzbGlkZXIsIHJv
dGF0ZWQpIHsKKworICAgIHZhciB3ID0gc2xpZGVyLmNsaWVudFdpZHRoOworICAgIHZhciBoID0g
c2xpZGVyLmNsaWVudEhlaWdodDsKKyAgICB2YXIgeCA9IHNsaWRlci5vZmZzZXRMZWZ0ICsgdy8y
OworICAgIHZhciB5ID0gc2xpZGVyLm9mZnNldFRvcCArIGgvMjsKKworICAgIGlmIChyb3RhdGVk
KSB7CisgICAgICB3ID0gc2xpZGVyLmNsaWVudEhlaWdodDsKKyAgICAgIGggPSBzbGlkZXIuY2xp
ZW50V2lkdGg7CisgICAgfQorCisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygpOwor
ICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoeCwgeSk7CisgICAgZXZlbnRTZW5kZXIudG91
Y2hTdGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCB4IC0gdy8y
LCB5ICsgaC8yKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2Vu
ZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgeCArIHcvMiwgeSAtIGgvMik7CisgICAgZXZlbnRTZW5k
ZXIudG91Y2hNb3ZlKCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHgs
IHkpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVs
ZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKK30KKworZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIG9uVG91Y2hTdGFydCwgZmFsc2Up
OworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgb25Ub3VjaE1vdmUsIGZh
bHNlKTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgb25Ub3VjaEVuZCwg
ZmFsc2UpOworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIG9uS2V5RG93biwg
ZmFsc2UpOworCitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZlbnRzIG9yaWdp
bmF0aW5nIG9uIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0ZSB0aGUgc2xp
ZGVyIHBvc2l0aW9uLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgcnVuVGVzdChzbGlkZXIxLCBmYWxzZSk7CisgICAgcnVuVGVz
dChzbGlkZXIyLCBmYWxzZSk7CisgICAgcnVuVGVzdChzbGlkZXIzLCB0cnVlKTsKKworICAgIGV2
ZW50U2VuZGVyLmtleURvd24oJyAnKTsKK30gZWxzZSB7CisgICAgZGVidWcoJ1RoaXMgdGVzdCBy
ZXF1aXJlcyBEUlQuJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzQ2ZWY0MDQxZmM1
MDM5ZDE1N2NhMGQxNzRlMjZlOTg3NjliOGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI4IEBACitUZXN0cyB0aGF0IHRoZSB0b3VjaCBldmVudHMgb3JpZ2luYXRpbmcgb24gYW4gaW5w
dXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgdXBkYXRlIHRoZSBzbGlkZXIgcG9zaXRpb24uCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50
YXJnZXQuaWQgaXMgInNsaWRlcjEiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xp
ZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiMCIKK1BBU1Mgc2xpZGVyVmFs
dWUgaXMgIjEwMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBldmVudC50b3VjaGVz
WzBdLnRhcmdldC5pZCBpcyAic2xpZGVyMiIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFT
UyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIwIgorUEFTUyBzbGlk
ZXJWYWx1ZSBpcyAiMTAwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIGV2ZW50LnRv
dWNoZXNbMF0udGFyZ2V0LmlkIGlzICJzbGlkZXIzIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAi
CitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjAiCitQQVNT
IHNsaWRlclZhbHVlIGlzICIxMDAiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjN2Q1
MTZlOWFkNTM1ZjY1Nzg3Y2QxYzA3YWU3YzEyM2U1Y2M2MzgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbApAQCAtMCwwICsx
LDE2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8IS0tCisgIFRvdWNoIHRlc3RzIHRoYXQgaW52b2x2ZSB0aGUgb250
b3VjaHN0YXJ0LCBvbnRvdWNobW92ZSwgb250b3VjaGVuZCBvciBvbnRvdWNoY2FuY2VsIGNhbGxi
YWNrcworICBzaG91bGQgYmUgd3JpdHRlbiBpbiBhbiBhc3luY2hyb25vdXMgZmFzaGlvbiBzbyB0
aGV5IGNhbiBiZSBydW4gb24gbW9iaWxlIHBsYXRmb3JtcyBsaWtlIEFuZHJvaWQuCisgIFlvdSB3
aWxsIG5lZWQgdG8gaW52b2tlIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCkgaW4geW91ciB0ZXN0IHNj
cmlwdCB3aGVuIHRoZSB0ZXN0IGNvbXBsZXRlcy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149538</attachid>
            <date>2012-06-26 08:47:57 -0700</date>
            <delta_ts>2012-07-27 01:13:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120626114756.patch</filename>
            <type>text/plain</type>
            <size>17387</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTBhZjA5YTc2MGZj
OWI3YzNlNTZmYzA0NGUzMTBkZmU5YWEzZC4uYWJiMWNjY2FhNDdjNjgwOGViY2RmMjk1MWJjN2Ew
N2IwOTAxMTJjOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTEzICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5o
dG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6
OmlzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnQu
aDoKKyAgICAgICAgKEV2ZW50KToKKyAgICAgICAgKiBkb20vVG91Y2guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VG91Y2g6OlRvdWNoKToKKyAgICAgICAgKiBkb20vVG91Y2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoOjphYnNvbHV0ZUxvY2F0aW9uKToKKyAgICAgICAgKFRvdWNoKToKKyAg
ICAgICAgKiBkb20vVG91Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50
Ojppc1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1RvdWNo
RXZlbnQuaDoKKyAgICAgICAgKFRvdWNoRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ2xpY2tIYW5kbGluZ1N0YXRlKToKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgIChSYW5nZUlucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgIChTbGlkZXJUaHVtYkVs
ZW1lbnQpOgorCiAyMDEyLTA2LTI2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIFtUZXhtYXBdIEJ1ZyBmaXggdHlwbyBhYm91dCBjb21wdXRpbmcg
Ynl0ZXNQZXJMaW5lIGluIEJpdG1hcFRleHR1cmVHTC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCmluZGV4IGM5
YTQ1ZGM0OWVkODkzYzdkN2Y1ZDQyMGQ2MDc5YjI2NDgwZWNjY2IuLjc2MTMxM2M1OTk5ZmM1NmE2
OTI0ODJhOTU2YzhiMDQ0OGIzY2QyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcApAQCAtMTI2LDYgKzEy
NiwxMSBAQCBib29sIEV2ZW50Ojppc0tleWJvYXJkRXZlbnQoKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorYm9vbCBFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6OmlzRHJhZ0V2ZW50KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCmluZGV4IDM2ZWQ5YTZkOTY3ZGVmZDFlODNlZTI1OWU5
YzhiNzJlN2QwNmU1NTMuLmQyOThkOTBhNzdhMTY1MGQyYThiNTYyYjUzZTUzOGZkZTM1NTQyMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5oCkBAIC0xMjAsNiArMTIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNVSUV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc01vdXNlRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9h
cmRFdmVudCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50KCkgY29u
c3Q7CiAKICAgICAgICAgLy8gRHJhZyBldmVudHMgYXJlIGEgc3Vic2V0IG9mIG1vdXNlIGV2ZW50
cy4KICAgICAgICAgdmlydHVhbCBib29sIGlzRHJhZ0V2ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNo
LmNwcAppbmRleCBjZjcyMWRmOTA2MGZmZTRkODI3OGYwZTc5NDA2NDlmZjhiMTBlNWFmLi5hNmJk
YTI1NjhmMjA0MjMxNDk3NTA0MmM5OGE1YzMwMDcxMzI1YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlRvdWNoLmgiCiAKKyNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogCkBA
IC02OCw2ICs2OSwxMCBAQCBUb3VjaDo6VG91Y2goRnJhbWUqIGZyYW1lLCBFdmVudFRhcmdldCog
dGFyZ2V0LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBpbnQgc2NyZWVuWAogICAgICwgbV9yb3RhdGlv
bkFuZ2xlKHJvdGF0aW9uQW5nbGUpCiAgICAgLCBtX2ZvcmNlKGZvcmNlKQogeworICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgKiBmcmFtZS0+ZnJhbWVTY2Fs
ZUZhY3RvcigpOworICAgIGZsb2F0IHggPSBwYWdlWCAqIHNjYWxlRmFjdG9yOworICAgIGZsb2F0
IHkgPSBwYWdlWSAqIHNjYWxlRmFjdG9yOworICAgIG1fYWJzb2x1dGVMb2NhdGlvbiA9IHJvdW5k
ZWRMYXlvdXRQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2guaAppbmRleCBmNGM5ZTgwNjFkOGM3M2FhMDIwMzNhYzQ0YzQ5MDRmZDI0
MDMwOWY2Li4xZTgwMjUzZTZlOWNlZTVkZTczYjgxNGQwMDNmMDBlNjljMjE0MzZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VG91Y2guaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTU5LDYgKzYwLDcgQEAgcHVibGljOgogICAgIGludCB3ZWJr
aXRSYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNZOyB9CiAgICAgZmxvYXQgd2Via2l0
Um90YXRpb25BbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRpb25BbmdsZTsgfQogICAgIGZs
b2F0IHdlYmtpdEZvcmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZTsgfQorICAgIGNvbnN0IExh
eW91dFBvaW50JiBhYnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxv
Y2F0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgVG91Y2goRnJhbWUqIGZyYW1lLCBFdmVudFRhcmdl
dCogdGFyZ2V0LCB1bnNpZ25lZCBpZGVudGlmaWVyLApAQCAtNzcsNiArNzksNyBAQCBwcml2YXRl
OgogICAgIGludCBtX3JhZGl1c1k7CiAgICAgZmxvYXQgbV9yb3RhdGlvbkFuZ2xlOwogICAgIGZs
b2F0IG1fZm9yY2U7CisgICAgTGF5b3V0UG9pbnQgbV9hYnNvbHV0ZUxvY2F0aW9uOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCmluZGV4IGJm
ZDYzNjBmYjg1ZjM3YmYwYmYyZWE4ZDk0ZGRhMTlhMDFkODMxYTUuLmE1OGYxZGNjOWUyMzhlYmVh
NDYyY2ZhNWI2NTk0NzZlMWI2MDM2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
b3VjaEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKQEAg
LTk0LDYgKzk0LDExIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVG91Y2hFdmVudDo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUb3VjaEV2
ZW50OwogfQogCitib29sIFRvdWNoRXZlbnQ6OmlzVG91Y2hFdmVudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAppbmRleCAyOTdlMzQwZjQ2
YjQzYmNhNzY1OTAxNTJiY2NlMTkxNTVlNTc5ZGEzLi5iMmU1YjJlZTM0NmJkODAwNzUyZGIxOWQ2
ZTgyODE0NTAzYzg0Yzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKQEAgLTY5LDYgKzY5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0VG91Y2hIb2xkKGJvb2wgdG91Y2hIb2xkKSB7IG1fdG91
Y2hIb2xkID0gdG91Y2hIb2xkOyB9CiAgICAgYm9vbCBpc1RvdWNoSG9sZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdG91Y2hIb2xkOyB9CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50
KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCA2ZmNkMTU4ZjAzMWM2M2IyNmYzNTQ1ZmZjYzlhYWNkNzQ4YjJhYzViLi43NTcw
ZmNhODcwMTUwNmE0MjE1MmU0ZTQxNjk4ZmEyMmQ3MzE2OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTY3LDYgKzY3LDEwIEBACiAjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDM2LDYgKzEwNDAsMTQgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZXZ0
LT5pc1RvdWNoRXZlbnQoKSkgeworICAgICAgICBtX2lucHV0VHlwZS0+aGFuZGxlVG91Y2hFdmVu
dChzdGF0aWNfY2FzdDxUb3VjaEV2ZW50Kj4oZXZ0KSk7CisgICAgICAgIGlmIChldnQtPmRlZmF1
bHRIYW5kbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBp
ZiAoZXZ0LT5pc0tleWJvYXJkRXZlbnQoKSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50KSB7CiAgICAgICAgIG1faW5wdXRUeXBlLT5oYW5kbGVLZXlkb3duRXZlbnQo
c3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2dCkpOwogICAgICAgICBpZiAoZXZ0LT5kZWZh
dWx0SGFuZGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDMwNjAyYTAwOTVl
NjJlODA4NDlkNGU0MjJjMmM3ODMwYTEwNGMzNjkuLjlkODBhYTBlNzBkNGIzMzI1YWZiNjYwZThi
NDdmZWY0ZjVjNzFiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTQxNyw2ICs0
MTcsMTIgQEAgdm9pZCBJbnB1dFR5cGU6OmhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCopCiB7
CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBJbnB1dFR5cGU6OmhhbmRsZVRv
dWNoRXZlbnQoVG91Y2hFdmVudCopCit7Cit9CisjZW5kaWYKKwogdm9pZCBJbnB1dFR5cGU6OmZv
cndhcmRFdmVudChFdmVudCopCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA0NTEz
MDNkMTNjNDI0MGZlYzc1YWQwZWYwMDk3MzIzZDBlMzEzZGI5Li41ZjJmYWZhMjkzMWE5NTI2ZGQ1
MTc1Mzk3NDJmMGY2OGQ2OWJkYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTYxLDEy
ICs2MSwxNCBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFRvdWNoRXZlbnQ7CiBjbGFzcyBXaGVl
bEV2ZW50OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBzdHJ1Y3QgQ2xpY2tIYW5k
bGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgCiBwdWJsaWM6CiAg
ICAgYm9vbCBjaGVja2VkOwogICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsKQEAgLTE5MCw2ICsxOTIs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRF
dmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2
ZW50KFdoZWVsRXZlbnQqKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqKTsKKyNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCBmb3J3YXJkRXZlbnQoRXZlbnQqKTsKICAgICAvLyBIZWxwZXJzIGZvciBldmVudCBoYW5k
bGVycy4KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCBmZDExY2JhYTc5NWM2MTg5
YmJjYzEyYTQ4ZjliMjcxNWQ1MDEzYTdjLi42NWRhZTFlYzkzYjcwMDIyOGQ3ZjUzYTg5OTI0MTA0
NTZjMGY0NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtNDks
NiArNDksMTIgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRvdWNo
LmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
QEAgLTEzNCw2ICsxNDAsMjcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3du
RXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAgICAgdGh1bWItPmRyYWdGcm9tKGV2ZW50LT5hYnNv
bHV0ZUxvY2F0aW9uKCkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgUmFu
Z2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCogZXZlbnQpCit7CisgICAg
aWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3Vj
aGVuZEV2ZW50KSB7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgVG91Y2hMaXN0KiB0b3VjaGVzID0gZXZlbnQtPnRhcmdl
dFRvdWNoZXMoKTsKKyAgICBpZiAodG91Y2hlcy0+bGVuZ3RoKCkgPT0gMSkgeworICAgICAgICBU
b3VjaCogdG91Y2ggPSB0b3VjaGVzLT5pdGVtKDApOworICAgICAgICBTbGlkZXJUaHVtYkVsZW1l
bnQqIHRodW1iID0gc2xpZGVyVGh1bWJFbGVtZW50T2YoZWxlbWVudCgpKTsKKyAgICAgICAgdGh1
bWItPnNldFBvc2l0aW9uRnJvbVBvaW50KHRvdWNoLT5hYnNvbHV0ZUxvY2F0aW9uKCkpOworICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9p
ZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogewogICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25s
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IGZmOGY0MDI4ZjIwNzU5
ZTgxZTdkNjUzYTYzOGQ5MzEyODc3YTBiOWYuLmQxMjIzNzkwOThmOGUwOTRlYWE1M2JmNDFkNTUx
NWNhY2M3M2EwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTUxLDYg
KzUxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2Uo
QW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGVw
cGFibGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3du
RXZlbnQoTW91c2VFdmVudCopIE9WRVJSSURFOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCopIE9WRVJSSURFOwor
I2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAppbmRleCBlMmQ4YjY2ZWJiMTFmNDlkMWM4
YjAxYjRjODFlZTFiYjA1MTA5ZTliLi4zNmQ2NDE4NmY4YzFkYTIwNDIyNTdkMTE4Y2FlMWYyMTM4
MzQ0YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aCgpOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0OwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGhvc3RJbnB1dCgpIGNvbnN0OworICAgIHZvaWQg
c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogcHJpdmF0ZToKICAg
ICBTbGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQqKTsKQEAgLTY3LDcgKzY4LDYgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIE5vZGUqIGZvY3VzRGVsZWdhdGUoKTsKICAgICB2b2lkIHN0YXJ0RHJh
Z2dpbmcoKTsKICAgICB2b2lkIHN0b3BEcmFnZ2luZygpOwotICAgIHZvaWQgc2V0UG9zaXRpb25G
cm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIGJvb2wgbV9pbkRyYWdNb2RlOwog
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBhMzFkOWNlZmQ4ZjBhOWM3OGJjMDg4NjIyNmI5OGNjYmE2M2RiM2I2Li40M2Zi
MTlmNmNiYmNlMjVjNzQxNzU4ZmNhN2U2OThkOWJiM2VjZDYxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTItMDYtMTMgIEtldmluIEVsbGlzICA8a2V2ZXJzQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbnB1dCBlbGVtZW50cyB3aXRoIHR5cGU9cmFuZ2UgZG8gbm90IGhhdmUgZGVmYXVsdCB0
b3VjaCBoYW5kbGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4ODA3CisKKyAgICAgICAgQWRkIGF1dG9tYXRlZCB0ZXN0IGZvciBtYW5pcHVsYXRp
bmcgYW4gaW5wdXQgc2xpZGVyIHZpYSB0b3VjaCBldmVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQt
dGVzdHMvdG91Y2gtc2xpZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKG9uVG91Y2hTdGFydCk6Cisg
ICAgICAgIChvblRvdWNoTW92ZSk6CisgICAgICAgIChvblRvdWNoRW5kKToKKyAgICAgICAgKGNo
ZWNrUG9zaXRpb24pOgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNs
aWRlci5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0yNiAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29n
bGUuY29tPgogCiAgICAgICAgIEZpeCBidWcgd2hlcmUgYW5pbWF0aW9ucyBmYWlsZWQgdG8gc3Rh
cnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0
cy90b3VjaC1zbGlkZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQt
dGVzdHMvdG91Y2gtc2xpZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NWNhOWU0MzAwMDI2M2FlYTkyMzYz
MzZjZjIxZDA5MTJjZWI1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCkBAIC0wLDAgKzEsMTIwIEBA
Cit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYuc3R5bGUud2lk
dGggPSAiMjAwJSI7Cit2YXIgc2xpZGVyMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0
Iik7CitzbGlkZXIxLmlkID0gInNsaWRlcjEiOworc2xpZGVyMS5zZXRBdHRyaWJ1dGUoInR5cGUi
LCAicmFuZ2UiKTsKK3NsaWRlcjEuc3R5bGUud2lkdGggPSAiMjAwcHgiOworc2xpZGVyMS5zdHls
ZS5oZWlnaHQgPSAiMzBweCI7Cit2YXIgc2xpZGVyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7CitzbGlkZXIyLmlkID0gInNsaWRlcjIiOworc2xpZGVyMi5zZXRBdHRyaWJ1dGUo
InR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjIuc3R5bGUud2lkdGggPSAiMzBweCI7CitzbGlkZXIy
LnN0eWxlLmhlaWdodCA9ICIyMDBweCI7CitzbGlkZXIyLnN0eWxlLnNldFByb3BlcnR5KCItd2Vi
a2l0LWFwcGVhcmFuY2UiLCAic2xpZGVyLXZlcnRpY2FsIik7Cit2YXIgc2xpZGVyMyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CitzbGlkZXIzLmlkID0gInNsaWRlcjMiOworc2xp
ZGVyMy5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjMuc3R5bGUud2lkdGgg
PSAiMjAwcHgiOworc2xpZGVyMy5zdHlsZS5oZWlnaHQgPSAiMzBweCI7CitzbGlkZXIzLnN0eWxl
LnNldFByb3BlcnR5KCItd2Via2l0LXRyYW5zZm9ybSIsICJyb3RhdGUoLTkwZGVnKSIpOworc2xp
ZGVyMy5zdHlsZS5zZXRQcm9wZXJ0eSgibWFyZ2luIiwgIjEyMHB4IDAiKTsKKworZG9jdW1lbnQu
Ym9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
KTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIxKTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIyKTsK
K2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIzKTsKKwordmFyIG9uVG91Y2hTdGFydCA9IChmdW5jdGlv
bigpIHsKKworICAgIHZhciBzbGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVyM107Cisg
ICAgdmFyIG5DaGVjayA9IDA7CisKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQiLCBzbGlkZXJb
bkNoZWNrKytdLmlkKTsKKyAgICAgICAgY2hlY2tQb3NpdGlvbigpOworICAgIH0KKworfSkoKTsK
KworZnVuY3Rpb24gb25Ub3VjaE1vdmUoKSB7CisgICAgY2hlY2tQb3NpdGlvbigpOworfQorCitm
dW5jdGlvbiBvblRvdWNoRW5kKCkgeworICAgIGNoZWNrUG9zaXRpb24oKTsKK30KKworZnVuY3Rp
b24gb25LZXlEb3duKCkgeworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgc2xpZGVyVmFsdWUgPSAwOwor
Cit2YXIgY2hlY2tQb3NpdGlvbiA9IChmdW5jdGlvbigpIHsKKworICAgIHZhciBuQ2hlY2sgPSAw
OworICAgIHZhciBzbGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVyM107CisgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb25zID0gWzUwLCA1MCwgMCwgMTAwLCA1MF07CisgICAgdmFyIHNsaWRl
ckluZGV4ID0gMDsKKworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc2xpZGVyVmFs
dWUgPSBzbGlkZXJbc2xpZGVySW5kZXhdLnZhbHVlOworICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInNsaWRlclZhbHVlIiwgU3RyaW5nKGV4cGVjdGVkUG9zaXRpb25zW25DaGVjaysrXSkp
OworICAgICAgICBpZiAobkNoZWNrICUgZXhwZWN0ZWRQb3NpdGlvbnMubGVuZ3RoID09IDApIHsK
KyAgICAgICAgICAgIHNsaWRlckluZGV4Kys7CisgICAgICAgICAgICBuQ2hlY2sgPSAwOworICAg
ICAgICB9CisgICAgfTsKKworfSkoKTsKKworZnVuY3Rpb24gcnVuVGVzdChzbGlkZXIsIHJvdGF0
ZWQpIHsKKworICAgIHZhciB3ID0gc2xpZGVyLmNsaWVudFdpZHRoOworICAgIHZhciBoID0gc2xp
ZGVyLmNsaWVudEhlaWdodDsKKyAgICB2YXIgeCA9IHNsaWRlci5vZmZzZXRMZWZ0ICsgdy8yOwor
ICAgIHZhciB5ID0gc2xpZGVyLm9mZnNldFRvcCArIGgvMjsKKworICAgIGlmIChyb3RhdGVkKSB7
CisgICAgICB3ID0gc2xpZGVyLmNsaWVudEhlaWdodDsKKyAgICAgIGggPSBzbGlkZXIuY2xpZW50
V2lkdGg7CisgICAgfQorCisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygpOworICAg
IGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoeCwgeSk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hT
dGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCB4IC0gdy8yLCB5
ICsgaC8yKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVy
LnVwZGF0ZVRvdWNoUG9pbnQoMCwgeCArIHcvMiwgeSAtIGgvMik7CisgICAgZXZlbnRTZW5kZXIu
dG91Y2hNb3ZlKCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHgsIHkp
OworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFz
ZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKK30KKworZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIG9uVG91Y2hTdGFydCwgZmFsc2UpOwor
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgb25Ub3VjaE1vdmUsIGZhbHNl
KTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgb25Ub3VjaEVuZCwgZmFs
c2UpOworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIG9uS2V5RG93biwgZmFs
c2UpOworCitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZlbnRzIG9yaWdpbmF0
aW5nIG9uIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0ZSB0aGUgc2xpZGVy
IHBvc2l0aW9uLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgcnVuVGVzdChzbGlkZXIxLCBmYWxzZSk7CisgICAgcnVuVGVzdChz
bGlkZXIyLCBmYWxzZSk7CisgICAgcnVuVGVzdChzbGlkZXIzLCB0cnVlKTsKKworICAgIGV2ZW50
U2VuZGVyLmtleURvd24oJyAnKTsKK30gZWxzZSB7CisgICAgZGVidWcoJ1RoaXMgdGVzdCByZXF1
aXJlcyBEUlQuJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzQ2ZWY0MDQxZmM1MDM5
ZDE1N2NhMGQxNzRlMjZlOTg3NjliOGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4
IEBACitUZXN0cyB0aGF0IHRoZSB0b3VjaCBldmVudHMgb3JpZ2luYXRpbmcgb24gYW4gaW5wdXQg
ZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgdXBkYXRlIHRoZSBzbGlkZXIgcG9zaXRpb24uCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJn
ZXQuaWQgaXMgInNsaWRlcjEiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVy
VmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiMCIKK1BBU1Mgc2xpZGVyVmFsdWUg
aXMgIjEwMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBldmVudC50b3VjaGVzWzBd
LnRhcmdldC5pZCBpcyAic2xpZGVyMiIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBz
bGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIwIgorUEFTUyBzbGlkZXJW
YWx1ZSBpcyAiMTAwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIGV2ZW50LnRvdWNo
ZXNbMF0udGFyZ2V0LmlkIGlzICJzbGlkZXIzIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQ
QVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjAiCitQQVNTIHNs
aWRlclZhbHVlIGlzICIxMDAiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjN2Q1MTZl
OWFkNTM1ZjY1Nzg3Y2QxYzA3YWU3YzEyM2U1Y2M2MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbApAQCAtMCwwICsxLDE2
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8IS0tCisgIFRvdWNoIHRlc3RzIHRoYXQgaW52b2x2ZSB0aGUgb250b3Vj
aHN0YXJ0LCBvbnRvdWNobW92ZSwgb250b3VjaGVuZCBvciBvbnRvdWNoY2FuY2VsIGNhbGxiYWNr
cworICBzaG91bGQgYmUgd3JpdHRlbiBpbiBhbiBhc3luY2hyb25vdXMgZmFzaGlvbiBzbyB0aGV5
IGNhbiBiZSBydW4gb24gbW9iaWxlIHBsYXRmb3JtcyBsaWtlIEFuZHJvaWQuCisgIFlvdSB3aWxs
IG5lZWQgdG8gaW52b2tlIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCkgaW4geW91ciB0ZXN0IHNjcmlw
dCB3aGVuIHRoZSB0ZXN0IGNvbXBsZXRlcy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150168</attachid>
            <date>2012-06-29 06:52:01 -0700</date>
            <delta_ts>2012-06-29 07:27:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120629095201.patch</filename>
            <type>text/plain</type>
            <size>24231</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZkNTk3MTRjZjY5Nzkw
YWFiYjc5ZDUwZGJiM2Q0NGUyYTc2ZGJmNS4uMzIwN2RiZWZjZmI3ZmI2NGJjYmU0NDdkOWMxNzAw
MjFiYjA4ZTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTI5ICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIt
bm8tanMtdG91Y2gtbGlzdGVuZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtc2xpZGVyLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudDo6aXNUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoRXZlbnQpOgorICAgICAgICAqIGRvbS9Ub3Vj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6VG91Y2gpOgorICAgICAgICAqIGRvbS9U
b3VjaC5oOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2g6OmFic29sdXRlTG9jYXRpb24pOgorICAg
ICAgICAoVG91Y2gpOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoRXZlbnQ6OmlzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vVG91Y2hFdmVudC5oOgorICAgICAgICAoVG91Y2hFdmVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpo
YW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aGFzVG91Y2hF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENsaWNrSGFuZGxpbmdTdGF0ZSk6CisgICAgICAgIChJbnB1dFR5cGUp
OgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFzVG91Y2hFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuaDoKKyAgICAgICAgKFJhbmdlSW5wdXRUeXBl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAg
KFNsaWRlclRodW1iRWxlbWVudCk6CisKIDIwMTItMDYtMjkgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIDx0ZXh0YXJlYT4gdW5uZWNlc3NhcmlseSBzYXZlcyB0
aGUgdmFsdWUgaW4gc29tZSBjYXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5kZXggYzlhNDVkYzQ5ZWQ4
OTNjN2Q3ZjVkNDIwZDYwNzliMjY0ODBlY2NjYi4uNzYxMzEzYzU5OTlmYzU2YTY5MjQ4MmE5NTZj
OGIwNDQ4YjNjZDI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0xMjYsNiArMTI2LDExIEBAIGJv
b2wgRXZlbnQ6OmlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIEV2ZW50Ojppc1RvdWNoRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCBFdmVudDo6aXNEcmFnRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmgKaW5kZXggMzZlZDlhNmQ5NjdkZWZkMWU4M2VlMjU5ZTljOGI3MmU3ZDA2
ZTU1My4uZDI5OGQ5MGE3N2ExNjUwZDJhOGI1NjJiNTNlNTM4ZmRlMzU1NDIzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1VJRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzTW91
c2VFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQoKSBjb25zdDsKIAogICAg
ICAgICAvLyBEcmFnIGV2ZW50cyBhcmUgYSBzdWJzZXQgb2YgbW91c2UgZXZlbnRzLgogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNEcmFnRXZlbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwCmluZGV4
IGNmNzIxZGY5MDYwZmZlNGQ4Mjc4ZjBlNzk0MDY0OWZmOGIxMGU1YWYuLmE2YmRhMjU2OGYyMDQy
MzE0OTc1MDQyYzk4YTVjMzAwNzEzMjVjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiVG91Y2guaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAKQEAgLTY4LDYgKzY5
LDEwIEBAIFRvdWNoOjpUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIHVu
c2lnbmVkIGlkZW50aWZpZXIsIGludCBzY3JlZW5YCiAgICAgLCBtX3JvdGF0aW9uQW5nbGUocm90
YXRpb25BbmdsZSkKICAgICAsIG1fZm9yY2UoZm9yY2UpCiB7CisgICAgZmxvYXQgc2NhbGVGYWN0
b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7
CisgICAgZmxvYXQgeCA9IHBhZ2VYICogc2NhbGVGYWN0b3I7CisgICAgZmxvYXQgeSA9IHBhZ2VZ
ICogc2NhbGVGYWN0b3I7CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcm91bmRlZExheW91dFBv
aW50KEZsb2F0UG9pbnQoeCwgeSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
b3VjaC5oCmluZGV4IGY0YzllODA2MWQ4YzczYWEwMjAzM2FjNDRjNDkwNGZkMjQwMzA5ZjYuLjFl
ODAyNTNlNmU5Y2VlNWRlNzNiODE0ZDAwM2YwMGU2OWMyMTQzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdlYmtpdFJhZGl1c1ko
KSBjb25zdCB7IHJldHVybiBtX3JhZGl1c1k7IH0KICAgICBmbG9hdCB3ZWJraXRSb3RhdGlvbkFu
Z2xlKCkgY29uc3QgeyByZXR1cm4gbV9yb3RhdGlvbkFuZ2xlOyB9CiAgICAgZmxvYXQgd2Via2l0
Rm9yY2UoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlOyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQm
IGFic29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0K
IAogcHJpdmF0ZToKICAgICBUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQs
IHVuc2lnbmVkIGlkZW50aWZpZXIsCkBAIC03Nyw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgaW50
IG1fcmFkaXVzWTsKICAgICBmbG9hdCBtX3JvdGF0aW9uQW5nbGU7CiAgICAgZmxvYXQgbV9mb3Jj
ZTsKKyAgICBMYXlvdXRQb2ludCBtX2Fic29sdXRlTG9jYXRpb247CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5kZXggYmZkNjM2MGZiODVm
MzdiZjBiZjJlYThkOTRkZGExOWEwMWQ4MzFhNS4uYTU4ZjFkY2M5ZTIzOGViZWE0NjJjZmE1YjY1
OTQ3NmUxYjYwMzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApAQCAtOTQsNiArOTQs
MTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUb3VjaEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRvdWNoRXZlbnQ7CiB9CiAK
K2Jvb2wgVG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNI
X0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCmluZGV4IDI5N2UzNDBmNDZiNDNiY2E3NjU5
MDE1MmJjY2UxOTE1NWU1NzlkYTMuLmIyZTViMmVlMzQ2YmQ4MDA3NTJkYjE5ZDZlODI4MTQ1MDNj
ODRjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRUb3VjaEhvbGQoYm9vbCB0b3VjaEhvbGQpIHsgbV90b3VjaEhvbGQgPSB0
b3VjaEhvbGQ7IH0KICAgICBib29sIGlzVG91Y2hIb2xkKCkgY29uc3QgeyByZXR1cm4gbV90b3Vj
aEhvbGQ7IH0KICNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQoKSBjb25zdCBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IGU3NzMyODQwN2UxNjNiMWMwMDAzZWQ1MjEwNDQ4OWY1M2NkYjNjMTguLmUxMzczZDc1ZjVjZjY4
NjJiZmY5NzJmMjUyZWYwYzU2M2Q5YjJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcApAQCAtNjcsNiArNjcsMTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVk
ZSAiVG91Y2hFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTk4LDYgKzEwMiw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJ
bnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
CiAgICAgLCBtX3ZhbHVlQXR0cmlidXRlV2FzVXBkYXRlZEFmdGVyUGFyc2luZyhmYWxzZSkKICAg
ICAsIG1fd2FzTW9kaWZpZWRCeVVzZXIoZmFsc2UpCiAgICAgLCBtX2NhblJlY2VpdmVEcm9wcGVk
RmlsZXMoZmFsc2UpCisgICAgLCBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKGZhbHNlKQogICAgICwg
bV9pbnB1dFR5cGUoSW5wdXRUeXBlOjpjcmVhdGVUZXh0KHRoaXMpKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGlucHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlzaW5kZXhUYWcpKTsKQEAgLTEzMCw2
ICsxMzUsMTAgQEAgSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQogICAgIC8v
IFdlIHNob3VsZCB1bnJlZ2lzdGVyIGl0IHRvIGF2b2lkIGFjY2Vzc2luZyBhIGRlbGV0ZWQgb2Jq
ZWN0LgogICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCiAgICAgICAgIGRvY3VtZW50KCktPmZvcm1D
b250cm9sbGVyKCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7Cisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAobV9oYXNUb3VjaEV2ZW50SGFuZGxlcikK
KyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKTsKKyNlbmRp
ZgogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6Om5hbWUoKSBjb25z
dApAQCAtNDAxLDYgKzQxMCwxOCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUo
KQogICAgIG1faW5wdXRUeXBlID0gbmV3VHlwZS5yZWxlYXNlKCk7CiAgICAgbV9pbnB1dFR5cGUt
PmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
Ym9vbCBoYXNUb3VjaEV2ZW50SGFuZGxlciA9IG1faW5wdXRUeXBlLT5oYXNUb3VjaEV2ZW50SGFu
ZGxlcigpOworICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlciAhPSBtX2hhc1RvdWNoRXZlbnRI
YW5kbGVyKSB7CisgICAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIpIHsKKyAgICAgICAgZG9j
dW1lbnQoKS0+ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
YWRkTGlzdGVuZXJUeXBlKERvY3VtZW50OjpUT1VDSF9MSVNURU5FUik7CisgICAgICB9IGVsc2UK
KyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICAg
IG1faGFzVG91Y2hFdmVudEhhbmRsZXIgPSBoYXNUb3VjaEV2ZW50SGFuZGxlcjsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKIAogICAgIGJvb2wgd2ls
bFN0b3JlVmFsdWUgPSBtX2lucHV0VHlwZS0+c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1
dGUoKTsKQEAgLTEwMzgsNiArMTA1OSwxNCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChldnQtPmlzVG91Y2hFdmVudCgpKSB7
CisgICAgICAgIG1faW5wdXRUeXBlLT5oYW5kbGVUb3VjaEV2ZW50KHN0YXRpY19jYXN0PFRvdWNo
RXZlbnQqPihldnQpKTsKKyAgICAgICAgaWYgKGV2dC0+ZGVmYXVsdEhhbmRsZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChldnQtPmlzS2V5Ym9hcmRF
dmVudCgpICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKICAg
ICAgICAgbV9pbnB1dFR5cGUtPmhhbmRsZUtleWRvd25FdmVudChzdGF0aWNfY2FzdDxLZXlib2Fy
ZEV2ZW50Kj4oZXZ0KSk7CiAgICAgICAgIGlmIChldnQtPmRlZmF1bHRIYW5kbGVkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDFlYzVlZjBkNWNlZDVlNzY5NDVk
MzkxNGM5ODJiMWU2MjM2YTc5MDIuLmUxMDgyNWNkNjE5NTc2ZGIyZjQzMjI5NmVkMWJlOWNlYmU0
OGQ3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zOTAsNiAr
MzkwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmFsdWVBdHRyaWJ1dGVXYXNVcGRhdGVkQWZ0
ZXJQYXJzaW5nIDogMTsKICAgICBib29sIG1fd2FzTW9kaWZpZWRCeVVzZXIgOiAxOwogICAgIGJv
b2wgbV9jYW5SZWNlaXZlRHJvcHBlZEZpbGVzIDogMTsKKyAgICBib29sIG1faGFzVG91Y2hFdmVu
dEhhbmRsZXI6IDE7CiAgICAgT3duUHRyPElucHV0VHlwZT4gbV9pbnB1dFR5cGU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMzA2MDJhMDA5NWU2MmU4MDg0OWQ0ZTQyMmMy
Yzc4MzBhMTA0YzM2OS4uMmZlNzBhZDI5OGI5YzBmY2Q2ZGQzMzRkOTc2MGNjMTIzNzNiMWFhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNDE3LDYgKzQxNywxMiBAQCB2b2lkIElu
cHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikKIHsKIH0KIAorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCit2b2lkIElucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2
ZW50KikKK3sKK30KKyNlbmRpZgorCiB2b2lkIElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50
KikKIHsKIH0KQEAgLTg3Myw2ICs4NzksMTEgQEAgdm9pZCBJbnB1dFR5cGU6OnN1YnRyZWVIYXND
aGFuZ2VkKCkKIHsKIH0KIAorYm9vbCBJbnB1dFR5cGU6Omhhc1RvdWNoRXZlbnRIYW5kbGVyKCkK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBJbnB1dFR5cGU6OmRlZmF1bHRUb29s
VGlwKCkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aAppbmRleCA0NTEzMDNkMTNjNDI0MGZlYzc1YWQwZWYwMDk3MzIzZDBlMzEzZGI5Li41ODlkNzRj
YWEwYjZmNTQ0ODJlZDgzNDdjMGJiYzhlOGZiZWRiYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmgKQEAgLTYxLDEyICs2MSwxNCBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyQXJlbmE7CiBj
bGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFRvdWNoRXZlbnQ7
CiBjbGFzcyBXaGVlbEV2ZW50OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBzdHJ1
Y3QgQ2xpY2tIYW5kbGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
CiBwdWJsaWM6CiAgICAgYm9vbCBjaGVja2VkOwogICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsKQEAg
LTE5MCw2ICsxOTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleXVwRXZl
bnQoS2V5Ym9hcmRFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCZWZvcmVUZXh0SW5z
ZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqKTsKKyNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCBmb3J3YXJkRXZlbnQoRXZlbnQqKTsKICAgICAvLyBIZWxwZXJzIGZv
ciBldmVudCBoYW5kbGVycy4KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VibWl0SW1wbGljaXRs
eShFdmVudCopOwpAQCAtMjAyLDYgKzIwNyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQmVTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCk7CiAgICAgdmlydHVhbCB2b2lkIHN1YnRyZWVI
YXNDaGFuZ2VkKCk7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVG91Y2hFdmVudEhhbmRsZXIoKTsKKyNlbmRpZgogCiAgICAgLy8gU2hhZG93IHRyZWUgaGFu
ZGxpbmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCBmZDExY2Jh
YTc5NWM2MTg5YmJjYzEyYTQ4ZjliMjcxNWQ1MDEzYTdjLi5mNDA3YzQ4ZGNlZTRhYTE5ZWUzOWZk
MTdiODk0ZjU4MjlhYjk4YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jhbmdl
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNw
cApAQCAtNDksNiArNDksMTIgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1
ZGUgIlRvdWNoLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoTGlz
dC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKQEAgLTEzNCw2ICsxNDAsMzIgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxl
TW91c2VEb3duRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAgICAgdGh1bWItPmRyYWdGcm9tKGV2
ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
K3ZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCogZXZlbnQp
Cit7CisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS50b3VjaGVuZEV2ZW50KSB7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVG91Y2hMaXN0KiB0b3VjaGVzID0gZXZl
bnQtPnRhcmdldFRvdWNoZXMoKTsKKyAgICBpZiAodG91Y2hlcy0+bGVuZ3RoKCkgPT0gMSkgewor
ICAgICAgICBUb3VjaCogdG91Y2ggPSB0b3VjaGVzLT5pdGVtKDApOworICAgICAgICBTbGlkZXJU
aHVtYkVsZW1lbnQqIHRodW1iID0gc2xpZGVyVGh1bWJFbGVtZW50T2YoZWxlbWVudCgpKTsKKyAg
ICAgICAgdGh1bWItPnNldFBvc2l0aW9uRnJvbVBvaW50KHRvdWNoLT5hYnNvbHV0ZUxvY2F0aW9u
KCkpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9Cit9CisKK2Jv
b2wgUmFuZ2VJbnB1dFR5cGU6Omhhc1RvdWNoRXZlbnRIYW5kbGVyKCkKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZl
bnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQo
KSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmgKaW5kZXggZmY4ZjQwMjhmMjA3NTllODFlN2Q2NTNhNjM4ZDkzMTI4NzdhMGI5Zi4uMTQ1NTk3
ZDcwYTE4NTU4N2YyMzQ1ODkzZDBkZmRmNTdlMGVkYTUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuaApAQCAtNTEsNiArNTEsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0
ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCopIE9WRVJSSURFOworI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVRvdWNoRXZlbnQo
VG91Y2hFdmVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNUb3VjaEV2ZW50SGFu
ZGxlcigpIE9WRVJSSURFOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25F
dmVudChLZXlib2FyZEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIE9WRVJSSURFOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAppbmRleCBl
MmQ4YjY2ZWJiMTFmNDlkMWM4YjAxYjRjODFlZTFiYjA1MTA5ZTliLi4zNmQ2NDE4NmY4YzFkYTIw
NDIyNTdkMTE4Y2FlMWYyMTM4MzQ0YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGhvc3RJbnB1dCgp
IGNvbnN0OworICAgIHZvaWQgc2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
KTsKIAogcHJpdmF0ZToKICAgICBTbGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQqKTsKQEAgLTY3
LDcgKzY4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGUqIGZvY3VzRGVsZWdhdGUoKTsK
ICAgICB2b2lkIHN0YXJ0RHJhZ2dpbmcoKTsKICAgICB2b2lkIHN0b3BEcmFnZ2luZygpOwotICAg
IHZvaWQgc2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIGJv
b2wgbV9pbkRyYWdNb2RlOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NTI5YTk2YWZiOWZjMzMwMzAwZjUyOTUxNmI4
NjdhYWJlM2M2ZWI1Li42NTU5ZjcxMTQ0MDI2Y2VlNjhhNDY1YjA0YTA5NjIwMWFhNWVhZDEzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDYtMjkgIEtldmluIEVsbGlzICA8a2V2ZXJzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJbnB1dCBlbGVtZW50cyB3aXRoIHR5cGU9cmFuZ2UgZG8g
bm90IGhhdmUgZGVmYXVsdCB0b3VjaCBoYW5kbGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODA3CisKKyAgICAgICAgQWRkIGF1dG9tYXRlZCB0
ZXN0IGZvciBtYW5pcHVsYXRpbmcgYW4gaW5wdXQgc2xpZGVyIHZpYSB0b3VjaAorICAgICAgICBl
dmVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNo
LWxpc3RlbmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGNoZWNrUG9zaXRpb24pOgorICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanM6IEFkZGVkLgor
ICAgICAgICAob25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKG9uVG91Y2hFbmQpOgorICAgICAgICAo
b25LZXlEb3duKToKKyAgICAgICAgKGNoZWNrUG9zaXRpb24pOgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3RvdWNoL3RvdWNoLXNsaWRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1u
by1qcy10b3VjaC1saXN0ZW5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90
b3VjaC90b3VjaC1zbGlkZXIuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMjkgIEtlbnQgVGFtdXJh
ICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIDx0ZXh0YXJlYT4gdW5uZWNlc3Nhcmls
eSBzYXZlcyB0aGUgdmFsdWUgaW4gc29tZSBjYXNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1s
aXN0ZW5lci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90
b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM0Y2NhOWZm
ZDFmMTE4MGZiZWNlYjVkNzhhNmRlNzk0Yjk2NzU2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXItbm8tanMt
dG91Y2gtbGlzdGVuZXIuanMKQEAgLTAsMCArMSw1OSBAQAordmFyIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworZGl2LnN0eWxlLndpZHRoID0gIjIwMCUiOwordmFyIHNsaWRl
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CitzbGlkZXIuc2V0QXR0cmlidXRl
KCJ0eXBlIiwgInJhbmdlIik7CitzbGlkZXIuc3R5bGUud2lkdGggPSAiMjAwcHgiOworc2xpZGVy
LnN0eWxlLmhlaWdodCA9ICIzMHB4IjsKKworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2
LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpKTsKK2Rpdi5hcHBlbmRDaGlsZChz
bGlkZXIpOworCisKK3ZhciBjaGVja1Bvc2l0aW9uID0gKGZ1bmN0aW9uKCkgeworCisgIHZhciBu
Q2hlY2sgPSAwOworCisgIHZhciBleHBlY3RlZFBvc2l0aW9ucyA9IFs1MCwgMF07CisKKyAgcmV0
dXJuIGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2xpZGVyLnZhbHVl
IiwgU3RyaW5nKGV4cGVjdGVkUG9zaXRpb25zW25DaGVjaysrXSkpOworICB9OworCit9KSgpOwor
CitmdW5jdGlvbiBvbktleURvd24oKSB7CisgICAgY2hlY2tQb3NpdGlvbigpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgp
OworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTsK
KworZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3VyZSB0aGF0IHRvdWNoIGV2ZW50cyBhcmUgZGVs
aXZlcmVkIHRvIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIGV2ZW4gd2hlbiB0aGVy
ZSBhcmUgbm8gdG91Y2ggZXZlbnQgaGFuZGxlcnMgaW4gSmF2YXNjcmlwdC4iKTsKKworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHZhciB4
ID0gc2xpZGVyLm9mZnNldExlZnQ7CisgICAgdmFyIHkgPSBzbGlkZXIub2Zmc2V0VG9wICsgc2xp
ZGVyLmNsaWVudEhlaWdodC8yOworICAgIHZhciB3ID0gc2xpZGVyLmNsaWVudFdpZHRoOworCisg
ICAgY2hlY2tQb3NpdGlvbigpOworCisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygp
OworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoeCArIHcvMiwgeSk7CisgICAgZXZlbnRT
ZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgw
LCB4LCB5KTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVy
LnJlbGVhc2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisKKyAg
ICBldmVudFNlbmRlci5rZXlEb3duKCcgJyk7CisKK30gZWxzZSB7CisgICAgZGVidWcoJ1RoaXMg
dGVzdCByZXF1aXJlcyBEUlQuJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXNsaWRlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NTVjYTllNDMwMDAyNjNhZWE5MjM2MzM2Y2YyMWQwOTEyY2ViNWU3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXNsaWRl
ci5qcwpAQCAtMCwwICsxLDEyMCBAQAordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworZGl2LnN0eWxlLndpZHRoID0gIjIwMCUiOwordmFyIHNsaWRlcjEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworc2xpZGVyMS5pZCA9ICJzbGlkZXIxIjsKK3NsaWRl
cjEuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhbmdlIik7CitzbGlkZXIxLnN0eWxlLndpZHRoID0g
IjIwMHB4IjsKK3NsaWRlcjEuc3R5bGUuaGVpZ2h0ID0gIjMwcHgiOwordmFyIHNsaWRlcjIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworc2xpZGVyMi5pZCA9ICJzbGlkZXIyIjsK
K3NsaWRlcjIuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhbmdlIik7CitzbGlkZXIyLnN0eWxlLndp
ZHRoID0gIjMwcHgiOworc2xpZGVyMi5zdHlsZS5oZWlnaHQgPSAiMjAwcHgiOworc2xpZGVyMi5z
dHlsZS5zZXRQcm9wZXJ0eSgiLXdlYmtpdC1hcHBlYXJhbmNlIiwgInNsaWRlci12ZXJ0aWNhbCIp
OwordmFyIHNsaWRlcjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworc2xpZGVy
My5pZCA9ICJzbGlkZXIzIjsKK3NsaWRlcjMuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhbmdlIik7
CitzbGlkZXIzLnN0eWxlLndpZHRoID0gIjIwMHB4IjsKK3NsaWRlcjMuc3R5bGUuaGVpZ2h0ID0g
IjMwcHgiOworc2xpZGVyMy5zdHlsZS5zZXRQcm9wZXJ0eSgiLXdlYmtpdC10cmFuc2Zvcm0iLCAi
cm90YXRlKC05MGRlZykiKTsKK3NsaWRlcjMuc3R5bGUuc2V0UHJvcGVydHkoIm1hcmdpbiIsICIx
MjBweCAwIik7CisKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKSk7CitkaXYuYXBwZW5kQ2hpbGQoc2xpZGVyMSk7CitkaXYu
YXBwZW5kQ2hpbGQoc2xpZGVyMik7CitkaXYuYXBwZW5kQ2hpbGQoc2xpZGVyMyk7CisKK3ZhciBv
blRvdWNoU3RhcnQgPSAoZnVuY3Rpb24oKSB7CisKKyAgICB2YXIgc2xpZGVyID0gW3NsaWRlcjEs
IHNsaWRlcjIsIHNsaWRlcjNdOworICAgIHZhciBuQ2hlY2sgPSAwOworCisgICAgcmV0dXJuIGZ1
bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRvdWNoZXNb
MF0udGFyZ2V0LmlkIiwgc2xpZGVyW25DaGVjaysrXS5pZCk7CisgICAgICAgIGNoZWNrUG9zaXRp
b24oKTsKKyAgICB9CisKK30pKCk7CisKK2Z1bmN0aW9uIG9uVG91Y2hNb3ZlKCkgeworICAgIGNo
ZWNrUG9zaXRpb24oKTsKK30KKworZnVuY3Rpb24gb25Ub3VjaEVuZCgpIHsKKyAgICBjaGVja1Bv
c2l0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9uS2V5RG93bigpIHsKKyAgICBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
dmFyIHNsaWRlclZhbHVlID0gMDsKKwordmFyIGNoZWNrUG9zaXRpb24gPSAoZnVuY3Rpb24oKSB7
CisKKyAgICB2YXIgbkNoZWNrID0gMDsKKyAgICB2YXIgc2xpZGVyID0gW3NsaWRlcjEsIHNsaWRl
cjIsIHNsaWRlcjNdOworICAgIHZhciBleHBlY3RlZFBvc2l0aW9ucyA9IFs1MCwgNTAsIDAsIDEw
MCwgNTBdOworICAgIHZhciBzbGlkZXJJbmRleCA9IDA7CisKKyAgICByZXR1cm4gZnVuY3Rpb24o
KSB7CisgICAgICAgIHNsaWRlclZhbHVlID0gc2xpZGVyW3NsaWRlckluZGV4XS52YWx1ZTsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXJWYWx1ZSIsIFN0cmluZyhleHBlY3Rl
ZFBvc2l0aW9uc1tuQ2hlY2srK10pKTsKKyAgICAgICAgaWYgKG5DaGVjayAlIGV4cGVjdGVkUG9z
aXRpb25zLmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICBzbGlkZXJJbmRleCsrOworICAgICAg
ICAgICAgbkNoZWNrID0gMDsKKyAgICAgICAgfQorICAgIH07CisKK30pKCk7CisKK2Z1bmN0aW9u
IHJ1blRlc3Qoc2xpZGVyLCByb3RhdGVkKSB7CisKKyAgICB2YXIgdyA9IHNsaWRlci5jbGllbnRX
aWR0aDsKKyAgICB2YXIgaCA9IHNsaWRlci5jbGllbnRIZWlnaHQ7CisgICAgdmFyIHggPSBzbGlk
ZXIub2Zmc2V0TGVmdCArIHcvMjsKKyAgICB2YXIgeSA9IHNsaWRlci5vZmZzZXRUb3AgKyBoLzI7
CisKKyAgICBpZiAocm90YXRlZCkgeworICAgICAgdyA9IHNsaWRlci5jbGllbnRIZWlnaHQ7Cisg
ICAgICBoID0gc2xpZGVyLmNsaWVudFdpZHRoOworICAgIH0KKworICAgIGV2ZW50U2VuZGVyLmNs
ZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KHgsIHkpOwor
ICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRv
dWNoUG9pbnQoMCwgeCAtIHcvMiwgeSArIGgvMik7CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3Zl
KCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHggKyB3LzIsIHkgLSBo
LzIpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIudXBk
YXRlVG91Y2hQb2ludCgwLCB4LCB5KTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKwor
ICAgIGV2ZW50U2VuZGVyLnJlbGVhc2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRv
dWNoRW5kKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBv
blRvdWNoU3RhcnQsIGZhbHNlKTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92
ZSIsIG9uVG91Y2hNb3ZlLCBmYWxzZSk7Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3Vj
aGVuZCIsIG9uVG91Y2hFbmQsIGZhbHNlKTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtl
eWRvd24iLCBvbktleURvd24sIGZhbHNlKTsKKworZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhl
IHRvdWNoIGV2ZW50cyBvcmlnaW5hdGluZyBvbiBhbiBpbnB1dCBlbGVtZW50IHdpdGggdHlwZT1y
YW5nZSB1cGRhdGUgdGhlIHNsaWRlciBwb3NpdGlvbi4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHJ1blRlc3Qoc2xpZGVyMSwg
ZmFsc2UpOworICAgIHJ1blRlc3Qoc2xpZGVyMiwgZmFsc2UpOworICAgIHJ1blRlc3Qoc2xpZGVy
MywgdHJ1ZSk7CisKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCcgJyk7Cit9IGVsc2UgeworICAg
IGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRFJULicpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjc0NmVmNDA0MWZjNTAzOWQxNTdjYTBkMTc0ZTI2ZTk4NzY5YjhjOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZlbnRzIG9y
aWdpbmF0aW5nIG9uIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0ZSB0aGUg
c2xpZGVyIHBvc2l0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNT
IGV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJzbGlkZXIxIgorUEFTUyBzbGlkZXJWYWx1
ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMg
IjAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIxMDAiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIK
K1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQgaXMgInNsaWRlcjIiCitQQVNTIHNsaWRl
clZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1
ZSBpcyAiMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjEwMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMg
IjUwIgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAic2xpZGVyMyIKK1BBU1Mg
c2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRl
clZhbHVlIGlzICIwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiMTAwIgorUEFTUyBzbGlkZXJWYWx1
ZSBpcyAiNTAiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xp
ZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWViZDI3NTgzMzY1Y2EwMzdjMjAxYjZjMDBmNmM2MDVkZWU5ZDA4Mgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNs
aWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
VGVzdHMgdG8gZW5zdXJlIHRoYXQgdG91Y2ggZXZlbnRzIGFyZSBkZWxpdmVyZWQgdG8gYW4gaW5w
dXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgZXZlbiB3aGVuIHRoZXJlIGFyZSBubyB0b3VjaCBl
dmVudCBoYW5kbGVycyBpbiBKYXZhc2NyaXB0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworCitQQVNTIHNsaWRlci52YWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlci52YWx1ZSBpcyAi
MCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8t
anMtdG91Y2gtbGlzdGVuZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Rv
dWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NWI4NjZh
ODYyNjVjZjA2OGEyMjExYmY3YTRiZWJiNThiMmRjNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVu
ZXIuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8IS0tCisgIFRvdWNoIHRlc3RzIHRo
YXQgaW52b2x2ZSB0aGUgb250b3VjaHN0YXJ0LCBvbnRvdWNobW92ZSwgb250b3VjaGVuZCBvciBv
bnRvdWNoY2FuY2VsIGNhbGxiYWNrcworICBzaG91bGQgYmUgd3JpdHRlbiBpbiBhbiBhc3luY2hy
b25vdXMgZmFzaGlvbiBzbyB0aGV5IGNhbiBiZSBydW4gb24gbW9iaWxlIHBsYXRmb3JtcyBsaWtl
IEFuZHJvaWQuCisgIFlvdSB3aWxsIG5lZWQgdG8gaW52b2tlIGlzU3VjY2Vzc2Z1bGx5UGFyc2Vk
KCkgaW4geW91ciB0ZXN0IHNjcmlwdCB3aGVuIHRoZSB0ZXN0IGNvbXBsZXRlcy4KKy0tPgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXItbm8tanMtdG91
Y2gtbGlzdGVuZXIuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yzdk
NTE2ZTlhZDUzNWY2NTc4N2NkMWMwN2FlN2MxMjNlNWNjNjM4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWwKQEAgLTAsMCAr
MSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPCEtLQorICBUb3VjaCB0ZXN0cyB0aGF0IGludm9sdmUgdGhlIG9u
dG91Y2hzdGFydCwgb250b3VjaG1vdmUsIG9udG91Y2hlbmQgb3Igb250b3VjaGNhbmNlbCBjYWxs
YmFja3MKKyAgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYW4gYXN5bmNocm9ub3VzIGZhc2hpb24gc28g
dGhleSBjYW4gYmUgcnVuIG9uIG1vYmlsZSBwbGF0Zm9ybXMgbGlrZSBBbmRyb2lkLgorICBZb3Ug
d2lsbCBuZWVkIHRvIGludm9rZSBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpIGluIHlvdXIgdGVzdCBz
Y3JpcHQgd2hlbiB0aGUgdGVzdCBjb21wbGV0ZXMuCistLT4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150172</attachid>
            <date>2012-06-29 07:27:54 -0700</date>
            <delta_ts>2012-07-27 01:14:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120629102753.patch</filename>
            <type>text/plain</type>
            <size>24265</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZkNTk3MTRjZjY5Nzkw
YWFiYjc5ZDUwZGJiM2Q0NGUyYTc2ZGJmNS4uMzIwN2RiZWZjZmI3ZmI2NGJjYmU0NDdkOWMxNzAw
MjFiYjA4ZTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTI5ICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIt
bm8tanMtdG91Y2gtbGlzdGVuZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtc2xpZGVyLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudDo6aXNUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoRXZlbnQpOgorICAgICAgICAqIGRvbS9Ub3Vj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6VG91Y2gpOgorICAgICAgICAqIGRvbS9U
b3VjaC5oOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2g6OmFic29sdXRlTG9jYXRpb24pOgorICAg
ICAgICAoVG91Y2gpOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoRXZlbnQ6OmlzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vVG91Y2hFdmVudC5oOgorICAgICAgICAoVG91Y2hFdmVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpo
YW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aGFzVG91Y2hF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENsaWNrSGFuZGxpbmdTdGF0ZSk6CisgICAgICAgIChJbnB1dFR5cGUp
OgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFzVG91Y2hFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuaDoKKyAgICAgICAgKFJhbmdlSW5wdXRUeXBl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAg
KFNsaWRlclRodW1iRWxlbWVudCk6CisKIDIwMTItMDYtMjkgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIDx0ZXh0YXJlYT4gdW5uZWNlc3NhcmlseSBzYXZlcyB0
aGUgdmFsdWUgaW4gc29tZSBjYXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5kZXggYzlhNDVkYzQ5ZWQ4
OTNjN2Q3ZjVkNDIwZDYwNzliMjY0ODBlY2NjYi4uNzYxMzEzYzU5OTlmYzU2YTY5MjQ4MmE5NTZj
OGIwNDQ4YjNjZDI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0xMjYsNiArMTI2LDExIEBAIGJv
b2wgRXZlbnQ6OmlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIEV2ZW50Ojppc1RvdWNoRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCBFdmVudDo6aXNEcmFnRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmgKaW5kZXggMzZlZDlhNmQ5NjdkZWZkMWU4M2VlMjU5ZTljOGI3MmU3ZDA2
ZTU1My4uZDI5OGQ5MGE3N2ExNjUwZDJhOGI1NjJiNTNlNTM4ZmRlMzU1NDIzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1VJRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzTW91
c2VFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQoKSBjb25zdDsKIAogICAg
ICAgICAvLyBEcmFnIGV2ZW50cyBhcmUgYSBzdWJzZXQgb2YgbW91c2UgZXZlbnRzLgogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNEcmFnRXZlbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwCmluZGV4
IGNmNzIxZGY5MDYwZmZlNGQ4Mjc4ZjBlNzk0MDY0OWZmOGIxMGU1YWYuLmE2YmRhMjU2OGYyMDQy
MzE0OTc1MDQyYzk4YTVjMzAwNzEzMjVjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiVG91Y2guaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAKQEAgLTY4LDYgKzY5
LDEwIEBAIFRvdWNoOjpUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIHVu
c2lnbmVkIGlkZW50aWZpZXIsIGludCBzY3JlZW5YCiAgICAgLCBtX3JvdGF0aW9uQW5nbGUocm90
YXRpb25BbmdsZSkKICAgICAsIG1fZm9yY2UoZm9yY2UpCiB7CisgICAgZmxvYXQgc2NhbGVGYWN0
b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7
CisgICAgZmxvYXQgeCA9IHBhZ2VYICogc2NhbGVGYWN0b3I7CisgICAgZmxvYXQgeSA9IHBhZ2VZ
ICogc2NhbGVGYWN0b3I7CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcm91bmRlZExheW91dFBv
aW50KEZsb2F0UG9pbnQoeCwgeSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
b3VjaC5oCmluZGV4IGY0YzllODA2MWQ4YzczYWEwMjAzM2FjNDRjNDkwNGZkMjQwMzA5ZjYuLjFl
ODAyNTNlNmU5Y2VlNWRlNzNiODE0ZDAwM2YwMGU2OWMyMTQzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdlYmtpdFJhZGl1c1ko
KSBjb25zdCB7IHJldHVybiBtX3JhZGl1c1k7IH0KICAgICBmbG9hdCB3ZWJraXRSb3RhdGlvbkFu
Z2xlKCkgY29uc3QgeyByZXR1cm4gbV9yb3RhdGlvbkFuZ2xlOyB9CiAgICAgZmxvYXQgd2Via2l0
Rm9yY2UoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlOyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQm
IGFic29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0K
IAogcHJpdmF0ZToKICAgICBUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQs
IHVuc2lnbmVkIGlkZW50aWZpZXIsCkBAIC03Nyw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgaW50
IG1fcmFkaXVzWTsKICAgICBmbG9hdCBtX3JvdGF0aW9uQW5nbGU7CiAgICAgZmxvYXQgbV9mb3Jj
ZTsKKyAgICBMYXlvdXRQb2ludCBtX2Fic29sdXRlTG9jYXRpb247CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5kZXggYmZkNjM2MGZiODVm
MzdiZjBiZjJlYThkOTRkZGExOWEwMWQ4MzFhNS4uYTU4ZjFkY2M5ZTIzOGViZWE0NjJjZmE1YjY1
OTQ3NmUxYjYwMzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApAQCAtOTQsNiArOTQs
MTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUb3VjaEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRvdWNoRXZlbnQ7CiB9CiAK
K2Jvb2wgVG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNI
X0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCmluZGV4IDI5N2UzNDBmNDZiNDNiY2E3NjU5
MDE1MmJjY2UxOTE1NWU1NzlkYTMuLmIyZTViMmVlMzQ2YmQ4MDA3NTJkYjE5ZDZlODI4MTQ1MDNj
ODRjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRUb3VjaEhvbGQoYm9vbCB0b3VjaEhvbGQpIHsgbV90b3VjaEhvbGQgPSB0
b3VjaEhvbGQ7IH0KICAgICBib29sIGlzVG91Y2hIb2xkKCkgY29uc3QgeyByZXR1cm4gbV90b3Vj
aEhvbGQ7IH0KICNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQoKSBjb25zdCBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IGU3NzMyODQwN2UxNjNiMWMwMDAzZWQ1MjEwNDQ4OWY1M2NkYjNjMTguLmUxMzczZDc1ZjVjZjY4
NjJiZmY5NzJmMjUyZWYwYzU2M2Q5YjJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcApAQCAtNjcsNiArNjcsMTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVk
ZSAiVG91Y2hFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTk4LDYgKzEwMiw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJ
bnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
CiAgICAgLCBtX3ZhbHVlQXR0cmlidXRlV2FzVXBkYXRlZEFmdGVyUGFyc2luZyhmYWxzZSkKICAg
ICAsIG1fd2FzTW9kaWZpZWRCeVVzZXIoZmFsc2UpCiAgICAgLCBtX2NhblJlY2VpdmVEcm9wcGVk
RmlsZXMoZmFsc2UpCisgICAgLCBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKGZhbHNlKQogICAgICwg
bV9pbnB1dFR5cGUoSW5wdXRUeXBlOjpjcmVhdGVUZXh0KHRoaXMpKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGlucHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlzaW5kZXhUYWcpKTsKQEAgLTEzMCw2
ICsxMzUsMTAgQEAgSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQogICAgIC8v
IFdlIHNob3VsZCB1bnJlZ2lzdGVyIGl0IHRvIGF2b2lkIGFjY2Vzc2luZyBhIGRlbGV0ZWQgb2Jq
ZWN0LgogICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCiAgICAgICAgIGRvY3VtZW50KCktPmZvcm1D
b250cm9sbGVyKCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7Cisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAobV9oYXNUb3VjaEV2ZW50SGFuZGxlcikK
KyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKTsKKyNlbmRp
ZgogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6Om5hbWUoKSBjb25z
dApAQCAtNDAxLDYgKzQxMCwxOCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUo
KQogICAgIG1faW5wdXRUeXBlID0gbmV3VHlwZS5yZWxlYXNlKCk7CiAgICAgbV9pbnB1dFR5cGUt
PmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
Ym9vbCBoYXNUb3VjaEV2ZW50SGFuZGxlciA9IG1faW5wdXRUeXBlLT5oYXNUb3VjaEV2ZW50SGFu
ZGxlcigpOworICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlciAhPSBtX2hhc1RvdWNoRXZlbnRI
YW5kbGVyKSB7CisgICAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIpIHsKKyAgICAgICAgZG9j
dW1lbnQoKS0+ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
YWRkTGlzdGVuZXJUeXBlKERvY3VtZW50OjpUT1VDSF9MSVNURU5FUik7CisgICAgICB9IGVsc2UK
KyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICAg
IG1faGFzVG91Y2hFdmVudEhhbmRsZXIgPSBoYXNUb3VjaEV2ZW50SGFuZGxlcjsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKIAogICAgIGJvb2wgd2ls
bFN0b3JlVmFsdWUgPSBtX2lucHV0VHlwZS0+c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1
dGUoKTsKQEAgLTEwMzgsNiArMTA1OSwxNCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChldnQtPmlzVG91Y2hFdmVudCgpKSB7
CisgICAgICAgIG1faW5wdXRUeXBlLT5oYW5kbGVUb3VjaEV2ZW50KHN0YXRpY19jYXN0PFRvdWNo
RXZlbnQqPihldnQpKTsKKyAgICAgICAgaWYgKGV2dC0+ZGVmYXVsdEhhbmRsZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChldnQtPmlzS2V5Ym9hcmRF
dmVudCgpICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKICAg
ICAgICAgbV9pbnB1dFR5cGUtPmhhbmRsZUtleWRvd25FdmVudChzdGF0aWNfY2FzdDxLZXlib2Fy
ZEV2ZW50Kj4oZXZ0KSk7CiAgICAgICAgIGlmIChldnQtPmRlZmF1bHRIYW5kbGVkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDFlYzVlZjBkNWNlZDVlNzY5NDVk
MzkxNGM5ODJiMWU2MjM2YTc5MDIuLmUxMDgyNWNkNjE5NTc2ZGIyZjQzMjI5NmVkMWJlOWNlYmU0
OGQ3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zOTAsNiAr
MzkwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmFsdWVBdHRyaWJ1dGVXYXNVcGRhdGVkQWZ0
ZXJQYXJzaW5nIDogMTsKICAgICBib29sIG1fd2FzTW9kaWZpZWRCeVVzZXIgOiAxOwogICAgIGJv
b2wgbV9jYW5SZWNlaXZlRHJvcHBlZEZpbGVzIDogMTsKKyAgICBib29sIG1faGFzVG91Y2hFdmVu
dEhhbmRsZXI6IDE7CiAgICAgT3duUHRyPElucHV0VHlwZT4gbV9pbnB1dFR5cGU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMzA2MDJhMDA5NWU2MmU4MDg0OWQ0ZTQyMmMy
Yzc4MzBhMTA0YzM2OS4uODFkY2VkMzFkYmNkNGNiYWQyMjAzNGUwNWEzNGYxZjZiYjhjNTMwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNDE3LDYgKzQxNywxMiBAQCB2b2lkIElu
cHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikKIHsKIH0KIAorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCit2b2lkIElucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2
ZW50KikKK3sKK30KKyNlbmRpZgorCiB2b2lkIElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50
KikKIHsKIH0KQEAgLTg3Myw2ICs4NzksMTMgQEAgdm9pZCBJbnB1dFR5cGU6OnN1YnRyZWVIYXND
aGFuZ2VkKCkKIHsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitib29sIElucHV0VHlw
ZTo6aGFzVG91Y2hFdmVudEhhbmRsZXIoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRp
ZgorCiBTdHJpbmcgSW5wdXRUeXBlOjpkZWZhdWx0VG9vbFRpcCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNDUxMzAzZDEzYzQyNDBm
ZWM3NWFkMGVmMDA5NzMyM2QwZTMxM2RiOS4uNTg5ZDc0Y2FhMGI2ZjU0NDgyZWQ4MzQ3YzBiYmM4
ZThmYmVkYmMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC02MSwxMiArNjEsMTQgQEAg
Y2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xh
c3MgUmVuZGVyU3R5bGU7CitjbGFzcyBUb3VjaEV2ZW50OwogY2xhc3MgV2hlZWxFdmVudDsKIAog
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogc3RydWN0IENsaWNrSGFuZGxpbmdTdGF0ZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgIAogcHVibGljOgogICAgIGJvb2wgY2hl
Y2tlZDsKICAgICBib29sIGluZGV0ZXJtaW5hdGU7CkBAIC0xOTAsNiArMTkyLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2
ZW50Kik7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
VG91Y2hFdmVudChUb3VjaEV2ZW50Kik7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZm9yd2Fy
ZEV2ZW50KEV2ZW50Kik7CiAgICAgLy8gSGVscGVycyBmb3IgZXZlbnQgaGFuZGxlcnMuCiAgICAg
dmlydHVhbCBib29sIHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKTsKQEAgLTIwMiw2ICsy
MDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNl
bmRNb3VzZUV2ZW50cyk7CiAgICAgdmlydHVhbCBib29sIGNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1
dHRvbigpOwogICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpOworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGhhc1RvdWNoRXZlbnRIYW5kbGVyKCk7
CisjZW5kaWYKIAogICAgIC8vIFNoYWRvdyB0cmVlIGhhbmRsaW5nCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggZmQxMWNiYWE3OTVjNjE4OWJiY2MxMmE0OGY5YjI3
MTVkNTAxM2E3Yy4uZjQwN2M0OGRjZWU0YWExOWVlMzlmZDE3Yjg5NGY1ODI5YWI5OGEwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTQ5LDYgKzQ5LDEyIEBACiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJUb3VjaC5oIgorI2luY2x1ZGUg
IlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaExpc3QuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMzQsNiArMTQw
LDMyIEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZl
bnQqIGV2ZW50KQogICAgIHRodW1iLT5kcmFnRnJvbShldmVudC0+YWJzb2x1dGVMb2NhdGlvbigp
KTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIFJhbmdlSW5wdXRUeXBlOjpo
YW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChlbGVtZW50KCkt
PmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25seSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCkgewor
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFRvdWNoTGlzdCogdG91Y2hlcyA9IGV2ZW50LT50YXJnZXRUb3VjaGVzKCk7Cisg
ICAgaWYgKHRvdWNoZXMtPmxlbmd0aCgpID09IDEpIHsKKyAgICAgICAgVG91Y2gqIHRvdWNoID0g
dG91Y2hlcy0+aXRlbSgwKTsKKyAgICAgICAgU2xpZGVyVGh1bWJFbGVtZW50KiB0aHVtYiA9IHNs
aWRlclRodW1iRWxlbWVudE9mKGVsZW1lbnQoKSk7CisgICAgICAgIHRodW1iLT5zZXRQb3NpdGlv
bkZyb21Qb2ludCh0b3VjaC0+YWJzb2x1dGVMb2NhdGlvbigpKTsKKyAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorfQorCitib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNU
b3VjaEV2ZW50SGFuZGxlcigpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogdm9p
ZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogewogICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25s
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IGZmOGY0MDI4ZjIwNzU5
ZTgxZTdkNjUzYTYzOGQ5MzEyODc3YTBiOWYuLjE0NTU5N2Q3MGExODU1ODdmMjM0NTg5M2QwZGZk
ZjU3ZTBlZGE1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTUxLDYg
KzUxLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdl
KEFueVN0ZXBIYW5kbGluZykgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU3Rl
cHBhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRG93
bkV2ZW50KE1vdXNlRXZlbnQqKSBPVkVSUklERTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudEhhbmRsZXIoKSBPVkVSUklERTsKKyNlbmRp
ZgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggZTJkOGI2NmViYjExZjQ5ZDFjOGIwMWI0
YzgxZWUxYmIwNTEwOWU5Yi4uMzZkNjQxODZmOGMxZGEyMDQyMjU3ZDExOGNhZTFmMjEzODM0NGM0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsK
ICAgICBIVE1MSW5wdXRFbGVtZW50KiBob3N0SW5wdXQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBv
c2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKIHByaXZhdGU6CiAgICAgU2xp
ZGVyVGh1bWJFbGVtZW50KERvY3VtZW50Kik7CkBAIC02Nyw3ICs2OCw2IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBOb2RlKiBmb2N1c0RlbGVnYXRlKCk7CiAgICAgdm9pZCBzdGFydERyYWdnaW5n
KCk7CiAgICAgdm9pZCBzdG9wRHJhZ2dpbmcoKTsKLSAgICB2b2lkIHNldFBvc2l0aW9uRnJvbVBv
aW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICBib29sIG1faW5EcmFnTW9kZTsKIH07CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNzUyOWE5NmFmYjlmYzMzMDMwMGY1Mjk1MTZiODY3YWFiZTNjNmViNS4uNjU1OWY3MTE0
NDAyNmNlZTY4YTQ2NWIwNGEwOTYyMDFhYTVlYWQxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDEyLTA2LTI5ICBLZXZpbiBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW5wdXQgZWxlbWVudHMgd2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2gg
aGFuZGxlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04ODgwNworCisgICAgICAgIEFkZCBhdXRvbWF0ZWQgdGVzdCBmb3IgbWFuaXB1bGF0aW5nIGFu
IGlucHV0IHNsaWRlciB2aWEgdG91Y2gKKyAgICAgICAgZXZlbnRzLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvc2Ny
aXB0LXRlc3RzL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci5qczogQWRkZWQuCisg
ICAgICAgIChjaGVja1Bvc2l0aW9uKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3Jp
cHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKG9uVG91Y2hTdGFydCk6
CisgICAgICAgIChvblRvdWNoRW5kKToKKyAgICAgICAgKG9uS2V5RG93bik6CisgICAgICAgIChj
aGVja1Bvc2l0aW9uKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1z
bGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXIuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA2LTI5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICA8dGV4dGFyZWE+IHVubmVjZXNzYXJpbHkgc2F2ZXMgdGhlIHZhbHVlIGluIHNv
bWUgY2FzZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Njcmlw
dC10ZXN0cy90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXIuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNo
LWxpc3RlbmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNGNjYTlmZmQxZjExODBmYmVjZWI1ZDc4YTZkZTc5
NGI5Njc1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmpzCkBAIC0w
LDAgKzEsNTkgQEAKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rp
di5zdHlsZS53aWR0aCA9ICIyMDAlIjsKK3ZhciBzbGlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpOworc2xpZGVyLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYW5nZSIpOworc2xp
ZGVyLnN0eWxlLndpZHRoID0gIjIwMHB4IjsKK3NsaWRlci5zdHlsZS5oZWlnaHQgPSAiMzBweCI7
CisKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKSk7CitkaXYuYXBwZW5kQ2hpbGQoc2xpZGVyKTsKKworCit2YXIgY2hlY2tQ
b3NpdGlvbiA9IChmdW5jdGlvbigpIHsKKworICB2YXIgbkNoZWNrID0gMDsKKworICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbnMgPSBbNTAsIDBdOworCisgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci52YWx1ZSIsIFN0cmluZyhleHBlY3RlZFBvc2l0
aW9uc1tuQ2hlY2srK10pKTsKKyAgfTsKKworfSkoKTsKKworZnVuY3Rpb24gb25LZXlEb3duKCkg
eworICAgIGNoZWNrUG9zaXRpb24oKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKK30KKworZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0
byBlbnN1cmUgdGhhdCB0b3VjaCBldmVudHMgYXJlIGRlbGl2ZXJlZCB0byBhbiBpbnB1dCBlbGVt
ZW50IHdpdGggdHlwZT1yYW5nZSBldmVuIHdoZW4gdGhlcmUgYXJlIG5vIHRvdWNoIGV2ZW50IGhh
bmRsZXJzIGluIEphdmFzY3JpcHQuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2lm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB2YXIgeCA9IHNsaWRlci5vZmZzZXRMZWZ0Owor
ICAgIHZhciB5ID0gc2xpZGVyLm9mZnNldFRvcCArIHNsaWRlci5jbGllbnRIZWlnaHQvMjsKKyAg
ICB2YXIgdyA9IHNsaWRlci5jbGllbnRXaWR0aDsKKworICAgIGNoZWNrUG9zaXRpb24oKTsKKwor
ICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRU
b3VjaFBvaW50KHggKyB3LzIsIHkpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKwor
ICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgeCwgeSk7CisgICAgZXZlbnRTZW5k
ZXIudG91Y2hNb3ZlKCk7CisKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsK
KyAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworCisgICAgZXZlbnRTZW5kZXIua2V5RG93bign
ICcpOworCit9IGVsc2UgeworICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRFJULicpOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3Rz
L3RvdWNoLXNsaWRlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10
ZXN0cy90b3VjaC1zbGlkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU1Y2E5ZTQzMDAwMjYzYWVhOTIzNjMz
NmNmMjFkMDkxMmNlYjVlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanMKQEAgLTAsMCArMSwxMjAgQEAK
K3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS53aWR0
aCA9ICIyMDAlIjsKK3ZhciBzbGlkZXIxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQi
KTsKK3NsaWRlcjEuaWQgPSAic2xpZGVyMSI7CitzbGlkZXIxLnNldEF0dHJpYnV0ZSgidHlwZSIs
ICJyYW5nZSIpOworc2xpZGVyMS5zdHlsZS53aWR0aCA9ICIyMDBweCI7CitzbGlkZXIxLnN0eWxl
LmhlaWdodCA9ICIzMHB4IjsKK3ZhciBzbGlkZXIyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKTsKK3NsaWRlcjIuaWQgPSAic2xpZGVyMiI7CitzbGlkZXIyLnNldEF0dHJpYnV0ZSgi
dHlwZSIsICJyYW5nZSIpOworc2xpZGVyMi5zdHlsZS53aWR0aCA9ICIzMHB4IjsKK3NsaWRlcjIu
c3R5bGUuaGVpZ2h0ID0gIjIwMHB4IjsKK3NsaWRlcjIuc3R5bGUuc2V0UHJvcGVydHkoIi13ZWJr
aXQtYXBwZWFyYW5jZSIsICJzbGlkZXItdmVydGljYWwiKTsKK3ZhciBzbGlkZXIzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKK3NsaWRlcjMuaWQgPSAic2xpZGVyMyI7CitzbGlk
ZXIzLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYW5nZSIpOworc2xpZGVyMy5zdHlsZS53aWR0aCA9
ICIyMDBweCI7CitzbGlkZXIzLnN0eWxlLmhlaWdodCA9ICIzMHB4IjsKK3NsaWRlcjMuc3R5bGUu
c2V0UHJvcGVydHkoIi13ZWJraXQtdHJhbnNmb3JtIiwgInJvdGF0ZSgtOTBkZWcpIik7CitzbGlk
ZXIzLnN0eWxlLnNldFByb3BlcnR5KCJtYXJnaW4iLCAiMTIwcHggMCIpOworCitkb2N1bWVudC5i
b2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykp
OworZGl2LmFwcGVuZENoaWxkKHNsaWRlcjEpOworZGl2LmFwcGVuZENoaWxkKHNsaWRlcjIpOwor
ZGl2LmFwcGVuZENoaWxkKHNsaWRlcjMpOworCit2YXIgb25Ub3VjaFN0YXJ0ID0gKGZ1bmN0aW9u
KCkgeworCisgICAgdmFyIHNsaWRlciA9IFtzbGlkZXIxLCBzbGlkZXIyLCBzbGlkZXIzXTsKKyAg
ICB2YXIgbkNoZWNrID0gMDsKKworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCIsIHNsaWRlcltu
Q2hlY2srK10uaWQpOworICAgICAgICBjaGVja1Bvc2l0aW9uKCk7CisgICAgfQorCit9KSgpOwor
CitmdW5jdGlvbiBvblRvdWNoTW92ZSgpIHsKKyAgICBjaGVja1Bvc2l0aW9uKCk7Cit9CisKK2Z1
bmN0aW9uIG9uVG91Y2hFbmQoKSB7CisgICAgY2hlY2tQb3NpdGlvbigpOworfQorCitmdW5jdGlv
biBvbktleURvd24oKSB7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciBzbGlkZXJWYWx1ZSA9IDA7CisK
K3ZhciBjaGVja1Bvc2l0aW9uID0gKGZ1bmN0aW9uKCkgeworCisgICAgdmFyIG5DaGVjayA9IDA7
CisgICAgdmFyIHNsaWRlciA9IFtzbGlkZXIxLCBzbGlkZXIyLCBzbGlkZXIzXTsKKyAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbnMgPSBbNTAsIDUwLCAwLCAxMDAsIDUwXTsKKyAgICB2YXIgc2xpZGVy
SW5kZXggPSAwOworCisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBzbGlkZXJWYWx1
ZSA9IHNsaWRlcltzbGlkZXJJbmRleF0udmFsdWU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygic2xpZGVyVmFsdWUiLCBTdHJpbmcoZXhwZWN0ZWRQb3NpdGlvbnNbbkNoZWNrKytdKSk7
CisgICAgICAgIGlmIChuQ2hlY2sgJSBleHBlY3RlZFBvc2l0aW9ucy5sZW5ndGggPT0gMCkgewor
ICAgICAgICAgICAgc2xpZGVySW5kZXgrKzsKKyAgICAgICAgICAgIG5DaGVjayA9IDA7CisgICAg
ICAgIH0KKyAgICB9OworCit9KSgpOworCitmdW5jdGlvbiBydW5UZXN0KHNsaWRlciwgcm90YXRl
ZCkgeworCisgICAgdmFyIHcgPSBzbGlkZXIuY2xpZW50V2lkdGg7CisgICAgdmFyIGggPSBzbGlk
ZXIuY2xpZW50SGVpZ2h0OworICAgIHZhciB4ID0gc2xpZGVyLm9mZnNldExlZnQgKyB3LzI7Cisg
ICAgdmFyIHkgPSBzbGlkZXIub2Zmc2V0VG9wICsgaC8yOworCisgICAgaWYgKHJvdGF0ZWQpIHsK
KyAgICAgIHcgPSBzbGlkZXIuY2xpZW50SGVpZ2h0OworICAgICAgaCA9IHNsaWRlci5jbGllbnRX
aWR0aDsKKyAgICB9CisKKyAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAg
ZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCh4LCB5KTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0
YXJ0KCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHggLSB3LzIsIHkg
KyBoLzIpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIu
dXBkYXRlVG91Y2hQb2ludCgwLCB4ICsgdy8yLCB5IC0gaC8yKTsKKyAgICBldmVudFNlbmRlci50
b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgeCwgeSk7
CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisKKyAgICBldmVudFNlbmRlci5yZWxlYXNl
VG91Y2hQb2ludCgwKTsKKyAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworfQorCitkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iiwgb25Ub3VjaFN0YXJ0LCBmYWxzZSk7Citk
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBvblRvdWNoTW92ZSwgZmFsc2Up
OworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBvblRvdWNoRW5kLCBmYWxz
ZSk7Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgb25LZXlEb3duLCBmYWxz
ZSk7CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRoZSB0b3VjaCBldmVudHMgb3JpZ2luYXRp
bmcgb24gYW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgdXBkYXRlIHRoZSBzbGlkZXIg
cG9zaXRpb24uIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2lmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICBydW5UZXN0KHNsaWRlcjEsIGZhbHNlKTsKKyAgICBydW5UZXN0KHNs
aWRlcjIsIGZhbHNlKTsKKyAgICBydW5UZXN0KHNsaWRlcjMsIHRydWUpOworCisgICAgZXZlbnRT
ZW5kZXIua2V5RG93bignICcpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJlcXVp
cmVzIERSVC4nKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLXNsaWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NDZlZjQwNDFmYzUwMzlk
MTU3Y2EwZDE3NGUyNmU5ODc2OWI4YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjgg
QEAKK1Rlc3RzIHRoYXQgdGhlIHRvdWNoIGV2ZW50cyBvcmlnaW5hdGluZyBvbiBhbiBpbnB1dCBl
bGVtZW50IHdpdGggdHlwZT1yYW5nZSB1cGRhdGUgdGhlIHNsaWRlciBwb3NpdGlvbi4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdl
dC5pZCBpcyAic2xpZGVyMSIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJW
YWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIwIgorUEFTUyBzbGlkZXJWYWx1ZSBp
cyAiMTAwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIGV2ZW50LnRvdWNoZXNbMF0u
dGFyZ2V0LmlkIGlzICJzbGlkZXIyIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHNs
aWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjAiCitQQVNTIHNsaWRlclZh
bHVlIGlzICIxMDAiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1MgZXZlbnQudG91Y2hl
c1swXS50YXJnZXQuaWQgaXMgInNsaWRlcjMiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BB
U1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiMCIKK1BBU1Mgc2xp
ZGVyVmFsdWUgaXMgIjEwMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5l
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlk
ZXItbm8tanMtdG91Y2gtbGlzdGVuZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYmQyNzU4
MzM2NWNhMDM3YzIwMWI2YzAwZjZjNjA1ZGVlOWQwODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVu
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRvIGVuc3VyZSB0aGF0IHRv
dWNoIGV2ZW50cyBhcmUgZGVsaXZlcmVkIHRvIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJh
bmdlIGV2ZW4gd2hlbiB0aGVyZSBhcmUgbm8gdG91Y2ggZXZlbnQgaGFuZGxlcnMgaW4gSmF2YXNj
cmlwdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBzbGlkZXIudmFs
dWUgaXMgIjUwIgorUEFTUyBzbGlkZXIudmFsdWUgaXMgIjAiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gt
bGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTViODY2YTg2MjY1Y2YwNjhhMjIxMWJmN2E0YmVi
YjU4YjJkYzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmh0bWwKQEAgLTAsMCArMSwxNiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPCEtLQorICBUb3VjaCB0ZXN0cyB0aGF0IGludm9sdmUgdGhlIG9udG91Y2hz
dGFydCwgb250b3VjaG1vdmUsIG9udG91Y2hlbmQgb3Igb250b3VjaGNhbmNlbCBjYWxsYmFja3MK
KyAgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYW4gYXN5bmNocm9ub3VzIGZhc2hpb24gc28gdGhleSBj
YW4gYmUgcnVuIG9uIG1vYmlsZSBwbGF0Zm9ybXMgbGlrZSBBbmRyb2lkLgorICBZb3Ugd2lsbCBu
ZWVkIHRvIGludm9rZSBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpIGluIHlvdXIgdGVzdCBzY3JpcHQg
d2hlbiB0aGUgdGVzdCBjb21wbGV0ZXMuCistLT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL3RvdWNoLXNsaWRlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtc2xpZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM3ZDUxNmU5YWQ1MzVmNjU3ODdjZDFjMDdh
ZTdjMTIzZTVjYzYzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL3RvdWNoLXNsaWRlci5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwhLS0K
KyAgVG91Y2ggdGVzdHMgdGhhdCBpbnZvbHZlIHRoZSBvbnRvdWNoc3RhcnQsIG9udG91Y2htb3Zl
LCBvbnRvdWNoZW5kIG9yIG9udG91Y2hjYW5jZWwgY2FsbGJhY2tzCisgIHNob3VsZCBiZSB3cml0
dGVuIGluIGFuIGFzeW5jaHJvbm91cyBmYXNoaW9uIHNvIHRoZXkgY2FuIGJlIHJ1biBvbiBtb2Jp
bGUgcGxhdGZvcm1zIGxpa2UgQW5kcm9pZC4KKyAgWW91IHdpbGwgbmVlZCB0byBpbnZva2UgaXNT
dWNjZXNzZnVsbHlQYXJzZWQoKSBpbiB5b3VyIHRlc3Qgc2NyaXB0IHdoZW4gdGhlIHRlc3QgY29t
cGxldGVzLgorLS0+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3RvdWNo
LXNsaWRlci5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151317</attachid>
            <date>2012-07-09 14:15:28 -0700</date>
            <delta_ts>2012-07-10 09:59:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120709171527.patch</filename>
            <type>text/plain</type>
            <size>25703</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAxZjhlMjRjMjlkYmI2
YjJjZjE5MTQ1OGJjNWJhY2ExMjk5MTFlYi4uNWFiY2FhOWQ4MzE3YTBlNzlmZDY0MDJkNjVhOWNm
MzY4NDc4NDhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA3LTA5ICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIt
bm8tanMtdG91Y2gtbGlzdGVuZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtc2xpZGVyLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudDo6aXNUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoRXZlbnQpOgorICAgICAgICAqIGRvbS9Ub3Vj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6VG91Y2gpOgorICAgICAgICAqIGRvbS9U
b3VjaC5oOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2g6OmFic29sdXRlTG9jYXRpb24pOgorICAg
ICAgICAoVG91Y2gpOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoRXZlbnQ6OmlzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vVG91Y2hFdmVudC5oOgorICAgICAgICAoVG91Y2hFdmVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpo
YW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aGFzVG91Y2hF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENsaWNrSGFuZGxpbmdTdGF0ZSk6CisgICAgICAgIChJbnB1dFR5cGUp
OgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFzVG91Y2hFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuaDoKKyAgICAgICAgKFJhbmdlSW5wdXRUeXBl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAg
KFNsaWRlclRodW1iRWxlbWVudCk6CisKIDIwMTItMDctMDkgIE1hdHQgRmFsa2VuaGFnZW4gIDxm
YWxrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBFTkFCTEVfRElBTE9HX0VMRU1FTlQg
YW5kIHNrZWxldG9uIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDQ1ZmQwZmVm
MWQxNjdmNzM4YzZhYTYyNTgxYWY2MWY1ODc5NTQyOGUuLjE1MWVlN2VmOTU0OTU0OTk0YjMyNjJk
MTE5ZWQzZTE2NmU4OTAyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDctMDkgIEtldmluIEVsbGlzICA8a2V2ZXJzQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbnB1dCBlbGVtZW50cyB3aXRoIHR5cGU9cmFuZ2UgZG8gbm90IGhhdmUgZGVmYXVs
dCB0b3VjaCBoYW5kbGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg4ODA3CisKKyAgICAgICAgQWRkcyBmbGFnIHRvIGVuYWJsZSBuYXRpdmUgaGFu
ZGxpbmcgb2YgdG91Y2ggZXZlbnRzIGZvciBpbnB1dCBlbGVtZW50cworICAgICAgICB3aXRoIHR5
cGU9cmFuZ2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmZWF0dXJlcy5neXBpOgorCiAyMDEyLTA3LTA5ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFs
a2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgRU5BQkxFX0RJQUxPR19FTEVNRU5UIGFu
ZCBza2VsZXRvbiBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5kZXggYzlhNDVkYzQ5ZWQ4OTNjN2Q3
ZjVkNDIwZDYwNzliMjY0ODBlY2NjYi4uNzYxMzEzYzU5OTlmYzU2YTY5MjQ4MmE5NTZjOGIwNDQ4
YjNjZDI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0xMjYsNiArMTI2LDExIEBAIGJvb2wgRXZl
bnQ6OmlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29s
IEV2ZW50Ojppc1RvdWNoRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwog
Ym9vbCBFdmVudDo6aXNEcmFnRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmgKaW5kZXggMzZlZDlhNmQ5NjdkZWZkMWU4M2VlMjU5ZTljOGI3MmU3ZDA2ZTU1My4u
ZDI5OGQ5MGE3N2ExNjUwZDJhOGI1NjJiNTNlNTM4ZmRlMzU1NDIzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgK
QEAgLTEyMCw2ICsxMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1VJRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzTW91c2VFdmVu
dCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQoKSBjb25zdDsKIAogICAgICAgICAv
LyBEcmFnIGV2ZW50cyBhcmUgYSBzdWJzZXQgb2YgbW91c2UgZXZlbnRzLgogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNEcmFnRXZlbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwCmluZGV4IGNmNzIx
ZGY5MDYwZmZlNGQ4Mjc4ZjBlNzk0MDY0OWZmOGIxMGU1YWYuLmE2YmRhMjU2OGYyMDQyMzE0OTc1
MDQyYzk4YTVjMzAwNzEzMjVjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3Vj
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiVG91Y2guaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAKQEAgLTY4LDYgKzY5LDEwIEBA
IFRvdWNoOjpUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIHVuc2lnbmVk
IGlkZW50aWZpZXIsIGludCBzY3JlZW5YCiAgICAgLCBtX3JvdGF0aW9uQW5nbGUocm90YXRpb25B
bmdsZSkKICAgICAsIG1fZm9yY2UoZm9yY2UpCiB7CisgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBm
cmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CisgICAg
ZmxvYXQgeCA9IHBhZ2VYICogc2NhbGVGYWN0b3I7CisgICAgZmxvYXQgeSA9IHBhZ2VZICogc2Nh
bGVGYWN0b3I7CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcm91bmRlZExheW91dFBvaW50KEZs
b2F0UG9pbnQoeCwgeSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5o
CmluZGV4IGY0YzllODA2MWQ4YzczYWEwMjAzM2FjNDRjNDkwNGZkMjQwMzA5ZjYuLjFlODAyNTNl
NmU5Y2VlNWRlNzNiODE0ZDAwM2YwMGU2OWMyMTQzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdlYmtpdFJhZGl1c1koKSBjb25z
dCB7IHJldHVybiBtX3JhZGl1c1k7IH0KICAgICBmbG9hdCB3ZWJraXRSb3RhdGlvbkFuZ2xlKCkg
Y29uc3QgeyByZXR1cm4gbV9yb3RhdGlvbkFuZ2xlOyB9CiAgICAgZmxvYXQgd2Via2l0Rm9yY2Uo
KSBjb25zdCB7IHJldHVybiBtX2ZvcmNlOyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQmIGFic29s
dXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0KIAogcHJp
dmF0ZToKICAgICBUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIHVuc2ln
bmVkIGlkZW50aWZpZXIsCkBAIC03Nyw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcmFk
aXVzWTsKICAgICBmbG9hdCBtX3JvdGF0aW9uQW5nbGU7CiAgICAgZmxvYXQgbV9mb3JjZTsKKyAg
ICBMYXlvdXRQb2ludCBtX2Fic29sdXRlTG9jYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5kZXggYmZkNjM2MGZiODVmMzdiZjBi
ZjJlYThkOTRkZGExOWEwMWQ4MzFhNS4uYTU4ZjFkY2M5ZTIzOGViZWE0NjJjZmE1YjY1OTQ3NmUx
YjYwMzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApAQCAtOTQsNiArOTQsMTEgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBUb3VjaEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKICAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRvdWNoRXZlbnQ7CiB9CiAKK2Jvb2wg
VG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5U
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCmluZGV4IDI5N2UzNDBmNDZiNDNiY2E3NjU5MDE1MmJj
Y2UxOTE1NWU1NzlkYTMuLmIyZTViMmVlMzQ2YmQ4MDA3NTJkYjE5ZDZlODI4MTQ1MDNjODRjNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRUb3VjaEhvbGQoYm9vbCB0b3VjaEhvbGQpIHsgbV90b3VjaEhvbGQgPSB0b3VjaEhv
bGQ7IH0KICAgICBib29sIGlzVG91Y2hIb2xkKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEhvbGQ7
IH0KICNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQoKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGU3NzMy
ODQwN2UxNjNiMWMwMDAzZWQ1MjEwNDQ4OWY1M2NkYjNjMTguLmUxMzczZDc1ZjVjZjY4NjJiZmY5
NzJmMjUyZWYwYzU2M2Q5YjJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtNjcsNiArNjcsMTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiVG91
Y2hFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTk4LDYgKzEwMiw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAg
LCBtX3ZhbHVlQXR0cmlidXRlV2FzVXBkYXRlZEFmdGVyUGFyc2luZyhmYWxzZSkKICAgICAsIG1f
d2FzTW9kaWZpZWRCeVVzZXIoZmFsc2UpCiAgICAgLCBtX2NhblJlY2VpdmVEcm9wcGVkRmlsZXMo
ZmFsc2UpCisgICAgLCBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKGZhbHNlKQogICAgICwgbV9pbnB1
dFR5cGUoSW5wdXRUeXBlOjpjcmVhdGVUZXh0KHRoaXMpKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGlucHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlzaW5kZXhUYWcpKTsKQEAgLTEzMCw2ICsxMzUs
MTAgQEAgSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQogICAgIC8vIFdlIHNo
b3VsZCB1bnJlZ2lzdGVyIGl0IHRvIGF2b2lkIGFjY2Vzc2luZyBhIGRlbGV0ZWQgb2JqZWN0Lgog
ICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCiAgICAgICAgIGRvY3VtZW50KCktPmZvcm1Db250cm9s
bGVyKCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7CisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAobV9oYXNUb3VjaEV2ZW50SGFuZGxlcikKKyAgICAg
ICAgZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKTsKKyNlbmRpZgogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6Om5hbWUoKSBjb25zdApAQCAt
NDAxLDYgKzQxMCwxOCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAg
IG1faW5wdXRUeXBlID0gbmV3VHlwZS5yZWxlYXNlKCk7CiAgICAgbV9pbnB1dFR5cGUtPmNyZWF0
ZVNoYWRvd1N1YnRyZWUoKTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgYm9vbCBo
YXNUb3VjaEV2ZW50SGFuZGxlciA9IG1faW5wdXRUeXBlLT5oYXNUb3VjaEV2ZW50SGFuZGxlcigp
OworICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlciAhPSBtX2hhc1RvdWNoRXZlbnRIYW5kbGVy
KSB7CisgICAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQo
KS0+ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+YWRkTGlz
dGVuZXJUeXBlKERvY3VtZW50OjpUT1VDSF9MSVNURU5FUik7CisgICAgICB9IGVsc2UKKyAgICAg
ICAgZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICAgIG1faGFz
VG91Y2hFdmVudEhhbmRsZXIgPSBoYXNUb3VjaEV2ZW50SGFuZGxlcjsKKyAgICB9CisjZW5kaWYK
KwogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKIAogICAgIGJvb2wgd2lsbFN0b3Jl
VmFsdWUgPSBtX2lucHV0VHlwZS0+c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKTsK
QEAgLTEwMzgsNiArMTA1OSwxNCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChldnQtPmlzVG91Y2hFdmVudCgpKSB7CisgICAg
ICAgIG1faW5wdXRUeXBlLT5oYW5kbGVUb3VjaEV2ZW50KHN0YXRpY19jYXN0PFRvdWNoRXZlbnQq
PihldnQpKTsKKyAgICAgICAgaWYgKGV2dC0+ZGVmYXVsdEhhbmRsZWQoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChldnQtPmlzS2V5Ym9hcmRFdmVudCgp
ICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKICAgICAgICAg
bV9pbnB1dFR5cGUtPmhhbmRsZUtleWRvd25FdmVudChzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50
Kj4oZXZ0KSk7CiAgICAgICAgIGlmIChldnQtPmRlZmF1bHRIYW5kbGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDFlYzVlZjBkNWNlZDVlNzY5NDVkMzkxNGM5
ODJiMWU2MjM2YTc5MDIuLmUxMDgyNWNkNjE5NTc2ZGIyZjQzMjI5NmVkMWJlOWNlYmU0OGQ3NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zOTAsNiArMzkwLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fdmFsdWVBdHRyaWJ1dGVXYXNVcGRhdGVkQWZ0ZXJQYXJz
aW5nIDogMTsKICAgICBib29sIG1fd2FzTW9kaWZpZWRCeVVzZXIgOiAxOwogICAgIGJvb2wgbV9j
YW5SZWNlaXZlRHJvcHBlZEZpbGVzIDogMTsKKyAgICBib29sIG1faGFzVG91Y2hFdmVudEhhbmRs
ZXI6IDE7CiAgICAgT3duUHRyPElucHV0VHlwZT4gbV9pbnB1dFR5cGU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMzA2MDJhMDA5NWU2MmU4MDg0OWQ0ZTQyMmMyYzc4MzBh
MTA0YzM2OS4uMjUzMGU5ZWIxZjQ4NTAzYTNiMzBlOTQ3ODM0MWNhOGFmMzIwNTEzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNDE3LDYgKzQxNywxMiBAQCB2b2lkIElucHV0VHlw
ZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikKIHsKIH0KIAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCit2b2lkIElucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KikK
K3sKK30KKyNlbmRpZgorCiB2b2lkIElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50KikKIHsK
IH0KQEAgLTg3Myw2ICs4NzksMTMgQEAgdm9pZCBJbnB1dFR5cGU6OnN1YnRyZWVIYXNDaGFuZ2Vk
KCkKIHsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitib29sIElucHV0VHlwZTo6aGFz
VG91Y2hFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRp
ZgorCiBTdHJpbmcgSW5wdXRUeXBlOjpkZWZhdWx0VG9vbFRpcCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNDUxMzAzZDEzYzQyNDBm
ZWM3NWFkMGVmMDA5NzMyM2QwZTMxM2RiOS4uZmE0MWZmODU3MDAxMWVmNGMwNDFkNmMwM2FhOGZm
ZjBlMTQ4ODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC02MSwxMiArNjEsMTQgQEAg
Y2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xh
c3MgUmVuZGVyU3R5bGU7CitjbGFzcyBUb3VjaEV2ZW50OwogY2xhc3MgV2hlZWxFdmVudDsKIAog
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogc3RydWN0IENsaWNrSGFuZGxpbmdTdGF0ZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgIAogcHVibGljOgogICAgIGJvb2wgY2hl
Y2tlZDsKICAgICBib29sIGluZGV0ZXJtaW5hdGU7CkBAIC0xOTAsNiArMTkyLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2
ZW50Kik7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
VG91Y2hFdmVudChUb3VjaEV2ZW50Kik7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZm9yd2Fy
ZEV2ZW50KEV2ZW50Kik7CiAgICAgLy8gSGVscGVycyBmb3IgZXZlbnQgaGFuZGxlcnMuCiAgICAg
dmlydHVhbCBib29sIHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKTsKQEAgLTIwMiw2ICsy
MDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNl
bmRNb3VzZUV2ZW50cyk7CiAgICAgdmlydHVhbCBib29sIGNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1
dHRvbigpOwogICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpOworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGhhc1RvdWNoRXZlbnRIYW5kbGVyKCkg
Y29uc3Q7CisjZW5kaWYKIAogICAgIC8vIFNoYWRvdyB0cmVlIGhhbmRsaW5nCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggZmQxMWNiYWE3OTVjNjE4OWJiY2MxMmE0
OGY5YjI3MTVkNTAxM2E3Yy4uMTBjNzU3NmJmYTdjY2EzNzZlODI0NWVhM2M0NGZlY2U1NzFkYmFj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTQ5LDYgKzQ5LDEy
IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJUb3VjaC5oIgorI2lu
Y2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaExpc3QuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMzQs
NiArMTQwLDM0IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1v
dXNlRXZlbnQqIGV2ZW50KQogICAgIHRodW1iLT5kcmFnRnJvbShldmVudC0+YWJzb2x1dGVMb2Nh
dGlvbigpKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKFRPVUNI
X1NMSURFUikKK3ZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVu
dCogZXZlbnQpCit7CisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCkt
PnJlYWRPbmx5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50KSB7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVG91Y2hMaXN0KiB0b3Vj
aGVzID0gZXZlbnQtPnRhcmdldFRvdWNoZXMoKTsKKyAgICBpZiAodG91Y2hlcy0+bGVuZ3RoKCkg
PT0gMSkgeworICAgICAgICBUb3VjaCogdG91Y2ggPSB0b3VjaGVzLT5pdGVtKDApOworICAgICAg
ICBTbGlkZXJUaHVtYkVsZW1lbnQqIHRodW1iID0gc2xpZGVyVGh1bWJFbGVtZW50T2YoZWxlbWVu
dCgpKTsKKyAgICAgICAgdGh1bWItPnNldFBvc2l0aW9uRnJvbVBvaW50KHRvdWNoLT5hYnNvbHV0
ZUxvY2F0aW9uKCkpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9
Cit9CisKK2Jvb2wgUmFuZ2VJbnB1dFR5cGU6Omhhc1RvdWNoRXZlbnRIYW5kbGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorI2VuZGlmCisKIHZvaWQgUmFuZ2VJbnB1
dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBp
ZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8IGVsZW1lbnQoKS0+cmVhZE9ubHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCBmZjhmNDAyOGYyMDc1OWU4MWU3ZDY1M2E2
MzhkOTMxMjg3N2EwYjlmLi4wOTgzYjNkNTdmZTk3MmU3NTIxOTM0NzljOTg0NjM0ODc2MWE3NTNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCkBAIC01MSw2ICs1MSwxMiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFu
ZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURvd25FdmVudChNb3Vz
ZUV2ZW50KikgT1ZFUlJJREU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUo
VE9VQ0hfU0xJREVSKQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZl
bnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudEhhbmRsZXIoKSBj
b25zdCBPVkVSUklERTsKKyNlbmRpZgorI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtl
eWRvd25FdmVudChLZXlib2FyZEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIE9WRVJSSURF
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApp
bmRleCBlMmQ4YjY2ZWJiMTFmNDlkMWM4YjAxYjRjODFlZTFiYjA1MTA5ZTliLi4zNmQ2NDE4NmY4
YzFkYTIwNDIyNTdkMTE4Y2FlMWYyMTM4MzQ0YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGhvc3RJ
bnB1dCgpIGNvbnN0OworICAgIHZvaWQgc2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmKTsKIAogcHJpdmF0ZToKICAgICBTbGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQqKTsK
QEAgLTY3LDcgKzY4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGUqIGZvY3VzRGVsZWdh
dGUoKTsKICAgICB2b2lkIHN0YXJ0RHJhZ2dpbmcoKTsKICAgICB2b2lkIHN0b3BEcmFnZ2luZygp
OwotICAgIHZvaWQgc2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIAog
ICAgIGJvb2wgbV9pbkRyYWdNb2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQppbmRleCBlYzA5ZmY4YmI3ZWExNjAyOGQwNTE3NjUzOWY0ZTFmYmQ0Yzk0Y2I0Li5lOTc4YTZk
NGQ0MGIxNzBmZjU2ZmQ2NzU3YzZhYzBiNWE3MTljZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpCkBAIC05Nyw2ICs5Nyw3IEBACiAgICAgICAnRU5BQkxFX1RPVUNIX0FESlVT
VE1FTlQ9MScsCiAgICAgICAnRU5BQkxFX1RPVUNIX0VWRU5UUz08KGVuYWJsZV90b3VjaF9ldmVu
dHMpJywKICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTwoZW5hYmxlX3RvdWNoX2lj
b25fbG9hZGluZyknLAorICAgICAgJ0VOQUJMRV9UT1VDSF9TTElERVI9MScsCiAgICAgICAnRU5B
QkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAgICAnRU5BQkxFX1ZJREVPPTEnLAog
ICAgICAgJ0VOQUJMRV9WSURFT19UUkFDSz0xJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YTNmMzMwOTNiODRkYzg5YjQy
MmVmMjM2ZTFiZmZjNDY3NGY2MTBkLi5lZGVkNjJkYmZiNTdlYjZkMGFmN2U1ODIzYTgwNjU2NjM4
ZTliNzgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDctMDkgIEtldmluIEVsbGlzICA8
a2V2ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnB1dCBlbGVtZW50cyB3aXRoIHR5cGU9
cmFuZ2UgZG8gbm90IGhhdmUgZGVmYXVsdCB0b3VjaCBoYW5kbGVycy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODA3CisKKyAgICAgICAgQWRkIGF1
dG9tYXRlZCB0ZXN0IGZvciBtYW5pcHVsYXRpbmcgYW4gaW5wdXQgc2xpZGVyIHZpYSB0b3VjaAor
ICAgICAgICBldmVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5v
LWpzLXRvdWNoLWxpc3RlbmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGNoZWNrUG9zaXRpb24pOgor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanM6
IEFkZGVkLgorICAgICAgICAob25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKG9uVG91Y2hFbmQpOgor
ICAgICAgICAob25LZXlEb3duKToKKyAgICAgICAgKGNoZWNrUG9zaXRpb24pOgorICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5l
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNo
LXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbDogQWRkZWQuCisKIDIwMTItMDctMDkgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogaW5zcGVjdG9yIGRvZXMgbm90IHJlZmxlY3QgbmV3bHkgY3JlYXRlZCB0ZXh0IG5vZGVz
IGZyb20gY29udGVudGVkaXRhYmxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXNsaWRl
ci1uby1qcy10b3VjaC1saXN0ZW5lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzRjY2E5ZmZkMWYxMTgwZmJl
Y2ViNWQ3OGE2ZGU3OTRiOTY3NTZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0
ZW5lci5qcwpAQCAtMCwwICsxLDU5IEBACit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CitkaXYuc3R5bGUud2lkdGggPSAiMjAwJSI7Cit2YXIgc2xpZGVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKK3NsaWRlci5zZXRBdHRyaWJ1dGUoInR5cGUiLCAi
cmFuZ2UiKTsKK3NsaWRlci5zdHlsZS53aWR0aCA9ICIyMDBweCI7CitzbGlkZXIuc3R5bGUuaGVp
Z2h0ID0gIjMwcHgiOworCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykpOworZGl2LmFwcGVuZENoaWxkKHNsaWRlcik7CisK
KwordmFyIGNoZWNrUG9zaXRpb24gPSAoZnVuY3Rpb24oKSB7CisKKyAgdmFyIG5DaGVjayA9IDA7
CisKKyAgdmFyIGV4cGVjdGVkUG9zaXRpb25zID0gWzUwLCAwXTsKKworICByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXIudmFsdWUiLCBTdHJpbmco
ZXhwZWN0ZWRQb3NpdGlvbnNbbkNoZWNrKytdKSk7CisgIH07CisKK30pKCk7CisKK2Z1bmN0aW9u
IG9uS2V5RG93bigpIHsKKyAgICBjaGVja1Bvc2l0aW9uKCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9CisKK2Rv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pOworCitkZXNjcmlw
dGlvbigiVGVzdHMgdG8gZW5zdXJlIHRoYXQgdG91Y2ggZXZlbnRzIGFyZSBkZWxpdmVyZWQgdG8g
YW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgZXZlbiB3aGVuIHRoZXJlIGFyZSBubyB0
b3VjaCBldmVudCBoYW5kbGVycyBpbiBKYXZhc2NyaXB0LiIpOworCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdmFyIHggPSBzbGlkZXIu
b2Zmc2V0TGVmdDsKKyAgICB2YXIgeSA9IHNsaWRlci5vZmZzZXRUb3AgKyBzbGlkZXIuY2xpZW50
SGVpZ2h0LzI7CisgICAgdmFyIHcgPSBzbGlkZXIuY2xpZW50V2lkdGg7CisKKyAgICBjaGVja1Bv
c2l0aW9uKCk7CisKKyAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgZXZl
bnRTZW5kZXIuYWRkVG91Y2hQb2ludCh4ICsgdy8yLCB5KTsKKyAgICBldmVudFNlbmRlci50b3Vj
aFN0YXJ0KCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHgsIHkpOwor
ICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRv
dWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKworICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oJyAnKTsKKworfSBlbHNlIHsKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJlcXVp
cmVzIERSVC4nKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NWNhOWU0MzAw
MDI2M2FlYTkyMzYzMzZjZjIxZDA5MTJjZWI1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCkBAIC0w
LDAgKzEsMTIwIEBACit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citk
aXYuc3R5bGUud2lkdGggPSAiMjAwJSI7Cit2YXIgc2xpZGVyMSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlucHV0Iik7CitzbGlkZXIxLmlkID0gInNsaWRlcjEiOworc2xpZGVyMS5zZXRBdHRy
aWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjEuc3R5bGUud2lkdGggPSAiMjAwcHgiOwor
c2xpZGVyMS5zdHlsZS5oZWlnaHQgPSAiMzBweCI7Cit2YXIgc2xpZGVyMiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlucHV0Iik7CitzbGlkZXIyLmlkID0gInNsaWRlcjIiOworc2xpZGVyMi5z
ZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjIuc3R5bGUud2lkdGggPSAiMzBw
eCI7CitzbGlkZXIyLnN0eWxlLmhlaWdodCA9ICIyMDBweCI7CitzbGlkZXIyLnN0eWxlLnNldFBy
b3BlcnR5KCItd2Via2l0LWFwcGVhcmFuY2UiLCAic2xpZGVyLXZlcnRpY2FsIik7Cit2YXIgc2xp
ZGVyMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CitzbGlkZXIzLmlkID0gInNs
aWRlcjMiOworc2xpZGVyMy5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjMu
c3R5bGUud2lkdGggPSAiMjAwcHgiOworc2xpZGVyMy5zdHlsZS5oZWlnaHQgPSAiMzBweCI7Citz
bGlkZXIzLnN0eWxlLnNldFByb3BlcnR5KCItd2Via2l0LXRyYW5zZm9ybSIsICJyb3RhdGUoLTkw
ZGVnKSIpOworc2xpZGVyMy5zdHlsZS5zZXRQcm9wZXJ0eSgibWFyZ2luIiwgIjEyMHB4IDAiKTsK
KworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpKTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIxKTsKK2Rpdi5hcHBlbmRDaGls
ZChzbGlkZXIyKTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIzKTsKKwordmFyIG9uVG91Y2hTdGFy
dCA9IChmdW5jdGlvbigpIHsKKworICAgIHZhciBzbGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwg
c2xpZGVyM107CisgICAgdmFyIG5DaGVjayA9IDA7CisKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudG91Y2hlc1swXS50YXJnZXQu
aWQiLCBzbGlkZXJbbkNoZWNrKytdLmlkKTsKKyAgICAgICAgY2hlY2tQb3NpdGlvbigpOworICAg
IH0KKworfSkoKTsKKworZnVuY3Rpb24gb25Ub3VjaE1vdmUoKSB7CisgICAgY2hlY2tQb3NpdGlv
bigpOworfQorCitmdW5jdGlvbiBvblRvdWNoRW5kKCkgeworICAgIGNoZWNrUG9zaXRpb24oKTsK
K30KKworZnVuY3Rpb24gb25LZXlEb3duKCkgeworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgc2xpZGVy
VmFsdWUgPSAwOworCit2YXIgY2hlY2tQb3NpdGlvbiA9IChmdW5jdGlvbigpIHsKKworICAgIHZh
ciBuQ2hlY2sgPSAwOworICAgIHZhciBzbGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVy
M107CisgICAgdmFyIGV4cGVjdGVkUG9zaXRpb25zID0gWzUwLCA1MCwgMCwgMTAwLCA1MF07Cisg
ICAgdmFyIHNsaWRlckluZGV4ID0gMDsKKworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgc2xpZGVyVmFsdWUgPSBzbGlkZXJbc2xpZGVySW5kZXhdLnZhbHVlOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlclZhbHVlIiwgU3RyaW5nKGV4cGVjdGVkUG9zaXRpb25z
W25DaGVjaysrXSkpOworICAgICAgICBpZiAobkNoZWNrICUgZXhwZWN0ZWRQb3NpdGlvbnMubGVu
Z3RoID09IDApIHsKKyAgICAgICAgICAgIHNsaWRlckluZGV4Kys7CisgICAgICAgICAgICBuQ2hl
Y2sgPSAwOworICAgICAgICB9CisgICAgfTsKKworfSkoKTsKKworZnVuY3Rpb24gcnVuVGVzdChz
bGlkZXIsIHJvdGF0ZWQpIHsKKworICAgIHZhciB3ID0gc2xpZGVyLmNsaWVudFdpZHRoOworICAg
IHZhciBoID0gc2xpZGVyLmNsaWVudEhlaWdodDsKKyAgICB2YXIgeCA9IHNsaWRlci5vZmZzZXRM
ZWZ0ICsgdy8yOworICAgIHZhciB5ID0gc2xpZGVyLm9mZnNldFRvcCArIGgvMjsKKworICAgIGlm
IChyb3RhdGVkKSB7CisgICAgICB3ID0gc2xpZGVyLmNsaWVudEhlaWdodDsKKyAgICAgIGggPSBz
bGlkZXIuY2xpZW50V2lkdGg7CisgICAgfQorCisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBv
aW50cygpOworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgw
LCB4IC0gdy8yLCB5ICsgaC8yKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAg
IGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgeCArIHcvMiwgeSAtIGgvMik7CisgICAg
ZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBv
aW50KDAsIHgsIHkpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRT
ZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsK
K30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIG9uVG91Y2hTdGFy
dCwgZmFsc2UpOworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgb25Ub3Vj
aE1vdmUsIGZhbHNlKTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgb25U
b3VjaEVuZCwgZmFsc2UpOworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIG9u
S2V5RG93biwgZmFsc2UpOworCitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZl
bnRzIG9yaWdpbmF0aW5nIG9uIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0
ZSB0aGUgc2xpZGVyIHBvc2l0aW9uLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgcnVuVGVzdChzbGlkZXIxLCBmYWxzZSk7Cisg
ICAgcnVuVGVzdChzbGlkZXIyLCBmYWxzZSk7CisgICAgcnVuVGVzdChzbGlkZXIzLCB0cnVlKTsK
KworICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAnKTsKK30gZWxzZSB7CisgICAgZGVidWcoJ1Ro
aXMgdGVzdCByZXF1aXJlcyBEUlQuJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzQ2
ZWY0MDQxZmM1MDM5ZDE1N2NhMGQxNzRlMjZlOTg3NjliOGM4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI4IEBACitUZXN0cyB0aGF0IHRoZSB0b3VjaCBldmVudHMgb3JpZ2luYXRpbmcg
b24gYW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgdXBkYXRlIHRoZSBzbGlkZXIgcG9z
aXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BBU1MgZXZlbnQudG91
Y2hlc1swXS50YXJnZXQuaWQgaXMgInNsaWRlcjEiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIK
K1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiMCIKK1BBU1Mg
c2xpZGVyVmFsdWUgaXMgIjEwMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBldmVu
dC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAic2xpZGVyMiIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMg
IjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIwIgor
UEFTUyBzbGlkZXJWYWx1ZSBpcyAiMTAwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNT
IGV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJzbGlkZXIzIgorUEFTUyBzbGlkZXJWYWx1
ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMg
IjAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIxMDAiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMt
dG91Y2gtbGlzdGVuZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZWJkMjc1ODMzNjVjYTAzN2MyMDFiNmMwMGY2YzYwNWRlZTlkMDgyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpz
LXRvdWNoLWxpc3RlbmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0byBl
bnN1cmUgdGhhdCB0b3VjaCBldmVudHMgYXJlIGRlbGl2ZXJlZCB0byBhbiBpbnB1dCBlbGVtZW50
IHdpdGggdHlwZT1yYW5nZSBldmVuIHdoZW4gdGhlcmUgYXJlIG5vIHRvdWNoIGV2ZW50IGhhbmRs
ZXJzIGluIEphdmFzY3JpcHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BB
U1Mgc2xpZGVyLnZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyLnZhbHVlIGlzICIwIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1s
aXN0ZW5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVy
LW5vLWpzLXRvdWNoLWxpc3RlbmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU1Yjg2NmE4NjI2NWNmMDY4
YTIyMTFiZjdhNGJlYmI1OGIyZGM0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci5odG1sCkBA
IC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwhLS0KKyAgVG91Y2ggdGVzdHMgdGhhdCBpbnZvbHZl
IHRoZSBvbnRvdWNoc3RhcnQsIG9udG91Y2htb3ZlLCBvbnRvdWNoZW5kIG9yIG9udG91Y2hjYW5j
ZWwgY2FsbGJhY2tzCisgIHNob3VsZCBiZSB3cml0dGVuIGluIGFuIGFzeW5jaHJvbm91cyBmYXNo
aW9uIHNvIHRoZXkgY2FuIGJlIHJ1biBvbiBtb2JpbGUgcGxhdGZvcm1zIGxpa2UgQW5kcm9pZC4K
KyAgWW91IHdpbGwgbmVlZCB0byBpbnZva2UgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKSBpbiB5b3Vy
IHRlc3Qgc2NyaXB0IHdoZW4gdGhlIHRlc3QgY29tcGxldGVzLgorLS0+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5l
ci5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjN2Q1MTZlOWFkNTM1
ZjY1Nzg3Y2QxYzA3YWU3YzEyM2U1Y2M2MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbApAQCAtMCwwICsxLDE2IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8IS0tCisgIFRvdWNoIHRlc3RzIHRoYXQgaW52b2x2ZSB0aGUgb250b3VjaHN0YXJ0
LCBvbnRvdWNobW92ZSwgb250b3VjaGVuZCBvciBvbnRvdWNoY2FuY2VsIGNhbGxiYWNrcworICBz
aG91bGQgYmUgd3JpdHRlbiBpbiBhbiBhc3luY2hyb25vdXMgZmFzaGlvbiBzbyB0aGV5IGNhbiBi
ZSBydW4gb24gbW9iaWxlIHBsYXRmb3JtcyBsaWtlIEFuZHJvaWQuCisgIFlvdSB3aWxsIG5lZWQg
dG8gaW52b2tlIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCkgaW4geW91ciB0ZXN0IHNjcmlwdCB3aGVu
IHRoZSB0ZXN0IGNvbXBsZXRlcy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy90b3VjaC1zbGlkZXIuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151473</attachid>
            <date>2012-07-10 09:59:27 -0700</date>
            <delta_ts>2012-07-10 15:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120710125926.patch</filename>
            <type>text/plain</type>
            <size>28754</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ2NmU1ZWIwZDgyY2I3
M2YyMmQwNmUxMjA5OTZkYjVkMDA5MjZmYy4uZDFiMzI3ZmU0NmUzZTQ2ZWMxOWJlZDRmMjNiZDAx
YWZlODM2YmFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA3LTEwICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0b3VjaCBldmVudCBoYW5kbGluZyBvbiBp
bnB1dCBlbGVtZW50cworICAgICAgICBhbmQgZHJhZ2dpbmcgYSBzbGlkZXIgd2l0aCB0b3VjaCBz
dGFydCBhbmQgbW92ZSBldmVudHMuICBQcmV2aW91c2x5LAorICAgICAgICBtYW5pcHVsYXRpbmcg
YSBzbGlkZXIgb24gYSB0b3VjaCBzY3JlZW4gcmVxdWlyZWQgZ2VuZXJhdGlvbiBvZgorICAgICAg
ICBzeW50aGV0aWMgbW91c2UgZXZlbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBz
dWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2Ny
aXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy90b3Vj
aC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXIuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNUb3VjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoRXZlbnQpOgorICAg
ICAgICAqIGRvbS9Ub3VjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6VG91Y2gpOgor
ICAgICAgICAqIGRvbS9Ub3VjaC5oOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2g6OmFic29sdXRl
TG9jYXRpb24pOgorICAgICAgICAoVG91Y2gpOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRXZlbnQ6OmlzVG91Y2hFdmVudCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vVG91Y2hFdmVudC5oOgorICAgICAgICAoVG91Y2hF
dmVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAq
IGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZTo6aGFzVG91Y2hFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENsaWNrSGFuZGxpbmdTdGF0ZSk6CisgICAg
ICAgIChJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxl
VG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFzVG91Y2hF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuaDoKKyAgICAgICAg
KFJhbmdlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuaDoKKyAgICAgICAgKFNsaWRlclRodW1iRWxlbWVudCk6CisKIDIwMTItMDctMTAgIEh1YW5n
IERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgRG9uJ3QgZGVz
dHJveSB0aGUgZGVjb2RlZCBkYXRhIG9mIGFuIGltYWdlIGlmIFdlYktpdCBpcyBhYm91dCB0byBy
ZW5kZXIgdGhlIGltYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzNmI4ZDU0NTIy
NWNjYmFiNjRiZGIxNTAxYWI2NjllZDc5Yjk2ZTVjLi5kNDc0MDU0Zjg4MzIwMmU4NWQwMWQyMzkz
OWY1NjZkNjA5YjIxNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTA3LTEwICBLZXZpbiBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgSW5wdXQgZWxlbWVudHMgd2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQg
dG91Y2ggaGFuZGxlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODgwNworCisgICAgICAgIEFkZHMgZmxhZyB0byBlbmFibGUgbmF0aXZlIGhhbmRs
aW5nIG9mIHRvdWNoIGV2ZW50cyBmb3IgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgd2l0aCB0eXBl
PXJhbmdlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCBy
YXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09Q
UyEpLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMi0wNy0xMCAgSm9jaGVuIEVp
c2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9s
bGVkIERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCBjOWE0NWRjNDllZDg5M2M3ZDdmNWQ0MjBk
NjA3OWIyNjQ4MGVjY2NiLi43NjEzMTNjNTk5OWZjNTZhNjkyNDgyYTk1NmM4YjA0NDhiM2NkMjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTEyNiw2ICsxMjYsMTEgQEAgYm9vbCBFdmVudDo6aXNL
ZXlib2FyZEV2ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZlbnQ6
OmlzVG91Y2hFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV2
ZW50Ojppc0RyYWdFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aAppbmRleCAzNmVkOWE2ZDk2N2RlZmQxZTgzZWUyNTllOWM4YjcyZTdkMDZlNTUzLi5kMjk4ZDkw
YTc3YTE2NTBkMmE4YjU2MmI1M2U1MzhmZGUzNTU0MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTIw
LDYgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlz
VUlFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUV2ZW50KCkgY29u
c3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRXZlbnQoKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0OwogCiAgICAgICAgIC8vIERyYWcg
ZXZlbnRzIGFyZSBhIHN1YnNldCBvZiBtb3VzZSBldmVudHMuCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0RyYWdFdmVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5jcHAKaW5kZXggY2Y3MjFkZjkwNjBm
ZmU0ZDgyNzhmMGU3OTQwNjQ5ZmY4YjEwZTVhZi4uYTZiZGEyNTY4ZjIwNDIzMTQ5NzUwNDJjOThh
NWMzMDA3MTMyNWMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJUb3VjaC5oIgogCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKIApAQCAtNjgsNiArNjksMTAgQEAgVG91Y2g6
OlRvdWNoKEZyYW1lKiBmcmFtZSwgRXZlbnRUYXJnZXQqIHRhcmdldCwgdW5zaWduZWQgaWRlbnRp
ZmllciwgaW50IHNjcmVlblgKICAgICAsIG1fcm90YXRpb25BbmdsZShyb3RhdGlvbkFuZ2xlKQog
ICAgICwgbV9mb3JjZShmb3JjZSkKIHsKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5w
YWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICBmbG9hdCB4
ID0gcGFnZVggKiBzY2FsZUZhY3RvcjsKKyAgICBmbG9hdCB5ID0gcGFnZVkgKiBzY2FsZUZhY3Rv
cjsKKyAgICBtX2Fic29sdXRlTG9jYXRpb24gPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2lu
dCh4LCB5KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmgKaW5kZXgg
ZjRjOWU4MDYxZDhjNzNhYTAyMDMzYWM0NGM0OTA0ZmQyNDAzMDlmNi4uMWU4MDI1M2U2ZTljZWU1
ZGU3M2I4MTRkMDAzZjAwZTY5YzIxNDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RvdWNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
KyNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01
OSw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgd2Via2l0UmFkaXVzWSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFkaXVzWTsgfQogICAgIGZsb2F0IHdlYmtpdFJvdGF0aW9uQW5nbGUoKSBjb25zdCB7
IHJldHVybiBtX3JvdGF0aW9uQW5nbGU7IH0KICAgICBmbG9hdCB3ZWJraXRGb3JjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9yY2U7IH0KKyAgICBjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVMb2NhdGlvbjsgfQogCiBwcml2YXRlOgog
ICAgIFRvdWNoKEZyYW1lKiBmcmFtZSwgRXZlbnRUYXJnZXQqIHRhcmdldCwgdW5zaWduZWQgaWRl
bnRpZmllciwKQEAgLTc3LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9yYWRpdXNZOwog
ICAgIGZsb2F0IG1fcm90YXRpb25BbmdsZTsKICAgICBmbG9hdCBtX2ZvcmNlOworICAgIExheW91
dFBvaW50IG1fYWJzb2x1dGVMb2NhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAppbmRleCBiZmQ2MzYwZmI4NWYzN2JmMGJmMmVhOGQ5
NGRkYTE5YTAxZDgzMWE1Li5hNThmMWRjYzllMjM4ZWJlYTQ2MmNmYTViNjU5NDc2ZTFiNjAzNmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCkBAIC05NCw2ICs5NCwxMSBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIFRvdWNoRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAogICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVG91Y2hFdmVudDsKIH0KIAorYm9vbCBUb3VjaEV2
ZW50Ojppc1RvdWNoRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmgKaW5kZXggMjk3ZTM0MGY0NmI0M2JjYTc2NTkwMTUyYmNjZTE5MTU1
ZTU3OWRhMy4uYjJlNWIyZWUzNDZiZDgwMDc1MmRiMTlkNmU4MjgxNDUwM2M4NGM3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2hFdmVudC5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRvdWNoSG9sZChib29sIHRvdWNoSG9sZCkgeyBtX3RvdWNoSG9sZCA9IHRvdWNoSG9sZDsgfQog
ICAgIGJvb2wgaXNUb3VjaEhvbGQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoSG9sZDsgfQogI2Vu
ZGlmCisgICAgdmlydHVhbCBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0IE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZTc3MzI4NDA3ZTE2
M2IxYzAwMDNlZDUyMTA0NDg5ZjUzY2RiM2MxOC4uZTEzNzNkNzVmNWNmNjg2MmJmZjk3MmYyNTJl
ZjBjNTYzZDliMmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC02Nyw2ICs2NywxMCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJUb3VjaEV2ZW50
LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtOTgsNiArMTAyLDcgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAgICAsIG1fdmFs
dWVBdHRyaWJ1dGVXYXNVcGRhdGVkQWZ0ZXJQYXJzaW5nKGZhbHNlKQogICAgICwgbV93YXNNb2Rp
ZmllZEJ5VXNlcihmYWxzZSkKICAgICAsIG1fY2FuUmVjZWl2ZURyb3BwZWRGaWxlcyhmYWxzZSkK
KyAgICAsIG1faGFzVG91Y2hFdmVudEhhbmRsZXIoZmFsc2UpCiAgICAgLCBtX2lucHV0VHlwZShJ
bnB1dFR5cGU6OmNyZWF0ZVRleHQodGhpcykpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaW5w
dXRUYWcpIHx8IGhhc1RhZ05hbWUoaXNpbmRleFRhZykpOwpAQCAtMTMwLDYgKzEzNSwxMCBAQCBI
VE1MSW5wdXRFbGVtZW50Ojp+SFRNTElucHV0RWxlbWVudCgpCiAgICAgLy8gV2Ugc2hvdWxkIHVu
cmVnaXN0ZXIgaXQgdG8gYXZvaWQgYWNjZXNzaW5nIGEgZGVsZXRlZCBvYmplY3QuCiAgICAgaWYg
KGlzUmFkaW9CdXR0b24oKSkKICAgICAgICAgZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+
Y2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0aGlzKTsKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgIGlmIChtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKQorICAgICAgICBkb2N1
bWVudCgpLT5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigpOworI2VuZGlmCiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTElucHV0RWxlbWVudDo6bmFtZSgpIGNvbnN0CkBAIC00MDEsNiAr
NDEwLDE4IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCiAgICAgbV9pbnB1
dFR5cGUgPSBuZXdUeXBlLnJlbGVhc2UoKTsKICAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93
U3VidHJlZSgpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBib29sIGhhc1RvdWNo
RXZlbnRIYW5kbGVyID0gbV9pbnB1dFR5cGUtPmhhc1RvdWNoRXZlbnRIYW5kbGVyKCk7CisgICAg
aWYgKGhhc1RvdWNoRXZlbnRIYW5kbGVyICE9IG1faGFzVG91Y2hFdmVudEhhbmRsZXIpIHsKKyAg
ICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlcikgeworICAgICAgICBkb2N1bWVudCgpLT5kaWRB
ZGRUb3VjaEV2ZW50SGFuZGxlcigpOworICAgICAgICBkb2N1bWVudCgpLT5hZGRMaXN0ZW5lclR5
cGUoRG9jdW1lbnQ6OlRPVUNIX0xJU1RFTkVSKTsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1
bWVudCgpLT5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigpOworICAgICAgbV9oYXNUb3VjaEV2
ZW50SGFuZGxlciA9IGhhc1RvdWNoRXZlbnRIYW5kbGVyOworICAgIH0KKyNlbmRpZgorCiAgICAg
c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpOwogCiAgICAgYm9vbCB3aWxsU3RvcmVWYWx1ZSA9
IG1faW5wdXRUeXBlLT5zdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpOwpAQCAtMTAz
OCw2ICsxMDU5LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZ0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgaWYgKGV2dC0+aXNUb3VjaEV2ZW50KCkpIHsKKyAgICAgICAgbV9p
bnB1dFR5cGUtPmhhbmRsZVRvdWNoRXZlbnQoc3RhdGljX2Nhc3Q8VG91Y2hFdmVudCo+KGV2dCkp
OworICAgICAgICBpZiAoZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKGV2dC0+aXNLZXlib2FyZEV2ZW50KCkgJiYgZXZ0
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewogICAgICAgICBtX2lucHV0
VHlwZS0+aGFuZGxlS2V5ZG93bkV2ZW50KHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldnQp
KTsKICAgICAgICAgaWYgKGV2dC0+ZGVmYXVsdEhhbmRsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMWVjNWVmMGQ1Y2VkNWU3Njk0NWQzOTE0Yzk4MmIxZTYy
MzZhNzkwMi4uZTEwODI1Y2Q2MTk1NzZkYjJmNDMyMjk2ZWQxYmU5Y2ViZTQ4ZDc1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM5MCw2ICszOTAsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV92YWx1ZUF0dHJpYnV0ZVdhc1VwZGF0ZWRBZnRlclBhcnNpbmcgOiAx
OwogICAgIGJvb2wgbV93YXNNb2RpZmllZEJ5VXNlciA6IDE7CiAgICAgYm9vbCBtX2NhblJlY2Vp
dmVEcm9wcGVkRmlsZXMgOiAxOworICAgIGJvb2wgbV9oYXNUb3VjaEV2ZW50SGFuZGxlcjogMTsK
ICAgICBPd25QdHI8SW5wdXRUeXBlPiBtX2lucHV0VHlwZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAppbmRleCAzMDYwMmEwMDk1ZTYyZTgwODQ5ZDRlNDIyYzJjNzgzMGExMDRjMzY5
Li4yNTMwZTllYjFmNDg1MDNhM2IzMGU5NDc4MzQxY2E4YWYzMjA1MTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCkBAIC00MTcsNiArNDE3LDEyIEBAIHZvaWQgSW5wdXRUeXBlOjpoYW5k
bGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKQogewogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKK3ZvaWQgSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqKQoreworfQor
I2VuZGlmCisKIHZvaWQgSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQoRXZlbnQqKQogewogfQpAQCAt
ODczLDYgKzg3OSwxMyBAQCB2b2lkIElucHV0VHlwZTo6c3VidHJlZUhhc0NoYW5nZWQoKQogewog
fQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgSW5wdXRUeXBlOjpoYXNUb3VjaEV2
ZW50SGFuZGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIFN0
cmluZyBJbnB1dFR5cGU6OmRlZmF1bHRUb29sVGlwKCkgY29uc3QKIHsKICAgICByZXR1cm4gU3Ry
aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA0NTEzMDNkMTNjNDI0MGZlYzc1YWQw
ZWYwMDk3MzIzZDBlMzEzZGI5Li5mYTQxZmY4NTcwMDExZWY0YzA0MWQ2YzAzYWE4ZmZmMGUxNDg4
NDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTYxLDEyICs2MSwxNCBAQCBjbGFzcyBO
b2RlOwogY2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5k
ZXJTdHlsZTsKK2NsYXNzIFRvdWNoRXZlbnQ7CiBjbGFzcyBXaGVlbEV2ZW50OwogCiB0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwogCiBzdHJ1Y3QgQ2xpY2tIYW5kbGluZ1N0YXRlIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgCiBwdWJsaWM6CiAgICAgYm9vbCBjaGVja2VkOwog
ICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsKQEAgLTE5MCw2ICsxOTIsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopOwogICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRF
dmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKTsK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2
ZW50KFRvdWNoRXZlbnQqKTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBmb3J3YXJkRXZlbnQo
RXZlbnQqKTsKICAgICAvLyBIZWxwZXJzIGZvciBldmVudCBoYW5kbGVycy4KICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCopOwpAQCAtMjAyLDYgKzIwNyw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNl
RXZlbnRzKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCk7
CiAgICAgdmlydHVhbCB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCk7CisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudEhhbmRsZXIoKSBjb25zdDsK
KyNlbmRpZgogCiAgICAgLy8gU2hhZG93IHRyZWUgaGFuZGxpbmcKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCBmZDExY2JhYTc5NWM2MTg5YmJjYzEyYTQ4ZjliMjcx
NWQ1MDEzYTdjLi4xMGM3NTc2YmZhN2NjYTM3NmU4MjQ1ZWEzYzQ0ZmVjZTU3MWRiYWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtNDksNiArNDksMTIgQEAKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRvdWNoLmgiCisjaW5jbHVkZSAi
VG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEzNCw2ICsxNDAs
MzQgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVu
dCogZXZlbnQpCiAgICAgdGh1bWItPmRyYWdGcm9tKGV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkp
OwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfU0xJREVS
KQordm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KiBldmVu
dCkKK3sKKyAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8IGVsZW1lbnQoKS0+cmVhZE9u
bHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLnRvdWNoZW5kRXZlbnQpIHsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBUb3VjaExpc3QqIHRvdWNoZXMgPSBl
dmVudC0+dGFyZ2V0VG91Y2hlcygpOworICAgIGlmICh0b3VjaGVzLT5sZW5ndGgoKSA9PSAxKSB7
CisgICAgICAgIFRvdWNoKiB0b3VjaCA9IHRvdWNoZXMtPml0ZW0oMCk7CisgICAgICAgIFNsaWRl
clRodW1iRWxlbWVudCogdGh1bWIgPSBzbGlkZXJUaHVtYkVsZW1lbnRPZihlbGVtZW50KCkpOwor
ICAgICAgICB0aHVtYi0+c2V0UG9zaXRpb25Gcm9tUG9pbnQodG91Y2gtPmFic29sdXRlTG9jYXRp
b24oKSk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KK30KKwor
Ym9vbCBSYW5nZUlucHV0VHlwZTo6aGFzVG91Y2hFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAg
IHJldHVybiB0cnVlOworfQorI2VuZGlmCisjZW5kaWYKKwogdm9pZCBSYW5nZUlucHV0VHlwZTo6
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChlbGVt
ZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25seSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IGZmOGY0MDI4ZjIwNzU5ZTgxZTdkNjUzYTYzOGQ5MzEy
ODc3YTBiOWYuLjA5ODNiM2Q1N2ZlOTcyZTc1MjE5MzQ3OWM5ODQ2MzQ4NzYxYTc1M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTUxLDYgKzUxLDEyIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU3RlcHBhYmxlKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQq
KSBPVkVSUklERTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9T
TElERVIpCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0IE9W
RVJSSURFOworI2VuZGlmCisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2
ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IGUy
ZDhiNjZlYmIxMWY0OWQxYzhiMDFiNGM4MWVlMWJiMDUxMDllOWIuLjM2ZDY0MTg2ZjhjMWRhMjA0
MjI1N2QxMThjYWUxZjIxMzgzNDRjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYp
OwogCiBwcml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCopOwpAQCAtNjcs
NyArNjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTm9kZSogZm9jdXNEZWxlZ2F0ZSgpOwog
ICAgIHZvaWQgc3RhcnREcmFnZ2luZygpOwogICAgIHZvaWQgc3RvcERyYWdnaW5nKCk7Ci0gICAg
dm9pZCBzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9v
bCBtX2luRHJhZ01vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4
IGVjMDlmZjhiYjdlYTE2MDI4ZDA1MTc2NTM5ZjRlMWZiZDRjOTRjYjQuLmU5NzhhNmQ0ZDQwYjE3
MGZmNTZmZDY3NTdjNmFjMGI1YTcxOWNkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkKQEAgLTk3LDYgKzk3LDcgQEAKICAgICAgICdFTkFCTEVfVE9VQ0hfQURKVVNUTUVOVD0x
JywKICAgICAgICdFTkFCTEVfVE9VQ0hfRVZFTlRTPTwoZW5hYmxlX3RvdWNoX2V2ZW50cyknLAog
ICAgICAgJ0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9PChlbmFibGVfdG91Y2hfaWNvbl9sb2Fk
aW5nKScsCisgICAgICAnRU5BQkxFX1RPVUNIX1NMSURFUj0xJywKICAgICAgICdFTkFCTEVfVjhf
U0NSSVBUX0RFQlVHX1NFUlZFUj0xJywKICAgICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAn
RU5BQkxFX1ZJREVPX1RSQUNLPTEnLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIwOTEyYTVlMzNkODRmY2EzNGY5MzNlMTNm
Mjg0NmU2NjA2NDdlNjMuLjFmNDBhMWMwNjMzMjVhOGQ3MDlhYjliNWUxZTdmZDRhOTlmNWQwZmUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNy0xMCAgS2V2aW4gRWxsaXMgIDxrZXZlcnNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIElucHV0IGVsZW1lbnRzIHdpdGggdHlwZT1yYW5nZSBk
byBub3QgaGF2ZSBkZWZhdWx0IHRvdWNoIGhhbmRsZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MDcKKworICAgICAgICBBZGQgYXV0b21hdGVk
IHRlc3QgZm9yIG1hbmlwdWxhdGluZyBhbiBpbnB1dCBzbGlkZXIgdmlhIHRvdWNoCisgICAgICAg
IGV2ZW50cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwg
cmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1z
bGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXIuanM6IEFkZGVkLgorICAgICAgICAoY2hlY2tQb3Np
dGlvbik6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXNs
aWRlci5qczogQWRkZWQuCisgICAgICAgIChvblRvdWNoU3RhcnQpOgorICAgICAgICAob25Ub3Vj
aEVuZCk6CisgICAgICAgIChvbktleURvd24pOgorICAgICAgICAoY2hlY2tQb3NpdGlvbik6Cisg
ICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNo
LWxpc3RlbmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKwogMjAxMi0wNy0wOSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25zIEFQSV0gc2ltcGxpZnkgcGFuZWwg
c2l6ZSBjaGVjayBpbiBleHRlbnNpb25zLXBhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXItbm8tanMtdG91
Y2gtbGlzdGVuZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVz
dHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NGZh
ZmI2NWNjMzY2NjM3YmVkOTNhNjVkMTQyOTNmMGIxN2QyZGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5v
LWpzLXRvdWNoLWxpc3RlbmVyLmpzCkBAIC0wLDAgKzEsNTkgQEAKK3ZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS53aWR0aCA9ICIyMDAlIjsKK3ZhciBz
bGlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworc2xpZGVyLnNldEF0dHJp
YnV0ZSgidHlwZSIsICJyYW5nZSIpOworc2xpZGVyLnN0eWxlLndpZHRoID0gIjIwMHB4IjsKK3Ns
aWRlci5zdHlsZS5oZWlnaHQgPSAiMzBweCI7CisKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3Jl
KGRpdiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKSk7CitkaXYuYXBwZW5kQ2hp
bGQoc2xpZGVyKTsKKworCit2YXIgY2hlY2tQb3NpdGlvbiA9IChmdW5jdGlvbigpIHsKKworICB2
YXIgbkNoZWNrID0gMDsKKworICB2YXIgZXhwZWN0ZWRQb3NpdGlvbnMgPSBbNTAsIDBdOworCisg
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci52
YWx1ZSIsIFN0cmluZyhleHBlY3RlZFBvc2l0aW9uc1tuQ2hlY2srK10pKTsKKyAgfTsKKworfSko
KTsKKworZnVuY3Rpb24gb25LZXlEb3duKCkgeworICAgIGNoZWNrUG9zaXRpb24oKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJz
ZWQoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93
bik7CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0byBlbnN1cmUgdGhhdCB0b3VjaCBldmVudHMgYXJl
IGRlbGl2ZXJlZCB0byBhbiBpbnB1dCBlbGVtZW50IHdpdGggdHlwZT1yYW5nZSBldmVuIHdoZW4g
dGhlcmUgYXJlIG5vIHRvdWNoIGV2ZW50IGhhbmRsZXJzIGluIEphdmFzY3JpcHQuIFRoaXMgdGVz
dCBpcyBvbmx5IGV4cGVjdGVkIHRvIHBhc3MgaWYgRU5BQkxFX1RPVUNIX1NMSURFUiBpcyBkZWZp
bmVkLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgdmFyIHggPSBzbGlkZXIub2Zmc2V0TGVmdDsKKyAgICB2YXIgeSA9IHNsaWRl
ci5vZmZzZXRUb3AgKyBzbGlkZXIuY2xpZW50SGVpZ2h0LzI7CisgICAgdmFyIHcgPSBzbGlkZXIu
Y2xpZW50V2lkdGg7CisKKyAgICBjaGVja1Bvc2l0aW9uKCk7CisKKyAgICBldmVudFNlbmRlci5j
bGVhclRvdWNoUG9pbnRzKCk7CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCh4ICsgdy8y
LCB5KTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7CisKKyAgICBldmVudFNlbmRlci51
cGRhdGVUb3VjaFBvaW50KDAsIHgsIHkpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOwor
CisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIu
dG91Y2hFbmQoKTsKKworICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAnKTsKKworfSBlbHNlIHsK
KyAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4nKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYzOTFkZDA0Y2QyYWEzOTdkYzAyZDdhMWQwZTM0YjFhYWY1NzEwNDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQt
dGVzdHMvdG91Y2gtc2xpZGVyLmpzCkBAIC0wLDAgKzEsMTIwIEBACit2YXIgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYuc3R5bGUud2lkdGggPSAiMjAwJSI7Cit2YXIg
c2xpZGVyMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CitzbGlkZXIxLmlkID0g
InNsaWRlcjEiOworc2xpZGVyMS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKK3NsaWRl
cjEuc3R5bGUud2lkdGggPSAiMjAwcHgiOworc2xpZGVyMS5zdHlsZS5oZWlnaHQgPSAiMzBweCI7
Cit2YXIgc2xpZGVyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CitzbGlkZXIy
LmlkID0gInNsaWRlcjIiOworc2xpZGVyMi5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsK
K3NsaWRlcjIuc3R5bGUud2lkdGggPSAiMzBweCI7CitzbGlkZXIyLnN0eWxlLmhlaWdodCA9ICIy
MDBweCI7CitzbGlkZXIyLnN0eWxlLnNldFByb3BlcnR5KCItd2Via2l0LWFwcGVhcmFuY2UiLCAi
c2xpZGVyLXZlcnRpY2FsIik7Cit2YXIgc2xpZGVyMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7CitzbGlkZXIzLmlkID0gInNsaWRlcjMiOworc2xpZGVyMy5zZXRBdHRyaWJ1dGUo
InR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjMuc3R5bGUud2lkdGggPSAiMjAwcHgiOworc2xpZGVy
My5zdHlsZS5oZWlnaHQgPSAiMzBweCI7CitzbGlkZXIzLnN0eWxlLnNldFByb3BlcnR5KCItd2Vi
a2l0LXRyYW5zZm9ybSIsICJyb3RhdGUoLTkwZGVnKSIpOworc2xpZGVyMy5zdHlsZS5zZXRQcm9w
ZXJ0eSgibWFyZ2luIiwgIjEyMHB4IDAiKTsKKworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
ZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpKTsKK2Rpdi5hcHBlbmRDaGls
ZChzbGlkZXIxKTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIyKTsKK2Rpdi5hcHBlbmRDaGlsZChz
bGlkZXIzKTsKKwordmFyIG9uVG91Y2hTdGFydCA9IChmdW5jdGlvbigpIHsKKworICAgIHZhciBz
bGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVyM107CisgICAgdmFyIG5DaGVjayA9IDA7
CisKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQiLCBzbGlkZXJbbkNoZWNrKytdLmlkKTsKKyAg
ICAgICAgY2hlY2tQb3NpdGlvbigpOworICAgIH0KKworfSkoKTsKKworZnVuY3Rpb24gb25Ub3Vj
aE1vdmUoKSB7CisgICAgY2hlY2tQb3NpdGlvbigpOworfQorCitmdW5jdGlvbiBvblRvdWNoRW5k
KCkgeworICAgIGNoZWNrUG9zaXRpb24oKTsKK30KKworZnVuY3Rpb24gb25LZXlEb3duKCkgewor
ICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCit2YXIgc2xpZGVyVmFsdWUgPSAwOworCit2YXIgY2hlY2tQb3NpdGlv
biA9IChmdW5jdGlvbigpIHsKKworICAgIHZhciBuQ2hlY2sgPSAwOworICAgIHZhciBzbGlkZXIg
PSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVyM107CisgICAgdmFyIGV4cGVjdGVkUG9zaXRpb25z
ID0gWzUwLCA1MCwgMCwgMTAwLCA1MF07CisgICAgdmFyIHNsaWRlckluZGV4ID0gMDsKKworICAg
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc2xpZGVyVmFsdWUgPSBzbGlkZXJbc2xpZGVy
SW5kZXhdLnZhbHVlOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlclZhbHVl
IiwgU3RyaW5nKGV4cGVjdGVkUG9zaXRpb25zW25DaGVjaysrXSkpOworICAgICAgICBpZiAobkNo
ZWNrICUgZXhwZWN0ZWRQb3NpdGlvbnMubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIHNsaWRl
ckluZGV4Kys7CisgICAgICAgICAgICBuQ2hlY2sgPSAwOworICAgICAgICB9CisgICAgfTsKKwor
fSkoKTsKKworZnVuY3Rpb24gcnVuVGVzdChzbGlkZXIsIHJvdGF0ZWQpIHsKKworICAgIHZhciB3
ID0gc2xpZGVyLmNsaWVudFdpZHRoOworICAgIHZhciBoID0gc2xpZGVyLmNsaWVudEhlaWdodDsK
KyAgICB2YXIgeCA9IHNsaWRlci5vZmZzZXRMZWZ0ICsgdy8yOworICAgIHZhciB5ID0gc2xpZGVy
Lm9mZnNldFRvcCArIGgvMjsKKworICAgIGlmIChyb3RhdGVkKSB7CisgICAgICB3ID0gc2xpZGVy
LmNsaWVudEhlaWdodDsKKyAgICAgIGggPSBzbGlkZXIuY2xpZW50V2lkdGg7CisgICAgfQorCisg
ICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygpOworICAgIGV2ZW50U2VuZGVyLmFkZFRv
dWNoUG9pbnQoeCwgeSk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgZXZl
bnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCB4IC0gdy8yLCB5ICsgaC8yKTsKKyAgICBldmVu
dFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQo
MCwgeCArIHcvMiwgeSAtIGgvMik7CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisKKyAg
ICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHgsIHkpOworICAgIGV2ZW50U2VuZGVy
LnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7Cisg
ICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigidG91Y2hzdGFydCIsIG9uVG91Y2hTdGFydCwgZmFsc2UpOworZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigidG91Y2htb3ZlIiwgb25Ub3VjaE1vdmUsIGZhbHNlKTsKK2RvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgb25Ub3VjaEVuZCwgZmFsc2UpOworZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIG9uS2V5RG93biwgZmFsc2UpOworCitkZXNjcmlwdGlv
bigiVGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZlbnRzIG9yaWdpbmF0aW5nIG9uIGFuIGlucHV0IGVs
ZW1lbnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0ZSB0aGUgc2xpZGVyIHBvc2l0aW9uLiBUaGlzIHRl
c3QgaXMgb25seSBleHBlY3RlZCB0byBwYXNzIGlmIEVOQUJMRV9UT1VDSF9TTElERVIgaXMgZGVm
aW5lZC4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgIHJ1blRlc3Qoc2xpZGVyMSwgZmFsc2UpOworICAgIHJ1blRlc3Qoc2xpZGVy
MiwgZmFsc2UpOworICAgIHJ1blRlc3Qoc2xpZGVyMywgdHJ1ZSk7CisKKyAgICBldmVudFNlbmRl
ci5rZXlEb3duKCcgJyk7Cit9IGVsc2UgeworICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMg
RFJULicpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91
Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Rv
dWNoLXNsaWRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQzMTIxODhjMGQxOGVjZTQwNDhk
Mzk5MzRiYzAxNWIyM2RjY2VmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAor
VGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZlbnRzIG9yaWdpbmF0aW5nIG9uIGFuIGlucHV0IGVsZW1l
bnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0ZSB0aGUgc2xpZGVyIHBvc2l0aW9uLiBUaGlzIHRlc3Qg
aXMgb25seSBleHBlY3RlZCB0byBwYXNzIGlmIEVOQUJMRV9UT1VDSF9TTElERVIgaXMgZGVmaW5l
ZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBldmVudC50b3VjaGVz
WzBdLnRhcmdldC5pZCBpcyAic2xpZGVyMSIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFT
UyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitGQUlMIHNsaWRlclZhbHVlIHNob3VsZCBiZSAwLiBXYXMg
NTAuCitGQUlMIHNsaWRlclZhbHVlIHNob3VsZCBiZSAxMDAuIFdhcyA1MC4KK1BBU1Mgc2xpZGVy
VmFsdWUgaXMgIjUwIgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAic2xpZGVy
MiIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitG
QUlMIHNsaWRlclZhbHVlIHNob3VsZCBiZSAwLiBXYXMgNTAuCitGQUlMIHNsaWRlclZhbHVlIHNo
b3VsZCBiZSAxMDAuIFdhcyA1MC4KK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBldmVu
dC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAic2xpZGVyMyIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMg
IjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitGQUlMIHNsaWRlclZhbHVlIHNob3VsZCBi
ZSAwLiBXYXMgNTAuCitGQUlMIHNsaWRlclZhbHVlIHNob3VsZCBiZSAxMDAuIFdhcyA1MC4KK1BB
U1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVu
ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YmM3NjIyNjM4NWMyOGM5MjkyNjNkYWRmZDEy
YWIyMTBlZTdhMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTIgQEAKK1Rlc3RzIHRvIGVuc3VyZSB0aGF0IHRvdWNoIGV2ZW50cyBhcmUgZGVsaXZl
cmVkIHRvIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIGV2ZW4gd2hlbiB0aGVyZSBh
cmUgbm8gdG91Y2ggZXZlbnQgaGFuZGxlcnMgaW4gSmF2YXNjcmlwdC4gVGhpcyB0ZXN0IGlzIG9u
bHkgZXhwZWN0ZWQgdG8gcGFzcyBpZiBFTkFCTEVfVE9VQ0hfU0xJREVSIGlzIGRlZmluZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BBU1Mgc2xpZGVyLnZhbHVlIGlzICI1
MCIKK0ZBSUwgc2xpZGVyLnZhbHVlIHNob3VsZCBiZSAwLiBXYXMgNTAuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMt
dG91Y2gtbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTViODY2YTg2MjY1Y2YwNjhhMjIxMWJm
N2E0YmViYjU4YjJkYzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmh0bWwKQEAgLTAsMCAr
MSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPCEtLQorICBUb3VjaCB0ZXN0cyB0aGF0IGludm9sdmUgdGhlIG9u
dG91Y2hzdGFydCwgb250b3VjaG1vdmUsIG9udG91Y2hlbmQgb3Igb250b3VjaGNhbmNlbCBjYWxs
YmFja3MKKyAgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYW4gYXN5bmNocm9ub3VzIGZhc2hpb24gc28g
dGhleSBjYW4gYmUgcnVuIG9uIG1vYmlsZSBwbGF0Zm9ybXMgbGlrZSBBbmRyb2lkLgorICBZb3Ug
d2lsbCBuZWVkIHRvIGludm9rZSBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpIGluIHlvdXIgdGVzdCBz
Y3JpcHQgd2hlbiB0aGUgdGVzdCBjb21wbGV0ZXMuCistLT4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtc2xpZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM3ZDUxNmU5YWQ1MzVmNjU3ODdj
ZDFjMDdhZTdjMTIzZTVjYzYzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwhLS0KKyAgVG91Y2ggdGVzdHMgdGhhdCBpbnZvbHZlIHRoZSBvbnRvdWNoc3RhcnQsIG9udG91
Y2htb3ZlLCBvbnRvdWNoZW5kIG9yIG9udG91Y2hjYW5jZWwgY2FsbGJhY2tzCisgIHNob3VsZCBi
ZSB3cml0dGVuIGluIGFuIGFzeW5jaHJvbm91cyBmYXNoaW9uIHNvIHRoZXkgY2FuIGJlIHJ1biBv
biBtb2JpbGUgcGxhdGZvcm1zIGxpa2UgQW5kcm9pZC4KKyAgWW91IHdpbGwgbmVlZCB0byBpbnZv
a2UgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKSBpbiB5b3VyIHRlc3Qgc2NyaXB0IHdoZW4gdGhlIHRl
c3QgY29tcGxldGVzLgorLS0+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3RvdWNoLXNsaWRlci5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1z
bGlkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9l
dmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTE0MWY0
ZmI0N2UzYzE1MDkyNTgzYThiMzIyYTA4ZmM4ZjExZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVy
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitUZXN0cyB0aGF0IHRoZSB0b3VjaCBldmVu
dHMgb3JpZ2luYXRpbmcgb24gYW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgdXBkYXRl
IHRoZSBzbGlkZXIgcG9zaXRpb24uIFRoaXMgdGVzdCBpcyBvbmx5IGV4cGVjdGVkIHRvIHBhc3Mg
aWYgRU5BQkxFX1RPVUNIX1NMSURFUiBpcyBkZWZpbmVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworCitQQVNTIGV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJzbGlkZXIx
IgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BB
U1Mgc2xpZGVyVmFsdWUgaXMgIjAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIxMDAiCitQQVNTIHNs
aWRlclZhbHVlIGlzICI1MCIKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQgaXMgInNs
aWRlcjIiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUw
IgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjEwMCIKK1BB
U1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBp
cyAic2xpZGVyMyIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBp
cyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiMTAw
IgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZl
bnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2Y0MWIxMTMzODExNTUzMWI5NGRiZWUxYjc4YzQ3ZDZiOTQ5NWYxMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRz
L3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMiBAQAorVGVzdHMgdG8gZW5zdXJlIHRoYXQgdG91Y2ggZXZlbnRzIGFyZSBkZWxp
dmVyZWQgdG8gYW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgZXZlbiB3aGVuIHRoZXJl
IGFyZSBubyB0b3VjaCBldmVudCBoYW5kbGVycyBpbiBKYXZhc2NyaXB0LiBUaGlzIHRlc3QgaXMg
b25seSBleHBlY3RlZCB0byBwYXNzIGlmIEVOQUJMRV9UT1VDSF9TTElERVIgaXMgZGVmaW5lZC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBzbGlkZXIudmFsdWUgaXMg
IjUwIgorUEFTUyBzbGlkZXIudmFsdWUgaXMgIjAiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151533</attachid>
            <date>2012-07-10 15:01:31 -0700</date>
            <delta_ts>2012-07-10 18:48:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88807-20120710180130.patch</filename>
            <type>text/plain</type>
            <size>28364</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ2NmU1ZWIwZDgyY2I3
M2YyMmQwNmUxMjA5OTZkYjVkMDA5MjZmYy4uNGJhYWM3MDViNWY1ZmU5MGY4NjljMzM1NDBjNWZi
MDcxZjVlYzQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA3LTEwICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5wdXQgZWxlbWVudHMg
d2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHN1cHBvcnQgZm9yIHRvdWNoIGV2ZW50IGhhbmRsaW5nIG9uIGlucHV0IGVsZW1lbnRzCisgICAg
ICAgIGFuZCBkcmFnZ2luZyBhIHNsaWRlciB3aXRoIHRvdWNoIHN0YXJ0IGFuZCBtb3ZlIGV2ZW50
cy4gIFByZXZpb3VzbHksCisgICAgICAgIG1hbmlwdWxhdGluZyBhIHNsaWRlciBvbiBhIHRvdWNo
IHNjcmVlbiByZXF1aXJlZCBnZW5lcmF0aW9uIG9mCisgICAgICAgIHN5bnRoZXRpYyBtb3VzZSBl
dmVudHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1u
by1qcy10b3VjaC1saXN0ZW5lci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy90b3Vj
aC90b3VjaC1zbGlkZXIuaHRtbAorCisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50Ojppc1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgIChFdmVudCk6CisgICAgICAgICogZG9tL1RvdWNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoOjpUb3VjaCk6CisgICAgICAgICogZG9tL1Rv
dWNoLmg6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6YWJzb2x1dGVMb2NhdGlvbik6CisgICAg
ICAgIChUb3VjaCk6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGRvbS9Ub3VjaEV2ZW50Lmg6CisgICAgICAgIChUb3VjaEV2ZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50Ojp+SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5o
OgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhh
bmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpoYXNUb3VjaEV2
ZW50SGFuZGxlcik6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ2xpY2tIYW5kbGluZ1N0YXRlKToKKyAgICAgICAgKElucHV0VHlwZSk6
CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAoUmFuZ2VJbnB1dFR5cGUp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oOgorICAgICAgICAo
U2xpZGVyVGh1bWJFbGVtZW50KToKKwogMjAxMi0wNy0xMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBEb24ndCBkZXN0cm95IHRoZSBkZWNvZGVk
IGRhdGEgb2YgYW4gaW1hZ2UgaWYgV2ViS2l0IGlzIGFib3V0IHRvIHJlbmRlciB0aGUgaW1hZ2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDM2YjhkNTQ1MjI1Y2NiYWI2NGJkYjE1MDFh
YjY2OWVkNzliOTZlNWMuLmNhNzg2ZGUyNzIxNzQ4MDdiMmM5ZDNhODQxZjkxOWY4YjFjMmQyMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMTAg
IEtldmluIEVsbGlzICA8a2V2ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnB1dCBlbGVt
ZW50cyB3aXRoIHR5cGU9cmFuZ2UgZG8gbm90IGhhdmUgZGVmYXVsdCB0b3VjaCBoYW5kbGVycy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODA3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBBZGRzIGZsYWcg
dG8gZW5hYmxlIG5hdGl2ZSBoYW5kbGluZyBvZiB0b3VjaCBldmVudHMgZm9yIGlucHV0IGVsZW1l
bnRzCisgICAgICAgIHdpdGggdHlwZT1yYW5nZS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6
CisKIDIwMTItMDctMTAgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5kZXgg
YzlhNDVkYzQ5ZWQ4OTNjN2Q3ZjVkNDIwZDYwNzliMjY0ODBlY2NjYi4uNzYxMzEzYzU5OTlmYzU2
YTY5MjQ4MmE5NTZjOGIwNDQ4YjNjZDI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0xMjYsNiAr
MTI2LDExIEBAIGJvb2wgRXZlbnQ6OmlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitib29sIEV2ZW50Ojppc1RvdWNoRXZlbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogYm9vbCBFdmVudDo6aXNEcmFnRXZlbnQoKSBjb25zdAogewogICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKaW5kZXggMzZlZDlhNmQ5NjdkZWZkMWU4M2VlMjU5
ZTljOGI3MmU3ZDA2ZTU1My4uZDI5OGQ5MGE3N2ExNjUwZDJhOGI1NjJiNTNlNTM4ZmRlMzU1NDIz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1VJRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVh
bCBib29sIGlzTW91c2VFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXli
b2FyZEV2ZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQoKSBj
b25zdDsKIAogICAgICAgICAvLyBEcmFnIGV2ZW50cyBhcmUgYSBzdWJzZXQgb2YgbW91c2UgZXZl
bnRzLgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEcmFnRXZlbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2guY3BwCmluZGV4IGNmNzIxZGY5MDYwZmZlNGQ4Mjc4ZjBlNzk0MDY0OWZmOGIxMGU1YWYuLmE2
YmRhMjU2OGYyMDQyMzE0OTc1MDQyYzk4YTVjMzAwNzEzMjVjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNw
cApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiVG91Y2guaCIKIAorI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAK
QEAgLTY4LDYgKzY5LDEwIEBAIFRvdWNoOjpUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0
KiB0YXJnZXQsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGludCBzY3JlZW5YCiAgICAgLCBtX3JvdGF0
aW9uQW5nbGUocm90YXRpb25BbmdsZSkKICAgICAsIG1fZm9yY2UoZm9yY2UpCiB7CisgICAgZmxv
YXQgc2NhbGVGYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNj
YWxlRmFjdG9yKCk7CisgICAgZmxvYXQgeCA9IHBhZ2VYICogc2NhbGVGYWN0b3I7CisgICAgZmxv
YXQgeSA9IHBhZ2VZICogc2NhbGVGYWN0b3I7CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcm91
bmRlZExheW91dFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaC5oCmluZGV4IGY0YzllODA2MWQ4YzczYWEwMjAzM2FjNDRjNDkwNGZk
MjQwMzA5ZjYuLjFlODAyNTNlNmU5Y2VlNWRlNzNiODE0ZDAwM2YwMGU2OWMyMTQzNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAog
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdl
YmtpdFJhZGl1c1koKSBjb25zdCB7IHJldHVybiBtX3JhZGl1c1k7IH0KICAgICBmbG9hdCB3ZWJr
aXRSb3RhdGlvbkFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9yb3RhdGlvbkFuZ2xlOyB9CiAgICAg
ZmxvYXQgd2Via2l0Rm9yY2UoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlOyB9CisgICAgY29uc3Qg
TGF5b3V0UG9pbnQmIGFic29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRl
TG9jYXRpb247IH0KIAogcHJpdmF0ZToKICAgICBUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFy
Z2V0KiB0YXJnZXQsIHVuc2lnbmVkIGlkZW50aWZpZXIsCkBAIC03Nyw2ICs3OSw3IEBAIHByaXZh
dGU6CiAgICAgaW50IG1fcmFkaXVzWTsKICAgICBmbG9hdCBtX3JvdGF0aW9uQW5nbGU7CiAgICAg
ZmxvYXQgbV9mb3JjZTsKKyAgICBMYXlvdXRQb2ludCBtX2Fic29sdXRlTG9jYXRpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5kZXgg
YmZkNjM2MGZiODVmMzdiZjBiZjJlYThkOTRkZGExOWEwMWQ4MzFhNS4uYTU4ZjFkY2M5ZTIzOGVi
ZWE0NjJjZmE1YjY1OTQ3NmUxYjYwMzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApA
QCAtOTQsNiArOTQsMTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUb3VjaEV2ZW50OjppbnRlcmZh
Y2VOYW1lKCkgY29uc3QKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRvdWNo
RXZlbnQ7CiB9CiAKK2Jvb2wgVG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3Vj
aEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCmluZGV4IDI5N2UzNDBm
NDZiNDNiY2E3NjU5MDE1MmJjY2UxOTE1NWU1NzlkYTMuLmIyZTViMmVlMzQ2YmQ4MDA3NTJkYjE5
ZDZlODI4MTQ1MDNjODRjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaApAQCAtNjksNiArNjks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3VjaEhvbGQoYm9vbCB0b3VjaEhvbGQpIHsgbV90
b3VjaEhvbGQgPSB0b3VjaEhvbGQ7IH0KICAgICBib29sIGlzVG91Y2hIb2xkKCkgY29uc3QgeyBy
ZXR1cm4gbV90b3VjaEhvbGQ7IH0KICNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZl
bnQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBp
bnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCmluZGV4IGU3NzMyODQwN2UxNjNiMWMwMDAzZWQ1MjEwNDQ4OWY1M2NkYjNjMTguLmUx
MzczZDc1ZjVjZjY4NjJiZmY5NzJmMjUyZWYwYzU2M2Q5YjJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNjcsNiArNjcsMTAgQEAKICNpbmNsdWRlICJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk4LDYgKzEwMiw3IEBAIEhUTUxJbnB1dEVs
ZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtCiAgICAgLCBtX3ZhbHVlQXR0cmlidXRlV2FzVXBkYXRlZEFmdGVyUGFyc2lu
ZyhmYWxzZSkKICAgICAsIG1fd2FzTW9kaWZpZWRCeVVzZXIoZmFsc2UpCiAgICAgLCBtX2NhblJl
Y2VpdmVEcm9wcGVkRmlsZXMoZmFsc2UpCisgICAgLCBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKGZh
bHNlKQogICAgICwgbV9pbnB1dFR5cGUoSW5wdXRUeXBlOjpjcmVhdGVUZXh0KHRoaXMpKQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKGlucHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlzaW5kZXhUYWcp
KTsKQEAgLTEzMCw2ICsxMzUsMTAgQEAgSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1l
bnQoKQogICAgIC8vIFdlIHNob3VsZCB1bnJlZ2lzdGVyIGl0IHRvIGF2b2lkIGFjY2Vzc2luZyBh
IGRlbGV0ZWQgb2JqZWN0LgogICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCiAgICAgICAgIGRvY3Vt
ZW50KCktPmZvcm1Db250cm9sbGVyKCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0
b24odGhpcyk7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAobV9oYXNUb3VjaEV2
ZW50SGFuZGxlcikKKyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRs
ZXIoKTsKKyNlbmRpZgogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6
Om5hbWUoKSBjb25zdApAQCAtNDAxLDYgKzQxMCwxOCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnVwZGF0ZVR5cGUoKQogICAgIG1faW5wdXRUeXBlID0gbmV3VHlwZS5yZWxlYXNlKCk7CiAgICAg
bV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKIAorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgYm9vbCBoYXNUb3VjaEV2ZW50SGFuZGxlciA9IG1faW5wdXRUeXBlLT5oYXNU
b3VjaEV2ZW50SGFuZGxlcigpOworICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlciAhPSBtX2hh
c1RvdWNoRXZlbnRIYW5kbGVyKSB7CisgICAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIpIHsK
KyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICAgICAg
ZG9jdW1lbnQoKS0+YWRkTGlzdGVuZXJUeXBlKERvY3VtZW50OjpUT1VDSF9MSVNURU5FUik7Cisg
ICAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRs
ZXIoKTsKKyAgICAgIG1faGFzVG91Y2hFdmVudEhhbmRsZXIgPSBoYXNUb3VjaEV2ZW50SGFuZGxl
cjsKKyAgICB9CisjZW5kaWYKKwogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKIAog
ICAgIGJvb2wgd2lsbFN0b3JlVmFsdWUgPSBtX2lucHV0VHlwZS0+c3RvcmVzVmFsdWVTZXBhcmF0
ZUZyb21BdHRyaWJ1dGUoKTsKQEAgLTEwMzgsNiArMTA1OSwxNCBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChldnQtPmlzVG91
Y2hFdmVudCgpKSB7CisgICAgICAgIG1faW5wdXRUeXBlLT5oYW5kbGVUb3VjaEV2ZW50KHN0YXRp
Y19jYXN0PFRvdWNoRXZlbnQqPihldnQpKTsKKyAgICAgICAgaWYgKGV2dC0+ZGVmYXVsdEhhbmRs
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChldnQt
PmlzS2V5Ym9hcmRFdmVudCgpICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQpIHsKICAgICAgICAgbV9pbnB1dFR5cGUtPmhhbmRsZUtleWRvd25FdmVudChzdGF0aWNf
Y2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZ0KSk7CiAgICAgICAgIGlmIChldnQtPmRlZmF1bHRIYW5k
bGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDFlYzVlZjBk
NWNlZDVlNzY5NDVkMzkxNGM5ODJiMWU2MjM2YTc5MDIuLmUxMDgyNWNkNjE5NTc2ZGIyZjQzMjI5
NmVkMWJlOWNlYmU0OGQ3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CkBAIC0zOTAsNiArMzkwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmFsdWVBdHRyaWJ1dGVX
YXNVcGRhdGVkQWZ0ZXJQYXJzaW5nIDogMTsKICAgICBib29sIG1fd2FzTW9kaWZpZWRCeVVzZXIg
OiAxOwogICAgIGJvb2wgbV9jYW5SZWNlaXZlRHJvcHBlZEZpbGVzIDogMTsKKyAgICBib29sIG1f
aGFzVG91Y2hFdmVudEhhbmRsZXI6IDE7CiAgICAgT3duUHRyPElucHV0VHlwZT4gbV9pbnB1dFR5
cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMzA2MDJhMDA5NWU2MmU4
MDg0OWQ0ZTQyMmMyYzc4MzBhMTA0YzM2OS4uMjUzMGU5ZWIxZjQ4NTAzYTNiMzBlOTQ3ODM0MWNh
OGFmMzIwNTEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNDE3LDYgKzQxNywx
MiBAQCB2b2lkIElucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikKIHsKIH0K
IAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIElucHV0VHlwZTo6aGFuZGxlVG91Y2hF
dmVudChUb3VjaEV2ZW50KikKK3sKK30KKyNlbmRpZgorCiB2b2lkIElucHV0VHlwZTo6Zm9yd2Fy
ZEV2ZW50KEV2ZW50KikKIHsKIH0KQEAgLTg3Myw2ICs4NzksMTMgQEAgdm9pZCBJbnB1dFR5cGU6
OnN1YnRyZWVIYXNDaGFuZ2VkKCkKIHsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiti
b29sIElucHV0VHlwZTo6aGFzVG91Y2hFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKyNlbmRpZgorCiBTdHJpbmcgSW5wdXRUeXBlOjpkZWZhdWx0VG9vbFRpcCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5k
ZXggNDUxMzAzZDEzYzQyNDBmZWM3NWFkMGVmMDA5NzMyM2QwZTMxM2RiOS4uZmE0MWZmODU3MDAx
MWVmNGMwNDFkNmMwM2FhOGZmZjBlMTQ4ODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBA
IC02MSwxMiArNjEsMTQgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBUb3VjaEV2ZW50OwogY2xh
c3MgV2hlZWxFdmVudDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogc3RydWN0IENs
aWNrSGFuZGxpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgIAogcHVi
bGljOgogICAgIGJvb2wgY2hlY2tlZDsKICAgICBib29sIGluZGV0ZXJtaW5hdGU7CkBAIC0xOTAs
NiArMTkyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXl1cEV2ZW50KEtl
eWJvYXJkRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQoQmVmb3JlVGV4dEluc2VydGVkRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
V2hlZWxFdmVudChXaGVlbEV2ZW50Kik7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50Kik7CisjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgZm9yd2FyZEV2ZW50KEV2ZW50Kik7CiAgICAgLy8gSGVscGVycyBmb3IgZXZl
bnQgaGFuZGxlcnMuCiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZl
bnQqKTsKQEAgLTIwMiw2ICsyMDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cyk7CiAgICAgdmlydHVhbCBib29sIGNhbkJl
U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpOwogICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hh
bmdlZCgpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGhhc1Rv
dWNoRXZlbnRIYW5kbGVyKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIC8vIFNoYWRvdyB0cmVlIGhh
bmRsaW5nCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggZmQxMWNi
YWE3OTVjNjE4OWJiY2MxMmE0OGY5YjI3MTVkNTAxM2E3Yy4uMTBjNzU3NmJmYTdjY2EzNzZlODI0
NWVhM2M0NGZlY2U1NzFkYmFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHAKQEAgLTQ5LDYgKzQ5LDEyIEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNs
dWRlICJUb3VjaC5oIgorI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaExp
c3QuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CkBAIC0xMzQsNiArMTQwLDM0IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRs
ZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogICAgIHRodW1iLT5kcmFnRnJvbShl
dmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisjaWYgRU5BQkxFKFRPVUNIX1NMSURFUikKK3ZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRv
dWNoRXZlbnQoVG91Y2hFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJs
ZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50KSB7CisgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgVG91Y2hMaXN0KiB0b3VjaGVzID0gZXZlbnQtPnRhcmdldFRvdWNoZXMoKTsKKyAgICBpZiAo
dG91Y2hlcy0+bGVuZ3RoKCkgPT0gMSkgeworICAgICAgICBUb3VjaCogdG91Y2ggPSB0b3VjaGVz
LT5pdGVtKDApOworICAgICAgICBTbGlkZXJUaHVtYkVsZW1lbnQqIHRodW1iID0gc2xpZGVyVGh1
bWJFbGVtZW50T2YoZWxlbWVudCgpKTsKKyAgICAgICAgdGh1bWItPnNldFBvc2l0aW9uRnJvbVBv
aW50KHRvdWNoLT5hYnNvbHV0ZUxvY2F0aW9uKCkpOworICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKKyAgICB9Cit9CisKK2Jvb2wgUmFuZ2VJbnB1dFR5cGU6Omhhc1RvdWNoRXZl
bnRIYW5kbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorI2VuZGlm
CisKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCkKIHsKICAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8IGVsZW1lbnQoKS0+
cmVhZE9ubHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCBmZjhmNDAy
OGYyMDc1OWU4MWU3ZDY1M2E2MzhkOTMxMjg3N2EwYjlmLi4wOTgzYjNkNTdmZTk3MmU3NTIxOTM0
NzljOTg0NjM0ODc2MWE3NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jhbmdl
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCkBA
IC01MSw2ICs1MSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0
ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpc1N0ZXBwYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVN
b3VzZURvd25FdmVudChNb3VzZUV2ZW50KikgT1ZFUlJJREU7CisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfU0xJREVSKQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVU
b3VjaEV2ZW50KFRvdWNoRXZlbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91
Y2hFdmVudEhhbmRsZXIoKSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgorI2VuZGlmCiAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93
U3VidHJlZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuaAppbmRleCBlMmQ4YjY2ZWJiMTFmNDlkMWM4YjAxYjRjODFlZTFiYjA1
MTA5ZTliLi4zNmQ2NDE4NmY4YzFkYTIwNDIyNTdkMTE4Y2FlMWYyMTM4MzQ0YzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApAQCAtNTcs
NiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGhvc3RJbnB1dCgpIGNvbnN0OworICAgIHZvaWQgc2V0UG9zaXRpb25Gcm9t
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogcHJpdmF0ZToKICAgICBTbGlkZXJUaHVtYkVs
ZW1lbnQoRG9jdW1lbnQqKTsKQEAgLTY3LDcgKzY4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IE5vZGUqIGZvY3VzRGVsZWdhdGUoKTsKICAgICB2b2lkIHN0YXJ0RHJhZ2dpbmcoKTsKICAgICB2
b2lkIHN0b3BEcmFnZ2luZygpOwotICAgIHZvaWQgc2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmKTsKIAogICAgIGJvb2wgbV9pbkRyYWdNb2RlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCBlYzA5ZmY4YmI3ZWExNjAyOGQwNTE3NjUzOWY0ZTFm
YmQ0Yzk0Y2I0Li5lOTc4YTZkNGQ0MGIxNzBmZjU2ZmQ2NzU3YzZhYzBiNWE3MTljZGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC05Nyw2ICs5Nyw3IEBACiAgICAgICAn
RU5BQkxFX1RPVUNIX0FESlVTVE1FTlQ9MScsCiAgICAgICAnRU5BQkxFX1RPVUNIX0VWRU5UUz08
KGVuYWJsZV90b3VjaF9ldmVudHMpJywKICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
PTwoZW5hYmxlX3RvdWNoX2ljb25fbG9hZGluZyknLAorICAgICAgJ0VOQUJMRV9UT1VDSF9TTElE
RVI9MScsCiAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAgICAn
RU5BQkxFX1ZJREVPPTEnLAogICAgICAgJ0VOQUJMRV9WSURFT19UUkFDSz0xJywKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBi
MDkxMmE1ZTMzZDg0ZmNhMzRmOTMzZTEzZjI4NDZlNjYwNjQ3ZTYzLi44NGNiNjIwNDRlYmE1OTlj
YTMwZjM3MzliYTY4NDVmNTYwMDFmMTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDct
MTAgIEtldmluIEVsbGlzICA8a2V2ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnB1dCBl
bGVtZW50cyB3aXRoIHR5cGU9cmFuZ2UgZG8gbm90IGhhdmUgZGVmYXVsdCB0b3VjaCBoYW5kbGVy
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBBZGQgYXV0
b21hdGVkIHRlc3QgZm9yIG1hbmlwdWxhdGluZyBhbiBpbnB1dCBzbGlkZXIgdmlhIHRvdWNoCisg
ICAgICAgIGV2ZW50cy4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0
cy90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXIuanM6IEFkZGVkLgorICAgICAgICAo
Y2hlY2tQb3NpdGlvbik6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3Rz
L3RvdWNoLXNsaWRlci5qczogQWRkZWQuCisgICAgICAgIChvblRvdWNoU3RhcnQpOgorICAgICAg
ICAob25Ub3VjaEVuZCk6CisgICAgICAgIChvbktleURvd24pOgorICAgICAgICAoY2hlY2tQb3Np
dGlvbik6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5v
LWpzLXRvdWNoLWxpc3RlbmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
dmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlk
ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKwogMjAxMi0wNy0wOSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25zIEFQSV0gc2ltcGxp
ZnkgcGFuZWwgc2l6ZSBjaGVjayBpbiBleHRlbnNpb25zLXBhbmVsLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1zbGlkZXIt
bm8tanMtdG91Y2gtbGlzdGVuZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9z
Y3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ1NGZhZmI2NWNjMzY2NjM3YmVkOTNhNjVkMTQyOTNmMGIxN2QyZGUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gt
c2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmpzCkBAIC0wLDAgKzEsNTkgQEAKK3ZhciBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS53aWR0aCA9ICIyMDAl
IjsKK3ZhciBzbGlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworc2xpZGVy
LnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYW5nZSIpOworc2xpZGVyLnN0eWxlLndpZHRoID0gIjIw
MHB4IjsKK3NsaWRlci5zdHlsZS5oZWlnaHQgPSAiMzBweCI7CisKK2RvY3VtZW50LmJvZHkuaW5z
ZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKSk7CitkaXYu
YXBwZW5kQ2hpbGQoc2xpZGVyKTsKKworCit2YXIgY2hlY2tQb3NpdGlvbiA9IChmdW5jdGlvbigp
IHsKKworICB2YXIgbkNoZWNrID0gMDsKKworICB2YXIgZXhwZWN0ZWRQb3NpdGlvbnMgPSBbNTAs
IDBdOworCisgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InNsaWRlci52YWx1ZSIsIFN0cmluZyhleHBlY3RlZFBvc2l0aW9uc1tuQ2hlY2srK10pKTsKKyAg
fTsKKworfSkoKTsKKworZnVuY3Rpb24gb25LZXlEb3duKCkgeworICAgIGNoZWNrUG9zaXRpb24o
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaXNTdWNjZXNz
ZnVsbHlQYXJzZWQoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bics
IG9uS2V5RG93bik7CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0byBlbnN1cmUgdGhhdCB0b3VjaCBl
dmVudHMgYXJlIGRlbGl2ZXJlZCB0byBhbiBpbnB1dCBlbGVtZW50IHdpdGggdHlwZT1yYW5nZSBl
dmVuIHdoZW4gdGhlcmUgYXJlIG5vIHRvdWNoIGV2ZW50IGhhbmRsZXJzIGluIEphdmFzY3JpcHQu
IFRoaXMgdGVzdCBpcyBvbmx5IGV4cGVjdGVkIHRvIHBhc3MgaWYgRU5BQkxFX1RPVUNIX1NMSURF
UiBpcyBkZWZpbmVkLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgdmFyIHggPSBzbGlkZXIub2Zmc2V0TGVmdDsKKyAgICB2YXIg
eSA9IHNsaWRlci5vZmZzZXRUb3AgKyBzbGlkZXIuY2xpZW50SGVpZ2h0LzI7CisgICAgdmFyIHcg
PSBzbGlkZXIuY2xpZW50V2lkdGg7CisKKyAgICBjaGVja1Bvc2l0aW9uKCk7CisKKyAgICBldmVu
dFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2lu
dCh4ICsgdy8yLCB5KTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7CisKKyAgICBldmVu
dFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHgsIHkpOworICAgIGV2ZW50U2VuZGVyLnRvdWNo
TW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZl
bnRTZW5kZXIudG91Y2hFbmQoKTsKKworICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAnKTsKKwor
fSBlbHNlIHsKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4nKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC1z
bGlkZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91
Y2gtc2xpZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzOTFkZDA0Y2QyYWEzOTdkYzAyZDdhMWQwZTM0YjFh
YWY1NzEwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9zY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLmpzCkBAIC0wLDAgKzEsMTIwIEBACit2YXIgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYuc3R5bGUud2lkdGggPSAiMjAw
JSI7Cit2YXIgc2xpZGVyMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CitzbGlk
ZXIxLmlkID0gInNsaWRlcjEiOworc2xpZGVyMS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFuZ2Ui
KTsKK3NsaWRlcjEuc3R5bGUud2lkdGggPSAiMjAwcHgiOworc2xpZGVyMS5zdHlsZS5oZWlnaHQg
PSAiMzBweCI7Cit2YXIgc2xpZGVyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7
CitzbGlkZXIyLmlkID0gInNsaWRlcjIiOworc2xpZGVyMi5zZXRBdHRyaWJ1dGUoInR5cGUiLCAi
cmFuZ2UiKTsKK3NsaWRlcjIuc3R5bGUud2lkdGggPSAiMzBweCI7CitzbGlkZXIyLnN0eWxlLmhl
aWdodCA9ICIyMDBweCI7CitzbGlkZXIyLnN0eWxlLnNldFByb3BlcnR5KCItd2Via2l0LWFwcGVh
cmFuY2UiLCAic2xpZGVyLXZlcnRpY2FsIik7Cit2YXIgc2xpZGVyMyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlucHV0Iik7CitzbGlkZXIzLmlkID0gInNsaWRlcjMiOworc2xpZGVyMy5zZXRB
dHRyaWJ1dGUoInR5cGUiLCAicmFuZ2UiKTsKK3NsaWRlcjMuc3R5bGUud2lkdGggPSAiMjAwcHgi
Oworc2xpZGVyMy5zdHlsZS5oZWlnaHQgPSAiMzBweCI7CitzbGlkZXIzLnN0eWxlLnNldFByb3Bl
cnR5KCItd2Via2l0LXRyYW5zZm9ybSIsICJyb3RhdGUoLTkwZGVnKSIpOworc2xpZGVyMy5zdHls
ZS5zZXRQcm9wZXJ0eSgibWFyZ2luIiwgIjEyMHB4IDAiKTsKKworZG9jdW1lbnQuYm9keS5pbnNl
cnRCZWZvcmUoZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpKTsKK2Rpdi5h
cHBlbmRDaGlsZChzbGlkZXIxKTsKK2Rpdi5hcHBlbmRDaGlsZChzbGlkZXIyKTsKK2Rpdi5hcHBl
bmRDaGlsZChzbGlkZXIzKTsKKwordmFyIG9uVG91Y2hTdGFydCA9IChmdW5jdGlvbigpIHsKKwor
ICAgIHZhciBzbGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVyM107CisgICAgdmFyIG5D
aGVjayA9IDA7CisKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQiLCBzbGlkZXJbbkNoZWNrKytd
LmlkKTsKKyAgICAgICAgY2hlY2tQb3NpdGlvbigpOworICAgIH0KKworfSkoKTsKKworZnVuY3Rp
b24gb25Ub3VjaE1vdmUoKSB7CisgICAgY2hlY2tQb3NpdGlvbigpOworfQorCitmdW5jdGlvbiBv
blRvdWNoRW5kKCkgeworICAgIGNoZWNrUG9zaXRpb24oKTsKK30KKworZnVuY3Rpb24gb25LZXlE
b3duKCkgeworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgc2xpZGVyVmFsdWUgPSAwOworCit2YXIgY2hl
Y2tQb3NpdGlvbiA9IChmdW5jdGlvbigpIHsKKworICAgIHZhciBuQ2hlY2sgPSAwOworICAgIHZh
ciBzbGlkZXIgPSBbc2xpZGVyMSwgc2xpZGVyMiwgc2xpZGVyM107CisgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb25zID0gWzUwLCA1MCwgMCwgMTAwLCA1MF07CisgICAgdmFyIHNsaWRlckluZGV4ID0g
MDsKKworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc2xpZGVyVmFsdWUgPSBzbGlk
ZXJbc2xpZGVySW5kZXhdLnZhbHVlOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNs
aWRlclZhbHVlIiwgU3RyaW5nKGV4cGVjdGVkUG9zaXRpb25zW25DaGVjaysrXSkpOworICAgICAg
ICBpZiAobkNoZWNrICUgZXhwZWN0ZWRQb3NpdGlvbnMubGVuZ3RoID09IDApIHsKKyAgICAgICAg
ICAgIHNsaWRlckluZGV4Kys7CisgICAgICAgICAgICBuQ2hlY2sgPSAwOworICAgICAgICB9Cisg
ICAgfTsKKworfSkoKTsKKworZnVuY3Rpb24gcnVuVGVzdChzbGlkZXIsIHJvdGF0ZWQpIHsKKwor
ICAgIHZhciB3ID0gc2xpZGVyLmNsaWVudFdpZHRoOworICAgIHZhciBoID0gc2xpZGVyLmNsaWVu
dEhlaWdodDsKKyAgICB2YXIgeCA9IHNsaWRlci5vZmZzZXRMZWZ0ICsgdy8yOworICAgIHZhciB5
ID0gc2xpZGVyLm9mZnNldFRvcCArIGgvMjsKKworICAgIGlmIChyb3RhdGVkKSB7CisgICAgICB3
ID0gc2xpZGVyLmNsaWVudEhlaWdodDsKKyAgICAgIGggPSBzbGlkZXIuY2xpZW50V2lkdGg7Cisg
ICAgfQorCisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygpOworICAgIGV2ZW50U2Vu
ZGVyLmFkZFRvdWNoUG9pbnQoeCwgeSk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOwor
CisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCB4IC0gdy8yLCB5ICsgaC8yKTsK
KyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRv
dWNoUG9pbnQoMCwgeCArIHcvMiwgeSAtIGgvMik7CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3Zl
KCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHgsIHkpOworICAgIGV2
ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9p
bnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKK30KKworZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIG9uVG91Y2hTdGFydCwgZmFsc2UpOworZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgb25Ub3VjaE1vdmUsIGZhbHNlKTsKK2RvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgb25Ub3VjaEVuZCwgZmFsc2UpOworZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIG9uS2V5RG93biwgZmFsc2UpOworCitk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZlbnRzIG9yaWdpbmF0aW5nIG9uIGFu
IGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0ZSB0aGUgc2xpZGVyIHBvc2l0aW9u
LiBUaGlzIHRlc3QgaXMgb25seSBleHBlY3RlZCB0byBwYXNzIGlmIEVOQUJMRV9UT1VDSF9TTElE
RVIgaXMgZGVmaW5lZC4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgIHJ1blRlc3Qoc2xpZGVyMSwgZmFsc2UpOworICAgIHJ1blRl
c3Qoc2xpZGVyMiwgZmFsc2UpOworICAgIHJ1blRlc3Qoc2xpZGVyMywgdHJ1ZSk7CisKKyAgICBl
dmVudFNlbmRlci5rZXlEb3duKCcgJyk7Cit9IGVsc2UgeworICAgIGRlYnVnKCdUaGlzIHRlc3Qg
cmVxdWlyZXMgRFJULicpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL3RvdWNoLXNsaWRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQzMTIxODhjMGQx
OGVjZTQwNDhkMzk5MzRiYzAxNWIyM2RjY2VmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyOCBAQAorVGVzdHMgdGhhdCB0aGUgdG91Y2ggZXZlbnRzIG9yaWdpbmF0aW5nIG9uIGFuIGlu
cHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIHVwZGF0ZSB0aGUgc2xpZGVyIHBvc2l0aW9uLiBU
aGlzIHRlc3QgaXMgb25seSBleHBlY3RlZCB0byBwYXNzIGlmIEVOQUJMRV9UT1VDSF9TTElERVIg
aXMgZGVmaW5lZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBldmVu
dC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAic2xpZGVyMSIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMg
IjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitGQUlMIHNsaWRlclZhbHVlIHNob3VsZCBi
ZSAwLiBXYXMgNTAuCitGQUlMIHNsaWRlclZhbHVlIHNob3VsZCBiZSAxMDAuIFdhcyA1MC4KK1BB
U1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBp
cyAic2xpZGVyMiIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBp
cyAiNTAiCitGQUlMIHNsaWRlclZhbHVlIHNob3VsZCBiZSAwLiBXYXMgNTAuCitGQUlMIHNsaWRl
clZhbHVlIHNob3VsZCBiZSAxMDAuIFdhcyA1MC4KK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgor
UEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAic2xpZGVyMyIKK1BBU1Mgc2xpZGVy
VmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitGQUlMIHNsaWRlclZhbHVl
IHNob3VsZCBiZSAwLiBXYXMgNTAuCitGQUlMIHNsaWRlclZhbHVlIHNob3VsZCBiZSAxMDAuIFdh
cyA1MC4KK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91
Y2gtbGlzdGVuZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YmM3NjIyNjM4NWMyOGM5Mjky
NjNkYWRmZDEyYWIyMTBlZTdhMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXItbm8tanMtdG91Y2gtbGlzdGVuZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRvIGVuc3VyZSB0aGF0IHRvdWNoIGV2ZW50cyBh
cmUgZGVsaXZlcmVkIHRvIGFuIGlucHV0IGVsZW1lbnQgd2l0aCB0eXBlPXJhbmdlIGV2ZW4gd2hl
biB0aGVyZSBhcmUgbm8gdG91Y2ggZXZlbnQgaGFuZGxlcnMgaW4gSmF2YXNjcmlwdC4gVGhpcyB0
ZXN0IGlzIG9ubHkgZXhwZWN0ZWQgdG8gcGFzcyBpZiBFTkFCTEVfVE9VQ0hfU0xJREVSIGlzIGRl
ZmluZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BBU1Mgc2xpZGVyLnZh
bHVlIGlzICI1MCIKK0ZBSUwgc2xpZGVyLnZhbHVlIHNob3VsZCBiZSAwLiBXYXMgNTAuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNo
LWxpc3RlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlk
ZXItbm8tanMtdG91Y2gtbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTViODY2YTg2MjY1Y2Yw
NjhhMjIxMWJmN2E0YmViYjU4YjJkYzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3RlbmVyLmh0bWwK
QEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPCEtLQorICBUb3VjaCB0ZXN0cyB0aGF0IGludm9s
dmUgdGhlIG9udG91Y2hzdGFydCwgb250b3VjaG1vdmUsIG9udG91Y2hlbmQgb3Igb250b3VjaGNh
bmNlbCBjYWxsYmFja3MKKyAgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYW4gYXN5bmNocm9ub3VzIGZh
c2hpb24gc28gdGhleSBjYW4gYmUgcnVuIG9uIG1vYmlsZSBwbGF0Zm9ybXMgbGlrZSBBbmRyb2lk
LgorICBZb3Ugd2lsbCBuZWVkIHRvIGludm9rZSBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpIGluIHlv
dXIgdGVzdCBzY3JpcHQgd2hlbiB0aGUgdGVzdCBjb21wbGV0ZXMuCistLT4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvdG91Y2gtc2xpZGVyLW5vLWpzLXRvdWNoLWxpc3Rl
bmVyLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM3ZDUxNmU5YWQ1
MzVmNjU3ODdjZDFjMDdhZTdjMTIzZTVjYzYzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci5odG1sCkBAIC0wLDAgKzEsMTYgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwhLS0KKyAgVG91Y2ggdGVzdHMgdGhhdCBpbnZvbHZlIHRoZSBvbnRvdWNoc3Rh
cnQsIG9udG91Y2htb3ZlLCBvbnRvdWNoZW5kIG9yIG9udG91Y2hjYW5jZWwgY2FsbGJhY2tzCisg
IHNob3VsZCBiZSB3cml0dGVuIGluIGFuIGFzeW5jaHJvbm91cyBmYXNoaW9uIHNvIHRoZXkgY2Fu
IGJlIHJ1biBvbiBtb2JpbGUgcGxhdGZvcm1zIGxpa2UgQW5kcm9pZC4KKyAgWW91IHdpbGwgbmVl
ZCB0byBpbnZva2UgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKSBpbiB5b3VyIHRlc3Qgc2NyaXB0IHdo
ZW4gdGhlIHRlc3QgY29tcGxldGVzLgorLS0+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3RvdWNoLXNsaWRlci5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3Vj
aC90b3VjaC1zbGlkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NTE0MWY0ZmI0N2UzYzE1MDkyNTgzYThiMzIyYTA4ZmM4ZjExZWFjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91
Y2gtc2xpZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitUZXN0cyB0aGF0IHRoZSB0
b3VjaCBldmVudHMgb3JpZ2luYXRpbmcgb24gYW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFu
Z2UgdXBkYXRlIHRoZSBzbGlkZXIgcG9zaXRpb24uIFRoaXMgdGVzdCBpcyBvbmx5IGV4cGVjdGVk
IHRvIHBhc3MgaWYgRU5BQkxFX1RPVUNIX1NMSURFUiBpcyBkZWZpbmVkLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworCitQQVNTIGV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIGlz
ICJzbGlkZXIxIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlz
ICI1MCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIxMDAi
CitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQu
aWQgaXMgInNsaWRlcjIiCitQQVNTIHNsaWRlclZhbHVlIGlzICI1MCIKK1BBU1Mgc2xpZGVyVmFs
dWUgaXMgIjUwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMg
IjEwMCIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRh
cmdldC5pZCBpcyAic2xpZGVyMyIKK1BBU1Mgc2xpZGVyVmFsdWUgaXMgIjUwIgorUEFTUyBzbGlk
ZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHNsaWRlclZhbHVlIGlzICIwIgorUEFTUyBzbGlkZXJWYWx1
ZSBpcyAiMTAwIgorUEFTUyBzbGlkZXJWYWx1ZSBpcyAiNTAiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLW5vLWpzLXRv
dWNoLWxpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0MWIxMTMzODExNTUzMWI5NGRiZWUxYjc4YzQ3ZDZiOTQ5
NWYxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1uby1qcy10b3VjaC1saXN0ZW5lci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdG8gZW5zdXJlIHRoYXQgdG91Y2ggZXZlbnRz
IGFyZSBkZWxpdmVyZWQgdG8gYW4gaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9cmFuZ2UgZXZlbiB3
aGVuIHRoZXJlIGFyZSBubyB0b3VjaCBldmVudCBoYW5kbGVycyBpbiBKYXZhc2NyaXB0LiBUaGlz
IHRlc3QgaXMgb25seSBleHBlY3RlZCB0byBwYXNzIGlmIEVOQUJMRV9UT1VDSF9TTElERVIgaXMg
ZGVmaW5lZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBzbGlkZXIu
dmFsdWUgaXMgIjUwIgorUEFTUyBzbGlkZXIudmFsdWUgaXMgIjAiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>