<?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>39725</bug_id>
          
          <creation_ts>2010-05-26 04:23:36 -0700</creation_ts>
          <short_desc>Dragging over an element with scrollbars should scroll the element when dragging near edges</short_desc>
          <delta_ts>2013-09-20 06:53:54 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>106318</dependson>
    
    <dependson>41695</dependson>
    
    <dependson>104764</dependson>
    
    <dependson>106395</dependson>
    
    <dependson>106702</dependson>
          <blocked>106403</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>arv</cc>
    
    <cc>avi</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>glen</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jianli</cc>
    
    <cc>jochen</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yosin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>230660</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-26 04:23:36 -0700</bug_when>
    <thetext>What steps will reproduce the problem?

1. Have an element with overflow auto/scroll which has enough content to 
require scrollbars to be shown
2. Drag an item (bookmark from the bookmark bar or a file from the desktop) 
near the edge of the element with the scrollbars.

What is the expected output?

The element should scroll so that the user gets access to things outside the 
viewport. The scrolling should be smooth.

What do you see instead?

On Windows this works when dragging near the top edge but not near the bottom 
edge. On Mac and Linux it does not work at all.

Chromium side is here: http://crbug.com/37320</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231577</commentid>
    <comment_count>1</comment_count>
      <attachid>57296</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-27 23:48:35 -0700</bug_when>
    <thetext>Created attachment 57296
patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231578</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-27 23:50:12 -0700</bug_when>
    <thetext>Attachment 57296 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebViewImpl.cpp:1670:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebViewImpl.cpp:1681:  Missing spaces around /  [whitespace/operators] [3]
WebKit/chromium/src/WebViewImpl.cpp:1690:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 3 in 7 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>231583</commentid>
    <comment_count>3</comment_count>
      <attachid>57298</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-27 23:55:46 -0700</bug_when>
    <thetext>Created attachment 57298
patch v1 - fix style violation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233004</commentid>
    <comment_count>4</comment_count>
      <attachid>57298</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-01 17:43:11 -0700</bug_when>
    <thetext>Comment on attachment 57298
patch v1 - fix style violation

WebCore/platform/graphics/IntRect.cpp:57
 +  IntSize IntRect::directionTo(const WebCore::IntPoint&amp; target) const
The name directionTo seems to be confusing. Will it be better to distanceTo? Also better to comment what distance to rectangle is meant.
In addition, I am thinking if this routine is only needed in chromium platform, probably we do not want to add it to IntRect.*.

WebCore/platform/graphics/IntRect.h:119
 +      IntSize directionTo(const WebCore::IntPoint&amp; target) const;
The argument name &apos;target&apos; can be omitted.

WebKit/chromium/public/WebView.h:172
 +      // Notified the WebView that a dragging is going on.
Notified =&gt; Notifies

WebKit/chromium/public/WebView.h:173
 +      virtual void dragSourceMovedTo(
No need to fold into multiple lines.

WebKit/chromium/src/WebViewImpl.cpp:1550
 +  void WebViewImpl::dragSourceMovedTo(
ditto.

WebKit/chromium/src/WebViewImpl.cpp:1678
 +      WebCore::FrameView* frameView = mainFrameImpl()-&gt;frameView();
Do we need to check if frameView is NULL?

WebKit/chromium/src/WebViewImpl.cpp:1684
 +      bounds.setHeight(bounds.height() - margin*2);
Should have one space before and after &apos;*&apos;.

WebKit/chromium/src/WebViewImpl.cpp:1686
 +      bounds.setWidth(bounds.width() - margin*2);
ditto.

WebKit/chromium/src/WebViewImpl.h:136
 +      virtual void dragSourceMovedTo(
ditto.

WebKit/chromium/src/WebViewImpl.h:331
 +      static const int kScrollMarginRatio = 20;
This const definition should be moved to WebViewImpl::scrollForDragging. Also please comment why choosing value 20?

WebKit/chromium/src/WebViewImpl.h:353
 +      void scrollForDragging(const WebPoint&amp; clientPoint);
The argument name can be omitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233136</commentid>
    <comment_count>5</comment_count>
      <attachid>57634</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 01:45:02 -0700</bug_when>
    <thetext>Created attachment 57634
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233139</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 01:49:19 -0700</bug_when>
    <thetext>Hi Jian, thank you for reviewing!
I updated the patch.

(In reply to comment #4)
&gt; (From update of attachment 57298 [details])
&gt; WebCore/platform/graphics/IntRect.cpp:57
&gt;  +  IntSize IntRect::directionTo(const WebCore::IntPoint&amp; target) const
&gt; The name directionTo seems to be confusing. Will it be better to distanceTo? Also better to comment what distance to rectangle is meant.
&gt; In addition, I am thinking if this routine is only needed in chromium platform, probably we do not want to add it to IntRect.*.
Renamed, and moved it to WebViewImpl.cpp local

&gt; 
&gt; WebCore/platform/graphics/IntRect.h:119
&gt;  +      IntSize directionTo(const WebCore::IntPoint&amp; target) const;
&gt; The argument name &apos;target&apos; can be omitted.
Done.

&gt; 
&gt; WebKit/chromium/public/WebView.h:172
&gt;  +      // Notified the WebView that a dragging is going on.
&gt; Notified =&gt; Notifies
Done.
&gt; 
&gt; WebKit/chromium/public/WebView.h:173
&gt;  +      virtual void dragSourceMovedTo(
&gt; No need to fold into multiple lines.
Done.
&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1550
&gt;  +  void WebViewImpl::dragSourceMovedTo(
&gt; ditto.
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1678
&gt;  +      WebCore::FrameView* frameView = mainFrameImpl()-&gt;frameView();
&gt; Do we need to check if frameView is NULL?
Guarded null case.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1684
&gt;  +      bounds.setHeight(bounds.height() - margin*2);
&gt; Should have one space before and after &apos;*&apos;.
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1686
&gt;  +      bounds.setWidth(bounds.width() - margin*2);
&gt; ditto.
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.h:136
&gt;  +      virtual void dragSourceMovedTo(
&gt; ditto.
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.h:331
&gt;  +      static const int kScrollMarginRatio = 20;
&gt; This const definition should be moved to WebViewImpl::scrollForDragging. Also please comment why choosing value 20?
Moved to function static.
The value has left under experience. It was bad thiing...
I changed the value based on the observation on Safari behavior.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.h:353
&gt;  +      void scrollForDragging(const WebPoint&amp; clientPoint);
&gt; The argument name can be omitted.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233470</commentid>
    <comment_count>7</comment_count>
      <attachid>57634</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-02 15:29:21 -0700</bug_when>
    <thetext>Comment on attachment 57634
patch v2

WebKit/chromium/public/WebView.h:173
 +      virtual void dragSourceMovedTo(const WebPoint&amp; clientPoint, const WebPoint&amp; screenPoint, WebDragOperation) = 0;
nit: please use the same formatting as dragSourceEndedAt

WebKit/chromium/src/WebViewImpl.cpp:1550
 +  void WebViewImpl::dragSourceMovedTo(
nit: this method impl should be placed after dragSourceEndedAt
to match the declaration order.

WebKit/chromium/src/WebViewImpl.cpp:1557
 +  
nit: only one new line between method impls.

WebKit/chromium/src/WebViewImpl.cpp:1676
 +  static IntSize distanceTo(const WebCore::IntPoint&amp; point, const WebCore::IntRect&amp; rect)
nit: no need for WebCore:: prefix since there is a using namespace WebCore
at the top of this file.  also, please move static helper functions up to
the top of the file after the static data declarations.

WebKit/chromium/src/WebViewImpl.cpp:1676
 +  static IntSize distanceTo(const WebCore::IntPoint&amp; point, const WebCore::IntRect&amp; rect)
nit: how about naming this distanceToRect?

how about this as a comment:
// Computes the distance from a point outside a rect to the nearest edge of the rect.

(I would also assert that the point is not contained within the rect if that
is indeed appropriate.)

WebKit/chromium/src/WebViewImpl.cpp:1695
 +      WebCore::FrameView* view = mainFrameImpl()-&gt;frameView();
nit: no WebCore:: prefix needed

WebKit/chromium/src/WebViewImpl.cpp:1693
 +      static const int kScrollMargin = 30;
nit: constants should not have the k prefix.  just do scrollMargin.

WebKit/chromium/src/WebViewImpl.h:136
 +      virtual void dragSourceMovedTo(const WebPoint&amp; clientPoint, const WebPoint&amp; screenPoint, WebDragOperation);
please list this method in the same order that it is declared
in WebView.h

WebKit/chromium/src/WebViewImpl.cpp:1690
 +  void WebViewImpl::scrollForDragging(const WebPoint&amp; clientPoint)
this method should be defined just above hideSelectPopup() so that
the order of methods in the .cpp file matches the order of the
methods in the .h file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233544</commentid>
    <comment_count>8</comment_count>
      <attachid>57722</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 18:12:53 -0700</bug_when>
    <thetext>Created attachment 57722
patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233545</commentid>
    <comment_count>9</comment_count>
      <attachid>57722</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 18:16:59 -0700</bug_when>
    <thetext>Comment on attachment 57722
patch v3

Oops, I missed to take some feedbacks, canceling v3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233584</commentid>
    <comment_count>10</comment_count>
      <attachid>57729</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 20:15:46 -0700</bug_when>
    <thetext>Created attachment 57729
patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233588</commentid>
    <comment_count>11</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 20:26:30 -0700</bug_when>
    <thetext>Hi Darin, thank you for revewing!

(In reply to comment #7)
&gt; (From update of attachment 57634 [details])
&gt; WebKit/chromium/public/WebView.h:173
&gt;  +      virtual void dragSourceMovedTo(const WebPoint&amp; clientPoint, const WebPoint&amp; screenPoint, WebDragOperation) = 0;
&gt; nit: please use the same formatting as dragSourceEndedAt
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1550
&gt;  +  void WebViewImpl::dragSourceMovedTo(
&gt; nit: this method impl should be placed after dragSourceEndedAt
&gt; to match the declaration order.
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1557
&gt;  +  
&gt; nit: only one new line between method impls.
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1676
&gt;  +  static IntSize distanceTo(const WebCore::IntPoint&amp; point, const WebCore::IntRect&amp; rect)
&gt; nit: no need for WebCore:: prefix since there is a using namespace WebCore
&gt; at the top of this file.  also, please move static helper functions up to
&gt; the top of the file after the static data declarations.
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1676
&gt;  +  static IntSize distanceTo(const WebCore::IntPoint&amp; point, const WebCore::IntRect&amp; rect)
&gt; nit: how about naming this distanceToRect?
Renamed.

&gt; 
&gt; how about this as a comment:
&gt; // Computes the distance from a point outside a rect to the nearest edge of the rect.
&gt; 
&gt; (I would also assert that the point is not contained within the rect if that
&gt; is indeed appropriate.)
In some case it goes (0,0) because IntRect::contains() doesn&apos;t count its borders as its area.
So I added check instead assertion.


&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1695
&gt;  +      WebCore::FrameView* view = mainFrameImpl()-&gt;frameView();
&gt; nit: no WebCore:: prefix needed
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1693
&gt;  +      static const int kScrollMargin = 30;
&gt; nit: constants should not have the k prefix.  just do scrollMargin.
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.h:136
&gt;  +      virtual void dragSourceMovedTo(const WebPoint&amp; clientPoint, const WebPoint&amp; screenPoint, WebDragOperation);
&gt; please list this method in the same order that it is declared
&gt; in WebView.h
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:1690
&gt;  +  void WebViewImpl::scrollForDragging(const WebPoint&amp; clientPoint)
&gt; this method should be defined just above hideSelectPopup() so that
&gt; the order of methods in the .cpp file matches the order of the
&gt; methods in the .h file.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233906</commentid>
    <comment_count>12</comment_count>
      <attachid>57729</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-03 13:48:30 -0700</bug_when>
    <thetext>Comment on attachment 57729
patch v4

Looks good except some minor issues. Please land it with these issues addressed.

WebKit/chromium/public/WebView.h:172
 +      // Notifies the WebView that a dragging is going on.
dragging =&gt; drag

WebKit/chromium/src/WebViewImpl.cpp:845
 +      // This margin approximates Safari behavior
Please end the sentence with period.

WebKit/chromium/src/WebViewImpl.cpp:828
 +  // Computes disatances from a point to the nearest point from a rect for both x and y coordinates.
I think what Darin suggested for the comment is easy to understand. We have &quot;the distance&quot; represented by a pair of values, not &quot;distances&quot;.

WebKit/chromium/src/WebViewImpl.cpp:846
 +      static const int scrollMargin = 30;
Please comment why you pick 30. Maybe you could say that this is based on the observation of ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234028</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-03 18:57:52 -0700</bug_when>
    <thetext>Committed r60651: &lt;http://trac.webkit.org/changeset/60651&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234030</commentid>
    <comment_count>14</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-03 19:01:12 -0700</bug_when>
    <thetext>Hi Jian, thank you for reviewing again!
The patch landing with fix you suggested.

&gt; WebKit/chromium/public/WebView.h:172
&gt;  +      // Notifies the WebView that a dragging is going on.
&gt; dragging =&gt; drag
Done.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:845
&gt;  +      // This margin approximates Safari behavior
&gt; Please end the sentence with period.
Done.
&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:828
&gt;  +  // Computes disatances from a point to the nearest point from a rect for both x and y coordinates.
&gt; I think what Darin suggested for the comment is easy to understand. We have &quot;the distance&quot; represented by a pair of values, not &quot;distances&quot;.
Done. I&apos;m sorry that I missed this line....

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:846
&gt;  +      static const int scrollMargin = 30;
&gt; Please comment why you pick 30. Maybe you could say that this is based on the observation of ...
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240803</commentid>
    <comment_count>15</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-06-21 12:09:00 -0700</bug_when>
    <thetext>This does not seem to work. I&apos;m reopening and adding a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240807</commentid>
    <comment_count>16</comment_count>
      <attachid>59272</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-06-21 12:10:27 -0700</bug_when>
    <thetext>Created attachment 59272
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241216</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-22 04:40:27 -0700</bug_when>
    <thetext>Hi Erik, thank you for trying this!

(In reply to comment #15)
&gt; This does not seem to work. I&apos;m reopening and adding a test case.
It does work for outermost frame(window), but does not work for iframe.
Safari behaves similarly. 
So I filed this new suggestion to  as a separate bug on Bug 40981 and close this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241312</commentid>
    <comment_count>18</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-06-22 10:10:39 -0700</bug_when>
    <thetext>This bug is about Elements with scrollbars. 40981 is about iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241570</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-22 17:46:44 -0700</bug_when>
    <thetext>&gt; This bug is about Elements with scrollbars. 40981 is about iframes.
Oops. So what did happen is I misunderstood the bug and fixed the non-filed bug!  
Thank you for your correction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246543</commentid>
    <comment_count>20</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-07-05 02:35:51 -0700</bug_when>
    <thetext>removing [Chromium] from summary line because this problem is not chromium-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247406</commentid>
    <comment_count>21</comment_count>
      <attachid>60710</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-07-07 02:17:17 -0700</bug_when>
    <thetext>Created attachment 60710
patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247407</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-07 02:19:19 -0700</bug_when>
    <thetext>Attachment 60710 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/platform/graphics/IntRect.h:150:  More than one command on the same line  [whitespace/newline] [4]
WebCore/rendering/RenderLayer.cpp:1458:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/rendering/RenderLayer.cpp:1471:  Missing space after ,  [whitespace/comma] [3]
WebCore/rendering/RenderLayer.cpp:1479:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/rendering/RenderLayer.cpp:1491:  One line control clauses should not use braces.  [whitespace/braces] [4]
WebCore/rendering/RenderLayer.cpp:1489:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/page/DragController.cpp:74:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 7 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>247426</commentid>
    <comment_count>23</comment_count>
      <attachid>60711</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-07-07 02:53:22 -0700</bug_when>
    <thetext>Created attachment 60711
patch v1 fix style violation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247433</commentid>
    <comment_count>24</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-07-07 03:09:19 -0700</bug_when>
    <thetext>Added Darin to CC because git annotate told me to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248356</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-08 11:17:50 -0700</bug_when>
    <thetext>I’d like to review this patch, but probably won’t get to it soon.

Is this always a good idea? Do other browsers do this? Any cases where doing this would be a bad thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248717</commentid>
    <comment_count>26</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-07-08 21:35:41 -0700</bug_when>
    <thetext>Hi Darin, thank you for your feedback!

&gt; Is this always a good idea? Do other browsers do this?
No other browser( firefox, opera, ie) doesn&apos;t support autoscroll at all, even for outermost frames.
Only safari (and latest chromium) does support it.
Drag-drop support on other browsers seems immature compared to WebKit. 
I think they don&apos;t have autoscroll yet because they don&apos;t have enough drag-drop support yet.
So we could pioneer in this area.

Actually, some desktop applications including (non-internet) explorer 
also support autoscroll by dragging.

&gt; Any cases where doing this would be a bad thing?
Users could trigger scrolling accidentally if the autoscroll criteria is too sensitive.
So this patch uses a timer to delay triggering the autoscroll (as Cocoa&apos;s autoscroll does).
With such delay, chances for accidental scrolling can be minimized.

Just FYI, here is a viewpoint from chromium land:
We have the bookmark manager implemented in HTML, that heavily uses drag-and-drop.
This feature is originally requested for improving its experience.

Regards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275728</commentid>
    <comment_count>27</comment_count>
      <attachid>66868</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-09-08 03:50:25 -0700</bug_when>
    <thetext>Created attachment 66868
sync to latest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298756</commentid>
    <comment_count>28</comment_count>
      <attachid>71721</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-25 01:15:19 -0700</bug_when>
    <thetext>Created attachment 71721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298757</commentid>
    <comment_count>29</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-25 01:18:00 -0700</bug_when>
    <thetext>Could anyone give me a review?
This scroll-following-drag is vital for high-density UI with drag operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340135</commentid>
    <comment_count>30</comment_count>
      <attachid>71721</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-25 21:29:48 -0800</bug_when>
    <thetext>Comment on attachment 71721
Patch

Got obsolete, giving up at now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779978</commentid>
    <comment_count>31</comment_count>
      <attachid>176933</attachid>
    <who name="">yosin</who>
    <bug_when>2012-11-30 03:05:42 -0800</bug_when>
    <thetext>Created attachment 176933
WIP Patch 2.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780471</commentid>
    <comment_count>32</comment_count>
      <attachid>176933</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-30 15:26:41 -0800</bug_when>
    <thetext>Comment on attachment 176933
WIP Patch 2.0

This one looks much simpler than the last version that I wrote. This is great!
One caveat to this patch is that we have too much rendering related logic in EventHandler, which violates layering.
It would be better if we move them to somewhere in rendering/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783437</commentid>
    <comment_count>33</comment_count>
      <attachid>177680</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-04 23:38:00 -0800</bug_when>
    <thetext>Created attachment 177680
Patch 2.0-1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783518</commentid>
    <comment_count>34</comment_count>
      <attachid>177680</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-05 01:38:52 -0800</bug_when>
    <thetext>Comment on attachment 177680
Patch 2.0-1

Could you review this patch?
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783533</commentid>
    <comment_count>35</comment_count>
      <attachid>177680</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-05 01:47:28 -0800</bug_when>
    <thetext>Comment on attachment 177680
Patch 2.0-1

Attachment 177680 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15153327

New failing tests:
fast/events/drag-and-drop-dataTransfer-types-nocrash.html
fast/events/drag-and-drop-autoscroll.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783546</commentid>
    <comment_count>36</comment_count>
      <attachid>177680</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-05 02:03:53 -0800</bug_when>
    <thetext>Comment on attachment 177680
Patch 2.0-1

Oops, failed on Mac test. Investigating...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784663</commentid>
    <comment_count>37</comment_count>
      <attachid>177950</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-05 23:19:19 -0800</bug_when>
    <thetext>Created attachment 177950
Patch 2.0-2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784741</commentid>
    <comment_count>38</comment_count>
      <attachid>177950</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-06 01:15:18 -0800</bug_when>
    <thetext>Comment on attachment 177950
Patch 2.0-2

Could you review this patch?
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789146</commentid>
    <comment_count>39</comment_count>
      <attachid>177950</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-11 20:46:49 -0800</bug_when>
    <thetext>Comment on attachment 177950
Patch 2.0-2

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

The approach looks good. Let&apos;s take this as an opportunity to cleanup auto-scrolling code.

&gt; Source/WebCore/page/EventHandler.cpp:136
&gt; +// Delay time in second for start autoscroll if pointer is in border edge of scrollable element.

can be static since it&apos;s referred only from this file.

&gt; Source/WebCore/page/EventHandler.cpp:137
&gt; +const double autoscrollDelay = 0.2;

Ditto.

&gt; Source/WebCore/page/EventHandler.cpp:141
&gt; +const int autoscrollBeltSize = 20;

same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789151</commentid>
    <comment_count>40</comment_count>
      <attachid>177950</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-11 20:51:28 -0800</bug_when>
    <thetext>Comment on attachment 177950
Patch 2.0-2

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

&gt; Source/WebCore/page/EventHandler.h:408
&gt; +    IntPoint m_autoscrollReferencePoint;

It&apos;s sad to see EventHandler getting fat.
It looks we already have bunch of autoscroll related state and we&apos;re adding more.
Why not factor these out to a class which is responsible for auto scrolling?

&gt; Source/WebCore/rendering/RenderObject.h:275
&gt; +    virtual bool canAutoscroll() const { return false; }

I don&apos;t think this need to be virtual. It can be a method of RenderBox.

&gt; Source/WebCore/rendering/RenderObject.h:276
&gt; +    RenderObject* findAutoscrollableRenderer();

For that, this should return RenderBox.
I think this can be a static method of RenderBox so that autoscrolling related code
can be stay in the same class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791465</commentid>
    <comment_count>41</comment_count>
      <attachid>179448</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-14 01:41:30 -0800</bug_when>
    <thetext>Created attachment 179448
Patch 3.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791467</commentid>
    <comment_count>42</comment_count>
      <attachid>179448</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-14 01:42:37 -0800</bug_when>
    <thetext>Comment on attachment 179448
Patch 3.0

Could you review this patch?
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801967</commentid>
    <comment_count>43</comment_count>
      <attachid>179448</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 20:33:31 -0800</bug_when>
    <thetext>Comment on attachment 179448
Patch 3.0

Could you clarify when an autoscrol of the specific type starts and ends?
AutoscrollForDragAndDrop is hidden in ambiguous &quot;update&quot; function. That isn&apos;t good.
We need start and hopefully end functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802008</commentid>
    <comment_count>44</comment_count>
      <attachid>181638</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-07 21:54:59 -0800</bug_when>
    <thetext>Created attachment 181638
Patch-3.0.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802016</commentid>
    <comment_count>45</comment_count>
      <attachid>181638</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-07 22:01:26 -0800</bug_when>
    <thetext>Comment on attachment 181638
Patch-3.0.1

Could you review this patch?
Thanks in advance.

= Changes since the last review =
Changes AutoscrollController::updateDragAndDrop to be clear, it does

- If new drop target is not autoscrollable, stops autoscroll.
- If autoscroll is in progress, update autoscroll renderer and update event start time if needed.
- Otherwise, start autoscroll for DnD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802109</commentid>
    <comment_count>46</comment_count>
      <attachid>181638</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-08 00:27:03 -0800</bug_when>
    <thetext>Comment on attachment 181638
Patch-3.0.1

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802121</commentid>
    <comment_count>47</comment_count>
      <attachid>181638</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 00:59:17 -0800</bug_when>
    <thetext>Comment on attachment 181638
Patch-3.0.1

Clearing flags on attachment: 181638

Committed r139044: &lt;http://trac.webkit.org/changeset/139044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802122</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 00:59:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802473</commentid>
    <comment_count>49</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-08 12:08:20 -0800</bug_when>
    <thetext>The test added by this patch is failing on Mac:
http://build.webkit.org/results/Apple%20MountainLion%20Release%20WK2%20(Tests)/r139087%20(4563)/fast/events/drag-and-drop-autoscroll-pretty-diff.html

--- /Volumes/Data/slave/mountainlion-release-tests-wk2/build/layout-test-results/fast/events/drag-and-drop-autoscroll-expected.txt
+++ /Volumes/Data/slave/mountainlion-release-tests-wk2/build/layout-test-results/fast/events/drag-and-drop-autoscroll-actual.txt
@@ -3,6 +3,6 @@
 On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
 
 
-PASS scrollable.scrollTop &gt; 0
+FAIL No autoscroll
 For manual testing, drag and drop &quot;Drop Me&quot; to &quot;Scrollable&quot; area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802484</commentid>
    <comment_count>50</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-08 12:14:34 -0800</bug_when>
    <thetext>The test is failing on all but chromium port:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;tests=fast%2Fevents%2Fdrag-and-drop-autoscroll.html

Is this supposed to work only in chromium? If so, why was the test added to fast/events instead of chromium/fast/events?

If not, then I would like to know why you didn&apos;t fix non-chromium ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802494</commentid>
    <comment_count>51</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-08 12:21:26 -0800</bug_when>
    <thetext>If I don&apos;t get any response from either one of you in a timely mannar, I&apos;m going to revert this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802552</commentid>
    <comment_count>52</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2013-01-08 13:06:51 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; If I don&apos;t get any response from either one of you in a timely mannar, I&apos;m going to revert this patch.

This doesn&apos;t look Chromium specific.

Morrita is not in your time zone so please be patient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802766</commentid>
    <comment_count>53</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-08 16:12:17 -0800</bug_when>
    <thetext>This patch started from Chromium-specific approach but
changed direction during updates.

Anyway, It shoudln&apos;t break any tests. I&apos;ll rollout this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802769</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 16:14:27 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 106395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802777</commentid>
    <comment_count>55</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-08 16:21:27 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; Re-opened since this is blocked by bug 106395
We can just mark it fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805628</commentid>
    <comment_count>56</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-11 14:44:45 -0800</bug_when>
    <thetext>This patch is caused unwanted scroll behavior on Mac. There are several issues:
1. If I drag a URL over a page, it will autoscroll when near the top and bottom for no useful reason: there are no drop targets anywhere on the page, even out of view.
2. The page seems to get stuck in &quot;autoscroll&quot; mode even when the drag has finished; scrolling the page manually will cause it to drift in one direction, or fight the user scrolling.

I&apos;m going to revert this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805632</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 14:47:12 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 106702</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805649</commentid>
    <comment_count>58</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-11 14:59:28 -0800</bug_when>
    <thetext>Steps to reproduce the bug that caused the rollout:

1. Go to a website in a Mac WebKit2 view
2. Drag something into the window (e.g. text from a text editor)
3. Some glitches happens: the content moves up and down real fast
4. Scroll to the middle of the page and release
5. The content slowly scroll back to the top.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805753</commentid>
    <comment_count>59</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2013-01-11 16:46:31 -0800</bug_when>
    <thetext>Was this rolled out? This causes autoscroll issues in Chromium:

https://code.google.com/p/chromium/issues/detail?id=169630

Repro steps there, though it seems that you see them in other ports too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805754</commentid>
    <comment_count>60</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-11 16:47:59 -0800</bug_when>
    <thetext>(In reply to comment #59)
&gt; Was this rolled out? This causes autoscroll issues in Chromium:
&gt; 
&gt; https://code.google.com/p/chromium/issues/detail?id=169630
&gt; 
&gt; Repro steps there, though it seems that you see them in other ports too.

Yes, it has been rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805883</commentid>
    <comment_count>61</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-01-12 10:05:53 -0800</bug_when>
    <thetext>(In reply to comment #56)
&gt; This patch is caused unwanted scroll behavior on Mac. There are several issues:
&gt; 1. If I drag a URL over a page, it will autoscroll when near the top and bottom for no useful reason: there are no drop targets anywhere on the page, even out of view.

This particular bit seems fine to me. I prefer the consistency of always doing the scrolling over only doing so when there are drop targets. Perhaps this is a UI decision different ports will want to handle differently though. I suppose we should check with our UI folks to get an official word on what behavior we&apos;d like.

If we need to, we could put it behind a setting with a FIXME to enable it once there&apos;s a setting to only scroll when there are drop targets.

I wonder if we should also have some heuristic to not scroll when you initially drag in, but only when you move back to the edge of the scrollable region to avoid scrolling if you are aiming for a currently visible drop target.

There were clearly other bugs with this patch, so rolling out makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806736</commentid>
    <comment_count>62</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-14 16:20:46 -0800</bug_when>
    <thetext>Oops. I&apos;m sorry to be late here. Thanks for taking care of this.

&gt; 1. If I drag a URL over a page, it will autoscroll when near the top and bottom for no useful reason: there are no drop targets anywhere on the page, even out of view.
&gt; 2. The page seems to get stuck in &quot;autoscroll&quot; mode even when the drag has finished; scrolling the page manually will cause it to drift in one direction, or fight the user scrolling.

At least 2 is obviously a bug and need to be fixed.
For 1, it might need some heuristic as Ojan said.
It can be platform/client-specific
and always return no-scroll by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807055</commentid>
    <comment_count>63</comment_count>
      <attachid>182711</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-15 00:31:13 -0800</bug_when>
    <thetext>Created attachment 182711
Patch-3.0.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807060</commentid>
    <comment_count>64</comment_count>
      <attachid>182711</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-15 00:39:39 -0800</bug_when>
    <thetext>Comment on attachment 182711
Patch-3.0.2

Could you review this patch?
Thanks in advance.

This patch fixes non-stopping autoscroll issue. The root cause is forgetting call of stop autscroll timer at cancellation of drag-and-drop, e.g. pressing ESCAPE key, drag off the window from another process&apos;s drag source.

= Changes since the last review =
* Call stopAutoscrollTimer() at EventHandler::clearDragState() which called after drop or cancel of drag-and-drop.
* Introduce ChromeClient::shouldAutoscrollForDragAndDrop() for enabling drag-and-drop autoscroll by each port rater than all ports. Note: Chromium port enables.
* Layout test drag-and-drop-autosccroll.html checks stopping of autoscroll after drag-and-drop cancellation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807062</commentid>
    <comment_count>65</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 00:43:21 -0800</bug_when>
    <thetext>Attachment 182711 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Tools/DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 23 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>807072</commentid>
    <comment_count>66</comment_count>
      <attachid>182711</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-15 00:59:12 -0800</bug_when>
    <thetext>Comment on attachment 182711
Patch-3.0.2

Attachment 182711 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15871816</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807087</commentid>
    <comment_count>67</comment_count>
      <attachid>182718</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-15 01:15:06 -0800</bug_when>
    <thetext>Created attachment 182718
Patch-3.0.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807093</commentid>
    <comment_count>68</comment_count>
      <attachid>182718</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-15 01:18:22 -0800</bug_when>
    <thetext>Comment on attachment 182718
Patch-3.0.3

Could you review this patch?
Thanks in advance.

* Mac compilation failure was fixed, unused parameter in shouldAutoscrollForDragAndDrop() declaration.
* Style failure for VKEY_ESCAPE is a tool issue, https://bugs.webkit.org/show_bug.cgi?id=106881

This patch fixes non-stopping autoscroll issue. The root cause is forgetting call of stop autscroll timer at cancellation of drag-and-drop, e.g. pressing ESCAPE key, drag off the window from another process&apos;s drag source.

= Changes since the last review =
* Call stopAutoscrollTimer() at EventHandler::clearDragState() which called after drop or cancel of drag-and-drop.
* Introduce ChromeClient::shouldAutoscrollForDragAndDrop() for enabling drag-and-drop autoscroll by each port rater than all ports. Note: Chromium port enables.
* Layout test drag-and-drop-autosccroll.html checks stopping of autoscroll after drag-and-drop cancellation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807099</commentid>
    <comment_count>69</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 01:21:10 -0800</bug_when>
    <thetext>Attachment 182718 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Tools/DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 23 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>809033</commentid>
    <comment_count>70</comment_count>
      <attachid>183109</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-16 20:43:02 -0800</bug_when>
    <thetext>Created attachment 183109
Patch-3.0.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809035</commentid>
    <comment_count>71</comment_count>
      <attachid>183109</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-16 20:44:50 -0800</bug_when>
    <thetext>Comment on attachment 183109
Patch-3.0.4

Could you review this patch?
Thanks in advance.

= Changes since the last patch =
* Add skip entry for drag-and-drop-autoscroll.html into TestExpectations other than Chromium ports.

= Changes since the last review =
* Mac compilation failure was fixed, unused parameter in shouldAutoscrollForDragAndDrop() declaration.
* Style failure for VKEY_ESCAPE is a tool issue, https://bugs.webkit.org/show_bug.cgi?id=106881

This patch fixes non-stopping autoscroll issue. The root cause is forgetting call of stop autscroll timer at cancellation of drag-and-drop, e.g. pressing ESCAPE key, drag off the window from another process&apos;s drag source.

= Changes since the last review =
* Call stopAutoscrollTimer() at EventHandler::clearDragState() which called after drop or cancel of drag-and-drop.
* Introduce ChromeClient::shouldAutoscrollForDragAndDrop() for enabling drag-and-drop autoscroll by each port rater than all ports. Note: Chromium port enables.
* Layout test drag-and-drop-autosccroll.html checks stopping of autoscroll after drag-and-drop cancellation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809041</commentid>
    <comment_count>72</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 20:47:52 -0800</bug_when>
    <thetext>Attachment 183109 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Tools/DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 29 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>810356</commentid>
    <comment_count>73</comment_count>
      <attachid>183400</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-18 01:33:05 -0800</bug_when>
    <thetext>Created attachment 183400
Patch 3.0.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810358</commentid>
    <comment_count>74</comment_count>
      <attachid>183400</attachid>
    <who name="">yosin</who>
    <bug_when>2013-01-18 01:34:49 -0800</bug_when>
    <thetext>Comment on attachment 183400
Patch 3.0.5

Could you review this patch?
Thanks in advance.

This is rebase version of previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810359</commentid>
    <comment_count>75</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 01:36:46 -0800</bug_when>
    <thetext>Attachment 183400 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Tools/DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 29 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>810363</commentid>
    <comment_count>76</comment_count>
      <attachid>183400</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-18 01:43:56 -0800</bug_when>
    <thetext>Comment on attachment 183400
Patch 3.0.5

Let&apos;s try this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811709</commentid>
    <comment_count>77</comment_count>
      <attachid>183400</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 17:30:36 -0800</bug_when>
    <thetext>Comment on attachment 183400
Patch 3.0.5

Clearing flags on attachment: 183400

Committed r140286: &lt;http://trac.webkit.org/changeset/140286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811710</commentid>
    <comment_count>78</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 17:30:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57296</attachid>
            <date>2010-05-27 23:48:35 -0700</date>
            <delta_ts>2010-05-27 23:55:40 -0700</delta_ts>
            <desc>patch v0</desc>
            <filename>bug-39725-20100528154833.patch</filename>
            <type>text/plain</type>
            <size>7206</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWU4ZTM1ODE1YjNmZGU2ZTAxMThjODhjNDk1ZGMyN2UyYWQ4YWJlZi4uOGU4OGMzMWI4YWJlM2My
MzQyY2ViNjhiNjZkNmQxYmNmZDgxOTJhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0yNiAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIERyYWdnaW5nIG92ZXIgYW4gZWxl
bWVudCB3aXRoIHNjcm9sbGJhcnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdn
aW5nIG5lYXIgZWRnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NzI1CisKKyAgICAgICAgQWRkZWQgSW50UmVjdDo6ZGlyZWN0aW9uVG8oKSB0byBj
b21wdXRlIGRpcmVjdGlvbiBiZXR3ZWVuIGEgcmVjdCBhbmQgYSBwb2ludC4KKyAgICAgICAgCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gRHJhZyBhbmQgZHJvcCB3aXRoIG1vdXNlIGV2ZW50cyBjYW5u
b3QgYmUgYXV0b21hdGVkLgorICAgICAgICBOb3RlIHRoYXQgU2FmYXJpIGFscmVhZHkgaGFzIHRo
aXMgc2Nyb2xsLWZvci1kcmFnIGJlaGF2aW9yIHByb3ZpZGVkIGJ5IENvY29hIGZyYW1ld29yay4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50UmVjdDo6ZGlyZWN0aW9uVG8pOiBBZGRlZAorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaDoKKwogMjAxMC0wNS0yNCAgVGFzdWt1IFN1enVraSAgPHRhc3VrdS5z
dXp1a2lAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKaW5kZXggMTg4YjVm
OTFmY2ZmODE4NTIzZjNmYjg0OGM3NDExYWY4Mjg2MGY4OS4uNjliYmE4MmZkNWU2NzBiZTZmZDYy
ZDA1NmIxZDRhNmE2ODkzNTQ4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3Bw
CkBAIC01NCw2ICs1NCwyMSBAQCBib29sIEludFJlY3Q6OmNvbnRhaW5zKGNvbnN0IEludFJlY3Qm
IG90aGVyKSBjb25zdAogICAgICAgICAmJiB5KCkgPD0gb3RoZXIueSgpICYmIGJvdHRvbSgpID49
IG90aGVyLmJvdHRvbSgpOwogfQogCitJbnRTaXplIEludFJlY3Q6OmRpcmVjdGlvblRvKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiB0YXJnZXQpIGNvbnN0Cit7CisgICAgaW50IGR4ID0gMCwgZHkg
PSAwOworICAgIGlmICh0YXJnZXQueCgpIDwgeCgpKQorICAgICAgICBkeCA9IHRhcmdldC54KCkg
LSB4KCk7CisgICAgZWxzZSBpZiAocmlnaHQoKSA8IHRhcmdldC54KCkpCisgICAgICAgIGR4ID0g
dGFyZ2V0LngoKSAtIHJpZ2h0KCk7CisgICAgaWYgKHRhcmdldC55KCkgPCB5KCkpCisgICAgICAg
IGR5ID0gdGFyZ2V0LnkoKSAtIHkoKTsKKyAgICBlbHNlIGlmIChib3R0b20oKSA8IHRhcmdldC55
KCkpCisgICAgICAgIGR5ID0gdGFyZ2V0LnkoKSAtIGJvdHRvbSgpOworICAgIHJldHVybiBJbnRT
aXplKGR4LCBkeSk7Cit9CisKKwogdm9pZCBJbnRSZWN0OjppbnRlcnNlY3QoY29uc3QgSW50UmVj
dCYgb3RoZXIpCiB7CiAgICAgaW50IGwgPSBtYXgoeCgpLCBvdGhlci54KCkpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFJlY3QuaAppbmRleCA1YzVlYWUxOGZmODczMjcwZDFmYjI1M2FkZDg5ZTI4
NjhiMWI2OWM1Li5jNzkxNWU4ZDljOTBjMDU5YjY1NmMwNjEyZWIyMGY4NTU2YzUxODkzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMTE2LDYgKzExNiw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGludGVyc2VjdHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogCisgICAgSW50U2l6ZSBkaXJlY3Rpb25Ubyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0KSBjb25zdDsKKwogICAgIC8vIFRoaXMgY2hl
Y2tzIHRvIHNlZSBpZiB0aGUgcmVjdCBjb250YWlucyB4LHkgaW4gdGhlIHRyYWRpdGlvbmFsIHNl
bnNlLgogICAgIC8vIEVxdWl2YWxlbnQgdG8gY2hlY2tpbmcgaWYgdGhlIHJlY3QgY29udGFpbnMg
YSAxeDEgcmVjdCBiZWxvdyBhbmQgdG8gdGhlIHJpZ2h0IG9mIChweCxweSkuCiAgICAgYm9vbCBj
b250YWlucyhpbnQgcHgsIGludCBweSkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDIzZTYzMWYxNzUx
M2U5MjE2Y2I2YzczZTViZDdkY2Q1ODJmYzg5OTYuLjMxMDRlZTYwMzZmNmRkOGJlMmUyNGFiZDY3
OWUxMDg2YWM4MDQ5OWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTI2
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gRHJhZ2dpbmcgb3ZlciBh
biBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4g
ZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBBZGRlZCBXZWJWaWV3SW1wbDo6c2Nyb2xsRm9y
RHJhZ2dpbmcoKSB0byBoYW5kbGUgc2Nyb2xsLW9uLWRyYWcuCisgICAgICAgIE5vdGUgdGhhdCB0
aGlzIGNoYW5nZSBoYW5kZXMgYm90aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGNhc2VzLgorICAg
ICAgICAKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRU
byk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JP
dmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjcm9sbEZvckRyYWdnaW5nKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0wNS0yNCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gU29ydCBmZWF0dXJl
cy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggOWVkOThjNjE5OGI4ZGE5OWUxODI0N2Q3
ZWQ4MzMxYWNmYTNhNjE3NC4uOGFmMjBhMzExMTBmYWVhYWE0ZGYzYThkNTQ3YTQyZDkxZTgxNDNm
MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTE2OSw2ICsxNjksMTIgQEAgcHVibGlj
OgogICAgICAgICBjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBz
Y3JlZW5Qb2ludCwKICAgICAgICAgV2ViRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pID0gMDsKIAor
ICAgIC8vIE5vdGlmaWVkIHRoZSBXZWJWaWV3IHRoYXQgYSBkcmFnZ2luZyBpcyBnb2luZyBvbi4K
KyAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZU1vdmVkVG8oCisgICAgICAgIGNvbnN0IFdlYlBv
aW50JiBjbGllbnRQb2ludCwKKyAgICAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAor
ICAgICAgICBXZWJEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikgPSAwOworCiAgICAgLy8gTm90Zmll
cyB0aGUgV2ViVmlldyB0aGF0IHRoZSBzeXN0ZW0gZHJhZyBhbmQgZHJvcCBvcGVyYXRpb24gaGFz
IGVuZGVkLgogICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlU3lzdGVtRHJhZ0VuZGVkKCkgPSAw
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDUyNjQ2OWQ5NWY5ZWNlY2M3
MDEwNWQwZmUzOTQ5YzE1MzE2NmFjNTUuLjAyMDkwYzRiOGZjMDU4N2U1Mjc3MzkyMDBkODQ1OWMz
MjJkMWIzNzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNTQ3LDYgKzE1
NDcsMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgpCiAg
ICAgfQogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbygKKyAgICBjb25z
dCBXZWJQb2ludCYgY2xpZW50UG9pbnQsCisgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50
LAorICAgIFdlYkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQoreworICAgIHNjcm9sbEZvckRyYWdn
aW5nKGNsaWVudFBvaW50KTsKK30KKworCiBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpk
cmFnVGFyZ2V0RHJhZ0VudGVyKAogICAgIGNvbnN0IFdlYkRyYWdEYXRhJiB3ZWJEcmFnRGF0YSwg
aW50IGlkZW50aXR5LAogICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwKQEAgLTE2NTcs
OSArMTY2NiwzMiBAQCBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJh
Z0VudGVyT3JPdmVyKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQbwogICAgIH0gZWxzZQogICAgICAg
ICBtX2RyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9uPihlZmZlY3Qp
OwogCisgICAgaWYgKGRyYWdBY3Rpb24gPT0gRHJhZ092ZXIpCisJc2Nyb2xsRm9yRHJhZ2dpbmco
Y2xpZW50UG9pbnQpOworCiAgICAgcmV0dXJuIG1fZHJhZ09wZXJhdGlvbjsKIH0KIAordm9pZCBX
ZWJWaWV3SW1wbDo6c2Nyb2xsRm9yRHJhZ2dpbmcoY29uc3QgV2ViUG9pbnQmIGNsaWVudFBvaW50
KQoreworCisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVJbXBs
KCktPmZyYW1lVmlldygpOworICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKDAsIDAsIGZyYW1l
Vmlldy0+dmlzaWJsZVdpZHRoKCksIGZyYW1lVmlldy0+dmlzaWJsZUhlaWdodCgpKTsKKworICAg
IGludCBtYXJnaW4gPSBib3VuZHMud2lkdGgoKS9XZWJWaWV3SW1wbDo6a1Njcm9sbE1hcmdpblJh
dGlvOworICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIGRlZmxhdGUoKSBpZiBodHRwOi8vd2Via2l0
Lm9yZy9iLzM5NDE3IGRvZXMgbGFuZC4KKyAgICBib3VuZHMuc2V0WShib3VuZHMueSgpICsgbWFy
Z2luKTsKKyAgICBib3VuZHMuc2V0SGVpZ2h0KGJvdW5kcy5oZWlnaHQoKSAtIG1hcmdpbioyKTsK
KyAgICBib3VuZHMuc2V0WChib3VuZHMueCgpICsgbWFyZ2luKTsKKyAgICBib3VuZHMuc2V0V2lk
dGgoYm91bmRzLndpZHRoKCkgLSBtYXJnaW4qMik7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCA9IGNsaWVudFBvaW50OworICAgIGlmIChib3VuZHMuY29udGFpbnMocG9pbnQpKQorCXJl
dHVybjsKKyAgICAKKyAgICBmcmFtZVZpZXctPnNjcm9sbEJ5KGJvdW5kcy5kaXJlY3Rpb25Ubyhw
b2ludCkpOworfQorCiB1bnNpZ25lZCBsb25nIFdlYlZpZXdJbXBsOjpjcmVhdGVVbmlxdWVJZGVu
dGlmaWVyRm9yUmVxdWVzdCgpCiB7CiAgICAgaWYgKG1fcGFnZSkKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAppbmRleCBkNTQ1YTQyNWEzMzFkMDI3NzA1OTk0MTlmMTc3MWJjMGY0MzkxMWUxLi5l
YTQzNDRhNjZhZDkzYWFjNWQyNDYwNzkyM2JkNTYzMzRlMjZlNTQyIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCkBAIC0xMzMsNiArMTMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3Qg
V2ViUG9pbnQmIHNjcmVlblBvaW50LAogICAgICAgICBXZWJEcmFnT3BlcmF0aW9uIG9wZXJhdGlv
bik7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdTb3VyY2VTeXN0ZW1EcmFnRW5kZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZU1vdmVkVG8oCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBj
bGllbnRQb2ludCwKKyAgICAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAorICAgICAg
ICBXZWJEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbik7CiAgICAgdmlydHVhbCBXZWJEcmFnT3BlcmF0
aW9uIGRyYWdUYXJnZXREcmFnRW50ZXIoCiAgICAgICAgIGNvbnN0IFdlYkRyYWdEYXRhJiBkcmFn
RGF0YSwgaW50IGlkZW50aXR5LAogICAgICAgICBjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQs
CkBAIC0zMjQsNiArMzI4LDggQEAgcHJpdmF0ZToKICAgICAgIERyYWdPdmVyCiAgICAgfTsKIAor
ICAgIHN0YXRpYyBjb25zdCBpbnQga1Njcm9sbE1hcmdpblJhdGlvID0gMjA7CisKICAgICBXZWJW
aWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpOwogICAgIH5XZWJWaWV3SW1wbCgpOwogCkBA
IC0zNDQsNiArMzUwLDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHZp
ZXcgd2FzIHNjcm9sbGVkLgogICAgIGJvb2wgc2Nyb2xsVmlld1dpdGhLZXlib2FyZChpbnQga2V5
Q29kZSwgaW50IG1vZGlmaWVycyk7CiAKKyAgICB2b2lkIHNjcm9sbEZvckRyYWdnaW5nKGNvbnN0
IFdlYlBvaW50JiBjbGllbnRQb2ludCk7CisKICAgICB2b2lkIGhpZGVTZWxlY3RQb3B1cCgpOwog
CiAgICAgLy8gQ29udmVydHMgfHBvc3wgZnJvbSB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gY29udGVu
dHMgY29vcmRpbmF0ZXMgYW5kIGdldHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57298</attachid>
            <date>2010-05-27 23:55:46 -0700</date>
            <delta_ts>2010-06-02 01:44:56 -0700</delta_ts>
            <desc>patch v1 - fix style violation</desc>
            <filename>bug-39725-20100528155544.patch</filename>
            <type>text/plain</type>
            <size>7222</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWU4ZTM1ODE1YjNmZGU2ZTAxMThjODhjNDk1ZGMyN2UyYWQ4YWJlZi4uOGU4OGMzMWI4YWJlM2My
MzQyY2ViNjhiNjZkNmQxYmNmZDgxOTJhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0yNiAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIERyYWdnaW5nIG92ZXIgYW4gZWxl
bWVudCB3aXRoIHNjcm9sbGJhcnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdn
aW5nIG5lYXIgZWRnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NzI1CisKKyAgICAgICAgQWRkZWQgSW50UmVjdDo6ZGlyZWN0aW9uVG8oKSB0byBj
b21wdXRlIGRpcmVjdGlvbiBiZXR3ZWVuIGEgcmVjdCBhbmQgYSBwb2ludC4KKyAgICAgICAgCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gRHJhZyBhbmQgZHJvcCB3aXRoIG1vdXNlIGV2ZW50cyBjYW5u
b3QgYmUgYXV0b21hdGVkLgorICAgICAgICBOb3RlIHRoYXQgU2FmYXJpIGFscmVhZHkgaGFzIHRo
aXMgc2Nyb2xsLWZvci1kcmFnIGJlaGF2aW9yIHByb3ZpZGVkIGJ5IENvY29hIGZyYW1ld29yay4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50UmVjdDo6ZGlyZWN0aW9uVG8pOiBBZGRlZAorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaDoKKwogMjAxMC0wNS0yNCAgVGFzdWt1IFN1enVraSAgPHRhc3VrdS5z
dXp1a2lAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKaW5kZXggMTg4YjVm
OTFmY2ZmODE4NTIzZjNmYjg0OGM3NDExYWY4Mjg2MGY4OS4uNjliYmE4MmZkNWU2NzBiZTZmZDYy
ZDA1NmIxZDRhNmE2ODkzNTQ4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3Bw
CkBAIC01NCw2ICs1NCwyMSBAQCBib29sIEludFJlY3Q6OmNvbnRhaW5zKGNvbnN0IEludFJlY3Qm
IG90aGVyKSBjb25zdAogICAgICAgICAmJiB5KCkgPD0gb3RoZXIueSgpICYmIGJvdHRvbSgpID49
IG90aGVyLmJvdHRvbSgpOwogfQogCitJbnRTaXplIEludFJlY3Q6OmRpcmVjdGlvblRvKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiB0YXJnZXQpIGNvbnN0Cit7CisgICAgaW50IGR4ID0gMCwgZHkg
PSAwOworICAgIGlmICh0YXJnZXQueCgpIDwgeCgpKQorICAgICAgICBkeCA9IHRhcmdldC54KCkg
LSB4KCk7CisgICAgZWxzZSBpZiAocmlnaHQoKSA8IHRhcmdldC54KCkpCisgICAgICAgIGR4ID0g
dGFyZ2V0LngoKSAtIHJpZ2h0KCk7CisgICAgaWYgKHRhcmdldC55KCkgPCB5KCkpCisgICAgICAg
IGR5ID0gdGFyZ2V0LnkoKSAtIHkoKTsKKyAgICBlbHNlIGlmIChib3R0b20oKSA8IHRhcmdldC55
KCkpCisgICAgICAgIGR5ID0gdGFyZ2V0LnkoKSAtIGJvdHRvbSgpOworICAgIHJldHVybiBJbnRT
aXplKGR4LCBkeSk7Cit9CisKKwogdm9pZCBJbnRSZWN0OjppbnRlcnNlY3QoY29uc3QgSW50UmVj
dCYgb3RoZXIpCiB7CiAgICAgaW50IGwgPSBtYXgoeCgpLCBvdGhlci54KCkpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFJlY3QuaAppbmRleCA1YzVlYWUxOGZmODczMjcwZDFmYjI1M2FkZDg5ZTI4
NjhiMWI2OWM1Li5jNzkxNWU4ZDljOTBjMDU5YjY1NmMwNjEyZWIyMGY4NTU2YzUxODkzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMTE2LDYgKzExNiw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGludGVyc2VjdHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogCisgICAgSW50U2l6ZSBkaXJlY3Rpb25Ubyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0KSBjb25zdDsKKwogICAgIC8vIFRoaXMgY2hl
Y2tzIHRvIHNlZSBpZiB0aGUgcmVjdCBjb250YWlucyB4LHkgaW4gdGhlIHRyYWRpdGlvbmFsIHNl
bnNlLgogICAgIC8vIEVxdWl2YWxlbnQgdG8gY2hlY2tpbmcgaWYgdGhlIHJlY3QgY29udGFpbnMg
YSAxeDEgcmVjdCBiZWxvdyBhbmQgdG8gdGhlIHJpZ2h0IG9mIChweCxweSkuCiAgICAgYm9vbCBj
b250YWlucyhpbnQgcHgsIGludCBweSkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDIzZTYzMWYxNzUx
M2U5MjE2Y2I2YzczZTViZDdkY2Q1ODJmYzg5OTYuLjMxMDRlZTYwMzZmNmRkOGJlMmUyNGFiZDY3
OWUxMDg2YWM4MDQ5OWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTI2
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gRHJhZ2dpbmcgb3ZlciBh
biBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4g
ZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBBZGRlZCBXZWJWaWV3SW1wbDo6c2Nyb2xsRm9y
RHJhZ2dpbmcoKSB0byBoYW5kbGUgc2Nyb2xsLW9uLWRyYWcuCisgICAgICAgIE5vdGUgdGhhdCB0
aGlzIGNoYW5nZSBoYW5kZXMgYm90aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGNhc2VzLgorICAg
ICAgICAKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRU
byk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JP
dmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjcm9sbEZvckRyYWdnaW5nKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0wNS0yNCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gU29ydCBmZWF0dXJl
cy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggOWVkOThjNjE5OGI4ZGE5OWUxODI0N2Q3
ZWQ4MzMxYWNmYTNhNjE3NC4uOGFmMjBhMzExMTBmYWVhYWE0ZGYzYThkNTQ3YTQyZDkxZTgxNDNm
MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTE2OSw2ICsxNjksMTIgQEAgcHVibGlj
OgogICAgICAgICBjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBz
Y3JlZW5Qb2ludCwKICAgICAgICAgV2ViRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pID0gMDsKIAor
ICAgIC8vIE5vdGlmaWVkIHRoZSBXZWJWaWV3IHRoYXQgYSBkcmFnZ2luZyBpcyBnb2luZyBvbi4K
KyAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZU1vdmVkVG8oCisgICAgICAgIGNvbnN0IFdlYlBv
aW50JiBjbGllbnRQb2ludCwKKyAgICAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAor
ICAgICAgICBXZWJEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikgPSAwOworCiAgICAgLy8gTm90Zmll
cyB0aGUgV2ViVmlldyB0aGF0IHRoZSBzeXN0ZW0gZHJhZyBhbmQgZHJvcCBvcGVyYXRpb24gaGFz
IGVuZGVkLgogICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlU3lzdGVtRHJhZ0VuZGVkKCkgPSAw
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDUyNjQ2OWQ5NWY5ZWNlY2M3
MDEwNWQwZmUzOTQ5YzE1MzE2NmFjNTUuLmU5YzM1ZmZmN2MxMDYyYmY3MWFjZDFkOTM0NjVlZmE3
YmFiMTc3NGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNTQ3LDYgKzE1
NDcsMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgpCiAg
ICAgfQogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbygKKyAgICBjb25z
dCBXZWJQb2ludCYgY2xpZW50UG9pbnQsCisgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50
LAorICAgIFdlYkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQoreworICAgIHNjcm9sbEZvckRyYWdn
aW5nKGNsaWVudFBvaW50KTsKK30KKworCiBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpk
cmFnVGFyZ2V0RHJhZ0VudGVyKAogICAgIGNvbnN0IFdlYkRyYWdEYXRhJiB3ZWJEcmFnRGF0YSwg
aW50IGlkZW50aXR5LAogICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwKQEAgLTE2NTcs
OSArMTY2NiwzMiBAQCBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJh
Z0VudGVyT3JPdmVyKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQbwogICAgIH0gZWxzZQogICAgICAg
ICBtX2RyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9uPihlZmZlY3Qp
OwogCisgICAgaWYgKGRyYWdBY3Rpb24gPT0gRHJhZ092ZXIpCisgICAgICAgIHNjcm9sbEZvckRy
YWdnaW5nKGNsaWVudFBvaW50KTsKKwogICAgIHJldHVybiBtX2RyYWdPcGVyYXRpb247CiB9CiAK
K3ZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEZvckRyYWdnaW5nKGNvbnN0IFdlYlBvaW50JiBjbGll
bnRQb2ludCkKK3sKKworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5kcygwLCAw
LCBmcmFtZVZpZXctPnZpc2libGVXaWR0aCgpLCBmcmFtZVZpZXctPnZpc2libGVIZWlnaHQoKSk7
CisKKyAgICBpbnQgbWFyZ2luID0gYm91bmRzLndpZHRoKCkgLyBXZWJWaWV3SW1wbDo6a1Njcm9s
bE1hcmdpblJhdGlvOworICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIGRlZmxhdGUoKSBpZiBodHRw
Oi8vd2Via2l0Lm9yZy9iLzM5NDE3IGRvZXMgbGFuZC4KKyAgICBib3VuZHMuc2V0WShib3VuZHMu
eSgpICsgbWFyZ2luKTsKKyAgICBib3VuZHMuc2V0SGVpZ2h0KGJvdW5kcy5oZWlnaHQoKSAtIG1h
cmdpbioyKTsKKyAgICBib3VuZHMuc2V0WChib3VuZHMueCgpICsgbWFyZ2luKTsKKyAgICBib3Vu
ZHMuc2V0V2lkdGgoYm91bmRzLndpZHRoKCkgLSBtYXJnaW4qMik7CisKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCA9IGNsaWVudFBvaW50OworICAgIGlmIChib3VuZHMuY29udGFpbnMocG9p
bnQpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZnJhbWVWaWV3LT5zY3JvbGxCeShib3Vu
ZHMuZGlyZWN0aW9uVG8ocG9pbnQpKTsKK30KKwogdW5zaWduZWQgbG9uZyBXZWJWaWV3SW1wbDo6
Y3JlYXRlVW5pcXVlSWRlbnRpZmllckZvclJlcXVlc3QoKQogewogICAgIGlmIChtX3BhZ2UpCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggZDU0NWE0MjVhMzMxZDAyNzcwNTk5NDE5ZjE3
NzFiYzBmNDM5MTFlMS4uZWE0MzQ0YTY2YWQ5M2FhYzVkMjQ2MDc5MjNiZDU2MzM0ZTI2ZTU0MiAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTMzLDYgKzEzMywxMCBAQCBwdWJsaWM6
CiAgICAgICAgIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwKICAgICAgICAgV2ViRHJhZ09w
ZXJhdGlvbiBvcGVyYXRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlU3lzdGVtRHJh
Z0VuZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGRyYWdTb3VyY2VNb3ZlZFRvKAorICAgICAgICBj
b25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBzY3Jl
ZW5Qb2ludCwKKyAgICAgICAgV2ViRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pOwogICAgIHZpcnR1
YWwgV2ViRHJhZ09wZXJhdGlvbiBkcmFnVGFyZ2V0RHJhZ0VudGVyKAogICAgICAgICBjb25zdCBX
ZWJEcmFnRGF0YSYgZHJhZ0RhdGEsIGludCBpZGVudGl0eSwKICAgICAgICAgY29uc3QgV2ViUG9p
bnQmIGNsaWVudFBvaW50LApAQCAtMzI0LDYgKzMyOCw4IEBAIHByaXZhdGU6CiAgICAgICBEcmFn
T3ZlcgogICAgIH07CiAKKyAgICBzdGF0aWMgY29uc3QgaW50IGtTY3JvbGxNYXJnaW5SYXRpbyA9
IDIwOworCiAgICAgV2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KTsKICAgICB+V2Vi
Vmlld0ltcGwoKTsKIApAQCAtMzQ0LDYgKzM1MCw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSB2aWV3IHdhcyBzY3JvbGxlZC4KICAgICBib29sIHNjcm9sbFZpZXdXaXRo
S2V5Ym9hcmQoaW50IGtleUNvZGUsIGludCBtb2RpZmllcnMpOwogCisgICAgdm9pZCBzY3JvbGxG
b3JEcmFnZ2luZyhjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQpOworCiAgICAgdm9pZCBoaWRl
U2VsZWN0UG9wdXAoKTsKIAogICAgIC8vIENvbnZlcnRzIHxwb3N8IGZyb20gd2luZG93IGNvb3Jk
aW5hdGVzIHRvIGNvbnRlbnRzIGNvb3JkaW5hdGVzIGFuZCBnZXRzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57634</attachid>
            <date>2010-06-02 01:45:02 -0700</date>
            <delta_ts>2010-06-02 18:12:45 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug-39725-20100602174500.patch</filename>
            <type>text/plain</type>
            <size>4965</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDIzZTYzMWYxNzUxM2U5MjE2Y2I2YzczZTViZDdkY2Q1ODJmYzg5OTYu
LjMxMDRlZTYwMzZmNmRkOGJlMmUyNGFiZDY3OWUxMDg2YWM4MDQ5OWEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTI2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtDaHJvbWl1bV0gRHJhZ2dpbmcgb3ZlciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91
bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBB
ZGRlZCBXZWJWaWV3SW1wbDo6c2Nyb2xsRm9yRHJhZ2dpbmcoKSB0byBoYW5kbGUgc2Nyb2xsLW9u
LWRyYWcuCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIGNoYW5nZSBoYW5kZXMgYm90aCBzb3VyY2Ug
YW5kIGRlc3RpbmF0aW9uIGNhc2VzLgorICAgICAgICAKKyAgICAgICAgKiBwdWJsaWMvV2ViVmll
dy5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JPdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNjcm9sbEZvckRyYWdnaW5nKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoK
KwogMjAxMC0wNS0yNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gU29ydCBmZWF0dXJlcy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5k
ZXggOWVkOThjNjE5OGI4ZGE5OWUxODI0N2Q3ZWQ4MzMxYWNmYTNhNjE3NC4uYTNkOTEzYzc5NzM2
NmNjZjhkYjM2N2UyMmYzMzhkOTFiN2Y2MWNhZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgK
QEAgLTE2OSw2ICsxNjksOSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYlBvaW50JiBjbGll
bnRQb2ludCwgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAogICAgICAgICBXZWJEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbikgPSAwOwogCisgICAgLy8gTm90aWZpZXMgdGhlIFdlYlZpZXcgdGhh
dCBhIGRyYWdnaW5nIGlzIGdvaW5nIG9uLgorICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlTW92
ZWRUbyhjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Q
b2ludCwgV2ViRHJhZ09wZXJhdGlvbikgPSAwOworCiAgICAgLy8gTm90ZmllcyB0aGUgV2ViVmll
dyB0aGF0IHRoZSBzeXN0ZW0gZHJhZyBhbmQgZHJvcCBvcGVyYXRpb24gaGFzIGVuZGVkLgogICAg
IHZpcnR1YWwgdm9pZCBkcmFnU291cmNlU3lzdGVtRHJhZ0VuZGVkKCkgPSAwOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDUyNjQ2OWQ5NWY5ZWNlY2M3MDEwNWQwZmUzOTQ5
YzE1MzE2NmFjNTUuLmViZDA3OTQ2NTVkNGYwMTk0MDA3ODkzNjBmNTcwM2VmZGFhMDM5ODAgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNTQ3LDYgKzE1NDcsMTUgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgpCiAgICAgfQogfQogCit2
b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbygKKyAgICBjb25zdCBXZWJQb2ludCYg
Y2xpZW50UG9pbnQsCisgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAorICAgIFdlYkRy
YWdPcGVyYXRpb24gb3BlcmF0aW9uKQoreworICAgIHNjcm9sbEZvckRyYWdnaW5nKGNsaWVudFBv
aW50KTsKK30KKworCiBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJh
Z0VudGVyKAogICAgIGNvbnN0IFdlYkRyYWdEYXRhJiB3ZWJEcmFnRGF0YSwgaW50IGlkZW50aXR5
LAogICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwKQEAgLTE2NTcsOSArMTY2Niw0OSBA
QCBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JPdmVy
KGNvbnN0IFdlYlBvaW50JiBjbGllbnRQbwogICAgIH0gZWxzZQogICAgICAgICBtX2RyYWdPcGVy
YXRpb24gPSBzdGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9uPihlZmZlY3QpOwogCisgICAgaWYg
KGRyYWdBY3Rpb24gPT0gRHJhZ092ZXIpCisgICAgICAgIHNjcm9sbEZvckRyYWdnaW5nKGNsaWVu
dFBvaW50KTsKKwogICAgIHJldHVybiBtX2RyYWdPcGVyYXRpb247CiB9CiAKKy8vIENvbXB1dGVz
IGRpc2F0YW5jZXMgZnJvbSBhIHBvaW50IHRvIHRoZSBuZWFyZXN0IHBvaW50IGZyb20gYSByZWN0
IGZvciBib3RoIHggYW5kIHkgY29vcmRpbmF0ZXMuCitzdGF0aWMgSW50U2l6ZSBkaXN0YW5jZVRv
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCkKK3sKKyAgICBpbnQgZHggPSAwLCBkeSA9IDA7CisgICAgaWYgKHBvaW50LngoKSA8IHJl
Y3QueCgpKQorICAgICAgICBkeCA9IHBvaW50LngoKSAtIHJlY3QueCgpOworICAgIGVsc2UgaWYg
KHJlY3QucmlnaHQoKSA8IHBvaW50LngoKSkKKyAgICAgICAgZHggPSBwb2ludC54KCkgLSByZWN0
LnJpZ2h0KCk7CisgICAgaWYgKHBvaW50LnkoKSA8IHJlY3QueSgpKQorICAgICAgICBkeSA9IHBv
aW50LnkoKSAtIHJlY3QueSgpOworICAgIGVsc2UgaWYgKHJlY3QuYm90dG9tKCkgPCBwb2ludC55
KCkpCisgICAgICAgIGR5ID0gcG9pbnQueSgpIC0gcmVjdC5ib3R0b20oKTsKKyAgICByZXR1cm4g
SW50U2l6ZShkeCwgZHkpOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpzY3JvbGxGb3JEcmFnZ2lu
Zyhjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQpCit7CisgICAgLy8gVGhpcyBtYXJnaW4gYXBw
cm94aW1hdGVzIFNhZmFyaSBiZWhhdmlvcgorICAgIHN0YXRpYyBjb25zdCBpbnQga1Njcm9sbE1h
cmdpbiA9IDMwOworCisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lSW1w
bCgpLT5mcmFtZVZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKworICAg
IFdlYkNvcmU6OkludFJlY3QgYm91bmRzKDAsIDAsIHZpZXctPnZpc2libGVXaWR0aCgpLCB2aWV3
LT52aXNpYmxlSGVpZ2h0KCkpOworICAgIGJvdW5kcy5zZXRZKGJvdW5kcy55KCkgKyBrU2Nyb2xs
TWFyZ2luKTsKKyAgICBib3VuZHMuc2V0SGVpZ2h0KGJvdW5kcy5oZWlnaHQoKSAtIGtTY3JvbGxN
YXJnaW4gKiAyKTsKKyAgICBib3VuZHMuc2V0WChib3VuZHMueCgpICsga1Njcm9sbE1hcmdpbik7
CisgICAgYm91bmRzLnNldFdpZHRoKGJvdW5kcy53aWR0aCgpIC0ga1Njcm9sbE1hcmdpbiAqIDIp
OworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQgPSBjbGllbnRQb2ludDsKKyAgICBpZiAo
Ym91bmRzLmNvbnRhaW5zKHBvaW50KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHZpZXct
PnNjcm9sbEJ5KGRpc3RhbmNlVG8ocG9pbnQsIGJvdW5kcykpOworfQorCiB1bnNpZ25lZCBsb25n
IFdlYlZpZXdJbXBsOjpjcmVhdGVVbmlxdWVJZGVudGlmaWVyRm9yUmVxdWVzdCgpCiB7CiAgICAg
aWYgKG1fcGFnZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBkNTQ1YTQyNWEzMzFk
MDI3NzA1OTk0MTlmMTc3MWJjMGY0MzkxMWUxLi5kYzhhODJjMGZkNjBlYzMxZjgzMzkwZjRjNzA5
NTVjNWQ0OTg3NTA2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xMzMsNiArMTMz
LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9pbnQsCiAgICAg
ICAgIFdlYkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ1Nv
dXJjZVN5c3RlbURyYWdFbmRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlTW92ZWRU
byhjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2lu
dCwgV2ViRHJhZ09wZXJhdGlvbik7CiAgICAgdmlydHVhbCBXZWJEcmFnT3BlcmF0aW9uIGRyYWdU
YXJnZXREcmFnRW50ZXIoCiAgICAgICAgIGNvbnN0IFdlYkRyYWdEYXRhJiBkcmFnRGF0YSwgaW50
IGlkZW50aXR5LAogICAgICAgICBjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsCkBAIC0zNDQs
NiArMzQ1LDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHZpZXcgd2Fz
IHNjcm9sbGVkLgogICAgIGJvb2wgc2Nyb2xsVmlld1dpdGhLZXlib2FyZChpbnQga2V5Q29kZSwg
aW50IG1vZGlmaWVycyk7CiAKKyAgICB2b2lkIHNjcm9sbEZvckRyYWdnaW5nKGNvbnN0IFdlYlBv
aW50Jik7CisKICAgICB2b2lkIGhpZGVTZWxlY3RQb3B1cCgpOwogCiAgICAgLy8gQ29udmVydHMg
fHBvc3wgZnJvbSB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gY29udGVudHMgY29vcmRpbmF0ZXMgYW5k
IGdldHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57722</attachid>
            <date>2010-06-02 18:12:53 -0700</date>
            <delta_ts>2010-06-02 18:16:59 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>bug-39725-20100603101251.patch</filename>
            <type>text/plain</type>
            <size>5087</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDIzZTYzMWYxNzUxM2U5MjE2Y2I2YzczZTViZDdkY2Q1ODJmYzg5OTYu
LjMxMDRlZTYwMzZmNmRkOGJlMmUyNGFiZDY3OWUxMDg2YWM4MDQ5OWEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTI2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtDaHJvbWl1bV0gRHJhZ2dpbmcgb3ZlciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91
bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBB
ZGRlZCBXZWJWaWV3SW1wbDo6c2Nyb2xsRm9yRHJhZ2dpbmcoKSB0byBoYW5kbGUgc2Nyb2xsLW9u
LWRyYWcuCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIGNoYW5nZSBoYW5kZXMgYm90aCBzb3VyY2Ug
YW5kIGRlc3RpbmF0aW9uIGNhc2VzLgorICAgICAgICAKKyAgICAgICAgKiBwdWJsaWMvV2ViVmll
dy5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JPdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNjcm9sbEZvckRyYWdnaW5nKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoK
KwogMjAxMC0wNS0yNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gU29ydCBmZWF0dXJlcy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5k
ZXggOWVkOThjNjE5OGI4ZGE5OWUxODI0N2Q3ZWQ4MzMxYWNmYTNhNjE3NC4uYWI5ZTU1OTM5NDQ0
YjM4ZGMyZWYzYzJiODVlMThjOWQyMmNmNDM5OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgK
QEAgLTE2OSw2ICsxNjksMTEgQEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJQb2ludCYgY2xp
ZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwKICAgICAgICAgV2ViRHJhZ09w
ZXJhdGlvbiBvcGVyYXRpb24pID0gMDsKIAorICAgIC8vIE5vdGlmaWVzIHRoZSBXZWJWaWV3IHRo
YXQgYSBkcmFnZ2luZyBpcyBnb2luZyBvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZU1v
dmVkVG8oCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwgY29uc3QgV2ViUG9p
bnQmIHNjcmVlblBvaW50LAorICAgICAgICBXZWJEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikgPSAw
OworCiAgICAgLy8gTm90ZmllcyB0aGUgV2ViVmlldyB0aGF0IHRoZSBzeXN0ZW0gZHJhZyBhbmQg
ZHJvcCBvcGVyYXRpb24gaGFzIGVuZGVkLgogICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlU3lz
dGVtRHJhZ0VuZGVkKCkgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IDUyNjQ2OWQ5NWY5ZWNlY2M3MDEwNWQwZmUzOTQ5YzE1MzE2NmFjNTUuLmNkMmY4MmUwMzUxMTM4
OWNkN2Q0MTU0NmVhMzM5Nzc4YzhkZDY5OGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCkBAIC04MjUsNiArODI1LDQzIEBAIGJvb2wgV2ViVmlld0ltcGw6Om1hcEtleUNvZGVGb3JT
Y3JvbGwoaW50IGtleUNvZGUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIENvbXB1dGVzIGRp
c2F0YW5jZXMgZnJvbSBhIHBvaW50IHRvIHRoZSBuZWFyZXN0IHBvaW50IGZyb20gYSByZWN0IGZv
ciBib3RoIHggYW5kIHkgY29vcmRpbmF0ZXMuCitzdGF0aWMgSW50U2l6ZSBkaXN0YW5jZVRvKGNv
bnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpbnQgZHgg
PSAwLCBkeSA9IDA7CisgICAgaWYgKHBvaW50LngoKSA8IHJlY3QueCgpKQorICAgICAgICBkeCA9
IHBvaW50LngoKSAtIHJlY3QueCgpOworICAgIGVsc2UgaWYgKHJlY3QucmlnaHQoKSA8IHBvaW50
LngoKSkKKyAgICAgICAgZHggPSBwb2ludC54KCkgLSByZWN0LnJpZ2h0KCk7CisgICAgaWYgKHBv
aW50LnkoKSA8IHJlY3QueSgpKQorICAgICAgICBkeSA9IHBvaW50LnkoKSAtIHJlY3QueSgpOwor
ICAgIGVsc2UgaWYgKHJlY3QuYm90dG9tKCkgPCBwb2ludC55KCkpCisgICAgICAgIGR5ID0gcG9p
bnQueSgpIC0gcmVjdC5ib3R0b20oKTsKKyAgICByZXR1cm4gSW50U2l6ZShkeCwgZHkpOworfQor
Cit2b2lkIFdlYlZpZXdJbXBsOjpzY3JvbGxGb3JEcmFnZ2luZyhjb25zdCBXZWJQb2ludCYgY2xp
ZW50UG9pbnQpCit7CisgICAgLy8gVGhpcyBtYXJnaW4gYXBwcm94aW1hdGVzIFNhZmFyaSBiZWhh
dmlvcgorICAgIHN0YXRpYyBjb25zdCBpbnQgc2Nyb2xsTWFyZ2luID0gMzA7CisKKyAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOworICAgIGlmICghdmll
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBib3VuZHMoMCwgMCwgdmlldy0+dmlz
aWJsZVdpZHRoKCksIHZpZXctPnZpc2libGVIZWlnaHQoKSk7CisgICAgYm91bmRzLnNldFkoYm91
bmRzLnkoKSArIHNjcm9sbE1hcmdpbik7CisgICAgYm91bmRzLnNldEhlaWdodChib3VuZHMuaGVp
Z2h0KCkgLSBzY3JvbGxNYXJnaW4gKiAyKTsKKyAgICBib3VuZHMuc2V0WChib3VuZHMueCgpICsg
c2Nyb2xsTWFyZ2luKTsKKyAgICBib3VuZHMuc2V0V2lkdGgoYm91bmRzLndpZHRoKCkgLSBzY3Jv
bGxNYXJnaW4gKiAyKTsKKworICAgIEludFBvaW50IHBvaW50ID0gY2xpZW50UG9pbnQ7CisgICAg
aWYgKGJvdW5kcy5jb250YWlucyhwb2ludCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB2
aWV3LT5zY3JvbGxCeShkaXN0YW5jZVRvKHBvaW50LCBib3VuZHMpKTsKK30KKwogdm9pZCBXZWJW
aWV3SW1wbDo6aGlkZVNlbGVjdFBvcHVwKCkKIHsKICAgICBpZiAobV9zZWxlY3RQb3B1cC5nZXQo
KSkKQEAgLTE1MzcsNiArMTU3NCwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlRW5k
ZWRBdCgKICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4ob3BlcmF0aW9uKSk7CiB9
CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VNb3ZlZFRvKAorICAgIGNvbnN0IFdlYlBv
aW50JiBjbGllbnRQb2ludCwKKyAgICBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9pbnQsCisgICAg
V2ViRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgc2Nyb2xsRm9yRHJhZ2dpbmcoY2xp
ZW50UG9pbnQpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlU3lzdGVtRHJhZ0Vu
ZGVkKCkKIHsKICAgICAvLyBJdCdzIHBvc3NpYmxlIGZvciB1cyB0byBnZXQgdGhpcyBjYWxsYmFj
ayB3aGlsZSBub3QgZG9pbmcgYSBkcmFnIGlmCkBAIC0xNjU3LDYgKzE3MDIsOSBAQCBXZWJEcmFn
T3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JPdmVyKGNvbnN0IFdl
YlBvaW50JiBjbGllbnRQbwogICAgIH0gZWxzZQogICAgICAgICBtX2RyYWdPcGVyYXRpb24gPSBz
dGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9uPihlZmZlY3QpOwogCisgICAgaWYgKGRyYWdBY3Rp
b24gPT0gRHJhZ092ZXIpCisgICAgICAgIHNjcm9sbEZvckRyYWdnaW5nKGNsaWVudFBvaW50KTsK
KwogICAgIHJldHVybiBtX2RyYWdPcGVyYXRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCBkNTQ1YTQyNWEzMzFkMDI3NzA1OTk0MTlmMTc3MWJjMGY0MzkxMWUxLi5kMjQ1
YzJkNWRiNDAwMGY2ZTliMDlhOTA1NjE1OWE1Mjc1YTEyNjQ1IDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCkBAIC0xMzIsNiArMTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2Vi
UG9pbnQmIGNsaWVudFBvaW50LAogICAgICAgICBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9pbnQs
CiAgICAgICAgIFdlYkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhZ1NvdXJjZU1vdmVkVG8oCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwg
CisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwgCisgICAgICAgIFdlYkRyYWdP
cGVyYXRpb24gb3BlcmF0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZVN5c3RlbURy
YWdFbmRlZCgpOwogICAgIHZpcnR1YWwgV2ViRHJhZ09wZXJhdGlvbiBkcmFnVGFyZ2V0RHJhZ0Vu
dGVyKAogICAgICAgICBjb25zdCBXZWJEcmFnRGF0YSYgZHJhZ0RhdGEsIGludCBpZGVudGl0eSwK
QEAgLTM0NCw2ICszNDgsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
dmlldyB3YXMgc2Nyb2xsZWQuCiAgICAgYm9vbCBzY3JvbGxWaWV3V2l0aEtleWJvYXJkKGludCBr
ZXlDb2RlLCBpbnQgbW9kaWZpZXJzKTsKIAorICAgIHZvaWQgc2Nyb2xsRm9yRHJhZ2dpbmcoY29u
c3QgV2ViUG9pbnQmKTsKKwogICAgIHZvaWQgaGlkZVNlbGVjdFBvcHVwKCk7CiAKICAgICAvLyBD
b252ZXJ0cyB8cG9zfCBmcm9tIHdpbmRvdyBjb29yZGluYXRlcyB0byBjb250ZW50cyBjb29yZGlu
YXRlcyBhbmQgZ2V0cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57729</attachid>
            <date>2010-06-02 20:15:46 -0700</date>
            <delta_ts>2010-07-07 02:17:11 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>bug-39725-20100603121544.patch</filename>
            <type>text/plain</type>
            <size>5162</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDIzZTYzMWYxNzUxM2U5MjE2Y2I2YzczZTViZDdkY2Q1ODJmYzg5OTYu
LjMxMDRlZTYwMzZmNmRkOGJlMmUyNGFiZDY3OWUxMDg2YWM4MDQ5OWEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTI2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtDaHJvbWl1bV0gRHJhZ2dpbmcgb3ZlciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91
bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBB
ZGRlZCBXZWJWaWV3SW1wbDo6c2Nyb2xsRm9yRHJhZ2dpbmcoKSB0byBoYW5kbGUgc2Nyb2xsLW9u
LWRyYWcuCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIGNoYW5nZSBoYW5kZXMgYm90aCBzb3VyY2Ug
YW5kIGRlc3RpbmF0aW9uIGNhc2VzLgorICAgICAgICAKKyAgICAgICAgKiBwdWJsaWMvV2ViVmll
dy5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JPdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNjcm9sbEZvckRyYWdnaW5nKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoK
KwogMjAxMC0wNS0yNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gU29ydCBmZWF0dXJlcy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5k
ZXggOWVkOThjNjE5OGI4ZGE5OWUxODI0N2Q3ZWQ4MzMxYWNmYTNhNjE3NC4uYWI5ZTU1OTM5NDQ0
YjM4ZGMyZWYzYzJiODVlMThjOWQyMmNmNDM5OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgK
QEAgLTE2OSw2ICsxNjksMTEgQEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJQb2ludCYgY2xp
ZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwKICAgICAgICAgV2ViRHJhZ09w
ZXJhdGlvbiBvcGVyYXRpb24pID0gMDsKIAorICAgIC8vIE5vdGlmaWVzIHRoZSBXZWJWaWV3IHRo
YXQgYSBkcmFnZ2luZyBpcyBnb2luZyBvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZU1v
dmVkVG8oCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwgY29uc3QgV2ViUG9p
bnQmIHNjcmVlblBvaW50LAorICAgICAgICBXZWJEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikgPSAw
OworCiAgICAgLy8gTm90ZmllcyB0aGUgV2ViVmlldyB0aGF0IHRoZSBzeXN0ZW0gZHJhZyBhbmQg
ZHJvcCBvcGVyYXRpb24gaGFzIGVuZGVkLgogICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlU3lz
dGVtRHJhZ0VuZGVkKCkgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IDUyNjQ2OWQ5NWY5ZWNlY2M3MDEwNWQwZmUzOTQ5YzE1MzE2NmFjNTUuLjAyZmZkMWJiMjVjNDRk
NWFmM2IyMjIxODc1Mzg2ZTZlM2ZmZWIyNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCkBAIC04MjUsNiArODI1LDQ1IEBAIGJvb2wgV2ViVmlld0ltcGw6Om1hcEtleUNvZGVGb3JT
Y3JvbGwoaW50IGtleUNvZGUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIENvbXB1dGVzIGRp
c2F0YW5jZXMgZnJvbSBhIHBvaW50IHRvIHRoZSBuZWFyZXN0IHBvaW50IGZyb20gYSByZWN0IGZv
ciBib3RoIHggYW5kIHkgY29vcmRpbmF0ZXMuCitzdGF0aWMgSW50U2l6ZSBkaXN0YW5jZVRvUmVj
dChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaW50
IGR4ID0gMCwgZHkgPSAwOworICAgIGlmIChwb2ludC54KCkgPCByZWN0LngoKSkKKyAgICAgICAg
ZHggPSBwb2ludC54KCkgLSByZWN0LngoKTsKKyAgICBlbHNlIGlmIChyZWN0LnJpZ2h0KCkgPCBw
b2ludC54KCkpCisgICAgICAgIGR4ID0gcG9pbnQueCgpIC0gcmVjdC5yaWdodCgpOworICAgIGlm
IChwb2ludC55KCkgPCByZWN0LnkoKSkKKyAgICAgICAgZHkgPSBwb2ludC55KCkgLSByZWN0Lnko
KTsKKyAgICBlbHNlIGlmIChyZWN0LmJvdHRvbSgpIDwgcG9pbnQueSgpKQorICAgICAgICBkeSA9
IHBvaW50LnkoKSAtIHJlY3QuYm90dG9tKCk7CisgICAgcmV0dXJuIEludFNpemUoZHgsIGR5KTsK
K30KKwordm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsRm9yRHJhZ2dpbmcoY29uc3QgV2ViUG9pbnQm
IGNsaWVudFBvaW50KQoreworICAgIC8vIFRoaXMgbWFyZ2luIGFwcHJveGltYXRlcyBTYWZhcmkg
YmVoYXZpb3IKKyAgICBzdGF0aWMgY29uc3QgaW50IHNjcm9sbE1hcmdpbiA9IDMwOworCisgICAg
RnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKTsKKyAgICBpZiAo
IXZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgYm91bmRzKDAsIDAsIHZpZXct
PnZpc2libGVXaWR0aCgpLCB2aWV3LT52aXNpYmxlSGVpZ2h0KCkpOworICAgIGJvdW5kcy5zZXRZ
KGJvdW5kcy55KCkgKyBzY3JvbGxNYXJnaW4pOworICAgIGJvdW5kcy5zZXRIZWlnaHQoYm91bmRz
LmhlaWdodCgpIC0gc2Nyb2xsTWFyZ2luICogMik7CisgICAgYm91bmRzLnNldFgoYm91bmRzLngo
KSArIHNjcm9sbE1hcmdpbik7CisgICAgYm91bmRzLnNldFdpZHRoKGJvdW5kcy53aWR0aCgpIC0g
c2Nyb2xsTWFyZ2luICogMik7CisKKyAgICBJbnRQb2ludCBwb2ludCA9IGNsaWVudFBvaW50Owor
ICAgIGlmIChib3VuZHMuY29udGFpbnMocG9pbnQpKQorICAgICAgICByZXR1cm47ICAgIAorCisg
ICAgSW50U2l6ZSB0b1Njcm9sbCA9IGRpc3RhbmNlVG9SZWN0KHBvaW50LCBib3VuZHMpOworICAg
IGlmICghdG9TY3JvbGwuaXNaZXJvKCkpCisgICAgICAgIHZpZXctPnNjcm9sbEJ5KHRvU2Nyb2xs
KTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6aGlkZVNlbGVjdFBvcHVwKCkKIHsKICAgICBpZiAo
bV9zZWxlY3RQb3B1cC5nZXQoKSkKQEAgLTE1MzcsNiArMTU3NiwxNCBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpkcmFnU291cmNlRW5kZWRBdCgKICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlv
bj4ob3BlcmF0aW9uKSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VNb3ZlZFRv
KAorICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwKKyAgICBjb25zdCBXZWJQb2ludCYg
c2NyZWVuUG9pbnQsCisgICAgV2ViRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgc2Ny
b2xsRm9yRHJhZ2dpbmcoY2xpZW50UG9pbnQpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkcmFn
U291cmNlU3lzdGVtRHJhZ0VuZGVkKCkKIHsKICAgICAvLyBJdCdzIHBvc3NpYmxlIGZvciB1cyB0
byBnZXQgdGhpcyBjYWxsYmFjayB3aGlsZSBub3QgZG9pbmcgYSBkcmFnIGlmCkBAIC0xNjU3LDYg
KzE3MDQsOSBAQCBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0Vu
dGVyT3JPdmVyKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQbwogICAgIH0gZWxzZQogICAgICAgICBt
X2RyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9uPihlZmZlY3QpOwog
CisgICAgaWYgKGRyYWdBY3Rpb24gPT0gRHJhZ092ZXIpCisgICAgICAgIHNjcm9sbEZvckRyYWdn
aW5nKGNsaWVudFBvaW50KTsKKwogICAgIHJldHVybiBtX2RyYWdPcGVyYXRpb247CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBkNTQ1YTQyNWEzMzFkMDI3NzA1OTk0MTlmMTc3
MWJjMGY0MzkxMWUxLi5kMjQ1YzJkNWRiNDAwMGY2ZTliMDlhOTA1NjE1OWE1Mjc1YTEyNjQ1IDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xMzIsNiArMTMyLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgY29uc3QgV2ViUG9pbnQmIGNsaWVudFBvaW50LAogICAgICAgICBjb25zdCBXZWJQ
b2ludCYgc2NyZWVuUG9pbnQsCiAgICAgICAgIFdlYkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZU1vdmVkVG8oCisgICAgICAgIGNvbnN0IFdlYlBv
aW50JiBjbGllbnRQb2ludCwgCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwg
CisgICAgICAgIFdlYkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgpOwogICAgIHZpcnR1YWwgV2ViRHJhZ09wZXJhdGlv
biBkcmFnVGFyZ2V0RHJhZ0VudGVyKAogICAgICAgICBjb25zdCBXZWJEcmFnRGF0YSYgZHJhZ0Rh
dGEsIGludCBpZGVudGl0eSwKQEAgLTM0NCw2ICszNDgsOCBAQCBwcml2YXRlOgogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgdmlldyB3YXMgc2Nyb2xsZWQuCiAgICAgYm9vbCBzY3JvbGxWaWV3
V2l0aEtleWJvYXJkKGludCBrZXlDb2RlLCBpbnQgbW9kaWZpZXJzKTsKIAorICAgIHZvaWQgc2Ny
b2xsRm9yRHJhZ2dpbmcoY29uc3QgV2ViUG9pbnQmKTsKKwogICAgIHZvaWQgaGlkZVNlbGVjdFBv
cHVwKCk7CiAKICAgICAvLyBDb252ZXJ0cyB8cG9zfCBmcm9tIHdpbmRvdyBjb29yZGluYXRlcyB0
byBjb250ZW50cyBjb29yZGluYXRlcyBhbmQgZ2V0cwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>59272</attachid>
            <date>2010-06-21 12:10:27 -0700</date>
            <delta_ts>2010-06-21 12:10:27 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>drag-over-should-scroll.html</filename>
            <type>text/html</type>
            <size>847</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPkRyYWcgbWU8L2E+
PGJyPgo8ZGl2IHN0eWxlPSJoZWlnaHQ6IDIwMHB4OyB3aWR0aDogMjAwcHg7IG92ZXJmbG93OiBh
dXRvIj4KRHJvcCB0aGUgbGluayBpbiB0aGUgaW5wdXQgZWxlbWVudCBhdCB0aGUgYm90dG9tIG9m
IHRoaXMgZGl2LiBIZWxsbyB3b3JsZC4gSGVsbG8Kd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3
b3JsZC4gSGVsbG8gd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8Kd29ybGQu
IEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8gd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxs
byB3b3JsZC4gSGVsbG8Kd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8gd29y
bGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8Kd29ybGQuIEhlbGxvIHdvcmxkLiBI
ZWxsbyB3b3JsZC4gSGVsbG8gd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8K
d29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8gd29ybGQuIEhlbGxvIHdvcmxk
LiBIZWxsbyB3b3JsZC4gSGVsbG8Kd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVs
bG8gd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8Kd29ybGQuIEhlbGxvIHdv
cmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8gd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4g
SGVsbG8Kd29ybGQuIEhlbGxvIHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8gd29ybGQuIEhlbGxv
IHdvcmxkLiBIZWxsbyB3b3JsZC4gSGVsbG8Kd29ybGQuCjxpbnB1dD4KPC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60710</attachid>
            <date>2010-07-07 02:17:17 -0700</date>
            <delta_ts>2010-07-07 02:53:15 -0700</delta_ts>
            <desc>patch v0</desc>
            <filename>bug-39725-20100707181715.patch</filename>
            <type>text/plain</type>
            <size>39695</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmZhMDBjMmU1NzA4NTZhZjY3YjRkMWFhNTQ2ZTljZGRmYjM3YmNiLi5mYjIwODgy
NzQ0ZDc2NzY0YTE0MTE1OWNiZjFjOGI5MTUxMGRjYzlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDctMDcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZ2dpbmcgb3ZlciBh
biBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4g
ZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk3MjUKKyAgICAgICAgaWZyYW1lIGFuZCBzY3JvbGxiYXIgd2l0aCAib3Zl
cmZsb3c6YXV0byIgc2hvdWxkIHN1cHBvcnQgYXV0b3Njcm9sbCB3aXRoIG1vdXNlZHJhZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5ODEKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS1leHBl
Y3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWNsaWNr
LWluLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdXRv
c2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvcmVzb3VyY2VzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0wNy0wNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5A
cmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIFJvbGxvdXQgcjYyNjMzIC0gdGVzdCBj
cmFzaGVzIGFmdGVyIHNvbWUgbGFzdC1taW51dGUgbW9kaWZpY2F0aW9ucy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFt
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLXBvaW50
ZXItZWxlbWVudC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNDg2Y2NiNDgzYTY2
MTYwZThiY2I0YzA1NGFlNzBhNjQ1ZTViNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWNmOGZjOTljNzRlNjA4NWIzOWNiNjQ0ZDE4ZmQ0YTFjNTg3NDU5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRl
ci1lbGVtZW50LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTkyIEBACis8IURPQ1RZUEUgaHRtbCBQ
VUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgorCSJodHRwOi8v
d3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+ICogeyBtYXJnaW46IDBweDsgcGFkZGluZzog
MHB4OyB9IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICB2YXIgZG9uZUNvdW50
ID0gMDsKKyAgICAgICAKKyAgICAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgIHsKKyAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAnXG4nKSk7CisgICAgICAgfQorCisgICAgICAgZnVu
Y3Rpb24gdGVzdCgpCisgICAgICAgeworICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3RTY3JvbGxEaXYsIDApOworICAgICAg
ICAgICB9CisgICAgICAgfQorCisgICAgICAgZnVuY3Rpb24gcmVzZXRTY3JvbGwoZWxlbWVudCkK
KyAgICAgICB7CisgICAgICAgICAgIHZhciBvbGQgPSBlbGVtZW50LnN0eWxlLmRpc3BsYXk7Cisg
ICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgICAgZWxl
bWVudC5vZmZzZXRMZWZ0OyAvLyBGb3JjZSByZWxheW91dAorICAgICAgICAgICBlbGVtZW50LnN0
eWxlLmRpc3BsYXkgPSBvbGQ7CisgICAgICAgICAgIGVsZW1lbnQub2Zmc2V0TGVmdDsgLy8gRm9y
Y2UgcmVsYXlvdXQKKyAgICAgICAgICAgaWYgKDAgIT0gZWxlbWVudC5zY3JvbGxMZWZ0KQorICAg
ICAgICAgICAgICAgbG9nKCJGQUlMOiBzY3JvbGwgc3RhdGUgc2hvdWxkIGJlIGNsZWFyZWQiKTsK
KyAgICAgICB9CisKKyAgICAgICBmdW5jdGlvbiByZXNldFNjcm9sbHMoKQorICAgICAgIHsKKyAg
ICAgICAgICAgcmVzZXRTY3JvbGwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbGFibGVE
aXYiKSk7CisgICAgICAgICAgIHJlc2V0U2Nyb2xsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
Y3JvbGxhYmxlSUZyYW1lIikuY29udGVudERvY3VtZW50LmJvZHkpOworICAgICAgIH0KKworICAg
ICAgIGZ1bmN0aW9uIHdhaXRVbnRpbChjcml0ZXJpYSkKKyAgICAgICB7CisgICAgICAgICAgIGlm
IChjcml0ZXJpYS5zYXRpc2ZpZWQoKSkgeworICAgICAgICAgICAgICBkb25lQ291bnQrKzsKKyAg
ICAgICAgICAgICAgY3JpdGVyaWEuZG9uZSgpOworICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICBjcml0ZXJpYS5zdGVwKCk7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHdhaXRVbnRpbChjcml0ZXJpYSk7IH0sIDApOworICAgICAgICAgICB9CisgICAgICAg
fQorCisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxkaXY+LCB1c2luZyA8c3Bh
bj4gaW5zaWRlIHRoYXQgPGRpdj4uCisgICAgICAgZnVuY3Rpb24gdGVzdFNjcm9sbERpdigpCisg
ICAgICAgeworICAgICAgICAgICByZXNldFNjcm9sbHMoKTsKKyAgICAgICAgICAgdmFyIHNjcm9s
bGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsYWJsZURpdiIpOworICAgICAg
ICAgICB2YXIgZHJhZ2dhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZUZv
ckRpdiIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBkcmFnZ2FibGUuY2xpZW50TGVmdCAr
IDU7CisgICAgICAgICAgIHZhciBzdGFydFkgPSBkcmFnZ2FibGUuY2xpZW50VG9wICsgNTsKKyAg
ICAgICAgICAgdmFyIGJvcmRlclggPSBzY3JvbGxhYmxlLmNsaWVudExlZnQgKyBzY3JvbGxhYmxl
LmNsaWVudFdpZHRoIC0gMTU7CisgICAgICAgICAgIHZhciBib3JkZXJZID0gc2Nyb2xsYWJsZS5j
bGllbnRUb3AgKyAxMDsKKyAgICAgICAgICAgdmFyIGhhc1Njcm9sbCA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gMCA8IHNjcm9sbGFibGUuc2Nyb2xsTGVmdDsgfTsKKworICAgICAgICAgICBpZiAoaGFz
U2Nyb2xsKCkpCisgICAgICAgICAgICAgICBsb2coIkZBSUw6IHByZWNvbmRpdGlvbiBmb3IgdGVz
dFNjcm9sbERpdiBmYWlsZWQiKTsKKworICAgICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9
IGZhbHNlOworICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0
WSk7CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhib3JkZXJYLCBib3JkZXJZKTsKKworICAgICAgICAgICB3YWl0
VW50aWwoeworICAgICAgICAgICAgICAgc2F0aXNmaWVkOiBoYXNTY3JvbGwsCisgICAgICAgICAg
ICAgICBzdGVwOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwg
Ym9yZGVyWSk7IH0sCisgICAgICAgICAgICAgICBkb25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5k
ZXIubW91c2VVcCgpOyB0ZXN0U2Nyb2xsSWZyYW1lKCk7IH0KKyAgICAgICAgICAgfSk7CisgICAg
ICAgfQorCisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxpZnJhbWU+LCB1c2lu
ZyA8c3Bhbj4gaW5zaWRlIHRoZSBkb2N1bWVudCBvZiBzY3JvbGxpbmcgPGlmcmFtZT4uCisgICAg
ICAgZnVuY3Rpb24gdGVzdFNjcm9sbElmcmFtZSgpCisgICAgICAgeworICAgICAgICAgICByZXNl
dFNjcm9sbHMoKTsKKyAgICAgICAgICAgdmFyIHNjcm9sbGFibGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2Nyb2xsYWJsZUlGcmFtZSIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlID0g
c2Nyb2xsYWJsZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZUZvcklG
cmFtZSIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBzY3JvbGxhYmxlLm9mZnNldExlZnQg
KyBkcmFnZ2FibGUub2Zmc2V0TGVmdCArIDU7CisgICAgICAgICAgIHZhciBzdGFydFkgPSBzY3Jv
bGxhYmxlLm9mZnNldFRvcCArIGRyYWdnYWJsZS5vZmZzZXRUb3AgKyA1OworICAgICAgICAgICB2
YXIgYm9yZGVyWCA9IHNjcm9sbGFibGUub2Zmc2V0TGVmdCArIHNjcm9sbGFibGUuY2xpZW50V2lk
dGggLSAxNTsKKyAgICAgICAgICAgdmFyIGJvcmRlclkgPSBzY3JvbGxhYmxlLm9mZnNldFRvcCAr
IDEwOworICAgICAgICAgICB2YXIgaGFzU2Nyb2xsID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIDwg
c2Nyb2xsYWJsZS5jb250ZW50RG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OyB9OworCisgICAgICAg
ICAgIGlmIChoYXNTY3JvbGwoKSkKKyAgICAgICAgICAgICAgIGxvZygiRkFJTDogcHJlY29uZGl0
aW9uIGZvciB0ZXN0U2Nyb2xsSWZyYW1lIGZhaWxlZCIpOworCisgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGJvcmRlclgsIGJvcmRlclkpOworCisg
ICAgICAgICAgIHdhaXRVbnRpbCh7CisgICAgICAgICAgICAgICBzYXRpc2ZpZWQ6IGhhc1Njcm9s
bCwKKyAgICAgICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKCkgeyBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhib3JkZXJYLCBib3JkZXJZKTsgfSwKKyAgICAgICAgICAgICAgIC8vZG9uZTogZnVuY3Rp
b24oKSB7IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsgZG9uZSgpOyB9CisgICAgICAgICAgICAgICBk
b25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VVcCgpOyB0ZXN0U2Nyb2xsRGl2VXNp
bmdEcmFnZ2FibGVGcm9tSUZyYW1lKCk7IH0KKyAgICAgICAgICAgfSk7CisgICAgICAgfQorCisg
ICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxkaXY+LCB1c2luZyA8c3Bhbj4gZnJv
bSBhIGZvcmVpZ24gPGlmcmFtZT4uCisgICAgICAgZnVuY3Rpb24gdGVzdFNjcm9sbERpdlVzaW5n
RHJhZ2dhYmxlRnJvbUlGcmFtZSgpCisgICAgICAgeworICAgICAgICAgICByZXNldFNjcm9sbHMo
KTsKKyAgICAgICAgICAgdmFyIHNjcm9sbGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c2Nyb2xsYWJsZURpdiIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlUGFyZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbGFibGVJRnJhbWUiKTsKKyAgICAgICAgICAgdmFyIGRy
YWdnYWJsZSA9IGRyYWdnYWJsZVBhcmVudC5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRyYWdnYWJsZUZvcklGcmFtZSIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBkcmFnZ2Fi
bGVQYXJlbnQub2Zmc2V0TGVmdCArIGRyYWdnYWJsZS5vZmZzZXRMZWZ0ICsgNTsKKyAgICAgICAg
ICAgdmFyIHN0YXJ0WSA9IGRyYWdnYWJsZVBhcmVudC5vZmZzZXRUb3AgKyBkcmFnZ2FibGUub2Zm
c2V0VG9wICsgNTsKKyAgICAgICAgICAgdmFyIGJvcmRlclggPSBzY3JvbGxhYmxlLmNsaWVudExl
ZnQgKyBzY3JvbGxhYmxlLmNsaWVudFdpZHRoIC0gMTU7CisgICAgICAgICAgIHZhciBib3JkZXJZ
ID0gc2Nyb2xsYWJsZS5jbGllbnRUb3AgKyAxMDsKKyAgICAgICAgICAgdmFyIGhhc1Njcm9sbCA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCA8IHNjcm9sbGFibGUuc2Nyb2xsTGVmdDsgfTsKKworICAg
ICAgICAgICBpZiAoaGFzU2Nyb2xsKCkpCisgICAgICAgICAgICAgICBsb2coIkZBSUw6IHByZWNv
bmRpdGlvbiBmb3IgdGVzdFNjcm9sbERpdlVzaW5nRHJhZ2dhYmxlRnJvbUlGcmFtZSBmYWlsZWQi
KTsKKworICAgICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhib3JkZXJYLCBib3JkZXJZKTsKKworICAgICAgICAgICB3YWl0VW50aWwoeworICAgICAgICAg
ICAgICAgc2F0aXNmaWVkOiBoYXNTY3JvbGwsCisgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlv
bigpIHsgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwgYm9yZGVyWSk7IH0sCisgICAg
ICAgICAgICAgICBkb25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VVcCgpOyB0ZXN0
U2Nyb2xsSUZyYW1lVXNpbmdEcmFnZ2FibGVGcm9tRGl2KCk7IH0KKyAgICAgICAgICAgfSk7Cisg
ICAgICAgfQorCisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxpZnJhbWUuPiwg
dXNpbmcgPHNwYW4+IGZyb20gYSBmb3JlaWduIDxkaXY+LgorICAgICAgIGZ1bmN0aW9uIHRlc3RT
Y3JvbGxJRnJhbWVVc2luZ0RyYWdnYWJsZUZyb21EaXYoKQorICAgICAgIHsKKyAgICAgICAgICAg
cmVzZXRTY3JvbGxzKCk7CisgICAgICAgICAgIHZhciBzY3JvbGxhYmxlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNjcm9sbGFibGVJRnJhbWUiKTsKKyAgICAgICAgICAgdmFyIGRyYWdnYWJs
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnZ2FibGVGb3JEaXYiKTsKKworICAgICAg
ICAgICB2YXIgc3RhcnRYID0gZHJhZ2dhYmxlLmNsaWVudExlZnQgKyA1OworICAgICAgICAgICB2
YXIgc3RhcnRZID0gZHJhZ2dhYmxlLmNsaWVudFRvcCArIDU7CisgICAgICAgICAgIHZhciBib3Jk
ZXJYID0gc2Nyb2xsYWJsZS5vZmZzZXRMZWZ0ICsgc2Nyb2xsYWJsZS5jbGllbnRXaWR0aCAtIDE1
OworICAgICAgICAgICB2YXIgYm9yZGVyWSA9IHNjcm9sbGFibGUub2Zmc2V0VG9wICsgMTA7Cisg
ICAgICAgICAgIHZhciBoYXNTY3JvbGwgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDAgPCBzY3JvbGxh
YmxlLmNvbnRlbnREb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7IH07CisKKyAgICAgICAgICAgaWYg
KGhhc1Njcm9sbCgpKQorICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBwcmVjb25kaXRpb24gZm9y
IHRlc3RTY3JvbGxJRnJhbWVVc2luZ0RyYWdnYWJsZUZyb21EaXYgZmFpbGVkIik7CisKKyAgICAg
ICAgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwg
Ym9yZGVyWSk7CisKKyAgICAgICAgICAgd2FpdFVudGlsKHsKKyAgICAgICAgICAgICAgIHNhdGlz
ZmllZDogaGFzU2Nyb2xsLAorICAgICAgICAgICAgICAgc3RlcDogZnVuY3Rpb24oKSB7IGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKGJvcmRlclgsIGJvcmRlclkpOyB9LAorICAgICAgICAgICAgICAg
ZG9uZTogZnVuY3Rpb24oKSB7IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsgZG9uZSgpOyB9CisgICAg
ICAgICAgIH0pOworICAgICAgIH0KKworICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAgIHsK
KyAgICAgICAgICAgaWYgKGRvbmVDb3VudCAhPSA0KQorICAgICAgICAgICAgICAgbG9nKCJGQUlM
OiBtaXNzaW5nIHRlc3QgY2FzZXMiKTsKKyAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNjcm9sbGFibGVEaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICBs
b2coIlBBU1MiKTsKKyAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+CisgICA8cHJlIGlkPSJzY3JvbGxhYmxlRGl2IiBzdHlsZT0iaGVpZ2h0OiAx
MDBweDsgd2lkdGg6IDEwMHB4OyBvdmVyZmxvdzogYXV0bzsiPgorPHNwYW4gZHJhZ2dhYmxlPSJ0
cnVlIiBpZD0iZHJhZ2dhYmxlRm9yRGl2Ij5kcmFnbWU8L3NwYW4+CitUaGUgcXVpY2sgYnJvd24g
Zm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92
ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkg
ZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1
aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZv
eCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVy
IHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRv
Zy4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWlj
ayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gg
anVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0
aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9n
LiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sg
YnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1
bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRo
ZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4g
VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJy
b3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93biBmb3gganVt
cHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUg
bGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRo
ZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJv
d24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBz
IG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxh
enkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorICAg
PC9wcmU+CisgICA8aWZyYW1lIGlkPSJzY3JvbGxhYmxlSUZyYW1lIiBzcmM9InJlc291cmNlcy9h
dXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMTAw
cHg7IHdpZHRoOiAxMDBweDsgb3ZlcmZsb3c6IGF1dG87Ij48L2lmcmFtZT4KKyAgIDxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvYXV0b3Njcm9sbC1w
b2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhZWEwOWU0M2ZmOWJjOTg0
ZGZhNTEwOWIwZWM2OTYyYzYzYjA4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3Jlc291cmNlcy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRt
bApAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICA8L2hlYWQ+Cis8Ym9k
eT4KKzxwcmU+Cis8c3BhbiBkcmFnZ2FibGU9InRydWUiIGlkPSJkcmFnZ2FibGVGb3JJRnJhbWUi
PmRyYWdtZTwvc3Bhbj4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBk
b2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWlj
ayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gg
anVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIg
dGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9n
LiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sg
YnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBq
dW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRo
ZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4g
VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBi
cm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVt
cHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUg
bGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitU
aGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJv
d24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBz
IG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxh
enkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhl
IHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3du
IGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBv
dmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6
eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBx
dWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBm
b3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCis8L3ByZT4KKzxib2R5PgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMGYwN2FhODY5M2My
MzJhZWE2MGNiMzc0YmQ3YjM4YTZjODc4NTYzLi5hYTM2NWI5NTFjZWYyZjE3MjE1MDk0NGY0ZjUy
NmQzN2QxNTQ4OWQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEwLTA3LTA3ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERyYWdnaW5nIG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9sbGJhcnMgc2hv
dWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcyNQorICAgICAgICBp
ZnJhbWUgd2l0aCAib3ZlcmZsb3c6YXV0byIgc2hvdWxkIHN1cHBvcnQgYXV0b3Njcm9sbCB3aXRo
IG1vdXNlZHJhZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwOTgxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29uc2lzdHMgb2YgMiBwYXJ0IG9mIHdv
cmsuCisgICAgICAgIAorICAgICAgICBGaXJzdCBwYXJ0IGlzIGFyb3VuZCBSZW5kZXJMYXllcjo6
YXV0b3Njcm9sbCgpLCB3aGljaCBpcworICAgICAgICBvcmlnaWFuYWxseSBkZXNpZ25lZCBmb3Ig
ZXh0ZW5kaW5nIGEgc2VsZWN0aW9uICh3aGljaCB3ZSBjYWxsCisgICAgICAgIEF1dG9zY3JvbGxC
eUNhcmV0KS4gVGhpcyBjaGFuZ2UgZXh0ZW5kZWQgc2Nyb2xsUmVjdFRvVmlzaWJsZSgpIHRvCisg
ICAgICAgIHN1cHBvcnQgYW4gYXV0b3Njcm9sbCB0cmlnZ2VyZWQgYnkgaXRlbS1kcmFnZ2luZyAo
QXV0b3Njcm9sbEJ5UG9pbnRlcikuCisgICAgICAgIAorICAgICAgICBCZWNhdXNlIEF1dG9zY3Jv
bGxCeVBvaW50ZXIgZm9yIHRoZSBvdXRlcm1vc3QgZnJhbWUgaXMgYWxyZWFkeQorICAgICAgICBz
dXBwb3J0ZWQgYnkgQ29jb2EncyBidWlsdC1pbiBhdXRvc2Nyb2xsIG1lY2hhbmlzbSwgd2hhdAor
ICAgICAgICBpbXBsZW1lbnRlZCBoZXJlIGlzIGZvciBpbm5lciBmcmFtZXMgYW5kIGZvciBlbGVt
ZW50cyB3aXRoCisgICAgICAgIG92ZXJmbG93OmF1dG8uIEFuZCB0aGUgb3V0ZXJtb3N0IGZyYW1l
IGlzIGV4cGxpY2l0bHkgc2tpcHBlZC4KKyAgICAgICAgCisgICAgICAgIFNlY29uZCBwYXJ0IGlz
IGFyb3VuZCBEcmFnQ29udHJvbGxlci4gV2UgaW50cm9kdWNlZAorICAgICAgICBEcmFnQXV0b3Nj
cm9sbGVyIHRvIG1ha2UgQXV0b3Njcm9sbEJ5UG9pbnRlciBoYXBwZW4gaW5zaWRlIHRoZQorICAg
ICAgICBEcmFnQ29udHJvbGxlci4gVGhlIGltcGxlbWVudGF0aW9uIGZvbGxvd3MgdGhlIFdlYlZp
ZXcncyBhdXRvc2Nyb2xsCisgICAgICAgIGJlaGF2aW9yLgorICAgICAgICAKKyAgICAgICAgVGVz
dDogZmFzdC9ldmVudHMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OkRyYWdBdXRvc2Nyb2xsZXIpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OmRlYWN0aXZhdGUpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OmxvY2F0aW9uVXBkYXRlZCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0F1dG9zY3JvbGxlcjo6dGltZXJGaXJlZCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0F1dG9zY3JvbGxlcjo6ZmluZExheWVyRm9yKTog
QWRkZWQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmluZEF1
dG9zY3JvbGxSZW5kZXJlcik6IEV4dHJhY3RlZCBmcm9tIGhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50
KCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ludFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmluZmxhdGVY
KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmluZmxhdGVZKToKKyAgICAgICAgKFdlYkNv
cmU6OkludFJlY3Q6OmRlZmxhdGUpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJz
aXZlbHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6c2hyaW5rU2l6ZUZvcik6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6c2hyaW5rUmVjdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmF1dG9zY3JvbGxCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzaG91bGRBdXRvc2Nyb2xsQnlQb2ludGVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6cmVzdHJpY3RlZEJ5TGluZUNsYW1wKTogRXh0cmFjdGVkIGZyb20gYXV0
b3Njcm9sbCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6IFNwbGl0dGVk
IGludG8gMiBvdmVybG9hZGVkIG1ldGhvZHMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjopOiBBZGRlZCBBdXRvc2Nyb2xsVHlwZSBlbnVtLgor
CiAyMDEwLTA3LTA3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgog
CiAgICAgICAgIE5vdCByZXZpZXdlZC4gUm9sbG91dCByNjI2MzMgLSB0ZXN0IGNyYXNoZXMgYWZ0
ZXIgc29tZSBsYXN0LW1pbnV0ZSBtb2RpZmljYXRpb25zLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmU3MDJhYjRmM2Zk
ZTY2OWJiOTk1ZmFjNzQ2YWM0NzdhZWNjYTg0Ni4uMjU0Nzg4N2RhMjE0ZjUyYWU2ZjI5YTdjNmE2
NWI2MzJkOTkwMzg5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yMDAsNyArMjAwLDcgQEAgX19aTjdXZWJDb3JlMTFI
aXN0b3J5SXRlbUMxRXYKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1EMUV2CiBfX1pON1dlYkNv
cmUxMUljb25GZXRjaGVyNmNhbmNlbEV2CiBfX1pON1dlYkNvcmUxMUljb25GZXRjaGVyNmNyZWF0
ZUVQTlNfNUZyYW1lRVBOU18xN0ljb25GZXRjaGVyQ2xpZW50RQotX19aTjdXZWJDb3JlMTFSZW5k
ZXJMYXllcjE5c2Nyb2xsUmVjdFRvVmlzaWJsZUVSS05TXzdJbnRSZWN0RWJSS05TXzE1U2Nyb2xs
QWxpZ25tZW50RVM2XworX19aTjdXZWJDb3JlMTFSZW5kZXJMYXllcjE5c2Nyb2xsUmVjdFRvVmlz
aWJsZUVSS05TXzdJbnRSZWN0RWJSS05TXzE1U2Nyb2xsQWxpZ25tZW50RVM2X2kKIF9fWk43V2Vi
Q29yZTExZ2xvYmFsUG9pbnRFUks4X05TUG9pbnRQOE5TV2luZG93CiBfX1pON1dlYkNvcmUxMXRv
VXNlclNwYWNlRVJLN19OU1JlY3RQOE5TV2luZG93CiBfX1pON1dlYkNvcmUxMkNocm9tZUNsaWVu
dDIwcGFpbnRDdXN0b21TY3JvbGxiYXJFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfOUZsb2F0
UmVjdEVOU18yMFNjcm9sbGJhckNvbnRyb2xTaXplRWpOU18xM1Njcm9sbGJhclBhcnRFYmZmagpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNzE2NzcyYjNiNDhhNTBhNGI1ZWRlZDg2YjdlNTYx
ODM2ODkyMDhkNC4uYjQ1YTkyOGE2MDZiZDVmZGQ2MTc4M2QxYTIwYjdmNTUxOTkzNzU3ZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC03MCw2ICs3MCwyMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIERyYWdBdXRvc2Nyb2xsZXIKK3sKK3B1YmxpYzoKKyAgICBEcmFnQXV0
b3Njcm9sbGVyKCk7CisgICAgdm9pZCBkZWFjdGl2YXRlKCk7CisgICAgdm9pZCBsb2NhdGlvblVw
ZGF0ZWQoRG9jdW1lbnQqLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxEcmFnQXV0b3Njcm9sbGVyPiopOworcHJpdmF0ZToKKyAgICBSZW5kZXJMYXllciogZmlu
ZExheWVyRm9yKERvY3VtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKworICAgIFRpbWVy
PERyYWdBdXRvc2Nyb2xsZXI+IG1fdGltZXI7CisgICAgYm9vbCBtX2FjdGl2YXRlZDsKK307CisK
IHN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgY3JlYXRlTW91c2VFdmVudChEcmFnRGF0YSogZHJh
Z0RhdGEpCiB7CiAgICAgYm9vbCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5OwpA
QCAtOTAsNiArMTA0LDcgQEAgRHJhZ0NvbnRyb2xsZXI6OkRyYWdDb250cm9sbGVyKFBhZ2UqIHBh
Z2UsIERyYWdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fZGlkSW5pdGlhdGVEcmFnKGZhbHNlKQog
ICAgICwgbV9pc0hhbmRsaW5nRHJhZyhmYWxzZSkKICAgICAsIG1fc291cmNlRHJhZ09wZXJhdGlv
bihEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICAsIG1fYXV0b3Njcm9sbGVyKG5ldyBEcmFnQXV0b3Nj
cm9sbGVyKCkpCiB7CiB9CiAKQEAgLTE3Niw2ICsxOTEsNyBAQCB2b2lkIERyYWdDb250cm9sbGVy
OjpkcmFnRXhpdGVkKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgY2xpcGJvYXJkLT5zZXRB
Y2Nlc3NQb2xpY3koQ2xpcGJvYXJkTnVtYik7ICAgIC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhl
cmUgZm9yIHNlY3VyaXR5CiAgICAgfQogICAgIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQoMCk7Cisg
ICAgbV9hdXRvc2Nyb2xsZXItPmRlYWN0aXZhdGUoKTsKIH0KIAogRHJhZ09wZXJhdGlvbiBEcmFn
Q29udHJvbGxlcjo6ZHJhZ1VwZGF0ZWQoRHJhZ0RhdGEqIGRyYWdEYXRhKQpAQCAtMjMzLDYgKzI0
OSw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVk
KERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBBU1NFUlQoZHJhZ0RhdGEpOwogICAgIEFTU0VSVCht
X3BhZ2UtPm1haW5GcmFtZSgpKTsgLy8gSXQgaXMgbm90IHBvc3NpYmxlIGluIE1hYyBXZWJLaXQg
dG8gaGF2ZSBhIFBhZ2Ugd2l0aG91dCBhIG1haW5GcmFtZSgpCiAgICAgbW91c2VNb3ZlZEludG9E
b2N1bWVudChtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEtPmNs
aWVudFBvc2l0aW9uKCkpKTsKKyAgICBtX2F1dG9zY3JvbGxlci0+bG9jYXRpb25VcGRhdGVkKG1f
ZG9jdW1lbnRVbmRlck1vdXNlLmdldCgpLCBkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSk7CiAK
ICAgICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IG1fY2xpZW50LT5hY3Rpb25NYXNrRm9yRHJh
ZyhkcmFnRGF0YSk7CiAgICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID09IERyYWdEZXN0
aW5hdGlvbkFjdGlvbk5vbmUpIHsKQEAgLTgyOSw2ICs4NDYsNjQgQEAgdm9pZCBEcmFnQ29udHJv
bGxlcjo6cGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogICAgIG1f
cGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5zZXRTZWxlY3Rpb24oZHJhZ0NhcmV0KTsKIH0K
IAorRHJhZ0F1dG9zY3JvbGxlcjo6RHJhZ0F1dG9zY3JvbGxlcigpCisgICAgOiBtX3RpbWVyKHRo
aXMsICZEcmFnQXV0b3Njcm9sbGVyOjp0aW1lckZpcmVkKQorICAgICwgbV9hY3RpdmF0ZWQoZmFs
c2UpCit7Cit9CisKK3ZvaWQgRHJhZ0F1dG9zY3JvbGxlcjo6ZGVhY3RpdmF0ZSgpCit7CisgICAg
bV9hY3RpdmF0ZWQgPSBmYWxzZTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBEcmFn
QXV0b3Njcm9sbGVyOjpsb2NhdGlvblVwZGF0ZWQoRG9jdW1lbnQqIGRvY3VtZW50VW5kZXJNb3Vz
ZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQoreworICAgIGNvbnN0IGRvdWJsZSBhdXRvc2Ny
b2xsRGVsYXkgPSAwLjU7IC8vIEFwcHJveGltYXRlcyBDb2NvYSdzIGJlaGF2aW9yCisKKyAgICBS
ZW5kZXJMYXllciogbGF5ZXIgPSBmaW5kTGF5ZXJGb3IoZG9jdW1lbnRVbmRlck1vdXNlLCBsb2Nh
dGlvbik7CisgICAgaWYgKCFsYXllcikgeworICAgICAgICBkZWFjdGl2YXRlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fYWN0aXZhdGVkKSB7CisgICAgICAgIGlmICgh
bV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoYXV0
b3Njcm9sbERlbGF5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheWVyLT5hdXRv
c2Nyb2xsKEF1dG9zY3JvbGxCeVBvaW50ZXIsIGRvY3VtZW50VW5kZXJNb3VzZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKGxvY2F0aW9uKSk7Cit9CisKK3ZvaWQgRHJhZ0F1dG9zY3JvbGxlcjo6
dGltZXJGaXJlZChUaW1lcjxEcmFnQXV0b3Njcm9sbGVyPiopCit7CisgICAgbV9hY3RpdmF0ZWQg
PSB0cnVlOworfQorCitSZW5kZXJMYXllciogRHJhZ0F1dG9zY3JvbGxlcjo6ZmluZExheWVyRm9y
KERvY3VtZW50KiBkb2N1bWVudFVuZGVyTW91c2UsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikg
Y29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50VW5kZXJNb3VzZSB8fCAhZG9jdW1lbnRVbmRlck1v
dXNlLT52aWV3KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgSW50UG9pbnQgZG9jdW1lbnRQ
b3NpdGlvbiA9IGRvY3VtZW50VW5kZXJNb3VzZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGxv
Y2F0aW9uKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBlbGVtZW50VW5kZXJNb3VzZShkb2N1bWVudFVu
ZGVyTW91c2UsIGRvY3VtZW50UG9zaXRpb24pOworICAgIGlmICghdGFyZ2V0KQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBFdmVudEhhbmRsZXI6OmZp
bmRBdXRvc2Nyb2xsUmVuZGVyZXIodGFyZ2V0KTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVyLT5lbmNsb3Np
bmdMYXllcigpOworICAgIEFTU0VSVChsYXllcik7CisgICAgaWYgKCFsYXllci0+c2hvdWxkQXV0
b3Njcm9sbEJ5UG9pbnRlcihkb2N1bWVudFBvc2l0aW9uKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gbGF5ZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IDcxMmY5YWIz
YTMzOWM2OWI1M2E0MmIxYzdjNmU0OTgyZTgwZmRhMDMuLjRmMzI2Njc1OTZjOTk3OGI5YmEwMTNi
ODA5ODVhY2I3YzJjMGFhMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC0zMCwxMSArMzAsMTMg
QEAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBDbGlwYm9hcmQ7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAgY2xhc3MgRHJh
Z0F1dG9zY3JvbGxlcjsKICAgICBjbGFzcyBEcmFnQ2xpZW50OwogICAgIGNsYXNzIERyYWdEYXRh
OwogICAgIGNsYXNzIEVsZW1lbnQ7CkBAIC0xMjIsNiArMTI0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBEcmFnT3BlcmF0aW9uIG1fc291cmNlRHJhZ09wZXJhdGlvbjsgLy8gU2V0
IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0aGlu
IFdlYktpdAogICAgICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAgICAgICAgIEtVUkwgbV9k
cmFnZ2luZ0ltYWdlVVJMOworICAgICAgICBPd25QdHI8RHJhZ0F1dG9zY3JvbGxlcj4gbV9hdXRv
c2Nyb2xsZXI7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBiYTQ5ODhkNWI4
YmM5ODFmNDRkZDhmNjhiZjg3MDg5N2VkYTE0ZjVhLi45ZDk1NzRiNWY5YzQ2ZGZjMTgzYmVkYmNk
NDk2YjcwOWMzMmRiNTdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNDk3LDYgKzQ5NywyMCBA
QCBzdGF0aWMgYm9vbCBjYW5BdXRvc2Nyb2xsKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAg
cmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0gZnJhbWU7CiB9CiAKK1JlbmRlck9i
amVjdCogRXZlbnRIYW5kbGVyOjpmaW5kQXV0b3Njcm9sbFJlbmRlcmVyKE5vZGUqIHRhcmdldE5v
ZGUpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRhcmdldE5vZGUtPnJlbmRlcmVy
KCk7CisgICAgd2hpbGUgKHJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKHJlbmRlcmVyKSkgewor
ICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+bm9kZSgpID09IHJl
bmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQo
KSkKKyAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxl
bWVudCgpLT5yZW5kZXJlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW5kZXJlciA9
IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVuZGVyZXI7Cit9CisK
KwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQp
CiB7CkBAIC01MTcsMTYgKzUzMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURy
YWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgbV9t
b3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0
YXJ0QXV0b3Njcm9sbCAmJiAhbV9wYW5TY3JvbGxJblByb2dyZXNzKSB7ICAgICAgICAgICAgCi0g
ICAgICAgIC8vIEZpbmQgYSByZW5kZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgotICAgICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKTsKLSAgICAgICAg
d2hpbGUgKHJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKHJlbmRlcmVyKSkgewotICAgICAgICAg
ICAgaWYgKCFyZW5kZXJlci0+cGFyZW50KCkgJiYgcmVuZGVyZXItPm5vZGUoKSA9PSByZW5kZXJl
ci0+ZG9jdW1lbnQoKSAmJiByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpCi0g
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVt
ZW50KCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVu
ZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGlmIChyZW5kZXJlcikgeworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZp
bmRBdXRvc2Nyb2xsUmVuZGVyZXIodGFyZ2V0Tm9kZSkpIHsKICAgICAgICAgICAgIG1fYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwogICAgICAgICAgICAgaGFuZGxlQXV0b3Njcm9sbChyZW5k
ZXJlcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA0Y2NhODk4M2I4YTFhNWRjNWNm
MjIwYzI1MTUyNWZmMjMzY2YzNTAyLi5mOTkzNDQ2NjM2YjQwNzZmMGEzNjIwMTAyMDllNzkyZTAw
ZjZlZWEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIHNob3VsZERyYWdBdXRvTm9kZShOb2Rl
KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsgLy8gLXdlYmtpdC11c2VyLWRyYWcgPT0gYXV0bwor
ICAgIHN0YXRpYyBSZW5kZXJPYmplY3QqIGZpbmRBdXRvc2Nyb2xsUmVuZGVyZXIoTm9kZSopOwog
I2VuZGlmCiAKICAgICBib29sIHNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50b0hvcml6b250YWwo
Y29uc3QgSGl0VGVzdFJlc3VsdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRSZWN0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3Qu
aAppbmRleCBjNTk5MGVmNThiNGNiNzkxOGYzMDY2NGFiYmY4NzI4MGU3MzU4ZDdjLi4zMmE1Yjlh
ZTY2ZGVhYzdlZTljYzM3YzI4MGMyYjgwNzE3OGIzMzI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFJlY3QuaApAQCAtMTMxLDE0ICsxMzEsMjMgQEAgcHVibGljOgogICAgIHZvaWQgaW5mbGF0
ZVgoaW50IGR4KQogICAgIHsKICAgICAgICAgbV9sb2NhdGlvbi5zZXRYKG1fbG9jYXRpb24ueCgp
IC0gZHgpOwotICAgICAgICBtX3NpemUuc2V0V2lkdGgobV9zaXplLndpZHRoKCkgKyBkeCArIGR4
KTsKKyAgICAgICAgaWYgKDAgPCBtX3NpemUud2lkdGgoKSArIGR4ICsgZHgpCisgICAgICAgICAg
ICBtX3NpemUuc2V0V2lkdGgobV9zaXplLndpZHRoKCkgKyBkeCArIGR4KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9zaXplLnNldFdpZHRoKDApOwogICAgIH0KKwogICAgIHZvaWQgaW5m
bGF0ZVkoaW50IGR5KQogICAgIHsKICAgICAgICAgbV9sb2NhdGlvbi5zZXRZKG1fbG9jYXRpb24u
eSgpIC0gZHkpOwotICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KG1fc2l6ZS5oZWlnaHQoKSArIGR5
ICsgZHkpOworICAgICAgICBpZiAoMCA8IG1fc2l6ZS5oZWlnaHQoKSArIGR5ICsgZHkpCisgICAg
ICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KG1fc2l6ZS5oZWlnaHQoKSArIGR5ICsgZHkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KDApOwogICAgIH0KKwogICAg
IHZvaWQgaW5mbGF0ZShpbnQgZCkgeyBpbmZsYXRlWChkKTsgaW5mbGF0ZVkoZCk7IH0KKyAgICB2
b2lkIGRlZmxhdGUoaW50IGQpIHsgaW5mbGF0ZVgoLWQpOyBpbmZsYXRlWSgtZCk7IH0KICAgICB2
b2lkIHNjYWxlKGZsb2F0IHMpOwogCiAjaWYgUExBVEZPUk0oV1gpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggMDUxNjJmY2VjNGFkMjBhNjM0Y2QwNzNlZTc1NmRjNzM1NDRmMDkzYi4u
Y2VmZjgxOGU0NjQ2NTk4ZDIxOTkyNzYzYTg5NDZjZmUwNGIzOTk4NyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcApAQCAtMTI0MywxMSArMTI0Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNj
cm9sbEJ5UmVjdXJzaXZlbHkoaW50IHhEZWx0YSwgaW50IHlEZWx0YSkKICAgICBpZiAoIXhEZWx0
YSAmJiAheURlbHRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHJlc3RyaWN0ZWRCeUxp
bmVDbGFtcCA9IGZhbHNlOwotICAgIGlmIChyZW5kZXJlcigpLT5wYXJlbnQoKSkKLSAgICAgICAg
cmVzdHJpY3RlZEJ5TGluZUNsYW1wID0gIXJlbmRlcmVyKCktPnBhcmVudCgpLT5zdHlsZSgpLT5s
aW5lQ2xhbXAoKS5pc05vbmUoKTsKLQotICAgIGlmIChyZW5kZXJlcigpLT5oYXNPdmVyZmxvd0Ns
aXAoKSAmJiAhcmVzdHJpY3RlZEJ5TGluZUNsYW1wKSB7CisgICAgaWYgKHJlbmRlcmVyKCktPmhh
c092ZXJmbG93Q2xpcCgpICYmICFyZXN0cmljdGVkQnlMaW5lQ2xhbXAoKSkgewogICAgICAgICBp
bnQgbmV3T2Zmc2V0WCA9IHNjcm9sbFhPZmZzZXQoKSArIHhEZWx0YTsKICAgICAgICAgaW50IG5l
d09mZnNldFkgPSBzY3JvbGxZT2Zmc2V0KCkgKyB5RGVsdGE7CiAgICAgICAgIHNjcm9sbFRvT2Zm
c2V0KG5ld09mZnNldFgsIG5ld09mZnNldFkpOwpAQCAtMTM3NCw5ICsxMzcwLDggQEAgdm9pZCBS
ZW5kZXJMYXllcjo6c2Nyb2xsVG9PZmZzZXQoaW50IHgsIGludCB5LCBib29sIHVwZGF0ZVNjcm9s
bGJhcnMsIGJvb2wgcmVwYWkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJl
Y3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwgY29u
c3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25Z
KQordm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBib29sIHNjcm9sbFRvQW5jaG9yLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblksIGludCBzaHJpbmtTaXplKQogewotICAgIFJl
bmRlckxheWVyKiBwYXJlbnRMYXllciA9IDA7CiAgICAgSW50UmVjdCBuZXdSZWN0ID0gcmVjdDsK
ICAgICBpbnQgeE9mZnNldCA9IDAsIHlPZmZzZXQgPSAwOwogCkBAIC0xMzg2LDEzICsxMzgxLDkg
QEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBib29sIHNjcm9sbFRvQW5jaG9yLAogICAgIGlmIChmcmFtZVZpZXcpCiAgICAgICAgIGZy
YW1lVmlldy0+cGF1c2VTY2hlZHVsZWRFdmVudHMoKTsKIAotICAgIGJvb2wgcmVzdHJpY3RlZEJ5
TGluZUNsYW1wID0gZmFsc2U7Ci0gICAgaWYgKHJlbmRlcmVyKCktPnBhcmVudCgpKSB7Ci0gICAg
ICAgIHBhcmVudExheWVyID0gcmVuZGVyZXIoKS0+cGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7
Ci0gICAgICAgIHJlc3RyaWN0ZWRCeUxpbmVDbGFtcCA9ICFyZW5kZXJlcigpLT5wYXJlbnQoKS0+
c3R5bGUoKS0+bGluZUNsYW1wKCkuaXNOb25lKCk7Ci0gICAgfQorICAgIFJlbmRlckxheWVyKiBw
YXJlbnRMYXllciA9IHBhcmVudEVuY2xvc2luZ0xheWVyKCk7CiAKLSAgICBpZiAocmVuZGVyZXIo
KS0+aGFzT3ZlcmZsb3dDbGlwKCkgJiYgIXJlc3RyaWN0ZWRCeUxpbmVDbGFtcCkgeworICAgIGlm
IChyZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSAmJiAhcmVzdHJpY3RlZEJ5TGluZUNsYW1w
KCkpIHsKICAgICAgICAgLy8gRG9uJ3Qgc2Nyb2xsIHRvIHJldmVhbCBhbiBvdmVyZmxvdyBsYXll
ciB0aGF0IGlzIHJlc3RyaWN0ZWQgYnkgdGhlIC13ZWJraXQtbGluZS1jbGFtcCBwcm9wZXJ0eS4K
ICAgICAgICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgdXMgZnJvbSByZXZlYWxpbmcgdGV4dCBoaWRk
ZW4gYnkgdGhlIHNsaWRlciBpbiBTYWZhcmkgUlNTLgogICAgICAgICBSZW5kZXJCb3gqIGJveCA9
IHJlbmRlckJveCgpOwpAQCAtMTQwMiw3ICsxMzkzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Ny
b2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHNjcm9sbFRvQW5jaG9y
LAogCiAgICAgICAgIEludFJlY3QgbGF5ZXJCb3VuZHMgPSBJbnRSZWN0KGFic1Bvcy54KCkgKyBz
Y3JvbGxYT2Zmc2V0KCksIGFic1Bvcy55KCkgKyBzY3JvbGxZT2Zmc2V0KCksIGJveC0+Y2xpZW50
V2lkdGgoKSwgYm94LT5jbGllbnRIZWlnaHQoKSk7CiAgICAgICAgIEludFJlY3QgZXhwb3NlUmVj
dCA9IEludFJlY3QocmVjdC54KCkgKyBzY3JvbGxYT2Zmc2V0KCksIHJlY3QueSgpICsgc2Nyb2xs
WU9mZnNldCgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBJbnRSZWN0
IHIgPSBnZXRSZWN0VG9FeHBvc2UobGF5ZXJCb3VuZHMsIGV4cG9zZVJlY3QsIGFsaWduWCwgYWxp
Z25ZKTsKKyAgICAgICAgSW50UmVjdCByID0gZ2V0UmVjdFRvRXhwb3NlKGxheWVyQm91bmRzLCBl
eHBvc2VSZWN0LCBhbGlnblgsIGFsaWduWSwgc2hyaW5rU2l6ZSk7CiAgICAgICAgIAogICAgICAg
ICB4T2Zmc2V0ID0gci54KCkgLSBhYnNQb3MueCgpOwogICAgICAgICB5T2Zmc2V0ID0gci55KCkg
LSBhYnNQb3MueSgpOwpAQCAtMTQyMSw5ICsxNDEyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Ny
b2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHNjcm9sbFRvQW5jaG9y
LAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghcGFyZW50TGF5ZXIgJiYgcmVuZGVyZXIoKS0+
aXNCb3goKSAmJiByZW5kZXJCb3goKS0+Y2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZChzY3Jv
bGxUb0FuY2hvcikpIHsKICAgICAgICAgaWYgKGZyYW1lVmlldykgewotICAgICAgICAgICAgaWYg
KHJlbmRlcmVyKCktPmRvY3VtZW50KCkgJiYgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+b3duZXJF
bGVtZW50KCkgJiYgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCktPnJlbmRl
cmVyKCkpIHsKKyAgICAgICAgICAgIGlmIChoYXNPd25lcigpKSB7CiAgICAgICAgICAgICAgICAg
SW50UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0gICAg
ICAgICAgICAgICAgSW50UmVjdCByID0gZ2V0UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCByZWN0LCBh
bGlnblgsIGFsaWduWSk7CisgICAgICAgICAgICAgICAgSW50UmVjdCByID0gZ2V0UmVjdFRvRXhw
b3NlKHZpZXdSZWN0LCByZWN0LCBhbGlnblgsIGFsaWduWSwgc2hyaW5rU2l6ZSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgeE9mZnNldCA9IHIueCgpOwogICAgICAgICAgICAg
ICAgIHlPZmZzZXQgPSByLnkoKTsKQEAgLTE0MzcsNyArMTQyOCw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxU
b0FuY2hvciwKICAgICAgICAgICAgICAgICBuZXdSZWN0LnNldFkocmVjdC55KCkgLSBmcmFtZVZp
ZXctPnNjcm9sbFkoKSArIGZyYW1lVmlldy0+eSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgSW50UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRl
bnRSZWN0KHRydWUpOwotICAgICAgICAgICAgICAgIEludFJlY3QgciA9IGdldFJlY3RUb0V4cG9z
ZSh2aWV3UmVjdCwgcmVjdCwgYWxpZ25YLCBhbGlnblkpOworICAgICAgICAgICAgICAgIEludFJl
Y3QgciA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgcmVjdCwgYWxpZ25YLCBhbGlnblksIHNo
cmlua1NpemUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+
c2V0U2Nyb2xsUG9zaXRpb24oci5sb2NhdGlvbigpKTsKIApAQCAtMTQ1NSwyNCArMTQ0NiwxMTEg
QEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBib29sIHNjcm9sbFRvQW5jaG9yLAogICAgIH0KICAgICAKICAgICBpZiAocGFyZW50TGF5
ZXIpCi0gICAgICAgIHBhcmVudExheWVyLT5zY3JvbGxSZWN0VG9WaXNpYmxlKG5ld1JlY3QsIHNj
cm9sbFRvQW5jaG9yLCBhbGlnblgsIGFsaWduWSk7CisgICAgICAgIHBhcmVudExheWVyLT5zY3Jv
bGxSZWN0VG9WaXNpYmxlKG5ld1JlY3QsIHNjcm9sbFRvQW5jaG9yLCBhbGlnblgsIGFsaWduWSwg
c2hyaW5rU2l6ZSk7CiAKICAgICBpZiAoZnJhbWVWaWV3KQogICAgICAgICBmcmFtZVZpZXctPnJl
c3VtZVNjaGVkdWxlZEV2ZW50cygpOwogfQogCi1JbnRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0
VG9FeHBvc2UoY29uc3QgSW50UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QgJmV4cG9z
ZVJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1l
bnQmIGFsaWduWSkKK3N0YXRpYyBpbnQgc2hyaW5rU2l6ZUZvcihBdXRvc2Nyb2xsVHlwZSB0eXBl
KQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEF1dG9zY3JvbGxCeVBvaW50
ZXI6CisgICAgICAgICAgICByZXR1cm4gMjU7IC8qIGFwcHJveGltYXRlbHkgc2FtZSBhcyBXZWJW
aWV3IGRvZXMgZm9yIG91dGVybW9zdCBmcmFtZSAqLworICAgICAgICBjYXNlIEF1dG9zY3JvbGxC
eUNhcmV0OgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
fQorCitzdGF0aWMgSW50UmVjdCBzaHJpbmtSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBz
aHJpbmtTaXplKQogewotICAgIC8vIERldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgWCBiZWhhdmlv
ci4KKyAgICBJbnRSZWN0IHJlc3VsdCA9IHJlY3Q7CisgICAgcmVzdWx0LmRlZmxhdGUoc2hyaW5r
U2l6ZSk7CisgICAgaWYgKHJlc3VsdC5pc0VtcHR5KCkpCisgICAgICAgIHJlc3VsdC5zZXRTaXpl
KEludFNpemUoMSwxKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSW50UmVjdCBSZW5kZXJM
YXllcjo6YXV0b3Njcm9sbEJvdW5kcyhib29sIHNjcm9sbFRvQW5jaG9yKSBjb25zdAoreworICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+dmlldygpOwor
ICAgIFJlbmRlckxheWVyKiBwYXJlbnRMYXllciA9IHBhcmVudEVuY2xvc2luZ0xheWVyKCk7Cisg
ICAgaWYgKHJlbmRlcmVyKCktPmhhc092ZXJmbG93Q2xpcCgpICYmICFyZXN0cmljdGVkQnlMaW5l
Q2xhbXAoKSkgeworICAgICAgICAvLyBEb24ndCBzY3JvbGwgdG8gcmV2ZWFsIGFuIG92ZXJmbG93
IGxheWVyIHRoYXQgaXMgcmVzdHJpY3RlZCBieSB0aGUgLXdlYmtpdC1saW5lLWNsYW1wIHByb3Bl
cnR5LgorICAgICAgICAvLyBUaGlzIHdpbGwgcHJldmVudCB1cyBmcm9tIHJldmVhbGluZyB0ZXh0
IGhpZGRlbiBieSB0aGUgc2xpZGVyIGluIFNhZmFyaSBSU1MuCisgICAgICAgIFJlbmRlckJveCog
Ym94ID0gcmVuZGVyQm94KCk7CisgICAgICAgIEFTU0VSVChib3gpOworICAgICAgICBGbG9hdFBv
aW50IGFic1BvcyA9IGJveC0+bG9jYWxUb0Fic29sdXRlKCk7CisgICAgICAgIGFic1Bvcy5tb3Zl
KGJveC0+Ym9yZGVyTGVmdCgpLCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICAgICAgcmV0dXJuIElu
dFJlY3QoYWJzUG9zLngoKSwgYWJzUG9zLnkoKSwgYm94LT5jbGllbnRXaWR0aCgpLCBib3gtPmNs
aWVudEhlaWdodCgpKTsKKyAgICB9IGVsc2UgaWYgKCFwYXJlbnRMYXllciAmJiByZW5kZXJlcigp
LT5pc0JveCgpICYmIHJlbmRlckJveCgpLT5jYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKHNj
cm9sbFRvQW5jaG9yKSkgeworICAgICAgICBpZiAoZnJhbWVWaWV3KSB7CisgICAgICAgICAgICBp
ZiAoaGFzT3duZXIoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPnZpc2li
bGVDb250ZW50UmVjdCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgCisgICAgcmV0dXJuIEludFJlY3QoKTsKK30KKworYm9vbCBS
ZW5kZXJMYXllcjo6c2hvdWxkQXV0b3Njcm9sbEJ5UG9pbnRlcihjb25zdCBJbnRQb2ludCYgY3Vy
cmVudERvY3VtZW50UG9zaXRpb24pCit7CisgICAgLy8gQXV0b3Njcm9sbEJ5UG9pbnRlciBmb3Ig
b3V0ZXJtb3N0IGZyYW1lIGlzIGRvbmUgYnkgV2ViVmlldywgc28gd2Ugc2hvdWxkIHNraXAgaXQu
CisgICAgaWYgKGlzT3V0ZXJtb3N0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IEF1dG9zY3JvbGxCeVBvaW50ZXIgZG9lc24ndCBoYXBwZW4gd2hlbiBpdHMgcG9zaXRpb24gaXMg
b3V0c2lkZQorICAgIC8vIHRoZSBmcmFtZSwgb3IgaW5zaWRlIHRoZSB0aHJlc2hvdWxkIG9mIHRo
YXQgZnJhbWUuCisgICAgSW50UmVjdCBvdXRlckJvdW5kID0gYXV0b3Njcm9sbEJvdW5kcyhmYWxz
ZSk7CisgICAgSW50UmVjdCBpbm5lckJvdW5kID0gc2hyaW5rUmVjdChvdXRlckJvdW5kLCBzaHJp
bmtTaXplRm9yKEF1dG9zY3JvbGxCeVBvaW50ZXIpKTsKKyAgICBpZiAoIW91dGVyQm91bmQuY29u
dGFpbnMoY3VycmVudERvY3VtZW50UG9zaXRpb24pIHx8IGlubmVyQm91bmQuY29udGFpbnMoY3Vy
cmVudERvY3VtZW50UG9zaXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpwYXJlbnRFbmNsb3NpbmdM
YXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlbmRlcmVyKCktPnBhcmVudCgpID8gcmVuZGVy
ZXIoKS0+cGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCkgOiAwOworfQorCitib29sIFJlbmRlckxh
eWVyOjpyZXN0cmljdGVkQnlMaW5lQ2xhbXAoKSBjb25zdAoreworICAgIHJldHVybiByZW5kZXJl
cigpLT5wYXJlbnQoKSAmJiAhcmVuZGVyZXIoKS0+cGFyZW50KCktPnN0eWxlKCktPmxpbmVDbGFt
cCgpLmlzTm9uZSgpOworfQorCitib29sIFJlbmRlckxheWVyOjpoYXNPd25lcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlbmRlcmVyKCktPmRvY3VtZW50KCkgJiYgcmVuZGVyZXIoKS0+ZG9jdW1l
bnQoKS0+b3duZXJFbGVtZW50KCkgJiYgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVt
ZW50KCktPnJlbmRlcmVyKCk7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzT3V0ZXJtb3N0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIXBhcmVudCgpICYmICFoYXNPd25lcigpOworfQorCitJbnRS
ZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCAmdmlzaWJsZVJl
Y3QsIGNvbnN0IEludFJlY3QgJmV4cG9zZVJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSwgaW50IHNocmlua1NpemUpCit7CisK
ICAgICBTY3JvbGxCZWhhdmlvciBzY3JvbGxYOwogICAgIEludFJlY3QgZXhwb3NlUmVjdFgoZXhw
b3NlUmVjdC54KCksIHZpc2libGVSZWN0LnkoKSwgZXhwb3NlUmVjdC53aWR0aCgpLCB2aXNpYmxl
UmVjdC5oZWlnaHQoKSk7Ci0gICAgaW50IGludGVyc2VjdFdpZHRoID0gaW50ZXJzZWN0aW9uKHZp
c2libGVSZWN0LCBleHBvc2VSZWN0WCkud2lkdGgoKTsKKworICAgIC8vIFdlIHVzZSBib3VuZFJl
Y3QgZm9yIGF1dG9zY3JvbGwuCisgICAgLy8gSWYgdGhlIGV4cG9zZVJlY3QgaXMgY3Jvc3Npbmcg
KG9yIG91dHNpZGUpIHRoZSBib3VuZFJlY3QsIHdlIHRyeSB0byBtYWtlIHRoZSByZXN1bHQgc3Rh
eWluZyBpbnNpZGUgdGhhdCBib3VuZC4KKyAgICAvLyBOb3RlIHRoYXQgYm91bmRSZWN0IHdpdGgg
emVybyBzaHJpbmtTaXplIGhhcyBubyBlZmZlY3QuCisgICAgSW50UmVjdCBib3VuZFJlY3QgPSBz
aHJpbmtSZWN0KHZpc2libGVSZWN0LCBzaHJpbmtTaXplKTsKKworICAgIGludCBpbnRlcnNlY3RX
aWR0aCA9IGludGVyc2VjdGlvbihib3VuZFJlY3QsIGV4cG9zZVJlY3RYKS53aWR0aCgpOwogICAg
IGlmIChpbnRlcnNlY3RXaWR0aCA9PSBleHBvc2VSZWN0LndpZHRoKCkgfHwgaW50ZXJzZWN0V2lk
dGggPj0gTUlOX0lOVEVSU0VDVF9GT1JfUkVWRUFMKQogICAgICAgICAvLyBJZiB0aGUgcmVjdGFu
Z2xlIGlzIGZ1bGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHZpc2libGUgYmVoYXZpb3Iu
CiAgICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgcGFydGlhbGx5IHZpc2libGUsIGJ1dCBv
dmVyIGEgY2VydGFpbiB0aHJlc2hvbGQsCiAgICAgICAgIC8vIHRoZW4gdHJlYXQgaXQgYXMgZnVs
bHkgdmlzaWJsZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBob3Jpem9udGFsIHNjcm9sbGluZwogICAg
ICAgICBzY3JvbGxYID0gU2Nyb2xsQWxpZ25tZW50OjpnZXRWaXNpYmxlQmVoYXZpb3IoYWxpZ25Y
KTsKLSAgICBlbHNlIGlmIChpbnRlcnNlY3RXaWR0aCA9PSB2aXNpYmxlUmVjdC53aWR0aCgpKSB7
CisgICAgZWxzZSBpZiAoaW50ZXJzZWN0V2lkdGggPT0gYm91bmRSZWN0LndpZHRoKCkpIHsKICAg
ICAgICAgLy8gSWYgdGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgZG9u
J3QgYm90aGVyIHRyeWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3b3JrLgog
ICAgICAgICBzY3JvbGxYID0gU2Nyb2xsQWxpZ25tZW50OjpnZXRWaXNpYmxlQmVoYXZpb3IoYWxp
Z25YKTsKICAgICAgICAgaWYgKHNjcm9sbFggPT0gYWxpZ25DZW50ZXIpCkBAIC0xNDg0LDcgKzE1
NjIsNyBAQCBJbnRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVj
dCAmdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QgJgogICAgICAgICBzY3JvbGxYID0gU2Nyb2xs
QWxpZ25tZW50OjpnZXRIaWRkZW5CZWhhdmlvcihhbGlnblgpOwogICAgIC8vIElmIHdlJ3JlIHRy
eWluZyB0byBhbGlnbiB0byB0aGUgY2xvc2VzdCBlZGdlLCBhbmQgdGhlIGV4cG9zZVJlY3QgaXMg
ZnVydGhlciByaWdodAogICAgIC8vIHRoYW4gdGhlIHZpc2libGVSZWN0LCBhbmQgbm90IGJpZ2dl
ciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0aCB0aGUgcmlnaHQuCi0gICAg
aWYgKHNjcm9sbFggPT0gYWxpZ25Ub0Nsb3Nlc3RFZGdlICYmIGV4cG9zZVJlY3QucmlnaHQoKSA+
IHZpc2libGVSZWN0LnJpZ2h0KCkgJiYgZXhwb3NlUmVjdC53aWR0aCgpIDwgdmlzaWJsZVJlY3Qu
d2lkdGgoKSkKKyAgICBpZiAoc2Nyb2xsWCA9PSBhbGlnblRvQ2xvc2VzdEVkZ2UgJiYgZXhwb3Nl
UmVjdC5yaWdodCgpID4gYm91bmRSZWN0LnJpZ2h0KCkgJiYgZXhwb3NlUmVjdC53aWR0aCgpIDwg
Ym91bmRSZWN0LndpZHRoKCkpCiAgICAgICAgIHNjcm9sbFggPSBhbGlnblJpZ2h0OwogCiAgICAg
Ly8gR2l2ZW4gdGhlIFggYmVoYXZpb3IsIGNvbXB1dGUgdGhlIFggY29vcmRpbmF0ZS4KQEAgLTE0
OTIsMjAgKzE1NzAsMjAgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6Z2V0UmVjdFRvRXhwb3NlKGNv
bnN0IEludFJlY3QgJnZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0ICYKICAgICBpZiAoc2Nyb2xs
WCA9PSBub1Njcm9sbCkgCiAgICAgICAgIHggPSB2aXNpYmxlUmVjdC54KCk7CiAgICAgZWxzZSBp
ZiAoc2Nyb2xsWCA9PSBhbGlnblJpZ2h0KQotICAgICAgICB4ID0gZXhwb3NlUmVjdC5yaWdodCgp
IC0gdmlzaWJsZVJlY3Qud2lkdGgoKTsKKyAgICAgICAgeCA9IHZpc2libGVSZWN0LngoKSArIChl
eHBvc2VSZWN0LnJpZ2h0KCkgLSBib3VuZFJlY3QucmlnaHQoKSk7CiAgICAgZWxzZSBpZiAoc2Ny
b2xsWCA9PSBhbGlnbkNlbnRlcikKICAgICAgICAgeCA9IGV4cG9zZVJlY3QueCgpICsgKGV4cG9z
ZVJlY3Qud2lkdGgoKSAtIHZpc2libGVSZWN0LndpZHRoKCkpIC8gMjsKICAgICBlbHNlCi0gICAg
ICAgIHggPSBleHBvc2VSZWN0LngoKTsKKyAgICAgICAgeCA9IHZpc2libGVSZWN0LngoKSAtIChi
b3VuZFJlY3QueCgpIC0gZXhwb3NlUmVjdC54KCkpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBh
cHByb3ByaWF0ZSBZIGJlaGF2aW9yLgogICAgIFNjcm9sbEJlaGF2aW9yIHNjcm9sbFk7CiAgICAg
SW50UmVjdCBleHBvc2VSZWN0WSh2aXNpYmxlUmVjdC54KCksIGV4cG9zZVJlY3QueSgpLCB2aXNp
YmxlUmVjdC53aWR0aCgpLCBleHBvc2VSZWN0LmhlaWdodCgpKTsKLSAgICBpbnQgaW50ZXJzZWN0
SGVpZ2h0ID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0LCBleHBvc2VSZWN0WSkuaGVpZ2h0KCk7
CisgICAgaW50IGludGVyc2VjdEhlaWdodCA9IGludGVyc2VjdGlvbihib3VuZFJlY3QsIGV4cG9z
ZVJlY3RZKS5oZWlnaHQoKTsKICAgICBpZiAoaW50ZXJzZWN0SGVpZ2h0ID09IGV4cG9zZVJlY3Qu
aGVpZ2h0KCkpCiAgICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlzaWJsZSwg
dXNlIHRoZSBzcGVjaWZpZWQgdmlzaWJsZSBiZWhhdmlvci4KICAgICAgICAgc2Nyb2xsWSA9IFNj
cm9sbEFsaWdubWVudDo6Z2V0VmlzaWJsZUJlaGF2aW9yKGFsaWduWSk7Ci0gICAgZWxzZSBpZiAo
aW50ZXJzZWN0SGVpZ2h0ID09IHZpc2libGVSZWN0LmhlaWdodCgpKSB7CisgICAgZWxzZSBpZiAo
aW50ZXJzZWN0SGVpZ2h0ID09IGJvdW5kUmVjdC5oZWlnaHQoKSkgewogICAgICAgICAvLyBJZiB0
aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCBkb24ndCBib3RoZXIgdHJ5
aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxpZ25tZW50cyB3aWxsIHdvcmsuCiAgICAgICAgIHNjcm9s
bFkgPSBTY3JvbGxBbGlnbm1lbnQ6OmdldFZpc2libGVCZWhhdmlvcihhbGlnblkpOwogICAgICAg
ICBpZiAoc2Nyb2xsWSA9PSBhbGlnbkNlbnRlcikKQEAgLTE1MTcsNyArMTU5NSw3IEBAIEludFJl
Y3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBJbnRSZWN0ICZ2aXNpYmxlUmVj
dCwgY29uc3QgSW50UmVjdCAmCiAgICAgICAgIHNjcm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6Omdl
dEhpZGRlbkJlaGF2aW9yKGFsaWduWSk7CiAgICAgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIGFsaWdu
IHRvIHRoZSBjbG9zZXN0IGVkZ2UsIGFuZCB0aGUgZXhwb3NlUmVjdCBpcyBmdXJ0aGVyIGRvd24K
ICAgICAvLyB0aGFuIHRoZSB2aXNpYmxlUmVjdCwgYW5kIG5vdCBiaWdnZXIgdGhhbiB0aGUgdmlz
aWJsZSBhcmVhLCB0aGVuIGFsaWduIHdpdGggdGhlIGJvdHRvbS4KLSAgICBpZiAoc2Nyb2xsWSA9
PSBhbGlnblRvQ2xvc2VzdEVkZ2UgJiYgZXhwb3NlUmVjdC5ib3R0b20oKSA+IHZpc2libGVSZWN0
LmJvdHRvbSgpICYmIGV4cG9zZVJlY3QuaGVpZ2h0KCkgPCB2aXNpYmxlUmVjdC5oZWlnaHQoKSkK
KyAgICBpZiAoc2Nyb2xsWSA9PSBhbGlnblRvQ2xvc2VzdEVkZ2UgJiYgZXhwb3NlUmVjdC5ib3R0
b20oKSA+IGJvdW5kUmVjdC5ib3R0b20oKSAmJiBleHBvc2VSZWN0LmhlaWdodCgpIDwgYm91bmRS
ZWN0LmhlaWdodCgpKQogICAgICAgICBzY3JvbGxZID0gYWxpZ25Cb3R0b207CiAKICAgICAvLyBH
aXZlbiB0aGUgWSBiZWhhdmlvciwgY29tcHV0ZSB0aGUgWSBjb29yZGluYXRlLgpAQCAtMTUyNSwx
MSArMTYwMywxMSBAQCBJbnRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3Qg
SW50UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QgJgogICAgIGlmIChzY3JvbGxZID09
IG5vU2Nyb2xsKSAKICAgICAgICAgeSA9IHZpc2libGVSZWN0LnkoKTsKICAgICBlbHNlIGlmIChz
Y3JvbGxZID09IGFsaWduQm90dG9tKQotICAgICAgICB5ID0gZXhwb3NlUmVjdC5ib3R0b20oKSAt
IHZpc2libGVSZWN0LmhlaWdodCgpOworICAgICAgICB5ID0gdmlzaWJsZVJlY3QueSgpICsgKGV4
cG9zZVJlY3QuYm90dG9tKCkgLSBib3VuZFJlY3QuYm90dG9tKCkpOwogICAgIGVsc2UgaWYgKHNj
cm9sbFkgPT0gYWxpZ25DZW50ZXIpCiAgICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKSArIChleHBv
c2VSZWN0LmhlaWdodCgpIC0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkpIC8gMjsKICAgICBlbHNlCi0g
ICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKTsKKyAgICAgICAgeSA9IHZpc2libGVSZWN0LnkoKSAt
IChib3VuZFJlY3QueSgpIC0gZXhwb3NlUmVjdC55KCkpOwogCiAgICAgcmV0dXJuIEludFJlY3Qo
SW50UG9pbnQoeCwgeSksIHZpc2libGVSZWN0LnNpemUoKSk7CiB9CkBAIC0xNTQ5LDcgKzE2Mjcs
MTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCgpCiAjZW5kaWYKIAogICAgIEludFBv
aW50IGN1cnJlbnREb2N1bWVudFBvc2l0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRz
KGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKSk7Ci0gICAgc2Ny
b2xsUmVjdFRvVmlzaWJsZShJbnRSZWN0KGN1cnJlbnREb2N1bWVudFBvc2l0aW9uLCBJbnRTaXpl
KDEsIDEpKSwgZmFsc2UsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkKTsKKyAgICBhdXRvc2Nyb2xsKEF1dG9z
Y3JvbGxCeUNhcmV0LCBjdXJyZW50RG9jdW1lbnRQb3NpdGlvbik7Cit9CisKK3ZvaWQgUmVuZGVy
TGF5ZXI6OmF1dG9zY3JvbGwoQXV0b3Njcm9sbFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIGN1
cnJlbnREb2N1bWVudFBvc2l0aW9uKQoreworICAgIEFTU0VSVCh0eXBlICE9IEF1dG9zY3JvbGxC
eVBvaW50ZXIgfHwgc2hvdWxkQXV0b3Njcm9sbEJ5UG9pbnRlcihjdXJyZW50RG9jdW1lbnRQb3Np
dGlvbikpOworICAgIHNjcm9sbFJlY3RUb1Zpc2libGUoSW50UmVjdChjdXJyZW50RG9jdW1lbnRQ
b3NpdGlvbiwgSW50U2l6ZSgxLCAxKSksIGZhbHNlLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9F
ZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgc2hyaW5r
U2l6ZUZvcih0eXBlKSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnJlc2l6ZShjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2dCwgY29uc3QgSW50U2l6ZSYgb2xkT2Zmc2V0KQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKaW5kZXggOTU4NzY1MGIxNTA0ODhiOTViMWRhNGU1NjEwOTFjMWQ4NWI4YWY0
OS4uN2Q5NWE0OTc2YWFhMDQ1NjFmYWM3ODc4MWExODEyYzdhOTRhMjg0YyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCkBAIC03Miw2ICs3Miw4IEBAIGNsYXNzIFJlbmRlckxheWVyQmFja2luZzsK
IGNsYXNzIFJlbmRlckxheWVyQ29tcG9zaXRvcjsKICNlbmRpZgogCitlbnVtIEF1dG9zY3JvbGxU
eXBlIHsgQXV0b3Njcm9sbE5vbmUsIEF1dG9zY3JvbGxCeUNhcmV0LCBBdXRvc2Nyb2xsQnlQb2lu
dGVyIH07CisKIGNsYXNzIENsaXBSZWN0cyB7CiBwdWJsaWM6CiAgICAgQ2xpcFJlY3RzKCkKQEAg
LTI0OCw5ICsyNTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxUb09mZnNldChpbnQgeCwg
aW50IHksIGJvb2wgdXBkYXRlU2Nyb2xsYmFycyA9IHRydWUsIGJvb2wgcmVwYWludCA9IHRydWUp
OwogICAgIHZvaWQgc2Nyb2xsVG9YT2Zmc2V0KGludCB4KSB7IHNjcm9sbFRvT2Zmc2V0KHgsIG1f
c2Nyb2xsWSk7IH0KICAgICB2b2lkIHNjcm9sbFRvWU9mZnNldChpbnQgeSkgeyBzY3JvbGxUb09m
ZnNldChtX3Njcm9sbFggKyBtX3Njcm9sbE9yaWdpblgsIHkpOyB9Ci0gICAgdm9pZCBzY3JvbGxS
ZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmLCBib29sIHNjcm9sbFRvQW5jaG9yID0gZmFsc2Us
IGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNl
bnRlcklmTmVlZGVkLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSA9IFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCk7CisgICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxl
KGNvbnN0IEludFJlY3QmLCBib29sIHNjcm9sbFRvQW5jaG9yID0gZmFsc2UsIGNvbnN0IFNjcm9s
bEFsaWdubWVudCYgYWxpZ25YID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVk
LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25D
ZW50ZXJJZk5lZWRlZCwgaW50IHNocmlua1NpemUgPSAwKTsKIAotICAgIEludFJlY3QgZ2V0UmVj
dFRvRXhwb3NlKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBleHBv
c2VSZWN0LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25t
ZW50JiBhbGlnblkpOworICAgIEludFJlY3QgZ2V0UmVjdFRvRXhwb3NlKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBleHBvc2VSZWN0LCBjb25zdCBTY3JvbGxBbGln
bm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblksIGludCBzaHJpbmtT
aXplKTsKIAogICAgIHZvaWQgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sKTsKICAgICB2
b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wpOwpAQCAtMjc4LDYgKzI4MCw4IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHksIGZsb2F0IG11bHRpcGxpZXIgPSAxLjBmKTsKICAgICB2b2lkIGF1dG9zY3JvbGwoKTsKKyAg
ICB2b2lkIGF1dG9zY3JvbGwoQXV0b3Njcm9sbFR5cGUsIGNvbnN0IEludFBvaW50Jik7CisgICAg
Ym9vbCBzaG91bGRBdXRvc2Nyb2xsQnlQb2ludGVyKGNvbnN0IEludFBvaW50Jik7CiAKICAgICB2
b2lkIHJlc2l6ZShjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBJbnRTaXplJik7CiAg
ICAgYm9vbCBpblJlc2l6ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2luUmVzaXplTW9kZTsgfQpA
QCAtNTc2LDYgKzU4MCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TXVzdE92ZXJsYXBDb21w
b3NpdGVkTGF5ZXJzKGJvb2wgYikgeyBtX211c3RPdmVybGFwQ29tcG9zaXRlZExheWVycyA9IGI7
IH0KICNlbmRpZgogCisgICAgUmVuZGVyTGF5ZXIqIHBhcmVudEVuY2xvc2luZ0xheWVyKCkgY29u
c3Q7CisgICAgYm9vbCByZXN0cmljdGVkQnlMaW5lQ2xhbXAoKSBjb25zdDsKKyAgICBib29sIGhh
c093bmVyKCkgY29uc3Q7CisgICAgYm9vbCBpc091dGVybW9zdCgpIGNvbnN0OworICAgIEludFJl
Y3QgYXV0b3Njcm9sbEJvdW5kcyhib29sIHNjcm9sbFRvQW5jaG9yKSBjb25zdDsKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckxheWVyQmFja2luZzsKICAgICBmcmllbmQgY2xhc3Mg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60711</attachid>
            <date>2010-07-07 02:53:22 -0700</date>
            <delta_ts>2010-09-08 03:50:20 -0700</delta_ts>
            <desc>patch v1 fix style violation</desc>
            <filename>bug-39725-20100707185320.patch</filename>
            <type>text/plain</type>
            <size>39622</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmZhMDBjMmU1NzA4NTZhZjY3YjRkMWFhNTQ2ZTljZGRmYjM3YmNiLi5mYjIwODgy
NzQ0ZDc2NzY0YTE0MTE1OWNiZjFjOGI5MTUxMGRjYzlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDctMDcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZ2dpbmcgb3ZlciBh
biBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4g
ZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk3MjUKKyAgICAgICAgaWZyYW1lIGFuZCBzY3JvbGxiYXIgd2l0aCAib3Zl
cmZsb3c6YXV0byIgc2hvdWxkIHN1cHBvcnQgYXV0b3Njcm9sbCB3aXRoIG1vdXNlZHJhZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5ODEKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS1leHBl
Y3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWNsaWNr
LWluLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdXRv
c2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvcmVzb3VyY2VzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0wNy0wNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5A
cmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIFJvbGxvdXQgcjYyNjMzIC0gdGVzdCBj
cmFzaGVzIGFmdGVyIHNvbWUgbGFzdC1taW51dGUgbW9kaWZpY2F0aW9ucy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFt
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLXBvaW50
ZXItZWxlbWVudC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNDg2Y2NiNDgzYTY2
MTYwZThiY2I0YzA1NGFlNzBhNjQ1ZTViNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWNmOGZjOTljNzRlNjA4NWIzOWNiNjQ0ZDE4ZmQ0YTFjNTg3NDU5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRl
ci1lbGVtZW50LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTkyIEBACis8IURPQ1RZUEUgaHRtbCBQ
VUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgorCSJodHRwOi8v
d3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+ICogeyBtYXJnaW46IDBweDsgcGFkZGluZzog
MHB4OyB9IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICB2YXIgZG9uZUNvdW50
ID0gMDsKKyAgICAgICAKKyAgICAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgIHsKKyAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAnXG4nKSk7CisgICAgICAgfQorCisgICAgICAgZnVu
Y3Rpb24gdGVzdCgpCisgICAgICAgeworICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3RTY3JvbGxEaXYsIDApOworICAgICAg
ICAgICB9CisgICAgICAgfQorCisgICAgICAgZnVuY3Rpb24gcmVzZXRTY3JvbGwoZWxlbWVudCkK
KyAgICAgICB7CisgICAgICAgICAgIHZhciBvbGQgPSBlbGVtZW50LnN0eWxlLmRpc3BsYXk7Cisg
ICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgICAgZWxl
bWVudC5vZmZzZXRMZWZ0OyAvLyBGb3JjZSByZWxheW91dAorICAgICAgICAgICBlbGVtZW50LnN0
eWxlLmRpc3BsYXkgPSBvbGQ7CisgICAgICAgICAgIGVsZW1lbnQub2Zmc2V0TGVmdDsgLy8gRm9y
Y2UgcmVsYXlvdXQKKyAgICAgICAgICAgaWYgKDAgIT0gZWxlbWVudC5zY3JvbGxMZWZ0KQorICAg
ICAgICAgICAgICAgbG9nKCJGQUlMOiBzY3JvbGwgc3RhdGUgc2hvdWxkIGJlIGNsZWFyZWQiKTsK
KyAgICAgICB9CisKKyAgICAgICBmdW5jdGlvbiByZXNldFNjcm9sbHMoKQorICAgICAgIHsKKyAg
ICAgICAgICAgcmVzZXRTY3JvbGwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbGFibGVE
aXYiKSk7CisgICAgICAgICAgIHJlc2V0U2Nyb2xsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
Y3JvbGxhYmxlSUZyYW1lIikuY29udGVudERvY3VtZW50LmJvZHkpOworICAgICAgIH0KKworICAg
ICAgIGZ1bmN0aW9uIHdhaXRVbnRpbChjcml0ZXJpYSkKKyAgICAgICB7CisgICAgICAgICAgIGlm
IChjcml0ZXJpYS5zYXRpc2ZpZWQoKSkgeworICAgICAgICAgICAgICBkb25lQ291bnQrKzsKKyAg
ICAgICAgICAgICAgY3JpdGVyaWEuZG9uZSgpOworICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICBjcml0ZXJpYS5zdGVwKCk7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHdhaXRVbnRpbChjcml0ZXJpYSk7IH0sIDApOworICAgICAgICAgICB9CisgICAgICAg
fQorCisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxkaXY+LCB1c2luZyA8c3Bh
bj4gaW5zaWRlIHRoYXQgPGRpdj4uCisgICAgICAgZnVuY3Rpb24gdGVzdFNjcm9sbERpdigpCisg
ICAgICAgeworICAgICAgICAgICByZXNldFNjcm9sbHMoKTsKKyAgICAgICAgICAgdmFyIHNjcm9s
bGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsYWJsZURpdiIpOworICAgICAg
ICAgICB2YXIgZHJhZ2dhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZUZv
ckRpdiIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBkcmFnZ2FibGUuY2xpZW50TGVmdCAr
IDU7CisgICAgICAgICAgIHZhciBzdGFydFkgPSBkcmFnZ2FibGUuY2xpZW50VG9wICsgNTsKKyAg
ICAgICAgICAgdmFyIGJvcmRlclggPSBzY3JvbGxhYmxlLmNsaWVudExlZnQgKyBzY3JvbGxhYmxl
LmNsaWVudFdpZHRoIC0gMTU7CisgICAgICAgICAgIHZhciBib3JkZXJZID0gc2Nyb2xsYWJsZS5j
bGllbnRUb3AgKyAxMDsKKyAgICAgICAgICAgdmFyIGhhc1Njcm9sbCA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gMCA8IHNjcm9sbGFibGUuc2Nyb2xsTGVmdDsgfTsKKworICAgICAgICAgICBpZiAoaGFz
U2Nyb2xsKCkpCisgICAgICAgICAgICAgICBsb2coIkZBSUw6IHByZWNvbmRpdGlvbiBmb3IgdGVz
dFNjcm9sbERpdiBmYWlsZWQiKTsKKworICAgICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9
IGZhbHNlOworICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0
WSk7CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhib3JkZXJYLCBib3JkZXJZKTsKKworICAgICAgICAgICB3YWl0
VW50aWwoeworICAgICAgICAgICAgICAgc2F0aXNmaWVkOiBoYXNTY3JvbGwsCisgICAgICAgICAg
ICAgICBzdGVwOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwg
Ym9yZGVyWSk7IH0sCisgICAgICAgICAgICAgICBkb25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5k
ZXIubW91c2VVcCgpOyB0ZXN0U2Nyb2xsSWZyYW1lKCk7IH0KKyAgICAgICAgICAgfSk7CisgICAg
ICAgfQorCisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxpZnJhbWU+LCB1c2lu
ZyA8c3Bhbj4gaW5zaWRlIHRoZSBkb2N1bWVudCBvZiBzY3JvbGxpbmcgPGlmcmFtZT4uCisgICAg
ICAgZnVuY3Rpb24gdGVzdFNjcm9sbElmcmFtZSgpCisgICAgICAgeworICAgICAgICAgICByZXNl
dFNjcm9sbHMoKTsKKyAgICAgICAgICAgdmFyIHNjcm9sbGFibGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2Nyb2xsYWJsZUlGcmFtZSIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlID0g
c2Nyb2xsYWJsZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZUZvcklG
cmFtZSIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBzY3JvbGxhYmxlLm9mZnNldExlZnQg
KyBkcmFnZ2FibGUub2Zmc2V0TGVmdCArIDU7CisgICAgICAgICAgIHZhciBzdGFydFkgPSBzY3Jv
bGxhYmxlLm9mZnNldFRvcCArIGRyYWdnYWJsZS5vZmZzZXRUb3AgKyA1OworICAgICAgICAgICB2
YXIgYm9yZGVyWCA9IHNjcm9sbGFibGUub2Zmc2V0TGVmdCArIHNjcm9sbGFibGUuY2xpZW50V2lk
dGggLSAxNTsKKyAgICAgICAgICAgdmFyIGJvcmRlclkgPSBzY3JvbGxhYmxlLm9mZnNldFRvcCAr
IDEwOworICAgICAgICAgICB2YXIgaGFzU2Nyb2xsID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIDwg
c2Nyb2xsYWJsZS5jb250ZW50RG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OyB9OworCisgICAgICAg
ICAgIGlmIChoYXNTY3JvbGwoKSkKKyAgICAgICAgICAgICAgIGxvZygiRkFJTDogcHJlY29uZGl0
aW9uIGZvciB0ZXN0U2Nyb2xsSWZyYW1lIGZhaWxlZCIpOworCisgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGJvcmRlclgsIGJvcmRlclkpOworCisg
ICAgICAgICAgIHdhaXRVbnRpbCh7CisgICAgICAgICAgICAgICBzYXRpc2ZpZWQ6IGhhc1Njcm9s
bCwKKyAgICAgICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKCkgeyBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhib3JkZXJYLCBib3JkZXJZKTsgfSwKKyAgICAgICAgICAgICAgIC8vZG9uZTogZnVuY3Rp
b24oKSB7IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsgZG9uZSgpOyB9CisgICAgICAgICAgICAgICBk
b25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VVcCgpOyB0ZXN0U2Nyb2xsRGl2VXNp
bmdEcmFnZ2FibGVGcm9tSUZyYW1lKCk7IH0KKyAgICAgICAgICAgfSk7CisgICAgICAgfQorCisg
ICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxkaXY+LCB1c2luZyA8c3Bhbj4gZnJv
bSBhIGZvcmVpZ24gPGlmcmFtZT4uCisgICAgICAgZnVuY3Rpb24gdGVzdFNjcm9sbERpdlVzaW5n
RHJhZ2dhYmxlRnJvbUlGcmFtZSgpCisgICAgICAgeworICAgICAgICAgICByZXNldFNjcm9sbHMo
KTsKKyAgICAgICAgICAgdmFyIHNjcm9sbGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c2Nyb2xsYWJsZURpdiIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlUGFyZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbGFibGVJRnJhbWUiKTsKKyAgICAgICAgICAgdmFyIGRy
YWdnYWJsZSA9IGRyYWdnYWJsZVBhcmVudC5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRyYWdnYWJsZUZvcklGcmFtZSIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBkcmFnZ2Fi
bGVQYXJlbnQub2Zmc2V0TGVmdCArIGRyYWdnYWJsZS5vZmZzZXRMZWZ0ICsgNTsKKyAgICAgICAg
ICAgdmFyIHN0YXJ0WSA9IGRyYWdnYWJsZVBhcmVudC5vZmZzZXRUb3AgKyBkcmFnZ2FibGUub2Zm
c2V0VG9wICsgNTsKKyAgICAgICAgICAgdmFyIGJvcmRlclggPSBzY3JvbGxhYmxlLmNsaWVudExl
ZnQgKyBzY3JvbGxhYmxlLmNsaWVudFdpZHRoIC0gMTU7CisgICAgICAgICAgIHZhciBib3JkZXJZ
ID0gc2Nyb2xsYWJsZS5jbGllbnRUb3AgKyAxMDsKKyAgICAgICAgICAgdmFyIGhhc1Njcm9sbCA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCA8IHNjcm9sbGFibGUuc2Nyb2xsTGVmdDsgfTsKKworICAg
ICAgICAgICBpZiAoaGFzU2Nyb2xsKCkpCisgICAgICAgICAgICAgICBsb2coIkZBSUw6IHByZWNv
bmRpdGlvbiBmb3IgdGVzdFNjcm9sbERpdlVzaW5nRHJhZ2dhYmxlRnJvbUlGcmFtZSBmYWlsZWQi
KTsKKworICAgICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhib3JkZXJYLCBib3JkZXJZKTsKKworICAgICAgICAgICB3YWl0VW50aWwoeworICAgICAgICAg
ICAgICAgc2F0aXNmaWVkOiBoYXNTY3JvbGwsCisgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlv
bigpIHsgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwgYm9yZGVyWSk7IH0sCisgICAg
ICAgICAgICAgICBkb25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VVcCgpOyB0ZXN0
U2Nyb2xsSUZyYW1lVXNpbmdEcmFnZ2FibGVGcm9tRGl2KCk7IH0KKyAgICAgICAgICAgfSk7Cisg
ICAgICAgfQorCisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxpZnJhbWUuPiwg
dXNpbmcgPHNwYW4+IGZyb20gYSBmb3JlaWduIDxkaXY+LgorICAgICAgIGZ1bmN0aW9uIHRlc3RT
Y3JvbGxJRnJhbWVVc2luZ0RyYWdnYWJsZUZyb21EaXYoKQorICAgICAgIHsKKyAgICAgICAgICAg
cmVzZXRTY3JvbGxzKCk7CisgICAgICAgICAgIHZhciBzY3JvbGxhYmxlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNjcm9sbGFibGVJRnJhbWUiKTsKKyAgICAgICAgICAgdmFyIGRyYWdnYWJs
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnZ2FibGVGb3JEaXYiKTsKKworICAgICAg
ICAgICB2YXIgc3RhcnRYID0gZHJhZ2dhYmxlLmNsaWVudExlZnQgKyA1OworICAgICAgICAgICB2
YXIgc3RhcnRZID0gZHJhZ2dhYmxlLmNsaWVudFRvcCArIDU7CisgICAgICAgICAgIHZhciBib3Jk
ZXJYID0gc2Nyb2xsYWJsZS5vZmZzZXRMZWZ0ICsgc2Nyb2xsYWJsZS5jbGllbnRXaWR0aCAtIDE1
OworICAgICAgICAgICB2YXIgYm9yZGVyWSA9IHNjcm9sbGFibGUub2Zmc2V0VG9wICsgMTA7Cisg
ICAgICAgICAgIHZhciBoYXNTY3JvbGwgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDAgPCBzY3JvbGxh
YmxlLmNvbnRlbnREb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7IH07CisKKyAgICAgICAgICAgaWYg
KGhhc1Njcm9sbCgpKQorICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBwcmVjb25kaXRpb24gZm9y
IHRlc3RTY3JvbGxJRnJhbWVVc2luZ0RyYWdnYWJsZUZyb21EaXYgZmFpbGVkIik7CisKKyAgICAg
ICAgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwg
Ym9yZGVyWSk7CisKKyAgICAgICAgICAgd2FpdFVudGlsKHsKKyAgICAgICAgICAgICAgIHNhdGlz
ZmllZDogaGFzU2Nyb2xsLAorICAgICAgICAgICAgICAgc3RlcDogZnVuY3Rpb24oKSB7IGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKGJvcmRlclgsIGJvcmRlclkpOyB9LAorICAgICAgICAgICAgICAg
ZG9uZTogZnVuY3Rpb24oKSB7IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsgZG9uZSgpOyB9CisgICAg
ICAgICAgIH0pOworICAgICAgIH0KKworICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAgIHsK
KyAgICAgICAgICAgaWYgKGRvbmVDb3VudCAhPSA0KQorICAgICAgICAgICAgICAgbG9nKCJGQUlM
OiBtaXNzaW5nIHRlc3QgY2FzZXMiKTsKKyAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNjcm9sbGFibGVEaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICBs
b2coIlBBU1MiKTsKKyAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+CisgICA8cHJlIGlkPSJzY3JvbGxhYmxlRGl2IiBzdHlsZT0iaGVpZ2h0OiAx
MDBweDsgd2lkdGg6IDEwMHB4OyBvdmVyZmxvdzogYXV0bzsiPgorPHNwYW4gZHJhZ2dhYmxlPSJ0
cnVlIiBpZD0iZHJhZ2dhYmxlRm9yRGl2Ij5kcmFnbWU8L3NwYW4+CitUaGUgcXVpY2sgYnJvd24g
Zm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92
ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkg
ZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1
aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZv
eCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVy
IHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRv
Zy4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWlj
ayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gg
anVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0
aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9n
LiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sg
YnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1
bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRo
ZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4g
VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJy
b3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93biBmb3gganVt
cHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUg
bGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRo
ZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJv
d24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBz
IG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxh
enkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorICAg
PC9wcmU+CisgICA8aWZyYW1lIGlkPSJzY3JvbGxhYmxlSUZyYW1lIiBzcmM9InJlc291cmNlcy9h
dXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMTAw
cHg7IHdpZHRoOiAxMDBweDsgb3ZlcmZsb3c6IGF1dG87Ij48L2lmcmFtZT4KKyAgIDxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvYXV0b3Njcm9sbC1w
b2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhZWEwOWU0M2ZmOWJjOTg0
ZGZhNTEwOWIwZWM2OTYyYzYzYjA4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3Jlc291cmNlcy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRt
bApAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICA8L2hlYWQ+Cis8Ym9k
eT4KKzxwcmU+Cis8c3BhbiBkcmFnZ2FibGU9InRydWUiIGlkPSJkcmFnZ2FibGVGb3JJRnJhbWUi
PmRyYWdtZTwvc3Bhbj4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBk
b2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWlj
ayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gg
anVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIg
dGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9n
LiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sg
YnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBq
dW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRo
ZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4g
VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBi
cm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVt
cHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUg
bGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitU
aGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJv
d24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBz
IG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxh
enkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhl
IHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3du
IGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBv
dmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6
eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBx
dWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBm
b3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCis8L3ByZT4KKzxib2R5PgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMGYwN2FhODY5M2My
MzJhZWE2MGNiMzc0YmQ3YjM4YTZjODc4NTYzLi5hYTM2NWI5NTFjZWYyZjE3MjE1MDk0NGY0ZjUy
NmQzN2QxNTQ4OWQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEwLTA3LTA3ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERyYWdnaW5nIG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9sbGJhcnMgc2hv
dWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcyNQorICAgICAgICBp
ZnJhbWUgd2l0aCAib3ZlcmZsb3c6YXV0byIgc2hvdWxkIHN1cHBvcnQgYXV0b3Njcm9sbCB3aXRo
IG1vdXNlZHJhZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwOTgxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29uc2lzdHMgb2YgMiBwYXJ0IG9mIHdv
cmsuCisgICAgICAgIAorICAgICAgICBGaXJzdCBwYXJ0IGlzIGFyb3VuZCBSZW5kZXJMYXllcjo6
YXV0b3Njcm9sbCgpLCB3aGljaCBpcworICAgICAgICBvcmlnaWFuYWxseSBkZXNpZ25lZCBmb3Ig
ZXh0ZW5kaW5nIGEgc2VsZWN0aW9uICh3aGljaCB3ZSBjYWxsCisgICAgICAgIEF1dG9zY3JvbGxC
eUNhcmV0KS4gVGhpcyBjaGFuZ2UgZXh0ZW5kZWQgc2Nyb2xsUmVjdFRvVmlzaWJsZSgpIHRvCisg
ICAgICAgIHN1cHBvcnQgYW4gYXV0b3Njcm9sbCB0cmlnZ2VyZWQgYnkgaXRlbS1kcmFnZ2luZyAo
QXV0b3Njcm9sbEJ5UG9pbnRlcikuCisgICAgICAgIAorICAgICAgICBCZWNhdXNlIEF1dG9zY3Jv
bGxCeVBvaW50ZXIgZm9yIHRoZSBvdXRlcm1vc3QgZnJhbWUgaXMgYWxyZWFkeQorICAgICAgICBz
dXBwb3J0ZWQgYnkgQ29jb2EncyBidWlsdC1pbiBhdXRvc2Nyb2xsIG1lY2hhbmlzbSwgd2hhdAor
ICAgICAgICBpbXBsZW1lbnRlZCBoZXJlIGlzIGZvciBpbm5lciBmcmFtZXMgYW5kIGZvciBlbGVt
ZW50cyB3aXRoCisgICAgICAgIG92ZXJmbG93OmF1dG8uIEFuZCB0aGUgb3V0ZXJtb3N0IGZyYW1l
IGlzIGV4cGxpY2l0bHkgc2tpcHBlZC4KKyAgICAgICAgCisgICAgICAgIFNlY29uZCBwYXJ0IGlz
IGFyb3VuZCBEcmFnQ29udHJvbGxlci4gV2UgaW50cm9kdWNlZAorICAgICAgICBEcmFnQXV0b3Nj
cm9sbGVyIHRvIG1ha2UgQXV0b3Njcm9sbEJ5UG9pbnRlciBoYXBwZW4gaW5zaWRlIHRoZQorICAg
ICAgICBEcmFnQ29udHJvbGxlci4gVGhlIGltcGxlbWVudGF0aW9uIGZvbGxvd3MgdGhlIFdlYlZp
ZXcncyBhdXRvc2Nyb2xsCisgICAgICAgIGJlaGF2aW9yLgorICAgICAgICAKKyAgICAgICAgVGVz
dDogZmFzdC9ldmVudHMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OkRyYWdBdXRvc2Nyb2xsZXIpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OmRlYWN0aXZhdGUpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OmxvY2F0aW9uVXBkYXRlZCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0F1dG9zY3JvbGxlcjo6dGltZXJGaXJlZCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0F1dG9zY3JvbGxlcjo6ZmluZExheWVyRm9yKTog
QWRkZWQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmluZEF1
dG9zY3JvbGxSZW5kZXJlcik6IEV4dHJhY3RlZCBmcm9tIGhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50
KCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ludFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmluZmxhdGVY
KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmluZmxhdGVZKToKKyAgICAgICAgKFdlYkNv
cmU6OkludFJlY3Q6OmRlZmxhdGUpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJz
aXZlbHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6c2hyaW5rU2l6ZUZvcik6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6c2hyaW5rUmVjdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmF1dG9zY3JvbGxCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzaG91bGRBdXRvc2Nyb2xsQnlQb2ludGVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6cmVzdHJpY3RlZEJ5TGluZUNsYW1wKTogRXh0cmFjdGVkIGZyb20gYXV0
b3Njcm9sbCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6IFNwbGl0dGVk
IGludG8gMiBvdmVybG9hZGVkIG1ldGhvZHMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjopOiBBZGRlZCBBdXRvc2Nyb2xsVHlwZSBlbnVtLgor
CiAyMDEwLTA3LTA3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgog
CiAgICAgICAgIE5vdCByZXZpZXdlZC4gUm9sbG91dCByNjI2MzMgLSB0ZXN0IGNyYXNoZXMgYWZ0
ZXIgc29tZSBsYXN0LW1pbnV0ZSBtb2RpZmljYXRpb25zLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmU3MDJhYjRmM2Zk
ZTY2OWJiOTk1ZmFjNzQ2YWM0NzdhZWNjYTg0Ni4uMjU0Nzg4N2RhMjE0ZjUyYWU2ZjI5YTdjNmE2
NWI2MzJkOTkwMzg5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yMDAsNyArMjAwLDcgQEAgX19aTjdXZWJDb3JlMTFI
aXN0b3J5SXRlbUMxRXYKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1EMUV2CiBfX1pON1dlYkNv
cmUxMUljb25GZXRjaGVyNmNhbmNlbEV2CiBfX1pON1dlYkNvcmUxMUljb25GZXRjaGVyNmNyZWF0
ZUVQTlNfNUZyYW1lRVBOU18xN0ljb25GZXRjaGVyQ2xpZW50RQotX19aTjdXZWJDb3JlMTFSZW5k
ZXJMYXllcjE5c2Nyb2xsUmVjdFRvVmlzaWJsZUVSS05TXzdJbnRSZWN0RWJSS05TXzE1U2Nyb2xs
QWxpZ25tZW50RVM2XworX19aTjdXZWJDb3JlMTFSZW5kZXJMYXllcjE5c2Nyb2xsUmVjdFRvVmlz
aWJsZUVSS05TXzdJbnRSZWN0RWJSS05TXzE1U2Nyb2xsQWxpZ25tZW50RVM2X2kKIF9fWk43V2Vi
Q29yZTExZ2xvYmFsUG9pbnRFUks4X05TUG9pbnRQOE5TV2luZG93CiBfX1pON1dlYkNvcmUxMXRv
VXNlclNwYWNlRVJLN19OU1JlY3RQOE5TV2luZG93CiBfX1pON1dlYkNvcmUxMkNocm9tZUNsaWVu
dDIwcGFpbnRDdXN0b21TY3JvbGxiYXJFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfOUZsb2F0
UmVjdEVOU18yMFNjcm9sbGJhckNvbnRyb2xTaXplRWpOU18xM1Njcm9sbGJhclBhcnRFYmZmagpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNzE2NzcyYjNiNDhhNTBhNGI1ZWRlZDg2YjdlNTYx
ODM2ODkyMDhkNC4uZDlkNDViZjY2YjUyMGFlMWIyY2JmZTljZmU2MGUzNTMwNDY5YmJhNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC03MCw2ICs3MCwxOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIERyYWdBdXRvc2Nyb2xsZXIgeworcHVibGljOgorICAgIERyYWdBdXRv
c2Nyb2xsZXIoKTsKKyAgICB2b2lkIGRlYWN0aXZhdGUoKTsKKyAgICB2b2lkIGxvY2F0aW9uVXBk
YXRlZChEb2N1bWVudCosIGNvbnN0IEludFBvaW50Jik7CisgICAgdm9pZCB0aW1lckZpcmVkKFRp
bWVyPERyYWdBdXRvc2Nyb2xsZXI+Kik7Citwcml2YXRlOgorICAgIFJlbmRlckxheWVyKiBmaW5k
TGF5ZXJGb3IoRG9jdW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OworCisgICAgVGltZXI8
RHJhZ0F1dG9zY3JvbGxlcj4gbV90aW1lcjsKKyAgICBib29sIG1fYWN0aXZhdGVkOworfTsKKwog
c3RhdGljIFBsYXRmb3JtTW91c2VFdmVudCBjcmVhdGVNb3VzZUV2ZW50KERyYWdEYXRhKiBkcmFn
RGF0YSkKIHsKICAgICBib29sIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXk7CkBA
IC05MCw2ICsxMDMsNyBAQCBEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIoUGFnZSogcGFn
ZSwgRHJhZ0NsaWVudCogY2xpZW50KQogICAgICwgbV9kaWRJbml0aWF0ZURyYWcoZmFsc2UpCiAg
ICAgLCBtX2lzSGFuZGxpbmdEcmFnKGZhbHNlKQogICAgICwgbV9zb3VyY2VEcmFnT3BlcmF0aW9u
KERyYWdPcGVyYXRpb25Ob25lKQorICAgICwgbV9hdXRvc2Nyb2xsZXIobmV3IERyYWdBdXRvc2Ny
b2xsZXIoKSkKIHsKIH0KIApAQCAtMTc2LDYgKzE5MCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6
OmRyYWdFeGl0ZWQoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBjbGlwYm9hcmQtPnNldEFj
Y2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVy
ZSBmb3Igc2VjdXJpdHkKICAgICB9CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudCgwKTsKKyAg
ICBtX2F1dG9zY3JvbGxlci0+ZGVhY3RpdmF0ZSgpOwogfQogCiBEcmFnT3BlcmF0aW9uIERyYWdD
b250cm9sbGVyOjpkcmFnVXBkYXRlZChEcmFnRGF0YSogZHJhZ0RhdGEpCkBAIC0yMzMsNiArMjQ4
LDcgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQo
RHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIEFTU0VSVChkcmFnRGF0YSk7CiAgICAgQVNTRVJUKG1f
cGFnZS0+bWFpbkZyYW1lKCkpOyAvLyBJdCBpcyBub3QgcG9zc2libGUgaW4gTWFjIFdlYktpdCB0
byBoYXZlIGEgUGFnZSB3aXRob3V0IGEgbWFpbkZyYW1lKCkKICAgICBtb3VzZU1vdmVkSW50b0Rv
Y3VtZW50KG1fcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS0+Y2xp
ZW50UG9zaXRpb24oKSkpOworICAgIG1fYXV0b3Njcm9sbGVyLT5sb2NhdGlvblVwZGF0ZWQobV9k
b2N1bWVudFVuZGVyTW91c2UuZ2V0KCksIGRyYWdEYXRhLT5jbGllbnRQb3NpdGlvbigpKTsKIAog
ICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gbV9jbGllbnQtPmFjdGlvbk1hc2tGb3JEcmFn
KGRyYWdEYXRhKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPT0gRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTm9uZSkgewpAQCAtODI5LDYgKzg0NSw2NCBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpwbGFjZURyYWdDYXJldChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCiAgICAgbV9w
YWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPnNldFNlbGVjdGlvbihkcmFnQ2FyZXQpOwogfQog
CitEcmFnQXV0b3Njcm9sbGVyOjpEcmFnQXV0b3Njcm9sbGVyKCkKKyAgICA6IG1fdGltZXIodGhp
cywgJkRyYWdBdXRvc2Nyb2xsZXI6OnRpbWVyRmlyZWQpCisgICAgLCBtX2FjdGl2YXRlZChmYWxz
ZSkKK3sKK30KKwordm9pZCBEcmFnQXV0b3Njcm9sbGVyOjpkZWFjdGl2YXRlKCkKK3sKKyAgICBt
X2FjdGl2YXRlZCA9IGZhbHNlOworICAgIG1fdGltZXIuc3RvcCgpOworfQorCit2b2lkIERyYWdB
dXRvc2Nyb2xsZXI6OmxvY2F0aW9uVXBkYXRlZChEb2N1bWVudCogZG9jdW1lbnRVbmRlck1vdXNl
LCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCit7CisgICAgY29uc3QgZG91YmxlIGF1dG9zY3Jv
bGxEZWxheSA9IDAuNTsgLy8gQXBwcm94aW1hdGVzIENvY29hJ3MgYmVoYXZpb3IKKworICAgIFJl
bmRlckxheWVyKiBsYXllciA9IGZpbmRMYXllckZvcihkb2N1bWVudFVuZGVyTW91c2UsIGxvY2F0
aW9uKTsKKyAgICBpZiAoIWxheWVyKSB7CisgICAgICAgIGRlYWN0aXZhdGUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9hY3RpdmF0ZWQpIHsKKyAgICAgICAgaWYgKCFt
X3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChhdXRv
c2Nyb2xsRGVsYXkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5ZXItPmF1dG9z
Y3JvbGwoQXV0b3Njcm9sbEJ5UG9pbnRlciwgZG9jdW1lbnRVbmRlck1vdXNlLT52aWV3KCktPndp
bmRvd1RvQ29udGVudHMobG9jYXRpb24pKTsKK30KKwordm9pZCBEcmFnQXV0b3Njcm9sbGVyOjp0
aW1lckZpcmVkKFRpbWVyPERyYWdBdXRvc2Nyb2xsZXI+KikKK3sKKyAgICBtX2FjdGl2YXRlZCA9
IHRydWU7Cit9CisKK1JlbmRlckxheWVyKiBEcmFnQXV0b3Njcm9sbGVyOjpmaW5kTGF5ZXJGb3Io
RG9jdW1lbnQqIGRvY3VtZW50VW5kZXJNb3VzZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKSBj
b25zdAoreworICAgIGlmICghZG9jdW1lbnRVbmRlck1vdXNlIHx8ICFkb2N1bWVudFVuZGVyTW91
c2UtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBJbnRQb2ludCBkb2N1bWVudFBv
c2l0aW9uID0gZG9jdW1lbnRVbmRlck1vdXNlLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobG9j
YXRpb24pOworICAgIE5vZGUqIHRhcmdldCA9IGVsZW1lbnRVbmRlck1vdXNlKGRvY3VtZW50VW5k
ZXJNb3VzZSwgZG9jdW1lbnRQb3NpdGlvbik7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IEV2ZW50SGFuZGxlcjo6Zmlu
ZEF1dG9zY3JvbGxSZW5kZXJlcih0YXJnZXQpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAg
IHJldHVybiAwOworCisgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyZXItPmVuY2xvc2lu
Z0xheWVyKCk7CisgICAgQVNTRVJUKGxheWVyKTsKKyAgICBpZiAoIWxheWVyLT5zaG91bGRBdXRv
c2Nyb2xsQnlQb2ludGVyKGRvY3VtZW50UG9zaXRpb24pKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiBsYXllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggNzEyZjlhYjNh
MzM5YzY5YjUzYTQyYjFjN2M2ZTQ5ODJlODBmZGEwMy4uNGYzMjY2NzU5NmM5OTc4YjliYTAxM2I4
MDk4NWFjYjdjMmMwYWExNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmgKKysrIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTMwLDExICszMCwxMyBA
QAogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIENsaXBib2FyZDsKICAgICBjbGFzcyBEb2N1bWVudDsKKyAgICBjbGFzcyBEcmFn
QXV0b3Njcm9sbGVyOwogICAgIGNsYXNzIERyYWdDbGllbnQ7CiAgICAgY2xhc3MgRHJhZ0RhdGE7
CiAgICAgY2xhc3MgRWxlbWVudDsKQEAgLTEyMiw2ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyAvLyBTZXQg
aW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4g
V2ViS2l0CiAgICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICAgICAgS1VSTCBtX2Ry
YWdnaW5nSW1hZ2VVUkw7CisgICAgICAgIE93blB0cjxEcmFnQXV0b3Njcm9sbGVyPiBtX2F1dG9z
Y3JvbGxlcjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGJhNDk4OGQ1Yjhi
Yzk4MWY0NGRkOGY2OGJmODcwODk3ZWRhMTRmNWEuLjlkOTU3NGI1ZjljNDZkZmMxODNiZWRiY2Q0
OTZiNzA5YzMyZGI1N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00OTcsNiArNDk3LDIwIEBA
IHN0YXRpYyBib29sIGNhbkF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBy
ZXR1cm4gcGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBmcmFtZTsKIH0KIAorUmVuZGVyT2Jq
ZWN0KiBFdmVudEhhbmRsZXI6OmZpbmRBdXRvc2Nyb2xsUmVuZGVyZXIoTm9kZSogdGFyZ2V0Tm9k
ZSkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0Tm9kZS0+cmVuZGVyZXIo
KTsKKyAgICB3aGlsZSAocmVuZGVyZXIgJiYgIWNhbkF1dG9zY3JvbGwocmVuZGVyZXIpKSB7Cisg
ICAgICAgIGlmICghcmVuZGVyZXItPnBhcmVudCgpICYmIHJlbmRlcmVyLT5ub2RlKCkgPT0gcmVu
ZGVyZXItPmRvY3VtZW50KCkgJiYgcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgp
KQorICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVt
ZW50KCktPnJlbmRlcmVyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbmRlcmVyID0g
cmVuZGVyZXItPnBhcmVudCgpOworICAgIH0KKworICAgIHJldHVybiByZW5kZXJlcjsKK30KKwor
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkK
IHsKQEAgLTUxNywxNiArNTMxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJh
Z2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICBtX21v
dXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnRBdXRvc2Nyb2xsICYmICFtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsgICAgICAgICAgICAKLSAg
ICAgICAgLy8gRmluZCBhIHJlbmRlcmVyIHRoYXQgY2FuIGF1dG9zY3JvbGwuCi0gICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSB0YXJnZXROb2RlLT5yZW5kZXJlcigpOwotICAgICAgICB3
aGlsZSAocmVuZGVyZXIgJiYgIWNhbkF1dG9zY3JvbGwocmVuZGVyZXIpKSB7Ci0gICAgICAgICAg
ICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+bm9kZSgpID09IHJlbmRlcmVy
LT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKLSAg
ICAgICAgICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1l
bnQoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZW5k
ZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aWYgKHJlbmRlcmVyKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZmlu
ZEF1dG9zY3JvbGxSZW5kZXJlcih0YXJnZXROb2RlKSkgewogICAgICAgICAgICAgbV9hdXRvc2Ny
b2xsSW5Qcm9ncmVzcyA9IHRydWU7CiAgICAgICAgICAgICBoYW5kbGVBdXRvc2Nyb2xsKHJlbmRl
cmVyKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
IGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDRjY2E4OTgzYjhhMWE1ZGM1Y2Yy
MjBjMjUxNTI1ZmYyMzNjZjM1MDIuLmY5OTM0NDY2MzZiNDA3NmYwYTM2MjAxMDIwOWU3OTJlMDBm
NmVlYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgc2hvdWxkRHJhZ0F1dG9Ob2RlKE5vZGUq
LCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OyAvLyAtd2Via2l0LXVzZXItZHJhZyA9PSBhdXRvCisg
ICAgc3RhdGljIFJlbmRlck9iamVjdCogZmluZEF1dG9zY3JvbGxSZW5kZXJlcihOb2RlKik7CiAj
ZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkVHVyblZlcnRpY2FsVGlja3NJbnRvSG9yaXpvbnRhbChj
b25zdCBIaXRUZXN0UmVzdWx0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFJlY3QuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5o
CmluZGV4IGM1OTkwZWY1OGI0Y2I3OTE4ZjMwNjY0YWJiZjg3MjgwZTczNThkN2MuLmQxMGMzMTUz
ZGMwZTVjZmZmM2MyMzdhOTUzMmY4ODFkNTQ5YmZjZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UmVjdC5oCkBAIC0xMzEsMTQgKzEzMSwyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmZsYXRl
WChpbnQgZHgpCiAgICAgewogICAgICAgICBtX2xvY2F0aW9uLnNldFgobV9sb2NhdGlvbi54KCkg
LSBkeCk7Ci0gICAgICAgIG1fc2l6ZS5zZXRXaWR0aChtX3NpemUud2lkdGgoKSArIGR4ICsgZHgp
OworICAgICAgICBpZiAoMCA8IG1fc2l6ZS53aWR0aCgpICsgZHggKyBkeCkKKyAgICAgICAgICAg
IG1fc2l6ZS5zZXRXaWR0aChtX3NpemUud2lkdGgoKSArIGR4ICsgZHgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3NpemUuc2V0V2lkdGgoMCk7CiAgICAgfQorCiAgICAgdm9pZCBpbmZs
YXRlWShpbnQgZHkpCiAgICAgewogICAgICAgICBtX2xvY2F0aW9uLnNldFkobV9sb2NhdGlvbi55
KCkgLSBkeSk7Ci0gICAgICAgIG1fc2l6ZS5zZXRIZWlnaHQobV9zaXplLmhlaWdodCgpICsgZHkg
KyBkeSk7CisgICAgICAgIGlmICgwIDwgbV9zaXplLmhlaWdodCgpICsgZHkgKyBkeSkKKyAgICAg
ICAgICAgIG1fc2l6ZS5zZXRIZWlnaHQobV9zaXplLmhlaWdodCgpICsgZHkgKyBkeSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fc2l6ZS5zZXRIZWlnaHQoMCk7CiAgICAgfQorCiAgICAg
dm9pZCBpbmZsYXRlKGludCBkKSB7IGluZmxhdGVYKGQpOyBpbmZsYXRlWShkKTsgfQorICAgIHZv
aWQgZGVmbGF0ZShpbnQgZCkgeyBpbmZsYXRlKC1kKTsgfQorCiAgICAgdm9pZCBzY2FsZShmbG9h
dCBzKTsKIAogI2lmIFBMQVRGT1JNKFdYKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4
IDA1MTYyZmNlYzRhZDIwYTYzNGNkMDczZWU3NTZkYzczNTQ0ZjA5M2IuLmQ4NDE0OWZmOWIwMTkw
NmVlYmMwZTQwMTExM2VhMmFkZTI0ZTQwNTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
QEAgLTEyNDMsMTEgKzEyNDMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2
ZWx5KGludCB4RGVsdGEsIGludCB5RGVsdGEpCiAgICAgaWYgKCF4RGVsdGEgJiYgIXlEZWx0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCByZXN0cmljdGVkQnlMaW5lQ2xhbXAgPSBmYWxz
ZTsKLSAgICBpZiAocmVuZGVyZXIoKS0+cGFyZW50KCkpCi0gICAgICAgIHJlc3RyaWN0ZWRCeUxp
bmVDbGFtcCA9ICFyZW5kZXJlcigpLT5wYXJlbnQoKS0+c3R5bGUoKS0+bGluZUNsYW1wKCkuaXNO
b25lKCk7Ci0KLSAgICBpZiAocmVuZGVyZXIoKS0+aGFzT3ZlcmZsb3dDbGlwKCkgJiYgIXJlc3Ry
aWN0ZWRCeUxpbmVDbGFtcCkgeworICAgIGlmIChyZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAo
KSAmJiAhcmVzdHJpY3RlZEJ5TGluZUNsYW1wKCkpIHsKICAgICAgICAgaW50IG5ld09mZnNldFgg
PSBzY3JvbGxYT2Zmc2V0KCkgKyB4RGVsdGE7CiAgICAgICAgIGludCBuZXdPZmZzZXRZID0gc2Ny
b2xsWU9mZnNldCgpICsgeURlbHRhOwogICAgICAgICBzY3JvbGxUb09mZnNldChuZXdPZmZzZXRY
LCBuZXdPZmZzZXRZKTsKQEAgLTEzNzQsOSArMTM3MCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNj
cm9sbFRvT2Zmc2V0KGludCB4LCBpbnQgeSwgYm9vbCB1cGRhdGVTY3JvbGxiYXJzLCBib29sIHJl
cGFpCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNv
bnN0IEludFJlY3QmIHJlY3QsIGJvb2wgc2Nyb2xsVG9BbmNob3IsIGNvbnN0IFNjcm9sbEFsaWdu
bWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkKK3ZvaWQgUmVuZGVy
TGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3Jv
bGxUb0FuY2hvciwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFs
aWdubWVudCYgYWxpZ25ZLCBpbnQgc2hyaW5rU2l6ZSkKIHsKLSAgICBSZW5kZXJMYXllciogcGFy
ZW50TGF5ZXIgPSAwOwogICAgIEludFJlY3QgbmV3UmVjdCA9IHJlY3Q7CiAgICAgaW50IHhPZmZz
ZXQgPSAwLCB5T2Zmc2V0ID0gMDsKIApAQCAtMTM4NiwxMyArMTM4MSw5IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3Jv
bGxUb0FuY2hvciwKICAgICBpZiAoZnJhbWVWaWV3KQogICAgICAgICBmcmFtZVZpZXctPnBhdXNl
U2NoZWR1bGVkRXZlbnRzKCk7CiAKLSAgICBib29sIHJlc3RyaWN0ZWRCeUxpbmVDbGFtcCA9IGZh
bHNlOwotICAgIGlmIChyZW5kZXJlcigpLT5wYXJlbnQoKSkgewotICAgICAgICBwYXJlbnRMYXll
ciA9IHJlbmRlcmVyKCktPnBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpOwotICAgICAgICByZXN0
cmljdGVkQnlMaW5lQ2xhbXAgPSAhcmVuZGVyZXIoKS0+cGFyZW50KCktPnN0eWxlKCktPmxpbmVD
bGFtcCgpLmlzTm9uZSgpOwotICAgIH0KKyAgICBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIgPSBw
YXJlbnRFbmNsb3NpbmdMYXllcigpOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPmhhc092ZXJmbG93
Q2xpcCgpICYmICFyZXN0cmljdGVkQnlMaW5lQ2xhbXApIHsKKyAgICBpZiAocmVuZGVyZXIoKS0+
aGFzT3ZlcmZsb3dDbGlwKCkgJiYgIXJlc3RyaWN0ZWRCeUxpbmVDbGFtcCgpKSB7CiAgICAgICAg
IC8vIERvbid0IHNjcm9sbCB0byByZXZlYWwgYW4gb3ZlcmZsb3cgbGF5ZXIgdGhhdCBpcyByZXN0
cmljdGVkIGJ5IHRoZSAtd2Via2l0LWxpbmUtY2xhbXAgcHJvcGVydHkuCiAgICAgICAgIC8vIFRo
aXMgd2lsbCBwcmV2ZW50IHVzIGZyb20gcmV2ZWFsaW5nIHRleHQgaGlkZGVuIGJ5IHRoZSBzbGlk
ZXIgaW4gU2FmYXJpIFJTUy4KICAgICAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsK
QEAgLTE0MDIsNyArMTM5Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2li
bGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwKIAogICAgICAgICBJ
bnRSZWN0IGxheWVyQm91bmRzID0gSW50UmVjdChhYnNQb3MueCgpICsgc2Nyb2xsWE9mZnNldCgp
LCBhYnNQb3MueSgpICsgc2Nyb2xsWU9mZnNldCgpLCBib3gtPmNsaWVudFdpZHRoKCksIGJveC0+
Y2xpZW50SGVpZ2h0KCkpOwogICAgICAgICBJbnRSZWN0IGV4cG9zZVJlY3QgPSBJbnRSZWN0KHJl
Y3QueCgpICsgc2Nyb2xsWE9mZnNldCgpLCByZWN0LnkoKSArIHNjcm9sbFlPZmZzZXQoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICAgICAgSW50UmVjdCByID0gZ2V0UmVjdFRv
RXhwb3NlKGxheWVyQm91bmRzLCBleHBvc2VSZWN0LCBhbGlnblgsIGFsaWduWSk7CisgICAgICAg
IEludFJlY3QgciA9IGdldFJlY3RUb0V4cG9zZShsYXllckJvdW5kcywgZXhwb3NlUmVjdCwgYWxp
Z25YLCBhbGlnblksIHNocmlua1NpemUpOwogICAgICAgICAKICAgICAgICAgeE9mZnNldCA9IHIu
eCgpIC0gYWJzUG9zLngoKTsKICAgICAgICAgeU9mZnNldCA9IHIueSgpIC0gYWJzUG9zLnkoKTsK
QEAgLTE0MjEsOSArMTQxMiw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2li
bGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAoIXBhcmVudExheWVyICYmIHJlbmRlcmVyKCktPmlzQm94KCkgJiYgcmVu
ZGVyQm94KCktPmNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoc2Nyb2xsVG9BbmNob3IpKSB7
CiAgICAgICAgIGlmIChmcmFtZVZpZXcpIHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLT5k
b2N1bWVudCgpICYmIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpICYmIHJl
bmRlcmVyKCktPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpKSB7CisgICAg
ICAgICAgICBpZiAoaGFzT3duZXIoKSkgewogICAgICAgICAgICAgICAgIEludFJlY3Qgdmlld1Jl
Y3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwotICAgICAgICAgICAgICAgIElu
dFJlY3QgciA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgcmVjdCwgYWxpZ25YLCBhbGlnblkp
OworICAgICAgICAgICAgICAgIEludFJlY3QgciA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwg
cmVjdCwgYWxpZ25YLCBhbGlnblksIHNocmlua1NpemUpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHhPZmZzZXQgPSByLngoKTsKICAgICAgICAgICAgICAgICB5T2Zmc2V0ID0g
ci55KCk7CkBAIC0xNDM3LDcgKzE0MjgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0
VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wgc2Nyb2xsVG9BbmNob3IsCiAgICAg
ICAgICAgICAgICAgbmV3UmVjdC5zZXRZKHJlY3QueSgpIC0gZnJhbWVWaWV3LT5zY3JvbGxZKCkg
KyBmcmFtZVZpZXctPnkoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IEludFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlKTsK
LSAgICAgICAgICAgICAgICBJbnRSZWN0IHIgPSBnZXRSZWN0VG9FeHBvc2Uodmlld1JlY3QsIHJl
Y3QsIGFsaWduWCwgYWxpZ25ZKTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHIgPSBnZXRSZWN0
VG9FeHBvc2Uodmlld1JlY3QsIHJlY3QsIGFsaWduWCwgYWxpZ25ZLCBzaHJpbmtTaXplKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnNldFNjcm9sbFBvc2l0
aW9uKHIubG9jYXRpb24oKSk7CiAKQEAgLTE0NTUsMjQgKzE0NDYsMTExIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3Jv
bGxUb0FuY2hvciwKICAgICB9CiAgICAgCiAgICAgaWYgKHBhcmVudExheWVyKQotICAgICAgICBw
YXJlbnRMYXllci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShuZXdSZWN0LCBzY3JvbGxUb0FuY2hvciwg
YWxpZ25YLCBhbGlnblkpOworICAgICAgICBwYXJlbnRMYXllci0+c2Nyb2xsUmVjdFRvVmlzaWJs
ZShuZXdSZWN0LCBzY3JvbGxUb0FuY2hvciwgYWxpZ25YLCBhbGlnblksIHNocmlua1NpemUpOwog
CiAgICAgaWYgKGZyYW1lVmlldykKICAgICAgICAgZnJhbWVWaWV3LT5yZXN1bWVTY2hlZHVsZWRF
dmVudHMoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJMYXllcjo6Z2V0UmVjdFRvRXhwb3NlKGNvbnN0
IEludFJlY3QgJnZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0ICZleHBvc2VSZWN0LCBjb25zdCBT
Y3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpCitz
dGF0aWMgaW50IHNocmlua1NpemVGb3IoQXV0b3Njcm9sbFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEF1dG9zY3JvbGxCeVBvaW50ZXI6CisgICAgICAgIHJldHVy
biAyNTsgLyogYXBwcm94aW1hdGVseSBzYW1lIGFzIFdlYlZpZXcgZG9lcyBmb3Igb3V0ZXJtb3N0
IGZyYW1lICovCisgICAgY2FzZSBBdXRvc2Nyb2xsQnlDYXJldDoKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBJbnRSZWN0IHNocmlua1JlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCwgaW50IHNocmlua1NpemUpCit7CisgICAgSW50UmVjdCByZXN1bHQg
PSByZWN0OworICAgIHJlc3VsdC5kZWZsYXRlKHNocmlua1NpemUpOworICAgIGlmIChyZXN1bHQu
aXNFbXB0eSgpKQorICAgICAgICByZXN1bHQuc2V0U2l6ZShJbnRTaXplKDEsIDEpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitJbnRSZWN0IFJlbmRlckxheWVyOjphdXRvc2Nyb2xsQm91bmRz
KGJvb2wgc2Nyb2xsVG9BbmNob3IpIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT52aWV3KCk7CisgICAgUmVuZGVyTGF5ZXIqIHBhcmVu
dExheWVyID0gcGFyZW50RW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAocmVuZGVyZXIoKS0+aGFz
T3ZlcmZsb3dDbGlwKCkgJiYgIXJlc3RyaWN0ZWRCeUxpbmVDbGFtcCgpKSB7CisgICAgICAgIC8v
IERvbid0IHNjcm9sbCB0byByZXZlYWwgYW4gb3ZlcmZsb3cgbGF5ZXIgdGhhdCBpcyByZXN0cmlj
dGVkIGJ5IHRoZSAtd2Via2l0LWxpbmUtY2xhbXAgcHJvcGVydHkuCisgICAgICAgIC8vIFRoaXMg
d2lsbCBwcmV2ZW50IHVzIGZyb20gcmV2ZWFsaW5nIHRleHQgaGlkZGVuIGJ5IHRoZSBzbGlkZXIg
aW4gU2FmYXJpIFJTUy4KKyAgICAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAg
ICAgICAgQVNTRVJUKGJveCk7CisgICAgICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gYm94LT5sb2Nh
bFRvQWJzb2x1dGUoKTsKKyAgICAgICAgYWJzUG9zLm1vdmUoYm94LT5ib3JkZXJMZWZ0KCksIGJv
eC0+Ym9yZGVyVG9wKCkpOworICAgICAgICByZXR1cm4gSW50UmVjdChhYnNQb3MueCgpLCBhYnNQ
b3MueSgpLCBib3gtPmNsaWVudFdpZHRoKCksIGJveC0+Y2xpZW50SGVpZ2h0KCkpOworICAgIH0g
CisKKyAgICBpZiAoIXBhcmVudExheWVyICYmIHJlbmRlcmVyKCktPmlzQm94KCkgJiYgcmVuZGVy
Qm94KCktPmNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoc2Nyb2xsVG9BbmNob3IpKSB7Cisg
ICAgICAgIGlmIChmcmFtZVZpZXcpIHsKKyAgICAgICAgICAgIGlmIChoYXNPd25lcigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOworICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUpOworICAg
ICAgICB9CisgICAgfQorIAorICAgIHJldHVybiBJbnRSZWN0KCk7Cit9CisKK2Jvb2wgUmVuZGVy
TGF5ZXI6OnNob3VsZEF1dG9zY3JvbGxCeVBvaW50ZXIoY29uc3QgSW50UG9pbnQmIGN1cnJlbnRE
b2N1bWVudFBvc2l0aW9uKQogewotICAgIC8vIERldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgWCBi
ZWhhdmlvci4KKyAgICAvLyBBdXRvc2Nyb2xsQnlQb2ludGVyIGZvciBvdXRlcm1vc3QgZnJhbWUg
aXMgZG9uZSBieSBXZWJWaWV3LCBzbyB3ZSBzaG91bGQgc2tpcCBpdC4KKyAgICBpZiAoaXNPdXRl
cm1vc3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQXV0b3Njcm9sbEJ5UG9p
bnRlciBkb2Vzbid0IGhhcHBlbiB3aGVuIGl0cyBwb3NpdGlvbiBpcyBvdXRzaWRlCisgICAgLy8g
dGhlIGZyYW1lLCBvciBpbnNpZGUgdGhlIHRocmVzaG91bGQgb2YgdGhhdCBmcmFtZS4KKyAgICBJ
bnRSZWN0IG91dGVyQm91bmQgPSBhdXRvc2Nyb2xsQm91bmRzKGZhbHNlKTsKKyAgICBJbnRSZWN0
IGlubmVyQm91bmQgPSBzaHJpbmtSZWN0KG91dGVyQm91bmQsIHNocmlua1NpemVGb3IoQXV0b3Nj
cm9sbEJ5UG9pbnRlcikpOworICAgIGlmICghb3V0ZXJCb3VuZC5jb250YWlucyhjdXJyZW50RG9j
dW1lbnRQb3NpdGlvbikgfHwgaW5uZXJCb3VuZC5jb250YWlucyhjdXJyZW50RG9jdW1lbnRQb3Np
dGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitS
ZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnBhcmVudEVuY2xvc2luZ0xheWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gcmVuZGVyZXIoKS0+cGFyZW50KCkgPyByZW5kZXJlcigpLT5wYXJlbnQoKS0+
ZW5jbG9zaW5nTGF5ZXIoKSA6IDA7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OnJlc3RyaWN0ZWRC
eUxpbmVDbGFtcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlbmRlcmVyKCktPnBhcmVudCgpICYm
ICFyZW5kZXJlcigpLT5wYXJlbnQoKS0+c3R5bGUoKS0+bGluZUNsYW1wKCkuaXNOb25lKCk7Cit9
CisKK2Jvb2wgUmVuZGVyTGF5ZXI6Omhhc093bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKSAmJiByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5vd25lckVsZW1l
bnQoKSAmJiByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIo
KTsKK30KKworYm9vbCBSZW5kZXJMYXllcjo6aXNPdXRlcm1vc3QoKSBjb25zdAoreworICAgIHJl
dHVybiAhcGFyZW50KCkgJiYgIWhhc093bmVyKCk7Cit9CisKK0ludFJlY3QgUmVuZGVyTGF5ZXI6
OmdldFJlY3RUb0V4cG9zZShjb25zdCBJbnRSZWN0ICZ2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVj
dCAmZXhwb3NlUmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9s
bEFsaWdubWVudCYgYWxpZ25ZLCBpbnQgc2hyaW5rU2l6ZSkKK3sKKwogICAgIFNjcm9sbEJlaGF2
aW9yIHNjcm9sbFg7CiAgICAgSW50UmVjdCBleHBvc2VSZWN0WChleHBvc2VSZWN0LngoKSwgdmlz
aWJsZVJlY3QueSgpLCBleHBvc2VSZWN0LndpZHRoKCksIHZpc2libGVSZWN0LmhlaWdodCgpKTsK
LSAgICBpbnQgaW50ZXJzZWN0V2lkdGggPSBpbnRlcnNlY3Rpb24odmlzaWJsZVJlY3QsIGV4cG9z
ZVJlY3RYKS53aWR0aCgpOworCisgICAgLy8gV2UgdXNlIGJvdW5kUmVjdCBmb3IgYXV0b3Njcm9s
bC4KKyAgICAvLyBJZiB0aGUgZXhwb3NlUmVjdCBpcyBjcm9zc2luZyAob3Igb3V0c2lkZSkgdGhl
IGJvdW5kUmVjdCwgd2UgdHJ5IHRvIG1ha2UgdGhlIHJlc3VsdCBzdGF5aW5nIGluc2lkZSB0aGF0
IGJvdW5kLgorICAgIC8vIE5vdGUgdGhhdCBib3VuZFJlY3Qgd2l0aCB6ZXJvIHNocmlua1NpemUg
aGFzIG5vIGVmZmVjdC4KKyAgICBJbnRSZWN0IGJvdW5kUmVjdCA9IHNocmlua1JlY3QodmlzaWJs
ZVJlY3QsIHNocmlua1NpemUpOworCisgICAgaW50IGludGVyc2VjdFdpZHRoID0gaW50ZXJzZWN0
aW9uKGJvdW5kUmVjdCwgZXhwb3NlUmVjdFgpLndpZHRoKCk7CiAgICAgaWYgKGludGVyc2VjdFdp
ZHRoID09IGV4cG9zZVJlY3Qud2lkdGgoKSB8fCBpbnRlcnNlY3RXaWR0aCA+PSBNSU5fSU5URVJT
RUNUX0ZPUl9SRVZFQUwpCiAgICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlz
aWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgdmlzaWJsZSBiZWhhdmlvci4KICAgICAgICAgLy8gSWYg
dGhlIHJlY3RhbmdsZSBpcyBwYXJ0aWFsbHkgdmlzaWJsZSwgYnV0IG92ZXIgYSBjZXJ0YWluIHRo
cmVzaG9sZCwKICAgICAgICAgLy8gdGhlbiB0cmVhdCBpdCBhcyBmdWxseSB2aXNpYmxlIHRvIGF2
b2lkIHVubmVjZXNzYXJ5IGhvcml6b250YWwgc2Nyb2xsaW5nCiAgICAgICAgIHNjcm9sbFggPSBT
Y3JvbGxBbGlnbm1lbnQ6OmdldFZpc2libGVCZWhhdmlvcihhbGlnblgpOwotICAgIGVsc2UgaWYg
KGludGVyc2VjdFdpZHRoID09IHZpc2libGVSZWN0LndpZHRoKCkpIHsKKyAgICBlbHNlIGlmIChp
bnRlcnNlY3RXaWR0aCA9PSBib3VuZFJlY3Qud2lkdGgoKSkgewogICAgICAgICAvLyBJZiB0aGUg
cmVjdCBpcyBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCBkb24ndCBib3RoZXIgdHJ5aW5n
IHRvIGNlbnRlci4gT3RoZXIgYWxpZ25tZW50cyB3aWxsIHdvcmsuCiAgICAgICAgIHNjcm9sbFgg
PSBTY3JvbGxBbGlnbm1lbnQ6OmdldFZpc2libGVCZWhhdmlvcihhbGlnblgpOwogICAgICAgICBp
ZiAoc2Nyb2xsWCA9PSBhbGlnbkNlbnRlcikKQEAgLTE0ODQsNyArMTU2Miw3IEBAIEludFJlY3Qg
UmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBJbnRSZWN0ICZ2aXNpYmxlUmVjdCwg
Y29uc3QgSW50UmVjdCAmCiAgICAgICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OmdldEhp
ZGRlbkJlaGF2aW9yKGFsaWduWCk7CiAgICAgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIGFsaWduIHRv
IHRoZSBjbG9zZXN0IGVkZ2UsIGFuZCB0aGUgZXhwb3NlUmVjdCBpcyBmdXJ0aGVyIHJpZ2h0CiAg
ICAgLy8gdGhhbiB0aGUgdmlzaWJsZVJlY3QsIGFuZCBub3QgYmlnZ2VyIHRoYW4gdGhlIHZpc2li
bGUgYXJlYSwgdGhlbiBhbGlnbiB3aXRoIHRoZSByaWdodC4KLSAgICBpZiAoc2Nyb2xsWCA9PSBh
bGlnblRvQ2xvc2VzdEVkZ2UgJiYgZXhwb3NlUmVjdC5yaWdodCgpID4gdmlzaWJsZVJlY3Qucmln
aHQoKSAmJiBleHBvc2VSZWN0LndpZHRoKCkgPCB2aXNpYmxlUmVjdC53aWR0aCgpKQorICAgIGlm
IChzY3JvbGxYID09IGFsaWduVG9DbG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0LnJpZ2h0KCkgPiBi
b3VuZFJlY3QucmlnaHQoKSAmJiBleHBvc2VSZWN0LndpZHRoKCkgPCBib3VuZFJlY3Qud2lkdGgo
KSkKICAgICAgICAgc2Nyb2xsWCA9IGFsaWduUmlnaHQ7CiAKICAgICAvLyBHaXZlbiB0aGUgWCBi
ZWhhdmlvciwgY29tcHV0ZSB0aGUgWCBjb29yZGluYXRlLgpAQCAtMTQ5MiwyMCArMTU3MCwyMCBA
QCBJbnRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCAmdmlz
aWJsZVJlY3QsIGNvbnN0IEludFJlY3QgJgogICAgIGlmIChzY3JvbGxYID09IG5vU2Nyb2xsKSAK
ICAgICAgICAgeCA9IHZpc2libGVSZWN0LngoKTsKICAgICBlbHNlIGlmIChzY3JvbGxYID09IGFs
aWduUmlnaHQpCi0gICAgICAgIHggPSBleHBvc2VSZWN0LnJpZ2h0KCkgLSB2aXNpYmxlUmVjdC53
aWR0aCgpOworICAgICAgICB4ID0gdmlzaWJsZVJlY3QueCgpICsgKGV4cG9zZVJlY3QucmlnaHQo
KSAtIGJvdW5kUmVjdC5yaWdodCgpKTsKICAgICBlbHNlIGlmIChzY3JvbGxYID09IGFsaWduQ2Vu
dGVyKQogICAgICAgICB4ID0gZXhwb3NlUmVjdC54KCkgKyAoZXhwb3NlUmVjdC53aWR0aCgpIC0g
dmlzaWJsZVJlY3Qud2lkdGgoKSkgLyAyOwogICAgIGVsc2UKLSAgICAgICAgeCA9IGV4cG9zZVJl
Y3QueCgpOworICAgICAgICB4ID0gdmlzaWJsZVJlY3QueCgpIC0gKGJvdW5kUmVjdC54KCkgLSBl
eHBvc2VSZWN0LngoKSk7CiAKICAgICAvLyBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIFkgYmVo
YXZpb3IuCiAgICAgU2Nyb2xsQmVoYXZpb3Igc2Nyb2xsWTsKICAgICBJbnRSZWN0IGV4cG9zZVJl
Y3RZKHZpc2libGVSZWN0LngoKSwgZXhwb3NlUmVjdC55KCksIHZpc2libGVSZWN0LndpZHRoKCks
IGV4cG9zZVJlY3QuaGVpZ2h0KCkpOwotICAgIGludCBpbnRlcnNlY3RIZWlnaHQgPSBpbnRlcnNl
Y3Rpb24odmlzaWJsZVJlY3QsIGV4cG9zZVJlY3RZKS5oZWlnaHQoKTsKKyAgICBpbnQgaW50ZXJz
ZWN0SGVpZ2h0ID0gaW50ZXJzZWN0aW9uKGJvdW5kUmVjdCwgZXhwb3NlUmVjdFkpLmhlaWdodCgp
OwogICAgIGlmIChpbnRlcnNlY3RIZWlnaHQgPT0gZXhwb3NlUmVjdC5oZWlnaHQoKSkKICAgICAg
ICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBpcyBmdWxseSB2aXNpYmxlLCB1c2UgdGhlIHNwZWNpZmll
ZCB2aXNpYmxlIGJlaGF2aW9yLgogICAgICAgICBzY3JvbGxZID0gU2Nyb2xsQWxpZ25tZW50Ojpn
ZXRWaXNpYmxlQmVoYXZpb3IoYWxpZ25ZKTsKLSAgICBlbHNlIGlmIChpbnRlcnNlY3RIZWlnaHQg
PT0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkpIHsKKyAgICBlbHNlIGlmIChpbnRlcnNlY3RIZWlnaHQg
PT0gYm91bmRSZWN0LmhlaWdodCgpKSB7CiAgICAgICAgIC8vIElmIHRoZSByZWN0IGlzIGJpZ2dl
ciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIGRvbid0IGJvdGhlciB0cnlpbmcgdG8gY2VudGVyLiBP
dGhlciBhbGlnbm1lbnRzIHdpbGwgd29yay4KICAgICAgICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdu
bWVudDo6Z2V0VmlzaWJsZUJlaGF2aW9yKGFsaWduWSk7CiAgICAgICAgIGlmIChzY3JvbGxZID09
IGFsaWduQ2VudGVyKQpAQCAtMTUxNyw3ICsxNTk1LDcgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6
Z2V0UmVjdFRvRXhwb3NlKGNvbnN0IEludFJlY3QgJnZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0
ICYKICAgICAgICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6Z2V0SGlkZGVuQmVoYXZpb3Io
YWxpZ25ZKTsKICAgICAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3Qg
ZWRnZSwgYW5kIHRoZSBleHBvc2VSZWN0IGlzIGZ1cnRoZXIgZG93bgogICAgIC8vIHRoYW4gdGhl
IHZpc2libGVSZWN0LCBhbmQgbm90IGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4g
YWxpZ24gd2l0aCB0aGUgYm90dG9tLgotICAgIGlmIChzY3JvbGxZID09IGFsaWduVG9DbG9zZXN0
RWRnZSAmJiBleHBvc2VSZWN0LmJvdHRvbSgpID4gdmlzaWJsZVJlY3QuYm90dG9tKCkgJiYgZXhw
b3NlUmVjdC5oZWlnaHQoKSA8IHZpc2libGVSZWN0LmhlaWdodCgpKQorICAgIGlmIChzY3JvbGxZ
ID09IGFsaWduVG9DbG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0LmJvdHRvbSgpID4gYm91bmRSZWN0
LmJvdHRvbSgpICYmIGV4cG9zZVJlY3QuaGVpZ2h0KCkgPCBib3VuZFJlY3QuaGVpZ2h0KCkpCiAg
ICAgICAgIHNjcm9sbFkgPSBhbGlnbkJvdHRvbTsKIAogICAgIC8vIEdpdmVuIHRoZSBZIGJlaGF2
aW9yLCBjb21wdXRlIHRoZSBZIGNvb3JkaW5hdGUuCkBAIC0xNTI1LDExICsxNjAzLDExIEBAIElu
dFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBJbnRSZWN0ICZ2aXNpYmxl
UmVjdCwgY29uc3QgSW50UmVjdCAmCiAgICAgaWYgKHNjcm9sbFkgPT0gbm9TY3JvbGwpIAogICAg
ICAgICB5ID0gdmlzaWJsZVJlY3QueSgpOwogICAgIGVsc2UgaWYgKHNjcm9sbFkgPT0gYWxpZ25C
b3R0b20pCi0gICAgICAgIHkgPSBleHBvc2VSZWN0LmJvdHRvbSgpIC0gdmlzaWJsZVJlY3QuaGVp
Z2h0KCk7CisgICAgICAgIHkgPSB2aXNpYmxlUmVjdC55KCkgKyAoZXhwb3NlUmVjdC5ib3R0b20o
KSAtIGJvdW5kUmVjdC5ib3R0b20oKSk7CiAgICAgZWxzZSBpZiAoc2Nyb2xsWSA9PSBhbGlnbkNl
bnRlcikKICAgICAgICAgeSA9IGV4cG9zZVJlY3QueSgpICsgKGV4cG9zZVJlY3QuaGVpZ2h0KCkg
LSB2aXNpYmxlUmVjdC5oZWlnaHQoKSkgLyAyOwogICAgIGVsc2UKLSAgICAgICAgeSA9IGV4cG9z
ZVJlY3QueSgpOworICAgICAgICB5ID0gdmlzaWJsZVJlY3QueSgpIC0gKGJvdW5kUmVjdC55KCkg
LSBleHBvc2VSZWN0LnkoKSk7CiAKICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludCh4LCB5KSwg
dmlzaWJsZVJlY3Quc2l6ZSgpKTsKIH0KQEAgLTE1NDksNyArMTYyNywxMyBAQCB2b2lkIFJlbmRl
ckxheWVyOjphdXRvc2Nyb2xsKCkKICNlbmRpZgogCiAgICAgSW50UG9pbnQgY3VycmVudERvY3Vt
ZW50UG9zaXRpb24gPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMoZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpKTsKLSAgICBzY3JvbGxSZWN0VG9WaXNpYmxl
KEludFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIEludFNpemUoMSwgMSkpLCBmYWxzZSwg
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduVG9FZGdlSWZOZWVkZWQpOworICAgIGF1dG9zY3JvbGwoQXV0b3Njcm9sbEJ5Q2FyZXQsIGN1
cnJlbnREb2N1bWVudFBvc2l0aW9uKTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9s
bChBdXRvc2Nyb2xsVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgY3VycmVudERvY3VtZW50UG9z
aXRpb24pCit7CisgICAgQVNTRVJUKHR5cGUgIT0gQXV0b3Njcm9sbEJ5UG9pbnRlciB8fCBzaG91
bGRBdXRvc2Nyb2xsQnlQb2ludGVyKGN1cnJlbnREb2N1bWVudFBvc2l0aW9uKSk7CisgICAgc2Ny
b2xsUmVjdFRvVmlzaWJsZShJbnRSZWN0KGN1cnJlbnREb2N1bWVudFBvc2l0aW9uLCBJbnRTaXpl
KDEsIDEpKSwgZmFsc2UsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBzaHJpbmtTaXplRm9yKHR5cGUpKTsK
IH0KIAogdm9pZCBSZW5kZXJMYXllcjo6cmVzaXplKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0LCBjb25zdCBJbnRTaXplJiBvbGRPZmZzZXQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRl
eCA5NTg3NjUwYjE1MDQ4OGI5NWIxZGE0ZTU2MTA5MWMxZDg1YjhhZjQ5Li43ZDk1YTQ5NzZhYWEw
NDU2MWZhYzc4NzgxYTE4MTJjN2E5NGEyODRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAg
LTcyLDYgKzcyLDggQEAgY2xhc3MgUmVuZGVyTGF5ZXJCYWNraW5nOwogY2xhc3MgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOwogI2VuZGlmCiAKK2VudW0gQXV0b3Njcm9sbFR5cGUgeyBBdXRvc2Nyb2xs
Tm9uZSwgQXV0b3Njcm9sbEJ5Q2FyZXQsIEF1dG9zY3JvbGxCeVBvaW50ZXIgfTsKKwogY2xhc3Mg
Q2xpcFJlY3RzIHsKIHB1YmxpYzoKICAgICBDbGlwUmVjdHMoKQpAQCAtMjQ4LDkgKzI1MCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0KGludCB4LCBpbnQgeSwgYm9vbCB1cGRh
dGVTY3JvbGxiYXJzID0gdHJ1ZSwgYm9vbCByZXBhaW50ID0gdHJ1ZSk7CiAgICAgdm9pZCBzY3Jv
bGxUb1hPZmZzZXQoaW50IHgpIHsgc2Nyb2xsVG9PZmZzZXQoeCwgbV9zY3JvbGxZKTsgfQogICAg
IHZvaWQgc2Nyb2xsVG9ZT2Zmc2V0KGludCB5KSB7IHNjcm9sbFRvT2Zmc2V0KG1fc2Nyb2xsWCAr
IG1fc2Nyb2xsT3JpZ2luWCwgeSk7IH0KLSAgICB2b2lkIHNjcm9sbFJlY3RUb1Zpc2libGUoY29u
c3QgSW50UmVjdCYsIGJvb2wgc2Nyb2xsVG9BbmNob3IgPSBmYWxzZSwgY29uc3QgU2Nyb2xsQWxp
Z25tZW50JiBhbGlnblggPSBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIGNv
bnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRl
cklmTmVlZGVkKTsKKyAgICB2b2lkIHNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYs
IGJvb2wgc2Nyb2xsVG9BbmNob3IgPSBmYWxzZSwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGln
blggPSBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIGNvbnN0IFNjcm9sbEFs
aWdubWVudCYgYWxpZ25ZID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBp
bnQgc2hyaW5rU2l6ZSA9IDApOwogCi0gICAgSW50UmVjdCBnZXRSZWN0VG9FeHBvc2UoY29uc3Qg
SW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGV4cG9zZVJlY3QsIGNvbnN0IFNj
cm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSk7Cisg
ICAgSW50UmVjdCBnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNv
bnN0IEludFJlY3QmIGV4cG9zZVJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBj
b25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSwgaW50IHNocmlua1NpemUpOwogCiAgICAgdm9p
ZCBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wpOwogICAgIHZvaWQgc2V0SGFzVmVydGlj
YWxTY3JvbGxiYXIoYm9vbCk7CkBAIC0yNzgsNiArMjgwLDggQEAgcHVibGljOgogCiAgICAgYm9v
bCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlw
bGllciA9IDEuMGYpOwogICAgIHZvaWQgYXV0b3Njcm9sbCgpOworICAgIHZvaWQgYXV0b3Njcm9s
bChBdXRvc2Nyb2xsVHlwZSwgY29uc3QgSW50UG9pbnQmKTsKKyAgICBib29sIHNob3VsZEF1dG9z
Y3JvbGxCeVBvaW50ZXIoY29uc3QgSW50UG9pbnQmKTsKIAogICAgIHZvaWQgcmVzaXplKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEludFNpemUmKTsKICAgICBib29sIGluUmVzaXpl
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5SZXNpemVNb2RlOyB9CkBAIC01NzYsNiArNTgwLDEx
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRNdXN0T3ZlcmxhcENvbXBvc2l0ZWRMYXllcnMoYm9v
bCBiKSB7IG1fbXVzdE92ZXJsYXBDb21wb3NpdGVkTGF5ZXJzID0gYjsgfQogI2VuZGlmCiAKKyAg
ICBSZW5kZXJMYXllciogcGFyZW50RW5jbG9zaW5nTGF5ZXIoKSBjb25zdDsKKyAgICBib29sIHJl
c3RyaWN0ZWRCeUxpbmVDbGFtcCgpIGNvbnN0OworICAgIGJvb2wgaGFzT3duZXIoKSBjb25zdDsK
KyAgICBib29sIGlzT3V0ZXJtb3N0KCkgY29uc3Q7CisgICAgSW50UmVjdCBhdXRvc2Nyb2xsQm91
bmRzKGJvb2wgc2Nyb2xsVG9BbmNob3IpIGNvbnN0OwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgUmVuZGVyTGF5ZXJCYWNraW5nOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckNvbXBv
c2l0b3I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66868</attachid>
            <date>2010-09-08 03:50:25 -0700</date>
            <delta_ts>2010-10-25 01:15:13 -0700</delta_ts>
            <desc>sync to latest</desc>
            <filename>bug-39725-20100908195023.patch</filename>
            <type>text/plain</type>
            <size>39509</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlN2QxOWEwOThhZjc2NjQyOGEzZjkxNTk4ZGEzNWU5N2MwZmFhYjVlLi41YWJmNWE2
YTM1N2JkYzFkNmFjYTMwY2RkNjdiODFhOTQ2ZjcwZjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDctMDcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZ2dpbmcgb3ZlciBh
biBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4g
ZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk3MjUKKyAgICAgICAgaWZyYW1lIGFuZCBzY3JvbGxiYXIgd2l0aCAib3Zl
cmZsb3c6YXV0byIgc2hvdWxkIHN1cHBvcnQgYXV0b3Njcm9sbCB3aXRoIG1vdXNlZHJhZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5ODEKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS1leHBl
Y3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWNsaWNr
LWluLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdXRv
c2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvcmVzb3VyY2VzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0wOS0wOCAgWm9sdGFuIEhlcmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLXBvaW50ZXIt
ZWxlbWVudC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNDg2Y2NiNDgzYTY2MTYw
ZThiY2I0YzA1NGFlNzBhNjQ1ZTViNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWNmOGZjOTljNzRlNjA4NWIzOWNiNjQ0ZDE4ZmQ0YTFjNTg3NDU5MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1l
bGVtZW50LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTkyIEBACis8IURPQ1RZUEUgaHRtbCBQVUJM
SUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgorCSJodHRwOi8vd3d3
LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+ICogeyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4
OyB9IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICB2YXIgZG9uZUNvdW50ID0g
MDsKKyAgICAgICAKKyAgICAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgIHsKKyAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAnXG4nKSk7CisgICAgICAgfQorCisgICAgICAgZnVuY3Rp
b24gdGVzdCgpCisgICAgICAgeworICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3RTY3JvbGxEaXYsIDApOworICAgICAgICAg
ICB9CisgICAgICAgfQorCisgICAgICAgZnVuY3Rpb24gcmVzZXRTY3JvbGwoZWxlbWVudCkKKyAg
ICAgICB7CisgICAgICAgICAgIHZhciBvbGQgPSBlbGVtZW50LnN0eWxlLmRpc3BsYXk7CisgICAg
ICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgICAgZWxlbWVu
dC5vZmZzZXRMZWZ0OyAvLyBGb3JjZSByZWxheW91dAorICAgICAgICAgICBlbGVtZW50LnN0eWxl
LmRpc3BsYXkgPSBvbGQ7CisgICAgICAgICAgIGVsZW1lbnQub2Zmc2V0TGVmdDsgLy8gRm9yY2Ug
cmVsYXlvdXQKKyAgICAgICAgICAgaWYgKDAgIT0gZWxlbWVudC5zY3JvbGxMZWZ0KQorICAgICAg
ICAgICAgICAgbG9nKCJGQUlMOiBzY3JvbGwgc3RhdGUgc2hvdWxkIGJlIGNsZWFyZWQiKTsKKyAg
ICAgICB9CisKKyAgICAgICBmdW5jdGlvbiByZXNldFNjcm9sbHMoKQorICAgICAgIHsKKyAgICAg
ICAgICAgcmVzZXRTY3JvbGwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbGFibGVEaXYi
KSk7CisgICAgICAgICAgIHJlc2V0U2Nyb2xsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3Jv
bGxhYmxlSUZyYW1lIikuY29udGVudERvY3VtZW50LmJvZHkpOworICAgICAgIH0KKworICAgICAg
IGZ1bmN0aW9uIHdhaXRVbnRpbChjcml0ZXJpYSkKKyAgICAgICB7CisgICAgICAgICAgIGlmIChj
cml0ZXJpYS5zYXRpc2ZpZWQoKSkgeworICAgICAgICAgICAgICBkb25lQ291bnQrKzsKKyAgICAg
ICAgICAgICAgY3JpdGVyaWEuZG9uZSgpOworICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICBjcml0ZXJpYS5zdGVwKCk7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHdhaXRVbnRpbChjcml0ZXJpYSk7IH0sIDApOworICAgICAgICAgICB9CisgICAgICAgfQor
CisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxkaXY+LCB1c2luZyA8c3Bhbj4g
aW5zaWRlIHRoYXQgPGRpdj4uCisgICAgICAgZnVuY3Rpb24gdGVzdFNjcm9sbERpdigpCisgICAg
ICAgeworICAgICAgICAgICByZXNldFNjcm9sbHMoKTsKKyAgICAgICAgICAgdmFyIHNjcm9sbGFi
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsYWJsZURpdiIpOworICAgICAgICAg
ICB2YXIgZHJhZ2dhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZUZvckRp
diIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBkcmFnZ2FibGUuY2xpZW50TGVmdCArIDU7
CisgICAgICAgICAgIHZhciBzdGFydFkgPSBkcmFnZ2FibGUuY2xpZW50VG9wICsgNTsKKyAgICAg
ICAgICAgdmFyIGJvcmRlclggPSBzY3JvbGxhYmxlLmNsaWVudExlZnQgKyBzY3JvbGxhYmxlLmNs
aWVudFdpZHRoIC0gMTU7CisgICAgICAgICAgIHZhciBib3JkZXJZID0gc2Nyb2xsYWJsZS5jbGll
bnRUb3AgKyAxMDsKKyAgICAgICAgICAgdmFyIGhhc1Njcm9sbCA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gMCA8IHNjcm9sbGFibGUuc2Nyb2xsTGVmdDsgfTsKKworICAgICAgICAgICBpZiAoaGFzU2Ny
b2xsKCkpCisgICAgICAgICAgICAgICBsb2coIkZBSUw6IHByZWNvbmRpdGlvbiBmb3IgdGVzdFNj
cm9sbERpdiBmYWlsZWQiKTsKKworICAgICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZh
bHNlOworICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7
CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhib3JkZXJYLCBib3JkZXJZKTsKKworICAgICAgICAgICB3YWl0VW50
aWwoeworICAgICAgICAgICAgICAgc2F0aXNmaWVkOiBoYXNTY3JvbGwsCisgICAgICAgICAgICAg
ICBzdGVwOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwgYm9y
ZGVyWSk7IH0sCisgICAgICAgICAgICAgICBkb25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOyB0ZXN0U2Nyb2xsSWZyYW1lKCk7IH0KKyAgICAgICAgICAgfSk7CisgICAgICAg
fQorCisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxpZnJhbWU+LCB1c2luZyA8
c3Bhbj4gaW5zaWRlIHRoZSBkb2N1bWVudCBvZiBzY3JvbGxpbmcgPGlmcmFtZT4uCisgICAgICAg
ZnVuY3Rpb24gdGVzdFNjcm9sbElmcmFtZSgpCisgICAgICAgeworICAgICAgICAgICByZXNldFNj
cm9sbHMoKTsKKyAgICAgICAgICAgdmFyIHNjcm9sbGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic2Nyb2xsYWJsZUlGcmFtZSIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlID0gc2Ny
b2xsYWJsZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZUZvcklGcmFt
ZSIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBzY3JvbGxhYmxlLm9mZnNldExlZnQgKyBk
cmFnZ2FibGUub2Zmc2V0TGVmdCArIDU7CisgICAgICAgICAgIHZhciBzdGFydFkgPSBzY3JvbGxh
YmxlLm9mZnNldFRvcCArIGRyYWdnYWJsZS5vZmZzZXRUb3AgKyA1OworICAgICAgICAgICB2YXIg
Ym9yZGVyWCA9IHNjcm9sbGFibGUub2Zmc2V0TGVmdCArIHNjcm9sbGFibGUuY2xpZW50V2lkdGgg
LSAxNTsKKyAgICAgICAgICAgdmFyIGJvcmRlclkgPSBzY3JvbGxhYmxlLm9mZnNldFRvcCArIDEw
OworICAgICAgICAgICB2YXIgaGFzU2Nyb2xsID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIDwgc2Ny
b2xsYWJsZS5jb250ZW50RG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OyB9OworCisgICAgICAgICAg
IGlmIChoYXNTY3JvbGwoKSkKKyAgICAgICAgICAgICAgIGxvZygiRkFJTDogcHJlY29uZGl0aW9u
IGZvciB0ZXN0U2Nyb2xsSWZyYW1lIGZhaWxlZCIpOworCisgICAgICAgICAgIGV2ZW50U2VuZGVy
LmRyYWdNb2RlID0gZmFsc2U7CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGJvcmRlclgsIGJvcmRlclkpOworCisgICAg
ICAgICAgIHdhaXRVbnRpbCh7CisgICAgICAgICAgICAgICBzYXRpc2ZpZWQ6IGhhc1Njcm9sbCwK
KyAgICAgICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKCkgeyBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhib3JkZXJYLCBib3JkZXJZKTsgfSwKKyAgICAgICAgICAgICAgIC8vZG9uZTogZnVuY3Rpb24o
KSB7IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsgZG9uZSgpOyB9CisgICAgICAgICAgICAgICBkb25l
OiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VVcCgpOyB0ZXN0U2Nyb2xsRGl2VXNpbmdE
cmFnZ2FibGVGcm9tSUZyYW1lKCk7IH0KKyAgICAgICAgICAgfSk7CisgICAgICAgfQorCisgICAg
ICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxkaXY+LCB1c2luZyA8c3Bhbj4gZnJvbSBh
IGZvcmVpZ24gPGlmcmFtZT4uCisgICAgICAgZnVuY3Rpb24gdGVzdFNjcm9sbERpdlVzaW5nRHJh
Z2dhYmxlRnJvbUlGcmFtZSgpCisgICAgICAgeworICAgICAgICAgICByZXNldFNjcm9sbHMoKTsK
KyAgICAgICAgICAgdmFyIHNjcm9sbGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Ny
b2xsYWJsZURpdiIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlUGFyZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNjcm9sbGFibGVJRnJhbWUiKTsKKyAgICAgICAgICAgdmFyIGRyYWdn
YWJsZSA9IGRyYWdnYWJsZVBhcmVudC5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRy
YWdnYWJsZUZvcklGcmFtZSIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBkcmFnZ2FibGVQ
YXJlbnQub2Zmc2V0TGVmdCArIGRyYWdnYWJsZS5vZmZzZXRMZWZ0ICsgNTsKKyAgICAgICAgICAg
dmFyIHN0YXJ0WSA9IGRyYWdnYWJsZVBhcmVudC5vZmZzZXRUb3AgKyBkcmFnZ2FibGUub2Zmc2V0
VG9wICsgNTsKKyAgICAgICAgICAgdmFyIGJvcmRlclggPSBzY3JvbGxhYmxlLmNsaWVudExlZnQg
KyBzY3JvbGxhYmxlLmNsaWVudFdpZHRoIC0gMTU7CisgICAgICAgICAgIHZhciBib3JkZXJZID0g
c2Nyb2xsYWJsZS5jbGllbnRUb3AgKyAxMDsKKyAgICAgICAgICAgdmFyIGhhc1Njcm9sbCA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gMCA8IHNjcm9sbGFibGUuc2Nyb2xsTGVmdDsgfTsKKworICAgICAg
ICAgICBpZiAoaGFzU2Nyb2xsKCkpCisgICAgICAgICAgICAgICBsb2coIkZBSUw6IHByZWNvbmRp
dGlvbiBmb3IgdGVzdFNjcm9sbERpdlVzaW5nRHJhZ2dhYmxlRnJvbUlGcmFtZSBmYWlsZWQiKTsK
KworICAgICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhi
b3JkZXJYLCBib3JkZXJZKTsKKworICAgICAgICAgICB3YWl0VW50aWwoeworICAgICAgICAgICAg
ICAgc2F0aXNmaWVkOiBoYXNTY3JvbGwsCisgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlvbigp
IHsgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwgYm9yZGVyWSk7IH0sCisgICAgICAg
ICAgICAgICBkb25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VVcCgpOyB0ZXN0U2Ny
b2xsSUZyYW1lVXNpbmdEcmFnZ2FibGVGcm9tRGl2KCk7IH0KKyAgICAgICAgICAgfSk7CisgICAg
ICAgfQorCisgICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxpZnJhbWUuPiwgdXNp
bmcgPHNwYW4+IGZyb20gYSBmb3JlaWduIDxkaXY+LgorICAgICAgIGZ1bmN0aW9uIHRlc3RTY3Jv
bGxJRnJhbWVVc2luZ0RyYWdnYWJsZUZyb21EaXYoKQorICAgICAgIHsKKyAgICAgICAgICAgcmVz
ZXRTY3JvbGxzKCk7CisgICAgICAgICAgIHZhciBzY3JvbGxhYmxlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNjcm9sbGFibGVJRnJhbWUiKTsKKyAgICAgICAgICAgdmFyIGRyYWdnYWJsZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnZ2FibGVGb3JEaXYiKTsKKworICAgICAgICAg
ICB2YXIgc3RhcnRYID0gZHJhZ2dhYmxlLmNsaWVudExlZnQgKyA1OworICAgICAgICAgICB2YXIg
c3RhcnRZID0gZHJhZ2dhYmxlLmNsaWVudFRvcCArIDU7CisgICAgICAgICAgIHZhciBib3JkZXJY
ID0gc2Nyb2xsYWJsZS5vZmZzZXRMZWZ0ICsgc2Nyb2xsYWJsZS5jbGllbnRXaWR0aCAtIDE1Owor
ICAgICAgICAgICB2YXIgYm9yZGVyWSA9IHNjcm9sbGFibGUub2Zmc2V0VG9wICsgMTA7CisgICAg
ICAgICAgIHZhciBoYXNTY3JvbGwgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDAgPCBzY3JvbGxhYmxl
LmNvbnRlbnREb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7IH07CisKKyAgICAgICAgICAgaWYgKGhh
c1Njcm9sbCgpKQorICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBwcmVjb25kaXRpb24gZm9yIHRl
c3RTY3JvbGxJRnJhbWVVc2luZ0RyYWdnYWJsZUZyb21EaXYgZmFpbGVkIik7CisKKyAgICAgICAg
ICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwgYm9y
ZGVyWSk7CisKKyAgICAgICAgICAgd2FpdFVudGlsKHsKKyAgICAgICAgICAgICAgIHNhdGlzZmll
ZDogaGFzU2Nyb2xsLAorICAgICAgICAgICAgICAgc3RlcDogZnVuY3Rpb24oKSB7IGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGJvcmRlclgsIGJvcmRlclkpOyB9LAorICAgICAgICAgICAgICAgZG9u
ZTogZnVuY3Rpb24oKSB7IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsgZG9uZSgpOyB9CisgICAgICAg
ICAgIH0pOworICAgICAgIH0KKworICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAgIHsKKyAg
ICAgICAgICAgaWYgKGRvbmVDb3VudCAhPSA0KQorICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBt
aXNzaW5nIHRlc3QgY2FzZXMiKTsKKyAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNjcm9sbGFibGVEaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICBsb2co
IlBBU1MiKTsKKyAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+CisgICA8cHJlIGlkPSJzY3JvbGxhYmxlRGl2IiBzdHlsZT0iaGVpZ2h0OiAxMDBw
eDsgd2lkdGg6IDEwMHB4OyBvdmVyZmxvdzogYXV0bzsiPgorPHNwYW4gZHJhZ2dhYmxlPSJ0cnVl
IiBpZD0iZHJhZ2dhYmxlRm9yRGl2Ij5kcmFnbWU8L3NwYW4+CitUaGUgcXVpY2sgYnJvd24gZm94
IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIg
dGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9n
LiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNr
IGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBq
dW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRo
ZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4K
K1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBi
cm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVt
cHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUg
bGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBU
aGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJv
d24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBz
IG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBs
YXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhl
IHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3du
IGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMg
b3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6
eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBx
dWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24g
Zm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92
ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkg
ZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorICAgPC9w
cmU+CisgICA8aWZyYW1lIGlkPSJzY3JvbGxhYmxlSUZyYW1lIiBzcmM9InJlc291cmNlcy9hdXRv
c2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMTAwcHg7
IHdpZHRoOiAxMDBweDsgb3ZlcmZsb3c6IGF1dG87Ij48L2lmcmFtZT4KKyAgIDxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvYXV0b3Njcm9sbC1wb2lu
dGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhZWEwOWU0M2ZmOWJjOTg0ZGZh
NTEwOWIwZWM2OTYyYzYzYjA4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3Jlc291cmNlcy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbApA
QCAtMCwwICsxLDE1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICA8L2hlYWQ+Cis8Ym9keT4K
KzxwcmU+Cis8c3BhbiBkcmFnZ2FibGU9InRydWUiIGlkPSJkcmFnZ2FibGVGb3JJRnJhbWUiPmRy
YWdtZTwvc3Bhbj4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cu
IFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBi
cm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVt
cHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhl
IGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBU
aGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJv
d24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1w
cyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBs
YXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhl
IHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93
biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMg
b3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6
eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUg
cXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24g
Zm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92
ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkg
ZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1
aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZv
eCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVy
IHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBk
b2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWlj
ayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gg
anVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCis8L3ByZT4KKzxib2R5PgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMzY4MjQ2OWJiNDY4NzQw
ZTBjNjM1NzY5OTAxYWYwYmNhM2U5NTBkLi4wODJhM2QwM2Q4OGRhOGNjOWQzMzgyMDM2NjRlMzJh
YWJjMTIxNzIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEwLTA3LTA3ICBNT1JJVEEgSGFqaW1lICA8bW9y
cml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERyYWdnaW5nIG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9sbGJhcnMgc2hvdWxk
IHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcyNQorICAgICAgICBpZnJh
bWUgd2l0aCAib3ZlcmZsb3c6YXV0byIgc2hvdWxkIHN1cHBvcnQgYXV0b3Njcm9sbCB3aXRoIG1v
dXNlZHJhZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQwOTgxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29uc2lzdHMgb2YgMiBwYXJ0IG9mIHdvcmsu
CisgICAgICAgIAorICAgICAgICBGaXJzdCBwYXJ0IGlzIGFyb3VuZCBSZW5kZXJMYXllcjo6YXV0
b3Njcm9sbCgpLCB3aGljaCBpcworICAgICAgICBvcmlnaWFuYWxseSBkZXNpZ25lZCBmb3IgZXh0
ZW5kaW5nIGEgc2VsZWN0aW9uICh3aGljaCB3ZSBjYWxsCisgICAgICAgIEF1dG9zY3JvbGxCeUNh
cmV0KS4gVGhpcyBjaGFuZ2UgZXh0ZW5kZWQgc2Nyb2xsUmVjdFRvVmlzaWJsZSgpIHRvCisgICAg
ICAgIHN1cHBvcnQgYW4gYXV0b3Njcm9sbCB0cmlnZ2VyZWQgYnkgaXRlbS1kcmFnZ2luZyAoQXV0
b3Njcm9sbEJ5UG9pbnRlcikuCisgICAgICAgIAorICAgICAgICBCZWNhdXNlIEF1dG9zY3JvbGxC
eVBvaW50ZXIgZm9yIHRoZSBvdXRlcm1vc3QgZnJhbWUgaXMgYWxyZWFkeQorICAgICAgICBzdXBw
b3J0ZWQgYnkgQ29jb2EncyBidWlsdC1pbiBhdXRvc2Nyb2xsIG1lY2hhbmlzbSwgd2hhdAorICAg
ICAgICBpbXBsZW1lbnRlZCBoZXJlIGlzIGZvciBpbm5lciBmcmFtZXMgYW5kIGZvciBlbGVtZW50
cyB3aXRoCisgICAgICAgIG92ZXJmbG93OmF1dG8uIEFuZCB0aGUgb3V0ZXJtb3N0IGZyYW1lIGlz
IGV4cGxpY2l0bHkgc2tpcHBlZC4KKyAgICAgICAgCisgICAgICAgIFNlY29uZCBwYXJ0IGlzIGFy
b3VuZCBEcmFnQ29udHJvbGxlci4gV2UgaW50cm9kdWNlZAorICAgICAgICBEcmFnQXV0b3Njcm9s
bGVyIHRvIG1ha2UgQXV0b3Njcm9sbEJ5UG9pbnRlciBoYXBwZW4gaW5zaWRlIHRoZQorICAgICAg
ICBEcmFnQ29udHJvbGxlci4gVGhlIGltcGxlbWVudGF0aW9uIGZvbGxvd3MgdGhlIFdlYlZpZXcn
cyBhdXRvc2Nyb2xsCisgICAgICAgIGJlaGF2aW9yLgorICAgICAgICAKKyAgICAgICAgVGVzdDog
ZmFzdC9ldmVudHMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwKKworICAg
ICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OkRyYWdBdXRvc2Nyb2xsZXIpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OmRlYWN0aXZhdGUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdBdXRvc2Nyb2xsZXI6OmxvY2F0aW9uVXBkYXRlZCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0F1dG9zY3JvbGxlcjo6dGltZXJGaXJlZCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0F1dG9zY3JvbGxlcjo6ZmluZExheWVyRm9yKTogQWRk
ZWQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmluZEF1dG9z
Y3JvbGxSZW5kZXJlcik6IEV4dHJhY3RlZCBmcm9tIGhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KCku
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmluZmxhdGVYKToK
KyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmluZmxhdGVZKToKKyAgICAgICAgKFdlYkNvcmU6
OkludFJlY3Q6OmRlZmxhdGUpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZl
bHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6c2hyaW5rU2l6ZUZvcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6c2hyaW5rUmVjdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmF1dG9zY3JvbGxCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzaG91bGRBdXRvc2Nyb2xsQnlQb2ludGVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6cmVzdHJpY3RlZEJ5TGluZUNsYW1wKTogRXh0cmFjdGVkIGZyb20gYXV0b3Nj
cm9sbCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6IFNwbGl0dGVkIGlu
dG8gMiBvdmVybG9hZGVkIG1ldGhvZHMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjopOiBBZGRlZCBBdXRvc2Nyb2xsVHlwZSBlbnVtLgorCiAy
MDEwLTA5LTA2ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA1ZTZjNmIzYzUx
NmMzNDZkYWY4YjhjNjg2NjEwYjFhOTIyMzU5ZDVlLi5kZGY1YTA2ZTZmNzc4ZDNiZjk0ZjBiMTNl
YmVkYjViZTVhYTk3Mzg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIwMSw3ICsyMDEsNyBAQCBfX1pON1dlYkNvcmUx
MUhpc3RvcnlJdGVtQzFFdgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbUQxRXYKIF9fWk43V2Vi
Q29yZTExSWNvbkZldGNoZXI2Y2FuY2VsRXYKIF9fWk43V2ViQ29yZTExSWNvbkZldGNoZXI2Y3Jl
YXRlRVBOU181RnJhbWVFUE5TXzE3SWNvbkZldGNoZXJDbGllbnRFCi1fX1pON1dlYkNvcmUxMVJl
bmRlckxheWVyMTlzY3JvbGxSZWN0VG9WaXNpYmxlRVJLTlNfN0ludFJlY3RFYlJLTlNfMTVTY3Jv
bGxBbGlnbm1lbnRFUzZfCitfX1pON1dlYkNvcmUxMVJlbmRlckxheWVyMTlzY3JvbGxSZWN0VG9W
aXNpYmxlRVJLTlNfN0ludFJlY3RFYlJLTlNfMTVTY3JvbGxBbGlnbm1lbnRFUzZfaQogX19aTjdX
ZWJDb3JlMTFnbG9iYWxQb2ludEVSSzhfTlNQb2ludFA4TlNXaW5kb3cKIF9fWk43V2ViQ29yZTEx
dG9Vc2VyU3BhY2VFUks3X05TUmVjdFA4TlNXaW5kb3cKIF9fWk43V2ViQ29yZTExd3JpdGVUb0Zp
bGVFaVBLY2kKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGJiZjRmZWQ2MWM0OTczOTI1MTc5
MDQzOGM1YmViYzViZGM2ZDk0M2EuLjUwNDczZjQ2ZjQ5MjMzZTJkMDBkNzE5YzM3YWExYjcwNDY5
ZGFmYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNzEsNiArNzEsMTkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEcmFnQXV0b3Njcm9sbGVyIHsKK3B1YmxpYzoKKyAg
ICBEcmFnQXV0b3Njcm9sbGVyKCk7CisgICAgdm9pZCBkZWFjdGl2YXRlKCk7CisgICAgdm9pZCBs
b2NhdGlvblVwZGF0ZWQoRG9jdW1lbnQqLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZvaWQgdGlt
ZXJGaXJlZChUaW1lcjxEcmFnQXV0b3Njcm9sbGVyPiopOworcHJpdmF0ZToKKyAgICBSZW5kZXJM
YXllciogZmluZExheWVyRm9yKERvY3VtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKwor
ICAgIFRpbWVyPERyYWdBdXRvc2Nyb2xsZXI+IG1fdGltZXI7CisgICAgYm9vbCBtX2FjdGl2YXRl
ZDsKK307CisKIHN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgY3JlYXRlTW91c2VFdmVudChEcmFn
RGF0YSogZHJhZ0RhdGEpCiB7CiAgICAgYm9vbCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBt
ZXRhS2V5OwpAQCAtOTEsNiArMTA0LDcgQEAgRHJhZ0NvbnRyb2xsZXI6OkRyYWdDb250cm9sbGVy
KFBhZ2UqIHBhZ2UsIERyYWdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fZGlkSW5pdGlhdGVEcmFn
KGZhbHNlKQogICAgICwgbV9pc0hhbmRsaW5nRHJhZyhmYWxzZSkKICAgICAsIG1fc291cmNlRHJh
Z09wZXJhdGlvbihEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICAsIG1fYXV0b3Njcm9sbGVyKG5ldyBE
cmFnQXV0b3Njcm9sbGVyKCkpCiB7CiB9CiAKQEAgLTE3Nyw2ICsxOTEsNyBAQCB2b2lkIERyYWdD
b250cm9sbGVyOjpkcmFnRXhpdGVkKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgY2xpcGJv
YXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkTnVtYik7ICAgIC8vIGludmFsaWRhdGUgY2xp
cGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CiAgICAgfQogICAgIG1vdXNlTW92ZWRJbnRvRG9jdW1l
bnQoMCk7CisgICAgbV9hdXRvc2Nyb2xsZXItPmRlYWN0aXZhdGUoKTsKIH0KIAogRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ1VwZGF0ZWQoRHJhZ0RhdGEqIGRyYWdEYXRhKQpAQCAt
MjM0LDYgKzI0OSw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVk
T3JVcGRhdGVkKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBBU1NFUlQoZHJhZ0RhdGEpOwogICAg
IEFTU0VSVChtX3BhZ2UtPm1haW5GcmFtZSgpKTsgLy8gSXQgaXMgbm90IHBvc3NpYmxlIGluIE1h
YyBXZWJLaXQgdG8gaGF2ZSBhIFBhZ2Ugd2l0aG91dCBhIG1haW5GcmFtZSgpCiAgICAgbW91c2VN
b3ZlZEludG9Eb2N1bWVudChtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEF0UG9pbnQoZHJh
Z0RhdGEtPmNsaWVudFBvc2l0aW9uKCkpKTsKKyAgICBtX2F1dG9zY3JvbGxlci0+bG9jYXRpb25V
cGRhdGVkKG1fZG9jdW1lbnRVbmRlck1vdXNlLmdldCgpLCBkcmFnRGF0YS0+Y2xpZW50UG9zaXRp
b24oKSk7CiAKICAgICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IG1fY2xpZW50LT5hY3Rpb25N
YXNrRm9yRHJhZyhkcmFnRGF0YSk7CiAgICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID09
IERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmUpIHsKQEAgLTg0MCw2ICs4NTYsNjQgQEAgdm9pZCBE
cmFnQ29udHJvbGxlcjo6cGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50
KQogICAgIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5zZXRTZWxlY3Rpb24oZHJhZ0Nh
cmV0KTsKIH0KIAorRHJhZ0F1dG9zY3JvbGxlcjo6RHJhZ0F1dG9zY3JvbGxlcigpCisgICAgOiBt
X3RpbWVyKHRoaXMsICZEcmFnQXV0b3Njcm9sbGVyOjp0aW1lckZpcmVkKQorICAgICwgbV9hY3Rp
dmF0ZWQoZmFsc2UpCit7Cit9CisKK3ZvaWQgRHJhZ0F1dG9zY3JvbGxlcjo6ZGVhY3RpdmF0ZSgp
Cit7CisgICAgbV9hY3RpdmF0ZWQgPSBmYWxzZTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKK30KKwor
dm9pZCBEcmFnQXV0b3Njcm9sbGVyOjpsb2NhdGlvblVwZGF0ZWQoRG9jdW1lbnQqIGRvY3VtZW50
VW5kZXJNb3VzZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQoreworICAgIGNvbnN0IGRvdWJs
ZSBhdXRvc2Nyb2xsRGVsYXkgPSAwLjU7IC8vIEFwcHJveGltYXRlcyBDb2NvYSdzIGJlaGF2aW9y
CisKKyAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBmaW5kTGF5ZXJGb3IoZG9jdW1lbnRVbmRlck1v
dXNlLCBsb2NhdGlvbik7CisgICAgaWYgKCFsYXllcikgeworICAgICAgICBkZWFjdGl2YXRlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fYWN0aXZhdGVkKSB7CisgICAg
ICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV90aW1lci5zdGFydE9u
ZVNob3QoYXV0b3Njcm9sbERlbGF5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxh
eWVyLT5hdXRvc2Nyb2xsKEF1dG9zY3JvbGxCeVBvaW50ZXIsIGRvY3VtZW50VW5kZXJNb3VzZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGxvY2F0aW9uKSk7Cit9CisKK3ZvaWQgRHJhZ0F1dG9z
Y3JvbGxlcjo6dGltZXJGaXJlZChUaW1lcjxEcmFnQXV0b3Njcm9sbGVyPiopCit7CisgICAgbV9h
Y3RpdmF0ZWQgPSB0cnVlOworfQorCitSZW5kZXJMYXllciogRHJhZ0F1dG9zY3JvbGxlcjo6Zmlu
ZExheWVyRm9yKERvY3VtZW50KiBkb2N1bWVudFVuZGVyTW91c2UsIGNvbnN0IEludFBvaW50JiBs
b2NhdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50VW5kZXJNb3VzZSB8fCAhZG9jdW1l
bnRVbmRlck1vdXNlLT52aWV3KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgSW50UG9pbnQg
ZG9jdW1lbnRQb3NpdGlvbiA9IGRvY3VtZW50VW5kZXJNb3VzZS0+dmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKGxvY2F0aW9uKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBlbGVtZW50VW5kZXJNb3VzZShk
b2N1bWVudFVuZGVyTW91c2UsIGRvY3VtZW50UG9zaXRpb24pOworICAgIGlmICghdGFyZ2V0KQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBFdmVudEhh
bmRsZXI6OmZpbmRBdXRvc2Nyb2xsUmVuZGVyZXIodGFyZ2V0KTsKKyAgICBpZiAoIXJlbmRlcmVy
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVy
LT5lbmNsb3NpbmdMYXllcigpOworICAgIEFTU0VSVChsYXllcik7CisgICAgaWYgKCFsYXllci0+
c2hvdWxkQXV0b3Njcm9sbEJ5UG9pbnRlcihkb2N1bWVudFBvc2l0aW9uKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gbGF5ZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4
IDBlOTBhNTI5YWU1MjQxMzM5MTJkZWM0NGNjMTllMTUyZDJhOGUwN2IuLjJjNzFjOWY0NGQ4MDEw
NWNmYWFiMmYxZWI0NGM1YjMzYTYyYjdkZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC0zMCwx
MSArMzAsMTMgQEAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBDbGlwYm9hcmQ7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAg
Y2xhc3MgRHJhZ0F1dG9zY3JvbGxlcjsKICAgICBjbGFzcyBEcmFnQ2xpZW50OwogICAgIGNsYXNz
IERyYWdEYXRhOwogICAgIGNsYXNzIEVsZW1lbnQ7CkBAIC0xMjMsNiArMTI1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnT3BlcmF0aW9uIG1fc291cmNlRHJhZ09wZXJhdGlv
bjsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRv
d24gd2l0aGluIFdlYktpdAogICAgICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAgICAgICAg
IEtVUkwgbV9kcmFnZ2luZ0ltYWdlVVJMOworICAgICAgICBPd25QdHI8RHJhZ0F1dG9zY3JvbGxl
cj4gbV9hdXRvc2Nyb2xsZXI7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5
NTBlODU3ZTNiNzgwZWUzNzYzZjY0MDc1NzRjMDI4N2Q2OGIyYzVlLi4zYjk0YjQwNjUzNDVkMGZj
MTcyMmI0NmMyYmM5NTYxNmFkOTE1ZTA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNTAyLDYg
KzUwMiwyMCBAQCBzdGF0aWMgYm9vbCBjYW5BdXRvc2Nyb2xsKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0gZnJhbWU7CiB9CiAK
K1JlbmRlck9iamVjdCogRXZlbnRIYW5kbGVyOjpmaW5kQXV0b3Njcm9sbFJlbmRlcmVyKE5vZGUq
IHRhcmdldE5vZGUpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRhcmdldE5vZGUt
PnJlbmRlcmVyKCk7CisgICAgd2hpbGUgKHJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKHJlbmRl
cmVyKSkgeworICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+bm9k
ZSgpID09IHJlbmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25l
ckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCkt
Pm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVuZGVy
ZXI7Cit9CisKKwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQpCiB7CkBAIC01MjIsMTYgKzUzNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
CiAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKIAogICAgIGlmIChtX21vdXNl
RG93bk1heVN0YXJ0QXV0b3Njcm9sbCAmJiAhbV9wYW5TY3JvbGxJblByb2dyZXNzKSB7ICAgICAg
ICAgICAgCi0gICAgICAgIC8vIEZpbmQgYSByZW5kZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgot
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKTsK
LSAgICAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKHJlbmRlcmVyKSkgewot
ICAgICAgICAgICAgaWYgKCFyZW5kZXJlci0+cGFyZW50KCkgJiYgcmVuZGVyZXItPm5vZGUoKSA9
PSByZW5kZXJlci0+ZG9jdW1lbnQoKSAmJiByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVt
ZW50KCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+
b3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGlmIChyZW5kZXJlcikgeworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IGZpbmRBdXRvc2Nyb2xsUmVuZGVyZXIodGFyZ2V0Tm9kZSkpIHsKICAgICAgICAgICAg
IG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwogICAgICAgICAgICAgaGFuZGxlQXV0b3Nj
cm9sbChyZW5kZXJlcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBjYTE5YTBjYjQ5
Y2Q5MGNhMDgxYjJmNGFlNzllY2MzZGU5YmVmOTU4Li45YjUwZmRmZGNkNzg4Y2FhYzdhMDIxZDIx
ZTQ1OGFjOTAzOTFiMzBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
KysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIHNob3VsZERyYWdBdXRv
Tm9kZShOb2RlKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsgLy8gLXdlYmtpdC11c2VyLWRyYWcg
PT0gYXV0bworICAgIHN0YXRpYyBSZW5kZXJPYmplY3QqIGZpbmRBdXRvc2Nyb2xsUmVuZGVyZXIo
Tm9kZSopOwogI2VuZGlmCiAKICAgICBib29sIHNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50b0hv
cml6b250YWwoY29uc3QgSGl0VGVzdFJlc3VsdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFJlY3QuaAppbmRleCBjNTk5MGVmNThiNGNiNzkxOGYzMDY2NGFiYmY4NzI4MGU3MzU4ZDdj
Li5kMTBjMzE1M2RjMGU1Y2ZmZjNjMjM3YTk1MzJmODgxZDU0OWJmY2UxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMTMxLDE0ICsxMzEsMjQgQEAgcHVibGljOgogICAgIHZv
aWQgaW5mbGF0ZVgoaW50IGR4KQogICAgIHsKICAgICAgICAgbV9sb2NhdGlvbi5zZXRYKG1fbG9j
YXRpb24ueCgpIC0gZHgpOwotICAgICAgICBtX3NpemUuc2V0V2lkdGgobV9zaXplLndpZHRoKCkg
KyBkeCArIGR4KTsKKyAgICAgICAgaWYgKDAgPCBtX3NpemUud2lkdGgoKSArIGR4ICsgZHgpCisg
ICAgICAgICAgICBtX3NpemUuc2V0V2lkdGgobV9zaXplLndpZHRoKCkgKyBkeCArIGR4KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9zaXplLnNldFdpZHRoKDApOwogICAgIH0KKwogICAg
IHZvaWQgaW5mbGF0ZVkoaW50IGR5KQogICAgIHsKICAgICAgICAgbV9sb2NhdGlvbi5zZXRZKG1f
bG9jYXRpb24ueSgpIC0gZHkpOwotICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KG1fc2l6ZS5oZWln
aHQoKSArIGR5ICsgZHkpOworICAgICAgICBpZiAoMCA8IG1fc2l6ZS5oZWlnaHQoKSArIGR5ICsg
ZHkpCisgICAgICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KG1fc2l6ZS5oZWlnaHQoKSArIGR5ICsg
ZHkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KDApOwogICAg
IH0KKwogICAgIHZvaWQgaW5mbGF0ZShpbnQgZCkgeyBpbmZsYXRlWChkKTsgaW5mbGF0ZVkoZCk7
IH0KKyAgICB2b2lkIGRlZmxhdGUoaW50IGQpIHsgaW5mbGF0ZSgtZCk7IH0KKwogICAgIHZvaWQg
c2NhbGUoZmxvYXQgcyk7CiAKICNpZiBQTEFURk9STShXWCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCBjYmE2MWE5NjdkNWFmNmQ4NmE1MWE0ZjkzNTlkNTc1MWJjZmNlYmE1Li5iZTJj
YTIzM2M4MjczYmM5Mzg4YTdkYTMxYzkwODA0NDY5ZjEwNzdhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0xMjQ1LDExICsxMjQ1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xs
QnlSZWN1cnNpdmVseShpbnQgeERlbHRhLCBpbnQgeURlbHRhKQogICAgIGlmICgheERlbHRhICYm
ICF5RGVsdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgcmVzdHJpY3RlZEJ5TGluZUNs
YW1wID0gZmFsc2U7Ci0gICAgaWYgKHJlbmRlcmVyKCktPnBhcmVudCgpKQotICAgICAgICByZXN0
cmljdGVkQnlMaW5lQ2xhbXAgPSAhcmVuZGVyZXIoKS0+cGFyZW50KCktPnN0eWxlKCktPmxpbmVD
bGFtcCgpLmlzTm9uZSgpOwotCi0gICAgaWYgKHJlbmRlcmVyKCktPmhhc092ZXJmbG93Q2xpcCgp
ICYmICFyZXN0cmljdGVkQnlMaW5lQ2xhbXApIHsKKyAgICBpZiAocmVuZGVyZXIoKS0+aGFzT3Zl
cmZsb3dDbGlwKCkgJiYgIXJlc3RyaWN0ZWRCeUxpbmVDbGFtcCgpKSB7CiAgICAgICAgIGludCBu
ZXdPZmZzZXRYID0gc2Nyb2xsWE9mZnNldCgpICsgeERlbHRhOwogICAgICAgICBpbnQgbmV3T2Zm
c2V0WSA9IHNjcm9sbFlPZmZzZXQoKSArIHlEZWx0YTsKICAgICAgICAgc2Nyb2xsVG9PZmZzZXQo
bmV3T2Zmc2V0WCwgbmV3T2Zmc2V0WSk7CkBAIC0xMzc2LDkgKzEzNzIsOCBAQCB2b2lkIFJlbmRl
ckxheWVyOjpzY3JvbGxUb09mZnNldChpbnQgeCwgaW50IHksIGJvb2wgdXBkYXRlU2Nyb2xsYmFy
cywgYm9vbCByZXBhaQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRv
VmlzaWJsZShjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHNjcm9sbFRvQW5jaG9yLCBjb25zdCBT
Y3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpCit2
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGJvb2wgc2Nyb2xsVG9BbmNob3IsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25z
dCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSwgaW50IHNocmlua1NpemUpCiB7Ci0gICAgUmVuZGVy
TGF5ZXIqIHBhcmVudExheWVyID0gMDsKICAgICBJbnRSZWN0IG5ld1JlY3QgPSByZWN0OwogICAg
IGludCB4T2Zmc2V0ID0gMCwgeU9mZnNldCA9IDA7CiAKQEAgLTEzODgsMTMgKzEzODMsOSBAQCB2
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGJvb2wgc2Nyb2xsVG9BbmNob3IsCiAgICAgaWYgKGZyYW1lVmlldykKICAgICAgICAgZnJhbWVW
aWV3LT5wYXVzZVNjaGVkdWxlZEV2ZW50cygpOwogCi0gICAgYm9vbCByZXN0cmljdGVkQnlMaW5l
Q2xhbXAgPSBmYWxzZTsKLSAgICBpZiAocmVuZGVyZXIoKS0+cGFyZW50KCkpIHsKLSAgICAgICAg
cGFyZW50TGF5ZXIgPSByZW5kZXJlcigpLT5wYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKLSAg
ICAgICAgcmVzdHJpY3RlZEJ5TGluZUNsYW1wID0gIXJlbmRlcmVyKCktPnBhcmVudCgpLT5zdHls
ZSgpLT5saW5lQ2xhbXAoKS5pc05vbmUoKTsKLSAgICB9CisgICAgUmVuZGVyTGF5ZXIqIHBhcmVu
dExheWVyID0gcGFyZW50RW5jbG9zaW5nTGF5ZXIoKTsKIAotICAgIGlmIChyZW5kZXJlcigpLT5o
YXNPdmVyZmxvd0NsaXAoKSAmJiAhcmVzdHJpY3RlZEJ5TGluZUNsYW1wKSB7CisgICAgaWYgKHJl
bmRlcmVyKCktPmhhc092ZXJmbG93Q2xpcCgpICYmICFyZXN0cmljdGVkQnlMaW5lQ2xhbXAoKSkg
ewogICAgICAgICAvLyBEb24ndCBzY3JvbGwgdG8gcmV2ZWFsIGFuIG92ZXJmbG93IGxheWVyIHRo
YXQgaXMgcmVzdHJpY3RlZCBieSB0aGUgLXdlYmtpdC1saW5lLWNsYW1wIHByb3BlcnR5LgogICAg
ICAgICAvLyBUaGlzIHdpbGwgcHJldmVudCB1cyBmcm9tIHJldmVhbGluZyB0ZXh0IGhpZGRlbiBi
eSB0aGUgc2xpZGVyIGluIFNhZmFyaSBSU1MuCiAgICAgICAgIFJlbmRlckJveCogYm94ID0gcmVu
ZGVyQm94KCk7CkBAIC0xNDA0LDcgKzEzOTUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxS
ZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wgc2Nyb2xsVG9BbmNob3IsCiAK
ICAgICAgICAgSW50UmVjdCBsYXllckJvdW5kcyA9IEludFJlY3QoYWJzUG9zLngoKSArIHNjcm9s
bFhPZmZzZXQoKSwgYWJzUG9zLnkoKSArIHNjcm9sbFlPZmZzZXQoKSwgYm94LT5jbGllbnRXaWR0
aCgpLCBib3gtPmNsaWVudEhlaWdodCgpKTsKICAgICAgICAgSW50UmVjdCBleHBvc2VSZWN0ID0g
SW50UmVjdChyZWN0LngoKSArIHNjcm9sbFhPZmZzZXQoKSwgcmVjdC55KCkgKyBzY3JvbGxZT2Zm
c2V0KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgIEludFJlY3QgciA9
IGdldFJlY3RUb0V4cG9zZShsYXllckJvdW5kcywgZXhwb3NlUmVjdCwgYWxpZ25YLCBhbGlnblkp
OworICAgICAgICBJbnRSZWN0IHIgPSBnZXRSZWN0VG9FeHBvc2UobGF5ZXJCb3VuZHMsIGV4cG9z
ZVJlY3QsIGFsaWduWCwgYWxpZ25ZLCBzaHJpbmtTaXplKTsKICAgICAgICAgCiAgICAgICAgIHhP
ZmZzZXQgPSByLngoKSAtIGFic1Bvcy54KCk7CiAgICAgICAgIHlPZmZzZXQgPSByLnkoKSAtIGFi
c1Bvcy55KCk7CkBAIC0xNDIzLDkgKzE0MTQsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxS
ZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wgc2Nyb2xsVG9BbmNob3IsCiAg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFwYXJlbnRMYXllciAmJiByZW5kZXJlcigpLT5pc0Jv
eCgpICYmIHJlbmRlckJveCgpLT5jYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKHNjcm9sbFRv
QW5jaG9yKSkgewogICAgICAgICBpZiAoZnJhbWVWaWV3KSB7Ci0gICAgICAgICAgICBpZiAocmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKSAmJiByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5vd25lckVsZW1l
bnQoKSAmJiByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIo
KSkgeworICAgICAgICAgICAgaWYgKGhhc093bmVyKCkpIHsKICAgICAgICAgICAgICAgICBJbnRS
ZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSAgICAgICAg
ICAgICAgICBJbnRSZWN0IHIgPSBnZXRSZWN0VG9FeHBvc2Uodmlld1JlY3QsIHJlY3QsIGFsaWdu
WCwgYWxpZ25ZKTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHIgPSBnZXRSZWN0VG9FeHBvc2Uo
dmlld1JlY3QsIHJlY3QsIGFsaWduWCwgYWxpZ25ZLCBzaHJpbmtTaXplKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICB4T2Zmc2V0ID0gci54KCk7CiAgICAgICAgICAgICAgICAg
eU9mZnNldCA9IHIueSgpOwpAQCAtMTQzOSw4ICsxNDMwLDggQEAgdm9pZCBSZW5kZXJMYXllcjo6
c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHNjcm9sbFRvQW5j
aG9yLAogICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WShyZWN0LnkoKSAtIGZyYW1lVmlldy0+
c2Nyb2xsWSgpICsgZnJhbWVWaWV3LT55KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBJbnRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJl
Y3QoKTsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IHIgPSBnZXRSZWN0VG9FeHBvc2Uodmlld1Jl
Y3QsIHJlY3QsIGFsaWduWCwgYWxpZ25ZKTsKLSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBJbnRSZWN0IHIgPSBnZXRSZWN0VG9FeHBvc2Uodmlld1JlY3QsIHJlY3QsIGFsaWduWCwg
YWxpZ25ZLCBzaHJpbmtTaXplKTsgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBm
cmFtZVZpZXctPnNldFNjcm9sbFBvc2l0aW9uKHIubG9jYXRpb24oKSk7CiAKICAgICAgICAgICAg
ICAgICAvLyBUaGlzIGlzIHRoZSBvdXRlcm1vc3QgdmlldyBvZiBhIHdlYiBwYWdlLCBzbyBhZnRl
ciBzY3JvbGxpbmcgdGhpcyB2aWV3IHdlCkBAIC0xNDU3LDI0ICsxNDQ4LDExMSBAQCB2b2lkIFJl
bmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wg
c2Nyb2xsVG9BbmNob3IsCiAgICAgfQogICAgIAogICAgIGlmIChwYXJlbnRMYXllcikKLSAgICAg
ICAgcGFyZW50TGF5ZXItPnNjcm9sbFJlY3RUb1Zpc2libGUobmV3UmVjdCwgc2Nyb2xsVG9BbmNo
b3IsIGFsaWduWCwgYWxpZ25ZKTsKKyAgICAgICAgcGFyZW50TGF5ZXItPnNjcm9sbFJlY3RUb1Zp
c2libGUobmV3UmVjdCwgc2Nyb2xsVG9BbmNob3IsIGFsaWduWCwgYWxpZ25ZLCBzaHJpbmtTaXpl
KTsKIAogICAgIGlmIChmcmFtZVZpZXcpCiAgICAgICAgIGZyYW1lVmlldy0+cmVzdW1lU2NoZWR1
bGVkRXZlbnRzKCk7CiB9CiAKLUludFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShj
b25zdCBJbnRSZWN0ICZ2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCAmZXhwb3NlUmVjdCwgY29u
c3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25Z
KQorc3RhdGljIGludCBzaHJpbmtTaXplRm9yKEF1dG9zY3JvbGxUeXBlIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBBdXRvc2Nyb2xsQnlQb2ludGVyOgorICAgICAgICBy
ZXR1cm4gMjU7IC8qIGFwcHJveGltYXRlbHkgc2FtZSBhcyBXZWJWaWV3IGRvZXMgZm9yIG91dGVy
bW9zdCBmcmFtZSAqLworICAgIGNhc2UgQXV0b3Njcm9sbEJ5Q2FyZXQ6CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgSW50UmVjdCBzaHJpbmtSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzaHJpbmtTaXplKQogewotICAgIC8vIERldGVybWlu
ZSB0aGUgYXBwcm9wcmlhdGUgWCBiZWhhdmlvci4KKyAgICBJbnRSZWN0IHJlc3VsdCA9IHJlY3Q7
CisgICAgcmVzdWx0LmRlZmxhdGUoc2hyaW5rU2l6ZSk7CisgICAgaWYgKHJlc3VsdC5pc0VtcHR5
KCkpCisgICAgICAgIHJlc3VsdC5zZXRTaXplKEludFNpemUoMSwgMSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0ludFJlY3QgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGxCb3VuZHMoYm9vbCBz
Y3JvbGxUb0FuY2hvcikgY29uc3QKK3sKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHJlbmRl
cmVyKCktPmRvY3VtZW50KCktPnZpZXcoKTsKKyAgICBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIg
PSBwYXJlbnRFbmNsb3NpbmdMYXllcigpOworICAgIGlmIChyZW5kZXJlcigpLT5oYXNPdmVyZmxv
d0NsaXAoKSAmJiAhcmVzdHJpY3RlZEJ5TGluZUNsYW1wKCkpIHsKKyAgICAgICAgLy8gRG9uJ3Qg
c2Nyb2xsIHRvIHJldmVhbCBhbiBvdmVyZmxvdyBsYXllciB0aGF0IGlzIHJlc3RyaWN0ZWQgYnkg
dGhlIC13ZWJraXQtbGluZS1jbGFtcCBwcm9wZXJ0eS4KKyAgICAgICAgLy8gVGhpcyB3aWxsIHBy
ZXZlbnQgdXMgZnJvbSByZXZlYWxpbmcgdGV4dCBoaWRkZW4gYnkgdGhlIHNsaWRlciBpbiBTYWZh
cmkgUlNTLgorICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOworICAgICAgICBB
U1NFUlQoYm94KTsKKyAgICAgICAgRmxvYXRQb2ludCBhYnNQb3MgPSBib3gtPmxvY2FsVG9BYnNv
bHV0ZSgpOworICAgICAgICBhYnNQb3MubW92ZShib3gtPmJvcmRlckxlZnQoKSwgYm94LT5ib3Jk
ZXJUb3AoKSk7CisgICAgICAgIHJldHVybiBJbnRSZWN0KGFic1Bvcy54KCksIGFic1Bvcy55KCks
IGJveC0+Y2xpZW50V2lkdGgoKSwgYm94LT5jbGllbnRIZWlnaHQoKSk7CisgICAgfSAKKworICAg
IGlmICghcGFyZW50TGF5ZXIgJiYgcmVuZGVyZXIoKS0+aXNCb3goKSAmJiByZW5kZXJCb3goKS0+
Y2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZChzY3JvbGxUb0FuY2hvcikpIHsKKyAgICAgICAg
aWYgKGZyYW1lVmlldykgeworICAgICAgICAgICAgaWYgKGhhc093bmVyKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAgICAgICAg
ICByZXR1cm4gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSk7CisgICAgICAgIH0K
KyAgICB9CisgCisgICAgcmV0dXJuIEludFJlY3QoKTsKK30KKworYm9vbCBSZW5kZXJMYXllcjo6
c2hvdWxkQXV0b3Njcm9sbEJ5UG9pbnRlcihjb25zdCBJbnRQb2ludCYgY3VycmVudERvY3VtZW50
UG9zaXRpb24pCit7CisgICAgLy8gQXV0b3Njcm9sbEJ5UG9pbnRlciBmb3Igb3V0ZXJtb3N0IGZy
YW1lIGlzIGRvbmUgYnkgV2ViVmlldywgc28gd2Ugc2hvdWxkIHNraXAgaXQuCisgICAgaWYgKGlz
T3V0ZXJtb3N0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEF1dG9zY3JvbGxC
eVBvaW50ZXIgZG9lc24ndCBoYXBwZW4gd2hlbiBpdHMgcG9zaXRpb24gaXMgb3V0c2lkZQorICAg
IC8vIHRoZSBmcmFtZSwgb3IgaW5zaWRlIHRoZSB0aHJlc2hvdWxkIG9mIHRoYXQgZnJhbWUuCisg
ICAgSW50UmVjdCBvdXRlckJvdW5kID0gYXV0b3Njcm9sbEJvdW5kcyhmYWxzZSk7CisgICAgSW50
UmVjdCBpbm5lckJvdW5kID0gc2hyaW5rUmVjdChvdXRlckJvdW5kLCBzaHJpbmtTaXplRm9yKEF1
dG9zY3JvbGxCeVBvaW50ZXIpKTsKKyAgICBpZiAoIW91dGVyQm91bmQuY29udGFpbnMoY3VycmVu
dERvY3VtZW50UG9zaXRpb24pIHx8IGlubmVyQm91bmQuY29udGFpbnMoY3VycmVudERvY3VtZW50
UG9zaXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpwYXJlbnRFbmNsb3NpbmdMYXllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHJlbmRlcmVyKCktPnBhcmVudCgpID8gcmVuZGVyZXIoKS0+cGFyZW50
KCktPmVuY2xvc2luZ0xheWVyKCkgOiAwOworfQorCitib29sIFJlbmRlckxheWVyOjpyZXN0cmlj
dGVkQnlMaW5lQ2xhbXAoKSBjb25zdAoreworICAgIHJldHVybiByZW5kZXJlcigpLT5wYXJlbnQo
KSAmJiAhcmVuZGVyZXIoKS0+cGFyZW50KCktPnN0eWxlKCktPmxpbmVDbGFtcCgpLmlzTm9uZSgp
OworfQorCitib29sIFJlbmRlckxheWVyOjpoYXNPd25lcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHJlbmRlcmVyKCktPmRvY3VtZW50KCkgJiYgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+b3duZXJF
bGVtZW50KCkgJiYgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCktPnJlbmRl
cmVyKCk7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzT3V0ZXJtb3N0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIXBhcmVudCgpICYmICFoYXNPd25lcigpOworfQorCitJbnRSZWN0IFJlbmRlckxh
eWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IElu
dFJlY3QgJmV4cG9zZVJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBT
Y3JvbGxBbGlnbm1lbnQmIGFsaWduWSwgaW50IHNocmlua1NpemUpCit7CisKICAgICBTY3JvbGxC
ZWhhdmlvciBzY3JvbGxYOwogICAgIEludFJlY3QgZXhwb3NlUmVjdFgoZXhwb3NlUmVjdC54KCks
IHZpc2libGVSZWN0LnkoKSwgZXhwb3NlUmVjdC53aWR0aCgpLCB2aXNpYmxlUmVjdC5oZWlnaHQo
KSk7Ci0gICAgaW50IGludGVyc2VjdFdpZHRoID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0LCBl
eHBvc2VSZWN0WCkud2lkdGgoKTsKKworICAgIC8vIFdlIHVzZSBib3VuZFJlY3QgZm9yIGF1dG9z
Y3JvbGwuCisgICAgLy8gSWYgdGhlIGV4cG9zZVJlY3QgaXMgY3Jvc3NpbmcgKG9yIG91dHNpZGUp
IHRoZSBib3VuZFJlY3QsIHdlIHRyeSB0byBtYWtlIHRoZSByZXN1bHQgc3RheWluZyBpbnNpZGUg
dGhhdCBib3VuZC4KKyAgICAvLyBOb3RlIHRoYXQgYm91bmRSZWN0IHdpdGggemVybyBzaHJpbmtT
aXplIGhhcyBubyBlZmZlY3QuCisgICAgSW50UmVjdCBib3VuZFJlY3QgPSBzaHJpbmtSZWN0KHZp
c2libGVSZWN0LCBzaHJpbmtTaXplKTsKKworICAgIGludCBpbnRlcnNlY3RXaWR0aCA9IGludGVy
c2VjdGlvbihib3VuZFJlY3QsIGV4cG9zZVJlY3RYKS53aWR0aCgpOwogICAgIGlmIChpbnRlcnNl
Y3RXaWR0aCA9PSBleHBvc2VSZWN0LndpZHRoKCkgfHwgaW50ZXJzZWN0V2lkdGggPj0gTUlOX0lO
VEVSU0VDVF9GT1JfUkVWRUFMKQogICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xlIGlzIGZ1bGx5
IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHZpc2libGUgYmVoYXZpb3IuCiAgICAgICAgIC8v
IElmIHRoZSByZWN0YW5nbGUgaXMgcGFydGlhbGx5IHZpc2libGUsIGJ1dCBvdmVyIGEgY2VydGFp
biB0aHJlc2hvbGQsCiAgICAgICAgIC8vIHRoZW4gdHJlYXQgaXQgYXMgZnVsbHkgdmlzaWJsZSB0
byBhdm9pZCB1bm5lY2Vzc2FyeSBob3Jpem9udGFsIHNjcm9sbGluZwogICAgICAgICBzY3JvbGxY
ID0gU2Nyb2xsQWxpZ25tZW50OjpnZXRWaXNpYmxlQmVoYXZpb3IoYWxpZ25YKTsKLSAgICBlbHNl
IGlmIChpbnRlcnNlY3RXaWR0aCA9PSB2aXNpYmxlUmVjdC53aWR0aCgpKSB7CisgICAgZWxzZSBp
ZiAoaW50ZXJzZWN0V2lkdGggPT0gYm91bmRSZWN0LndpZHRoKCkpIHsKICAgICAgICAgLy8gSWYg
dGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgZG9uJ3QgYm90aGVyIHRy
eWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3b3JrLgogICAgICAgICBzY3Jv
bGxYID0gU2Nyb2xsQWxpZ25tZW50OjpnZXRWaXNpYmxlQmVoYXZpb3IoYWxpZ25YKTsKICAgICAg
ICAgaWYgKHNjcm9sbFggPT0gYWxpZ25DZW50ZXIpCkBAIC0xNDg2LDcgKzE1NjQsNyBAQCBJbnRS
ZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCAmdmlzaWJsZVJl
Y3QsIGNvbnN0IEludFJlY3QgJgogICAgICAgICBzY3JvbGxYID0gU2Nyb2xsQWxpZ25tZW50Ojpn
ZXRIaWRkZW5CZWhhdmlvcihhbGlnblgpOwogICAgIC8vIElmIHdlJ3JlIHRyeWluZyB0byBhbGln
biB0byB0aGUgY2xvc2VzdCBlZGdlLCBhbmQgdGhlIGV4cG9zZVJlY3QgaXMgZnVydGhlciByaWdo
dAogICAgIC8vIHRoYW4gdGhlIHZpc2libGVSZWN0LCBhbmQgbm90IGJpZ2dlciB0aGFuIHRoZSB2
aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0aCB0aGUgcmlnaHQuCi0gICAgaWYgKHNjcm9sbFgg
PT0gYWxpZ25Ub0Nsb3Nlc3RFZGdlICYmIGV4cG9zZVJlY3QucmlnaHQoKSA+IHZpc2libGVSZWN0
LnJpZ2h0KCkgJiYgZXhwb3NlUmVjdC53aWR0aCgpIDwgdmlzaWJsZVJlY3Qud2lkdGgoKSkKKyAg
ICBpZiAoc2Nyb2xsWCA9PSBhbGlnblRvQ2xvc2VzdEVkZ2UgJiYgZXhwb3NlUmVjdC5yaWdodCgp
ID4gYm91bmRSZWN0LnJpZ2h0KCkgJiYgZXhwb3NlUmVjdC53aWR0aCgpIDwgYm91bmRSZWN0Lndp
ZHRoKCkpCiAgICAgICAgIHNjcm9sbFggPSBhbGlnblJpZ2h0OwogCiAgICAgLy8gR2l2ZW4gdGhl
IFggYmVoYXZpb3IsIGNvbXB1dGUgdGhlIFggY29vcmRpbmF0ZS4KQEAgLTE0OTQsMjAgKzE1NzIs
MjAgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6Z2V0UmVjdFRvRXhwb3NlKGNvbnN0IEludFJlY3Qg
JnZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0ICYKICAgICBpZiAoc2Nyb2xsWCA9PSBub1Njcm9s
bCkgCiAgICAgICAgIHggPSB2aXNpYmxlUmVjdC54KCk7CiAgICAgZWxzZSBpZiAoc2Nyb2xsWCA9
PSBhbGlnblJpZ2h0KQotICAgICAgICB4ID0gZXhwb3NlUmVjdC5yaWdodCgpIC0gdmlzaWJsZVJl
Y3Qud2lkdGgoKTsKKyAgICAgICAgeCA9IHZpc2libGVSZWN0LngoKSArIChleHBvc2VSZWN0LnJp
Z2h0KCkgLSBib3VuZFJlY3QucmlnaHQoKSk7CiAgICAgZWxzZSBpZiAoc2Nyb2xsWCA9PSBhbGln
bkNlbnRlcikKICAgICAgICAgeCA9IGV4cG9zZVJlY3QueCgpICsgKGV4cG9zZVJlY3Qud2lkdGgo
KSAtIHZpc2libGVSZWN0LndpZHRoKCkpIC8gMjsKICAgICBlbHNlCi0gICAgICAgIHggPSBleHBv
c2VSZWN0LngoKTsKKyAgICAgICAgeCA9IHZpc2libGVSZWN0LngoKSAtIChib3VuZFJlY3QueCgp
IC0gZXhwb3NlUmVjdC54KCkpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBZ
IGJlaGF2aW9yLgogICAgIFNjcm9sbEJlaGF2aW9yIHNjcm9sbFk7CiAgICAgSW50UmVjdCBleHBv
c2VSZWN0WSh2aXNpYmxlUmVjdC54KCksIGV4cG9zZVJlY3QueSgpLCB2aXNpYmxlUmVjdC53aWR0
aCgpLCBleHBvc2VSZWN0LmhlaWdodCgpKTsKLSAgICBpbnQgaW50ZXJzZWN0SGVpZ2h0ID0gaW50
ZXJzZWN0aW9uKHZpc2libGVSZWN0LCBleHBvc2VSZWN0WSkuaGVpZ2h0KCk7CisgICAgaW50IGlu
dGVyc2VjdEhlaWdodCA9IGludGVyc2VjdGlvbihib3VuZFJlY3QsIGV4cG9zZVJlY3RZKS5oZWln
aHQoKTsKICAgICBpZiAoaW50ZXJzZWN0SGVpZ2h0ID09IGV4cG9zZVJlY3QuaGVpZ2h0KCkpCiAg
ICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVj
aWZpZWQgdmlzaWJsZSBiZWhhdmlvci4KICAgICAgICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVu
dDo6Z2V0VmlzaWJsZUJlaGF2aW9yKGFsaWduWSk7Ci0gICAgZWxzZSBpZiAoaW50ZXJzZWN0SGVp
Z2h0ID09IHZpc2libGVSZWN0LmhlaWdodCgpKSB7CisgICAgZWxzZSBpZiAoaW50ZXJzZWN0SGVp
Z2h0ID09IGJvdW5kUmVjdC5oZWlnaHQoKSkgewogICAgICAgICAvLyBJZiB0aGUgcmVjdCBpcyBi
aWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGNlbnRl
ci4gT3RoZXIgYWxpZ25tZW50cyB3aWxsIHdvcmsuCiAgICAgICAgIHNjcm9sbFkgPSBTY3JvbGxB
bGlnbm1lbnQ6OmdldFZpc2libGVCZWhhdmlvcihhbGlnblkpOwogICAgICAgICBpZiAoc2Nyb2xs
WSA9PSBhbGlnbkNlbnRlcikKQEAgLTE1MTksNyArMTU5Nyw3IEBAIEludFJlY3QgUmVuZGVyTGF5
ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBJbnRSZWN0ICZ2aXNpYmxlUmVjdCwgY29uc3QgSW50
UmVjdCAmCiAgICAgICAgIHNjcm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6OmdldEhpZGRlbkJlaGF2
aW9yKGFsaWduWSk7CiAgICAgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIGFsaWduIHRvIHRoZSBjbG9z
ZXN0IGVkZ2UsIGFuZCB0aGUgZXhwb3NlUmVjdCBpcyBmdXJ0aGVyIGRvd24KICAgICAvLyB0aGFu
IHRoZSB2aXNpYmxlUmVjdCwgYW5kIG5vdCBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCB0
aGVuIGFsaWduIHdpdGggdGhlIGJvdHRvbS4KLSAgICBpZiAoc2Nyb2xsWSA9PSBhbGlnblRvQ2xv
c2VzdEVkZ2UgJiYgZXhwb3NlUmVjdC5ib3R0b20oKSA+IHZpc2libGVSZWN0LmJvdHRvbSgpICYm
IGV4cG9zZVJlY3QuaGVpZ2h0KCkgPCB2aXNpYmxlUmVjdC5oZWlnaHQoKSkKKyAgICBpZiAoc2Ny
b2xsWSA9PSBhbGlnblRvQ2xvc2VzdEVkZ2UgJiYgZXhwb3NlUmVjdC5ib3R0b20oKSA+IGJvdW5k
UmVjdC5ib3R0b20oKSAmJiBleHBvc2VSZWN0LmhlaWdodCgpIDwgYm91bmRSZWN0LmhlaWdodCgp
KQogICAgICAgICBzY3JvbGxZID0gYWxpZ25Cb3R0b207CiAKICAgICAvLyBHaXZlbiB0aGUgWSBi
ZWhhdmlvciwgY29tcHV0ZSB0aGUgWSBjb29yZGluYXRlLgpAQCAtMTUyNywxMSArMTYwNSwxMSBA
QCBJbnRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCAmdmlz
aWJsZVJlY3QsIGNvbnN0IEludFJlY3QgJgogICAgIGlmIChzY3JvbGxZID09IG5vU2Nyb2xsKSAK
ICAgICAgICAgeSA9IHZpc2libGVSZWN0LnkoKTsKICAgICBlbHNlIGlmIChzY3JvbGxZID09IGFs
aWduQm90dG9tKQotICAgICAgICB5ID0gZXhwb3NlUmVjdC5ib3R0b20oKSAtIHZpc2libGVSZWN0
LmhlaWdodCgpOworICAgICAgICB5ID0gdmlzaWJsZVJlY3QueSgpICsgKGV4cG9zZVJlY3QuYm90
dG9tKCkgLSBib3VuZFJlY3QuYm90dG9tKCkpOwogICAgIGVsc2UgaWYgKHNjcm9sbFkgPT0gYWxp
Z25DZW50ZXIpCiAgICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKSArIChleHBvc2VSZWN0LmhlaWdo
dCgpIC0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkpIC8gMjsKICAgICBlbHNlCi0gICAgICAgIHkgPSBl
eHBvc2VSZWN0LnkoKTsKKyAgICAgICAgeSA9IHZpc2libGVSZWN0LnkoKSAtIChib3VuZFJlY3Qu
eSgpIC0gZXhwb3NlUmVjdC55KCkpOwogCiAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQoeCwg
eSksIHZpc2libGVSZWN0LnNpemUoKSk7CiB9CkBAIC0xNTUxLDcgKzE2MjksMTMgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6YXV0b3Njcm9sbCgpCiAjZW5kaWYKIAogICAgIEludFBvaW50IGN1cnJlbnRE
b2N1bWVudFBvc2l0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKSk7Ci0gICAgc2Nyb2xsUmVjdFRvVmlz
aWJsZShJbnRSZWN0KGN1cnJlbnREb2N1bWVudFBvc2l0aW9uLCBJbnRTaXplKDEsIDEpKSwgZmFs
c2UsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50
OjphbGlnblRvRWRnZUlmTmVlZGVkKTsKKyAgICBhdXRvc2Nyb2xsKEF1dG9zY3JvbGxCeUNhcmV0
LCBjdXJyZW50RG9jdW1lbnRQb3NpdGlvbik7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9z
Y3JvbGwoQXV0b3Njcm9sbFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIGN1cnJlbnREb2N1bWVu
dFBvc2l0aW9uKQoreworICAgIEFTU0VSVCh0eXBlICE9IEF1dG9zY3JvbGxCeVBvaW50ZXIgfHwg
c2hvdWxkQXV0b3Njcm9sbEJ5UG9pbnRlcihjdXJyZW50RG9jdW1lbnRQb3NpdGlvbikpOworICAg
IHNjcm9sbFJlY3RUb1Zpc2libGUoSW50UmVjdChjdXJyZW50RG9jdW1lbnRQb3NpdGlvbiwgSW50
U2l6ZSgxLCAxKSksIGZhbHNlLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQs
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgc2hyaW5rU2l6ZUZvcih0eXBl
KSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnJlc2l6ZShjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2dCwgY29uc3QgSW50U2l6ZSYgb2xkT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
aW5kZXggNjI0YmFkMjA1NDcxMmIwMDc4YTgwM2Q1NGZlOTg0YzJjYjc3NWRmYy4uNTllZDA5NzBk
MmVhYmMyMDRmNjU3OWQ5MjhmODFiMTA2YzE2NjczMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CkBAIC03Miw2ICs3Miw4IEBAIGNsYXNzIFJlbmRlckxheWVyQmFja2luZzsKIGNsYXNzIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjsKICNlbmRpZgogCitlbnVtIEF1dG9zY3JvbGxUeXBlIHsgQXV0b3Nj
cm9sbE5vbmUsIEF1dG9zY3JvbGxCeUNhcmV0LCBBdXRvc2Nyb2xsQnlQb2ludGVyIH07CisKIGNs
YXNzIENsaXBSZWN0cyB7CiBwdWJsaWM6CiAgICAgQ2xpcFJlY3RzKCkKQEAgLTI0Niw5ICsyNDgs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxUb09mZnNldChpbnQgeCwgaW50IHksIGJvb2wg
dXBkYXRlU2Nyb2xsYmFycyA9IHRydWUsIGJvb2wgcmVwYWludCA9IHRydWUpOwogICAgIHZvaWQg
c2Nyb2xsVG9YT2Zmc2V0KGludCB4KSB7IHNjcm9sbFRvT2Zmc2V0KHgsIG1fc2Nyb2xsWSk7IH0K
ICAgICB2b2lkIHNjcm9sbFRvWU9mZnNldChpbnQgeSkgeyBzY3JvbGxUb09mZnNldChtX3Njcm9s
bFggKyBtX3Njcm9sbE9yaWdpblgsIHkpOyB9Ci0gICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxl
KGNvbnN0IEludFJlY3QmLCBib29sIHNjcm9sbFRvQW5jaG9yID0gZmFsc2UsIGNvbnN0IFNjcm9s
bEFsaWdubWVudCYgYWxpZ25YID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVk
LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25D
ZW50ZXJJZk5lZWRlZCk7CisgICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJl
Y3QmLCBib29sIHNjcm9sbFRvQW5jaG9yID0gZmFsc2UsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYg
YWxpZ25YID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBjb25zdCBTY3Jv
bGxBbGlnbm1lbnQmIGFsaWduWSA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRl
ZCwgaW50IHNocmlua1NpemUgPSAwKTsKIAotICAgIEludFJlY3QgZ2V0UmVjdFRvRXhwb3NlKGNv
bnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBleHBvc2VSZWN0LCBjb25z
dCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkp
OworICAgIEludFJlY3QgZ2V0UmVjdFRvRXhwb3NlKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
LCBjb25zdCBJbnRSZWN0JiBleHBvc2VSZWN0LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWdu
WCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblksIGludCBzaHJpbmtTaXplKTsKIAogICAg
IHZvaWQgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sKTsKICAgICB2b2lkIHNldEhhc1Zl
cnRpY2FsU2Nyb2xsYmFyKGJvb2wpOwpAQCAtMjc2LDYgKzI3OCw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11
bHRpcGxpZXIgPSAxKTsKICAgICB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2b2lkIGF1dG9zY3Jv
bGwoQXV0b3Njcm9sbFR5cGUsIGNvbnN0IEludFBvaW50Jik7CisgICAgYm9vbCBzaG91bGRBdXRv
c2Nyb2xsQnlQb2ludGVyKGNvbnN0IEludFBvaW50Jik7CiAKICAgICB2b2lkIHJlc2l6ZShjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBJbnRTaXplJik7CiAgICAgYm9vbCBpblJlc2l6
ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2luUmVzaXplTW9kZTsgfQpAQCAtNTc0LDYgKzU3OCwx
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TXVzdE92ZXJsYXBDb21wb3NpdGVkTGF5ZXJzKGJv
b2wgYikgeyBtX211c3RPdmVybGFwQ29tcG9zaXRlZExheWVycyA9IGI7IH0KICNlbmRpZgogCisg
ICAgUmVuZGVyTGF5ZXIqIHBhcmVudEVuY2xvc2luZ0xheWVyKCkgY29uc3Q7CisgICAgYm9vbCBy
ZXN0cmljdGVkQnlMaW5lQ2xhbXAoKSBjb25zdDsKKyAgICBib29sIGhhc093bmVyKCkgY29uc3Q7
CisgICAgYm9vbCBpc091dGVybW9zdCgpIGNvbnN0OworICAgIEludFJlY3QgYXV0b3Njcm9sbEJv
dW5kcyhib29sIHNjcm9sbFRvQW5jaG9yKSBjb25zdDsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFJlbmRlckxheWVyQmFja2luZzsKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71721</attachid>
            <date>2010-10-25 01:15:19 -0700</date>
            <delta_ts>2011-01-25 21:29:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39725-20101025171517.patch</filename>
            <type>text/plain</type>
            <size>39424</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNDYzMzFjMDUyNzBkOTViYjhmNjU1NzVmYmNiZTZmMGJhZTFkY2IzLi4wYmZiYzky
NjEzZjNiN2IxY2VmMTdiYmVkYmM0NzFiNGNiMDJiNzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDctMDcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZ2dpbmcgb3ZlciBh
biBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4g
ZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk3MjUKKyAgICAgICAgaWZyYW1lIGFuZCBzY3JvbGxiYXIgd2l0aCAib3Zl
cmZsb3c6YXV0byIgc2hvdWxkIHN1cHBvcnQgYXV0b3Njcm9sbCB3aXRoIG1vdXNlZHJhZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5ODEKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS1leHBl
Y3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWNsaWNr
LWluLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdXRv
c2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvcmVzb3VyY2VzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0xMC0yMCAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVu
dC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNDg2Y2NiNDgzYTY2MTYwZThiY2I0
YzA1NGFlNzBhNjQ1ZTViNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvYXV0b3Njcm9sbC1wb2ludGVyLWVsZW1lbnQtaWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTUxOGJlZmY0Mzg0NTlmYzIyY2RjOWM0M2EyODVlNzFkMjMxYTllNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50
LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTkxIEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0v
L1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgorCSJodHRwOi8vd3d3LnczLm9y
Zy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+ICogeyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyB9IDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICB2YXIgZG9uZUNvdW50ID0gMDsKKyAg
ICAgICAKKyAgICAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgIHsKKyAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtc2cgKyAnXG4nKSk7CisgICAgICAgfQorCisgICAgICAgZnVuY3Rpb24gdGVz
dCgpCisgICAgICAgeworICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3RTY3JvbGxEaXYsIDApOworICAgICAgICAgICB9Cisg
ICAgICAgfQorCisgICAgICAgZnVuY3Rpb24gcmVzZXRTY3JvbGwoZWxlbWVudCkKKyAgICAgICB7
CisgICAgICAgICAgIHZhciBvbGQgPSBlbGVtZW50LnN0eWxlLmRpc3BsYXk7CisgICAgICAgICAg
IGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgICAgZWxlbWVudC5vZmZz
ZXRMZWZ0OyAvLyBGb3JjZSByZWxheW91dAorICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3Bs
YXkgPSBvbGQ7CisgICAgICAgICAgIGVsZW1lbnQub2Zmc2V0TGVmdDsgLy8gRm9yY2UgcmVsYXlv
dXQKKyAgICAgICAgICAgaWYgKDAgIT0gZWxlbWVudC5zY3JvbGxMZWZ0KQorICAgICAgICAgICAg
ICAgbG9nKCJGQUlMOiBzY3JvbGwgc3RhdGUgc2hvdWxkIGJlIGNsZWFyZWQiKTsKKyAgICAgICB9
CisKKyAgICAgICBmdW5jdGlvbiByZXNldFNjcm9sbHMoKQorICAgICAgIHsKKyAgICAgICAgICAg
cmVzZXRTY3JvbGwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbGFibGVEaXYiKSk7Cisg
ICAgICAgICAgIHJlc2V0U2Nyb2xsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JvbGxhYmxl
SUZyYW1lIikuY29udGVudERvY3VtZW50LmJvZHkpOworICAgICAgIH0KKworICAgICAgIGZ1bmN0
aW9uIHdhaXRVbnRpbChjcml0ZXJpYSkKKyAgICAgICB7CisgICAgICAgICAgIGlmIChjcml0ZXJp
YS5zYXRpc2ZpZWQoKSkgeworICAgICAgICAgICAgICBkb25lQ291bnQrKzsKKyAgICAgICAgICAg
ICAgY3JpdGVyaWEuZG9uZSgpOworICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBj
cml0ZXJpYS5zdGVwKCk7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHdh
aXRVbnRpbChjcml0ZXJpYSk7IH0sIDApOworICAgICAgICAgICB9CisgICAgICAgfQorCisgICAg
ICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxkaXY+LCB1c2luZyA8c3Bhbj4gaW5zaWRl
IHRoYXQgPGRpdj4uCisgICAgICAgZnVuY3Rpb24gdGVzdFNjcm9sbERpdigpCisgICAgICAgewor
ICAgICAgICAgICByZXNldFNjcm9sbHMoKTsKKyAgICAgICAgICAgdmFyIHNjcm9sbGFibGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsYWJsZURpdiIpOworICAgICAgICAgICB2YXIg
ZHJhZ2dhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZUZvckRpdiIpOwor
CisgICAgICAgICAgIHZhciBzdGFydFggPSBkcmFnZ2FibGUuY2xpZW50TGVmdCArIDU7CisgICAg
ICAgICAgIHZhciBzdGFydFkgPSBkcmFnZ2FibGUuY2xpZW50VG9wICsgNTsKKyAgICAgICAgICAg
dmFyIGJvcmRlclggPSBzY3JvbGxhYmxlLmNsaWVudExlZnQgKyBzY3JvbGxhYmxlLmNsaWVudFdp
ZHRoIC0gMTU7CisgICAgICAgICAgIHZhciBib3JkZXJZID0gc2Nyb2xsYWJsZS5jbGllbnRUb3Ag
KyAxMDsKKyAgICAgICAgICAgdmFyIGhhc1Njcm9sbCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCA8
IHNjcm9sbGFibGUuc2Nyb2xsTGVmdDsgfTsKKworICAgICAgICAgICBpZiAoaGFzU2Nyb2xsKCkp
CisgICAgICAgICAgICAgICBsb2coIkZBSUw6IHByZWNvbmRpdGlvbiBmb3IgdGVzdFNjcm9sbERp
diBmYWlsZWQiKTsKKworICAgICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOwor
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhib3JkZXJYLCBib3JkZXJZKTsKKworICAgICAgICAgICB3YWl0VW50aWwoewor
ICAgICAgICAgICAgICAgc2F0aXNmaWVkOiBoYXNTY3JvbGwsCisgICAgICAgICAgICAgICBzdGVw
OiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9yZGVyWCwgYm9yZGVyWSk7
IH0sCisgICAgICAgICAgICAgICBkb25lOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VV
cCgpOyB0ZXN0U2Nyb2xsSWZyYW1lKCk7IH0KKyAgICAgICAgICAgfSk7CisgICAgICAgfQorCisg
ICAgICAgLy8gU2Nyb2xsaW5nIGNvbnRlbnQgaW5zaWRlIDxpZnJhbWU+LCB1c2luZyA8c3Bhbj4g
aW5zaWRlIHRoZSBkb2N1bWVudCBvZiBzY3JvbGxpbmcgPGlmcmFtZT4uCisgICAgICAgZnVuY3Rp
b24gdGVzdFNjcm9sbElmcmFtZSgpCisgICAgICAgeworICAgICAgICAgICByZXNldFNjcm9sbHMo
KTsKKyAgICAgICAgICAgdmFyIHNjcm9sbGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c2Nyb2xsYWJsZUlGcmFtZSIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlID0gc2Nyb2xsYWJs
ZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZUZvcklGcmFtZSIpOwor
CisgICAgICAgICAgIHZhciBzdGFydFggPSBzY3JvbGxhYmxlLm9mZnNldExlZnQgKyBkcmFnZ2Fi
bGUub2Zmc2V0TGVmdCArIDU7CisgICAgICAgICAgIHZhciBzdGFydFkgPSBzY3JvbGxhYmxlLm9m
ZnNldFRvcCArIGRyYWdnYWJsZS5vZmZzZXRUb3AgKyA1OworICAgICAgICAgICB2YXIgYm9yZGVy
WCA9IHNjcm9sbGFibGUub2Zmc2V0TGVmdCArIHNjcm9sbGFibGUuY2xpZW50V2lkdGggLSAxNTsK
KyAgICAgICAgICAgdmFyIGJvcmRlclkgPSBzY3JvbGxhYmxlLm9mZnNldFRvcCArIDEwOworICAg
ICAgICAgICB2YXIgaGFzU2Nyb2xsID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIDwgc2Nyb2xsYWJs
ZS5jb250ZW50RG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OyB9OworCisgICAgICAgICAgIGlmICho
YXNTY3JvbGwoKSkKKyAgICAgICAgICAgICAgIGxvZygiRkFJTDogcHJlY29uZGl0aW9uIGZvciB0
ZXN0U2Nyb2xsSWZyYW1lIGZhaWxlZCIpOworCisgICAgICAgICAgIGV2ZW50U2VuZGVyLmRyYWdN
b2RlID0gZmFsc2U7CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwg
c3RhcnRZKTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGJvcmRlclgsIGJvcmRlclkpOworCisgICAgICAgICAg
IHdhaXRVbnRpbCh7CisgICAgICAgICAgICAgICBzYXRpc2ZpZWQ6IGhhc1Njcm9sbCwKKyAgICAg
ICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKCkgeyBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhib3Jk
ZXJYLCBib3JkZXJZKTsgfSwKKyAgICAgICAgICAgICAgIGRvbmU6IGZ1bmN0aW9uKCkgeyBldmVu
dFNlbmRlci5tb3VzZVVwKCk7IHRlc3RTY3JvbGxEaXZVc2luZ0RyYWdnYWJsZUZyb21JRnJhbWUo
KTsgfQorICAgICAgICAgICB9KTsKKyAgICAgICB9CisKKyAgICAgICAvLyBTY3JvbGxpbmcgY29u
dGVudCBpbnNpZGUgPGRpdj4sIHVzaW5nIDxzcGFuPiBmcm9tIGEgZm9yZWlnbiA8aWZyYW1lPi4K
KyAgICAgICBmdW5jdGlvbiB0ZXN0U2Nyb2xsRGl2VXNpbmdEcmFnZ2FibGVGcm9tSUZyYW1lKCkK
KyAgICAgICB7CisgICAgICAgICAgIHJlc2V0U2Nyb2xscygpOworICAgICAgICAgICB2YXIgc2Ny
b2xsYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JvbGxhYmxlRGl2Iik7CisgICAg
ICAgICAgIHZhciBkcmFnZ2FibGVQYXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Ny
b2xsYWJsZUlGcmFtZSIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlID0gZHJhZ2dhYmxlUGFy
ZW50LmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ2dhYmxlRm9ySUZyYW1lIik7
CisKKyAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyYWdnYWJsZVBhcmVudC5vZmZzZXRMZWZ0ICsg
ZHJhZ2dhYmxlLm9mZnNldExlZnQgKyA1OworICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJhZ2dh
YmxlUGFyZW50Lm9mZnNldFRvcCArIGRyYWdnYWJsZS5vZmZzZXRUb3AgKyA1OworICAgICAgICAg
ICB2YXIgYm9yZGVyWCA9IHNjcm9sbGFibGUuY2xpZW50TGVmdCArIHNjcm9sbGFibGUuY2xpZW50
V2lkdGggLSAxNTsKKyAgICAgICAgICAgdmFyIGJvcmRlclkgPSBzY3JvbGxhYmxlLmNsaWVudFRv
cCArIDEwOworICAgICAgICAgICB2YXIgaGFzU2Nyb2xsID0gZnVuY3Rpb24oKSB7IHJldHVybiAw
IDwgc2Nyb2xsYWJsZS5zY3JvbGxMZWZ0OyB9OworCisgICAgICAgICAgIGlmIChoYXNTY3JvbGwo
KSkKKyAgICAgICAgICAgICAgIGxvZygiRkFJTDogcHJlY29uZGl0aW9uIGZvciB0ZXN0U2Nyb2xs
RGl2VXNpbmdEcmFnZ2FibGVGcm9tSUZyYW1lIGZhaWxlZCIpOworCisgICAgICAgICAgIGV2ZW50
U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGJvcmRlclgsIGJvcmRlclkpOwor
CisgICAgICAgICAgIHdhaXRVbnRpbCh7CisgICAgICAgICAgICAgICBzYXRpc2ZpZWQ6IGhhc1Nj
cm9sbCwKKyAgICAgICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKCkgeyBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhib3JkZXJYLCBib3JkZXJZKTsgfSwKKyAgICAgICAgICAgICAgIGRvbmU6IGZ1bmN0
aW9uKCkgeyBldmVudFNlbmRlci5tb3VzZVVwKCk7IHRlc3RTY3JvbGxJRnJhbWVVc2luZ0RyYWdn
YWJsZUZyb21EaXYoKTsgfQorICAgICAgICAgICB9KTsKKyAgICAgICB9CisKKyAgICAgICAvLyBT
Y3JvbGxpbmcgY29udGVudCBpbnNpZGUgPGlmcmFtZS4+LCB1c2luZyA8c3Bhbj4gZnJvbSBhIGZv
cmVpZ24gPGRpdj4uCisgICAgICAgZnVuY3Rpb24gdGVzdFNjcm9sbElGcmFtZVVzaW5nRHJhZ2dh
YmxlRnJvbURpdigpCisgICAgICAgeworICAgICAgICAgICByZXNldFNjcm9sbHMoKTsKKyAgICAg
ICAgICAgdmFyIHNjcm9sbGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsYWJs
ZUlGcmFtZSIpOworICAgICAgICAgICB2YXIgZHJhZ2dhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImRyYWdnYWJsZUZvckRpdiIpOworCisgICAgICAgICAgIHZhciBzdGFydFggPSBkcmFn
Z2FibGUuY2xpZW50TGVmdCArIDU7CisgICAgICAgICAgIHZhciBzdGFydFkgPSBkcmFnZ2FibGUu
Y2xpZW50VG9wICsgNTsKKyAgICAgICAgICAgdmFyIGJvcmRlclggPSBzY3JvbGxhYmxlLm9mZnNl
dExlZnQgKyBzY3JvbGxhYmxlLmNsaWVudFdpZHRoIC0gMTU7CisgICAgICAgICAgIHZhciBib3Jk
ZXJZID0gc2Nyb2xsYWJsZS5vZmZzZXRUb3AgKyAxMDsKKyAgICAgICAgICAgdmFyIGhhc1Njcm9s
bCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCA8IHNjcm9sbGFibGUuY29udGVudERvY3VtZW50LmJv
ZHkuc2Nyb2xsTGVmdDsgfTsKKworICAgICAgICAgICBpZiAoaGFzU2Nyb2xsKCkpCisgICAgICAg
ICAgICAgICBsb2coIkZBSUw6IHByZWNvbmRpdGlvbiBmb3IgdGVzdFNjcm9sbElGcmFtZVVzaW5n
RHJhZ2dhYmxlRnJvbURpdiBmYWlsZWQiKTsKKworICAgICAgICAgICBldmVudFNlbmRlci5kcmFn
TW9kZSA9IGZhbHNlOworICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgs
IHN0YXJ0WSk7CisgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhib3JkZXJYLCBib3JkZXJZKTsKKworICAgICAgICAg
ICB3YWl0VW50aWwoeworICAgICAgICAgICAgICAgc2F0aXNmaWVkOiBoYXNTY3JvbGwsCisgICAg
ICAgICAgICAgICBzdGVwOiBmdW5jdGlvbigpIHsgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYm9y
ZGVyWCwgYm9yZGVyWSk7IH0sCisgICAgICAgICAgICAgICBkb25lOiBmdW5jdGlvbigpIHsgZXZl
bnRTZW5kZXIubW91c2VVcCgpOyBkb25lKCk7IH0KKyAgICAgICAgICAgfSk7CisgICAgICAgfQor
CisgICAgICAgZnVuY3Rpb24gZG9uZSgpCisgICAgICAgeworICAgICAgICAgICBpZiAoZG9uZUNv
dW50ICE9IDQpCisgICAgICAgICAgICAgICBsb2coIkZBSUw6IG1pc3NpbmcgdGVzdCBjYXNlcyIp
OworICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsYWJsZURpdiIpLnN0
eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgICAgIGxvZygiUEFTUyIpOworICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgfQorCisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKyAgIDxwcmUg
aWQ9InNjcm9sbGFibGVEaXYiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyB3aWR0aDogMTAwcHg7IG92
ZXJmbG93OiBhdXRvOyI+Cis8c3BhbiBkcmFnZ2FibGU9InRydWUiIGlkPSJkcmFnZ2FibGVGb3JE
aXYiPmRyYWdtZTwvc3Bhbj4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6
eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBx
dWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBm
b3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92
ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkg
ZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVp
Y2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZv
eCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVy
IHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRv
Zy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWlj
ayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gg
anVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0
aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cu
CitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sg
YnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1
bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhl
IGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4g
VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJy
b3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1w
cyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUg
bGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRo
ZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93
biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCisgICA8L3ByZT4KKyAgIDxpZnJhbWUgaWQ9
InNjcm9sbGFibGVJRnJhbWUiIHNyYz0icmVzb3VyY2VzL2F1dG9zY3JvbGwtcG9pbnRlci1lbGVt
ZW50LWlmcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAxMDBweDsgd2lkdGg6IDEwMHB4OyBvdmVy
ZmxvdzogYXV0bzsiPjwvaWZyYW1lPgorICAgPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291
cmNlcy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9hdXRvc2Nyb2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZmFlYTA5ZTQzZmY5YmM5ODRkZmE1MTA5YjBlYzY5NjJjNjNiMDhm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2F1
dG9zY3JvbGwtcG9pbnRlci1lbGVtZW50LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxo
dG1sPgorICAgIDxoZWFkPgorICAgIDwvaGVhZD4KKzxib2R5PgorPHByZT4KKzxzcGFuIGRyYWdn
YWJsZT0idHJ1ZSIgaWQ9ImRyYWdnYWJsZUZvcklGcmFtZSI+ZHJhZ21lPC9zcGFuPgorVGhlIHF1
aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZv
eCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVy
IHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRv
Zy4KK1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWlj
ayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gg
anVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0
aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9n
LiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sg
YnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1
bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRo
ZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4g
VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJy
b3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KK1RoZSBxdWljayBicm93biBmb3gganVt
cHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUg
bGF6eSBkb2cuIFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRo
ZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGUgcXVpY2sgYnJv
d24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBz
IG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxh
enkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorVGhl
IHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3du
IGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBv
dmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5
IGRvZy4KKzwvcHJlPgorPGJvZHk+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVjNDc1MGE3ZjJkNThmN2YxYjZmMjMyNjliNTQzYjE5ZTRm
ZmU2NzQuLjEyNzQ4NjU0OTNkYzQxMmIxYzZjODgzNmYyZjRlM2UwYTZiMWIzYTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjMgQEAKKzIwMTAtMDctMDcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZ2dpbmcg
b3ZlciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50
IHdoZW4gZHJhZ2dpbmcgbmVhciBlZGdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NzI1CisgICAgICAgIGlmcmFtZSB3aXRoICJvdmVyZmxvdzph
dXRvIiBzaG91bGQgc3VwcG9ydCBhdXRvc2Nyb2xsIHdpdGggbW91c2VkcmFnLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5ODEKKworICAgICAgICBU
aGlzIGNoYW5nZSBjb25zaXN0cyBvZiAyIHBhcnQgb2Ygd29yay4KKyAgICAgICAgCisgICAgICAg
IEZpcnN0IHBhcnQgaXMgYXJvdW5kIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKCksIHdoaWNoIGlz
CisgICAgICAgIG9yaWdpYW5hbGx5IGRlc2lnbmVkIGZvciBleHRlbmRpbmcgYSBzZWxlY3Rpb24g
KHdoaWNoIHdlIGNhbGwKKyAgICAgICAgQXV0b3Njcm9sbEJ5Q2FyZXQpLiBUaGlzIGNoYW5nZSBl
eHRlbmRlZCBzY3JvbGxSZWN0VG9WaXNpYmxlKCkgdG8KKyAgICAgICAgc3VwcG9ydCBhbiBhdXRv
c2Nyb2xsIHRyaWdnZXJlZCBieSBpdGVtLWRyYWdnaW5nIChBdXRvc2Nyb2xsQnlQb2ludGVyKS4K
KyAgICAgICAgCisgICAgICAgIEJlY2F1c2UgQXV0b3Njcm9sbEJ5UG9pbnRlciBmb3IgdGhlIG91
dGVybW9zdCBmcmFtZSBpcyBhbHJlYWR5CisgICAgICAgIHN1cHBvcnRlZCBieSBDb2NvYSdzIGJ1
aWx0LWluIGF1dG9zY3JvbGwgbWVjaGFuaXNtLCB3aGF0CisgICAgICAgIGltcGxlbWVudGVkIGhl
cmUgaXMgZm9yIGlubmVyIGZyYW1lcyBhbmQgZm9yIGVsZW1lbnRzIHdpdGgKKyAgICAgICAgb3Zl
cmZsb3c6YXV0by4gQW5kIHRoZSBvdXRlcm1vc3QgZnJhbWUgaXMgZXhwbGljaXRseSBza2lwcGVk
LgorICAgICAgICAKKyAgICAgICAgU2Vjb25kIHBhcnQgaXMgYXJvdW5kIERyYWdDb250cm9sbGVy
LiBXZSBpbnRyb2R1Y2VkCisgICAgICAgIERyYWdBdXRvc2Nyb2xsZXIgdG8gbWFrZSBBdXRvc2Ny
b2xsQnlQb2ludGVyIGhhcHBlbiBpbnNpZGUgdGhlCisgICAgICAgIERyYWdDb250cm9sbGVyLiBU
aGUgaW1wbGVtZW50YXRpb24gZm9sbG93cyB0aGUgV2ViVmlldydzIGF1dG9zY3JvbGwKKyAgICAg
ICAgYmVoYXZpb3IuCisgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9hdXRvc2Ny
b2xsLXBvaW50ZXItZWxlbWVudC1pZnJhbWUuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5iYXNl
LmV4cDoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpEcmFnQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0F1dG9z
Y3JvbGxlcjo6RHJhZ0F1dG9zY3JvbGxlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0F1dG9zY3JvbGxlcjo6ZGVhY3RpdmF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0F1dG9zY3JvbGxlcjo6bG9jYXRpb25VcGRhdGVkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQXV0b3Njcm9sbGVyOjp0aW1lckZpcmVkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQXV0b3Njcm9sbGVyOjpmaW5kTGF5ZXJGb3IpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdl
L0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpmaW5kQXV0b3Njcm9sbFJlbmRlcmVyKTogRXh0
cmFjdGVkIGZyb20gaGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW50UmVjdDo6aW5mbGF0ZVgpOgorICAgICAgICAoV2ViQ29yZTo6
SW50UmVjdDo6aW5mbGF0ZVkpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdDo6ZGVmbGF0ZSk6
IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsQnlSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzaHJpbmtTaXplRm9yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzaHJpbmtSZWN0KTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbEJvdW5kcyk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNob3VsZEF1dG9zY3JvbGxC
eVBvaW50ZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZXN0cmlj
dGVkQnlMaW5lQ2xhbXApOiBFeHRyYWN0ZWQgZnJvbSBhdXRvc2Nyb2xsKCkuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Z2V0UmVjdFRvRXhwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjphdXRvc2Nyb2xsKTogU3BsaXR0ZWQgaW50byAyIG92ZXJsb2FkZWQgbWV0
aG9kcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6Oik6IEFkZGVkIEF1dG9zY3JvbGxUeXBlIGVudW0uCisKIDIwMTAtMTAtMjAgIEtpbnVrbyBZ
YXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEppYW4g
TGkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCBjZDBiMTVhZTNiYjI1NTZiYjQ4YzMxODllNjU0MzdlN2JlNDk4OThkLi4y
MmI0OTJkZjk5ZDFkNzFmZmNlZDJhYTE3YTMyODYzN2Q4MTAxNzUxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIwMCw3
ICsyMDAsNyBAQCBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtQzFFUktOM1dURjZTdHJpbmdFUzRf
ZAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbUMxRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdF
UzdfUzdfCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtQzFFdgogX19aTjdXZWJDb3JlMTFIaXN0
b3J5SXRlbUQxRXYKLV9fWk43V2ViQ29yZTExUmVuZGVyTGF5ZXIxOXNjcm9sbFJlY3RUb1Zpc2li
bGVFUktOU183SW50UmVjdEViUktOU18xNVNjcm9sbEFsaWdubWVudEVTNl8KK19fWk43V2ViQ29y
ZTExUmVuZGVyTGF5ZXIxOXNjcm9sbFJlY3RUb1Zpc2libGVFUktOU183SW50UmVjdEViUktOU18x
NVNjcm9sbEFsaWdubWVudEVTNl9pCiBfX1pON1dlYkNvcmUxMWdsb2JhbFBvaW50RVJLOF9OU1Bv
aW50UDhOU1dpbmRvdwogX19aTjdXZWJDb3JlMTF0b1VzZXJTcGFjZUVSSzdfTlNSZWN0UDhOU1dp
bmRvdwogX19aTjdXZWJDb3JlMTF3cml0ZVRvRmlsZUVpUEtjaQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKaW5kZXggMmU3ZDI0MTc2M2IwMTU1Yzk1MzBjZjQ1M2RmY2IxZjFmZDkzNmQ5MC4uZGUyNWM5
OWNkYTA4Y2E4NzA5MDYwYTE2Zjk1ODQ0MmRlOTIyNThmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCkBAIC03MSw2ICs3MSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERy
YWdBdXRvc2Nyb2xsZXIgeworcHVibGljOgorICAgIERyYWdBdXRvc2Nyb2xsZXIoKTsKKyAgICB2
b2lkIGRlYWN0aXZhdGUoKTsKKyAgICB2b2lkIGxvY2F0aW9uVXBkYXRlZChEb2N1bWVudCosIGNv
bnN0IEludFBvaW50Jik7CisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPERyYWdBdXRvc2Nyb2xs
ZXI+Kik7Citwcml2YXRlOgorICAgIFJlbmRlckxheWVyKiBmaW5kTGF5ZXJGb3IoRG9jdW1lbnQq
LCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OworCisgICAgVGltZXI8RHJhZ0F1dG9zY3JvbGxlcj4g
bV90aW1lcjsKKyAgICBib29sIG1fYWN0aXZhdGVkOworfTsKKwogc3RhdGljIFBsYXRmb3JtTW91
c2VFdmVudCBjcmVhdGVNb3VzZUV2ZW50KERyYWdEYXRhKiBkcmFnRGF0YSkKIHsKICAgICBib29s
IHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXk7CkBAIC05MSw2ICsxMDQsNyBAQCBE
cmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIoUGFnZSogcGFnZSwgRHJhZ0NsaWVudCogY2xp
ZW50KQogICAgICwgbV9kaWRJbml0aWF0ZURyYWcoZmFsc2UpCiAgICAgLCBtX2lzSGFuZGxpbmdE
cmFnKGZhbHNlKQogICAgICwgbV9zb3VyY2VEcmFnT3BlcmF0aW9uKERyYWdPcGVyYXRpb25Ob25l
KQorICAgICwgbV9hdXRvc2Nyb2xsZXIobmV3IERyYWdBdXRvc2Nyb2xsZXIoKSkKIHsKIH0KIApA
QCAtMTc3LDYgKzE5MSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoRHJhZ0Rh
dGEqIGRyYWdEYXRhKQogICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9h
cmROdW1iKTsgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKICAg
ICB9CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudCgwKTsKKyAgICBtX2F1dG9zY3JvbGxlci0+
ZGVhY3RpdmF0ZSgpOwogfQogCiBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBk
YXRlZChEcmFnRGF0YSogZHJhZ0RhdGEpCkBAIC0yMzQsNiArMjQ5LDcgQEAgRHJhZ09wZXJhdGlv
biBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoRHJhZ0RhdGEqIGRyYWdEYXRh
KQogICAgIEFTU0VSVChkcmFnRGF0YSk7CiAgICAgQVNTRVJUKG1fcGFnZS0+bWFpbkZyYW1lKCkp
OyAvLyBJdCBpcyBub3QgcG9zc2libGUgaW4gTWFjIFdlYktpdCB0byBoYXZlIGEgUGFnZSB3aXRo
b3V0IGEgbWFpbkZyYW1lKCkKICAgICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS0+bWFp
bkZyYW1lKCktPmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSkpOwor
ICAgIG1fYXV0b3Njcm9sbGVyLT5sb2NhdGlvblVwZGF0ZWQobV9kb2N1bWVudFVuZGVyTW91c2Uu
Z2V0KCksIGRyYWdEYXRhLT5jbGllbnRQb3NpdGlvbigpKTsKIAogICAgIG1fZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uID0gbV9jbGllbnQtPmFjdGlvbk1hc2tGb3JEcmFnKGRyYWdEYXRhKTsKICAgICBp
ZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPT0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZSkg
ewpAQCAtODQwLDYgKzg1Niw2NCBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpwbGFjZURyYWdDYXJl
dChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCiAgICAgbV9wYWdlLT5kcmFnQ2FyZXRDb250
cm9sbGVyKCktPnNldFNlbGVjdGlvbihkcmFnQ2FyZXQpOwogfQogCitEcmFnQXV0b3Njcm9sbGVy
OjpEcmFnQXV0b3Njcm9sbGVyKCkKKyAgICA6IG1fdGltZXIodGhpcywgJkRyYWdBdXRvc2Nyb2xs
ZXI6OnRpbWVyRmlyZWQpCisgICAgLCBtX2FjdGl2YXRlZChmYWxzZSkKK3sKK30KKwordm9pZCBE
cmFnQXV0b3Njcm9sbGVyOjpkZWFjdGl2YXRlKCkKK3sKKyAgICBtX2FjdGl2YXRlZCA9IGZhbHNl
OworICAgIG1fdGltZXIuc3RvcCgpOworfQorCit2b2lkIERyYWdBdXRvc2Nyb2xsZXI6OmxvY2F0
aW9uVXBkYXRlZChEb2N1bWVudCogZG9jdW1lbnRVbmRlck1vdXNlLCBjb25zdCBJbnRQb2ludCYg
bG9jYXRpb24pCit7CisgICAgY29uc3QgZG91YmxlIGF1dG9zY3JvbGxEZWxheSA9IDAuNTsgLy8g
QXBwcm94aW1hdGVzIENvY29hJ3MgYmVoYXZpb3IKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9
IGZpbmRMYXllckZvcihkb2N1bWVudFVuZGVyTW91c2UsIGxvY2F0aW9uKTsKKyAgICBpZiAoIWxh
eWVyKSB7CisgICAgICAgIGRlYWN0aXZhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghbV9hY3RpdmF0ZWQpIHsKKyAgICAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChhdXRvc2Nyb2xsRGVsYXkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5ZXItPmF1dG9zY3JvbGwoQXV0b3Njcm9sbEJ5
UG9pbnRlciwgZG9jdW1lbnRVbmRlck1vdXNlLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobG9j
YXRpb24pKTsKK30KKwordm9pZCBEcmFnQXV0b3Njcm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPERy
YWdBdXRvc2Nyb2xsZXI+KikKK3sKKyAgICBtX2FjdGl2YXRlZCA9IHRydWU7Cit9CisKK1JlbmRl
ckxheWVyKiBEcmFnQXV0b3Njcm9sbGVyOjpmaW5kTGF5ZXJGb3IoRG9jdW1lbnQqIGRvY3VtZW50
VW5kZXJNb3VzZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAoreworICAgIGlmICgh
ZG9jdW1lbnRVbmRlck1vdXNlIHx8ICFkb2N1bWVudFVuZGVyTW91c2UtPnZpZXcoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBJbnRQb2ludCBkb2N1bWVudFBvc2l0aW9uID0gZG9jdW1lbnRV
bmRlck1vdXNlLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobG9jYXRpb24pOworICAgIE5vZGUq
IHRhcmdldCA9IGVsZW1lbnRVbmRlck1vdXNlKGRvY3VtZW50VW5kZXJNb3VzZSwgZG9jdW1lbnRQ
b3NpdGlvbik7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IEV2ZW50SGFuZGxlcjo6ZmluZEF1dG9zY3JvbGxSZW5kZXJl
cih0YXJnZXQpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAg
UmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyZXItPmVuY2xvc2luZ0xheWVyKCk7CisgICAgQVNT
RVJUKGxheWVyKTsKKyAgICBpZiAoIWxheWVyLT5zaG91bGRBdXRvc2Nyb2xsQnlQb2ludGVyKGRv
Y3VtZW50UG9zaXRpb24pKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBsYXllcjsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggMGU5MGE1MjlhZTUyNDEzMzkxMmRlYzQ0Y2Mx
OWUxNTJkMmE4ZTA3Yi4uMmM3MWM5ZjQ0ZDgwMTA1Y2ZhYWIyZjFlYjQ0YzViMzNhNjJiN2RmYyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTMwLDExICszMCwxMyBAQAogI2luY2x1ZGUgIkRyYWdJ
bWFnZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENsaXBib2Fy
ZDsKICAgICBjbGFzcyBEb2N1bWVudDsKKyAgICBjbGFzcyBEcmFnQXV0b3Njcm9sbGVyOwogICAg
IGNsYXNzIERyYWdDbGllbnQ7CiAgICAgY2xhc3MgRHJhZ0RhdGE7CiAgICAgY2xhc3MgRWxlbWVu
dDsKQEAgLTEyMyw2ICsxMjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdP
cGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4g
YSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0CiAgICAgICAgIElu
dFBvaW50IG1fZHJhZ09mZnNldDsKICAgICAgICAgS1VSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7Cisg
ICAgICAgIE93blB0cjxEcmFnQXV0b3Njcm9sbGVyPiBtX2F1dG9zY3JvbGxlcjsKICAgICB9Owog
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDI5NzAyNTkxZWViZmQzMTljYTRmOWVhMjA4OGE1
M2YxNzA1ODIwYzguLjU5NDZmZGU3Y2E4NDBkYzY0ZWM1MTcwMDhiYThlYzMzMzc2YmUzNzcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC01MDIsNiArNTAyLDIwIEBAIHN0YXRpYyBib29sIGNhbkF1
dG9zY3JvbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gcGFnZSAmJiBwYWdl
LT5tYWluRnJhbWUoKSA9PSBmcmFtZTsKIH0KIAorUmVuZGVyT2JqZWN0KiBFdmVudEhhbmRsZXI6
OmZpbmRBdXRvc2Nyb2xsUmVuZGVyZXIoTm9kZSogdGFyZ2V0Tm9kZSkKK3sKKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICB3aGlsZSAocmVu
ZGVyZXIgJiYgIWNhbkF1dG9zY3JvbGwocmVuZGVyZXIpKSB7CisgICAgICAgIGlmICghcmVuZGVy
ZXItPnBhcmVudCgpICYmIHJlbmRlcmVyLT5ub2RlKCkgPT0gcmVuZGVyZXItPmRvY3VtZW50KCkg
JiYgcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgcmVu
ZGVyZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgp
OworICAgIH0KKworICAgIHJldHVybiByZW5kZXJlcjsKK30KKworCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKQEAgLTUyMiwxNiArNTM2
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsICYmICFt
X3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsgICAgICAgICAgICAKLSAgICAgICAgLy8gRmluZCBhIHJl
bmRlcmVyIHRoYXQgY2FuIGF1dG9zY3JvbGwuCi0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSB0YXJnZXROb2RlLT5yZW5kZXJlcigpOwotICAgICAgICB3aGlsZSAocmVuZGVyZXIgJiYg
IWNhbkF1dG9zY3JvbGwocmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5w
YXJlbnQoKSAmJiByZW5kZXJlci0+bm9kZSgpID09IHJlbmRlcmVyLT5kb2N1bWVudCgpICYmIHJl
bmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgICAgICByZW5k
ZXJlciA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5w
YXJlbnQoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHJlbmRlcmVyKSB7Cisg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZmluZEF1dG9zY3JvbGxSZW5kZXJl
cih0YXJnZXROb2RlKSkgewogICAgICAgICAgICAgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyA9IHRy
dWU7CiAgICAgICAgICAgICBoYW5kbGVBdXRvc2Nyb2xsKHJlbmRlcmVyKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCmluZGV4IGNhMTlhMGNiNDljZDkwY2EwODFiMmY0YWU3OWVjYzNkZTliZWY5
NTguLjliNTBmZGZkY2Q3ODhjYWFjN2EwMjFkMjFlNDU4YWM5MDM5MWIzMGIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgIGJvb2wgc2hvdWxkRHJhZ0F1dG9Ob2RlKE5vZGUqLCBjb25zdCBJbnRQb2ludCYp
IGNvbnN0OyAvLyAtd2Via2l0LXVzZXItZHJhZyA9PSBhdXRvCisgICAgc3RhdGljIFJlbmRlck9i
amVjdCogZmluZEF1dG9zY3JvbGxSZW5kZXJlcihOb2RlKik7CiAjZW5kaWYKIAogICAgIGJvb2wg
c2hvdWxkVHVyblZlcnRpY2FsVGlja3NJbnRvSG9yaXpvbnRhbChjb25zdCBIaXRUZXN0UmVzdWx0
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3Qu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCmluZGV4IGM4ZDdjNzE3Zjcz
MzA5YmYyYTIyYTc5ZWRiYTI0ODQzMWY1ZWM3ODYuLmVhZGFiNzNkY2NhOTAyZmJjODRkNmZhY2Ew
ZWMyZTIzNWI5MWUzY2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCkBAIC0xMzMs
MTQgKzEzMywyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmZsYXRlWChpbnQgZHgpCiAgICAgewog
ICAgICAgICBtX2xvY2F0aW9uLnNldFgobV9sb2NhdGlvbi54KCkgLSBkeCk7Ci0gICAgICAgIG1f
c2l6ZS5zZXRXaWR0aChtX3NpemUud2lkdGgoKSArIGR4ICsgZHgpOworICAgICAgICBpZiAoMCA8
IG1fc2l6ZS53aWR0aCgpICsgZHggKyBkeCkKKyAgICAgICAgICAgIG1fc2l6ZS5zZXRXaWR0aCht
X3NpemUud2lkdGgoKSArIGR4ICsgZHgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Np
emUuc2V0V2lkdGgoMCk7CiAgICAgfQorCiAgICAgdm9pZCBpbmZsYXRlWShpbnQgZHkpCiAgICAg
ewogICAgICAgICBtX2xvY2F0aW9uLnNldFkobV9sb2NhdGlvbi55KCkgLSBkeSk7Ci0gICAgICAg
IG1fc2l6ZS5zZXRIZWlnaHQobV9zaXplLmhlaWdodCgpICsgZHkgKyBkeSk7CisgICAgICAgIGlm
ICgwIDwgbV9zaXplLmhlaWdodCgpICsgZHkgKyBkeSkKKyAgICAgICAgICAgIG1fc2l6ZS5zZXRI
ZWlnaHQobV9zaXplLmhlaWdodCgpICsgZHkgKyBkeSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fc2l6ZS5zZXRIZWlnaHQoMCk7CiAgICAgfQorCiAgICAgdm9pZCBpbmZsYXRlKGludCBk
KSB7IGluZmxhdGVYKGQpOyBpbmZsYXRlWShkKTsgfQorICAgIHZvaWQgZGVmbGF0ZShpbnQgZCkg
eyBpbmZsYXRlKC1kKTsgfQorCiAgICAgdm9pZCBzY2FsZShmbG9hdCBzKTsKIAogI2lmIFBMQVRG
T1JNKFdYKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDk4NDc1NWZjMWQ1OTI1MTVi
ZDU1NWQ3NTk4NzRjZjhhMTUwNTI5ODUuLmEwYTNmYzBjNTFjYTYzOGNiMGE3YWIwYjJkMDFjN2Ez
MTUzMTYwZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTEyNjcsMTEgKzEyNjcs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KGludCB4RGVsdGEsIGlu
dCB5RGVsdGEpCiAgICAgaWYgKCF4RGVsdGEgJiYgIXlEZWx0YSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYm9vbCByZXN0cmljdGVkQnlMaW5lQ2xhbXAgPSBmYWxzZTsKLSAgICBpZiAocmVuZGVy
ZXIoKS0+cGFyZW50KCkpCi0gICAgICAgIHJlc3RyaWN0ZWRCeUxpbmVDbGFtcCA9ICFyZW5kZXJl
cigpLT5wYXJlbnQoKS0+c3R5bGUoKS0+bGluZUNsYW1wKCkuaXNOb25lKCk7Ci0KLSAgICBpZiAo
cmVuZGVyZXIoKS0+aGFzT3ZlcmZsb3dDbGlwKCkgJiYgIXJlc3RyaWN0ZWRCeUxpbmVDbGFtcCkg
eworICAgIGlmIChyZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSAmJiAhcmVzdHJpY3RlZEJ5
TGluZUNsYW1wKCkpIHsKICAgICAgICAgaW50IG5ld09mZnNldFggPSBzY3JvbGxYT2Zmc2V0KCkg
KyB4RGVsdGE7CiAgICAgICAgIGludCBuZXdPZmZzZXRZID0gc2Nyb2xsWU9mZnNldCgpICsgeURl
bHRhOwogICAgICAgICBzY3JvbGxUb09mZnNldChuZXdPZmZzZXRYLCBuZXdPZmZzZXRZKTsKQEAg
LTEzOTgsOSArMTM5NCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvT2Zmc2V0KGludCB4
LCBpbnQgeSwgYm9vbCB1cGRhdGVTY3JvbGxiYXJzLCBib29sIHJlcGFpCiAgICAgfQogfQogCi12
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGJvb2wgc2Nyb2xsVG9BbmNob3IsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25z
dCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RU
b1Zpc2libGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwgY29uc3Qg
U2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZLCBp
bnQgc2hyaW5rU2l6ZSkKIHsKLSAgICBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIgPSAwOwogICAg
IEludFJlY3QgbmV3UmVjdCA9IHJlY3Q7CiAgICAgaW50IHhPZmZzZXQgPSAwLCB5T2Zmc2V0ID0g
MDsKIApAQCAtMTQxMCwxMyArMTQwNSw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RU
b1Zpc2libGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwKICAgICBp
ZiAoZnJhbWVWaWV3KQogICAgICAgICBmcmFtZVZpZXctPnBhdXNlU2NoZWR1bGVkRXZlbnRzKCk7
CiAKLSAgICBib29sIHJlc3RyaWN0ZWRCeUxpbmVDbGFtcCA9IGZhbHNlOwotICAgIGlmIChyZW5k
ZXJlcigpLT5wYXJlbnQoKSkgewotICAgICAgICBwYXJlbnRMYXllciA9IHJlbmRlcmVyKCktPnBh
cmVudCgpLT5lbmNsb3NpbmdMYXllcigpOwotICAgICAgICByZXN0cmljdGVkQnlMaW5lQ2xhbXAg
PSAhcmVuZGVyZXIoKS0+cGFyZW50KCktPnN0eWxlKCktPmxpbmVDbGFtcCgpLmlzTm9uZSgpOwot
ICAgIH0KKyAgICBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIgPSBwYXJlbnRFbmNsb3NpbmdMYXll
cigpOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPmhhc092ZXJmbG93Q2xpcCgpICYmICFyZXN0cmlj
dGVkQnlMaW5lQ2xhbXApIHsKKyAgICBpZiAocmVuZGVyZXIoKS0+aGFzT3ZlcmZsb3dDbGlwKCkg
JiYgIXJlc3RyaWN0ZWRCeUxpbmVDbGFtcCgpKSB7CiAgICAgICAgIC8vIERvbid0IHNjcm9sbCB0
byByZXZlYWwgYW4gb3ZlcmZsb3cgbGF5ZXIgdGhhdCBpcyByZXN0cmljdGVkIGJ5IHRoZSAtd2Vi
a2l0LWxpbmUtY2xhbXAgcHJvcGVydHkuCiAgICAgICAgIC8vIFRoaXMgd2lsbCBwcmV2ZW50IHVz
IGZyb20gcmV2ZWFsaW5nIHRleHQgaGlkZGVuIGJ5IHRoZSBzbGlkZXIgaW4gU2FmYXJpIFJTUy4K
ICAgICAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKQEAgLTE0MjYsNyArMTQxNyw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYg
cmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwKIAogICAgICAgICBJbnRSZWN0IGxheWVyQm91bmRz
ID0gSW50UmVjdChhYnNQb3MueCgpICsgc2Nyb2xsWE9mZnNldCgpLCBhYnNQb3MueSgpICsgc2Ny
b2xsWU9mZnNldCgpLCBib3gtPmNsaWVudFdpZHRoKCksIGJveC0+Y2xpZW50SGVpZ2h0KCkpOwog
ICAgICAgICBJbnRSZWN0IGV4cG9zZVJlY3QgPSBJbnRSZWN0KHJlY3QueCgpICsgc2Nyb2xsWE9m
ZnNldCgpLCByZWN0LnkoKSArIHNjcm9sbFlPZmZzZXQoKSwgcmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKTsKLSAgICAgICAgSW50UmVjdCByID0gZ2V0UmVjdFRvRXhwb3NlKGxheWVyQm91bmRz
LCBleHBvc2VSZWN0LCBhbGlnblgsIGFsaWduWSk7CisgICAgICAgIEludFJlY3QgciA9IGdldFJl
Y3RUb0V4cG9zZShsYXllckJvdW5kcywgZXhwb3NlUmVjdCwgYWxpZ25YLCBhbGlnblksIHNocmlu
a1NpemUpOwogICAgICAgICAKICAgICAgICAgeE9mZnNldCA9IHIueCgpIC0gYWJzUG9zLngoKTsK
ICAgICAgICAgeU9mZnNldCA9IHIueSgpIC0gYWJzUG9zLnkoKTsKQEAgLTE0NDUsOSArMTQzNiw5
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYg
cmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoIXBh
cmVudExheWVyICYmIHJlbmRlcmVyKCktPmlzQm94KCkgJiYgcmVuZGVyQm94KCktPmNhbkJlUHJv
Z3JhbWF0aWNhbGx5U2Nyb2xsZWQoc2Nyb2xsVG9BbmNob3IpKSB7CiAgICAgICAgIGlmIChmcmFt
ZVZpZXcpIHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLT5kb2N1bWVudCgpICYmIHJlbmRl
cmVyKCktPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpICYmIHJlbmRlcmVyKCktPmRvY3VtZW50
KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICBpZiAoaGFzT3du
ZXIoKSkgewogICAgICAgICAgICAgICAgIEludFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXctPnZp
c2libGVDb250ZW50UmVjdCgpOwotICAgICAgICAgICAgICAgIEludFJlY3QgciA9IGdldFJlY3RU
b0V4cG9zZSh2aWV3UmVjdCwgcmVjdCwgYWxpZ25YLCBhbGlnblkpOworICAgICAgICAgICAgICAg
IEludFJlY3QgciA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgcmVjdCwgYWxpZ25YLCBhbGln
blksIHNocmlua1NpemUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHhPZmZz
ZXQgPSByLngoKTsKICAgICAgICAgICAgICAgICB5T2Zmc2V0ID0gci55KCk7CkBAIC0xNDYxLDgg
KzE0NTIsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGJvb2wgc2Nyb2xsVG9BbmNob3IsCiAgICAgICAgICAgICAgICAgbmV3UmVj
dC5zZXRZKHJlY3QueSgpIC0gZnJhbWVWaWV3LT5zY3JvbGxZKCkgKyBmcmFtZVZpZXctPnkoKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEludFJlY3Qgdmlld1JlY3Qg
PSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwotICAgICAgICAgICAgICAgIEludFJl
Y3QgciA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgcmVjdCwgYWxpZ25YLCBhbGlnblkpOwot
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEludFJlY3QgciA9IGdldFJlY3RUb0V4
cG9zZSh2aWV3UmVjdCwgcmVjdCwgYWxpZ25YLCBhbGlnblksIHNocmlua1NpemUpOyAgICAgICAg
ICAgICAgICAKKwogICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+c2V0U2Nyb2xsUG9zaXRpb24o
ci5sb2NhdGlvbigpKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG91dGVybW9z
dCB2aWV3IG9mIGEgd2ViIHBhZ2UsIHNvIGFmdGVyIHNjcm9sbGluZyB0aGlzIHZpZXcgd2UKQEAg
LTE0NzksMjQgKzE0NzAsMTExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2li
bGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwKICAgICB9CiAgICAg
CiAgICAgaWYgKHBhcmVudExheWVyKQotICAgICAgICBwYXJlbnRMYXllci0+c2Nyb2xsUmVjdFRv
VmlzaWJsZShuZXdSZWN0LCBzY3JvbGxUb0FuY2hvciwgYWxpZ25YLCBhbGlnblkpOworICAgICAg
ICBwYXJlbnRMYXllci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShuZXdSZWN0LCBzY3JvbGxUb0FuY2hv
ciwgYWxpZ25YLCBhbGlnblksIHNocmlua1NpemUpOwogCiAgICAgaWYgKGZyYW1lVmlldykKICAg
ICAgICAgZnJhbWVWaWV3LT5yZXN1bWVTY2hlZHVsZWRFdmVudHMoKTsKIH0KIAotSW50UmVjdCBS
ZW5kZXJMYXllcjo6Z2V0UmVjdFRvRXhwb3NlKGNvbnN0IEludFJlY3QgJnZpc2libGVSZWN0LCBj
b25zdCBJbnRSZWN0ICZleHBvc2VSZWN0LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpCitzdGF0aWMgaW50IHNocmlua1NpemVGb3Io
QXV0b3Njcm9sbFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEF1
dG9zY3JvbGxCeVBvaW50ZXI6CisgICAgICAgIHJldHVybiAyNTsgLyogYXBwcm94aW1hdGVseSBz
YW1lIGFzIFdlYlZpZXcgZG9lcyBmb3Igb3V0ZXJtb3N0IGZyYW1lICovCisgICAgY2FzZSBBdXRv
c2Nyb2xsQnlDYXJldDoKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9
CisKK3N0YXRpYyBJbnRSZWN0IHNocmlua1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHNo
cmlua1NpemUpCiB7Ci0gICAgLy8gRGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBYIGJlaGF2aW9y
LgorICAgIEludFJlY3QgcmVzdWx0ID0gcmVjdDsKKyAgICByZXN1bHQuZGVmbGF0ZShzaHJpbmtT
aXplKTsKKyAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkKKyAgICAgICAgcmVzdWx0LnNldFNpemUo
SW50U2l6ZSgxLCAxKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSW50UmVjdCBSZW5kZXJM
YXllcjo6YXV0b3Njcm9sbEJvdW5kcyhib29sIHNjcm9sbFRvQW5jaG9yKSBjb25zdAoreworICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+dmlldygpOwor
ICAgIFJlbmRlckxheWVyKiBwYXJlbnRMYXllciA9IHBhcmVudEVuY2xvc2luZ0xheWVyKCk7Cisg
ICAgaWYgKHJlbmRlcmVyKCktPmhhc092ZXJmbG93Q2xpcCgpICYmICFyZXN0cmljdGVkQnlMaW5l
Q2xhbXAoKSkgeworICAgICAgICAvLyBEb24ndCBzY3JvbGwgdG8gcmV2ZWFsIGFuIG92ZXJmbG93
IGxheWVyIHRoYXQgaXMgcmVzdHJpY3RlZCBieSB0aGUgLXdlYmtpdC1saW5lLWNsYW1wIHByb3Bl
cnR5LgorICAgICAgICAvLyBUaGlzIHdpbGwgcHJldmVudCB1cyBmcm9tIHJldmVhbGluZyB0ZXh0
IGhpZGRlbiBieSB0aGUgc2xpZGVyIGluIFNhZmFyaSBSU1MuCisgICAgICAgIFJlbmRlckJveCog
Ym94ID0gcmVuZGVyQm94KCk7CisgICAgICAgIEFTU0VSVChib3gpOworICAgICAgICBGbG9hdFBv
aW50IGFic1BvcyA9IGJveC0+bG9jYWxUb0Fic29sdXRlKCk7CisgICAgICAgIGFic1Bvcy5tb3Zl
KGJveC0+Ym9yZGVyTGVmdCgpLCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICAgICAgcmV0dXJuIElu
dFJlY3QoYWJzUG9zLngoKSwgYWJzUG9zLnkoKSwgYm94LT5jbGllbnRXaWR0aCgpLCBib3gtPmNs
aWVudEhlaWdodCgpKTsKKyAgICB9IAorCisgICAgaWYgKCFwYXJlbnRMYXllciAmJiByZW5kZXJl
cigpLT5pc0JveCgpICYmIHJlbmRlckJveCgpLT5jYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVk
KHNjcm9sbFRvQW5jaG9yKSkgeworICAgICAgICBpZiAoZnJhbWVWaWV3KSB7CisgICAgICAgICAg
ICBpZiAoaGFzT3duZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPnZpc2libGVD
b250ZW50UmVjdCh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKyAKKyAgICByZXR1cm4gSW50UmVj
dCgpOworfQorCitib29sIFJlbmRlckxheWVyOjpzaG91bGRBdXRvc2Nyb2xsQnlQb2ludGVyKGNv
bnN0IEludFBvaW50JiBjdXJyZW50RG9jdW1lbnRQb3NpdGlvbikKK3sKKyAgICAvLyBBdXRvc2Ny
b2xsQnlQb2ludGVyIGZvciBvdXRlcm1vc3QgZnJhbWUgaXMgZG9uZSBieSBXZWJWaWV3LCBzbyB3
ZSBzaG91bGQgc2tpcCBpdC4KKyAgICBpZiAoaXNPdXRlcm1vc3QoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gQXV0b3Njcm9sbEJ5UG9pbnRlciBkb2Vzbid0IGhhcHBlbiB3aGVu
IGl0cyBwb3NpdGlvbiBpcyBvdXRzaWRlCisgICAgLy8gdGhlIGZyYW1lLCBvciBpbnNpZGUgdGhl
IHRocmVzaG91bGQgb2YgdGhhdCBmcmFtZS4KKyAgICBJbnRSZWN0IG91dGVyQm91bmQgPSBhdXRv
c2Nyb2xsQm91bmRzKGZhbHNlKTsKKyAgICBJbnRSZWN0IGlubmVyQm91bmQgPSBzaHJpbmtSZWN0
KG91dGVyQm91bmQsIHNocmlua1NpemVGb3IoQXV0b3Njcm9sbEJ5UG9pbnRlcikpOworICAgIGlm
ICghb3V0ZXJCb3VuZC5jb250YWlucyhjdXJyZW50RG9jdW1lbnRQb3NpdGlvbikgfHwgaW5uZXJC
b3VuZC5jb250YWlucyhjdXJyZW50RG9jdW1lbnRQb3NpdGlvbikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6
OnBhcmVudEVuY2xvc2luZ0xheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+
cGFyZW50KCkgPyByZW5kZXJlcigpLT5wYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKSA6IDA7Cit9
CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OnJlc3RyaWN0ZWRCeUxpbmVDbGFtcCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlbmRlcmVyKCktPnBhcmVudCgpICYmICFyZW5kZXJlcigpLT5wYXJlbnQoKS0+
c3R5bGUoKS0+bGluZUNsYW1wKCkuaXNOb25lKCk7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXI6Omhh
c093bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSAmJiBy
ZW5kZXJlcigpLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSAmJiByZW5kZXJlcigpLT5kb2N1
bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKK30KKworYm9vbCBSZW5kZXJMYXll
cjo6aXNPdXRlcm1vc3QoKSBjb25zdAoreworICAgIHJldHVybiAhcGFyZW50KCkgJiYgIWhhc093
bmVyKCk7Cit9CisKK0ludFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBJ
bnRSZWN0ICZ2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCAmZXhwb3NlUmVjdCwgY29uc3QgU2Ny
b2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZLCBpbnQg
c2hyaW5rU2l6ZSkKK3sKKwogICAgIFNjcm9sbEJlaGF2aW9yIHNjcm9sbFg7CiAgICAgSW50UmVj
dCBleHBvc2VSZWN0WChleHBvc2VSZWN0LngoKSwgdmlzaWJsZVJlY3QueSgpLCBleHBvc2VSZWN0
LndpZHRoKCksIHZpc2libGVSZWN0LmhlaWdodCgpKTsKLSAgICBpbnQgaW50ZXJzZWN0V2lkdGgg
PSBpbnRlcnNlY3Rpb24odmlzaWJsZVJlY3QsIGV4cG9zZVJlY3RYKS53aWR0aCgpOworCisgICAg
Ly8gV2UgdXNlIGJvdW5kUmVjdCBmb3IgYXV0b3Njcm9sbC4KKyAgICAvLyBJZiB0aGUgZXhwb3Nl
UmVjdCBpcyBjcm9zc2luZyAob3Igb3V0c2lkZSkgdGhlIGJvdW5kUmVjdCwgd2UgdHJ5IHRvIG1h
a2UgdGhlIHJlc3VsdCBzdGF5aW5nIGluc2lkZSB0aGF0IGJvdW5kLgorICAgIC8vIE5vdGUgdGhh
dCBib3VuZFJlY3Qgd2l0aCB6ZXJvIHNocmlua1NpemUgaGFzIG5vIGVmZmVjdC4KKyAgICBJbnRS
ZWN0IGJvdW5kUmVjdCA9IHNocmlua1JlY3QodmlzaWJsZVJlY3QsIHNocmlua1NpemUpOworCisg
ICAgaW50IGludGVyc2VjdFdpZHRoID0gaW50ZXJzZWN0aW9uKGJvdW5kUmVjdCwgZXhwb3NlUmVj
dFgpLndpZHRoKCk7CiAgICAgaWYgKGludGVyc2VjdFdpZHRoID09IGV4cG9zZVJlY3Qud2lkdGgo
KSB8fCBpbnRlcnNlY3RXaWR0aCA+PSBNSU5fSU5URVJTRUNUX0ZPUl9SRVZFQUwpCiAgICAgICAg
IC8vIElmIHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQg
dmlzaWJsZSBiZWhhdmlvci4KICAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBpcyBwYXJ0aWFs
bHkgdmlzaWJsZSwgYnV0IG92ZXIgYSBjZXJ0YWluIHRocmVzaG9sZCwKICAgICAgICAgLy8gdGhl
biB0cmVhdCBpdCBhcyBmdWxseSB2aXNpYmxlIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGhvcml6b250
YWwgc2Nyb2xsaW5nCiAgICAgICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OmdldFZpc2li
bGVCZWhhdmlvcihhbGlnblgpOwotICAgIGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID09IHZpc2li
bGVSZWN0LndpZHRoKCkpIHsKKyAgICBlbHNlIGlmIChpbnRlcnNlY3RXaWR0aCA9PSBib3VuZFJl
Y3Qud2lkdGgoKSkgewogICAgICAgICAvLyBJZiB0aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0aGUg
dmlzaWJsZSBhcmVhLCBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxpZ25t
ZW50cyB3aWxsIHdvcmsuCiAgICAgICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OmdldFZp
c2libGVCZWhhdmlvcihhbGlnblgpOwogICAgICAgICBpZiAoc2Nyb2xsWCA9PSBhbGlnbkNlbnRl
cikKQEAgLTE1MDgsNyArMTU4Niw3IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4
cG9zZShjb25zdCBJbnRSZWN0ICZ2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCAmCiAgICAgICAg
IHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OmdldEhpZGRlbkJlaGF2aW9yKGFsaWduWCk7CiAg
ICAgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIGFsaWduIHRvIHRoZSBjbG9zZXN0IGVkZ2UsIGFuZCB0
aGUgZXhwb3NlUmVjdCBpcyBmdXJ0aGVyIHJpZ2h0CiAgICAgLy8gdGhhbiB0aGUgdmlzaWJsZVJl
Y3QsIGFuZCBub3QgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgdGhlbiBhbGlnbiB3aXRo
IHRoZSByaWdodC4KLSAgICBpZiAoc2Nyb2xsWCA9PSBhbGlnblRvQ2xvc2VzdEVkZ2UgJiYgZXhw
b3NlUmVjdC5yaWdodCgpID4gdmlzaWJsZVJlY3QucmlnaHQoKSAmJiBleHBvc2VSZWN0LndpZHRo
KCkgPCB2aXNpYmxlUmVjdC53aWR0aCgpKQorICAgIGlmIChzY3JvbGxYID09IGFsaWduVG9DbG9z
ZXN0RWRnZSAmJiBleHBvc2VSZWN0LnJpZ2h0KCkgPiBib3VuZFJlY3QucmlnaHQoKSAmJiBleHBv
c2VSZWN0LndpZHRoKCkgPCBib3VuZFJlY3Qud2lkdGgoKSkKICAgICAgICAgc2Nyb2xsWCA9IGFs
aWduUmlnaHQ7CiAKICAgICAvLyBHaXZlbiB0aGUgWCBiZWhhdmlvciwgY29tcHV0ZSB0aGUgWCBj
b29yZGluYXRlLgpAQCAtMTUxNiwyMCArMTU5NCwyMCBAQCBJbnRSZWN0IFJlbmRlckxheWVyOjpn
ZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3Qg
JgogICAgIGlmIChzY3JvbGxYID09IG5vU2Nyb2xsKSAKICAgICAgICAgeCA9IHZpc2libGVSZWN0
LngoKTsKICAgICBlbHNlIGlmIChzY3JvbGxYID09IGFsaWduUmlnaHQpCi0gICAgICAgIHggPSBl
eHBvc2VSZWN0LnJpZ2h0KCkgLSB2aXNpYmxlUmVjdC53aWR0aCgpOworICAgICAgICB4ID0gdmlz
aWJsZVJlY3QueCgpICsgKGV4cG9zZVJlY3QucmlnaHQoKSAtIGJvdW5kUmVjdC5yaWdodCgpKTsK
ICAgICBlbHNlIGlmIChzY3JvbGxYID09IGFsaWduQ2VudGVyKQogICAgICAgICB4ID0gZXhwb3Nl
UmVjdC54KCkgKyAoZXhwb3NlUmVjdC53aWR0aCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgoKSkgLyAy
OwogICAgIGVsc2UKLSAgICAgICAgeCA9IGV4cG9zZVJlY3QueCgpOworICAgICAgICB4ID0gdmlz
aWJsZVJlY3QueCgpIC0gKGJvdW5kUmVjdC54KCkgLSBleHBvc2VSZWN0LngoKSk7CiAKICAgICAv
LyBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIFkgYmVoYXZpb3IuCiAgICAgU2Nyb2xsQmVoYXZp
b3Igc2Nyb2xsWTsKICAgICBJbnRSZWN0IGV4cG9zZVJlY3RZKHZpc2libGVSZWN0LngoKSwgZXhw
b3NlUmVjdC55KCksIHZpc2libGVSZWN0LndpZHRoKCksIGV4cG9zZVJlY3QuaGVpZ2h0KCkpOwot
ICAgIGludCBpbnRlcnNlY3RIZWlnaHQgPSBpbnRlcnNlY3Rpb24odmlzaWJsZVJlY3QsIGV4cG9z
ZVJlY3RZKS5oZWlnaHQoKTsKKyAgICBpbnQgaW50ZXJzZWN0SGVpZ2h0ID0gaW50ZXJzZWN0aW9u
KGJvdW5kUmVjdCwgZXhwb3NlUmVjdFkpLmhlaWdodCgpOwogICAgIGlmIChpbnRlcnNlY3RIZWln
aHQgPT0gZXhwb3NlUmVjdC5oZWlnaHQoKSkKICAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBp
cyBmdWxseSB2aXNpYmxlLCB1c2UgdGhlIHNwZWNpZmllZCB2aXNpYmxlIGJlaGF2aW9yLgogICAg
ICAgICBzY3JvbGxZID0gU2Nyb2xsQWxpZ25tZW50OjpnZXRWaXNpYmxlQmVoYXZpb3IoYWxpZ25Z
KTsKLSAgICBlbHNlIGlmIChpbnRlcnNlY3RIZWlnaHQgPT0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkp
IHsKKyAgICBlbHNlIGlmIChpbnRlcnNlY3RIZWlnaHQgPT0gYm91bmRSZWN0LmhlaWdodCgpKSB7
CiAgICAgICAgIC8vIElmIHRoZSByZWN0IGlzIGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEs
IGRvbid0IGJvdGhlciB0cnlpbmcgdG8gY2VudGVyLiBPdGhlciBhbGlnbm1lbnRzIHdpbGwgd29y
ay4KICAgICAgICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6Z2V0VmlzaWJsZUJlaGF2aW9y
KGFsaWduWSk7CiAgICAgICAgIGlmIChzY3JvbGxZID09IGFsaWduQ2VudGVyKQpAQCAtMTU0MSw3
ICsxNjE5LDcgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6Z2V0UmVjdFRvRXhwb3NlKGNvbnN0IElu
dFJlY3QgJnZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0ICYKICAgICAgICAgc2Nyb2xsWSA9IFNj
cm9sbEFsaWdubWVudDo6Z2V0SGlkZGVuQmVoYXZpb3IoYWxpZ25ZKTsKICAgICAvLyBJZiB3ZSdy
ZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRnZSwgYW5kIHRoZSBleHBvc2VSZWN0
IGlzIGZ1cnRoZXIgZG93bgogICAgIC8vIHRoYW4gdGhlIHZpc2libGVSZWN0LCBhbmQgbm90IGJp
Z2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0aCB0aGUgYm90dG9tLgot
ICAgIGlmIChzY3JvbGxZID09IGFsaWduVG9DbG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0LmJvdHRv
bSgpID4gdmlzaWJsZVJlY3QuYm90dG9tKCkgJiYgZXhwb3NlUmVjdC5oZWlnaHQoKSA8IHZpc2li
bGVSZWN0LmhlaWdodCgpKQorICAgIGlmIChzY3JvbGxZID09IGFsaWduVG9DbG9zZXN0RWRnZSAm
JiBleHBvc2VSZWN0LmJvdHRvbSgpID4gYm91bmRSZWN0LmJvdHRvbSgpICYmIGV4cG9zZVJlY3Qu
aGVpZ2h0KCkgPCBib3VuZFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgIHNjcm9sbFkgPSBhbGlnbkJv
dHRvbTsKIAogICAgIC8vIEdpdmVuIHRoZSBZIGJlaGF2aW9yLCBjb21wdXRlIHRoZSBZIGNvb3Jk
aW5hdGUuCkBAIC0xNTQ5LDExICsxNjI3LDExIEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJl
Y3RUb0V4cG9zZShjb25zdCBJbnRSZWN0ICZ2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCAmCiAg
ICAgaWYgKHNjcm9sbFkgPT0gbm9TY3JvbGwpIAogICAgICAgICB5ID0gdmlzaWJsZVJlY3QueSgp
OwogICAgIGVsc2UgaWYgKHNjcm9sbFkgPT0gYWxpZ25Cb3R0b20pCi0gICAgICAgIHkgPSBleHBv
c2VSZWN0LmJvdHRvbSgpIC0gdmlzaWJsZVJlY3QuaGVpZ2h0KCk7CisgICAgICAgIHkgPSB2aXNp
YmxlUmVjdC55KCkgKyAoZXhwb3NlUmVjdC5ib3R0b20oKSAtIGJvdW5kUmVjdC5ib3R0b20oKSk7
CiAgICAgZWxzZSBpZiAoc2Nyb2xsWSA9PSBhbGlnbkNlbnRlcikKICAgICAgICAgeSA9IGV4cG9z
ZVJlY3QueSgpICsgKGV4cG9zZVJlY3QuaGVpZ2h0KCkgLSB2aXNpYmxlUmVjdC5oZWlnaHQoKSkg
LyAyOwogICAgIGVsc2UKLSAgICAgICAgeSA9IGV4cG9zZVJlY3QueSgpOworICAgICAgICB5ID0g
dmlzaWJsZVJlY3QueSgpIC0gKGJvdW5kUmVjdC55KCkgLSBleHBvc2VSZWN0LnkoKSk7CiAKICAg
ICByZXR1cm4gSW50UmVjdChJbnRQb2ludCh4LCB5KSwgdmlzaWJsZVJlY3Quc2l6ZSgpKTsKIH0K
QEAgLTE1NzMsNyArMTY1MSwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKCkKICNl
bmRpZgogCiAgICAgSW50UG9pbnQgY3VycmVudERvY3VtZW50UG9zaXRpb24gPSBmcmFtZVZpZXct
PndpbmRvd1RvQ29udGVudHMoZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3Np
dGlvbigpKTsKLSAgICBzY3JvbGxSZWN0VG9WaXNpYmxlKEludFJlY3QoY3VycmVudERvY3VtZW50
UG9zaXRpb24sIEludFNpemUoMSwgMSkpLCBmYWxzZSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRv
RWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQpOworICAg
IGF1dG9zY3JvbGwoQXV0b3Njcm9sbEJ5Q2FyZXQsIGN1cnJlbnREb2N1bWVudFBvc2l0aW9uKTsK
K30KKwordm9pZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9sbChBdXRvc2Nyb2xsVHlwZSB0eXBlLCBj
b25zdCBJbnRQb2ludCYgY3VycmVudERvY3VtZW50UG9zaXRpb24pCit7CisgICAgQVNTRVJUKHR5
cGUgIT0gQXV0b3Njcm9sbEJ5UG9pbnRlciB8fCBzaG91bGRBdXRvc2Nyb2xsQnlQb2ludGVyKGN1
cnJlbnREb2N1bWVudFBvc2l0aW9uKSk7CisgICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShJbnRSZWN0
KGN1cnJlbnREb2N1bWVudFBvc2l0aW9uLCBJbnRTaXplKDEsIDEpKSwgZmFsc2UsIFNjcm9sbEFs
aWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRn
ZUlmTmVlZGVkLCBzaHJpbmtTaXplRm9yKHR5cGUpKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6
cmVzaXplKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0LCBjb25zdCBJbnRTaXplJiBvbGRP
ZmZzZXQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA4MmVkYWIyNWQ5MjhiMDg0ZjIwYzdl
NWQ1YTFjMmIzN2ZjYTQxYmVjLi4yMDQ2ZmI3MDM5ZDJiNTg4M2I5ODI0ZWU2MWNlY2E1Mjg3ZjVi
NmE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTcyLDYgKzcyLDggQEAgY2xhc3MgUmVu
ZGVyTGF5ZXJCYWNraW5nOwogY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogI2VuZGlmCiAK
K2VudW0gQXV0b3Njcm9sbFR5cGUgeyBBdXRvc2Nyb2xsTm9uZSwgQXV0b3Njcm9sbEJ5Q2FyZXQs
IEF1dG9zY3JvbGxCeVBvaW50ZXIgfTsKKwogY2xhc3MgQ2xpcFJlY3RzIHsKIHB1YmxpYzoKICAg
ICBDbGlwUmVjdHMoKQpAQCAtMjQ2LDkgKzI0OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9s
bFRvT2Zmc2V0KGludCB4LCBpbnQgeSwgYm9vbCB1cGRhdGVTY3JvbGxiYXJzID0gdHJ1ZSwgYm9v
bCByZXBhaW50ID0gdHJ1ZSk7CiAgICAgdm9pZCBzY3JvbGxUb1hPZmZzZXQoaW50IHgpIHsgc2Ny
b2xsVG9PZmZzZXQoeCwgbV9zY3JvbGxZKTsgfQogICAgIHZvaWQgc2Nyb2xsVG9ZT2Zmc2V0KGlu
dCB5KSB7IHNjcm9sbFRvT2Zmc2V0KG1fc2Nyb2xsWCArIG1fc2Nyb2xsT3JpZ2luWCwgeSk7IH0K
LSAgICB2b2lkIHNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYsIGJvb2wgc2Nyb2xs
VG9BbmNob3IgPSBmYWxzZSwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblggPSBTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25ZID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkKTsKKyAgICB2b2lkIHNj
cm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYsIGJvb2wgc2Nyb2xsVG9BbmNob3IgPSBm
YWxzZSwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblggPSBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduQ2VudGVySWZOZWVkZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZID0gU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBpbnQgc2hyaW5rU2l6ZSA9IDApOwogCi0g
ICAgSW50UmVjdCBnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNv
bnN0IEludFJlY3QmIGV4cG9zZVJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBj
b25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSk7CisgICAgSW50UmVjdCBnZXRSZWN0VG9FeHBv
c2UoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGV4cG9zZVJlY3Qs
IGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFs
aWduWSwgaW50IHNocmlua1NpemUpOwogCiAgICAgdm9pZCBzZXRIYXNIb3Jpem9udGFsU2Nyb2xs
YmFyKGJvb2wpOwogICAgIHZvaWQgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCk7CkBAIC0y
NzYsNiArMjc4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEpOwogICAgIHZvaWQgYXV0
b3Njcm9sbCgpOworICAgIHZvaWQgYXV0b3Njcm9sbChBdXRvc2Nyb2xsVHlwZSwgY29uc3QgSW50
UG9pbnQmKTsKKyAgICBib29sIHNob3VsZEF1dG9zY3JvbGxCeVBvaW50ZXIoY29uc3QgSW50UG9p
bnQmKTsKIAogICAgIHZvaWQgcmVzaXplKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0
IEludFNpemUmKTsKICAgICBib29sIGluUmVzaXplTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5S
ZXNpemVNb2RlOyB9CkBAIC01NzYsNiArNTgwLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRN
dXN0T3ZlcmxhcENvbXBvc2l0ZWRMYXllcnMoYm9vbCBiKSB7IG1fbXVzdE92ZXJsYXBDb21wb3Np
dGVkTGF5ZXJzID0gYjsgfQogI2VuZGlmCiAKKyAgICBSZW5kZXJMYXllciogcGFyZW50RW5jbG9z
aW5nTGF5ZXIoKSBjb25zdDsKKyAgICBib29sIHJlc3RyaWN0ZWRCeUxpbmVDbGFtcCgpIGNvbnN0
OworICAgIGJvb2wgaGFzT3duZXIoKSBjb25zdDsKKyAgICBib29sIGlzT3V0ZXJtb3N0KCkgY29u
c3Q7CisgICAgSW50UmVjdCBhdXRvc2Nyb2xsQm91bmRzKGJvb2wgc2Nyb2xsVG9BbmNob3IpIGNv
bnN0OwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJCYWNraW5nOwogICAg
IGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176933</attachid>
            <date>2012-11-30 03:05:42 -0800</date>
            <delta_ts>2012-12-04 23:37:56 -0800</delta_ts>
            <desc>WIP Patch 2.0</desc>
            <filename>bug-39725-20121130200314.patch</filename>
            <type>text/plain</type>
            <size>21209</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE1YTk2M2M4ZDc4MDI5
ZTQ5Zjc1MzY4NzIxNzNlYzM2YjVkNjBkZC4uZjcwYjM0MThiOWZkNDAxMzM0YTI2MGVmYThiNjAy
YzE0Y2I3YzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTExLTMwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGlzIHdvcmsgaW4gcHJvZ3Jlc3MgcGF0Y2ggZm9yIGFyY2hpdGVj
dHVyZSByZXZpZXcuCisKKyAgICAgICAgQXV0b3Njcm9sbCBmb3IgZHJhZyBhbmQgZHJvcCBpcyBz
dGFydGVkIHdoZW4gbW91c2UgcG9pbnRlciBpbgorICAgICAgICBib3JkZXIgYmVsdCBvdmVyIDAu
MiBzZWNvbmQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE9wdGlv
bmFsQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRBdXRvc2Nyb2xsYWJsZVJlbmRlcmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0b3Njcm9sbCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoRXZlbnRIYW5kbGVyOjpj
bGVhckRyYWdTdGF0ZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbEluUHJvZ3Jlc3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojph
dXRvc2Nyb2xsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChS
ZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmg6CisgICAgICAgIChSZW5kZXJMYXllcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6
YXV0b3Njcm9sbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKyAgICAg
ICAgKFJlbmRlckxpc3RCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjphdXRvc2Nyb2xsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmg6CisgICAgICAgIChSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgor
CiAyMDEyLTExLTI5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM2MTcxLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGRhN2QyMjM4YzM0MmI2ZmYzNzU0MDlmYTgwYWViY2Zk
MDcwMjQ0YzMuLjY3NTBjMDM5NDY0NmNkZDJmMmZiMjI2NWQ0NmNjMDFmYjhkNTkwZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEzMyw2ICsxMzMsMTMgQEAgY29uc3Qg
aW50IENvbXBvc2l0aW9uRXZlbnRLZXlDb2RlID0gMjI5OwogdXNpbmcgbmFtZXNwYWNlIFNWR05h
bWVzOwogI2VuZGlmCiAKKy8vIERlbGF5IHRpbWUgaW4gc2Vjb25kIGZvciBzdGFydCBhdXRvc2Ny
b2xsIGlmIHBvaW50ZXIgaXMgaW4gYm9yZGVyIGVkZ2Ugb2Ygc2Nyb2xsYWJsZSBlbGVtZW50Lgor
Y29uc3QgZG91YmxlIGF1dG9zY3JvbGxEZWxheSA9IDAuMjsKKworLy8gU2l6ZSBvZiBib3JkZXIg
YmVsdCBmb3IgYXV0b3Njcm9sbC4gV2hlbiBtb3VzZSBwb2ludGVyIGluIGJvcmRlciBiZWx0LAor
Ly8gYXV0b3Njcm9sbCBpcyBzdGFydGVkLgorY29uc3QgaW50IGF1dG9zY3JvbGxCZWx0U2l6ZSA9
IDIwOworCiAvLyBXaGVuIHRoZSBhdXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwgaXMgdHJpZ2dl
cmVkIHdoZW4gZG8gdGhlIHNjcm9sbCBldmVyeSAwLjA1cyB0byBtYWtlIGl0IHNtb290aAogY29u
c3QgZG91YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CiAKQEAgLTE1MSw2ICsxNTgsNyBA
QCBjb25zdCBkb3VibGUgZmFrZU1vdXNlTW92ZUludGVydmFsUmVkdWN0aW9uRnJhY3Rpb24gPSAw
Ljc1OwogZW51bSBOb0N1cnNvckNoYW5nZVR5cGUgeyBOb0N1cnNvckNoYW5nZSB9OwogCiBjbGFz
cyBPcHRpb25hbEN1cnNvciB7CisKIHB1YmxpYzoKICAgICBPcHRpb25hbEN1cnNvcihOb0N1cnNv
ckNoYW5nZVR5cGUpIDogbV9pc0N1cnNvckNoYW5nZShmYWxzZSkgeyB9CiAgICAgT3B0aW9uYWxD
dXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpIDogbV9pc0N1cnNvckNoYW5nZSh0cnVlKSwgbV9j
dXJzb3IoY3Vyc29yKSB7IH0KQEAgLTMzOCw3ICszNDYsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50
SGFuZGxlcihGcmFtZSogZnJhbWUpCiAgICAgLCBtX2hvdmVyVGltZXIodGhpcywgJkV2ZW50SGFu
ZGxlcjo6aG92ZXJUaW1lckZpcmVkKQogICAgICwgbV9hdXRvc2Nyb2xsVGltZXIodGhpcywgJkV2
ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQpCiAgICAgLCBtX2F1dG9zY3JvbGxSZW5k
ZXJlcigwKQotICAgICwgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyhmYWxzZSkKKyAgICAsIG1fYXV0
b3Njcm9sbFR5cGUoQXV0b3Njcm9sbE5vbmUpCiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0
b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZShmYWxzZSkKICAg
ICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1v
dXNlTW92ZUV2ZW50VGltZXJGaXJlZCwgZmFrZU1vdXNlTW92ZU1pbmltdW1JbnRlcnZhbCkKQEAg
LTcyNCw2ICs3MzIsMzYgQEAgc3RhdGljIGJvb2wgY2FuQXV0b3Njcm9sbChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpID09IGZyYW1l
OwogfQogCitzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcihS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHdoaWxlIChyZW5kZXJlciAmJiAhY2FuQXV0
b3Njcm9sbChyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKCFyZW5kZXJlci0+cGFyZW50KCkgJiYg
cmVuZGVyZXItPm5vZGUoKSA9PSByZW5kZXJlci0+ZG9jdW1lbnQoKSAmJiByZW5kZXJlci0+ZG9j
dW1lbnQoKS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVy
LT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisgICAgfQorICAgIHJl
dHVybiByZW5kZXJlcjsKK30KKworLy8gSWYgc3BlY2lmaWVkIHBvaW50IGlzIGluIGJvcmRlciBi
ZWx0LCByZXR1cm5lZCBvZmZzZXQgZGVub3RlcyBkaXJlY3Rpb24gb2YKKy8vIHNjcm9sbGluZy4K
K3N0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24oUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIEludFJlY3QgYm94KHJl
bmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICBJbnRTaXplIG9mZnNldDsK
KyAgICBpZiAocG9pbnQueCgpIDwgYm94LngoKSArIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAg
ICAgb2Zmc2V0LmV4cGFuZCgtYXV0b3Njcm9sbEJlbHRTaXplLCAwKTsKKyAgICBlbHNlIGlmIChw
b2ludC54KCkgPiBib3gubWF4WCgpIC0gYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAgICBvZmZz
ZXQuZXhwYW5kKGF1dG9zY3JvbGxCZWx0U2l6ZSwgMCk7CisKKyAgICBpZiAocG9pbnQueSgpIDwg
Ym94LnkoKSArIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAgICAgb2Zmc2V0LmV4cGFuZCgwLCAt
YXV0b3Njcm9sbEJlbHRTaXplKTsKKyAgICBlbHNlIGlmIChwb2ludC55KCkgPiBib3gubWF4WSgp
IC0gYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAgICBvZmZzZXQuZXhwYW5kKDAsIGF1dG9zY3Jv
bGxCZWx0U2l6ZSk7CisKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKQEAgLTc1MSwxOSArNzg5
LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsICYmICFt
X3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsgICAgICAgICAgICAKLSAgICAgICAgLy8gRmluZCBhIHJl
bmRlcmVyIHRoYXQgY2FuIGF1dG9zY3JvbGwuCi0gICAgICAgIHdoaWxlIChyZW5kZXJlciAmJiAh
Y2FuQXV0b3Njcm9sbChyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXItPnBh
cmVudCgpICYmIHJlbmRlcmVyLT5ub2RlKCkgPT0gcmVuZGVyZXItPmRvY3VtZW50KCkgJiYgcmVu
ZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIHJlbmRl
cmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBh
cmVudCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocmVuZGVyZXIpIHsKLSAg
ICAgICAgICAgIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICAgICAgaGFu
ZGxlQXV0b3Njcm9sbChyZW5kZXJlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHNjcm9sbGFibGUgPSBmaW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcihy
ZW5kZXJlcikpCisgICAgICAgICAgICBoYW5kbGVBdXRvc2Nyb2xsKEF1dG9zY3JvbGxGb3JTZWxl
Y3Rpb24sIHNjcm9sbGFibGUpOwogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9s
bCA9IGZhbHNlOwogICAgIH0KIApAQCAtOTMxLDcgKzk1OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
KQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7Ci0gICAgaWYgKG1fYXV0b3Njcm9s
bEluUHJvZ3Jlc3MpCisgICAgaWYgKG1fYXV0b3Njcm9sbFR5cGUgIT0gQXV0b3Njcm9sbE5vbmUp
CiAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIAogICAgIGlmIChoYW5kbGVNb3VzZVVw
KGV2ZW50KSkKQEAgLTk4NiwxMSArMTAxMywxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZQog
ICAgIHJldHVybiBoYW5kbGVkOwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0b3Nj
cm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBFdmVudEhhbmRsZXI6OmhhbmRsZUF1
dG9zY3JvbGwoQXV0b3Njcm9sbFR5cGUgYXV0b3Njcm9sbFR5cGUsIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiB7CisgICAgbV9hdXRvc2Nyb2xsVHlwZSA9IGF1dG9zY3JvbGxUeXBlOworCiAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHRoZSBhdXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3Jv
bGwgaWYgaXQncyBhbHJlYWR5IGFjdGl2ZQogICAgIGlmIChtX2F1dG9zY3JvbGxUaW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICByZXR1cm47ICAgICAKKyAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0
QXV0b3Njcm9sbFJlbmRlcmVyKHJlbmRlcmVyKTsKIApAQCAtMTAxOSwyNCArMTA0OCw0MiBAQCB2
b2lkIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVy
PiopCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9n
cmVzcykgewotICAgICAgICBpZiAoIW1fbW91c2VQcmVzc2VkKSB7Ci0gICAgICAgICAgICBzdG9w
QXV0b3Njcm9sbFRpbWVyKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgdG9SZW5kZXJCb3gociktPmF1dG9zY3JvbGwoKTsKLSAgICB9IGVsc2UgeworICAgIFJlbmRl
ckJveCogYm94ID0gdG9SZW5kZXJCb3gocik7CisgICAgc3dpdGNoIChtX2F1dG9zY3JvbGxUeXBl
KSB7CisgICAgY2FzZSBBdXRvc2Nyb2xsTm9uZToKICAgICAgICAgLy8gd2UgdmVyaWZ5IHRoYXQg
dGhlIG1haW4gZnJhbWUgaGFzbid0IHJlY2VpdmVkIHRoZSBvcmRlciB0byBzdG9wIHRoZSBwYW5T
Y3JvbGwKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAg
ICAgICAgIGlmICghcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tX3BhblNjcm9s
bEluUHJvZ3Jlc3MpIHsKICAgICAgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgICAgIHVwZGF0
ZVBhblNjcm9sbFN0YXRlKCk7Ci0gICAgICAgIHRvUmVuZGVyQm94KHIpLT5wYW5TY3JvbGwobV9w
YW5TY3JvbGxTdGFydFBvcyk7CisgICAgICAgIGJveC0+cGFuU2Nyb2xsKG1fcGFuU2Nyb2xsU3Rh
cnRQb3MpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBdXRvc2Nyb2xsRm9y
U2VsZWN0aW9uOgorICAgICAgICBpZiAobV9tb3VzZVByZXNzZWQpIHsKKyNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQorICAgICAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCk7CiAj
ZW5kaWYKKyAgICAgICAgICAgIGJveC0+YXV0b3Njcm9sbChjdXJyZW50TW91c2VQb3NpdGlvbigp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBdXRvc2Nyb2xsRm9yUGFuOgorICAgICAgICBpZiAo
bV9tb3VzZVByZXNzZWQpCisgICAgICAgICAgICBib3gtPmF1dG9zY3JvbGwoY3VycmVudE1vdXNl
UG9zaXRpb24oKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGlt
ZXIoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJv
cDoKKyAgICAgICAgYm94LT5hdXRvc2Nyb2xsKGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgKyBjYWxj
dWxhdGVBdXRvc2Nyb2xsRGlyZWN0aW9uKHIsIGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkpKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xMDQ2LDcgKzEwOTMsNyBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAg
ICBtX3BhblNjcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwogICAgIG1fcGFuU2Nyb2xsQnV0dG9uUHJl
c3NlZCA9IHRydWU7Ci0gICAgaGFuZGxlQXV0b3Njcm9sbChyZW5kZXJlcik7CisgICAgaGFuZGxl
QXV0b3Njcm9sbChBdXRvc2Nyb2xsRm9yUGFuLCByZW5kZXJlcik7CiAgICAgaW52YWxpZGF0ZUNs
aWNrKCk7CiB9CiAKQEAgLTExOTksNyArMTI0Niw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFy
dEF1dG9zY3JvbGxUaW1lcigpCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRp
bWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKQogewotICAgIGlmIChtX2F1dG9zY3Jv
bGxJblByb2dyZXNzKSB7CisgICAgaWYgKG1fYXV0b3Njcm9sbFR5cGUgIT0gQXV0b3Njcm9sbE5v
bmUpIHsKICAgICAgICAgaWYgKG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZSkgewogICAgICAgICAg
ICAgaWYgKEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtX21vdXNlUHJl
c3NOb2RlLmdldCgpKSkKICAgICAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnN0b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKTsKQEAgLTEyMDgs
NyArMTI1NSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wg
cmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKQogICAgIH0KIAogICAgIGlmIChhdXRvc2Nyb2xsUmVu
ZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCAmJiAobV9h
dXRvc2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MpKQorICAgICAgICBp
ZiAoIXJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCAmJiAobV9hdXRvc2Nyb2xsVHlwZSAhPSBBdXRv
c2Nyb2xsTm9uZSB8fCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MpKQogICAgICAgICAgICAgdG9SZW5k
ZXJCb3goYXV0b3Njcm9sbFJlbmRlcmVyKCkpLT5zdG9wQXV0b3Njcm9sbCgpOwogI2lmIEVOQUJM
RShQQU5fU0NST0xMSU5HKQogICAgICAgICBpZiAobV9wYW5TY3JvbGxJblByb2dyZXNzKSB7CkBA
IC0xMjM0LDcgKzEyODEsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1l
cihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCkKICAgICAgICAgICAgIG1haW5GcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIH0KIAot
ICAgIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBtX21vdXNlSW5Cb3JkZXJC
ZWx0U3RhcnRUaW1lID0gMDsKKyAgICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbE5vbmU7
CiB9CiAKIE5vZGUqIEV2ZW50SGFuZGxlcjo6bW91c2VQcmVzc05vZGUoKSBjb25zdApAQCAtMTYz
NSw3ICsxNjgzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgLy8gV2Ugc3RvcmUgd2hl
dGhlciBwYW4gc2Nyb2xsaW5nIGlzIGluIHByb2dyZXNzIGJlZm9yZSBjYWxsaW5nIHN0b3BBdXRv
c2Nyb2xsVGltZXIoKQogICAgIC8vIGJlY2F1c2UgaXQgd2lsbCBzZXQgbV9wYW5TY3JvbGxJblBy
b2dyZXNzIHRvIGZhbHNlIG9uIHJldHVybi4KICAgICBib29sIGlzUGFuU2Nyb2xsSW5Qcm9ncmVz
cyA9IG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzOwotICAgIGlmIChpc1BhblNjcm9sbElu
UHJvZ3Jlc3MgfHwgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykKKyAgICBpZiAoaXNQYW5TY3JvbGxJ
blByb2dyZXNzIHx8IG1fYXV0b3Njcm9sbFR5cGUgIT0gQXV0b3Njcm9sbE5vbmUpCiAgICAgICAg
IHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKICAgICBpZiAoaXNQYW5TY3JvbGxJblByb2dyZXNzKSB7
CiAgICAgICAgIC8vIFdlIGludmFsaWRhdGUgdGhlIGNsaWNrIHdoZW4gZXhpdGluZyBwYW4gc2Ny
b2xsaW5nIHNvIHRoYXQgd2UgZG9uJ3QgaW5hZHZlcnRlbnRseSBuYXZpZ2F0ZQpAQCAtMjEwNiwx
MiArMjE1NCw0MyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogCiAgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZXZlbnQpOwor
ICAgIG1fY3VycmVudE1vdXNlUG9zaXRpb24gPSBldmVudC5wb3NpdGlvbigpOworICAgIG1fY3Vy
cmVudE1vdXNlR2xvYmFsUG9zaXRpb24gPSBldmVudC5nbG9iYWxQb3NpdGlvbigpOwogCiAgICAg
Ly8gRHJhZyBldmVudHMgc2hvdWxkIG5ldmVyIGdvIHRvIHRleHQgbm9kZXMgKGZvbGxvd2luZyBJ
RSwgYW5kIHByb3BlciBtb3VzZW92ZXIvb3V0IGRpc3BhdGNoKQogICAgIFJlZlB0cjxOb2RlPiBu
ZXdUYXJnZXQgPSBtZXYudGFyZ2V0Tm9kZSgpOwogICAgIGlmIChuZXdUYXJnZXQgJiYgbmV3VGFy
Z2V0LT5pc1RleHROb2RlKCkpCiAgICAgICAgIG5ld1RhcmdldCA9IG5ld1RhcmdldC0+cGFyZW50
Tm9kZSgpOwogCisgICAgaWYgKG5ld1RhcmdldCkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbmV3VGFyZ2V0LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICAgICAgcmVuZGVyZXIgPSBuZXdUYXJnZXQtPnBhcmVudE5vZGUoKSA/IG5ld1Rhcmdl
dC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJlcigpIDogMDsKKyAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogc2Nyb2xsYWJsZSA9IGZpbmRBdXRvc2Nyb2xsYWJsZVJlbmRlcmVyKHJlbmRlcmVyKSkgewor
ICAgICAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBjYWxjdWxhdGVBdXRvc2Nyb2xsRGlyZWN0aW9u
KHNjcm9sbGFibGUsIG1fY3VycmVudE1vdXNlUG9zaXRpb24pOworICAgICAgICAgICAgaWYgKG9m
ZnNldC5pc1plcm8oKSkKKyAgICAgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChtX2F1dG9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG9zY3JvbGxSZW5kZXJlcigpICE9IHNjcm9sbGFibGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAgICAgICAgICAgICAg
ICAgICBtX21vdXNlSW5Cb3JkZXJCZWx0U3RhcnRUaW1lID0gZXZlbnQudGltZXN0YW1wKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHNldEF1dG9zY3JvbGxSZW5kZXJlcihzY3JvbGxhYmxlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFtX21vdXNlSW5Cb3JkZXJC
ZWx0U3RhcnRUaW1lKSB7CisgICAgICAgICAgICAgICAgbV9tb3VzZUluQm9yZGVyQmVsdFN0YXJ0
VGltZSA9IGV2ZW50LnRpbWVzdGFtcCgpOworICAgICAgICAgICAgICAgIHNldEF1dG9zY3JvbGxS
ZW5kZXJlcihzY3JvbGxhYmxlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudGltZXN0
YW1wKCkgLSBtX21vdXNlSW5Cb3JkZXJCZWx0U3RhcnRUaW1lID4gYXV0b3Njcm9sbERlbGF5KQor
ICAgICAgICAgICAgICAgIGlmIChhdXRvc2Nyb2xsUmVuZGVyZXIoKSA9PSBzY3JvbGxhYmxlKQor
ICAgICAgICAgICAgICAgICAgICBoYW5kbGVBdXRvc2Nyb2xsKEF1dG9zY3JvbGxGb3JEcmFnQW5k
RHJvcCwgc2Nyb2xsYWJsZSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fbW91c2VJbkJvcmRlckJlbHRTdGFydFRpbWUgPSBldmVudC50aW1lc3RhbXAoKTsK
KyAgICAgICAgICAgICAgICAgICAgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKHNjcm9sbGFibGUpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0
b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChtX2RyYWdU
YXJnZXQgIT0gbmV3VGFyZ2V0KSB7CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIG9yZGVyaW5nIHdh
cyBleHBsaWNpdGx5IGNob3NlbiB0byBtYXRjaCBXaW5JRS4gSG93ZXZlciwKICAgICAgICAgLy8g
aXQgaXMgc29tZXRpbWVzIGluY29ycmVjdCB3aGVuIGRyYWdnaW5nIHdpdGhpbiBzdWJmcmFtZXMs
IGFzIHNlZW4gd2l0aApAQCAtMjE5NSw2ICsyMjc0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBl
cmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9h
cmQKIAogdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyRHJhZ1N0YXRlKCkKIHsKKyAgICBzdG9wQXV0
b3Njcm9sbFRpbWVyKCk7CiAgICAgbV9kcmFnVGFyZ2V0ID0gMDsKICAgICBtX2NhcHR1cmluZ01v
dXNlRXZlbnRzTm9kZSA9IDA7CiAgICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IGMxNTg5OGEwMjY0OWRlYWMx
YTkxYzljN2IwZTNlMjk3ZTgxMjgzODkuLjI2NjU0YjYyMzllZGE5MDE4ZDEwNTM4ZTAxMzg3NTBm
YjY0ZmY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVy
Qm94LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJUZXh0RXZlbnRJbnB1
dFR5cGUuaCIKICNpbmNsdWRlICJUZXh0R3JhbnVsYXJpdHkuaCIKQEAgLTExNCw3ICsxMTUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0Jl
aW5nRGVzdHJveWVkID0gZmFsc2UpOwogICAgIFJlbmRlck9iamVjdCogYXV0b3Njcm9sbFJlbmRl
cmVyKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKTsKLSAgICBi
b29sIGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvc2Nyb2xsSW5Q
cm9ncmVzczsgfQorICAgIGJvb2wgYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVy
biBtX2F1dG9zY3JvbGxUeXBlICE9IEF1dG9zY3JvbGxOb25lOyB9CiAKICAgICB2b2lkIGRpc3Bh
dGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYpOwpAQCAtMjQ0LDYgKzI0NSw3IEBA
IHB1YmxpYzoKICAgICBib29sIHVzZUhhbmRDdXJzb3IoTm9kZSosIGJvb2wgaXNPdmVyTGluaywg
Ym9vbCBzaGlmdEtleSk7CiAKIHByaXZhdGU6CisgICAgZW51bSBBdXRvc2Nyb2xsVHlwZSB7IEF1
dG9zY3JvbGxOb25lLCBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3AsIEF1dG9zY3JvbGxGb3JTZWxl
Y3Rpb24sIEF1dG9zY3JvbGxGb3JQYW4gfTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAg
IHN0YXRpYyBEcmFnU3RhdGUmIGRyYWdTdGF0ZSgpOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
VGV4dERyYWdEZWxheTsKQEAgLTI3NSw3ICsyNzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBo
b3ZlclRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopOwogCi0gICAgdm9pZCBoYW5kbGVB
dXRvc2Nyb2xsKFJlbmRlck9iamVjdCopOworICAgIHZvaWQgaGFuZGxlQXV0b3Njcm9sbChBdXRv
c2Nyb2xsVHlwZSwgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxUaW1l
cigpOwogICAgIHZvaWQgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCopOwogICAg
IHZvaWQgYXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopOwpAQCAtNDA2
LDcgKzQwOCw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVGltZXI8RXZlbnRIYW5kbGVyPiBtX2F1
dG9zY3JvbGxUaW1lcjsKICAgICBSZW5kZXJPYmplY3QqIG1fYXV0b3Njcm9sbFJlbmRlcmVyOwot
ICAgIGJvb2wgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsKKyAgICBBdXRvc2Nyb2xsVHlwZSBtX2F1
dG9zY3JvbGxUeXBlOworICAgIGRvdWJsZSBtX21vdXNlSW5Cb3JkZXJCZWx0U3RhcnRUaW1lOwog
ICAgIGJvb2wgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7CiAgICAgYm9vbCBtX21vdXNl
RG93bldhc0luU3ViZnJhbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
aW5kZXggNDRmM2RlMTFhMmJkODgzMjY0NTNmZGNkMWQ3OWVmZjdiNjc1NTZjZi4uNTMwOWNmODAw
YzlmYjg5MGU3Mjk0NDViMmI0ODIyNDVkNTQ3ZmNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKQEAgLTYyNywxMCArNjI3LDEwIEBAIGJvb2wgUmVuZGVyQm94Ojp1c2Vz
Q29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgp
ICYmIGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+dXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKIH0K
IAotdm9pZCBSZW5kZXJCb3g6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJCb3g6OmF1dG9zY3Jv
bGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIGlmIChsYXllcigpKQotICAgICAg
ICBsYXllcigpLT5hdXRvc2Nyb2xsKCk7CisgICAgICAgIGxheWVyKCktPmF1dG9zY3JvbGwocG9z
aXRpb24pOwogfQogCiB2b2lkIFJlbmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBz
b3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggYzFkZTNlNzM2MTkx
NmMzODFiZjEzYzBiOTZhMDFkYmQyMTUxNWJhMi4uNmIwYTBlODg4ZTFlNmE4MzE3MjI3ZDM5YTIy
M2YzNGUwN2ZlN2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNDM3
LDcgKzQzNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbG9naWNhbFNjcm9sbChTY3Jv
bGxMb2dpY2FsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9
IDEsIE5vZGUqKiBzdG9wTm9kZSA9IDApOwogICAgIGJvb2wgY2FuQmVTY3JvbGxlZEFuZEhhc1Nj
cm9sbGFibGVBcmVhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNh
bGx5U2Nyb2xsZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbCgpOworICAg
IHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3BBdXRvc2Nyb2xsKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25z
dCBJbnRQb2ludCYpOwogICAgIGJvb2wgaGFzQXV0b1ZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgKHN0eWxlKCktPm92ZXJmbG93WSgpID09IE9B
VVRPIHx8IHN0eWxlKCktPm92ZXJmbG93WSgpID09IE9PVkVSTEFZKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggM2M3Y2Y2ZTU2ZGM3N2IyMWI0Mjk4MTk4
NWMwM2QwYTBlMDk4N2EyZC4uNWM0YjFmOTgzMzc0ODI1NTA5MzNmMjJlYjA0YzkyYzJhNWM2Y2Jk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yMDAwLDcg
KzIwMDAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3Qg
TGF5b3V0UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IExheQogICAgIHJldHVybiBMYXlvdXRSZWN0
KExheW91dFBvaW50KHgsIHkpLCB2aXNpYmxlUmVjdC5zaXplKCkpOwogfQogCi12b2lkIFJlbmRl
ckxheWVyOjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGwoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIwMTAsMTEgKzIwMTAsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjphdXRvc2Nyb2xsKCkKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJu
OwogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpOwotI2VuZGlmCi0KLSAgICBJbnRQb2ludCBj
dXJyZW50RG9jdW1lbnRQb3NpdGlvbiA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkpOworICAgIEludFBvaW50
IGN1cnJlbnREb2N1bWVudFBvc2l0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHBv
c2l0aW9uKTsKICAgICBzY3JvbGxSZWN0VG9WaXNpYmxlKExheW91dFJlY3QoY3VycmVudERvY3Vt
ZW50UG9zaXRpb24sIExheW91dFNpemUoMSwgMSkpLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9F
ZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggNjVmMTA3MGFiMmQ2NmRm
MmQ5NDcxNjU0ZWNjOWNjMGUwMTdjNjFjNS4uZGM4ZDM1NzBiZTZhYjEwMGYzMDI0ZTk3YjA4NzVi
MTUyNjQ0ZjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTM3
Miw3ICszNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlv
dXQoKTsKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKLSAgICB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2
b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKIAogICAgIHZvaWQgcmVzaXplKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IExheW91dFNpemUmKTsKICAgICBib29sIGluUmVz
aXplTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5SZXNpemVNb2RlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggYjkyZDlmMDhkYzNiYzYzYjViOTVk
Y2QxZTRiN2ZkNmIyMGMxNDdmNS4uMDI0MGE0MTI2YTQ3NTQ2OWNkNTkzYWVjYjA2NTdmZWNlZTM2
ZGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAt
NTU0LDcgKzU1NCw3IEBAIGludCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxUb3dhcmQoY29uc3QgSW50
UG9pbnQmIGRlc3RpbmF0aW9uKQogICAgIHJldHVybiBsaXN0SW5kZXhBdE9mZnNldChwb3NpdGlv
bk9mZnNldCk7CiB9CiAKLXZvaWQgUmVuZGVyTGlzdEJveDo6YXV0b3Njcm9sbCgpCit2b2lkIFJl
bmRlckxpc3RCb3g6OmF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKQogewogICAgIEludFBvaW50
IHBvcyA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhmcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGM2NjJhZjI3ZjY5ZDQzNWI2YTYxYzM4YzQ5ZjAzOTdh
MGQ0OGUzOWYuLjk3NDAwODU1NmZkMGM1YzMyMDJlNzBhZDE5OTU5MTU2MzU0NDdiOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtODQsNyArODQsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3Jh
bWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQ
b2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQXV0b3Njcm9sbCgpOwogCiAgICAgdmlydHVh
bCBib29sIHNob3VsZFBhblNjcm9sbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKaW5kZXggYzdmMDc1YTRiOGY5ODA5MGYwMWVlOWEyOThjZjM1ZGY2ZmRlMjNjMC4uN2Vh
MzA4MTYwNWQ4NGNjN2Q4MDQ5M2IxMWUzMzMyOTFiYWY4Yjk5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
QEAgLTM4MSwxMSArMzgxLDExIEBAIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0
ZXh0U2hvdWxkQmVUcnVuY2F0ZWQoKSBjb25zdAogICAgICAgICAmJiBzdHlsZSgpLT50ZXh0T3Zl
cmZsb3coKSA9PSBUZXh0T3ZlcmZsb3dFbGxpcHNpczsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OmF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIFJlbmRl
ckxheWVyKiBsYXllciA9IGlubmVyVGV4dEVsZW1lbnQoKS0+cmVuZGVyQm94KCktPmxheWVyKCk7
CiAgICAgaWYgKGxheWVyKQotICAgICAgICBsYXllci0+YXV0b3Njcm9sbCgpOworICAgICAgICBs
YXllci0+YXV0b3Njcm9sbChwb3NpdGlvbik7CiB9CiAKIGludCBSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OnNjcm9sbFdpZHRoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAppbmRleCBhZjI3YmY3NThi
NDQxNGNjMTBiZTIwNzRiNGUwYTJmNmEzNDVmZDg3Li5kN2RmZmUzZmVmYjdlMmNlNGFjYTllYTg0
NThiMDY5NjdhY2M4YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBI
aXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogCiAgICAgLy8gU3ViY2xhc3NlZCB0byBm
b3J3YXJkIHRvIG91ciBpbm5lciBkaXYuCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsTGVmdCgpIGNv
bnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177680</attachid>
            <date>2012-12-04 23:38:00 -0800</date>
            <delta_ts>2012-12-05 23:19:14 -0800</delta_ts>
            <desc>Patch 2.0-1</desc>
            <filename>bug-39725-20121205163525.patch</filename>
            <type>text/plain</type>
            <size>30392</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDcwMmYwMGQwYmYyODE3
Yjc4ZTY3NWRkNTNkMTQ3ZTI3NTExZjZjNS4uZWZkM2VhMDUxNThiZTMzYzlhNjEzMTJlYjc0MDQ5
MjQxMjk3MWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEyLTA0ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYXV0byBzY3JvbGxpbmcgZnVuY3Rp
b25hbGl0eSBkdXJpbmcgZHJhZy1hbmQtZHJvcAorICAgICAgICB3aGVuIGRyb3Agc291cmNlIGlz
IG5lYXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgV2hlbiBkcm9wIHNv
dXJjZSBpcyBpbnNpZGUgMjBweCBvZiBzY3JvbGxhYmxlIGVsZW1lbnQgbW9yZSB0aGFuIDIwMG1z
LAorICAgICAgICBzY3JvbGxhYmxlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBzY3JvbGxlZCBl
dmVyeSA1MG1zIHRvd2FyZCBkcm9wCisgICAgICAgIHNvdXJjZSBwb3NpdGlvbiwgZS5nLiB2ZXJ0
aWNhbGx5IHNjcm9sbCB1cCB3aGVuIGRyb3Agc291cmNlIGlzIGluIHRvcAorICAgICAgICBlZGdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChjYW5BdXRv
c2Nyb2xsKTogTW92ZWQgdG8gUmVuZGVyQm94IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOiBDaGFuZ2VkIHRvIGluaXRpYWxpemUgbV9hdXRvc2Ny
b2xsU3RhcnRUaW1lIGFuZCBtX2F1dG9zY29sbEZvckRyYWdBbmRSb3BJbnByb2dyZXNzLgorICAg
ICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbik6IEFkZGVkIHRvIGNh
bGN1bGF0ZSBhdXRvc2Nyb2xsIGRpcmVjdGlvbiBmb3IgZHJhZy1hbmQtZHJvcC4KKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOiBDaGFuZ2Vk
IHRvIHVzZSBSZW5kZXJPYmplY3Q6OmZpbmRBdXRvc2Nyb2xsYWJsZVJlbmRlcmVyKCkuCisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1lckZpcmVkKTogQ2hhbmdl
ZCB0byBzdXBwb3J0IGF1dG9zY3JvbGwgZm9yIGRyYWctYW5kLWRyb3AgYW5kIG1vdmVkIGNhbGxp
bmcgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkgZnJvbSBSZW5kZXJMYXllcjo6YXV0b3Nj
cm9sbCgpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xs
UmVuZGVyZXIpOiBDaGFuZ2VkIHRvIHVzZSBSZW5kZXJPYmplY3Q6OmNhbkF1dG9zY29sbCgpLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKTogQ2hh
bmdlZCB0byByZXNldCBtX2F1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcEluUHJvZ3Jlc3MgYW5kIG1f
YXV0b3Njcm9sbFN0YXJ0VGltZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBk
YXRlRHJhZ0FuZERyb3ApOiBDaGFuZ2VkIHRvIGNhbGwgaGFuZGxlQXV0b3Njcm9sbCgpIGlmIG5l
ZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2xlYXJEcmFnU3RhdGUpOiBD
aGFuZ2VkIHRvIGNhbGwgc3RvcEF1dG9zY3JvbGxUaW1lcigpIHRvIHN0b3AgYXV0b3Njcm9sbCBk
dXJpbmcgZHJhZy1hbmQtZHJvcC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOiBDaGFu
Z2VkIHRvIG1vdmUgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkgdG8gcHJpdmF0ZSBhbmQg
YWRkIG1fYXV0b3Njcm9sbFN0YXJ0VGltZSBhbmQgbV9hdXRvc2NvbGxGb3JEcmFnQW5kUm9wSW5w
cm9ncmVzcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6YXV0b3Njcm9sbCk6IENoYW5nZWQgdG8gYWRkIG5ldyBwYXJhbWV0
ZXIgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwp
OiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlci5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5oOgorICAgICAgICAoUmVuZGVyQm94KTogQ2hhbmdlZCB0byBhZGQgbmV3IHBhcmFtZXRl
ciB0byBhdXRvc2Nyb2xsKCkgYW5kIHRvIGFkZCBuZXcgZnVuY3Rpb24gY2FuQXV0b3Njcm9sbCgp
IGFuZCBmaW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9s
bCk6IENoYW5nZWQgdG8gdXNlIHBvc2l0aW9uIHBhcmFtZXRlciBpbnN0ZWFkIG9mIEV2ZW50SGFu
ZGxlcjo6Y3VycmVudE1vdXNlUG9zaXRpb24oKSBhbmQgdG8gbW92ZSBjYWxsIG9mIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkgdG8gRXZlbnRIYW5kbGVyOjphdXRv
c2Nyb2xsVGltZXJGaXJlZCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgor
ICAgICAgICAoUmVuZGVyTGF5ZXIpOiBDaGFuZ2VkIGZvciBuZXcgcGFyYW1ldGVyIHBvc2l0aW9u
IHRvIGF1dG9zY3JvbGwoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKTogQ2hhbmdlIHRv
IGFkZCBuZXcgcGFyYW1ldGVyIHRvIGF1dG9zY3JvbGwoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oOgorICAgICAgICAoUmVuZGVyTGlzdEJveCk6IENoYW5nZSB0byBhZGQg
bmV3IHBhcmFtZXRlciB0byBhdXRvc2Nyb2xsKCkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpbmRBdXRvc2Ny
b2xsYWJsZVJlbmRlcmVyKTogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAoUmVuZGVyT2JqZWN0KTogQWRkZWQgY2FuQXV0b3Njcm9sbCgpIGFuZCBm
aW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjphdXRvc2Nyb2xsKTogQ2hhbmdlZCB0byBhZGQgbmV3IHBhcmFtZXRl
ciB0byBhdXRvc2Nyb2xsKCkKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmg6CisgICAgICAgIChSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOiAgQ2hh
bmdlZCB0byBhZGQgbmV3IHBhcmFtZXRlciB0byBhdXRvc2Nyb2xsKCkKKwogMjAxMi0xMi0wNCAg
RWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGlja2lu
ZyBhIHNjcm9sbGJhciB1bmZvY3VzZXMgdGhlIGN1cnJlbnQgYWN0aXZlRWxlbWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAxNDc5NDFlZDE2NmI0ZWJiYzM1MDczMjUzYzI5ZjUyODFm
ZTZkODI4Li5jYzk3NTk1MmU4MmY2ZGZmODNiM2I5ZDg0NjA5YWE0ZDYzMTZhNDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTA0ICBZb3NoaWZ1
bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3ZlciBh
biBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4g
ZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgRHJhZ1Njcm9sbFRpbWVyIHVzZWQgZm9yIGF1
dG9tYXRpYyBzY3JvbGxpbmcgb2YgbWFpbgorICAgICAgICBmcmFtZSBkcmFnLWFuZC1kcm9wIHdo
aWNoIGlzIG5vdyBpbXBsZW1lbnRlZCBpbiBFdmVudEhhbmRsZXIuCisKKyAgICAgICAgQW5vdGhl
ciBwYXRjaCB3aWxsIHJlbW92ZSBEcmFnU2Nyb2xsVGltZXIue2NwcCxofSBhbmQgdXBkYXRlIEdZ
UCBmaWxlcyB0bworICAgICAgICBtYWtlIHBhdGNoIHNpemUgc21hbGwuCisKKyAgICAgICAgTm8g
dGVzdHMuIEV4aXN0aW5nIHRlc3QgY292ZXJzIHRoaXMgY2hhbmdlLgorCisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdTb3VyY2VNb3ZlZFRvKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdUYXJnZXREcm9wKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OmRyYWdUYXJnZXREcmFnRW50ZXJPck92ZXIpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0xMi0wNCAgS2VudGFy
byBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBSZW1vdmUgdG9W
OE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggODk0NjJiODNh
YmNiMjY2ZjUxNzAwZTFhZDA2Mzk1ZTBjYzU1ZGFiMi4uOTM0MzZmNzdlYjI5MWQyYjkxZDcxODVk
MTE1YjBiMjQyMWNiN2VjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
MTMzLDYgKzEzMywxMyBAQCBjb25zdCBpbnQgQ29tcG9zaXRpb25FdmVudEtleUNvZGUgPSAyMjk7
CiB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAjZW5kaWYKIAorLy8gRGVsYXkgdGltZSBpbiBz
ZWNvbmQgZm9yIHN0YXJ0IGF1dG9zY3JvbGwgaWYgcG9pbnRlciBpcyBpbiBib3JkZXIgZWRnZSBv
ZiBzY3JvbGxhYmxlIGVsZW1lbnQuCitjb25zdCBkb3VibGUgYXV0b3Njcm9sbERlbGF5ID0gMC4y
OworCisvLyBTaXplIG9mIGJvcmRlciBiZWx0IGZvciBhdXRvc2Nyb2xsLiBXaGVuIG1vdXNlIHBv
aW50ZXIgaW4gYm9yZGVyIGJlbHQsCisvLyBhdXRvc2Nyb2xsIGlzIHN0YXJ0ZWQuCitjb25zdCBp
bnQgYXV0b3Njcm9sbEJlbHRTaXplID0gMjA7CisKIC8vIFdoZW4gdGhlIGF1dG9zY3JvbGwgb3Ig
dGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVz
IHRvIG1ha2UgaXQgc21vb3RoCiBjb25zdCBkb3VibGUgYXV0b3Njcm9sbEludGVydmFsID0gMC4w
NTsKIApAQCAtMTUxLDYgKzE1OCw3IEBAIGNvbnN0IGRvdWJsZSBmYWtlTW91c2VNb3ZlSW50ZXJ2
YWxSZWR1Y3Rpb25GcmFjdGlvbiA9IDAuNzU7CiBlbnVtIE5vQ3Vyc29yQ2hhbmdlVHlwZSB7IE5v
Q3Vyc29yQ2hhbmdlIH07CiAKIGNsYXNzIE9wdGlvbmFsQ3Vyc29yIHsKKwogcHVibGljOgogICAg
IE9wdGlvbmFsQ3Vyc29yKE5vQ3Vyc29yQ2hhbmdlVHlwZSkgOiBtX2lzQ3Vyc29yQ2hhbmdlKGZh
bHNlKSB7IH0KICAgICBPcHRpb25hbEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikgOiBtX2lz
Q3Vyc29yQ2hhbmdlKHRydWUpLCBtX2N1cnNvcihjdXJzb3IpIHsgfQpAQCAtMzM4LDcgKzM0Niw5
IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICAgICAsIG1faG92
ZXJUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpCiAgICAgLCBtX2F1
dG9zY3JvbGxUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCkK
ICAgICAsIG1fYXV0b3Njcm9sbFJlbmRlcmVyKDApCisgICAgLCBtX2F1dG9zY3JvbGxTdGFydFRp
bWUoMCkKICAgICAsIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCisgICAgLCBtX2F1dG9z
Y3JvbGxGb3JEcmFnQW5kRHJvcEluUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX21vdXNlRG93bk1h
eVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZShm
YWxzZSkKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGltZXIodGhpcywgJkV2ZW50SGFuZGxl
cjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCwgZmFrZU1vdXNlTW92ZU1pbmltdW1JbnRl
cnZhbCkKQEAgLTcwMCwyOCArNzEwLDIzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAg
cmV0dXJuIHN3YWxsb3dFdmVudDsKIH0KIAotLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiByZW5k
ZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgotc3RhdGljIGJvb2wgY2FuQXV0b3Njcm9sbChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQorLy8gSWYgc3BlY2lmaWVkIHBvaW50IGlzIGluIGJvcmRlciBi
ZWx0LCByZXR1cm5lZCBvZmZzZXQgZGVub3RlcyBkaXJlY3Rpb24gb2YKKy8vIHNjcm9sbGluZy4K
K3N0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24oUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIGlmICghcmVuZGVyZXIt
PmlzQm94KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBJbnRSZWN0IGJveChyZW5kZXJl
ci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgSW50U2l6ZSBvZmZzZXQ7CisgICAg
aWYgKHBvaW50LngoKSA8IGJveC54KCkgKyBhdXRvc2Nyb2xsQmVsdFNpemUpCisgICAgICAgIG9m
ZnNldC5leHBhbmQoLWF1dG9zY3JvbGxCZWx0U2l6ZSwgMCk7CisgICAgZWxzZSBpZiAocG9pbnQu
eCgpID4gYm94Lm1heFgoKSAtIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAgICAgb2Zmc2V0LmV4
cGFuZChhdXRvc2Nyb2xsQmVsdFNpemUsIDApOwogCi0gICAgLy8gQ2hlY2sgZm9yIGEgYm94IHRo
YXQgY2FuIGJlIHNjcm9sbGVkIGluIGl0cyBvd24gcmlnaHQuCi0gICAgaWYgKHRvUmVuZGVyQm94
KHJlbmRlcmVyKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmIChwb2ludC55KCkgPCBib3gueSgpICsgYXV0b3Njcm9sbEJl
bHRTaXplKQorICAgICAgICBvZmZzZXQuZXhwYW5kKDAsIC1hdXRvc2Nyb2xsQmVsdFNpemUpOwor
ICAgIGVsc2UgaWYgKHBvaW50LnkoKSA+IGJveC5tYXhZKCkgLSBhdXRvc2Nyb2xsQmVsdFNpemUp
CisgICAgICAgIG9mZnNldC5leHBhbmQoMCwgYXV0b3Njcm9sbEJlbHRTaXplKTsKIAotICAgIC8v
IENoZWNrIGZvciBhIGJveCB0aGF0IHJlcHJlc2VudHMgdGhlIHRvcCBsZXZlbCBvZiBhIHdlYiBw
YWdlLgotICAgIC8vIFRoaXMgY2FuIGJlIHNjcm9sbGVkIGJ5IGNhbGxpbmcgQ2hyb21lOjpzY3Jv
bGxSZWN0SW50b1ZpZXcuCi0gICAgLy8gVGhpcyBvbmx5IGhhcyBhbiBlZmZlY3Qgb24gdGhlIE1h
YyBwbGF0Zm9ybSBpbiBhcHBsaWNhdGlvbnMKLSAgICAvLyB0aGF0IHB1dCB3ZWIgdmlld3MgaW50
byBzY3JvbGxpbmcgY29udGFpbmVycywgc3VjaCBhcyBNYWMgT1MgWCBNYWlsLgotICAgIC8vIFRo
ZSBjb2RlIGZvciB0aGlzIGlzIGluIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlLgot
ICAgIGlmIChyZW5kZXJlci0+bm9kZSgpICE9IHJlbmRlcmVyLT5kb2N1bWVudCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXItPmZyYW1lKCk7Ci0g
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBhZ2UqIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpID09IGZy
YW1lOworICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpA
QCAtNzUxLDE5ICs3NTYsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dl
ZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICBtX21vdXNl
RG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRB
dXRvc2Nyb2xsICYmICFtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsgICAgICAgICAgICAKLSAgICAg
ICAgLy8gRmluZCBhIHJlbmRlcmVyIHRoYXQgY2FuIGF1dG9zY3JvbGwuCi0gICAgICAgIHdoaWxl
IChyZW5kZXJlciAmJiAhY2FuQXV0b3Njcm9sbChyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIGlm
ICghcmVuZGVyZXItPnBhcmVudCgpICYmIHJlbmRlcmVyLT5ub2RlKCkgPT0gcmVuZGVyZXItPmRv
Y3VtZW50KCkgJiYgcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQotICAgICAg
ICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgp
LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlbmRlcmVy
ID0gcmVuZGVyZXItPnBhcmVudCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAo
cmVuZGVyZXIpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogc2Nyb2xsYWJsZSA9IHJlbmRl
cmVyLT5maW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBtX2F1dG9z
Y3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIGhhbmRsZUF1dG9zY3JvbGwocmVu
ZGVyZXIpOworICAgICAgICAgICAgaGFuZGxlQXV0b3Njcm9sbChzY3JvbGxhYmxlKTsKICAgICAg
ICAgfQotICAgICAgICAKICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwgPSBm
YWxzZTsKICAgICB9CiAKQEAgLTEwMTksMTIgKzEwMTUsMjEgQEAgdm9pZCBFdmVudEhhbmRsZXI6
OmF1dG9zY3JvbGxUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgaWYgKG1fYXV0b3Njcm9sbEZvckRyYWdBbmREcm9wSW5Qcm9ncmVz
cykgeworICAgICAgICBpZiAoY3VycmVudFRpbWUoKSAtIG1fYXV0b3Njcm9sbFN0YXJ0VGltZSA+
IGF1dG9zY3JvbGxEZWxheSkKKyAgICAgICAgICAgIHRvUmVuZGVyQm94KHIpLT5hdXRvc2Nyb2xs
KGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgKyBjYWxjdWxhdGVBdXRvc2Nyb2xsRGlyZWN0aW9uKHIs
IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7CiAgICAgICAgIGlmICghbV9tb3VzZVByZXNz
ZWQpIHsKICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICB0b1JlbmRlckJveChyKS0+YXV0b3Njcm9sbCgpOwor
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisgICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZygpOworI2VuZGlmCisgICAgICAgIHRvUmVuZGVyQm94KHIpLT5hdXRvc2Nyb2xsKGN1cnJl
bnRNb3VzZVBvc2l0aW9uKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIHdlIHZlcmlmeSB0
aGF0IHRoZSBtYWluIGZyYW1lIGhhc24ndCByZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUg
cGFuU2Nyb2xsCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CkBA
IC0xMTA1LDcgKzExMTAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJl
bmRlcmVyKCkKICAgICBpZiAoTm9kZSogbm9kZUF0UG9pbnQgPSBoaXRUZXN0LmlubmVyTm9kZSgp
KQogICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IG5vZGVBdFBvaW50LT5yZW5kZXJlcigp
OwogCi0gICAgd2hpbGUgKG1fYXV0b3Njcm9sbFJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKG1f
YXV0b3Njcm9sbFJlbmRlcmVyKSkKKyAgICB3aGlsZSAobV9hdXRvc2Nyb2xsUmVuZGVyZXIgJiYg
IW1fYXV0b3Njcm9sbFJlbmRlcmVyLT5jYW5BdXRvc2Nyb2xsKCkpCiAgICAgICAgIG1fYXV0b3Nj
cm9sbFJlbmRlcmVyID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPnBhcmVudCgpOwogfQogCkBAIC0x
MjA4LDcgKzEyMTMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1lcihi
b29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCkKICAgICB9CiAKICAgICBpZiAoYXV0b3Njcm9s
bFJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQgJiYg
KG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgfHwgbV9wYW5TY3JvbGxJblByb2dyZXNzKSkKKyAgICAg
ICAgaWYgKCFyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQgJiYgKG1fYXV0b3Njcm9sbEluUHJvZ3Jl
c3MgfHwgbV9wYW5TY3JvbGxJblByb2dyZXNzIHx8IG1fYXV0b3Njcm9sbEZvckRyYWdBbmREcm9w
SW5Qcm9ncmVzcykpCiAgICAgICAgICAgICB0b1JlbmRlckJveChhdXRvc2Nyb2xsUmVuZGVyZXIo
KSktPnN0b3BBdXRvc2Nyb2xsKCk7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgICAg
IGlmIChtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsKQEAgLTEyMzUsNiArMTI0MCw4IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVz
dHJveWVkKQogICAgIH0KIAogICAgIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAg
ICBtX2F1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBtX2F1
dG9zY3JvbGxTdGFydFRpbWUgPSAwOwogfQogCiBOb2RlKiBFdmVudEhhbmRsZXI6Om1vdXNlUHJl
c3NOb2RlKCkgY29uc3QKQEAgLTIxMDYsMTIgKzIxMTMsMjYgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBi
b2FyZCoKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5KTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3Vz
ZUV2ZW50KHJlcXVlc3QsIGV2ZW50KTsKKyAgICBtX2N1cnJlbnRNb3VzZVBvc2l0aW9uID0gZXZl
bnQucG9zaXRpb24oKTsKKyAgICBtX2N1cnJlbnRNb3VzZUdsb2JhbFBvc2l0aW9uID0gZXZlbnQu
Z2xvYmFsUG9zaXRpb24oKTsKIAogICAgIC8vIERyYWcgZXZlbnRzIHNob3VsZCBuZXZlciBnbyB0
byB0ZXh0IG5vZGVzIChmb2xsb3dpbmcgSUUsIGFuZCBwcm9wZXIgbW91c2VvdmVyL291dCBkaXNw
YXRjaCkKICAgICBSZWZQdHI8Tm9kZT4gbmV3VGFyZ2V0ID0gbWV2LnRhcmdldE5vZGUoKTsKICAg
ICBpZiAobmV3VGFyZ2V0ICYmIG5ld1RhcmdldC0+aXNUZXh0Tm9kZSgpKQogICAgICAgICBuZXdU
YXJnZXQgPSBuZXdUYXJnZXQtPnBhcmVudE5vZGUoKTsKIAorICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBuZXdUYXJnZXQgPyBuZXdUYXJnZXQtPnJlbmRlcmVyKCkgOiAwOworICAgIFJlbmRl
ck9iamVjdCogc2Nyb2xsYWJsZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPmZpbmRBdXRvc2Nyb2xs
YWJsZVJlbmRlcmVyKCkgOiAwOworICAgIEludFNpemUgb2Zmc2V0ID0gc2Nyb2xsYWJsZSA/IGNh
bGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24oc2Nyb2xsYWJsZSwgbV9jdXJyZW50TW91c2VQb3Np
dGlvbikgOiBJbnRTaXplKCk7CisgICAgaWYgKG9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgc3Rv
cEF1dG9zY3JvbGxUaW1lcigpOworICAgIGVsc2UgeworICAgICAgICBpZiAoYXV0b3Njcm9sbFJl
bmRlcmVyKCkgIT0gc2Nyb2xsYWJsZSkKKyAgICAgICAgICAgIG1fYXV0b3Njcm9sbFN0YXJ0VGlt
ZSA9IGV2ZW50LnRpbWVzdGFtcCgpOworICAgICAgICBtX2F1dG9zY3JvbGxGb3JEcmFnQW5kRHJv
cEluUHJvZ3Jlc3MgPSB0cnVlOworICAgICAgICBoYW5kbGVBdXRvc2Nyb2xsKHNjcm9sbGFibGUp
OworICAgIH0KKwogICAgIGlmIChtX2RyYWdUYXJnZXQgIT0gbmV3VGFyZ2V0KSB7CiAgICAgICAg
IC8vIEZJWE1FOiB0aGlzIG9yZGVyaW5nIHdhcyBleHBsaWNpdGx5IGNob3NlbiB0byBtYXRjaCBX
aW5JRS4gSG93ZXZlciwKICAgICAgICAgLy8gaXQgaXMgc29tZXRpbWVzIGluY29ycmVjdCB3aGVu
IGRyYWdnaW5nIHdpdGhpbiBzdWJmcmFtZXMsIGFzIHNlZW4gd2l0aApAQCAtMjE5NSw2ICsyMjE2
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQKIAogdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFy
RHJhZ1N0YXRlKCkKIHsKKyAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAgICAgbV9kcmFnVGFy
Z2V0ID0gMDsKICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSA9IDA7CiAgICAgbV9zaG91
bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCmluZGV4IDQ1ZGUxNmVhMDA0NmY3ZmE2YWI1MzIxYzc2YmMwNWFmMjQ4ZGQ2MjAuLjkzMThk
ZjlhMzUwM2Y2ZGQ1N2YwN2YzNDkxNTZlZmExYjUxMDc2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaApAQCAtNDA4LDcgKzQwOCwxMiBAQCBwcml2YXRlOgogICAgIAogICAgIFRpbWVy
PEV2ZW50SGFuZGxlcj4gbV9hdXRvc2Nyb2xsVGltZXI7CiAgICAgUmVuZGVyT2JqZWN0KiBtX2F1
dG9zY3JvbGxSZW5kZXJlcjsKKyAgICBkb3VibGUgbV9hdXRvc2Nyb2xsU3RhcnRUaW1lOworICAg
IC8vIFRPRE86IEl0IGlzIGJldHRlciB0byBjaGFuZ2UgdHlwZSBvZiBtX2F1dG9zY3JvbGxJblBy
b2dyZXNzIHRvIEF1dG9zY3JvbGxUeXBlCisgICAgLy8gZW51bSB3aGljaCBoYXMgRm9yU2VsZWN0
aW9uLCBGb3JQYW4sIGFuZCBGb3JEcmFnQW5kRHJvcCwgdG8gaW50ZWdyYXRlCisgICAgLy8gbV9h
dXRvc2Nyb2xsSW5Qcm9ncmVzcywgbV9wYW5TY3JvbGxpbmdJblByb2dyZXNzIGFuZCBtX2F1dG9z
Y3JvbGxGb3JEcmFnQW5kRHJvcEluUHJvZ3Jlc3MuCiAgICAgYm9vbCBtX2F1dG9zY3JvbGxJblBy
b2dyZXNzOworICAgIGJvb2wgbV9hdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3BJblByb2dyZXNzOwog
ICAgIGJvb2wgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7CiAgICAgYm9vbCBtX21vdXNl
RG93bldhc0luU3ViZnJhbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
aW5kZXggYWQyODQyODkzNWE1MWNmMWM3ZTk5NDQyNTNjOTc5NjYzOWZkOTcxNi4uNzVmNDg0MDc1
ZWEwYmUxZTczYzkwZmQ3ZTVmOGIzMjhiNzU1ZmFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKQEAgLTYyOCwxMCArNjI4LDEwIEBAIGJvb2wgUmVuZGVyQm94Ojp1c2Vz
Q29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgp
ICYmIGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+dXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKIH0K
IAotdm9pZCBSZW5kZXJCb3g6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJCb3g6OmF1dG9zY3Jv
bGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIGlmIChsYXllcigpKQotICAgICAg
ICBsYXllcigpLT5hdXRvc2Nyb2xsKCk7CisgICAgICAgIGxheWVyKCktPmF1dG9zY3JvbGwocG9z
aXRpb24pOwogfQogCiB2b2lkIFJlbmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBz
b3VyY2UpCkBAIC0zNTk0LDYgKzM1OTQsMjcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHUKICAg
ICBjb21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uID0gbG9naWNhbFRvcFBvczsKIH0KIAorLy8gVGhl
cmUgYXJlIHR3byBraW5kcyBvZiByZW5kZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgorYm9vbCBS
ZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwoKSBjb25zdAoreworICAgIC8vIENoZWNrIGZvciBhIGJv
eCB0aGF0IGNhbiBiZSBzY3JvbGxlZCBpbiBpdHMgb3duIHJpZ2h0LgorICAgIGlmIChjYW5CZVNj
cm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCByZXByZXNlbnRzIHRoZSB0b3AgbGV2ZWwgb2YgYSB3
ZWIgcGFnZS4KKyAgICAvLyBUaGlzIGNhbiBiZSBzY3JvbGxlZCBieSBjYWxsaW5nIENocm9tZTo6
c2Nyb2xsUmVjdEludG9WaWV3LgorICAgIC8vIFRoaXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRo
ZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGljYXRpb25zCisgICAgLy8gdGhhdCBwdXQgd2ViIHZpZXdz
IGludG8gc2Nyb2xsaW5nIGNvbnRhaW5lcnMsIHN1Y2ggYXMgTWFjIE9TIFggTWFpbC4KKyAgICAv
LyBUaGUgY29kZSBmb3IgdGhpcyBpcyBpbiBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJs
ZS4KKyAgICBpZiAobm9kZSgpICE9IGRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBy
ZXR1cm4gcGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBmcmFtZTsKK30KKwogTGF5b3V0UmVj
dCBSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0KElubGluZUJveCogYm94LCBpbnQgY2FyZXRPZmZz
ZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKIHsKICAgICAvLyBWaXNpYmxl
UG9zaXRpb25zIGF0IG9mZnNldHMgaW5zaWRlIGNvbnRhaW5lcnMgZWl0aGVyIGEpIHJlZmVyIHRv
IHRoZSBwb3NpdGlvbnMgYmVmb3JlL2FmdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKaW5kZXggYzFkZTNlNzM2MTkxNmMzODFiZjEzYzBiOTZhMDFkYmQyMTUxNWJhMi4uYWE1M2M5
YjU2OWE4ZmRlMDE4NTBhOTJhOTdlNGU3MTIzY2QyMGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaApAQCAtNDM3LDcgKzQzNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgbG9naWNhbFNjcm9sbChTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0
eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIE5vZGUqKiBzdG9wTm9kZSA9IDApOwogICAgIGJvb2wg
Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgYXV0b3Njcm9sbCgpOworICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBv
aW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBdXRvc2Nyb2xsKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHBhblNjcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIGJvb2wgaGFzQXV0b1ZlcnRp
Y2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgKHN0eWxl
KCktPm92ZXJmbG93WSgpID09IE9BVVRPIHx8IHN0eWxlKCktPm92ZXJmbG93WSgpID09IE9PVkVS
TEFZKTsgfQpAQCAtNjMzLDYgKzYzMyw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIExheW91
dFJlY3QgZnJhbWVSZWN0Rm9yU3RpY2t5UG9zaXRpb25pbmcoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBmcmFtZVJlY3QoKTsgfQogCisgICAgdmlydHVhbCBib29sIGNhbkF1dG9zY3JvbGwoKSBj
b25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICAvLyBUaGUgd2lkdGgvaGVpZ2h0IG9mIHRo
ZSBjb250ZW50cyArIGJvcmRlcnMgKyBwYWRkaW5nLiAgVGhlIHgveSBsb2NhdGlvbiBpcyByZWxh
dGl2ZSB0byBvdXIgY29udGFpbmVyICh3aGljaCBpcyBub3QgYWx3YXlzIG91ciBwYXJlbnQpLgog
ICAgIExheW91dFJlY3QgbV9mcmFtZVJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAppbmRleCBkZmIyZDRjNzQ5ZGIxNzhiMWVkODVjZTViMGY5YzA3YzRiNzhjYWU3
Li40ZjljZDVlOGZjODZiMjlhZjEyYTM2MzMxYzJhOTYwMzhmOWNkMzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTIwMDIsNyArMjAwMiw3IEBAIExheW91
dFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0ICZ2aXNp
YmxlUmVjdCwgY29uc3QgTGF5CiAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoeCwg
eSksIHZpc2libGVSZWN0LnNpemUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3Jv
bGwoKQordm9pZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRp
b24pCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQpAQCAtMjAxMiwxMSArMjAxMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3Jv
bGwoKQogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQotICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlU2VsZWN0aW9u
Rm9yTW91c2VEcmFnKCk7Ci0jZW5kaWYKLQotICAgIEludFBvaW50IGN1cnJlbnREb2N1bWVudFBv
c2l0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKSk7CisgICAgSW50UG9pbnQgY3VycmVudERvY3VtZW50
UG9zaXRpb24gPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMocG9zaXRpb24pOwogICAgIHNj
cm9sbFJlY3RUb1Zpc2libGUoTGF5b3V0UmVjdChjdXJyZW50RG9jdW1lbnRQb3NpdGlvbiwgTGF5
b3V0U2l6ZSgxLCAxKSksIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAwYzBjZDc5ODIxYmFlOTJjODk1OTk0YjBjNzdkMzMw
MTFiZWFhZjY5Li43MmY1YzlkMmE1MjMyMjQwZTBjN2M3ZTUyMmI5YzIwZWRmZGFkMTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMzcyLDcgKzM3Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogCiAgICAgYm9v
bCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlw
bGllciA9IDEpOwotICAgIHZvaWQgYXV0b3Njcm9sbCgpOworICAgIHZvaWQgYXV0b3Njcm9sbChj
b25zdCBJbnRQb2ludCYpOwogCiAgICAgdm9pZCByZXNpemUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiwgY29uc3QgTGF5b3V0U2l6ZSYpOwogICAgIGJvb2wgaW5SZXNpemVNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9pblJlc2l6ZU1vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcAppbmRleCBiOTJkOWYwOGRjM2JjNjNiNWI5NWRjZDFlNGI3ZmQ2YjIwYzE0
N2Y1Li4wMjQwYTQxMjZhNDc1NDY5Y2Q1OTNhZWNiMDY1N2ZlY2VlMzZkYmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC01NTQsNyArNTU0LDcgQEAg
aW50IFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvd2FyZChjb25zdCBJbnRQb2ludCYgZGVzdGluYXRp
b24pCiAgICAgcmV0dXJuIGxpc3RJbmRleEF0T2Zmc2V0KHBvc2l0aW9uT2Zmc2V0KTsKIH0KIAot
dm9pZCBSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyTGlzdEJveDo6YXV0
b3Njcm9sbChjb25zdCBJbnRQb2ludCYpCiB7CiAgICAgSW50UG9pbnQgcG9zID0gZnJhbWUoKS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50
TW91c2VQb3NpdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmgKaW5kZXggYzY2MmFmMjdmNjlkNDM1YjZhNjFjMzhjNDlmMDM5N2EwZDQ4ZTM5Zi4uOTc0MDA4
NTU2ZmQwYzVjMzIwMmU3MGFkMTk5NTkxNTYzNTQ0N2I5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxl
ZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbCgp
OworICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50Jik7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3BBdXRvc2Nyb2xsKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFu
U2Nyb2xsKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzYzBkNjczZDQ5YWU3OGEwM2ZlZDJlMmRjNjAwOTc5OTZj
NTUyYzEyLi5kZDExMDE2ODhlZGI3MjRkOTMzYTYyMmQ1NWQ5NjgyMDU4MWM0NTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMzksNiArMzksNyBAQAog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKQEAgLTE2OTAsNiArMTY5MSwxOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6
aGFuZGxlRHluYW1pY0Zsb2F0UG9zaXRpb25DaGFuZ2UoKQogICAgIH0KIH0KIAorUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJPYmplY3Q6OmZpbmRBdXRvc2Nyb2xsYWJsZVJlbmRlcmVyKCkKK3sKKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpczsKKyAgICB3aGlsZSAocmVuZGVyZXIgJiYgIXJl
bmRlcmVyLT5jYW5BdXRvc2Nyb2xsKCkpIHsKKyAgICAgICAgaWYgKCFyZW5kZXJlci0+cGFyZW50
KCkgJiYgcmVuZGVyZXItPm5vZGUoKSA9PSByZW5kZXJlci0+ZG9jdW1lbnQoKSAmJiByZW5kZXJl
ci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICByZW5kZXJlciA9IHJl
bmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisgICAgfQor
ICAgIHJldHVybiByZW5kZXJlcjsKK30KKwogdm9pZCBSZW5kZXJPYmplY3Q6OnNldEFuaW1hdGFi
bGVTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBpZiAoIWlzVGV4
dCgpICYmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IDQ3OTJmNzM3MzgxYTU0ODg5MWQ1MDZkOTY0ZjFiNTRhNzk1MGZhOTYuLjY4OTRhNTQ1NWNmMDhl
NzYwZmQ3MjBlZjA3ZDJhNjZiMDhmNDM2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKQEAgLTI3MCw3ICsyNzAsMTEgQEAgcHVibGljOgogICAgIC8vIGFnYWluLiAg
V2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIHJlbmRlciB0cmVlIHVwZGF0ZXMgYXMgbmVlZGVkIHRv
IGFjY29tbW9kYXRlIHRoZSBuZXcKICAgICAvLyBub3JtYWwgZmxvdyBvYmplY3QuCiAgICAgdm9p
ZCBoYW5kbGVEeW5hbWljRmxvYXRQb3NpdGlvbkNoYW5nZSgpOwotICAgIAorCisgICAgLy8gQXV0
b3Njcm9sbCByZWxhdGVkIGZ1bmN0aW9ucworICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRvc2Nyb2xs
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBSZW5kZXJPYmplY3QqIGZpbmRBdXRvc2Ny
b2xsYWJsZVJlbmRlcmVyKCk7CisKICAgICAvLyBSZW5kZXJPYmplY3QgdHJlZSBtYW5pcHVsYXRp
b24KICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICB2
aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbENoaWxk
cmVuKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggYzdmMDc1YTRiOGY5ODA5MGYwMWVlOWEyOThj
ZjM1ZGY2ZmRlMjNjMC4uN2VhMzA4MTYwNWQ4NGNjN2Q4MDQ5M2IxMWUzMzMyOTFiYWY4Yjk5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAKQEAgLTM4MSwxMSArMzgxLDExIEBAIGJvb2wgUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjp0ZXh0U2hvdWxkQmVUcnVuY2F0ZWQoKSBjb25zdAogICAgICAgICAm
JiBzdHlsZSgpLT50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3dFbGxpcHNpczsKIH0KIAot
dm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKQogewogICAgIFJlbmRlckxheWVyKiBsYXllciA9IGlubmVyVGV4dEVsZW1lbnQoKS0+cmVu
ZGVyQm94KCktPmxheWVyKCk7CiAgICAgaWYgKGxheWVyKQotICAgICAgICBsYXllci0+YXV0b3Nj
cm9sbCgpOworICAgICAgICBsYXllci0+YXV0b3Njcm9sbChwb3NpdGlvbik7CiB9CiAKIGludCBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNjcm9sbFdpZHRoKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
aAppbmRleCBhZjI3YmY3NThiNDQxNGNjMTBiZTIwNzRiNGUwYTJmNmEzNDVmZDg3Li5kN2RmZmUz
ZmVmYjdlMmNlNGFjYTllYTg0NThiMDY5NjdhY2M4YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBs
b2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQs
IEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogCiAgICAg
Ly8gU3ViY2xhc3NlZCB0byBmb3J3YXJkIHRvIG91ciBpbm5lciBkaXYuCiAgICAgdmlydHVhbCBp
bnQgc2Nyb2xsTGVmdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IDY5ZGJlNzNhZTVmNTliZmU0ZjFkMTllZjQ5OWE2OTkzYjIzZjhiY2Iu
LjA2YWY0MzY1NDkzNzE5ZTQ2YjhlMWNkOGVjZDQ2NTk3ODBhMmFjOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRHJhZ0RhdGEuaCIKLSNpbmNsdWRlICJEcmFnU2Nyb2xsVGltZXIuaCIKICNpbmNsdWRl
ICJEcmFnU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFu
ZGxlci5oIgpAQCAtNDE4LDcgKzQxNyw2IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJW
aWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2F1dG9maWxsUG9wdXAoMCkKICAgICAsIG1faXNU
cmFuc3BhcmVudChmYWxzZSkKICAgICAsIG1fdGFic1RvTGlua3MoZmFsc2UpCi0gICAgLCBtX2Ry
YWdTY3JvbGxUaW1lcihhZG9wdFB0cihuZXcgRHJhZ1Njcm9sbFRpbWVyKSkKICAgICAsIG1faXND
YW5jZWxpbmdGdWxsU2NyZWVuKGZhbHNlKQogICAgICwgbV9iZW5jaG1hcmtTdXBwb3J0KHRoaXMp
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMzIyNiw3ICszMjI0LDYgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZUVuZGVkQXQoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWxzZSwgMCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmRyYWdTb3VyY2VFbmRlZEF0KHBtZSwKICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ09wZXJh
dGlvbj4ob3BlcmF0aW9uKSk7Ci0gICAgbV9kcmFnU2Nyb2xsVGltZXItPnN0b3AoKTsKIH0KIAog
dm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZU1vdmVkVG8oCkBAIC0zMjM0LDcgKzMyMzEsNiBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbygKICAgICBjb25zdCBXZWJQb2lu
dCYgc2NyZWVuUG9pbnQsCiAgICAgV2ViRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCiB7Ci0gICAg
bV9kcmFnU2Nyb2xsVGltZXItPnRyaWdnZXJTY3JvbGwobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZp
ZXcoKSwgY2xpZW50UG9pbnQpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlU3lz
dGVtRHJhZ0VuZGVkKCkKQEAgLTMzMjAsOCArMzMxNiw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRy
YWdUYXJnZXREcm9wKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwKIAogICAgIG1fZHJhZ09w
ZXJhdGlvbiA9IFdlYkRyYWdPcGVyYXRpb25Ob25lOwogICAgIG1fY3VycmVudERyYWdEYXRhID0g
MDsKLQotICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT5zdG9wKCk7CiB9CiAKIFdlYkRyYWdPcGVyYXRp
b24gV2ViVmlld0ltcGw6OmRyYWdUYXJnZXREcmFnRW50ZXJPck92ZXIoY29uc3QgV2ViUG9pbnQm
IGNsaWVudFBvaW50LCBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9pbnQsIERyYWdBY3Rpb24gZHJh
Z0FjdGlvbiwgaW50IGtleU1vZGlmaWVycykKQEAgLTMzNDgsMTIgKzMzNDIsNiBAQCBXZWJEcmFn
T3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JPdmVyKGNvbnN0IFdl
YlBvaW50JiBjbGllbnRQbwogICAgICAgICBkcm9wRWZmZWN0ID0gRHJhZ09wZXJhdGlvbk5vbmU7
CiAKICAgICAgbV9kcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8V2ViRHJhZ09wZXJhdGlvbj4o
ZHJvcEVmZmVjdCk7Ci0KLSAgICBpZiAoZHJhZ0FjdGlvbiA9PSBEcmFnT3ZlcikKLSAgICAgICAg
bV9kcmFnU2Nyb2xsVGltZXItPnRyaWdnZXJTY3JvbGwobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZp
ZXcoKSwgY2xpZW50UG9pbnQpOwotICAgIGVsc2UKLSAgICAgICAgbV9kcmFnU2Nyb2xsVGltZXIt
PnN0b3AoKTsKLQogICAgIHJldHVybiBtX2RyYWdPcGVyYXRpb247CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDNhOWY5MjMzMTNkYjU0ZDM2NTVlNjNh
ZWU3YzM1OTVhYjNiZDk3MzQuLmU3N2UxYzdjY2M4MmIyZDhjM2U0MGRjYjQ3NDhiNzZkODhhODRh
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtODksNyAr
ODksNiBAQCBjbGFzcyBCYXR0ZXJ5Q2xpZW50SW1wbDsKIGNsYXNzIENvbnRleHRGZWF0dXJlc0Ns
aWVudEltcGw7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudEltcGw7CiBjbGFzcyBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudFByb3h5OwotY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgR2VvbG9j
YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIExpbmtIaWdobGlnaHQ7CiBjbGFzcyBOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q7CkBAIC04MTUsNyArODE0LDYgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVk
ZWYgSGFzaE1hcDxXVEY6OlN0cmluZywgV1RGOjpTdHJpbmc+IFNldHRpbmdzTWFwOwogICAgIE93
blB0cjxTZXR0aW5nc01hcD4gbV9pbnNwZWN0b3JTZXR0aW5nc01hcDsKLSAgICBPd25QdHI8RHJh
Z1Njcm9sbFRpbWVyPiBtX2RyYWdTY3JvbGxUaW1lcjsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgLy8gVGhlIHByb3ZpZGVy
IG9mIGRlc2t0b3Agbm90aWZpY2F0aW9uczsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MGM3OTdjNDM1ODg1ZGZmYjE5MDIz
NzI1Zjc3OTkwYWI3ODk0OWU0Li5mYWFkNzhlODk5ODg5OThmYzUwM2YwMjVlNzFjMmRmOWFlMTU2
OTJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTItMDQgIFlvc2hpZnVtaSBJbm91ZSAg
PHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBEcmFnZ2luZyBvdmVyIGFuIGVsZW1lbnQg
d2l0aCBzY3JvbGxiYXJzIHNob3VsZCBzY3JvbGwgdGhlIGVsZW1lbnQgd2hlbiBkcmFnZ2luZyBu
ZWFyIGVkZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBuZXcgdGVzdCBmb3IgYXV0b3Njcm9sbCBkdXJpbmcgZHJhZy1hbmQt
ZHJvcC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3At
YXV0b3Njcm9sbC5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0wNCAgVGFrYXNoaSBTYWthbW90byAg
PHRhc2FrQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgV2ViS2l0IGdhcmRlbmlu
Zy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0
b3Njcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYzE2M2Q0Yzk3Y2UxNTcz
NGMwMDE5NmU0MzIzNjUzMGM5OThiYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOCBAQAorQ2hlY2sgYXV0b3Njcm9sbCBieSBkcmFnLWFuZC1kcm9wCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNjcm9sbGFibGUuc2Nyb2xsVG9wID4gMAorRm9yIG1h
bnVhbCB0ZXN0aW5nLCBkcmFnIGFuZCBkcm9wICJEcm9wIE1lIiB0byAiU2Nyb2xsYWJsZSIgYXJl
YS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1h
dXRvc2Nyb2xsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1
dG9zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmQzZjY4ZDBiYjc4MTAyNTkwYWM4Nzk0OWMzMDNm
MjRiMThhZDBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJh
Zy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwKQEAgLTAsMCArMSw5NyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjZHJhZ2dhYmxlIHsKKyAgcGFkZGluZzogNXB0
OworICBib3JkZXI6IDNweCBzb2xpZCAjMDBjYzAwOworICBiYWNrZ3JvdW5kOiAjMDBjY2NjOwor
ICB3aWR0aDogODBweDsKKyAgY3Vyc29yOiBoYW5kOworfQorCisjc2Nyb2xsYWJsZSB7CisgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICBvdmVyZmxvdzogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlkIDNw
eCAjY2MwMDAwOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiAkKGlkKSB7IHJldHVy
biBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IH0KKworZnVuY3Rpb24gdGVzdEl0KCkgewor
ICAgIHZhciBkcmFnZ2FibGUgPSAkKCdkcmFnZ2FibGUnKTsKKyAgICB2YXIgc2Nyb2xsYWJsZSA9
ICQoJ3Njcm9sbGFibGUnKTsKKworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworCisgICAgLy8g
R3JhYiBkcmFnZ2FibGUKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhkcmFnZ2FibGUub2Zm
c2V0TGVmdCArIDUsIGRyYWdnYWJsZS5vZmZzZXRUb3AgKyA1KTsKKyAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKworICAgIC8vIE1vdmUgbW91c2UgdG8gYXV0b3Njcm9sbCBib3JkZXIgYmVs
dC4KKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzY3JvbGxhYmxlLm9mZnNldExlZnQgKyA1
LCBzY3JvbGxhYmxlLm9mZnNldFRvcCArIHNjcm9sbGFibGUub2Zmc2V0SGVpZ2h0IC0gMTApOwor
CisgICAgdmFyIHJldHJ5Q291bnQgPSAwOworCisgICAgZnVuY3Rpb24gY2hlY2tTY3JvbGxlZCgp
CisgICAgeworICAgICAgICBpZiAoc2Nyb2xsYWJsZS5zY3JvbGxUb3AgPiAwKSB7CisgICAgICAg
ICAgICAkKCdjb250YWluZXInKS5pbm5lckhUTUwgPSAnJzsKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoJ3Njcm9sbGFibGUuc2Nyb2xsVG9wID4gMCcpOworICAgICAgICAgICAgd2luZG93LnRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgKytyZXRyeUNvdW50OworICAgICAgICBpZiAocmV0cnlDb3VudCA+IDEwKSB7CisgICAg
ICAgICAgICAkKCdjb250YWluZXInKS5pbm5lckhUTUwgPSAnJzsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoJ05vIGF1dG9zY3JvbGwnKTsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEF1dG9zY3JvbGwgaXMgb2NjdXJyZWQgZXZleSAwLjA1IHNlYy4KKyAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoY2hlY2tTY3JvbGxlZCwgNTApOworICAgIH0KKworICAgIGNoZWNrU2Nyb2xsZWQo
KTsKK30KKworZnVuY3Rpb24gc2V0VXBUZXN0KCkKK3sKKyAgICB2YXIgc2Nyb2xsYWJsZSA9ICQo
J3Njcm9sbGFibGUnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAg
ICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgbGluZS5p
bm5lckhUTUwgPSAibGluZSAiICsgaTsKKyAgICAgIHNjcm9sbGFibGUuYXBwZW5kQ2hpbGQobGlu
ZSk7CisgICAgfQorCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgY29u
c29sZS5sb2coJ1BsZWFzZSBydW4gd2l0aGluIER1bXBSZW5kZXJUcmVlJyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgd2lu
ZG93LnNldFRpbWVvdXQodGVzdEl0LCAwKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CitGb3IgbWFudWFsIHRlc3RpbmcsIGRyYWcgYW5kIGRyb3AgIkRyb3AgTWUiIHRvICJTY3JvbGxh
YmxlIiBhcmVhLgorPGRpdiBpZD0iY29udGFpbmVyIj4KKzxkaXYgaWQ9ImRyYWdnYWJsZSIgZHJh
Z2dhYmxlPSJ0cnVlIj5Ecm9wIE1lPC9kaXY+CitTY3JvbGxhYmxlCis8ZGl2IGlkPSJzY3JvbGxh
YmxlIj4KKzwvZGl2PgorPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQ2hlY2sgYXV0b3Nj
cm9sbCBieSBkcmFnLWFuZC1kcm9wJyk7CitzZXRVcFRlc3QoKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177950</attachid>
            <date>2012-12-05 23:19:19 -0800</date>
            <delta_ts>2012-12-14 01:41:25 -0800</delta_ts>
            <desc>Patch 2.0-2</desc>
            <filename>bug-39725-20121206161643.patch</filename>
            <type>text/plain</type>
            <size>31165</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM3ZDVmZTczNGNlNWVi
MzNiNDgzZmJhNjkxMTNkOTk5YWY2MTFjMi4uYTgzYWYzOTkwY2Q0ZTRmN2FkMjhjNzY2ZWI4MDIz
ZGU2NDE0ZDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEyLTA0ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYXV0byBzY3JvbGxpbmcgZnVuY3Rp
b25hbGl0eSBkdXJpbmcgZHJhZy1hbmQtZHJvcAorICAgICAgICB3aGVuIGRyb3Agc291cmNlIGlz
IG5lYXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgV2hlbiBkcm9wIHNv
dXJjZSBpcyBpbnNpZGUgMjBweCBvZiBzY3JvbGxhYmxlIGVsZW1lbnQgbW9yZSB0aGFuIDIwMG1z
LAorICAgICAgICBzY3JvbGxhYmxlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBzY3JvbGxlZCBl
dmVyeSA1MG1zIHRvd2FyZCBkcm9wCisgICAgICAgIHNvdXJjZSBwb3NpdGlvbiwgZS5nLiB2ZXJ0
aWNhbGx5IHNjcm9sbCB1cCB3aGVuIGRyb3Agc291cmNlIGlzIGluIHRvcAorICAgICAgICBlZGdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChjYW5BdXRv
c2Nyb2xsKTogTW92ZWQgdG8gUmVuZGVyQm94IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOiBDaGFuZ2VkIHRvIGluaXRpYWxpemUgbV9hdXRvc2Ny
b2xsU3RhcnRUaW1lIGFuZCBtX2F1dG9zY29sbEZvckRyYWdBbmRSb3BJbnByb2dyZXNzLgorICAg
ICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbik6IEFkZGVkIHRvIGNh
bGN1bGF0ZSBhdXRvc2Nyb2xsIGRpcmVjdGlvbiBmb3IgZHJhZy1hbmQtZHJvcC4KKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOiBDaGFuZ2Vk
IHRvIHVzZSBSZW5kZXJPYmplY3Q6OmZpbmRBdXRvc2Nyb2xsYWJsZVJlbmRlcmVyKCkuCisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1lckZpcmVkKTogQ2hhbmdl
ZCB0byBzdXBwb3J0IGF1dG9zY3JvbGwgZm9yIGRyYWctYW5kLWRyb3AgYW5kIG1vdmVkIGNhbGxp
bmcgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkgZnJvbSBSZW5kZXJMYXllcjo6YXV0b3Nj
cm9sbCgpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xs
UmVuZGVyZXIpOiBDaGFuZ2VkIHRvIHVzZSBSZW5kZXJPYmplY3Q6OmNhbkF1dG9zY29sbCgpLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKTogQ2hh
bmdlZCB0byByZXNldCBtX2F1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcEluUHJvZ3Jlc3MgYW5kIG1f
YXV0b3Njcm9sbFN0YXJ0VGltZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBk
YXRlRHJhZ0FuZERyb3ApOiBDaGFuZ2VkIHRvIGNhbGwgaGFuZGxlQXV0b3Njcm9sbCgpIGlmIG5l
ZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2xlYXJEcmFnU3RhdGUpOiBD
aGFuZ2VkIHRvIGNhbGwgc3RvcEF1dG9zY3JvbGxUaW1lcigpIHRvIHN0b3AgYXV0b3Njcm9sbCBk
dXJpbmcgZHJhZy1hbmQtZHJvcC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOiBDaGFu
Z2VkIHRvIG1vdmUgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkgdG8gcHJpdmF0ZSBhbmQg
YWRkIG1fYXV0b3Njcm9sbFN0YXJ0VGltZSBhbmQgbV9hdXRvc2NvbGxGb3JEcmFnQW5kUm9wSW5w
cm9ncmVzcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6YXV0b3Njcm9sbCk6IENoYW5nZWQgdG8gYWRkIG5ldyBwYXJhbWV0
ZXIgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwp
OiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlci5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5oOgorICAgICAgICAoUmVuZGVyQm94KTogQ2hhbmdlZCB0byBhZGQgbmV3IHBhcmFtZXRl
ciB0byBhdXRvc2Nyb2xsKCkgYW5kIHRvIGFkZCBuZXcgZnVuY3Rpb24gY2FuQXV0b3Njcm9sbCgp
IGFuZCBmaW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9s
bCk6IENoYW5nZWQgdG8gdXNlIHBvc2l0aW9uIHBhcmFtZXRlciBpbnN0ZWFkIG9mIEV2ZW50SGFu
ZGxlcjo6Y3VycmVudE1vdXNlUG9zaXRpb24oKSBhbmQgdG8gbW92ZSBjYWxsIG9mIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkgdG8gRXZlbnRIYW5kbGVyOjphdXRv
c2Nyb2xsVGltZXJGaXJlZCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgor
ICAgICAgICAoUmVuZGVyTGF5ZXIpOiBDaGFuZ2VkIGZvciBuZXcgcGFyYW1ldGVyIHBvc2l0aW9u
IHRvIGF1dG9zY3JvbGwoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKTogQ2hhbmdlIHRv
IGFkZCBuZXcgcGFyYW1ldGVyIHRvIGF1dG9zY3JvbGwoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oOgorICAgICAgICAoUmVuZGVyTGlzdEJveCk6IENoYW5nZSB0byBhZGQg
bmV3IHBhcmFtZXRlciB0byBhdXRvc2Nyb2xsKCkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpbmRBdXRvc2Ny
b2xsYWJsZVJlbmRlcmVyKTogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAoUmVuZGVyT2JqZWN0KTogQWRkZWQgY2FuQXV0b3Njcm9sbCgpIGFuZCBm
aW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjphdXRvc2Nyb2xsKTogQ2hhbmdlZCB0byBhZGQgbmV3IHBhcmFtZXRl
ciB0byBhdXRvc2Nyb2xsKCkKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmg6CisgICAgICAgIChSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOiAgQ2hh
bmdlZCB0byBhZGQgbmV3IHBhcmFtZXRlciB0byBhdXRvc2Nyb2xsKCkKKwogMjAxMi0xMi0wNSAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBSZW1v
dmUgYWRkSW1wbGljaXRSZWZlcmVuY2VzRm9yTm9kZVdpdGhFdmVudExpc3RlbmVycygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRmYWVhZjhhNGMzN2Q3OTU4N2M2ZjlmM2U3ZjVlNmFm
ZjNhYWQxN2UuLmVhODVlZjczNjYyY2VmYWU3OWQ0MjNmN2Q5MmNmZGU4NzUxZTQ2NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTItMDQgIFlvc2hp
ZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBEcmFnZ2luZyBvdmVy
IGFuIGVsZW1lbnQgd2l0aCBzY3JvbGxiYXJzIHNob3VsZCBzY3JvbGwgdGhlIGVsZW1lbnQgd2hl
biBkcmFnZ2luZyBuZWFyIGVkZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBEcmFnU2Nyb2xsVGltZXIgdXNlZCBmb3Ig
YXV0b21hdGljIHNjcm9sbGluZyBvZiBtYWluCisgICAgICAgIGZyYW1lIGRyYWctYW5kLWRyb3Ag
d2hpY2ggaXMgbm93IGltcGxlbWVudGVkIGluIEV2ZW50SGFuZGxlci4KKworICAgICAgICBBbm90
aGVyIHBhdGNoIHdpbGwgcmVtb3ZlIERyYWdTY3JvbGxUaW1lci57Y3BwLGh9IGFuZCB1cGRhdGUg
R1lQIGZpbGVzIHRvCisgICAgICAgIG1ha2UgcGF0Y2ggc2l6ZSBzbWFsbC4KKworICAgICAgICBO
byB0ZXN0cy4gRXhpc3RpbmcgdGVzdCBjb3ZlcnMgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZUVuZGVkQXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZU1vdmVkVG8pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyb3ApOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyYWdFbnRlck9yT3Zlcik6CisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTEyLTA1ICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBydW50aW1lIGVu
YWJsZSBmb3Igd2ViIGludGVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggODk0NjJiODNhYmNiMjY2ZjUxNzAwZTFhZDA2Mzk1ZTBjYzU1ZGFiMi4uOGMzMzUwYjgzNzlj
NzE1MDkyMTU2ZTdhMDM2NmM0ZmIxNDNiZWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtMTMzLDYgKzEzMywxMyBAQCBjb25zdCBpbnQgQ29tcG9zaXRpb25FdmVudEtl
eUNvZGUgPSAyMjk7CiB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAjZW5kaWYKIAorLy8gRGVs
YXkgdGltZSBpbiBzZWNvbmQgZm9yIHN0YXJ0IGF1dG9zY3JvbGwgaWYgcG9pbnRlciBpcyBpbiBi
b3JkZXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCitjb25zdCBkb3VibGUgYXV0b3Njcm9s
bERlbGF5ID0gMC4yOworCisvLyBTaXplIG9mIGJvcmRlciBiZWx0IGZvciBhdXRvc2Nyb2xsLiBX
aGVuIG1vdXNlIHBvaW50ZXIgaW4gYm9yZGVyIGJlbHQsCisvLyBhdXRvc2Nyb2xsIGlzIHN0YXJ0
ZWQuCitjb25zdCBpbnQgYXV0b3Njcm9sbEJlbHRTaXplID0gMjA7CisKIC8vIFdoZW4gdGhlIGF1
dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0aGUgc2Nyb2xs
IGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCiBjb25zdCBkb3VibGUgYXV0b3Njcm9sbElu
dGVydmFsID0gMC4wNTsKIApAQCAtMTUxLDYgKzE1OCw3IEBAIGNvbnN0IGRvdWJsZSBmYWtlTW91
c2VNb3ZlSW50ZXJ2YWxSZWR1Y3Rpb25GcmFjdGlvbiA9IDAuNzU7CiBlbnVtIE5vQ3Vyc29yQ2hh
bmdlVHlwZSB7IE5vQ3Vyc29yQ2hhbmdlIH07CiAKIGNsYXNzIE9wdGlvbmFsQ3Vyc29yIHsKKwog
cHVibGljOgogICAgIE9wdGlvbmFsQ3Vyc29yKE5vQ3Vyc29yQ2hhbmdlVHlwZSkgOiBtX2lzQ3Vy
c29yQ2hhbmdlKGZhbHNlKSB7IH0KICAgICBPcHRpb25hbEN1cnNvcihjb25zdCBDdXJzb3ImIGN1
cnNvcikgOiBtX2lzQ3Vyc29yQ2hhbmdlKHRydWUpLCBtX2N1cnNvcihjdXJzb3IpIHsgfQpAQCAt
MzM4LDcgKzM0Niw5IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkK
ICAgICAsIG1faG92ZXJUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQp
CiAgICAgLCBtX2F1dG9zY3JvbGxUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xs
VGltZXJGaXJlZCkKICAgICAsIG1fYXV0b3Njcm9sbFJlbmRlcmVyKDApCisgICAgLCBtX2F1dG9z
Y3JvbGxTdGFydFRpbWUoMCkKICAgICAsIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCisg
ICAgLCBtX2F1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcEluUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBt
X21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91c2VEb3duV2Fz
SW5TdWJmcmFtZShmYWxzZSkKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGltZXIodGhpcywg
JkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCwgZmFrZU1vdXNlTW92
ZU1pbmltdW1JbnRlcnZhbCkKQEAgLTcwMCwyOCArNzEwLDM0IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlCiAgICAgcmV0dXJuIHN3YWxsb3dFdmVudDsKIH0KIAotLy8gVGhlcmUgYXJlIHR3byBr
aW5kcyBvZiByZW5kZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgotc3RhdGljIGJvb2wgY2FuQXV0
b3Njcm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorLy8gSWYgc3BlY2lmaWVkIHBvaW50IGlz
IGluIGJvcmRlciBiZWx0LCByZXR1cm5lZCBvZmZzZXQgZGVub3RlcyBkaXJlY3Rpb24gb2YKKy8v
IHNjcm9sbGluZy4KK3N0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24o
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogewot
ICAgIGlmICghcmVuZGVyZXItPmlzQm94KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBJ
bnRTaXplIG9mZnNldDsKIAotICAgIC8vIENoZWNrIGZvciBhIGJveCB0aGF0IGNhbiBiZSBzY3Jv
bGxlZCBpbiBpdHMgb3duIHJpZ2h0LgotICAgIGlmICh0b1JlbmRlckJveChyZW5kZXJlciktPmNh
bkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIC8vIENoZWNrIGZvciBhIGJveCB0aGF0IHJlcHJlc2VudHMgdGhlIHRvcCBsZXZlbCBv
ZiBhIHdlYiBwYWdlLgotICAgIC8vIFRoaXMgY2FuIGJlIHNjcm9sbGVkIGJ5IGNhbGxpbmcgQ2hy
b21lOjpzY3JvbGxSZWN0SW50b1ZpZXcuCi0gICAgLy8gVGhpcyBvbmx5IGhhcyBhbiBlZmZlY3Qg
b24gdGhlIE1hYyBwbGF0Zm9ybSBpbiBhcHBsaWNhdGlvbnMKLSAgICAvLyB0aGF0IHB1dCB3ZWIg
dmlld3MgaW50byBzY3JvbGxpbmcgY29udGFpbmVycywgc3VjaCBhcyBNYWMgT1MgWCBNYWlsLgot
ICAgIC8vIFRoZSBjb2RlIGZvciB0aGlzIGlzIGluIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9W
aXNpYmxlLgotICAgIGlmIChyZW5kZXJlci0+bm9kZSgpICE9IHJlbmRlcmVyLT5kb2N1bWVudCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXItPmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBhZ2Uq
IHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPm1haW5GcmFt
ZSgpID09IGZyYW1lOworICAgICAgICByZXR1cm4gSW50U2l6ZSgpOworCisgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAg
ICByZXR1cm4gSW50U2l6ZSgpOworCisgICAgSW50UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPndp
bmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpOworICAgIEludFJlY3QgYm94KHJlbmRlcmVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKworICAgIGlmIChwb2ludC54KCkgPCBib3gueCgp
ICsgYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAgICBwb2ludC5tb3ZlKC1hdXRvc2Nyb2xsQmVs
dFNpemUsIDApOworICAgIGVsc2UgaWYgKHBvaW50LngoKSA+IGJveC5tYXhYKCkgLSBhdXRvc2Ny
b2xsQmVsdFNpemUpCisgICAgICAgIHBvaW50Lm1vdmUoYXV0b3Njcm9sbEJlbHRTaXplLCAwKTsK
KworICAgIGlmIChwb2ludC55KCkgPCBib3gueSgpICsgYXV0b3Njcm9sbEJlbHRTaXplKQorICAg
ICAgICBwb2ludC5tb3ZlKDAsIC1hdXRvc2Nyb2xsQmVsdFNpemUpOworICAgIGVsc2UgaWYgKHBv
aW50LnkoKSA+IGJveC5tYXhZKCkgLSBhdXRvc2Nyb2xsQmVsdFNpemUpCisgICAgICAgIHBvaW50
Lm1vdmUoMCwgYXV0b3Njcm9sbEJlbHRTaXplKTsKKworICAgIHJldHVybiBmcmFtZVZpZXctPmNv
bnRlbnRzVG9XaW5kb3cocG9pbnQpIC0gd2luZG93UG9pbnQ7CiB9CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQpAQCAtNzUxLDE5ICs3NjcsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUK
ICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fbW91c2VE
b3duTWF5U3RhcnRBdXRvc2Nyb2xsICYmICFtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsgICAgICAg
ICAgICAKLSAgICAgICAgLy8gRmluZCBhIHJlbmRlcmVyIHRoYXQgY2FuIGF1dG9zY3JvbGwuCi0g
ICAgICAgIHdoaWxlIChyZW5kZXJlciAmJiAhY2FuQXV0b3Njcm9sbChyZW5kZXJlcikpIHsKLSAg
ICAgICAgICAgIGlmICghcmVuZGVyZXItPnBhcmVudCgpICYmIHJlbmRlcmVyLT5ub2RlKCkgPT0g
cmVuZGVyZXItPmRvY3VtZW50KCkgJiYgcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVu
dCgpKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCktPm93
bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogc2Nyb2xs
YWJsZSA9IHJlbmRlcmVyLT5maW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpKSB7CiAgICAgICAg
ICAgICBtX2F1dG9zY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIGhhbmRsZUF1
dG9zY3JvbGwocmVuZGVyZXIpOworICAgICAgICAgICAgaGFuZGxlQXV0b3Njcm9sbChzY3JvbGxh
YmxlKTsKICAgICAgICAgfQotICAgICAgICAKICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydEF1
dG9zY3JvbGwgPSBmYWxzZTsKICAgICB9CiAKQEAgLTEwMTksMTIgKzEwMjYsMjEgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYXV0b3Njcm9sbEZvckRyYWdBbmRE
cm9wSW5Qcm9ncmVzcykgeworICAgICAgICBpZiAoY3VycmVudFRpbWUoKSAtIG1fYXV0b3Njcm9s
bFN0YXJ0VGltZSA+IGF1dG9zY3JvbGxEZWxheSkKKyAgICAgICAgICAgIHRvUmVuZGVyQm94KHIp
LT5hdXRvc2Nyb2xsKG1fYXV0b3Njcm9sbFJlZmVyZW5jZVBvaW50KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7CiAgICAgICAgIGlm
ICghbV9tb3VzZVByZXNzZWQpIHsKICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB0b1JlbmRlckJveChyKS0+
YXV0b3Njcm9sbCgpOworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisgICAgICAgIHVwZGF0ZVNl
bGVjdGlvbkZvck1vdXNlRHJhZygpOworI2VuZGlmCisgICAgICAgIHRvUmVuZGVyQm94KHIpLT5h
dXRvc2Nyb2xsKGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIHdlIHZlcmlmeSB0aGF0IHRoZSBtYWluIGZyYW1lIGhhc24ndCByZWNlaXZlZCB0aGUgb3Jk
ZXIgdG8gc3RvcCB0aGUgcGFuU2Nyb2xsCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKSB7CkBAIC0xMTA1LDcgKzExMjEsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBk
YXRlQXV0b3Njcm9sbFJlbmRlcmVyKCkKICAgICBpZiAoTm9kZSogbm9kZUF0UG9pbnQgPSBoaXRU
ZXN0LmlubmVyTm9kZSgpKQogICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IG5vZGVBdFBv
aW50LT5yZW5kZXJlcigpOwogCi0gICAgd2hpbGUgKG1fYXV0b3Njcm9sbFJlbmRlcmVyICYmICFj
YW5BdXRvc2Nyb2xsKG1fYXV0b3Njcm9sbFJlbmRlcmVyKSkKKyAgICB3aGlsZSAobV9hdXRvc2Ny
b2xsUmVuZGVyZXIgJiYgIW1fYXV0b3Njcm9sbFJlbmRlcmVyLT5jYW5BdXRvc2Nyb2xsKCkpCiAg
ICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPnBhcmVu
dCgpOwogfQogCkBAIC0xMjA4LDcgKzEyMjQsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c3RvcEF1
dG9zY3JvbGxUaW1lcihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCkKICAgICB9CiAKICAg
ICBpZiAoYXV0b3Njcm9sbFJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlcklzQmVp
bmdEZXN0cm95ZWQgJiYgKG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgfHwgbV9wYW5TY3JvbGxJblBy
b2dyZXNzKSkKKyAgICAgICAgaWYgKCFyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQgJiYgKG1fYXV0
b3Njcm9sbEluUHJvZ3Jlc3MgfHwgbV9wYW5TY3JvbGxJblByb2dyZXNzIHx8IG1fYXV0b3Njcm9s
bEZvckRyYWdBbmREcm9wSW5Qcm9ncmVzcykpCiAgICAgICAgICAgICB0b1JlbmRlckJveChhdXRv
c2Nyb2xsUmVuZGVyZXIoKSktPnN0b3BBdXRvc2Nyb2xsKCk7CiAjaWYgRU5BQkxFKFBBTl9TQ1JP
TExJTkcpCiAgICAgICAgIGlmIChtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsKQEAgLTEyMzUsNiAr
MTI1MSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVu
ZGVyZXJJc0JlaW5nRGVzdHJveWVkKQogICAgIH0KIAogICAgIG1fYXV0b3Njcm9sbEluUHJvZ3Jl
c3MgPSBmYWxzZTsKKyAgICBtX2F1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcEluUHJvZ3Jlc3MgPSBm
YWxzZTsKKyAgICBtX2F1dG9zY3JvbGxTdGFydFRpbWUgPSAwOwogfQogCiBOb2RlKiBFdmVudEhh
bmRsZXI6Om1vdXNlUHJlc3NOb2RlKCkgY29uc3QKQEAgLTIxMDYsMTIgKzIxMjQsMjYgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQsIENsaXBib2FyZCoKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5KTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGV2ZW50KTsKKyAgICBtX2F1dG9zY3JvbGxS
ZWZlcmVuY2VQb2ludCA9IGV2ZW50LnBvc2l0aW9uKCk7CiAKICAgICAvLyBEcmFnIGV2ZW50cyBz
aG91bGQgbmV2ZXIgZ28gdG8gdGV4dCBub2RlcyAoZm9sbG93aW5nIElFLCBhbmQgcHJvcGVyIG1v
dXNlb3Zlci9vdXQgZGlzcGF0Y2gpCiAgICAgUmVmUHRyPE5vZGU+IG5ld1RhcmdldCA9IG1ldi50
YXJnZXROb2RlKCk7CiAgICAgaWYgKG5ld1RhcmdldCAmJiBuZXdUYXJnZXQtPmlzVGV4dE5vZGUo
KSkKICAgICAgICAgbmV3VGFyZ2V0ID0gbmV3VGFyZ2V0LT5wYXJlbnROb2RlKCk7CiAKKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbmV3VGFyZ2V0ID8gbmV3VGFyZ2V0LT5yZW5kZXJlcigp
IDogMDsKKyAgICBSZW5kZXJPYmplY3QqIHNjcm9sbGFibGUgPSByZW5kZXJlciA/IHJlbmRlcmVy
LT5maW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpIDogMDsKKyAgICBJbnRTaXplIG9mZnNldCA9
IHNjcm9sbGFibGUgPyBjYWxjdWxhdGVBdXRvc2Nyb2xsRGlyZWN0aW9uKHNjcm9sbGFibGUsIG1f
YXV0b3Njcm9sbFJlZmVyZW5jZVBvaW50KSA6IEludFNpemUoKTsKKyAgICBpZiAob2Zmc2V0Lmlz
WmVybygpKQorICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgZWxzZSB7CisgICAg
ICAgIG1fYXV0b3Njcm9sbFJlZmVyZW5jZVBvaW50ICs9IG9mZnNldDsKKyAgICAgICAgaWYgKGF1
dG9zY3JvbGxSZW5kZXJlcigpICE9IHNjcm9sbGFibGUpCisgICAgICAgICAgICBtX2F1dG9zY3Jv
bGxTdGFydFRpbWUgPSBldmVudC50aW1lc3RhbXAoKTsKKyAgICAgICAgbV9hdXRvc2Nyb2xsRm9y
RHJhZ0FuZERyb3BJblByb2dyZXNzID0gdHJ1ZTsKKyAgICAgICAgaGFuZGxlQXV0b3Njcm9sbChz
Y3JvbGxhYmxlKTsKKyAgICB9CisKICAgICBpZiAobV9kcmFnVGFyZ2V0ICE9IG5ld1RhcmdldCkg
ewogICAgICAgICAvLyBGSVhNRTogdGhpcyBvcmRlcmluZyB3YXMgZXhwbGljaXRseSBjaG9zZW4g
dG8gbWF0Y2ggV2luSUUuIEhvd2V2ZXIsCiAgICAgICAgIC8vIGl0IGlzIHNvbWV0aW1lcyBpbmNv
cnJlY3Qgd2hlbiBkcmFnZ2luZyB3aXRoaW4gc3ViZnJhbWVzLCBhcyBzZWVuIHdpdGgKQEAgLTIx
OTUsNiArMjIyNyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkCiAKIHZvaWQgRXZlbnRIYW5k
bGVyOjpjbGVhckRyYWdTdGF0ZSgpCiB7CisgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAg
IG1fZHJhZ1RhcmdldCA9IDA7CiAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUgPSAwOwog
ICAgIG1fc2hvdWxkT25seUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAppbmRleCA0NWRlMTZlYTAwNDZmN2ZhNmFiNTMyMWM3NmJjMDVhZjI0OGRk
NjIwLi44NTExODRkMjA1Y2RiZWFmNTk5ZTMyYWYzOTcyNmM0NTViNDM3MDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTEwMiwxMCArMTAyLDYgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXIoKTsKICAgICB2b2lkIG5vZGVXaWxsQmVSZW1vdmVkKE5vZGUqKTsKIAotI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWco
KTsKLSNlbmRpZgotCiAgICAgTm9kZSogbW91c2VQcmVzc05vZGUoKSBjb25zdDsKICAgICB2b2lk
IHNldE1vdXNlUHJlc3NOb2RlKFBhc3NSZWZQdHI8Tm9kZT4pOwogCkBAIC0zNTMsNiArMzQ5LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGV2ZW50TG9vcEhhbmRsZU1vdXNlRHJhZ2dlZChjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAjZW5kaWYKIAorICAgIHZvaWQgdXBkYXRl
U2VsZWN0aW9uRm9yTW91c2VEcmFnKCk7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICB2
b2lkIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhjb25zdCBIaXRUZXN0UmVzdWx0Jik7CiAj
ZW5kaWYKQEAgLTQwOCw3ICs0MDUsMTMgQEAgcHJpdmF0ZToKICAgICAKICAgICBUaW1lcjxFdmVu
dEhhbmRsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOwogICAgIFJlbmRlck9iamVjdCogbV9hdXRvc2Ny
b2xsUmVuZGVyZXI7CisgICAgSW50UG9pbnQgbV9hdXRvc2Nyb2xsUmVmZXJlbmNlUG9pbnQ7Cisg
ICAgZG91YmxlIG1fYXV0b3Njcm9sbFN0YXJ0VGltZTsKKyAgICAvLyBUT0RPOiBJdCBpcyBiZXR0
ZXIgdG8gY2hhbmdlIHR5cGUgb2YgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyB0byBBdXRvc2Nyb2xs
VHlwZQorICAgIC8vIGVudW0gd2hpY2ggaGFzIEZvclNlbGVjdGlvbiwgRm9yUGFuLCBhbmQgRm9y
RHJhZ0FuZERyb3AsIHRvIGludGVncmF0ZQorICAgIC8vIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3Ms
IG1fcGFuU2Nyb2xsaW5nSW5Qcm9ncmVzcyBhbmQgbV9hdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3BJ
blByb2dyZXNzLgogICAgIGJvb2wgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsKKyAgICBib29sIG1f
YXV0b3Njcm9sbEZvckRyYWdBbmREcm9wSW5Qcm9ncmVzczsKICAgICBib29sIG1fbW91c2VEb3du
TWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJvb2wgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDY3ZDQzMDBhMWNkMTc4
Zjg0OTA1MWFhODNiMjlmZTY1NWFlZDJhZDguLmY4YTZjZTZhNjhmMGUyNTIxY2UzNjJhNjAxNzFl
NWM1NzhlNTkyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC02
MjgsMTAgKzYyOCwxMCBAQCBib29sIFJlbmRlckJveDo6dXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmco
KSBjb25zdAogICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBoYXNMYXllcigpICYmIGxh
eWVyKCktPnVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojph
dXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyQm94OjphdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50JiBw
b3NpdGlvbikKIHsKICAgICBpZiAobGF5ZXIoKSkKLSAgICAgICAgbGF5ZXIoKS0+YXV0b3Njcm9s
bCgpOworICAgICAgICBsYXllcigpLT5hdXRvc2Nyb2xsKHBvc2l0aW9uKTsKIH0KIAogdm9pZCBS
ZW5kZXJCb3g6OnBhblNjcm9sbChjb25zdCBJbnRQb2ludCYgc291cmNlKQpAQCAtMzYwMCw2ICsz
NjAwLDI3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRS
ZXBsYWNlZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9w
b3NpdGlvbiA9IGxvZ2ljYWxUb3BQb3M7CiB9CiAKKy8vIFRoZXJlIGFyZSB0d28ga2luZHMgb2Yg
cmVuZGVyZXIgdGhhdCBjYW4gYXV0b3Njcm9sbC4KK2Jvb2wgUmVuZGVyQm94OjpjYW5BdXRvc2Ny
b2xsKCkgY29uc3QKK3sKKyAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCBjYW4gYmUgc2Nyb2xs
ZWQgaW4gaXRzIG93biByaWdodC4KKyAgICBpZiAoY2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFi
bGVBcmVhKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQ2hlY2sgZm9yIGEgYm94
IHRoYXQgcmVwcmVzZW50cyB0aGUgdG9wIGxldmVsIG9mIGEgd2ViIHBhZ2UuCisgICAgLy8gVGhp
cyBjYW4gYmUgc2Nyb2xsZWQgYnkgY2FsbGluZyBDaHJvbWU6OnNjcm9sbFJlY3RJbnRvVmlldy4K
KyAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0aGUgTWFjIHBsYXRmb3JtIGluIGFw
cGxpY2F0aW9ucworICAgIC8vIHRoYXQgcHV0IHdlYiB2aWV3cyBpbnRvIHNjcm9sbGluZyBjb250
YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwuCisgICAgLy8gVGhlIGNvZGUgZm9yIHRoaXMg
aXMgaW4gUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUuCisgICAgaWYgKG5vZGUoKSAh
PSBkb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWUqIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+
bWFpbkZyYW1lKCkgPT0gZnJhbWU7Cit9CisKIExheW91dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENh
cmV0UmVjdChJbmxpbmVCb3gqIGJveCwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRy
YVdpZHRoVG9FbmRPZkxpbmUpCiB7CiAgICAgLy8gVmlzaWJsZVBvc2l0aW9ucyBhdCBvZmZzZXRz
IGluc2lkZSBjb250YWluZXJzIGVpdGhlciBhKSByZWZlciB0byB0aGUgcG9zaXRpb25zIGJlZm9y
ZS9hZnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGMxZGUzZTczNjE5
MTZjMzgxYmYxM2MwYjk2YTAxZGJkMjE1MTViYTIuLmFhNTNjOWI1NjlhOGZkZTAxODUwYTkyYTk3
ZTRlNzEyM2NkMjBlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQz
Nyw3ICs0MzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGxvZ2ljYWxTY3JvbGwoU2Ny
b2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIg
PSAxLCBOb2RlKiogc3RvcE5vZGUgPSAwKTsKICAgICBib29sIGNhbkJlU2Nyb2xsZWRBbmRIYXNT
Y3JvbGxhYmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGlj
YWxseVNjcm9sbGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wQXV0b3Njcm9sbCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYW5TY3JvbGwoY29u
c3QgSW50UG9pbnQmKTsKICAgICBib29sIGhhc0F1dG9WZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
IHsgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIChzdHlsZSgpLT5vdmVyZmxvd1koKSA9PSBP
QVVUTyB8fCBzdHlsZSgpLT5vdmVyZmxvd1koKSA9PSBPT1ZFUkxBWSk7IH0KQEAgLTYzMyw2ICs2
MzMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGZyYW1lUmVjdEZvclN0
aWNreVBvc2l0aW9uaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZnJhbWVSZWN0KCk7IH0K
IAorICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRvc2Nyb2xsKCkgY29uc3QgT1ZFUlJJREU7CisKIHBy
aXZhdGU6CiAgICAgLy8gVGhlIHdpZHRoL2hlaWdodCBvZiB0aGUgY29udGVudHMgKyBib3JkZXJz
ICsgcGFkZGluZy4gIFRoZSB4L3kgbG9jYXRpb24gaXMgcmVsYXRpdmUgdG8gb3VyIGNvbnRhaW5l
ciAod2hpY2ggaXMgbm90IGFsd2F5cyBvdXIgcGFyZW50KS4KICAgICBMYXlvdXRSZWN0IG1fZnJh
bWVSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZGZi
MmQ0Yzc0OWRiMTc4YjFlZDg1Y2U1YjBmOWMwN2M0Yjc4Y2FlNy4uNGY5Y2Q1ZThmYzg2YjI5YWYx
MmEzNjMzMWMyYTk2MDM4ZjljZDMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0yMDAyLDcgKzIwMDIsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpn
ZXRSZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IExheQog
ICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KHgsIHkpLCB2aXNpYmxlUmVjdC5zaXpl
KCkpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyTGF5
ZXI6OmF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIEZyYW1lKiBm
cmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIwMTIsMTEg
KzIwMTIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKCkKICAgICBpZiAoIWZyYW1l
VmlldykKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpOwotI2Vu
ZGlmCi0KLSAgICBJbnRQb2ludCBjdXJyZW50RG9jdW1lbnRQb3NpdGlvbiA9IGZyYW1lVmlldy0+
d2luZG93VG9Db250ZW50cyhmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0
aW9uKCkpOworICAgIEludFBvaW50IGN1cnJlbnREb2N1bWVudFBvc2l0aW9uID0gZnJhbWVWaWV3
LT53aW5kb3dUb0NvbnRlbnRzKHBvc2l0aW9uKTsKICAgICBzY3JvbGxSZWN0VG9WaXNpYmxlKExh
eW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIExheW91dFNpemUoMSwgMSkpLCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
aW5kZXggMGMwY2Q3OTgyMWJhZTkyYzg5NTk5NGIwYzc3ZDMzMDExYmVhYWY2OS4uNzJmNWM5ZDJh
NTIzMjI0MGUwYzdjN2U1MjJiOWMyMGVkZmRhZDE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKQEAgLTM3Miw3ICszNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVj
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKLSAgICB2b2lk
IGF1dG9zY3JvbGwoKTsKKyAgICB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKIAog
ICAgIHZvaWQgcmVzaXplKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IExheW91dFNp
emUmKTsKICAgICBib29sIGluUmVzaXplTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5SZXNpemVN
b2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXgg
YjkyZDlmMDhkYzNiYzYzYjViOTVkY2QxZTRiN2ZkNmIyMGMxNDdmNS4uMDI0MGE0MTI2YTQ3NTQ2
OWNkNTkzYWVjYjA2NTdmZWNlZTM2ZGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcApAQCAtNTU0LDcgKzU1NCw3IEBAIGludCBSZW5kZXJMaXN0Qm94Ojpz
Y3JvbGxUb3dhcmQoY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uKQogICAgIHJldHVybiBsaXN0
SW5kZXhBdE9mZnNldChwb3NpdGlvbk9mZnNldCk7CiB9CiAKLXZvaWQgUmVuZGVyTGlzdEJveDo6
YXV0b3Njcm9sbCgpCit2b2lkIFJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwoY29uc3QgSW50UG9p
bnQmKQogewogICAgIEludFBvaW50IHBvcyA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250
ZW50cyhmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGM2NjJhZjI3ZjY5
ZDQzNWI2YTYxYzM4YzQ5ZjAzOTdhMGQ0OGUzOWYuLjk3NDAwODU1NmZkMGM1YzMyMDJlNzBhZDE5
OTU5MTU2MzU0NDdiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
aApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1Jp
bmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgdmly
dHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQXV0b3Nj
cm9sbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhblNjcm9sbCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5k
ZXggOWZmYzg1MzFkNmRkMjhhNDgwOWE3OWRlM2ZlYTBiYWU2OWUxNmY3ZS4uOTg2MjNmYzUxZTA5
OGU3NDIwMDhkY2IyN2EwMGQwNGY1OThjN2U0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0x
NjkwLDYgKzE2OTEsMTggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmhhbmRsZUR5bmFtaWNGbG9hdFBv
c2l0aW9uQ2hhbmdlKCkKICAgICB9CiB9CiAKK1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpm
aW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHRoaXM7CisgICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+Y2FuQXV0b3Njcm9s
bCgpKSB7CisgICAgICAgIGlmICghcmVuZGVyZXItPnBhcmVudCgpICYmIHJlbmRlcmVyLT5ub2Rl
KCkgPT0gcmVuZGVyZXItPmRvY3VtZW50KCkgJiYgcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVy
RWxlbWVudCgpKQorICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+
b3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
bmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOworICAgIH0KKyAgICByZXR1cm4gcmVuZGVyZXI7
Cit9CisKIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRBbmltYXRhYmxlU3R5bGUoUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgaWYgKCFpc1RleHQoKSAmJiBzdHlsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBiMDEwMzM3ODAxOTY2M2MzODNl
M2MwN2U5M2Y5MDIwYjkzYzMyNWUwLi5mY2IzNWFmNjg5MTUyZmExMWJkMmVjNWI3MGIxNGFjNjgx
ODBlZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0yNzAs
NyArMjcwLDExIEBAIHB1YmxpYzoKICAgICAvLyBhZ2Fpbi4gIFdlIGhhdmUgdG8gbWFrZSBzdXJl
IHRoZSByZW5kZXIgdHJlZSB1cGRhdGVzIGFzIG5lZWRlZCB0byBhY2NvbW1vZGF0ZSB0aGUgbmV3
CiAgICAgLy8gbm9ybWFsIGZsb3cgb2JqZWN0LgogICAgIHZvaWQgaGFuZGxlRHluYW1pY0Zsb2F0
UG9zaXRpb25DaGFuZ2UoKTsKLSAgICAKKworICAgIC8vIEF1dG9zY3JvbGwgcmVsYXRlZCBmdW5j
dGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0b3Njcm9sbCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgUmVuZGVyT2JqZWN0KiBmaW5kQXV0b3Njcm9sbGFibGVSZW5kZXJlcigpOwor
CiAgICAgLy8gUmVuZGVyT2JqZWN0IHRyZWUgbWFuaXB1bGF0aW9uCiAgICAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVD
aGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxDaGlsZHJlbigpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwCmluZGV4IGM3ZjA3NWE0YjhmOTgwOTBmMDFlZTlhMjk4Y2YzNWRmNmZkZTIzYzAuLjdlYTMw
ODE2MDVkODRjYzdkODA0OTNiMTFlMzMzMjkxYmFmOGI5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBA
IC0zODEsMTEgKzM4MSwxMSBAQCBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dGV4
dFNob3VsZEJlVHJ1bmNhdGVkKCkgY29uc3QKICAgICAgICAgJiYgc3R5bGUoKS0+dGV4dE92ZXJm
bG93KCkgPT0gVGV4dE92ZXJmbG93RWxsaXBzaXM7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjphdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBSZW5kZXJM
YXllciogbGF5ZXIgPSBpbm5lclRleHRFbGVtZW50KCktPnJlbmRlckJveCgpLT5sYXllcigpOwog
ICAgIGlmIChsYXllcikKLSAgICAgICAgbGF5ZXItPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgbGF5
ZXItPmF1dG9zY3JvbGwocG9zaXRpb24pOwogfQogCiBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpzY3JvbGxXaWR0aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggYWYyN2JmNzU4YjQ0
MTRjYzEwYmUyMDc0YjRlMGEyZjZhMzQ1ZmQ4Ny4uZDdkZmZlM2ZlZmI3ZTJjZTRhY2E5ZWE4NDU4
YjA2OTY3YWNjOGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVS
UklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgdmlydHVhbCB2b2lk
IGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKIAogICAgIC8vIFN1YmNsYXNzZWQgdG8gZm9y
d2FyZCB0byBvdXIgaW5uZXIgZGl2LgogICAgIHZpcnR1YWwgaW50IHNjcm9sbExlZnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA0NDMx
NDBjMDE0OWRiMWZjNDc0ODQ5YWZkODExNmZmNzQ0NmM0OWRiLi5kODRkY2M2MDI2ZjEyOGQwNzg4
MWVmZmY0MzQ0MWNiODlkMTQwNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCi0j
aW5jbHVkZSAiRHJhZ1Njcm9sbFRpbWVyLmgiCiAjaW5jbHVkZSAiRHJhZ1Nlc3Npb24uaCIKICNp
bmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTQxNCw3ICs0
MTMsNiBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQog
ICAgICwgbV9hdXRvZmlsbFBvcHVwKDApCiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAg
ICAgLCBtX3RhYnNUb0xpbmtzKGZhbHNlKQotICAgICwgbV9kcmFnU2Nyb2xsVGltZXIoYWRvcHRQ
dHIobmV3IERyYWdTY3JvbGxUaW1lcikpCiAgICAgLCBtX2lzQ2FuY2VsaW5nRnVsbFNjcmVlbihm
YWxzZSkKICAgICAsIG1fYmVuY2htYXJrU3VwcG9ydCh0aGlzKQogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKQEAgLTMyMTgsNyArMzIxNiw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRy
YWdTb3VyY2VFbmRlZEF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDApOwog
ICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRB
dChwbWUsCiAgICAgICAgIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG9wZXJhdGlvbikpOwot
ICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT5zdG9wKCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRy
YWdTb3VyY2VNb3ZlZFRvKApAQCAtMzIyNiw3ICszMjIzLDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
ZHJhZ1NvdXJjZU1vdmVkVG8oCiAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAogICAg
IFdlYkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogewotICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT50
cmlnZ2VyU2Nyb2xsKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGNsaWVudFBvaW50KTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgpCkBAIC0z
MzEyLDggKzMzMDgsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJvcChjb25zdCBX
ZWJQb2ludCYgY2xpZW50UG9pbnQsCiAKICAgICBtX2RyYWdPcGVyYXRpb24gPSBXZWJEcmFnT3Bl
cmF0aW9uTm9uZTsKICAgICBtX2N1cnJlbnREcmFnRGF0YSA9IDA7Ci0KLSAgICBtX2RyYWdTY3Jv
bGxUaW1lci0+c3RvcCgpOwogfQogCiBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFn
VGFyZ2V0RHJhZ0VudGVyT3JPdmVyKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwgY29uc3Qg
V2ViUG9pbnQmIHNjcmVlblBvaW50LCBEcmFnQWN0aW9uIGRyYWdBY3Rpb24sIGludCBrZXlNb2Rp
ZmllcnMpCkBAIC0zMzQwLDEyICszMzM0LDYgQEAgV2ViRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1w
bDo6ZHJhZ1RhcmdldERyYWdFbnRlck9yT3Zlcihjb25zdCBXZWJQb2ludCYgY2xpZW50UG8KICAg
ICAgICAgZHJvcEVmZmVjdCA9IERyYWdPcGVyYXRpb25Ob25lOwogCiAgICAgIG1fZHJhZ09wZXJh
dGlvbiA9IHN0YXRpY19jYXN0PFdlYkRyYWdPcGVyYXRpb24+KGRyb3BFZmZlY3QpOwotCi0gICAg
aWYgKGRyYWdBY3Rpb24gPT0gRHJhZ092ZXIpCi0gICAgICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT50
cmlnZ2VyU2Nyb2xsKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGNsaWVudFBvaW50KTsK
LSAgICBlbHNlCi0gICAgICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT5zdG9wKCk7Ci0KICAgICByZXR1
cm4gbV9kcmFnT3BlcmF0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAppbmRleCA4NmY1Njk0MTA5Y2M1YTljNWJmOTQ1ODhlMjM2MWUyNWI5Y2Y0YzhlLi5i
ZGUyMTExMDVkOTRjOGE5YmM4ZWIwYzI4YzRmMWMyZTAzMWMzMjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTg5LDcgKzg5LDYgQEAgY2xhc3MgQmF0dGVy
eUNsaWVudEltcGw7CiBjbGFzcyBDb250ZXh0RmVhdHVyZXNDbGllbnRJbXBsOwogY2xhc3MgQ29u
dGV4dE1lbnVDbGllbnRJbXBsOwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsK
LWNsYXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7CiBj
bGFzcyBMaW5rSGlnaGxpZ2h0OwogY2xhc3MgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwpAQCAt
ODE0LDcgKzgxMyw2IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8V1RGOjpTdHJp
bmcsIFdURjo6U3RyaW5nPiBTZXR0aW5nc01hcDsKICAgICBPd25QdHI8U2V0dGluZ3NNYXA+IG1f
aW5zcGVjdG9yU2V0dGluZ3NNYXA7Ci0gICAgT3duUHRyPERyYWdTY3JvbGxUaW1lcj4gbV9kcmFn
U2Nyb2xsVGltZXI7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQogICAgIC8vIFRoZSBwcm92aWRlciBvZiBkZXNrdG9wIG5vdGlmaWNh
dGlvbnM7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOWVjYmM4NWUwNTA3MDFlMDMyYjc1NzY2N2Q5MzA4MzQzNDNlYjM1ZC4u
NGJhYTJjY2IzYjEyYjRiNTRlMzc0ZGRiNmI0ZTc5NzRhNDBhMmE0YyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDEyLTEyLTA0ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgRHJhZ2dpbmcgb3ZlciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91
bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmV3
IHRlc3QgZm9yIGF1dG9zY3JvbGwgZHVyaW5nIGRyYWctYW5kLWRyb3AuCisKKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbDogQWRk
ZWQuCisKIDIwMTItMTItMDUgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CiAKICAg
ICAgICAgW0NTUyBSZWdpb25zXSBCbG9ja3MgZG9uJ3QgcmVsYXlvdXQgY2hpbGRyZW4gaWYgdGhl
IHdpZHRoIG9mIGEgcmVnaW9uIGNoYW5nZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRhYzE2M2Q0Yzk3Y2UxNTczNGMwMDE5NmU0MzIzNjUzMGM5OThiYTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3Jv
bGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ2hlY2sgYXV0b3Njcm9sbCBieSBkcmFn
LWFuZC1kcm9wCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNjcm9sbGFi
bGUuc2Nyb2xsVG9wID4gMAorRm9yIG1hbnVhbCB0ZXN0aW5nLCBkcmFnIGFuZCBkcm9wICJEcm9w
IE1lIiB0byAiU2Nyb2xsYWJsZSIgYXJlYS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDYyYmZj
MzhkNDNmYjI3OWU2MDcwYjc1NjFiNzJiOGZlM2YxODZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwKQEAgLTAs
MCArMSwxMDEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorI2Ry
YWdnYWJsZSB7CisgIHBhZGRpbmc6IDVwdDsKKyAgYm9yZGVyOiAzcHggc29saWQgIzAwY2MwMDsK
KyAgYmFja2dyb3VuZDogIzAwY2NjYzsKKyAgd2lkdGg6IDgwcHg7CisgIGN1cnNvcjogaGFuZDsK
K30KKworI3Njcm9sbGFibGUgeworICAgIGhlaWdodDogMjAwcHg7CisgICAgb3ZlcmZsb3c6IGF1
dG87CisgICAgYm9yZGVyOiBzb2xpZCAzcHggI2NjMDAwMDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0
PgorZnVuY3Rpb24gJChpZCkgeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB9
CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgICQoJ2NvbnRhaW5lcicpLmlubmVySFRNTCA9ICcnOworICAgIHdpbmRvdy50ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdEl0KCkgeworICAgIHZhciBkcmFnZ2Fi
bGUgPSAkKCdkcmFnZ2FibGUnKTsKKyAgICB2YXIgc2Nyb2xsYWJsZSA9ICQoJ3Njcm9sbGFibGUn
KTsKKworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworCisgICAgLy8gR3JhYiBkcmFnZ2FibGUK
KyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhkcmFnZ2FibGUub2Zmc2V0TGVmdCArIDUsIGRy
YWdnYWJsZS5vZmZzZXRUb3AgKyA1KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKwor
ICAgIC8vIE1vdmUgbW91c2UgdG8gYXV0b3Njcm9sbCBib3JkZXIgYmVsdC4KKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzY3JvbGxhYmxlLm9mZnNldExlZnQgKyA1LCBzY3JvbGxhYmxlLm9m
ZnNldFRvcCArIHNjcm9sbGFibGUub2Zmc2V0SGVpZ2h0IC0gMTApOworCisgICAgdmFyIHJldHJ5
Q291bnQgPSAwOworCisgICAgZnVuY3Rpb24gY2hlY2tTY3JvbGxlZCgpCisgICAgeworICAgICAg
ICBpZiAoc2Nyb2xsYWJsZS5zY3JvbGxUb3AgPiAwKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCdzY3JvbGxhYmxlLnNjcm9sbFRvcCA+IDAnKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgICsrcmV0cnlDb3VudDsK
KyAgICAgICAgaWYgKHJldHJ5Q291bnQgPiAxMCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgn
Tm8gYXV0b3Njcm9sbCcpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXV0b3Njcm9sbCBpcyBvY2N1cnJlZCBl
dmV5IDAuMDUgc2VjLgorICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjaGVja1Njcm9sbGVkLCA1
MCk7CisgICAgfQorCisgICAgY2hlY2tTY3JvbGxlZCgpOworfQorCitmdW5jdGlvbiBzZXRVcFRl
c3QoKQoreworICAgIHZhciBzY3JvbGxhYmxlID0gJCgnc2Nyb2xsYWJsZScpOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgIHZhciBsaW5lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICBsaW5lLmlubmVySFRNTCA9ICJsaW5lICIgKyBpOwor
ICAgICAgc2Nyb2xsYWJsZS5hcHBlbmRDaGlsZChsaW5lKTsKKyAgICB9CisKKyAgICBpZiAoIXdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBjb25zb2xlLmxvZygnUGxlYXNlIHJ1biB3aXRo
aW4gRHVtcFJlbmRlclRyZWUnKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB3aW5kb3cuc2V0VGltZW91dCh0ZXN0SXQsIDAp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0ZvciBtYW51YWwgdGVzdGluZywgZHJh
ZyBhbmQgZHJvcCAiRHJvcCBNZSIgdG8gIlNjcm9sbGFibGUiIGFyZWEuCis8ZGl2IGlkPSJjb250
YWluZXIiPgorPGRpdiBpZD0iZHJhZ2dhYmxlIiBkcmFnZ2FibGU9InRydWUiPkRyb3AgTWU8L2Rp
dj4KK1Njcm9sbGFibGUKKzxkaXYgaWQ9InNjcm9sbGFibGUiPgorPC9kaXY+Cis8L2Rpdj4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdDaGVjayBhdXRvc2Nyb2xsIGJ5IGRyYWctYW5kLWRyb3AnKTsK
K3NldFVwVGVzdCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179448</attachid>
            <date>2012-12-14 01:41:30 -0800</date>
            <delta_ts>2013-01-07 21:54:55 -0800</delta_ts>
            <desc>Patch 3.0</desc>
            <filename>bug-39725-20121214183849.patch</filename>
            <type>text/plain</type>
            <size>24128</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAwYTMwN2E4ZWEyN2Mw
OTFjNjFiZTYyZWFjMzE3NDUxOWU3NjBjYy4uZmQ0NzkzNGY3YWVkYjg0OGI5Y2QwNTIwMTEwYzY0
YzFmNjdhOWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTEyLTE0ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYXV0byBzY3JvbGxpbmcgZnVuY3Rp
b25hbGl0eSBkdXJpbmcgZHJhZy1hbmQtZHJvcAorICAgICAgICB3aGVuIGRyb3Agc291cmNlIGlz
IG5lYXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgV2hlbiBkcm9wIHNv
dXJjZSBpcyBpbnNpZGUgMjBweCBvZiBzY3JvbGxhYmxlIGVsZW1lbnQgbW9yZSB0aGFuIDIwMG1z
LAorICAgICAgICBzY3JvbGxhYmxlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBzY3JvbGxlZCBl
dmVyeSA1MG1zIHRvd2FyZCBkcm9wCisgICAgICAgIHNvdXJjZSBwb3NpdGlvbiwgZS5nLiB2ZXJ0
aWNhbGx5IHNjcm9sbCB1cCB3aGVuIGRyb3Agc291cmNlIGlzIGluIHRvcAorICAgICAgICBlZGdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcik6IENo
YW5nZWQgdG8gaW5pdGlhbGl6ZSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6
IEFkZGVkIGZvciBzdGFydC9zdG9wIGF1dG9zY3JvbGwgZHVyaW5nIGRyYWctYW5kLWRyb3AuCisg
ICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQpOiBDaGFuZ2VkIHRvIGFkZCBhdXRvc2Nyb2xsIGZvciBkcmFnLWFuZC1kcm9wLCBhbmQgdG8g
cGFzcyBsYXN0IGtub3cgcG9zaXRpb24gdG8gUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkuCisgICAg
ICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoQXV0b3Njcm9sbENv
bnRyb2xsZXIpOiBDaGFuZ2VkIHRvIGFkZCB1cGRhdGVEcmFnQW5kRHJvcCgpIGFuZCBtX2RyYWdB
bmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0aW9uIGFuZCBtX2RyYWdBbmREcm9wQXV0b3Nj
cm9sbFN0YXJ0VGltZS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKTogQ2hhbmdlZCB0byBj
YWxsIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCgpLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojph
dXRvc2Nyb2xsKTogQ2hhbmdlZCBmb3IgbmV3IHBhcmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbik6IEFkZGVk
IGZvciBhdXRvc2Nyb2xsLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAg
ICAgKFJlbmRlckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphdXRvc2Nyb2xsKTogIENoYW5nZWQgZm9yIG5l
dyBwYXJhbWV0ZXIgcG9zaXRpb24gYW5kIG1vdmUgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KCkgdG8gQXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmg6CisgICAgICAgIChSZW5kZXJMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6YXV0b3Njcm9s
bCk6ICBDaGFuZ2VkIGZvciBuZXcgcGFyYW1ldGVyIHBvc2l0aW9uLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgIChSZW5kZXJMaXN0Qm94KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YXV0b3Njcm9sbCk6ICBDaGFuZ2Vk
IGZvciBuZXcgcGFyYW1ldGVyIHBvc2l0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAgICAgKFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZSk6CisKIDIwMTItMTItMTMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29sbGVjdCBuYXRpdmUgaGVhcCBncmFwaCBh
bmQgcmVwb3J0IGl0IHRvIHRoZSBmcm9udC1lbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMzA1N2MwZDVlYzgzYzUyNmZlYjQxMzdjM2RlMGM3NmY5MGQyNjQyZi4uM2RkNmYyMTE1NjU1
MmRhYmNiM2UzNDBhOWQ0MGE5MTcwMWZkMmE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMi0xNCAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIERyYWdnaW5nIG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9s
bGJhcnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzI1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCByZW1vdmVzIERyYWdTY3JvbGxUaW1lciB1c2VkIGZvciBhdXRvbWF0aWMgc2Nyb2xsaW5nIG9m
IG1haW4KKyAgICAgICAgZnJhbWUgZHJhZy1hbmQtZHJvcCB3aGljaCBpcyBub3cgaW1wbGVtZW50
ZWQgaW4gRXZlbnRIYW5kbGVyLgorCisgICAgICAgIEFub3RoZXIgcGF0Y2ggd2lsbCByZW1vdmUg
RHJhZ1Njcm9sbFRpbWVyLntjcHAsaH0gYW5kIHVwZGF0ZSBHWVAgZmlsZXMgdG8KKyAgICAgICAg
bWFrZSBwYXRjaCBzaXplIHNtYWxsLgorCisgICAgICAgIE5vIHRlc3RzLiBFeGlzdGluZyB0ZXN0
IGNvdmVycyB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6IENoYW5nZWQgdG8gcmVt
b3ZlIG1fZHJhZ1Njcm9sbFRpbWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJh
Z1NvdXJjZUVuZGVkQXQpOiBkaXR0bworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJh
Z1NvdXJjZU1vdmVkVG8pOiBkaXR0bworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJh
Z1RhcmdldERyb3ApOiBkaXR0bworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1Rh
cmdldERyYWdFbnRlck9yT3Zlcik6IGRpdHRvCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisgICAgICAgIChXZWJLaXQpOiBDaGFnbmVkIHRvIHJlbW92ZSBEcmFnU2Nyb2xsVGltZXIuCisK
IDIwMTItMTItMTQgIERhdmlkIERvcndpbiAgPGRkb3J3aW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEVNRSB2MC4xOiBSZXBvcnQgZGVmYXVsdFVSTCBpbiBLZXlNZXNzYWdlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAppbmRleCA0MzhlOTlkMzExYjdh
YmE1MTY5NGZkNGY4ZWVkODZjZTVkMDAyNWJlLi4wMjk4YzgxZTc0NjVhY2ZjMzQ1MTgxNGRjMzEx
MjMzMmE0NDY5ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9s
bGVyLmNwcApAQCAtMzUsOSArMzUsMTMgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIERlbGF5IHRpbWUgaW4gc2Vj
b25kIGZvciBzdGFydCBhdXRvc2Nyb2xsIGlmIHBvaW50ZXIgaXMgaW4gYm9yZGVyIGVkZ2Ugb2Yg
c2Nyb2xsYWJsZSBlbGVtZW50Lgorc3RhdGljIGRvdWJsZSBhdXRvc2Nyb2xsRGVsYXkgPSAwLjI7
CisKIC8vIFdoZW4gdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQg
d2hlbiBkbyB0aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCiBzdGF0aWMg
Y29uc3QgZG91YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CiAKQEAgLTUzLDYgKzU3LDcg
QEAgQXV0b3Njcm9sbENvbnRyb2xsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyKCkKICAgICA6IG1f
YXV0b3Njcm9sbFRpbWVyKHRoaXMsICZBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRp
bWVyRmlyZWQpCiAgICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQogICAgICwgbV9hdXRvc2Ny
b2xsVHlwZShOb0F1dG9zY3JvbGwpCisgICAgLCBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0
VGltZSgwKQogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgICwgbV9wYW5TY3JvbGxCdXR0
b25QcmVzc2VkKGZhbHNlKQogICAgICwgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNz
KGZhbHNlKQpAQCAtMTQ0LDYgKzE0OSwyOSBAQCB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1
cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKQogICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVu
ZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOwog
fQogCit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChOb2RlKiBk
cm9wVGFyZ2V0Tm9kZSwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zaXRpb24sIGRvdWJsZSBldmVu
dFRpbWUpCit7CisgICAgaWYgKCFkcm9wVGFyZ2V0Tm9kZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVuZGVyQm94KiBzY3JvbGxhYmxlID0gUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUo
ZHJvcFRhcmdldE5vZGUtPnJlbmRlcmVyKCkpOworICAgIGlmICghc2Nyb2xsYWJsZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBvZmZzZXQgPSBzY3JvbGxhYmxlLT5jYWxjdWxhdGVB
dXRvc2Nyb2xsRGlyZWN0aW9uKGV2ZW50UG9zaXRpb24pOworICAgIGlmIChvZmZzZXQuaXNaZXJv
KCkpIHsKKyAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9kcmFnQW5kRHJvcEF1dG9zY3JvbGxSZWZlcmVuY2VQb3NpdGlvbiA9IGV2
ZW50UG9zaXRpb24gKyBvZmZzZXQ7CisgICAgaWYgKHNjcm9sbGFibGUgIT0gbV9hdXRvc2Nyb2xs
UmVuZGVyZXIpCisgICAgICAgIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID0gZXZl
bnRUaW1lOworICAgIG1fYXV0b3Njcm9sbFR5cGUgPSBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3A7
CisgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSBzY3JvbGxhYmxlOworICAgIHN0YXJ0QXV0b3Nj
cm9sbFRpbWVyKCk7Cit9CisKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKIHZvaWQgQXV0b3Nj
cm9sbENvbnRyb2xsZXI6OmRpZFBhblNjcm9sbFN0YXJ0KCkKIHsKQEAgLTIwMCwxMyArMjI4LDIw
IEBAIHZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmF1dG9zY3JvbGxUaW1lckZpcmVkKFRpbWVy
PEF1dG9zY3JvbGxDb250cm9sbGVyPiopCiAKICAgICBGcmFtZSogZnJhbWUgPSBtX2F1dG9zY3Jv
bGxSZW5kZXJlci0+ZnJhbWUoKTsKICAgICBzd2l0Y2ggKG1fYXV0b3Njcm9sbFR5cGUpIHsKLSAg
ICBjYXNlIEF1dG9zY3JvbGxGb3JTZWxlY3Rpb246Ci0gICAgICAgIGlmICghZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5tb3VzZVByZXNzZWQoKSkgeworICAgIGNhc2UgQXV0b3Njcm9sbEZvckRyYWdB
bmREcm9wOgorICAgICAgICBpZiAoV1RGOjpjdXJyZW50VGltZSgpIC0gbV9kcmFnQW5kRHJvcEF1
dG9zY3JvbGxTdGFydFRpbWUgPiBhdXRvc2Nyb2xsRGVsYXkpCisgICAgICAgICAgICBtX2F1dG9z
Y3JvbGxSZW5kZXJlci0+YXV0b3Njcm9sbChtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFJlZmVyZW5j
ZVBvc2l0aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdXRvc2Nyb2xsRm9yU2VsZWN0
aW9uOiB7CisgICAgICAgIEV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyID0gZnJhbWUtPmV2ZW50
SGFuZGxlcigpOworICAgICAgICBpZiAoIWV2ZW50SGFuZGxlci0+bW91c2VQcmVzc2VkKCkpIHsK
ICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlci0+YXV0b3Njcm9sbCgpOwor
ICAgICAgICBldmVudEhhbmRsZXItPnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpOworICAg
ICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlci0+YXV0b3Njcm9sbChldmVudEhhbmRsZXItPmxhc3RL
bm93bk1vdXNlUG9zaXRpb24oKSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIE5v
QXV0b3Njcm9sbDoKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmgKaW5kZXggZjY3MWYxNWQ0
MzM2NTcxYWRhMmNlNTUyZjBkNzdiYWEzYjg4ODk2OC4uNDAwMGExNzVkMWM2NDBhNDg5N2RlZDdj
MGQxZjJlMTA0MWQzYjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Ny
b2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRy
b2xsZXIuaApAQCAtMzQsMTIgKzM0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEV2
ZW50SGFuZGxlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OworY2xhc3MgTm9kZTsK
IGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFJlbmRl
ck9iamVjdDsKIAogZW51bSBBdXRvc2Nyb2xsVHlwZSB7CiAgICAgTm9BdXRvc2Nyb2xsLAorICAg
IEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcCwKICAgICBBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uLAog
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIEF1dG9zY3JvbGxGb3JQYW4sCkBAIC01Niw2
ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0QXV0b3Njcm9sbEZvclNlbGVjdGlvbihS
ZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIHN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5kZXJl
cklzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZSk7CiAgICAgdm9pZCB1cGRhdGVBdXRvc2Nyb2xsUmVu
ZGVyZXIoKTsKKyAgICB2b2lkIHVwZGF0ZURyYWdBbmREcm9wKE5vZGUqIHRhcmdldE5vZGUsIGNv
bnN0IEludFBvaW50JiBldmVudFBvc2l0aW9uLCBkb3VibGUgZXZlbnRUaW1lKTsKICNpZiBFTkFC
TEUoUEFOX1NDUk9MTElORykKICAgICB2b2lkIGRpZFBhblNjcm9sbFN0YXJ0KCk7CiAgICAgdm9p
ZCBkaWRQYW5TY3JvbGxTdG9wKCk7CkBAIC03NCw2ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgVGlt
ZXI8QXV0b3Njcm9sbENvbnRyb2xsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOwogICAgIFJlbmRlckJv
eCogbV9hdXRvc2Nyb2xsUmVuZGVyZXI7CiAgICAgQXV0b3Njcm9sbFR5cGUgbV9hdXRvc2Nyb2xs
VHlwZTsKKyAgICBJbnRQb2ludCBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0
aW9uOworICAgIGRvdWJsZSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZTsKICNpZiBF
TkFCTEUoUEFOX1NDUk9MTElORykKICAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9zOwog
ICAgIGJvb2wgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDQxZGZjNDBkMzNlYjczOTA2NDUxNzVmMTA3MGVmN2UwYmFiZjdkMDEu
LjA4MDUzYjM5MTBiZmJiMDhkYzdkOTRjOTkyNmZmNDk3M2ZmYWIxZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE5NTcsNiArMTk1Nyw4IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBD
bGlwYm9hcmQqCiAgICAgaWYgKG5ld1RhcmdldCAmJiBuZXdUYXJnZXQtPmlzVGV4dE5vZGUoKSkK
ICAgICAgICAgbmV3VGFyZ2V0ID0gbmV3VGFyZ2V0LT5wYXJlbnROb2RlKCk7CiAKKyAgICBtX2F1
dG9zY3JvbGxDb250cm9sbGVyLT51cGRhdGVEcmFnQW5kRHJvcChuZXdUYXJnZXQuZ2V0KCksIGV2
ZW50LnBvc2l0aW9uKCksIGV2ZW50LnRpbWVzdGFtcCgpKTsKKwogICAgIGlmIChtX2RyYWdUYXJn
ZXQgIT0gbmV3VGFyZ2V0KSB7CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIG9yZGVyaW5nIHdhcyBl
eHBsaWNpdGx5IGNob3NlbiB0byBtYXRjaCBXaW5JRS4gSG93ZXZlciwKICAgICAgICAgLy8gaXQg
aXMgc29tZXRpbWVzIGluY29ycmVjdCB3aGVuIGRyYWdnaW5nIHdpdGhpbiBzdWJmcmFtZXMsIGFz
IHNlZW4gd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBhMzll
YzlmMTJkYTViNTdjM2NmMTgxOTBjMDY4MzUwM2YxMjE5ZWI4Li5hNDczN2QwMjVjN2YyOWVkZmFh
MTQxY2YwNTc2ODI2ZDM4MTIzYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcApAQCAtODEsNiArODEsMTEgQEAgc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ092ZXJyaWRl
V2lkdGhNYXAgPSAwOwogc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ092ZXJyaWRlQ29udGFpbmlu
Z0Jsb2NrTG9naWNhbEhlaWdodE1hcCA9IDA7CiBzdGF0aWMgT3ZlcnJpZGVTaXplTWFwKiBnT3Zl
cnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXAgPSAwOwogCisKKy8vIFNpemUgb2Yg
Ym9yZGVyIGJlbHQgZm9yIGF1dG9zY3JvbGwuIFdoZW4gbW91c2UgcG9pbnRlciBpbiBib3JkZXIg
YmVsdCwKKy8vIGF1dG9zY3JvbGwgaXMgc3RhcnRlZC4KK3N0YXRpYyBjb25zdCBpbnQgYXV0b3Nj
cm9sbEJlbHRTaXplID0gMjA7CisKIGJvb2wgUmVuZGVyQm94OjpzX2hhZE92ZXJmbG93Q2xpcCA9
IGZhbHNlOwogCiBSZW5kZXJCb3g6OlJlbmRlckJveChOb2RlKiBub2RlKQpAQCAtNjM3LDEwICs2
NDIsMTAgQEAgYm9vbCBSZW5kZXJCb3g6OnVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgaGFzTGF5ZXIoKSAmJiBsYXllcigpLT51
c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogfQogCi12b2lkIFJlbmRlckJveDo6YXV0b3Njcm9s
bCgpCit2b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24p
CiB7CiAgICAgaWYgKGxheWVyKCkpCi0gICAgICAgIGxheWVyKCktPmF1dG9zY3JvbGwoKTsKKyAg
ICAgICAgbGF5ZXIoKS0+YXV0b3Njcm9sbChwb3NpdGlvbik7CiB9CiAKIC8vIFRoZXJlIGFyZSB0
d28ga2luZHMgb2YgcmVuZGVyZXIgdGhhdCBjYW4gYXV0b3Njcm9sbC4KQEAgLTY2NCw2ICs2Njks
MzMgQEAgYm9vbCBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwoKSBjb25zdAogICAgIHJldHVybiBw
YWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpID09IGZyYW1lOwogfQogCisvLyBJZiBzcGVjaWZpZWQg
cG9pbnQgaXMgaW4gYm9yZGVyIGJlbHQsIHJldHVybmVkIG9mZnNldCBkZW5vdGVzIGRpcmVjdGlv
biBvZgorLy8gc2Nyb2xsaW5nLgorSW50U2l6ZSBSZW5kZXJCb3g6OmNhbGN1bGF0ZUF1dG9zY3Jv
bGxEaXJlY3Rpb24oY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdAoreworICAgIGlm
ICghZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKworICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gZnJhbWUoKS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAg
ICByZXR1cm4gSW50U2l6ZSgpOworCisgICAgSW50U2l6ZSBvZmZzZXQ7CisgICAgSW50UG9pbnQg
cG9pbnQgPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpOworICAgIElu
dFJlY3QgYm94KGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworCisgICAgaWYgKHBvaW50Lngo
KSA8IGJveC54KCkgKyBhdXRvc2Nyb2xsQmVsdFNpemUpCisgICAgICAgIHBvaW50Lm1vdmUoLWF1
dG9zY3JvbGxCZWx0U2l6ZSwgMCk7CisgICAgZWxzZSBpZiAocG9pbnQueCgpID4gYm94Lm1heFgo
KSAtIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAgICAgcG9pbnQubW92ZShhdXRvc2Nyb2xsQmVs
dFNpemUsIDApOworCisgICAgaWYgKHBvaW50LnkoKSA8IGJveC55KCkgKyBhdXRvc2Nyb2xsQmVs
dFNpemUpCisgICAgICAgIHBvaW50Lm1vdmUoMCwgLWF1dG9zY3JvbGxCZWx0U2l6ZSk7CisgICAg
ZWxzZSBpZiAocG9pbnQueSgpID4gYm94Lm1heFkoKSAtIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAg
ICAgICAgcG9pbnQubW92ZSgwLCBhdXRvc2Nyb2xsQmVsdFNpemUpOworICAgIHJldHVybiBmcmFt
ZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocG9pbnQpIC0gd2luZG93UG9pbnQ7Cit9CisKIFJlbmRl
ckJveCogUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKIHsKICAgICB3aGlsZSAocmVuZGVyZXIgJiYgIShyZW5kZXJlci0+aXNCb3goKSAmJiB0b1Jl
bmRlckJveChyZW5kZXJlciktPmNhbkF1dG9zY3JvbGwoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAppbmRleCAzYjNhMDIxN2JhNzU4ZTExNWE4OGQxYTlkZTU0ZWVjZWRmYmY0
ZjkwLi5jZTg2NDMyMzVjNTFjMWM3ZGQ3Yjg0OTFiYzcwYWE3M2FjZTE0MTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC00MzgsOCArNDM4LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSwgTm9kZSoqIHN0b3BOb2RlID0gMCk7
CiAgICAgYm9vbCBjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwo
Y29uc3QgSW50UG9pbnQmKTsKICAgICBib29sIGNhbkF1dG9zY3JvbGwoKSBjb25zdDsKKyAgICBJ
bnRTaXplIGNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24oY29uc3QgSW50UG9pbnQmIHdpbmRv
d1BvaW50KSBjb25zdDsKICAgICBzdGF0aWMgUmVuZGVyQm94KiBmaW5kQXV0b3Njcm9sbGFibGUo
UmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBdXRvc2Nyb2xsKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJbnRQb2ludCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMzI4ZTBlMzRkMGQ3Yzk3MWNjNDdiOGE0
YmI5NWZkMzZmY2QzNmNmOC4uNjgxNWIzMGFiN2VlMmQ3NjM1YmU4MGYyNDEwOTQ3ZmQzYmY3OTk0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yMDA0LDcg
KzIwMDQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3Qg
TGF5b3V0UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IExheQogICAgIHJldHVybiBMYXlvdXRSZWN0
KExheW91dFBvaW50KHgsIHkpLCB2aXNpYmxlUmVjdC5zaXplKCkpOwogfQogCi12b2lkIFJlbmRl
ckxheWVyOjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGwoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIwMTQsMTEgKzIwMTQsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjphdXRvc2Nyb2xsKCkKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJu
OwogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpOwotI2VuZGlmCi0KLSAgICBJbnRQb2ludCBj
dXJyZW50RG9jdW1lbnRQb3NpdGlvbiA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSk7CisgICAgSW50UG9p
bnQgY3VycmVudERvY3VtZW50UG9zaXRpb24gPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMo
cG9zaXRpb24pOwogICAgIHNjcm9sbFJlY3RUb1Zpc2libGUoTGF5b3V0UmVjdChjdXJyZW50RG9j
dW1lbnRQb3NpdGlvbiwgTGF5b3V0U2l6ZSgxLCAxKSksIFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAxY2ZjOWEwM2ZmM2U1
NTU1N2U5ZWNkMzhkZGYyMTdlMjBjMTUxZmMzLi5kYWY4OWM1ZmIzZTAyMTI1Njk4ZTEzYjA1NDE2
MzBhZjliNjA3ZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAt
MzcyLDcgKzM3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dCgpOwogCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxh
cml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEpOwotICAgIHZvaWQgYXV0b3Njcm9sbCgpOworICAg
IHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogCiAgICAgdm9pZCByZXNpemUoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3QgTGF5b3V0U2l6ZSYpOwogICAgIGJvb2wgaW5S
ZXNpemVNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pblJlc2l6ZU1vZGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBiMGE3ZWY2MDYzZjkxY2RiZWZm
MjIxMDY5NThkY2NlZTFkODM2N2FjLi40ZDUzMzVhZmJiZGE0MWRjYWE2ZTkzYjBmOTM0YWM0YTRj
ODYyMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBA
IC01NTQsNyArNTU0LDcgQEAgaW50IFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvd2FyZChjb25zdCBJ
bnRQb2ludCYgZGVzdGluYXRpb24pCiAgICAgcmV0dXJuIGxpc3RJbmRleEF0T2Zmc2V0KHBvc2l0
aW9uT2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKCkKK3ZvaWQg
UmVuZGVyTGlzdEJveDo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpCiB7CiAgICAgSW50UG9p
bnQgcG9zID0gZnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5sYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCAzYmFmYmUzZTMzMTQ5NTIxYTFiZjRlZmZiYzRi
ZGFkYWNhZTg5ZTVhLi43MmE5MTM1ZjQ0ODcyZDYyNGMwZDQ4Mjc4ZmY3ZWY1YWY3ZTkyY2RmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTg0LDcgKzg0LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVBy
b2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoY29uc3Qg
SW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEF1dG9zY3JvbGwoKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRQYW5TY3JvbGwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCmluZGV4IGM3ZjA3NWE0YjhmOTgwOTBmMDFlZTlhMjk4Y2YzNWRmNmZkZTIzYzAu
LjdlYTMwODE2MDVkODRjYzdkODA0OTNiMTFlMzMzMjkxYmFmOGI5OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwCkBAIC0zODEsMTEgKzM4MSwxMSBAQCBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6dGV4dFNob3VsZEJlVHJ1bmNhdGVkKCkgY29uc3QKICAgICAgICAgJiYgc3R5bGUoKS0+dGV4
dE92ZXJmbG93KCkgPT0gVGV4dE92ZXJmbG93RWxsaXBzaXM7CiB9CiAKLXZvaWQgUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjphdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBS
ZW5kZXJMYXllciogbGF5ZXIgPSBpbm5lclRleHRFbGVtZW50KCktPnJlbmRlckJveCgpLT5sYXll
cigpOwogICAgIGlmIChsYXllcikKLSAgICAgICAgbGF5ZXItPmF1dG9zY3JvbGwoKTsKKyAgICAg
ICAgbGF5ZXItPmF1dG9zY3JvbGwocG9zaXRpb24pOwogfQogCiBpbnQgUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjpzY3JvbGxXaWR0aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggYWYyN2Jm
NzU4YjQ0MTRjYzEwYmUyMDc0YjRlMGEyZjZhMzQ1ZmQ4Ny4uZDdkZmZlM2ZlZmI3ZTJjZTRhY2E5
ZWE4NDU4YjA2OTY3YWNjOGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAtNTgsNyArNTgsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgdmlydHVh
bCB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKIAogICAgIC8vIFN1YmNsYXNzZWQg
dG8gZm9yd2FyZCB0byBvdXIgaW5uZXIgZGl2LgogICAgIHZpcnR1YWwgaW50IHNjcm9sbExlZnQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCA0MWVlNTBhMzc0OTgzYmM3MmI1MDhhMTNiNWQzMGI1YmNhYTIxMGNjLi5mMWQ2MTVlOGZjOTMx
ZjYzMGY3ZjUyNGRlNDFhY2Y5NGM1NmZhMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRyYWdEYXRh
LmgiCi0jaW5jbHVkZSAiRHJhZ1Njcm9sbFRpbWVyLmgiCiAjaW5jbHVkZSAiRHJhZ1Nlc3Npb24u
aCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTQx
NCw3ICs0MTMsNiBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xp
ZW50KQogICAgICwgbV9hdXRvZmlsbFBvcHVwKDApCiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFs
c2UpCiAgICAgLCBtX3RhYnNUb0xpbmtzKGZhbHNlKQotICAgICwgbV9kcmFnU2Nyb2xsVGltZXIo
YWRvcHRQdHIobmV3IERyYWdTY3JvbGxUaW1lcikpCiAgICAgLCBtX2lzQ2FuY2VsaW5nRnVsbFNj
cmVlbihmYWxzZSkKICAgICAsIG1fYmVuY2htYXJrU3VwcG9ydCh0aGlzKQogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKQEAgLTMyMjQsNyArMzIyMiw2IEBAIHZvaWQgV2ViVmlld0lt
cGw6OmRyYWdTb3VyY2VFbmRlZEF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Us
IDApOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNl
RW5kZWRBdChwbWUsCiAgICAgICAgIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG9wZXJhdGlv
bikpOwotICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT5zdG9wKCk7CiB9CiAKIHZvaWQgV2ViVmlld0lt
cGw6OmRyYWdTb3VyY2VNb3ZlZFRvKApAQCAtMzIzMiw3ICszMjI5LDYgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6ZHJhZ1NvdXJjZU1vdmVkVG8oCiAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50
LAogICAgIFdlYkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogewotICAgIG1fZHJhZ1Njcm9sbFRp
bWVyLT50cmlnZ2VyU2Nyb2xsKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGNsaWVudFBv
aW50KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgp
CkBAIC0zMzE4LDggKzMzMTQsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJvcChj
b25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsCiAKICAgICBtX2RyYWdPcGVyYXRpb24gPSBXZWJE
cmFnT3BlcmF0aW9uTm9uZTsKICAgICBtX2N1cnJlbnREcmFnRGF0YSA9IDA7Ci0KLSAgICBtX2Ry
YWdTY3JvbGxUaW1lci0+c3RvcCgpOwogfQogCiBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBs
OjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JPdmVyKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwg
Y29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LCBEcmFnQWN0aW9uIGRyYWdBY3Rpb24sIGludCBr
ZXlNb2RpZmllcnMpCkBAIC0zMzQ3LDExICszMzQxLDYgQEAgV2ViRHJhZ09wZXJhdGlvbiBXZWJW
aWV3SW1wbDo6ZHJhZ1RhcmdldERyYWdFbnRlck9yT3Zlcihjb25zdCBXZWJQb2ludCYgY2xpZW50
UG8KIAogICAgICBtX2RyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9u
Pihkcm9wRWZmZWN0KTsKIAotICAgIGlmIChkcmFnQWN0aW9uID09IERyYWdPdmVyKQotICAgICAg
ICBtX2RyYWdTY3JvbGxUaW1lci0+dHJpZ2dlclNjcm9sbChtYWluRnJhbWVJbXBsKCktPmZyYW1l
VmlldygpLCBjbGllbnRQb2ludCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RyYWdTY3JvbGxUaW1l
ci0+c3RvcCgpOwotCiAgICAgcmV0dXJuIG1fZHJhZ09wZXJhdGlvbjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggZWQ0YTQ5ODE3ZjBiMmE2NjRjOGUx
OTQzZDEwOTc1YzhkMzEwMTllYi4uM2YzYmJmNWEwNGJmMjA5M2UyMTQyZjg2YmUxZGI0ODAzN2E5
OWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC04OSw3
ICs4OSw2IEBAIGNsYXNzIEJhdHRlcnlDbGllbnRJbXBsOwogY2xhc3MgQ29udGV4dEZlYXR1cmVz
Q2xpZW50SW1wbDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNsYXNzIERldmljZU9y
aWVudGF0aW9uQ2xpZW50UHJveHk7Ci1jbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBHZW9s
b2NhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgTGlua0hpZ2hsaWdodDsKIGNsYXNzIE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDsKQEAgLTgxNSw3ICs4MTQsNiBAQCBwcml2YXRlOgogCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBXVEY6OlN0cmluZz4gU2V0dGluZ3NNYXA7CiAgICAg
T3duUHRyPFNldHRpbmdzTWFwPiBtX2luc3BlY3RvclNldHRpbmdzTWFwOwotICAgIE93blB0cjxE
cmFnU2Nyb2xsVGltZXI+IG1fZHJhZ1Njcm9sbFRpbWVyOwogCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICAvLyBUaGUgcHJvdmlk
ZXIgb2YgZGVza3RvcCBub3RpZmljYXRpb25zOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUxM2UzYWM0MWIzYTQ5ODkyMGU5
NzdhZTgwNTA3MDA5NTg0YWEwMGUuLjA2ZTNlNzJhZDNjZWIwZmQ1ZGY2NDliMDM0ZWIwNTJmYTJk
OWY4YTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMi0xNCAgWW9zaGlmdW1pIElub3Vl
ICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIERyYWdnaW5nIG92ZXIgYW4gZWxlbWVu
dCB3aXRoIHNjcm9sbGJhcnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdnaW5n
IG5lYXIgZWRnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIG5ldyB0ZXN0IGZvciBhdXRvc2Nyb2xsIGR1cmluZyBkcmFnLWFu
ZC1kcm9wLgorCisgICAgICAgICogZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJv
cC1hdXRvc2Nyb2xsLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTE0ICBFdWdlbmUgS2x5dWNobmlr
b3YgIDxldXN0YXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlLW1haW4tY29va2llcy5waHAgaXMgYnJva2VuIG9uIE1hYyBhZnRlciByMTM3NTg1
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9z
Y3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJv
cC1hdXRvc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWMxNjNkNGM5N2NlMTU3MzRj
MDAxOTZlNDMyMzY1MzBjOTk4YmExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDggQEAKK0NoZWNrIGF1dG9zY3JvbGwgYnkgZHJhZy1hbmQtZHJvcAorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzY3JvbGxhYmxlLnNjcm9sbFRvcCA+IDAKK0ZvciBtYW51
YWwgdGVzdGluZywgZHJhZyBhbmQgZHJvcCAiRHJvcCBNZSIgdG8gIlNjcm9sbGFibGUiIGFyZWEu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0
b3Njcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRv
c2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ2MmJmYzM4ZDQzZmIyNzllNjA3MGI3NTYxYjcyYjhm
ZTNmMTg2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWct
YW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sCkBAIC0wLDAgKzEsMTAxIEBACis8aHRtbD4KKzxoZWFk
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyNkcmFnZ2FibGUgeworICBwYWRkaW5nOiA1cHQ7
CisgIGJvcmRlcjogM3B4IHNvbGlkICMwMGNjMDA7CisgIGJhY2tncm91bmQ6ICMwMGNjY2M7Cisg
IHdpZHRoOiA4MHB4OworICBjdXJzb3I6IGhhbmQ7Cit9CisKKyNzY3JvbGxhYmxlIHsKKyAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIG92ZXJmbG93OiBhdXRvOworICAgIGJvcmRlcjogc29saWQgM3B4
ICNjYzAwMDA7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uICQoaWQpIHsgcmV0dXJu
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgfQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkg
eworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAkKCdjb250YWluZXInKS5pbm5lckhU
TUwgPSAnJzsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RJdCgpIHsKKyAgICB2YXIgZHJhZ2dhYmxlID0gJCgnZHJhZ2dhYmxlJyk7CisgICAg
dmFyIHNjcm9sbGFibGUgPSAkKCdzY3JvbGxhYmxlJyk7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVu
dFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBm
YWxzZTsKKworICAgIC8vIEdyYWIgZHJhZ2dhYmxlCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oZHJhZ2dhYmxlLm9mZnNldExlZnQgKyA1LCBkcmFnZ2FibGUub2Zmc2V0VG9wICsgNSk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisKKyAgICAvLyBNb3ZlIG1vdXNlIHRvIGF1dG9z
Y3JvbGwgYm9yZGVyIGJlbHQuCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc2Nyb2xsYWJs
ZS5vZmZzZXRMZWZ0ICsgNSwgc2Nyb2xsYWJsZS5vZmZzZXRUb3AgKyBzY3JvbGxhYmxlLm9mZnNl
dEhlaWdodCAtIDEwKTsKKworICAgIHZhciByZXRyeUNvdW50ID0gMDsKKworICAgIGZ1bmN0aW9u
IGNoZWNrU2Nyb2xsZWQoKQorICAgIHsKKyAgICAgICAgaWYgKHNjcm9sbGFibGUuc2Nyb2xsVG9w
ID4gMCkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgnc2Nyb2xsYWJsZS5zY3JvbGxUb3AgPiAw
Jyk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICArK3JldHJ5Q291bnQ7CisgICAgICAgIGlmIChyZXRyeUNvdW50ID4g
MTApIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ05vIGF1dG9zY3JvbGwnKTsKKyAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEF1dG9zY3JvbGwgaXMgb2NjdXJyZWQgZXZleSAwLjA1IHNlYy4KKyAgICAgICAgd2lu
ZG93LnNldFRpbWVvdXQoY2hlY2tTY3JvbGxlZCwgNTApOworICAgIH0KKworICAgIGNoZWNrU2Ny
b2xsZWQoKTsKK30KKworZnVuY3Rpb24gc2V0VXBUZXN0KCkKK3sKKyAgICB2YXIgc2Nyb2xsYWJs
ZSA9ICQoJ3Njcm9sbGFibGUnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAg
bGluZS5pbm5lckhUTUwgPSAibGluZSAiICsgaTsKKyAgICAgIHNjcm9sbGFibGUuYXBwZW5kQ2hp
bGQobGluZSk7CisgICAgfQorCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgY29uc29sZS5sb2coJ1BsZWFzZSBydW4gd2l0aGluIER1bXBSZW5kZXJUcmVlJyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cisg
ICAgd2luZG93LnNldFRpbWVvdXQodGVzdEl0LCAwKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CitGb3IgbWFudWFsIHRlc3RpbmcsIGRyYWcgYW5kIGRyb3AgIkRyb3AgTWUiIHRvICJT
Y3JvbGxhYmxlIiBhcmVhLgorPGRpdiBpZD0iY29udGFpbmVyIj4KKzxkaXYgaWQ9ImRyYWdnYWJs
ZSIgZHJhZ2dhYmxlPSJ0cnVlIj5Ecm9wIE1lPC9kaXY+CitTY3JvbGxhYmxlCis8ZGl2IGlkPSJz
Y3JvbGxhYmxlIj4KKzwvZGl2PgorPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQ2hlY2sg
YXV0b3Njcm9sbCBieSBkcmFnLWFuZC1kcm9wJyk7CitzZXRVcFRlc3QoKTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181638</attachid>
            <date>2013-01-07 21:54:59 -0800</date>
            <delta_ts>2013-01-15 00:31:06 -0800</delta_ts>
            <desc>Patch-3.0.1</desc>
            <filename>bug-39725-20130108145204.patch</filename>
            <type>text/plain</type>
            <size>24330</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNmZTI3MTM2NzYyYzAx
MGU1NjFiNTQ0ZGE2NDhmMzIyZmU4ZGZlMS4uMDEzYjRiY2RiNmEyODUzYTU4MWI1MDJmZjQxYjQy
NGE0NzIwMDczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAxLTA3ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYXV0byBzY3JvbGxpbmcgZnVuY3Rp
b25hbGl0eSBkdXJpbmcgZHJhZy1hbmQtZHJvcAorICAgICAgICB3aGVuIGRyb3Agc291cmNlIGlz
IG5lYXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgV2hlbiBkcm9wIHNv
dXJjZSBpcyBpbnNpZGUgMjBweCBvZiBzY3JvbGxhYmxlIGVsZW1lbnQgbW9yZSB0aGFuIDIwMG1z
LAorICAgICAgICBzY3JvbGxhYmxlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBzY3JvbGxlZCBl
dmVyeSA1MG1zIHRvd2FyZCBkcm9wCisgICAgICAgIHNvdXJjZSBwb3NpdGlvbiwgZS5nLiB2ZXJ0
aWNhbGx5IHNjcm9sbCB1cCB3aGVuIGRyb3Agc291cmNlIGlzIGluIHRvcAorICAgICAgICBlZGdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcik6IENo
YW5nZWQgdG8gaW5pdGlhbGl6ZSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6
IEFkZGVkIGZvciBzdGFydC9zdG9wIGF1dG9zY3JvbGwgZHVyaW5nIGRyYWctYW5kLWRyb3AuCisg
ICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQpOiBDaGFuZ2VkIHRvIGFkZCBhdXRvc2Nyb2xsIGZvciBkcmFnLWFuZC1kcm9wLCBhbmQgdG8g
cGFzcyBsYXN0IGtub3cgcG9zaXRpb24gdG8gUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkuCisgICAg
ICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoQXV0b3Njcm9sbENv
bnRyb2xsZXIpOiBDaGFuZ2VkIHRvIGFkZCB1cGRhdGVEcmFnQW5kRHJvcCgpIGFuZCBtX2RyYWdB
bmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0aW9uIGFuZCBtX2RyYWdBbmREcm9wQXV0b3Nj
cm9sbFN0YXJ0VGltZS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKTogQ2hhbmdlZCB0byBj
YWxsIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCgpLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojph
dXRvc2Nyb2xsKTogQ2hhbmdlZCBmb3IgbmV3IHBhcmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbik6IEFkZGVk
IGZvciBhdXRvc2Nyb2xsLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAg
ICAgKFJlbmRlckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphdXRvc2Nyb2xsKTogIENoYW5nZWQgZm9yIG5l
dyBwYXJhbWV0ZXIgcG9zaXRpb24gYW5kIG1vdmUgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KCkgdG8gQXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmg6CisgICAgICAgIChSZW5kZXJMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6YXV0b3Njcm9s
bCk6ICBDaGFuZ2VkIGZvciBuZXcgcGFyYW1ldGVyIHBvc2l0aW9uLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgIChSZW5kZXJMaXN0Qm94KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YXV0b3Njcm9sbCk6ICBDaGFuZ2Vk
IGZvciBuZXcgcGFyYW1ldGVyIHBvc2l0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAgICAgKFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZSk6CisKIDIwMTMtMDEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBIVE1MVHJlZUJ1aWxkZXIgc2hvdWxkIG5vdCBkZXBlbmQgb24gRnJhbWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZTMxOGZmYzdmMmFhZjZiZDFiMDQ3ZTIzODgzNDY5NTgy
NTg4ODBiZC4uNjZlNTBhYjkwOGJkOGRkMmQwZjg5M2Q3MjUwY2ZlYWU1MmIyNjJlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wMS0wNyAgWW9zaGlm
dW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIERyYWdnaW5nIG92ZXIg
YW4gZWxlbWVudCB3aXRoIHNjcm9sbGJhcnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVu
IGRyYWdnaW5nIG5lYXIgZWRnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIERyYWdTY3JvbGxUaW1lciB1c2VkIGZvciBh
dXRvbWF0aWMgc2Nyb2xsaW5nIG9mIG1haW4KKyAgICAgICAgZnJhbWUgZHJhZy1hbmQtZHJvcCB3
aGljaCBpcyBub3cgaW1wbGVtZW50ZWQgaW4gRXZlbnRIYW5kbGVyLgorCisgICAgICAgIEFub3Ro
ZXIgcGF0Y2ggd2lsbCByZW1vdmUgRHJhZ1Njcm9sbFRpbWVyLntjcHAsaH0gYW5kIHVwZGF0ZSBH
WVAgZmlsZXMgdG8KKyAgICAgICAgbWFrZSBwYXRjaCBzaXplIHNtYWxsLgorCisgICAgICAgIE5v
IHRlc3RzLiBFeGlzdGluZyB0ZXN0IGNvdmVycyB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbCk6IENoYW5nZWQgdG8gcmVtb3ZlIG1fZHJhZ1Njcm9sbFRpbWVyLgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZUVuZGVkQXQpOiBkaXR0bworICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZU1vdmVkVG8pOiBkaXR0bworICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyb3ApOiBkaXR0bworICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyYWdFbnRlck9yT3Zlcik6IGRpdHRvCisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOiBDaGFnbmVkIHRvIHJlbW92
ZSBEcmFnU2Nyb2xsVGltZXIuCisKIDIwMTMtMDEtMDcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgZG91YmxlIHRhcCB6b29tIGlmIG1pbmlt
dW0gYW5kIG1heGltdW0gcGFnZSBzY2FsZSBpcyB0aGUgc2FtZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAppbmRleCA0MzhlOTlkMzExYjdhYmE1MTY5NGZk
NGY4ZWVkODZjZTVkMDAyNWJlLi44MmFkNjE5ZmU0ZDRiN2U3ZWMxNDkzNTM1N2E1MmQ2MzI2MGVi
ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApA
QCAtMzUsOSArMzUsMTMgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIERlbGF5IHRpbWUgaW4gc2Vjb25kIGZvciBz
dGFydCBhdXRvc2Nyb2xsIGlmIHBvaW50ZXIgaXMgaW4gYm9yZGVyIGVkZ2Ugb2Ygc2Nyb2xsYWJs
ZSBlbGVtZW50Lgorc3RhdGljIGRvdWJsZSBhdXRvc2Nyb2xsRGVsYXkgPSAwLjI7CisKIC8vIFdo
ZW4gdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0
aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCiBzdGF0aWMgY29uc3QgZG91
YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CiAKQEAgLTUzLDYgKzU3LDcgQEAgQXV0b3Nj
cm9sbENvbnRyb2xsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyKCkKICAgICA6IG1fYXV0b3Njcm9s
bFRpbWVyKHRoaXMsICZBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQp
CiAgICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQogICAgICwgbV9hdXRvc2Nyb2xsVHlwZShO
b0F1dG9zY3JvbGwpCisgICAgLCBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZSgwKQog
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgICwgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2Vk
KGZhbHNlKQogICAgICwgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQpA
QCAtMTQ0LDYgKzE0OSwzOCBAQCB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRv
c2Nyb2xsUmVuZGVyZXIoKQogICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXIgJiYg
cmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOwogfQogCit2b2lk
IEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChOb2RlKiBkcm9wVGFyZ2V0
Tm9kZSwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zaXRpb24sIGRvdWJsZSBldmVudFRpbWUpCit7
CisgICAgaWYgKCFkcm9wVGFyZ2V0Tm9kZSkgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZW5kZXJCb3gqIHNjcm9sbGFibGUg
PSBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZShkcm9wVGFyZ2V0Tm9kZS0+cmVuZGVyZXIo
KSk7CisgICAgaWYgKCFzY3JvbGxhYmxlKSB7CisgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEludFNpemUgb2Zmc2V0ID0gc2Nyb2xs
YWJsZS0+Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbihldmVudFBvc2l0aW9uKTsKKyAgICBp
ZiAob2Zmc2V0LmlzWmVybygpKSB7CisgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsUmVmZXJl
bmNlUG9zaXRpb24gPSBldmVudFBvc2l0aW9uICsgb2Zmc2V0OworCisgICAgaWYgKG1fYXV0b3Nj
cm9sbFR5cGUgPT0gTm9BdXRvc2Nyb2xsKSB7CisgICAgICAgIG1fYXV0b3Njcm9sbFR5cGUgPSBB
dXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3A7CisgICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0g
c2Nyb2xsYWJsZTsKKyAgICAgICAgbV9kcmFnQW5kRHJvcEF1dG9zY3JvbGxTdGFydFRpbWUgPSBl
dmVudFRpbWU7CisgICAgICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7CisgICAgfSBlbHNlIGlm
IChtX2F1dG9zY3JvbGxSZW5kZXJlciAhPSBzY3JvbGxhYmxlKSB7CisgICAgICAgIG1fZHJhZ0Fu
ZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID0gZXZlbnRUaW1lOworICAgICAgICBtX2F1dG9zY3Jv
bGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgfQorfQorCiAjaWYgRU5BQkxFKFBBTl9TQ1JP
TExJTkcpCiB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpkaWRQYW5TY3JvbGxTdGFydCgpCiB7
CkBAIC0yMDAsMTMgKzIzNywyMCBAQCB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Ny
b2xsVGltZXJGaXJlZChUaW1lcjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4qKQogCiAgICAgRnJhbWUq
IGZyYW1lID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmZyYW1lKCk7CiAgICAgc3dpdGNoIChtX2F1
dG9zY3JvbGxUeXBlKSB7Ci0gICAgY2FzZSBBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uOgotICAgICAg
ICBpZiAoIWZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VQcmVzc2VkKCkpIHsKKyAgICBjYXNl
IEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcDoKKyAgICAgICAgaWYgKFdURjo6Y3VycmVudFRpbWUo
KSAtIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID4gYXV0b3Njcm9sbERlbGF5KQor
ICAgICAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3JvbGwobV9kcmFnQW5kRHJv
cEF1dG9zY3JvbGxSZWZlcmVuY2VQb3NpdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QXV0b3Njcm9sbEZvclNlbGVjdGlvbjogeworICAgICAgICBFdmVudEhhbmRsZXIqIGV2ZW50SGFu
ZGxlciA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKTsKKyAgICAgICAgaWYgKCFldmVudEhhbmRsZXIt
Pm1vdXNlUHJlc3NlZCgpKSB7CiAgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVy
ZXItPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyLT51cGRhdGVTZWxlY3Rpb25G
b3JNb3VzZURyYWcoKTsKKyAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3JvbGwo
ZXZlbnRIYW5kbGVyLT5sYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkpOwogICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBOb0F1dG9zY3JvbGw6CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShQQU5fU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Ny
b2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxl
ci5oCmluZGV4IGY2NzFmMTVkNDMzNjU3MWFkYTJjZTU1MmYwZDc3YmFhM2I4ODg5NjguLjQwMDBh
MTc1ZDFjNjQwYTQ4OTdkZWQ3YzBkMWYyZTEwNDFkM2IyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmgKQEAgLTM0LDEyICszNCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBFdmVudEhhbmRsZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1l
VmlldzsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBSZW5k
ZXJCb3g7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGVudW0gQXV0b3Njcm9sbFR5cGUgewogICAg
IE5vQXV0b3Njcm9sbCwKKyAgICBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3AsCiAgICAgQXV0b3Nj
cm9sbEZvclNlbGVjdGlvbiwKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKICAgICBBdXRvc2Ny
b2xsRm9yUGFuLApAQCAtNTYsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydEF1dG9z
Y3JvbGxGb3JTZWxlY3Rpb24oUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBzdG9wQXV0b3Njcm9s
bFRpbWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFsc2UpOwogICAgIHZvaWQg
dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCk7CisgICAgdm9pZCB1cGRhdGVEcmFnQW5kRHJvcChO
b2RlKiB0YXJnZXROb2RlLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3NpdGlvbiwgZG91YmxlIGV2
ZW50VGltZSk7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgdm9pZCBkaWRQYW5TY3Jv
bGxTdGFydCgpOwogICAgIHZvaWQgZGlkUGFuU2Nyb2xsU3RvcCgpOwpAQCAtNzQsNiArNzcsOCBA
QCBwcml2YXRlOgogICAgIFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVyPiBtX2F1dG9zY3JvbGxU
aW1lcjsKICAgICBSZW5kZXJCb3gqIG1fYXV0b3Njcm9sbFJlbmRlcmVyOwogICAgIEF1dG9zY3Jv
bGxUeXBlIG1fYXV0b3Njcm9sbFR5cGU7CisgICAgSW50UG9pbnQgbV9kcmFnQW5kRHJvcEF1dG9z
Y3JvbGxSZWZlcmVuY2VQb3NpdGlvbjsKKyAgICBkb3VibGUgbV9kcmFnQW5kRHJvcEF1dG9zY3Jv
bGxTdGFydFRpbWU7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgSW50UG9pbnQgbV9w
YW5TY3JvbGxTdGFydFBvczsKICAgICBib29sIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBiMmMwN2JjMDAzNzQ3ODA3YzJjNzZl
Mjk1NmFjOTE3NGY2NWY3YTY0Li44M2YzYjlhZDhhMDk5ZTA2MDdhNzA1MGQyNjkyYzY2Y2E2MGMy
N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xOTYzLDYgKzE5NjMs
OCBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgIGlmIChuZXdUYXJnZXQgJiYgbmV3VGFy
Z2V0LT5pc1RleHROb2RlKCkpCiAgICAgICAgIG5ld1RhcmdldCA9IG5ld1RhcmdldC0+cGFyZW50
Tm9kZSgpOwogCisgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci0+dXBkYXRlRHJhZ0FuZERyb3Ao
bmV3VGFyZ2V0LmdldCgpLCBldmVudC5wb3NpdGlvbigpLCBldmVudC50aW1lc3RhbXAoKSk7CisK
ICAgICBpZiAobV9kcmFnVGFyZ2V0ICE9IG5ld1RhcmdldCkgewogICAgICAgICAvLyBGSVhNRTog
dGhpcyBvcmRlcmluZyB3YXMgZXhwbGljaXRseSBjaG9zZW4gdG8gbWF0Y2ggV2luSUUuIEhvd2V2
ZXIsCiAgICAgICAgIC8vIGl0IGlzIHNvbWV0aW1lcyBpbmNvcnJlY3Qgd2hlbiBkcmFnZ2luZyB3
aXRoaW4gc3ViZnJhbWVzLCBhcyBzZWVuIHdpdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggNDBlNDM5ZGNlYmJiYjFjOTBjYTgyNzVjODc3MWNhZDk2YjMxN2QwNy4u
MzU1MjgwNWM5NWY2ZDIyYjE0OWFlY2M0Y2JjMDlhZjcwYmRjMzlhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIHN0YXRpYyBPdmVycmlk
ZVNpemVNYXAqIGdPdmVycmlkZVdpZHRoTWFwID0gMDsKIHN0YXRpYyBPdmVycmlkZVNpemVNYXAq
IGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRNYXAgPSAwOwogc3RhdGljIE92
ZXJyaWRlU2l6ZU1hcCogZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoTWFwID0g
MDsKIAorCisvLyBTaXplIG9mIGJvcmRlciBiZWx0IGZvciBhdXRvc2Nyb2xsLiBXaGVuIG1vdXNl
IHBvaW50ZXIgaW4gYm9yZGVyIGJlbHQsCisvLyBhdXRvc2Nyb2xsIGlzIHN0YXJ0ZWQuCitzdGF0
aWMgY29uc3QgaW50IGF1dG9zY3JvbGxCZWx0U2l6ZSA9IDIwOworCiBib29sIFJlbmRlckJveDo6
c19oYWRPdmVyZmxvd0NsaXAgPSBmYWxzZTsKIAogUmVuZGVyQm94OjpSZW5kZXJCb3goTm9kZSog
bm9kZSkKQEAgLTY4MCwxMCArNjg1LDEwIEBAIGJvb2wgUmVuZGVyQm94Ojp1c2VzQ29tcG9zaXRl
ZFNjcm9sbGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIGhhc0xh
eWVyKCkgJiYgbGF5ZXIoKS0+dXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKIH0KIAotdm9pZCBS
ZW5kZXJCb3g6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJCb3g6OmF1dG9zY3JvbGwoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIGlmIChsYXllcigpKQotICAgICAgICBsYXllcigp
LT5hdXRvc2Nyb2xsKCk7CisgICAgICAgIGxheWVyKCktPmF1dG9zY3JvbGwocG9zaXRpb24pOwog
fQogCiAvLyBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIHJlbmRlcmVyIHRoYXQgY2FuIGF1dG9zY3Jv
bGwuCkBAIC03MDcsNiArNzEyLDMzIEBAIGJvb2wgUmVuZGVyQm94OjpjYW5BdXRvc2Nyb2xsKCkg
Y29uc3QKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBmcmFtZTsKIH0K
IAorLy8gSWYgc3BlY2lmaWVkIHBvaW50IGlzIGluIGJvcmRlciBiZWx0LCByZXR1cm5lZCBvZmZz
ZXQgZGVub3RlcyBkaXJlY3Rpb24gb2YKKy8vIHNjcm9sbGluZy4KK0ludFNpemUgUmVuZGVyQm94
OjpjYWxjdWxhdGVBdXRvc2Nyb2xsRGlyZWN0aW9uKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2lu
dCkgY29uc3QKK3sKKyAgICBpZiAoIWZyYW1lKCkpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7
CisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAo
IWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKworICAgIEludFNpemUgb2Zm
c2V0OworICAgIEludFBvaW50IHBvaW50ID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdp
bmRvd1BvaW50KTsKKyAgICBJbnRSZWN0IGJveChhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsK
KworICAgIGlmIChwb2ludC54KCkgPCBib3gueCgpICsgYXV0b3Njcm9sbEJlbHRTaXplKQorICAg
ICAgICBwb2ludC5tb3ZlKC1hdXRvc2Nyb2xsQmVsdFNpemUsIDApOworICAgIGVsc2UgaWYgKHBv
aW50LngoKSA+IGJveC5tYXhYKCkgLSBhdXRvc2Nyb2xsQmVsdFNpemUpCisgICAgICAgIHBvaW50
Lm1vdmUoYXV0b3Njcm9sbEJlbHRTaXplLCAwKTsKKworICAgIGlmIChwb2ludC55KCkgPCBib3gu
eSgpICsgYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAgICBwb2ludC5tb3ZlKDAsIC1hdXRvc2Ny
b2xsQmVsdFNpemUpOworICAgIGVsc2UgaWYgKHBvaW50LnkoKSA+IGJveC5tYXhZKCkgLSBhdXRv
c2Nyb2xsQmVsdFNpemUpCisgICAgICAgIHBvaW50Lm1vdmUoMCwgYXV0b3Njcm9sbEJlbHRTaXpl
KTsKKyAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KHBvaW50KSAtIHdpbmRv
d1BvaW50OworfQorCiBSZW5kZXJCb3gqIFJlbmRlckJveDo6ZmluZEF1dG9zY3JvbGxhYmxlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgd2hpbGUgKHJlbmRlcmVyICYmICEocmVuZGVy
ZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5BdXRvc2Nyb2xsKCkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggMjYyNTNiZDU1ODA0YThmNTY2
NDJlMjEyYjk3MmMzMzNiODJjYjhlNy4uYWI0YmE2YjQ3NjVjYWUyNmE4OWUxZjMyY2M5NDJlM2Ex
YWZjYjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNDQzLDggKzQ0
Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbG9naWNhbFNjcm9sbChTY3JvbGxMb2dp
Y2FsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIE5v
ZGUqKiBzdG9wTm9kZSA9IDApOwogICAgIGJvb2wgY2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFi
bGVBcmVhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Ny
b2xsZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbCgpOworICAgIHZpcnR1
YWwgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50Jik7CiAgICAgYm9vbCBjYW5BdXRvc2Ny
b2xsKCkgY29uc3Q7CisgICAgSW50U2l6ZSBjYWxjdWxhdGVBdXRvc2Nyb2xsRGlyZWN0aW9uKGNv
bnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29uc3Q7CiAgICAgc3RhdGljIFJlbmRlckJveCog
ZmluZEF1dG9zY3JvbGxhYmxlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
QXV0b3Njcm9sbCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYW5TY3JvbGwoY29uc3QgSW50UG9p
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGRiMGE0
NmI1NTEyY2U1ZWI5YzQ1OWFjNDliY2FjNGY0ZTQ2NzRmMDIuLjg3NjEwYjhjZjVjM2RiN2I2NDli
NTA0ODVmNDEzNTA0MTBkY2E2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMjI5MSw3ICsyMjkxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Z2V0
UmVjdFRvRXhwb3NlKGNvbnN0IExheW91dFJlY3QgJnZpc2libGVSZWN0LCBjb25zdCBMYXkKICAg
ICByZXR1cm4gTGF5b3V0UmVjdChMYXlvdXRQb2ludCh4LCB5KSwgdmlzaWJsZVJlY3Quc2l6ZSgp
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCgpCit2b2lkIFJlbmRlckxheWVy
OjphdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBGcmFtZSogZnJh
bWUgPSByZW5kZXJlcigpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC0yMzAxLDExICsy
MzAxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCgpCiAgICAgaWYgKCFmcmFtZVZp
ZXcpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT51cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKTsKLSNlbmRp
ZgotCi0gICAgSW50UG9pbnQgY3VycmVudERvY3VtZW50UG9zaXRpb24gPSBmcmFtZVZpZXctPndp
bmRvd1RvQ29udGVudHMoZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5sYXN0S25vd25Nb3VzZVBvc2l0
aW9uKCkpOworICAgIEludFBvaW50IGN1cnJlbnREb2N1bWVudFBvc2l0aW9uID0gZnJhbWVWaWV3
LT53aW5kb3dUb0NvbnRlbnRzKHBvc2l0aW9uKTsKICAgICBzY3JvbGxSZWN0VG9WaXNpYmxlKExh
eW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIExheW91dFNpemUoMSwgMSkpLCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
aW5kZXggNjE3OTg4MDc2NTE3NTQ3MjQ2MDVmODYzZGI4YWRiNWFhNzljZjYyNS4uZTdhNzEyM2Fh
NTM0OTUwYTYzY2ViNTFiZWZhY2QyYTUxYzcwMTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKQEAgLTM3NCw3ICszNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVj
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKLSAgICB2b2lk
IGF1dG9zY3JvbGwoKTsKKyAgICB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKIAog
ICAgIHZvaWQgcmVzaXplKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IExheW91dFNp
emUmKTsKICAgICBib29sIGluUmVzaXplTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5SZXNpemVN
b2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXgg
YjBhN2VmNjA2M2Y5MWNkYmVmZjIyMTA2OTU4ZGNjZWUxZDgzNjdhYy4uNGQ1MzM1YWZiYmRhNDFk
Y2FhNmU5M2IwZjkzNGFjNGE0Yzg2MjFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcApAQCAtNTU0LDcgKzU1NCw3IEBAIGludCBSZW5kZXJMaXN0Qm94Ojpz
Y3JvbGxUb3dhcmQoY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uKQogICAgIHJldHVybiBsaXN0
SW5kZXhBdE9mZnNldChwb3NpdGlvbk9mZnNldCk7CiB9CiAKLXZvaWQgUmVuZGVyTGlzdEJveDo6
YXV0b3Njcm9sbCgpCit2b2lkIFJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwoY29uc3QgSW50UG9p
bnQmKQogewogICAgIEludFBvaW50IHBvcyA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250
ZW50cyhmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bGFzdEtub3duTW91c2VQb3NpdGlvbigpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggM2JhZmJlM2Uz
MzE0OTUyMWExYmY0ZWZmYmM0YmRhZGFjYWU4OWU1YS4uNzJhOTEzNWY0NDg3MmQ2MjRjMGQ0ODI3
OGZmN2VmNWFmN2U5MmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3Vz
UmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbCgpOworICAgIHZpcnR1YWwgdm9p
ZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBdXRv
c2Nyb2xsKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFuU2Nyb2xsKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCBjN2YwNzVhNGI4Zjk4MDkwZjAxZWU5
YTI5OGNmMzVkZjZmZGUyM2MwLi43ZWEzMDgxNjA1ZDg0Y2M3ZDgwNDkzYjExZTMzMzI5MWJhZjhi
OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtMzgxLDExICszODEsMTEgQEAgYm9vbCBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OnRleHRTaG91bGRCZVRydW5jYXRlZCgpIGNvbnN0CiAgICAg
ICAgICYmIHN0eWxlKCktPnRleHRPdmVyZmxvdygpID09IFRleHRPdmVyZmxvd0VsbGlwc2lzOwog
fQogCi12b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YXV0b3Njcm9sbCgpCit2b2lk
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYg
cG9zaXRpb24pCiB7CiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gaW5uZXJUZXh0RWxlbWVudCgp
LT5yZW5kZXJCb3goKS0+bGF5ZXIoKTsKICAgICBpZiAobGF5ZXIpCi0gICAgICAgIGxheWVyLT5h
dXRvc2Nyb2xsKCk7CisgICAgICAgIGxheWVyLT5hdXRvc2Nyb2xsKHBvc2l0aW9uKTsKIH0KIAog
aW50IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2Nyb2xsV2lkdGgoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oCmluZGV4IGFmMjdiZjc1OGI0NDE0Y2MxMGJlMjA3NGI0ZTBhMmY2YTM0NWZkODcuLmQ3
ZGZmZTNmZWZiN2UyY2U0YWNhOWVhODQ1OGIwNjk2N2FjYzhjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXV0b3Nj
cm9sbCgpOworICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50Jik7CiAK
ICAgICAvLyBTdWJjbGFzc2VkIHRvIGZvcndhcmQgdG8gb3VyIGlubmVyIGRpdi4KICAgICB2aXJ0
dWFsIGludCBzY3JvbGxMZWZ0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggNDExODgzOGY0Y2ZiMTc5NzYxNjczMDNiZTQ3Y2ZmOTQ1OGY1
ODk4ZS4uMTVjMjUyNTA1ZTkzYzVmMmQ2YTMwODAyZmUzYzk1YTkyMmRkMDUyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNTMsNyArNTMsNiBAQAog
I2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJEcmFnRGF0YS5oIgotI2luY2x1ZGUgIkRyYWdTY3JvbGxUaW1lci5oIgogI2lu
Y2x1ZGUgIkRyYWdTZXNzaW9uLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZl
bnRIYW5kbGVyLmgiCkBAIC00MTQsNyArNDEzLDYgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fYXV0b2ZpbGxQb3B1cCgwKQogICAgICwg
bV9pc1RyYW5zcGFyZW50KGZhbHNlKQogICAgICwgbV90YWJzVG9MaW5rcyhmYWxzZSkKLSAgICAs
IG1fZHJhZ1Njcm9sbFRpbWVyKGFkb3B0UHRyKG5ldyBEcmFnU2Nyb2xsVGltZXIpKQogICAgICwg
bV9pc0NhbmNlbGluZ0Z1bGxTY3JlZW4oZmFsc2UpCiAgICAgLCBtX2JlbmNobWFya1N1cHBvcnQo
dGhpcykKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC0zMjI3LDcgKzMyMjUs
NiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlRW5kZWRBdCgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZhbHNlLCAwKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQocG1lLAogICAgICAgICBzdGF0aWNfY2FzdDxEcmFn
T3BlcmF0aW9uPihvcGVyYXRpb24pKTsKLSAgICBtX2RyYWdTY3JvbGxUaW1lci0+c3RvcCgpOwog
fQogCiB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbygKQEAgLTMyMzUsNyArMzIz
Miw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VNb3ZlZFRvKAogICAgIGNvbnN0IFdl
YlBvaW50JiBzY3JlZW5Qb2ludCwKICAgICBXZWJEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsK
LSAgICBtX2RyYWdTY3JvbGxUaW1lci0+dHJpZ2dlclNjcm9sbChtYWluRnJhbWVJbXBsKCktPmZy
YW1lVmlldygpLCBjbGllbnRQb2ludCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3Vy
Y2VTeXN0ZW1EcmFnRW5kZWQoKQpAQCAtMzMyMSw4ICszMzE3LDYgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6ZHJhZ1RhcmdldERyb3AoY29uc3QgV2ViUG9pbnQmIGNsaWVudFBvaW50LAogCiAgICAgbV9k
cmFnT3BlcmF0aW9uID0gV2ViRHJhZ09wZXJhdGlvbk5vbmU7CiAgICAgbV9jdXJyZW50RHJhZ0Rh
dGEgPSAwOwotCi0gICAgbV9kcmFnU2Nyb2xsVGltZXItPnN0b3AoKTsKIH0KIAogV2ViRHJhZ09w
ZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyYWdFbnRlck9yT3Zlcihjb25zdCBXZWJQ
b2ludCYgY2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwgRHJhZ0FjdGlv
biBkcmFnQWN0aW9uLCBpbnQga2V5TW9kaWZpZXJzKQpAQCAtMzM1MCwxMSArMzM0NCw2IEBAIFdl
YkRyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdUYXJnZXREcmFnRW50ZXJPck92ZXIoY29u
c3QgV2ViUG9pbnQmIGNsaWVudFBvCiAKICAgICAgbV9kcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8V2ViRHJhZ09wZXJhdGlvbj4oZHJvcEVmZmVjdCk7CiAKLSAgICBpZiAoZHJhZ0FjdGlvbiA9
PSBEcmFnT3ZlcikKLSAgICAgICAgbV9kcmFnU2Nyb2xsVGltZXItPnRyaWdnZXJTY3JvbGwobWFp
bkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgY2xpZW50UG9pbnQpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9kcmFnU2Nyb2xsVGltZXItPnN0b3AoKTsKLQogICAgIHJldHVybiBtX2RyYWdPcGVyYXRp
b247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDAw
NjFiZjJiZjQ2NDdiY2ZiYTI4M2Y4OWQ5ZjFlZTYwNGI4NzU4OWIuLmI1ZTAyMTIzZjRiODY1YTJj
MWQ4YWQzYWY5YzI3MDlmZjAzMDc3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaApAQCAtODksNyArODksNiBAQCBjbGFzcyBCYXR0ZXJ5Q2xpZW50SW1wbDsKIGNs
YXNzIENvbnRleHRGZWF0dXJlc0NsaWVudEltcGw7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudElt
cGw7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwotY2xhc3MgRHJhZ1Njcm9s
bFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNsYXNzIExpbmtIaWdobGln
aHQ7CiBjbGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q7CkBAIC04MTIsNyArODExLDYgQEAg
cHJpdmF0ZToKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6OlN0cmluZywgV1RGOjpTdHJpbmc+
IFNldHRpbmdzTWFwOwogICAgIE93blB0cjxTZXR0aW5nc01hcD4gbV9pbnNwZWN0b3JTZXR0aW5n
c01hcDsKLSAgICBPd25QdHI8RHJhZ1Njcm9sbFRpbWVyPiBtX2RyYWdTY3JvbGxUaW1lcjsKIAog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CiAgICAgLy8gVGhlIHByb3ZpZGVyIG9mIGRlc2t0b3Agbm90aWZpY2F0aW9uczsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAw
Mzc5MjUzYTNhMmE2NTdlYTAwNzAzMTkyYWI3MzUxNzYzZTkzZjNmLi4xOTM3MjlhMWJmZDRhNjY4
NzdmNDQ1NWRkZDY3OWEyM2E2MzVlNDc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEt
MDcgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBEcmFn
Z2luZyBvdmVyIGFuIGVsZW1lbnQgd2l0aCBzY3JvbGxiYXJzIHNob3VsZCBzY3JvbGwgdGhlIGVs
ZW1lbnQgd2hlbiBkcmFnZ2luZyBuZWFyIGVkZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgdGVzdCBmb3IgYXV0b3Nj
cm9sbCBkdXJpbmcgZHJhZy1hbmQtZHJvcC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWct
YW5kLWRyb3AtYXV0b3Njcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0w
NyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUxUcmVlQnVp
bGRlciBzaG91bGQgbm90IGRlcGVuZCBvbiBGcmFtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGFjMTYzZDRjOTdjZTE1NzM0YzAwMTk2ZTQzMjM2NTMwYzk5OGJhMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0
b3Njcm9sbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitDaGVjayBhdXRvc2Nyb2xsIGJ5
IGRyYWctYW5kLWRyb3AKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc2Ny
b2xsYWJsZS5zY3JvbGxUb3AgPiAwCitGb3IgbWFudWFsIHRlc3RpbmcsIGRyYWcgYW5kIGRyb3Ag
IkRyb3AgTWUiIHRvICJTY3JvbGxhYmxlIiBhcmVhLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0
NjJiZmMzOGQ0M2ZiMjc5ZTYwNzBiNzU2MWI3MmI4ZmUzZjE4NmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbApA
QCAtMCwwICsxLDEwMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
CisjZHJhZ2dhYmxlIHsKKyAgcGFkZGluZzogNXB0OworICBib3JkZXI6IDNweCBzb2xpZCAjMDBj
YzAwOworICBiYWNrZ3JvdW5kOiAjMDBjY2NjOworICB3aWR0aDogODBweDsKKyAgY3Vyc29yOiBo
YW5kOworfQorCisjc2Nyb2xsYWJsZSB7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBvdmVyZmxv
dzogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlkIDNweCAjY2MwMDAwOworfQorPC9zdHlsZT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiAkKGlkKSB7IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChp
ZCk7IH0KKworZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgJCgnY29udGFpbmVyJykuaW5uZXJIVE1MID0gJyc7CisgICAgd2luZG93LnRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0SXQoKSB7CisgICAgdmFyIGRy
YWdnYWJsZSA9ICQoJ2RyYWdnYWJsZScpOworICAgIHZhciBzY3JvbGxhYmxlID0gJCgnc2Nyb2xs
YWJsZScpOworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisKKyAgICAvLyBHcmFiIGRyYWdn
YWJsZQorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGRyYWdnYWJsZS5vZmZzZXRMZWZ0ICsg
NSwgZHJhZ2dhYmxlLm9mZnNldFRvcCArIDUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigp
OworCisgICAgLy8gTW92ZSBtb3VzZSB0byBhdXRvc2Nyb2xsIGJvcmRlciBiZWx0LgorICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHNjcm9sbGFibGUub2Zmc2V0TGVmdCArIDUsIHNjcm9sbGFi
bGUub2Zmc2V0VG9wICsgc2Nyb2xsYWJsZS5vZmZzZXRIZWlnaHQgLSAxMCk7CisKKyAgICB2YXIg
cmV0cnlDb3VudCA9IDA7CisKKyAgICBmdW5jdGlvbiBjaGVja1Njcm9sbGVkKCkKKyAgICB7Cisg
ICAgICAgIGlmIChzY3JvbGxhYmxlLnNjcm9sbFRvcCA+IDApIHsKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoJ3Njcm9sbGFibGUuc2Nyb2xsVG9wID4gMCcpOworICAgICAgICAgICAgZmluaXNoVGVz
dCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgKytyZXRyeUNv
dW50OworICAgICAgICBpZiAocmV0cnlDb3VudCA+IDEwKSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdObyBhdXRvc2Nyb2xsJyk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBBdXRvc2Nyb2xsIGlzIG9jY3Vy
cmVkIGV2ZXkgMC4wNSBzZWMuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrU2Nyb2xs
ZWQsIDUwKTsKKyAgICB9CisKKyAgICBjaGVja1Njcm9sbGVkKCk7Cit9CisKK2Z1bmN0aW9uIHNl
dFVwVGVzdCgpCit7CisgICAgdmFyIHNjcm9sbGFibGUgPSAkKCdzY3JvbGxhYmxlJyk7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgdmFyIGxpbmUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgIGxpbmUuaW5uZXJIVE1MID0gImxpbmUgIiAr
IGk7CisgICAgICBzY3JvbGxhYmxlLmFwcGVuZENoaWxkKGxpbmUpOworICAgIH0KKworICAgIGlm
ICghd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCdQbGVhc2UgcnVu
IHdpdGhpbiBEdW1wUmVuZGVyVHJlZScpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRlc3RJ
dCwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorRm9yIG1hbnVhbCB0ZXN0aW5n
LCBkcmFnIGFuZCBkcm9wICJEcm9wIE1lIiB0byAiU2Nyb2xsYWJsZSIgYXJlYS4KKzxkaXYgaWQ9
ImNvbnRhaW5lciI+Cis8ZGl2IGlkPSJkcmFnZ2FibGUiIGRyYWdnYWJsZT0idHJ1ZSI+RHJvcCBN
ZTwvZGl2PgorU2Nyb2xsYWJsZQorPGRpdiBpZD0ic2Nyb2xsYWJsZSI+Cis8L2Rpdj4KKzwvZGl2
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ0NoZWNrIGF1dG9zY3JvbGwgYnkgZHJhZy1hbmQtZHJv
cCcpOworc2V0VXBUZXN0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182711</attachid>
            <date>2013-01-15 00:31:13 -0800</date>
            <delta_ts>2013-01-15 01:14:59 -0800</delta_ts>
            <desc>Patch-3.0.2</desc>
            <filename>bug-39725-20130115172812.patch</filename>
            <type>text/plain</type>
            <size>32569</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg0NzNmY2IyOWE5NGIz
MzRkMmY2OTVmNGM1NDA1ZTlmMDBjMDQwNy4uYTI0YWY1YjVmODZmYjYyYjc2ZjA3ZjlkZDdmMGRh
YWUxYTY3ODQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTE0ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYXV0byBzY3JvbGxpbmcgZnVuY3Rp
b25hbGl0eSBkdXJpbmcgZHJhZy1hbmQtZHJvcAorICAgICAgICB3aGVuIGRyb3Agc291cmNlIGlz
IG5lYXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgV2hlbiBkcm9wIHNv
dXJjZSBpcyBpbnNpZGUgMjBweCBvZiBzY3JvbGxhYmxlIGVsZW1lbnQgbW9yZSB0aGFuIDIwMG1z
LAorICAgICAgICBzY3JvbGxhYmxlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBzY3JvbGxlZCBl
dmVyeSA1MG1zIHRvd2FyZCBkcm9wCisgICAgICAgIHNvdXJjZSBwb3NpdGlvbiwgZS5nLiB2ZXJ0
aWNhbGx5IHNjcm9sbCB1cCB3aGVuIGRyb3Agc291cmNlIGlzIGluIHRvcAorICAgICAgICBlZGdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcik6IENo
YW5nZWQgdG8gaW5pdGlhbGl6ZSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6
IEFkZGVkIGZvciBzdGFydC9zdG9wIGF1dG9zY3JvbGwgZHVyaW5nIGRyYWctYW5kLWRyb3AuCisg
ICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQpOiBDaGFuZ2VkIHRvIGFkZCBhdXRvc2Nyb2xsIGZvciBkcmFnLWFuZC1kcm9wLCBhbmQgdG8g
cGFzcyBsYXN0IGtub3cgcG9zaXRpb24gdG8gUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkuCisgICAg
ICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoQXV0b3Njcm9sbENv
bnRyb2xsZXIpOiBDaGFuZ2VkIHRvIGFkZCB1cGRhdGVEcmFnQW5kRHJvcCgpIGFuZCBtX2RyYWdB
bmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0aW9uIGFuZCBtX2RyYWdBbmREcm9wQXV0b3Nj
cm9sbFN0YXJ0VGltZS4KKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50KTogQ2hhbmdlZCB0byBhZGQgbmV3IGZ1bmN0aW9uIHNob3Vs
ZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcCgpLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ap
OiBDaGFuZ2VkIHRvIGNhbGwgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZURyYWdBbmREcm9w
KCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyRHJhZ1N0YXRlKTogQ2hh
bmdlZCB0byBjYWxsIHN0b3BBdXRvc2Nyb2xsVGltZXIoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXV0b3Njcm9sbCk6
IENoYW5nZWQgZm9yIG5ldyBwYXJhbWV0ZXIgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24pOiBBZGRlZCBmb3IgYXV0b3Nj
cm9sbC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6ICBDaGFuZ2VkIGZvciBuZXcgcGFyYW1ldGVy
IHBvc2l0aW9uIGFuZCBtb3ZlIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpIHRvIEF1dG9z
Y3JvbGxDb250cm9sbGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAg
ICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwpOiAgQ2hhbmdl
ZCBmb3IgbmV3IHBhcmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5oOgorICAgICAgICAoUmVuZGVyTGlzdEJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwpOiAgQ2hhbmdlZCBmb3IgbmV3IHBh
cmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmg6CisgICAgICAgIChSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorCiAy
MDEzLTAxLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVG
TCBidWlsZCBmaXggYWZ0ZXIgcjEzOTY4MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MDBhZTEzYjNmMDc5MjU0NTYwZmNhYjc0NDAwM2QwMmFmMDM2OWFlMS4uMTUwZDc0ZTcwMDNkZThj
NzJmZDRkMmJlZTZlMmUxMjQ5MGE5YWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMSBAQAorMjAxMy0wMS0xNCAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIERyYWdnaW5nIG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9sbGJh
cnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBy
ZW1vdmVzIERyYWdTY3JvbGxUaW1lciB1c2VkIGZvciBhdXRvbWF0aWMgc2Nyb2xsaW5nIG9mIG1h
aW4KKyAgICAgICAgZnJhbWUgZHJhZy1hbmQtZHJvcCB3aGljaCBpcyBub3cgaW1wbGVtZW50ZWQg
aW4gRXZlbnRIYW5kbGVyLgorCisgICAgICAgIEFub3RoZXIgcGF0Y2ggd2lsbCByZW1vdmUgRHJh
Z1Njcm9sbFRpbWVyLntjcHAsaH0gYW5kIHVwZGF0ZSBHWVAgZmlsZXMgdG8KKyAgICAgICAgbWFr
ZSBwYXRjaCBzaXplIHNtYWxsLgorCisgICAgICAgIE5vIHRlc3RzLiBFeGlzdGluZyB0ZXN0IGNv
dmVycyB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6c2hvdWxkQXV0b3Njcm9sbEZvckRy
YWdBbmREcm9wKTogQWRkZWQuCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAg
ICAgICAgKENocm9tZUNsaWVudEltcGwpOiBDaGFuZ2VkIHRvIGFkZCBzaG91bGRBdXRvc2Nyb2xs
Rm9yRHJhZ0FuZERyb3AoKS4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBDaGFuZ2VkIHRvIHJlbW92ZSBt
X2RyYWdTY3JvbGxUaW1lci4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdTb3Vy
Y2VFbmRlZEF0KTogZGl0dG8KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdTb3Vy
Y2VNb3ZlZFRvKTogZGl0dG8KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdUYXJn
ZXREcm9wKTogZGl0dG8KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdUYXJnZXRE
cmFnRW50ZXJPck92ZXIpOiBkaXR0bworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAg
ICAgICAoV2ViS2l0KTogQ2hhZ25lZCB0byByZW1vdmUgRHJhZ1Njcm9sbFRpbWVyLgorCiAyMDEz
LTAxLTE0ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJ
bmRleGVkREI6IFJlbW92ZSBJREJPYmplY3RTdG9yZS9JbmRleEJhY2tlbmRJbXBsIGFuZCBzdXBw
b3J0IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAppbmRleCA0MzhlOTlkMzExYjdhYmE1MTY5NGZkNGY4ZWVkODZjZTVkMDAyNWJlLi4wZTU0
NWM4NGYzYzlkZmE3MmViNmU2NDkwNzZkMjdmZWJlMzEwYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1dG9zY3JvbGxDb250cm9sbGVyLmgiCiAKKyNpbmNs
dWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpA
QCAtMzUsOSArMzcsMTMgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIERlbGF5IHRpbWUgaW4gc2Vjb25kIGZvciBz
dGFydCBhdXRvc2Nyb2xsIGlmIHBvaW50ZXIgaXMgaW4gYm9yZGVyIGVkZ2Ugb2Ygc2Nyb2xsYWJs
ZSBlbGVtZW50Lgorc3RhdGljIGRvdWJsZSBhdXRvc2Nyb2xsRGVsYXkgPSAwLjI7CisKIC8vIFdo
ZW4gdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0
aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCiBzdGF0aWMgY29uc3QgZG91
YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CiAKQEAgLTUzLDYgKzU5LDcgQEAgQXV0b3Nj
cm9sbENvbnRyb2xsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyKCkKICAgICA6IG1fYXV0b3Njcm9s
bFRpbWVyKHRoaXMsICZBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQp
CiAgICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQogICAgICwgbV9hdXRvc2Nyb2xsVHlwZShO
b0F1dG9zY3JvbGwpCisgICAgLCBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZSgwKQog
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgICwgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2Vk
KGZhbHNlKQogICAgICwgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQpA
QCAtMTQ0LDYgKzE1MSw1MCBAQCB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRv
c2Nyb2xsUmVuZGVyZXIoKQogICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXIgJiYg
cmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOwogfQogCit2b2lk
IEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChOb2RlKiBkcm9wVGFyZ2V0
Tm9kZSwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zaXRpb24sIGRvdWJsZSBldmVudFRpbWUpCit7
CisgICAgaWYgKCFkcm9wVGFyZ2V0Tm9kZSkgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZW5kZXJCb3gqIHNjcm9sbGFibGUg
PSBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZShkcm9wVGFyZ2V0Tm9kZS0+cmVuZGVyZXIo
KSk7CisgICAgaWYgKCFzY3JvbGxhYmxlKSB7CisgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEZyYW1lKiBmcmFtZSA9IHNjcm9sbGFi
bGUtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRp
bWVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c2hv
dWxkQXV0b3Njcm9sbEZvckRyYWdBbmREcm9wKHNjcm9sbGFibGUpKSB7CisgICAgICAgIHN0b3BB
dXRvc2Nyb2xsVGltZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEludFNpemUg
b2Zmc2V0ID0gc2Nyb2xsYWJsZS0+Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbihldmVudFBv
c2l0aW9uKTsKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpKSB7CisgICAgICAgIHN0b3BBdXRvc2Ny
b2xsVGltZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZHJhZ0FuZERyb3BB
dXRvc2Nyb2xsUmVmZXJlbmNlUG9zaXRpb24gPSBldmVudFBvc2l0aW9uICsgb2Zmc2V0OworCisg
ICAgaWYgKG1fYXV0b3Njcm9sbFR5cGUgPT0gTm9BdXRvc2Nyb2xsKSB7CisgICAgICAgIG1fYXV0
b3Njcm9sbFR5cGUgPSBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3A7CisgICAgICAgIG1fYXV0b3Nj
cm9sbFJlbmRlcmVyID0gc2Nyb2xsYWJsZTsKKyAgICAgICAgbV9kcmFnQW5kRHJvcEF1dG9zY3Jv
bGxTdGFydFRpbWUgPSBldmVudFRpbWU7CisgICAgICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7
CisgICAgfSBlbHNlIGlmIChtX2F1dG9zY3JvbGxSZW5kZXJlciAhPSBzY3JvbGxhYmxlKSB7Cisg
ICAgICAgIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID0gZXZlbnRUaW1lOworICAg
ICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgfQorfQorCiAjaWYg
RU5BQkxFKFBBTl9TQ1JPTExJTkcpCiB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpkaWRQYW5T
Y3JvbGxTdGFydCgpCiB7CkBAIC0yMDAsMTMgKzI1MSwyMCBAQCB2b2lkIEF1dG9zY3JvbGxDb250
cm9sbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4q
KQogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmZyYW1lKCk7CiAg
ICAgc3dpdGNoIChtX2F1dG9zY3JvbGxUeXBlKSB7Ci0gICAgY2FzZSBBdXRvc2Nyb2xsRm9yU2Vs
ZWN0aW9uOgotICAgICAgICBpZiAoIWZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VQcmVzc2Vk
KCkpIHsKKyAgICBjYXNlIEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcDoKKyAgICAgICAgaWYgKFdU
Rjo6Y3VycmVudFRpbWUoKSAtIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID4gYXV0
b3Njcm9sbERlbGF5KQorICAgICAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3Jv
bGwobV9kcmFnQW5kRHJvcEF1dG9zY3JvbGxSZWZlcmVuY2VQb3NpdGlvbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXV0b3Njcm9sbEZvclNlbGVjdGlvbjogeworICAgICAgICBFdmVudEhh
bmRsZXIqIGV2ZW50SGFuZGxlciA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKTsKKyAgICAgICAgaWYg
KCFldmVudEhhbmRsZXItPm1vdXNlUHJlc3NlZCgpKSB7CiAgICAgICAgICAgICBzdG9wQXV0b3Nj
cm9sbFRpbWVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9h
dXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyLT51
cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKTsKKyAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVy
ZXItPmF1dG9zY3JvbGwoZXZlbnRIYW5kbGVyLT5sYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkpOwog
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBOb0F1dG9zY3JvbGw6CiAgICAgICAgIGJy
ZWFrOwogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRv
c2Nyb2xsQ29udHJvbGxlci5oCmluZGV4IGY2NzFmMTVkNDMzNjU3MWFkYTJjZTU1MmYwZDc3YmFh
M2I4ODg5NjguLjQwMDBhMTc1ZDFjNjQwYTQ4OTdkZWQ3YzBkMWYyZTEwNDFkM2IyMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmgKQEAgLTM0LDEyICszNCwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFdmVudEhhbmRsZXI7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEZyYW1lVmlldzsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGVudW0gQXV0b3Nj
cm9sbFR5cGUgewogICAgIE5vQXV0b3Njcm9sbCwKKyAgICBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERy
b3AsCiAgICAgQXV0b3Njcm9sbEZvclNlbGVjdGlvbiwKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElO
RykKICAgICBBdXRvc2Nyb2xsRm9yUGFuLApAQCAtNTYsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24oUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9p
ZCBzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFs
c2UpOwogICAgIHZvaWQgdXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCk7CisgICAgdm9pZCB1cGRh
dGVEcmFnQW5kRHJvcChOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3Np
dGlvbiwgZG91YmxlIGV2ZW50VGltZSk7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAg
dm9pZCBkaWRQYW5TY3JvbGxTdGFydCgpOwogICAgIHZvaWQgZGlkUGFuU2Nyb2xsU3RvcCgpOwpA
QCAtNzQsNiArNzcsOCBAQCBwcml2YXRlOgogICAgIFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVy
PiBtX2F1dG9zY3JvbGxUaW1lcjsKICAgICBSZW5kZXJCb3gqIG1fYXV0b3Njcm9sbFJlbmRlcmVy
OwogICAgIEF1dG9zY3JvbGxUeXBlIG1fYXV0b3Njcm9sbFR5cGU7CisgICAgSW50UG9pbnQgbV9k
cmFnQW5kRHJvcEF1dG9zY3JvbGxSZWZlcmVuY2VQb3NpdGlvbjsKKyAgICBkb3VibGUgbV9kcmFn
QW5kRHJvcEF1dG9zY3JvbGxTdGFydFRpbWU7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAg
ICAgSW50UG9pbnQgbV9wYW5TY3JvbGxTdGFydFBvczsKICAgICBib29sIG1fcGFuU2Nyb2xsQnV0
dG9uUHJlc3NlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDgzOWFlOWZmODJh
NjMzN2VlMGVmOTI3NWQ2ZjIyY2YwMzRiMzE5MmUuLjE5Y2ZkNGE1MmU5NmJjMDAyNzVmYjI3NzVm
MjRhMGU5YWFkYzk1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzc1LDYg
KzM3NSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gcGx1Z0lu
U3RhcnRMYWJlbEltYWdlKFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpMYWJlbFNpemUpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIEZJWE1FOiBQb3J0IHNob3VsZCByZXR1cm4gdHJ1ZSB1
c2luZyBoZXVyaXN0aWMgYmFzZWQgb24gc2Nyb2xsYWJsZS4KKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQXV0b3Njcm9sbEZvckRyYWdBbmREcm9wKFJlbmRlckJveCogc2Nyb2xsYWJsZSkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNocm9tZUNsaWVu
dCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAwZGE4Mzgx
ZGM4YTJjMDlmZDgwMGM4NjIyOTU2ZDczNDY2ZDg3ZGExLi5lYzZkYWIzZDk3NzY0NDE4ODRjODFh
ZGYxNmRlMmQxZTYyM2UxMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0xOTU3LDYgKzE5NTcsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgIGlmIChuZXdU
YXJnZXQgJiYgbmV3VGFyZ2V0LT5pc1RleHROb2RlKCkpCiAgICAgICAgIG5ld1RhcmdldCA9IG5l
d1RhcmdldC0+cGFyZW50Tm9kZSgpOwogCisgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci0+dXBk
YXRlRHJhZ0FuZERyb3AobmV3VGFyZ2V0LmdldCgpLCBldmVudC5wb3NpdGlvbigpLCBldmVudC50
aW1lc3RhbXAoKSk7CisKICAgICBpZiAobV9kcmFnVGFyZ2V0ICE9IG5ld1RhcmdldCkgewogICAg
ICAgICAvLyBGSVhNRTogdGhpcyBvcmRlcmluZyB3YXMgZXhwbGljaXRseSBjaG9zZW4gdG8gbWF0
Y2ggV2luSUUuIEhvd2V2ZXIsCiAgICAgICAgIC8vIGl0IGlzIHNvbWV0aW1lcyBpbmNvcnJlY3Qg
d2hlbiBkcmFnZ2luZyB3aXRoaW4gc3ViZnJhbWVzLCBhcyBzZWVuIHdpdGgKQEAgLTIwNDAsNiAr
MjA0Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpj
bGVhckRyYWdTdGF0ZSgpCiB7CisgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgIG1fZHJh
Z1RhcmdldCA9IDA7CiAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUgPSAwOwogICAgIG1f
c2hvdWxkT25seUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCmluZGV4IDUwNWI5YjMxYmFhYmM1ZTcxZjUyNjgyNzhjMjc3NjU5YTU0
ZTEwYzguLjBlNzQ3MDIzNTMzN2NhNTNjZmRmZjQwNjY3YzNjMmEzODU2OTcyZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC04MSw2ICs4MSwxMSBAQCBzdGF0aWMg
T3ZlcnJpZGVTaXplTWFwKiBnT3ZlcnJpZGVXaWR0aE1hcCA9IDA7CiBzdGF0aWMgT3ZlcnJpZGVT
aXplTWFwKiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwID0gMDsKIHN0
YXRpYyBPdmVycmlkZVNpemVNYXAqIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0
aE1hcCA9IDA7CiAKKworLy8gU2l6ZSBvZiBib3JkZXIgYmVsdCBmb3IgYXV0b3Njcm9sbC4gV2hl
biBtb3VzZSBwb2ludGVyIGluIGJvcmRlciBiZWx0LAorLy8gYXV0b3Njcm9sbCBpcyBzdGFydGVk
Lgorc3RhdGljIGNvbnN0IGludCBhdXRvc2Nyb2xsQmVsdFNpemUgPSAyMDsKKwogYm9vbCBSZW5k
ZXJCb3g6OnNfaGFkT3ZlcmZsb3dDbGlwID0gZmFsc2U7CiAKIFJlbmRlckJveDo6UmVuZGVyQm94
KE5vZGUqIG5vZGUpCkBAIC02OTgsMTAgKzcwMywxMCBAQCBib29sIFJlbmRlckJveDo6dXNlc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdAogICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAm
JiBoYXNMYXllcigpICYmIGxheWVyKCktPnVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiB9CiAK
LXZvaWQgUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyQm94OjphdXRvc2Nyb2xs
KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBpZiAobGF5ZXIoKSkKLSAgICAgICAg
bGF5ZXIoKS0+YXV0b3Njcm9sbCgpOworICAgICAgICBsYXllcigpLT5hdXRvc2Nyb2xsKHBvc2l0
aW9uKTsKIH0KIAogLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiByZW5kZXJlciB0aGF0IGNhbiBh
dXRvc2Nyb2xsLgpAQCAtNzI1LDYgKzczMCwzMyBAQCBib29sIFJlbmRlckJveDo6Y2FuQXV0b3Nj
cm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0gZnJh
bWU7CiB9CiAKKy8vIElmIHNwZWNpZmllZCBwb2ludCBpcyBpbiBib3JkZXIgYmVsdCwgcmV0dXJu
ZWQgb2Zmc2V0IGRlbm90ZXMgZGlyZWN0aW9uIG9mCisvLyBzY3JvbGxpbmcuCitJbnRTaXplIFJl
bmRlckJveDo6Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbihjb25zdCBJbnRQb2ludCYgd2lu
ZG93UG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAgICByZXR1cm4gSW50
U2l6ZSgpOworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZSgpLT52aWV3KCk7Cisg
ICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICBJbnRT
aXplIG9mZnNldDsKKyAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250
ZW50cyh3aW5kb3dQb2ludCk7CisgICAgSW50UmVjdCBib3goYWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSk7CisKKyAgICBpZiAocG9pbnQueCgpIDwgYm94LngoKSArIGF1dG9zY3JvbGxCZWx0U2l6
ZSkKKyAgICAgICAgcG9pbnQubW92ZSgtYXV0b3Njcm9sbEJlbHRTaXplLCAwKTsKKyAgICBlbHNl
IGlmIChwb2ludC54KCkgPiBib3gubWF4WCgpIC0gYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAg
ICBwb2ludC5tb3ZlKGF1dG9zY3JvbGxCZWx0U2l6ZSwgMCk7CisKKyAgICBpZiAocG9pbnQueSgp
IDwgYm94LnkoKSArIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAgICAgcG9pbnQubW92ZSgwLCAt
YXV0b3Njcm9sbEJlbHRTaXplKTsKKyAgICBlbHNlIGlmIChwb2ludC55KCkgPiBib3gubWF4WSgp
IC0gYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAgICBwb2ludC5tb3ZlKDAsIGF1dG9zY3JvbGxC
ZWx0U2l6ZSk7CisgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhwb2ludCkg
LSB3aW5kb3dQb2ludDsKK30KKwogUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xs
YWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIHdoaWxlIChyZW5kZXJlciAmJiAh
KHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQXV0b3Njcm9s
bCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGVlNzM3NjYyNzUy
OTAwZTk4MjQ1ZDA5MmZiZDA3YTcxNGEzZDc2NTQuLmZmZWNjNzczYjZkODJiYTVjNTRiNzJhZDcx
MGVlMGM0NzYyOWZkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQ0
Nyw4ICs0NDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGxvZ2ljYWxTY3JvbGwoU2Ny
b2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIg
PSAxLCBOb2RlKiogc3RvcE5vZGUgPSAwKTsKICAgICBib29sIGNhbkJlU2Nyb2xsZWRBbmRIYXNT
Y3JvbGxhYmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGlj
YWxseVNjcm9sbGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIGJvb2wgY2Fu
QXV0b3Njcm9sbCgpIGNvbnN0OworICAgIEludFNpemUgY2FsY3VsYXRlQXV0b3Njcm9sbERpcmVj
dGlvbihjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0OwogICAgIHN0YXRpYyBSZW5k
ZXJCb3gqIGZpbmRBdXRvc2Nyb2xsYWJsZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcEF1dG9zY3JvbGwoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFuU2Nyb2xsKGNvbnN0
IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCA3MGQ5MDMxYjM2MmMyY2VkM2M3M2MzMWNlNjA4MTdiNzc0MDY2YWViLi43ODUyNDI0OWRiYzFm
MzUyMDhjNGZlODczYzU3ZWI0YWZhNzQ5ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTIyOTcsNyArMjI5Nyw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5
ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0ICZ2aXNpYmxlUmVjdCwgY29uc3Qg
TGF5CiAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoeCwgeSksIHZpc2libGVSZWN0
LnNpemUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5k
ZXJMYXllcjo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMjMw
NywxMSArMjMwNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGwoKQogICAgIGlmICgh
ZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQot
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCk7
Ci0jZW5kaWYKLQotICAgIEludFBvaW50IGN1cnJlbnREb2N1bWVudFBvc2l0aW9uID0gZnJhbWVW
aWV3LT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bGFzdEtub3duTW91
c2VQb3NpdGlvbigpKTsKKyAgICBJbnRQb2ludCBjdXJyZW50RG9jdW1lbnRQb3NpdGlvbiA9IGZy
YW1lVmlldy0+d2luZG93VG9Db250ZW50cyhwb3NpdGlvbik7CiAgICAgc2Nyb2xsUmVjdFRvVmlz
aWJsZShMYXlvdXRSZWN0KGN1cnJlbnREb2N1bWVudFBvc2l0aW9uLCBMYXlvdXRTaXplKDEsIDEp
KSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduVG9FZGdlSWZOZWVkZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCmluZGV4IGI2YmM2MDgxN2M2ZjNhMzcyNTZlZjZiZWIyNjNkY2I0MjJiNDZkOTIuLmFk
YjMxOTdiYjIwYzY2ZDk2MmUwZjg2MjdmYmVhYTNlYjRkNTM5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zNzMsNyArMzczLDcgQEAgcHVibGljOgogICAgIHZv
aWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CiAKICAgICBib29sIHNjcm9sbChTY3Jv
bGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSk7Ci0g
ICAgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50
Jik7CiAKICAgICB2b2lkIHJlc2l6ZShjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBM
YXlvdXRTaXplJik7CiAgICAgYm9vbCBpblJlc2l6ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lu
UmVzaXplTW9kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CmluZGV4IDMxYTFlZDhhYjQyNWM1Y2E5MmM3MDQ0ZjY4OTdjYmE0MWFiMWY0NDQuLjUxZjhlNDY0
Y2FmNTBlM2YzMGU2YmY4NjZjYTZiNjZmYWFmMmExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBpbnQgUmVuZGVyTGlz
dEJveDo6c2Nyb2xsVG93YXJkKGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbikKICAgICByZXR1
cm4gbGlzdEluZGV4QXRPZmZzZXQocG9zaXRpb25PZmZzZXQpOwogfQogCi12b2lkIFJlbmRlckxp
c3RCb3g6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKGNvbnN0
IEludFBvaW50JikKIHsKICAgICBJbnRQb2ludCBwb3MgPSBmcmFtZSgpLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHMoZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmxhc3RLbm93bk1vdXNlUG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGVm
MGQ2MGE2YTZlOTE3YjM2YmRlNGUzODRjYmQyNjU2ZWQ0OWJhZjkuLjM0OTI5M2IxMjhmOWRlYzUw
OTRiM2YzMWQ3ZTBlYzdlNjE1ZTI4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
CiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wQXV0b3Njcm9sbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhblNjcm9sbCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggYzdmMDc1YTRiOGY5ODA5
MGYwMWVlOWEyOThjZjM1ZGY2ZmRlMjNjMC4uN2VhMzA4MTYwNWQ4NGNjN2Q4MDQ5M2IxMWUzMzMy
OTFiYWY4Yjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTM4MSwxMSArMzgxLDExIEBAIGJvb2wg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0U2hvdWxkQmVUcnVuY2F0ZWQoKSBjb25z
dAogICAgICAgICAmJiBzdHlsZSgpLT50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3dFbGxp
cHNpczsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwo
KQordm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwoY29uc3QgSW50
UG9pbnQmIHBvc2l0aW9uKQogewogICAgIFJlbmRlckxheWVyKiBsYXllciA9IGlubmVyVGV4dEVs
ZW1lbnQoKS0+cmVuZGVyQm94KCktPmxheWVyKCk7CiAgICAgaWYgKGxheWVyKQotICAgICAgICBs
YXllci0+YXV0b3Njcm9sbCgpOworICAgICAgICBsYXllci0+YXV0b3Njcm9sbChwb3NpdGlvbik7
CiB9CiAKIGludCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNjcm9sbFdpZHRoKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaAppbmRleCBhZjI3YmY3NThiNDQxNGNjMTBiZTIwNzRiNGUwYTJmNmEzNDVm
ZDg3Li5kN2RmZmUzZmVmYjdlMmNlNGFjYTllYTg0NThiMDY5NjdhY2M4YzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IGF1dG9zY3JvbGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2lu
dCYpOwogCiAgICAgLy8gU3ViY2xhc3NlZCB0byBmb3J3YXJkIHRvIG91ciBpbm5lciBkaXYuCiAg
ICAgdmlydHVhbCBpbnQgc2Nyb2xsTGVmdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBmNGM4ZjUyMDg1NmFhOTNjYmI3
MTNkMjUxMjBjYzFlYTVkZjU5NTMxLi4wYjIzY2YxZjc5NDU1MzQ5OWRlNDQ1NmEyODY2ZTI3MzY1
MDA3ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcApAQCAtMTExNyw2ICsxMTE3LDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6bnVt
V2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBudW1iZXJPZldoZWVsSGFuZGxlCiAg
ICAgbV93ZWJWaWV3LT5udW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQobnVtYmVyT2ZX
aGVlbEhhbmRsZXJzKTsKIH0KIAorYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzaG91bGRBdXRvc2Ny
b2xsRm9yRHJhZ0FuZERyb3AoV2ViQ29yZTo6UmVuZGVyQm94KikgY29uc3QKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgQ2hyb21lQ2xp
ZW50SW1wbDo6bmVlZFRvdWNoRXZlbnRzKGJvb2wgbmVlZHNUb3VjaEV2ZW50cykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCBhNjk3ZDRj
NjU4MDAzNjZlNzhlNzhiNzg3ZTFkNmY1NTBmY2EzMTllLi5hY2I0NDFhOWY3M2JjZTFiMjk5N2Vj
NDdkNmY0NmMxN2ZmOWExMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5oCkBAIC0yMjEsNiArMjIxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1
bnNpZ25lZCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b3Njcm9sbEZvckRyYWdBbmRE
cm9wKFdlYkNvcmU6OlJlbmRlckJveCogc2Nyb2xsYWJsZSkgY29uc3QgT1ZFUlJJREU7CisKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UG9pbnRlckxv
Y2soKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBkYmI4YzgxMjRlZjQ4ZTkz
MGNhY2FiN2Q0MjkxOGRkZWI5Zjc5Nzk3Li5iMzY2MWNhZmUxZTYyYzI5MTllZGVlZTA3ZmRkZjcx
ODY5M2E4ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRl
ICJEcmFnQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCi0jaW5jbHVkZSAiRHJh
Z1Njcm9sbFRpbWVyLmgiCiAjaW5jbHVkZSAiRHJhZ1Nlc3Npb24uaCIKICNpbmNsdWRlICJFZGl0
b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTQxNSw3ICs0MTQsNiBAQCBXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9hdXRv
ZmlsbFBvcHVwKDApCiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAgICAgLCBtX3RhYnNU
b0xpbmtzKGZhbHNlKQotICAgICwgbV9kcmFnU2Nyb2xsVGltZXIoYWRvcHRQdHIobmV3IERyYWdT
Y3JvbGxUaW1lcikpCiAgICAgLCBtX2lzQ2FuY2VsaW5nRnVsbFNjcmVlbihmYWxzZSkKICAgICAs
IG1fYmVuY2htYXJrU3VwcG9ydCh0aGlzKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKQEAgLTMyNDMsNyArMzI0MSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRl
ZEF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDApOwogICAgIG1fcGFnZS0+
bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChwbWUsCiAgICAg
ICAgIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG9wZXJhdGlvbikpOwotICAgIG1fZHJhZ1Nj
cm9sbFRpbWVyLT5zdG9wKCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VNb3Zl
ZFRvKApAQCAtMzI1MSw3ICszMjQ4LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZU1v
dmVkVG8oCiAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAogICAgIFdlYkRyYWdPcGVy
YXRpb24gb3BlcmF0aW9uKQogewotICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT50cmlnZ2VyU2Nyb2xs
KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGNsaWVudFBvaW50KTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgpCkBAIC0zMzM3LDggKzMzMzMs
NiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJvcChjb25zdCBXZWJQb2ludCYgY2xp
ZW50UG9pbnQsCiAKICAgICBtX2RyYWdPcGVyYXRpb24gPSBXZWJEcmFnT3BlcmF0aW9uTm9uZTsK
ICAgICBtX2N1cnJlbnREcmFnRGF0YSA9IDA7Ci0KLSAgICBtX2RyYWdTY3JvbGxUaW1lci0+c3Rv
cCgpOwogfQogCiBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0Vu
dGVyT3JPdmVyKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwgY29uc3QgV2ViUG9pbnQmIHNj
cmVlblBvaW50LCBEcmFnQWN0aW9uIGRyYWdBY3Rpb24sIGludCBrZXlNb2RpZmllcnMpCkBAIC0z
MzY2LDExICszMzYwLDYgQEAgV2ViRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ1Rhcmdl
dERyYWdFbnRlck9yT3Zlcihjb25zdCBXZWJQb2ludCYgY2xpZW50UG8KIAogICAgICBtX2RyYWdP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9uPihkcm9wRWZmZWN0KTsKIAot
ICAgIGlmIChkcmFnQWN0aW9uID09IERyYWdPdmVyKQotICAgICAgICBtX2RyYWdTY3JvbGxUaW1l
ci0+dHJpZ2dlclNjcm9sbChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBjbGllbnRQb2lu
dCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RyYWdTY3JvbGxUaW1lci0+c3RvcCgpOwotCiAgICAg
cmV0dXJuIG1fZHJhZ09wZXJhdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKaW5kZXggY2VhNTc0OGM1YTg4N2ExZjU2OGIzZWQ1ZWQxOGFhMjcwMDY5NTVm
MS4uZWFmMWE0ODgzZTZhNTVjOTUzN2RiMzNiZjhiZGQ2Y2EyOGE4N2I0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC05MSw3ICs5MSw2IEBAIGNsYXNzIEJh
dHRlcnlDbGllbnRJbXBsOwogY2xhc3MgQ29udGV4dEZlYXR1cmVzQ2xpZW50SW1wbDsKIGNsYXNz
IENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJv
eHk7Ci1jbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFByb3h5
OwogY2xhc3MgTGlua0hpZ2hsaWdodDsKIGNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsK
QEAgLTgxNyw3ICs4MTYsNiBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6
U3RyaW5nLCBXVEY6OlN0cmluZz4gU2V0dGluZ3NNYXA7CiAgICAgT3duUHRyPFNldHRpbmdzTWFw
PiBtX2luc3BlY3RvclNldHRpbmdzTWFwOwotICAgIE93blB0cjxEcmFnU2Nyb2xsVGltZXI+IG1f
ZHJhZ1Njcm9sbFRpbWVyOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICAvLyBUaGUgcHJvdmlkZXIgb2YgZGVza3RvcCBub3Rp
ZmljYXRpb25zOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGRiZDkwZTBjMzE0YzBmODQ0ZWRkNTA0NTNhMDY5MTcxMmZkOTdmMWEuLmU3YjI1MTNl
ZjhhNGNkMGZiMDkyYzNjOGFmZmU4NjIzYzczOTk3NDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wMS0xNCAg
WW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIERyYWdnaW5n
IG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9sbGJhcnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVu
dCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNhbmNlbGluZyBkcmFnLWFu
ZC1kcm9wIGJ5IGVzY2FwZSBrZXkgZm9yIHRlc3RpbmcKKyAgICAgICAgYmVoYXZpb3IgYWZ0ZXIg
Y2FuY2VsbGF0aW9uIGRyYWctYW5kLWRyb3AuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChXZWJUZXN0
UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpkb01vdXNlVXAp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmZpbmlzaERyYWdBbmREcm9w
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5o
OgorICAgICAgICAoRXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmg6IEFkZGVkIFZLRVlfRVNDQVBFLgor
CiAyMDEzLTAxLTE0ICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIEVuYWJsZSBgdXBkYXRlLXdlYmtpdCAtLWNocm9taXVtIC0tbmluamFgIG9u
IHdpbmRvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAppbmRleCA3NzNhNTZiMTc5NjJkNDNhZDU1
Y2I3NThjYTgxOGE1YzJkN2NlNGY0Li5jOTlhZjlhMzI5YjFhYzExMzFjYzExZmRmY2M0MTMxMWE3
OTY0OGJjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCkBAIC00NjgsMTAgKzQ2OCwxNyBAQCB2
b2lkIEV2ZW50U2VuZGVyOjpkb01vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYgZSkKICAgICAv
LyBJZiB3ZSdyZSBpbiBhIGRyYWcgb3BlcmF0aW9uLCBjb21wbGV0ZSBpdC4KICAgICBpZiAoY3Vy
cmVudERyYWdEYXRhLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CisKICAgICBXZWJQb2ludCBj
bGllbnRQb2ludChlLngsIGUueSk7CiAgICAgV2ViUG9pbnQgc2NyZWVuUG9pbnQoZS5nbG9iYWxY
LCBlLmdsb2JhbFkpOworICAgIGZpbmlzaERyYWdBbmREcm9wKGUsIHdlYnZpZXcoKS0+ZHJhZ1Rh
cmdldERyYWdPdmVyKGNsaWVudFBvaW50LCBzY3JlZW5Qb2ludCwgY3VycmVudERyYWdFZmZlY3Rz
QWxsb3dlZCwgMCkpOworfQogCi0gICAgY3VycmVudERyYWdFZmZlY3QgPSB3ZWJ2aWV3KCktPmRy
YWdUYXJnZXREcmFnT3ZlcihjbGllbnRQb2ludCwgc2NyZWVuUG9pbnQsIGN1cnJlbnREcmFnRWZm
ZWN0c0FsbG93ZWQsIDApOwordm9pZCBFdmVudFNlbmRlcjo6ZmluaXNoRHJhZ0FuZERyb3AoY29u
c3QgV2ViTW91c2VFdmVudCYgZSwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uIGRyYWdFZmZlY3Qp
Cit7CisgICAgV2ViUG9pbnQgY2xpZW50UG9pbnQoZS54LCBlLnkpOworICAgIFdlYlBvaW50IHNj
cmVlblBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsKKyAgICBjdXJyZW50RHJhZ0VmZmVjdCA9
IGRyYWdFZmZlY3Q7CiAgICAgaWYgKGN1cnJlbnREcmFnRWZmZWN0KQogICAgICAgICB3ZWJ2aWV3
KCktPmRyYWdUYXJnZXREcm9wKGNsaWVudFBvaW50LCBzY3JlZW5Qb2ludCwgMCk7CiAgICAgZWxz
ZQpAQCAtNjQ4LDYgKzY1NSwxMiBAQCB2b2lkIEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAKICAgICB3ZWJ2
aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnREb3duKTsKIAorICAgIGlmIChjb2RlID09IFZL
RVlfRVNDQVBFICYmICFjdXJyZW50RHJhZ0RhdGEuaXNOdWxsKCkpIHsKKyAgICAgICAgV2ViTW91
c2VFdmVudCBldmVudDsKKyAgICAgICAgaW5pdE1vdXNlRXZlbnQoV2ViSW5wdXRFdmVudDo6TW91
c2VEb3duLCBwcmVzc2VkQnV0dG9uLCBsYXN0TW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVudEV2
ZW50VGltZVNlYyhtX2RlbGVnYXRlKSk7CisgICAgICAgIGZpbmlzaERyYWdBbmREcm9wKGV2ZW50
LCBXZWJLaXQ6OldlYkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICB9CisKICAgICBtX2RlbGVnYXRl
LT5jbGVhckVkaXRDb21tYW5kKCk7CiAKICAgICBpZiAoZ2VuZXJhdGVDaGFyKSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNl
bmRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZl
bnRTZW5kZXIuaAppbmRleCBiMWRhNjg0ODc2MTEwOGI0YTZjN2E2YmYzMTg2OTZjNTkxNWZiYjJj
Li5jMmIzY2Q5ZmVjMjc2ZTE4ZDYzOThjMGYxOTdiMzRkNTE1OTA5OWVkIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50
U2VuZGVyLmgKQEAgLTE1OCw2ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIC8vIG1vZGlmaWVyIHRv
IGJlIHBhc3NlZCBpbnRvIHRoZSBnZW5lcmF0ZWQgZXZlbnQuCiAgICAgYm9vbCBuZWVkc1NoaWZ0
TW9kaWZpZXIoaW50KTsKIAorICAgIHZvaWQgZmluaXNoRHJhZ0FuZERyb3AoY29uc3QgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50JiwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uKTsKICAgICB2b2lkIHVw
ZGF0ZUNsaWNrQ291bnRGb3JCdXR0b24oV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpCdXR0b24pOwog
CiAgICAgLy8gQ29tcG9zZSBhIHRvdWNoIGV2ZW50IGZyb20gdGhlIGN1cnJlbnQgdG91Y2ggcG9p
bnRzIGFuZCBzZW5kIGl0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmgKaW5kZXggODc0NjlmYWM0
YTVjMTE1MDJjOTM1ZTFkZDI4ZGZlNzQyYjhiNmFlMy4uMDIzZTU5NWZhZmNkMWU5YmQ1NTc0NmM2
MmU1ODE2Y2MxN2M2YTY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5oCkBAIC0zNiw2ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIC8vIFRoZSBrZXljb2RlcyBtYXRjaCB0
aGUgdmFsdWVzIG9mIHRoZSB2aXJ0dWFsIGtleWNvZGVzIGZvdW5kIGhlcmUgaHR0cDovL21zZG4u
bWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9kZDM3NTczMSh2PXZz
Ljg1KS5hc3B4CiBlbnVtIHsKICAgICBWS0VZX1JFVFVSTiAgID0gMHgwRCwKKyAgICBWS0VZX0VT
Q0FQRSAgID0gMHgxQiwKICAgICBWS0VZX1BSSU9SICAgID0gMHgyMSwKICAgICBWS0VZX05FWFQg
ICAgID0gMHgyMiwKICAgICBWS0VZX0VORCAgICAgID0gMHgyMywKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiY2MxYzI5MjE5
ZGFhY2I1MTc1MDcyZTdhNTQ2ZmI5ODdiNDYxYmIxLi5kMmFkZDlkMjhlODk1OGE0N2MxNmM3MmM1
YmNhMjc2NGFlNzdlYmM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEtMTQgIFlvc2hp
ZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBEcmFnZ2luZyBvdmVy
IGFuIGVsZW1lbnQgd2l0aCBzY3JvbGxiYXJzIHNob3VsZCBzY3JvbGwgdGhlIGVsZW1lbnQgd2hl
biBkcmFnZ2luZyBuZWFyIGVkZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgdGVzdCBmb3IgYXV0b3Njcm9sbCBkdXJp
bmcgZHJhZy1hbmQtZHJvcC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3At
YXV0b3Njcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2Ry
YWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0xMSAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFB5dGhvbiBpbXBsZW1lbnRhdGlv
biByZXBvcnRzICJNZW1vcnlFcnJvciIgaW5zdGVhZCBvZiBkb2luZyB0aGluZ3MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3Jv
bGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyZTYxNDgyOWFjMzdlYjNkMmI2MTc4ODBjZWYw
NTkzYmNlYmQ2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9k
cmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorRm9y
IG1hbnVhbCB0ZXN0aW5nLCBkcmFnIGFuZCBkcm9wICJEcm9wIE1lIiB0byAiU2Nyb2xsYWJsZSIg
YXJlYS4KK0NoZWNrIGF1dG9zY3JvbGwgYnkgZHJhZy1hbmQtZHJvcAorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzY3JvbGxhYmxlLnNjcm9sbFRvcCA+IDAKK1BBU1MgYXV0
b3Njcm9sbCBzdG9wcGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Ry
YWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJh
Zy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFmZTdlMzBjMTQzMTJiYzUw
N2VlZjVjZDUwMTdjN2FlZWE4Mjk0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sCkBAIC0wLDAgKzEsMTI3IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyNkcmFnZ2FibGUgewor
ICBwYWRkaW5nOiA1cHQ7CisgIGJvcmRlcjogM3B4IHNvbGlkICMwMGNjMDA7CisgIGJhY2tncm91
bmQ6ICMwMGNjY2M7CisgIHdpZHRoOiA4MHB4OworICBjdXJzb3I6IGhhbmQ7Cit9CisKKyNzY3Jv
bGxhYmxlIHsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIG92ZXJmbG93OiBhdXRvOworICAgIGJv
cmRlcjogc29saWQgM3B4ICNjYzAwMDA7CisgICAgZm9udC1zaXplOiA4MHB4OworfQorPC9zdHls
ZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiAkKGlkKSB7IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChpZCk7IH0KKworZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgJCgnY29udGFpbmVyJykuaW5uZXJIVE1MID0gJyc7CisgICAgd2luZG93
LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0SXQoKSB7CisgICAg
dmFyIGRyYWdnYWJsZSA9ICQoJ2RyYWdnYWJsZScpOworICAgIHZhciBzY3JvbGxhYmxlID0gJCgn
c2Nyb2xsYWJsZScpOworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisKKyAgICAvLyBHcmFi
IGRyYWdnYWJsZQorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGRyYWdnYWJsZS5vZmZzZXRM
ZWZ0ICsgNSwgZHJhZ2dhYmxlLm9mZnNldFRvcCArIDUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworCisgICAgLy8gTW92ZSBtb3VzZSB0byBhdXRvc2Nyb2xsIGJvcmRlciBiZWx0Lgor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHNjcm9sbGFibGUub2Zmc2V0TGVmdCArIDUsIHNj
cm9sbGFibGUub2Zmc2V0VG9wICsgc2Nyb2xsYWJsZS5vZmZzZXRIZWlnaHQgLSAxMCk7CisKKyAg
ICB2YXIgcmV0cnlDb3VudCA9IDA7CisgICAgdmFyIGxhc3RTY3JvbGxUb3AgPSAwOworCisgICAg
ZnVuY3Rpb24gY2hlY2tTY3JvbGxlZCgpCisgICAgeworICAgICAgICBpZiAoc2Nyb2xsYWJsZS5z
Y3JvbGxUb3AgPiAwKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCdzY3JvbGxhYmxlLnNjcm9s
bFRvcCA+IDAnKTsKKyAgICAgICAgICAgIGxhc3RTY3JvbGxUb3AgPSBzY3JvbGxhYmxlLnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIC8vIENhbmNlbCBkcmFnIGFuZCBkcm9wIGJ5IEVTQyBrZXkuCisg
ICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdceDFCJyk7CisgICAgICAgICAgICByZXRy
eUNvdW50ID0gMDsKKyAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrU3RvcHBlZCwg
NTApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgKytyZXRyeUNv
dW50OworICAgICAgICBpZiAocmV0cnlDb3VudCA+IDEwKSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdObyBhdXRvc2Nyb2xsJyk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBBdXRvc2Nyb2xsIGlzIG9jY3Vy
cmVkIGV2ZXkgMC4wNSBzZWMuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrU2Nyb2xs
ZWQsIDUwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1N0b3BwZWQoKQorICAgIHsKKyAg
ICAgICAgaWYgKGxhc3RTY3JvbGxUb3AgPT0gc2Nyb2xsYWJsZS5zY3JvbGxUb3ApIHsKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ2F1dG9zY3JvbGwgc3RvcHBlZCcpOworICAgICAgICAgICAgZmlu
aXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgKyty
ZXRyeUNvdW50OworICAgICAgICBpZiAocmV0cnlDb3VudCA+IDEwKSB7CisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCdzdGlsbCBhdXRvc2Nyb2xsJyk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsYXN0U2Nyb2xsVG9w
ID0gc2Nyb2xsYWJsZS5zY3JvbGxUb3A7CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNr
U3RvcHBlZCwgNTApOworICAgIH0KKworICAgIGNoZWNrU2Nyb2xsZWQoKTsKK30KKworZnVuY3Rp
b24gc2V0VXBUZXN0KCkKK3sKKyAgICB2YXIgc2Nyb2xsYWJsZSA9ICQoJ3Njcm9sbGFibGUnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICB2YXIgbGluZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgbGluZS5pbm5lckhUTUwgPSAibGlu
ZSAiICsgaTsKKyAgICAgIHNjcm9sbGFibGUuYXBwZW5kQ2hpbGQobGluZSk7CisgICAgfQorCisg
ICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ1BsZWFz
ZSBydW4gd2l0aGluIER1bXBSZW5kZXJUcmVlJyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgd2luZG93LnNldFRpbWVvdXQo
dGVzdEl0LCAwKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitGb3IgbWFudWFsIHRl
c3RpbmcsIGRyYWcgYW5kIGRyb3AgIkRyb3AgTWUiIHRvICJTY3JvbGxhYmxlIiBhcmVhLgorPGRp
diBpZD0iY29udGFpbmVyIj4KKzxkaXYgaWQ9ImRyYWdnYWJsZSIgZHJhZ2dhYmxlPSJ0cnVlIj5E
cm9wIE1lPC9kaXY+CitTY3JvbGxhYmxlCis8ZGl2IGlkPSJzY3JvbGxhYmxlIj4KKzwvZGl2Pgor
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdD
aGVjayBhdXRvc2Nyb2xsIGJ5IGRyYWctYW5kLWRyb3AnKTsKK3NldFVwVGVzdCgpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182718</attachid>
            <date>2013-01-15 01:15:06 -0800</date>
            <delta_ts>2013-01-16 20:42:56 -0800</delta_ts>
            <desc>Patch-3.0.3</desc>
            <filename>bug-39725-20130115181206.patch</filename>
            <type>text/plain</type>
            <size>32569</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg0NzNmY2IyOWE5NGIz
MzRkMmY2OTVmNGM1NDA1ZTlmMDBjMDQwNy4uYTI0YWY1YjVmODZmYjYyYjc2ZjA3ZjlkZDdmMGRh
YWUxYTY3ODQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTE0ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYXV0byBzY3JvbGxpbmcgZnVuY3Rp
b25hbGl0eSBkdXJpbmcgZHJhZy1hbmQtZHJvcAorICAgICAgICB3aGVuIGRyb3Agc291cmNlIGlz
IG5lYXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgV2hlbiBkcm9wIHNv
dXJjZSBpcyBpbnNpZGUgMjBweCBvZiBzY3JvbGxhYmxlIGVsZW1lbnQgbW9yZSB0aGFuIDIwMG1z
LAorICAgICAgICBzY3JvbGxhYmxlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBzY3JvbGxlZCBl
dmVyeSA1MG1zIHRvd2FyZCBkcm9wCisgICAgICAgIHNvdXJjZSBwb3NpdGlvbiwgZS5nLiB2ZXJ0
aWNhbGx5IHNjcm9sbCB1cCB3aGVuIGRyb3Agc291cmNlIGlzIGluIHRvcAorICAgICAgICBlZGdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcik6IENo
YW5nZWQgdG8gaW5pdGlhbGl6ZSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6
IEFkZGVkIGZvciBzdGFydC9zdG9wIGF1dG9zY3JvbGwgZHVyaW5nIGRyYWctYW5kLWRyb3AuCisg
ICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQpOiBDaGFuZ2VkIHRvIGFkZCBhdXRvc2Nyb2xsIGZvciBkcmFnLWFuZC1kcm9wLCBhbmQgdG8g
cGFzcyBsYXN0IGtub3cgcG9zaXRpb24gdG8gUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkuCisgICAg
ICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoQXV0b3Njcm9sbENv
bnRyb2xsZXIpOiBDaGFuZ2VkIHRvIGFkZCB1cGRhdGVEcmFnQW5kRHJvcCgpIGFuZCBtX2RyYWdB
bmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0aW9uIGFuZCBtX2RyYWdBbmREcm9wQXV0b3Nj
cm9sbFN0YXJ0VGltZS4KKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50KTogQ2hhbmdlZCB0byBhZGQgbmV3IGZ1bmN0aW9uIHNob3Vs
ZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcCgpLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ap
OiBDaGFuZ2VkIHRvIGNhbGwgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZURyYWdBbmREcm9w
KCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyRHJhZ1N0YXRlKTogQ2hh
bmdlZCB0byBjYWxsIHN0b3BBdXRvc2Nyb2xsVGltZXIoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXV0b3Njcm9sbCk6
IENoYW5nZWQgZm9yIG5ldyBwYXJhbWV0ZXIgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24pOiBBZGRlZCBmb3IgYXV0b3Nj
cm9sbC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6ICBDaGFuZ2VkIGZvciBuZXcgcGFyYW1ldGVy
IHBvc2l0aW9uIGFuZCBtb3ZlIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpIHRvIEF1dG9z
Y3JvbGxDb250cm9sbGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAg
ICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwpOiAgQ2hhbmdl
ZCBmb3IgbmV3IHBhcmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5oOgorICAgICAgICAoUmVuZGVyTGlzdEJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwpOiAgQ2hhbmdlZCBmb3IgbmV3IHBh
cmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmg6CisgICAgICAgIChSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorCiAy
MDEzLTAxLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVG
TCBidWlsZCBmaXggYWZ0ZXIgcjEzOTY4MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MDBhZTEzYjNmMDc5MjU0NTYwZmNhYjc0NDAwM2QwMmFmMDM2OWFlMS4uMTUwZDc0ZTcwMDNkZThj
NzJmZDRkMmJlZTZlMmUxMjQ5MGE5YWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMSBAQAorMjAxMy0wMS0xNCAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIERyYWdnaW5nIG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9sbGJh
cnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVudCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBy
ZW1vdmVzIERyYWdTY3JvbGxUaW1lciB1c2VkIGZvciBhdXRvbWF0aWMgc2Nyb2xsaW5nIG9mIG1h
aW4KKyAgICAgICAgZnJhbWUgZHJhZy1hbmQtZHJvcCB3aGljaCBpcyBub3cgaW1wbGVtZW50ZWQg
aW4gRXZlbnRIYW5kbGVyLgorCisgICAgICAgIEFub3RoZXIgcGF0Y2ggd2lsbCByZW1vdmUgRHJh
Z1Njcm9sbFRpbWVyLntjcHAsaH0gYW5kIHVwZGF0ZSBHWVAgZmlsZXMgdG8KKyAgICAgICAgbWFr
ZSBwYXRjaCBzaXplIHNtYWxsLgorCisgICAgICAgIE5vIHRlc3RzLiBFeGlzdGluZyB0ZXN0IGNv
dmVycyB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6c2hvdWxkQXV0b3Njcm9sbEZvckRy
YWdBbmREcm9wKTogQWRkZWQuCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAg
ICAgICAgKENocm9tZUNsaWVudEltcGwpOiBDaGFuZ2VkIHRvIGFkZCBzaG91bGRBdXRvc2Nyb2xs
Rm9yRHJhZ0FuZERyb3AoKS4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBDaGFuZ2VkIHRvIHJlbW92ZSBt
X2RyYWdTY3JvbGxUaW1lci4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdTb3Vy
Y2VFbmRlZEF0KTogZGl0dG8KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdTb3Vy
Y2VNb3ZlZFRvKTogZGl0dG8KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdUYXJn
ZXREcm9wKTogZGl0dG8KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdUYXJnZXRE
cmFnRW50ZXJPck92ZXIpOiBkaXR0bworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAg
ICAgICAoV2ViS2l0KTogQ2hhZ25lZCB0byByZW1vdmUgRHJhZ1Njcm9sbFRpbWVyLgorCiAyMDEz
LTAxLTE0ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJ
bmRleGVkREI6IFJlbW92ZSBJREJPYmplY3RTdG9yZS9JbmRleEJhY2tlbmRJbXBsIGFuZCBzdXBw
b3J0IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAppbmRleCA0MzhlOTlkMzExYjdhYmE1MTY5NGZkNGY4ZWVkODZjZTVkMDAyNWJlLi4wZTU0
NWM4NGYzYzlkZmE3MmViNmU2NDkwNzZkMjdmZWJlMzEwYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1dG9zY3JvbGxDb250cm9sbGVyLmgiCiAKKyNpbmNs
dWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpA
QCAtMzUsOSArMzcsMTMgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIERlbGF5IHRpbWUgaW4gc2Vjb25kIGZvciBz
dGFydCBhdXRvc2Nyb2xsIGlmIHBvaW50ZXIgaXMgaW4gYm9yZGVyIGVkZ2Ugb2Ygc2Nyb2xsYWJs
ZSBlbGVtZW50Lgorc3RhdGljIGRvdWJsZSBhdXRvc2Nyb2xsRGVsYXkgPSAwLjI7CisKIC8vIFdo
ZW4gdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0
aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCiBzdGF0aWMgY29uc3QgZG91
YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CiAKQEAgLTUzLDYgKzU5LDcgQEAgQXV0b3Nj
cm9sbENvbnRyb2xsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyKCkKICAgICA6IG1fYXV0b3Njcm9s
bFRpbWVyKHRoaXMsICZBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQp
CiAgICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQogICAgICwgbV9hdXRvc2Nyb2xsVHlwZShO
b0F1dG9zY3JvbGwpCisgICAgLCBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZSgwKQog
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgICwgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2Vk
KGZhbHNlKQogICAgICwgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQpA
QCAtMTQ0LDYgKzE1MSw1MCBAQCB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRv
c2Nyb2xsUmVuZGVyZXIoKQogICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXIgJiYg
cmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOwogfQogCit2b2lk
IEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChOb2RlKiBkcm9wVGFyZ2V0
Tm9kZSwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zaXRpb24sIGRvdWJsZSBldmVudFRpbWUpCit7
CisgICAgaWYgKCFkcm9wVGFyZ2V0Tm9kZSkgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZW5kZXJCb3gqIHNjcm9sbGFibGUg
PSBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZShkcm9wVGFyZ2V0Tm9kZS0+cmVuZGVyZXIo
KSk7CisgICAgaWYgKCFzY3JvbGxhYmxlKSB7CisgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEZyYW1lKiBmcmFtZSA9IHNjcm9sbGFi
bGUtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRp
bWVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c2hv
dWxkQXV0b3Njcm9sbEZvckRyYWdBbmREcm9wKHNjcm9sbGFibGUpKSB7CisgICAgICAgIHN0b3BB
dXRvc2Nyb2xsVGltZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEludFNpemUg
b2Zmc2V0ID0gc2Nyb2xsYWJsZS0+Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbihldmVudFBv
c2l0aW9uKTsKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpKSB7CisgICAgICAgIHN0b3BBdXRvc2Ny
b2xsVGltZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZHJhZ0FuZERyb3BB
dXRvc2Nyb2xsUmVmZXJlbmNlUG9zaXRpb24gPSBldmVudFBvc2l0aW9uICsgb2Zmc2V0OworCisg
ICAgaWYgKG1fYXV0b3Njcm9sbFR5cGUgPT0gTm9BdXRvc2Nyb2xsKSB7CisgICAgICAgIG1fYXV0
b3Njcm9sbFR5cGUgPSBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3A7CisgICAgICAgIG1fYXV0b3Nj
cm9sbFJlbmRlcmVyID0gc2Nyb2xsYWJsZTsKKyAgICAgICAgbV9kcmFnQW5kRHJvcEF1dG9zY3Jv
bGxTdGFydFRpbWUgPSBldmVudFRpbWU7CisgICAgICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7
CisgICAgfSBlbHNlIGlmIChtX2F1dG9zY3JvbGxSZW5kZXJlciAhPSBzY3JvbGxhYmxlKSB7Cisg
ICAgICAgIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID0gZXZlbnRUaW1lOworICAg
ICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgfQorfQorCiAjaWYg
RU5BQkxFKFBBTl9TQ1JPTExJTkcpCiB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpkaWRQYW5T
Y3JvbGxTdGFydCgpCiB7CkBAIC0yMDAsMTMgKzI1MSwyMCBAQCB2b2lkIEF1dG9zY3JvbGxDb250
cm9sbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4q
KQogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmZyYW1lKCk7CiAg
ICAgc3dpdGNoIChtX2F1dG9zY3JvbGxUeXBlKSB7Ci0gICAgY2FzZSBBdXRvc2Nyb2xsRm9yU2Vs
ZWN0aW9uOgotICAgICAgICBpZiAoIWZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VQcmVzc2Vk
KCkpIHsKKyAgICBjYXNlIEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcDoKKyAgICAgICAgaWYgKFdU
Rjo6Y3VycmVudFRpbWUoKSAtIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID4gYXV0
b3Njcm9sbERlbGF5KQorICAgICAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3Jv
bGwobV9kcmFnQW5kRHJvcEF1dG9zY3JvbGxSZWZlcmVuY2VQb3NpdGlvbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXV0b3Njcm9sbEZvclNlbGVjdGlvbjogeworICAgICAgICBFdmVudEhh
bmRsZXIqIGV2ZW50SGFuZGxlciA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKTsKKyAgICAgICAgaWYg
KCFldmVudEhhbmRsZXItPm1vdXNlUHJlc3NlZCgpKSB7CiAgICAgICAgICAgICBzdG9wQXV0b3Nj
cm9sbFRpbWVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9h
dXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyLT51
cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKTsKKyAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVy
ZXItPmF1dG9zY3JvbGwoZXZlbnRIYW5kbGVyLT5sYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkpOwog
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBOb0F1dG9zY3JvbGw6CiAgICAgICAgIGJy
ZWFrOwogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRv
c2Nyb2xsQ29udHJvbGxlci5oCmluZGV4IGY2NzFmMTVkNDMzNjU3MWFkYTJjZTU1MmYwZDc3YmFh
M2I4ODg5NjguLjQwMDBhMTc1ZDFjNjQwYTQ4OTdkZWQ3YzBkMWYyZTEwNDFkM2IyMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmgKQEAgLTM0LDEyICszNCwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFdmVudEhhbmRsZXI7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEZyYW1lVmlldzsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGVudW0gQXV0b3Nj
cm9sbFR5cGUgewogICAgIE5vQXV0b3Njcm9sbCwKKyAgICBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERy
b3AsCiAgICAgQXV0b3Njcm9sbEZvclNlbGVjdGlvbiwKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElO
RykKICAgICBBdXRvc2Nyb2xsRm9yUGFuLApAQCAtNTYsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24oUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9p
ZCBzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFs
c2UpOwogICAgIHZvaWQgdXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCk7CisgICAgdm9pZCB1cGRh
dGVEcmFnQW5kRHJvcChOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3Np
dGlvbiwgZG91YmxlIGV2ZW50VGltZSk7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAg
dm9pZCBkaWRQYW5TY3JvbGxTdGFydCgpOwogICAgIHZvaWQgZGlkUGFuU2Nyb2xsU3RvcCgpOwpA
QCAtNzQsNiArNzcsOCBAQCBwcml2YXRlOgogICAgIFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVy
PiBtX2F1dG9zY3JvbGxUaW1lcjsKICAgICBSZW5kZXJCb3gqIG1fYXV0b3Njcm9sbFJlbmRlcmVy
OwogICAgIEF1dG9zY3JvbGxUeXBlIG1fYXV0b3Njcm9sbFR5cGU7CisgICAgSW50UG9pbnQgbV9k
cmFnQW5kRHJvcEF1dG9zY3JvbGxSZWZlcmVuY2VQb3NpdGlvbjsKKyAgICBkb3VibGUgbV9kcmFn
QW5kRHJvcEF1dG9zY3JvbGxTdGFydFRpbWU7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAg
ICAgSW50UG9pbnQgbV9wYW5TY3JvbGxTdGFydFBvczsKICAgICBib29sIG1fcGFuU2Nyb2xsQnV0
dG9uUHJlc3NlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDgzOWFlOWZmODJh
NjMzN2VlMGVmOTI3NWQ2ZjIyY2YwMzRiMzE5MmUuLjMyZDJmOGY3OTVmNWI0OTJlNWUxZDM5M2Q1
OTNjNTNiYmIxMWRmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzc1LDYg
KzM3NSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gcGx1Z0lu
U3RhcnRMYWJlbEltYWdlKFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpMYWJlbFNpemUpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIEZJWE1FOiBQb3J0IHNob3VsZCByZXR1cm4gdHJ1ZSB1
c2luZyBoZXVyaXN0aWMgYmFzZWQgb24gc2Nyb2xsYWJsZShSZW5kZXJCb3gpLgorICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3AoUmVuZGVyQm94KikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNocm9tZUNsaWVu
dCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAwZGE4Mzgx
ZGM4YTJjMDlmZDgwMGM4NjIyOTU2ZDczNDY2ZDg3ZGExLi5lYzZkYWIzZDk3NzY0NDE4ODRjODFh
ZGYxNmRlMmQxZTYyM2UxMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0xOTU3LDYgKzE5NTcsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgIGlmIChuZXdU
YXJnZXQgJiYgbmV3VGFyZ2V0LT5pc1RleHROb2RlKCkpCiAgICAgICAgIG5ld1RhcmdldCA9IG5l
d1RhcmdldC0+cGFyZW50Tm9kZSgpOwogCisgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci0+dXBk
YXRlRHJhZ0FuZERyb3AobmV3VGFyZ2V0LmdldCgpLCBldmVudC5wb3NpdGlvbigpLCBldmVudC50
aW1lc3RhbXAoKSk7CisKICAgICBpZiAobV9kcmFnVGFyZ2V0ICE9IG5ld1RhcmdldCkgewogICAg
ICAgICAvLyBGSVhNRTogdGhpcyBvcmRlcmluZyB3YXMgZXhwbGljaXRseSBjaG9zZW4gdG8gbWF0
Y2ggV2luSUUuIEhvd2V2ZXIsCiAgICAgICAgIC8vIGl0IGlzIHNvbWV0aW1lcyBpbmNvcnJlY3Qg
d2hlbiBkcmFnZ2luZyB3aXRoaW4gc3ViZnJhbWVzLCBhcyBzZWVuIHdpdGgKQEAgLTIwNDAsNiAr
MjA0Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpj
bGVhckRyYWdTdGF0ZSgpCiB7CisgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgIG1fZHJh
Z1RhcmdldCA9IDA7CiAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUgPSAwOwogICAgIG1f
c2hvdWxkT25seUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCmluZGV4IDUwNWI5YjMxYmFhYmM1ZTcxZjUyNjgyNzhjMjc3NjU5YTU0
ZTEwYzguLjBlNzQ3MDIzNTMzN2NhNTNjZmRmZjQwNjY3YzNjMmEzODU2OTcyZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC04MSw2ICs4MSwxMSBAQCBzdGF0aWMg
T3ZlcnJpZGVTaXplTWFwKiBnT3ZlcnJpZGVXaWR0aE1hcCA9IDA7CiBzdGF0aWMgT3ZlcnJpZGVT
aXplTWFwKiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwID0gMDsKIHN0
YXRpYyBPdmVycmlkZVNpemVNYXAqIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0
aE1hcCA9IDA7CiAKKworLy8gU2l6ZSBvZiBib3JkZXIgYmVsdCBmb3IgYXV0b3Njcm9sbC4gV2hl
biBtb3VzZSBwb2ludGVyIGluIGJvcmRlciBiZWx0LAorLy8gYXV0b3Njcm9sbCBpcyBzdGFydGVk
Lgorc3RhdGljIGNvbnN0IGludCBhdXRvc2Nyb2xsQmVsdFNpemUgPSAyMDsKKwogYm9vbCBSZW5k
ZXJCb3g6OnNfaGFkT3ZlcmZsb3dDbGlwID0gZmFsc2U7CiAKIFJlbmRlckJveDo6UmVuZGVyQm94
KE5vZGUqIG5vZGUpCkBAIC02OTgsMTAgKzcwMywxMCBAQCBib29sIFJlbmRlckJveDo6dXNlc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdAogICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAm
JiBoYXNMYXllcigpICYmIGxheWVyKCktPnVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiB9CiAK
LXZvaWQgUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyQm94OjphdXRvc2Nyb2xs
KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBpZiAobGF5ZXIoKSkKLSAgICAgICAg
bGF5ZXIoKS0+YXV0b3Njcm9sbCgpOworICAgICAgICBsYXllcigpLT5hdXRvc2Nyb2xsKHBvc2l0
aW9uKTsKIH0KIAogLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiByZW5kZXJlciB0aGF0IGNhbiBh
dXRvc2Nyb2xsLgpAQCAtNzI1LDYgKzczMCwzMyBAQCBib29sIFJlbmRlckJveDo6Y2FuQXV0b3Nj
cm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0gZnJh
bWU7CiB9CiAKKy8vIElmIHNwZWNpZmllZCBwb2ludCBpcyBpbiBib3JkZXIgYmVsdCwgcmV0dXJu
ZWQgb2Zmc2V0IGRlbm90ZXMgZGlyZWN0aW9uIG9mCisvLyBzY3JvbGxpbmcuCitJbnRTaXplIFJl
bmRlckJveDo6Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbihjb25zdCBJbnRQb2ludCYgd2lu
ZG93UG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAgICByZXR1cm4gSW50
U2l6ZSgpOworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZSgpLT52aWV3KCk7Cisg
ICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICBJbnRT
aXplIG9mZnNldDsKKyAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250
ZW50cyh3aW5kb3dQb2ludCk7CisgICAgSW50UmVjdCBib3goYWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSk7CisKKyAgICBpZiAocG9pbnQueCgpIDwgYm94LngoKSArIGF1dG9zY3JvbGxCZWx0U2l6
ZSkKKyAgICAgICAgcG9pbnQubW92ZSgtYXV0b3Njcm9sbEJlbHRTaXplLCAwKTsKKyAgICBlbHNl
IGlmIChwb2ludC54KCkgPiBib3gubWF4WCgpIC0gYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAg
ICBwb2ludC5tb3ZlKGF1dG9zY3JvbGxCZWx0U2l6ZSwgMCk7CisKKyAgICBpZiAocG9pbnQueSgp
IDwgYm94LnkoKSArIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAgICAgcG9pbnQubW92ZSgwLCAt
YXV0b3Njcm9sbEJlbHRTaXplKTsKKyAgICBlbHNlIGlmIChwb2ludC55KCkgPiBib3gubWF4WSgp
IC0gYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAgICBwb2ludC5tb3ZlKDAsIGF1dG9zY3JvbGxC
ZWx0U2l6ZSk7CisgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhwb2ludCkg
LSB3aW5kb3dQb2ludDsKK30KKwogUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xs
YWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIHdoaWxlIChyZW5kZXJlciAmJiAh
KHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQXV0b3Njcm9s
bCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGVlNzM3NjYyNzUy
OTAwZTk4MjQ1ZDA5MmZiZDA3YTcxNGEzZDc2NTQuLmZmZWNjNzczYjZkODJiYTVjNTRiNzJhZDcx
MGVlMGM0NzYyOWZkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQ0
Nyw4ICs0NDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGxvZ2ljYWxTY3JvbGwoU2Ny
b2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIg
PSAxLCBOb2RlKiogc3RvcE5vZGUgPSAwKTsKICAgICBib29sIGNhbkJlU2Nyb2xsZWRBbmRIYXNT
Y3JvbGxhYmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGlj
YWxseVNjcm9sbGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIGJvb2wgY2Fu
QXV0b3Njcm9sbCgpIGNvbnN0OworICAgIEludFNpemUgY2FsY3VsYXRlQXV0b3Njcm9sbERpcmVj
dGlvbihjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0OwogICAgIHN0YXRpYyBSZW5k
ZXJCb3gqIGZpbmRBdXRvc2Nyb2xsYWJsZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcEF1dG9zY3JvbGwoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFuU2Nyb2xsKGNvbnN0
IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCA3MGQ5MDMxYjM2MmMyY2VkM2M3M2MzMWNlNjA4MTdiNzc0MDY2YWViLi43ODUyNDI0OWRiYzFm
MzUyMDhjNGZlODczYzU3ZWI0YWZhNzQ5ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTIyOTcsNyArMjI5Nyw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5
ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0ICZ2aXNpYmxlUmVjdCwgY29uc3Qg
TGF5CiAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoeCwgeSksIHZpc2libGVSZWN0
LnNpemUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5k
ZXJMYXllcjo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMjMw
NywxMSArMjMwNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGwoKQogICAgIGlmICgh
ZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQot
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCk7
Ci0jZW5kaWYKLQotICAgIEludFBvaW50IGN1cnJlbnREb2N1bWVudFBvc2l0aW9uID0gZnJhbWVW
aWV3LT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bGFzdEtub3duTW91
c2VQb3NpdGlvbigpKTsKKyAgICBJbnRQb2ludCBjdXJyZW50RG9jdW1lbnRQb3NpdGlvbiA9IGZy
YW1lVmlldy0+d2luZG93VG9Db250ZW50cyhwb3NpdGlvbik7CiAgICAgc2Nyb2xsUmVjdFRvVmlz
aWJsZShMYXlvdXRSZWN0KGN1cnJlbnREb2N1bWVudFBvc2l0aW9uLCBMYXlvdXRTaXplKDEsIDEp
KSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduVG9FZGdlSWZOZWVkZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCmluZGV4IGI2YmM2MDgxN2M2ZjNhMzcyNTZlZjZiZWIyNjNkY2I0MjJiNDZkOTIuLmFk
YjMxOTdiYjIwYzY2ZDk2MmUwZjg2MjdmYmVhYTNlYjRkNTM5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zNzMsNyArMzczLDcgQEAgcHVibGljOgogICAgIHZv
aWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CiAKICAgICBib29sIHNjcm9sbChTY3Jv
bGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSk7Ci0g
ICAgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50
Jik7CiAKICAgICB2b2lkIHJlc2l6ZShjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBM
YXlvdXRTaXplJik7CiAgICAgYm9vbCBpblJlc2l6ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lu
UmVzaXplTW9kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CmluZGV4IDMxYTFlZDhhYjQyNWM1Y2E5MmM3MDQ0ZjY4OTdjYmE0MWFiMWY0NDQuLjUxZjhlNDY0
Y2FmNTBlM2YzMGU2YmY4NjZjYTZiNjZmYWFmMmExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBpbnQgUmVuZGVyTGlz
dEJveDo6c2Nyb2xsVG93YXJkKGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbikKICAgICByZXR1
cm4gbGlzdEluZGV4QXRPZmZzZXQocG9zaXRpb25PZmZzZXQpOwogfQogCi12b2lkIFJlbmRlckxp
c3RCb3g6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKGNvbnN0
IEludFBvaW50JikKIHsKICAgICBJbnRQb2ludCBwb3MgPSBmcmFtZSgpLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHMoZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmxhc3RLbm93bk1vdXNlUG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGVm
MGQ2MGE2YTZlOTE3YjM2YmRlNGUzODRjYmQyNjU2ZWQ0OWJhZjkuLjM0OTI5M2IxMjhmOWRlYzUw
OTRiM2YzMWQ3ZTBlYzdlNjE1ZTI4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
CiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wQXV0b3Njcm9sbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhblNjcm9sbCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggYzdmMDc1YTRiOGY5ODA5
MGYwMWVlOWEyOThjZjM1ZGY2ZmRlMjNjMC4uN2VhMzA4MTYwNWQ4NGNjN2Q4MDQ5M2IxMWUzMzMy
OTFiYWY4Yjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTM4MSwxMSArMzgxLDExIEBAIGJvb2wg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0U2hvdWxkQmVUcnVuY2F0ZWQoKSBjb25z
dAogICAgICAgICAmJiBzdHlsZSgpLT50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3dFbGxp
cHNpczsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwo
KQordm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwoY29uc3QgSW50
UG9pbnQmIHBvc2l0aW9uKQogewogICAgIFJlbmRlckxheWVyKiBsYXllciA9IGlubmVyVGV4dEVs
ZW1lbnQoKS0+cmVuZGVyQm94KCktPmxheWVyKCk7CiAgICAgaWYgKGxheWVyKQotICAgICAgICBs
YXllci0+YXV0b3Njcm9sbCgpOworICAgICAgICBsYXllci0+YXV0b3Njcm9sbChwb3NpdGlvbik7
CiB9CiAKIGludCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNjcm9sbFdpZHRoKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaAppbmRleCBhZjI3YmY3NThiNDQxNGNjMTBiZTIwNzRiNGUwYTJmNmEzNDVm
ZDg3Li5kN2RmZmUzZmVmYjdlMmNlNGFjYTllYTg0NThiMDY5NjdhY2M4YzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IGF1dG9zY3JvbGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2lu
dCYpOwogCiAgICAgLy8gU3ViY2xhc3NlZCB0byBmb3J3YXJkIHRvIG91ciBpbm5lciBkaXYuCiAg
ICAgdmlydHVhbCBpbnQgc2Nyb2xsTGVmdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBmNGM4ZjUyMDg1NmFhOTNjYmI3
MTNkMjUxMjBjYzFlYTVkZjU5NTMxLi4wYjIzY2YxZjc5NDU1MzQ5OWRlNDQ1NmEyODY2ZTI3MzY1
MDA3ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcApAQCAtMTExNyw2ICsxMTE3LDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6bnVt
V2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBudW1iZXJPZldoZWVsSGFuZGxlCiAg
ICAgbV93ZWJWaWV3LT5udW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQobnVtYmVyT2ZX
aGVlbEhhbmRsZXJzKTsKIH0KIAorYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzaG91bGRBdXRvc2Ny
b2xsRm9yRHJhZ0FuZERyb3AoV2ViQ29yZTo6UmVuZGVyQm94KikgY29uc3QKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgQ2hyb21lQ2xp
ZW50SW1wbDo6bmVlZFRvdWNoRXZlbnRzKGJvb2wgbmVlZHNUb3VjaEV2ZW50cykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCBhNjk3ZDRj
NjU4MDAzNjZlNzhlNzhiNzg3ZTFkNmY1NTBmY2EzMTllLi5hY2I0NDFhOWY3M2JjZTFiMjk5N2Vj
NDdkNmY0NmMxN2ZmOWExMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5oCkBAIC0yMjEsNiArMjIxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1
bnNpZ25lZCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b3Njcm9sbEZvckRyYWdBbmRE
cm9wKFdlYkNvcmU6OlJlbmRlckJveCogc2Nyb2xsYWJsZSkgY29uc3QgT1ZFUlJJREU7CisKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UG9pbnRlckxv
Y2soKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBkYmI4YzgxMjRlZjQ4ZTkz
MGNhY2FiN2Q0MjkxOGRkZWI5Zjc5Nzk3Li5iMzY2MWNhZmUxZTYyYzI5MTllZGVlZTA3ZmRkZjcx
ODY5M2E4ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRl
ICJEcmFnQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCi0jaW5jbHVkZSAiRHJh
Z1Njcm9sbFRpbWVyLmgiCiAjaW5jbHVkZSAiRHJhZ1Nlc3Npb24uaCIKICNpbmNsdWRlICJFZGl0
b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTQxNSw3ICs0MTQsNiBAQCBXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9hdXRv
ZmlsbFBvcHVwKDApCiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAgICAgLCBtX3RhYnNU
b0xpbmtzKGZhbHNlKQotICAgICwgbV9kcmFnU2Nyb2xsVGltZXIoYWRvcHRQdHIobmV3IERyYWdT
Y3JvbGxUaW1lcikpCiAgICAgLCBtX2lzQ2FuY2VsaW5nRnVsbFNjcmVlbihmYWxzZSkKICAgICAs
IG1fYmVuY2htYXJrU3VwcG9ydCh0aGlzKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKQEAgLTMyNDMsNyArMzI0MSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRl
ZEF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDApOwogICAgIG1fcGFnZS0+
bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChwbWUsCiAgICAg
ICAgIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG9wZXJhdGlvbikpOwotICAgIG1fZHJhZ1Nj
cm9sbFRpbWVyLT5zdG9wKCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VNb3Zl
ZFRvKApAQCAtMzI1MSw3ICszMjQ4LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZU1v
dmVkVG8oCiAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAogICAgIFdlYkRyYWdPcGVy
YXRpb24gb3BlcmF0aW9uKQogewotICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT50cmlnZ2VyU2Nyb2xs
KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGNsaWVudFBvaW50KTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgpCkBAIC0zMzM3LDggKzMzMzMs
NiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJvcChjb25zdCBXZWJQb2ludCYgY2xp
ZW50UG9pbnQsCiAKICAgICBtX2RyYWdPcGVyYXRpb24gPSBXZWJEcmFnT3BlcmF0aW9uTm9uZTsK
ICAgICBtX2N1cnJlbnREcmFnRGF0YSA9IDA7Ci0KLSAgICBtX2RyYWdTY3JvbGxUaW1lci0+c3Rv
cCgpOwogfQogCiBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0Vu
dGVyT3JPdmVyKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwgY29uc3QgV2ViUG9pbnQmIHNj
cmVlblBvaW50LCBEcmFnQWN0aW9uIGRyYWdBY3Rpb24sIGludCBrZXlNb2RpZmllcnMpCkBAIC0z
MzY2LDExICszMzYwLDYgQEAgV2ViRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ1Rhcmdl
dERyYWdFbnRlck9yT3Zlcihjb25zdCBXZWJQb2ludCYgY2xpZW50UG8KIAogICAgICBtX2RyYWdP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9uPihkcm9wRWZmZWN0KTsKIAot
ICAgIGlmIChkcmFnQWN0aW9uID09IERyYWdPdmVyKQotICAgICAgICBtX2RyYWdTY3JvbGxUaW1l
ci0+dHJpZ2dlclNjcm9sbChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBjbGllbnRQb2lu
dCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RyYWdTY3JvbGxUaW1lci0+c3RvcCgpOwotCiAgICAg
cmV0dXJuIG1fZHJhZ09wZXJhdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKaW5kZXggY2VhNTc0OGM1YTg4N2ExZjU2OGIzZWQ1ZWQxOGFhMjcwMDY5NTVm
MS4uZWFmMWE0ODgzZTZhNTVjOTUzN2RiMzNiZjhiZGQ2Y2EyOGE4N2I0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC05MSw3ICs5MSw2IEBAIGNsYXNzIEJh
dHRlcnlDbGllbnRJbXBsOwogY2xhc3MgQ29udGV4dEZlYXR1cmVzQ2xpZW50SW1wbDsKIGNsYXNz
IENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJv
eHk7Ci1jbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFByb3h5
OwogY2xhc3MgTGlua0hpZ2hsaWdodDsKIGNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsK
QEAgLTgxNyw3ICs4MTYsNiBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6
U3RyaW5nLCBXVEY6OlN0cmluZz4gU2V0dGluZ3NNYXA7CiAgICAgT3duUHRyPFNldHRpbmdzTWFw
PiBtX2luc3BlY3RvclNldHRpbmdzTWFwOwotICAgIE93blB0cjxEcmFnU2Nyb2xsVGltZXI+IG1f
ZHJhZ1Njcm9sbFRpbWVyOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICAvLyBUaGUgcHJvdmlkZXIgb2YgZGVza3RvcCBub3Rp
ZmljYXRpb25zOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGRiZDkwZTBjMzE0YzBmODQ0ZWRkNTA0NTNhMDY5MTcxMmZkOTdmMWEuLmU3YjI1MTNl
ZjhhNGNkMGZiMDkyYzNjOGFmZmU4NjIzYzczOTk3NDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wMS0xNCAg
WW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIERyYWdnaW5n
IG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9sbGJhcnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxlbWVu
dCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNhbmNlbGluZyBkcmFnLWFu
ZC1kcm9wIGJ5IGVzY2FwZSBrZXkgZm9yIHRlc3RpbmcKKyAgICAgICAgYmVoYXZpb3IgYWZ0ZXIg
Y2FuY2VsbGF0aW9uIGRyYWctYW5kLWRyb3AuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChXZWJUZXN0
UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpkb01vdXNlVXAp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmZpbmlzaERyYWdBbmREcm9w
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5o
OgorICAgICAgICAoRXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmg6IEFkZGVkIFZLRVlfRVNDQVBFLgor
CiAyMDEzLTAxLTE0ICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIEVuYWJsZSBgdXBkYXRlLXdlYmtpdCAtLWNocm9taXVtIC0tbmluamFgIG9u
IHdpbmRvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAppbmRleCA3NzNhNTZiMTc5NjJkNDNhZDU1
Y2I3NThjYTgxOGE1YzJkN2NlNGY0Li5jOTlhZjlhMzI5YjFhYzExMzFjYzExZmRmY2M0MTMxMWE3
OTY0OGJjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCkBAIC00NjgsMTAgKzQ2OCwxNyBAQCB2
b2lkIEV2ZW50U2VuZGVyOjpkb01vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYgZSkKICAgICAv
LyBJZiB3ZSdyZSBpbiBhIGRyYWcgb3BlcmF0aW9uLCBjb21wbGV0ZSBpdC4KICAgICBpZiAoY3Vy
cmVudERyYWdEYXRhLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CisKICAgICBXZWJQb2ludCBj
bGllbnRQb2ludChlLngsIGUueSk7CiAgICAgV2ViUG9pbnQgc2NyZWVuUG9pbnQoZS5nbG9iYWxY
LCBlLmdsb2JhbFkpOworICAgIGZpbmlzaERyYWdBbmREcm9wKGUsIHdlYnZpZXcoKS0+ZHJhZ1Rh
cmdldERyYWdPdmVyKGNsaWVudFBvaW50LCBzY3JlZW5Qb2ludCwgY3VycmVudERyYWdFZmZlY3Rz
QWxsb3dlZCwgMCkpOworfQogCi0gICAgY3VycmVudERyYWdFZmZlY3QgPSB3ZWJ2aWV3KCktPmRy
YWdUYXJnZXREcmFnT3ZlcihjbGllbnRQb2ludCwgc2NyZWVuUG9pbnQsIGN1cnJlbnREcmFnRWZm
ZWN0c0FsbG93ZWQsIDApOwordm9pZCBFdmVudFNlbmRlcjo6ZmluaXNoRHJhZ0FuZERyb3AoY29u
c3QgV2ViTW91c2VFdmVudCYgZSwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uIGRyYWdFZmZlY3Qp
Cit7CisgICAgV2ViUG9pbnQgY2xpZW50UG9pbnQoZS54LCBlLnkpOworICAgIFdlYlBvaW50IHNj
cmVlblBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsKKyAgICBjdXJyZW50RHJhZ0VmZmVjdCA9
IGRyYWdFZmZlY3Q7CiAgICAgaWYgKGN1cnJlbnREcmFnRWZmZWN0KQogICAgICAgICB3ZWJ2aWV3
KCktPmRyYWdUYXJnZXREcm9wKGNsaWVudFBvaW50LCBzY3JlZW5Qb2ludCwgMCk7CiAgICAgZWxz
ZQpAQCAtNjQ4LDYgKzY1NSwxMiBAQCB2b2lkIEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAKICAgICB3ZWJ2
aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnREb3duKTsKIAorICAgIGlmIChjb2RlID09IFZL
RVlfRVNDQVBFICYmICFjdXJyZW50RHJhZ0RhdGEuaXNOdWxsKCkpIHsKKyAgICAgICAgV2ViTW91
c2VFdmVudCBldmVudDsKKyAgICAgICAgaW5pdE1vdXNlRXZlbnQoV2ViSW5wdXRFdmVudDo6TW91
c2VEb3duLCBwcmVzc2VkQnV0dG9uLCBsYXN0TW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVudEV2
ZW50VGltZVNlYyhtX2RlbGVnYXRlKSk7CisgICAgICAgIGZpbmlzaERyYWdBbmREcm9wKGV2ZW50
LCBXZWJLaXQ6OldlYkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICB9CisKICAgICBtX2RlbGVnYXRl
LT5jbGVhckVkaXRDb21tYW5kKCk7CiAKICAgICBpZiAoZ2VuZXJhdGVDaGFyKSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNl
bmRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZl
bnRTZW5kZXIuaAppbmRleCBiMWRhNjg0ODc2MTEwOGI0YTZjN2E2YmYzMTg2OTZjNTkxNWZiYjJj
Li5jMmIzY2Q5ZmVjMjc2ZTE4ZDYzOThjMGYxOTdiMzRkNTE1OTA5OWVkIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50
U2VuZGVyLmgKQEAgLTE1OCw2ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIC8vIG1vZGlmaWVyIHRv
IGJlIHBhc3NlZCBpbnRvIHRoZSBnZW5lcmF0ZWQgZXZlbnQuCiAgICAgYm9vbCBuZWVkc1NoaWZ0
TW9kaWZpZXIoaW50KTsKIAorICAgIHZvaWQgZmluaXNoRHJhZ0FuZERyb3AoY29uc3QgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50JiwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uKTsKICAgICB2b2lkIHVw
ZGF0ZUNsaWNrQ291bnRGb3JCdXR0b24oV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpCdXR0b24pOwog
CiAgICAgLy8gQ29tcG9zZSBhIHRvdWNoIGV2ZW50IGZyb20gdGhlIGN1cnJlbnQgdG91Y2ggcG9p
bnRzIGFuZCBzZW5kIGl0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmgKaW5kZXggODc0NjlmYWM0
YTVjMTE1MDJjOTM1ZTFkZDI4ZGZlNzQyYjhiNmFlMy4uMDIzZTU5NWZhZmNkMWU5YmQ1NTc0NmM2
MmU1ODE2Y2MxN2M2YTY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5oCkBAIC0zNiw2ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIC8vIFRoZSBrZXljb2RlcyBtYXRjaCB0
aGUgdmFsdWVzIG9mIHRoZSB2aXJ0dWFsIGtleWNvZGVzIGZvdW5kIGhlcmUgaHR0cDovL21zZG4u
bWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9kZDM3NTczMSh2PXZz
Ljg1KS5hc3B4CiBlbnVtIHsKICAgICBWS0VZX1JFVFVSTiAgID0gMHgwRCwKKyAgICBWS0VZX0VT
Q0FQRSAgID0gMHgxQiwKICAgICBWS0VZX1BSSU9SICAgID0gMHgyMSwKICAgICBWS0VZX05FWFQg
ICAgID0gMHgyMiwKICAgICBWS0VZX0VORCAgICAgID0gMHgyMywKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiY2MxYzI5MjE5
ZGFhY2I1MTc1MDcyZTdhNTQ2ZmI5ODdiNDYxYmIxLi5kMmFkZDlkMjhlODk1OGE0N2MxNmM3MmM1
YmNhMjc2NGFlNzdlYmM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEtMTQgIFlvc2hp
ZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBEcmFnZ2luZyBvdmVy
IGFuIGVsZW1lbnQgd2l0aCBzY3JvbGxiYXJzIHNob3VsZCBzY3JvbGwgdGhlIGVsZW1lbnQgd2hl
biBkcmFnZ2luZyBuZWFyIGVkZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgdGVzdCBmb3IgYXV0b3Njcm9sbCBkdXJp
bmcgZHJhZy1hbmQtZHJvcC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3At
YXV0b3Njcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2Ry
YWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0xMSAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFB5dGhvbiBpbXBsZW1lbnRhdGlv
biByZXBvcnRzICJNZW1vcnlFcnJvciIgaW5zdGVhZCBvZiBkb2luZyB0aGluZ3MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3Jv
bGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyZTYxNDgyOWFjMzdlYjNkMmI2MTc4ODBjZWYw
NTkzYmNlYmQ2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9k
cmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorRm9y
IG1hbnVhbCB0ZXN0aW5nLCBkcmFnIGFuZCBkcm9wICJEcm9wIE1lIiB0byAiU2Nyb2xsYWJsZSIg
YXJlYS4KK0NoZWNrIGF1dG9zY3JvbGwgYnkgZHJhZy1hbmQtZHJvcAorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzY3JvbGxhYmxlLnNjcm9sbFRvcCA+IDAKK1BBU1MgYXV0
b3Njcm9sbCBzdG9wcGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Ry
YWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJh
Zy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFmZTdlMzBjMTQzMTJiYzUw
N2VlZjVjZDUwMTdjN2FlZWE4Mjk0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sCkBAIC0wLDAgKzEsMTI3IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyNkcmFnZ2FibGUgewor
ICBwYWRkaW5nOiA1cHQ7CisgIGJvcmRlcjogM3B4IHNvbGlkICMwMGNjMDA7CisgIGJhY2tncm91
bmQ6ICMwMGNjY2M7CisgIHdpZHRoOiA4MHB4OworICBjdXJzb3I6IGhhbmQ7Cit9CisKKyNzY3Jv
bGxhYmxlIHsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIG92ZXJmbG93OiBhdXRvOworICAgIGJv
cmRlcjogc29saWQgM3B4ICNjYzAwMDA7CisgICAgZm9udC1zaXplOiA4MHB4OworfQorPC9zdHls
ZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiAkKGlkKSB7IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChpZCk7IH0KKworZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgJCgnY29udGFpbmVyJykuaW5uZXJIVE1MID0gJyc7CisgICAgd2luZG93
LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0SXQoKSB7CisgICAg
dmFyIGRyYWdnYWJsZSA9ICQoJ2RyYWdnYWJsZScpOworICAgIHZhciBzY3JvbGxhYmxlID0gJCgn
c2Nyb2xsYWJsZScpOworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisKKyAgICAvLyBHcmFi
IGRyYWdnYWJsZQorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGRyYWdnYWJsZS5vZmZzZXRM
ZWZ0ICsgNSwgZHJhZ2dhYmxlLm9mZnNldFRvcCArIDUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworCisgICAgLy8gTW92ZSBtb3VzZSB0byBhdXRvc2Nyb2xsIGJvcmRlciBiZWx0Lgor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHNjcm9sbGFibGUub2Zmc2V0TGVmdCArIDUsIHNj
cm9sbGFibGUub2Zmc2V0VG9wICsgc2Nyb2xsYWJsZS5vZmZzZXRIZWlnaHQgLSAxMCk7CisKKyAg
ICB2YXIgcmV0cnlDb3VudCA9IDA7CisgICAgdmFyIGxhc3RTY3JvbGxUb3AgPSAwOworCisgICAg
ZnVuY3Rpb24gY2hlY2tTY3JvbGxlZCgpCisgICAgeworICAgICAgICBpZiAoc2Nyb2xsYWJsZS5z
Y3JvbGxUb3AgPiAwKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCdzY3JvbGxhYmxlLnNjcm9s
bFRvcCA+IDAnKTsKKyAgICAgICAgICAgIGxhc3RTY3JvbGxUb3AgPSBzY3JvbGxhYmxlLnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIC8vIENhbmNlbCBkcmFnIGFuZCBkcm9wIGJ5IEVTQyBrZXkuCisg
ICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdceDFCJyk7CisgICAgICAgICAgICByZXRy
eUNvdW50ID0gMDsKKyAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrU3RvcHBlZCwg
NTApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgKytyZXRyeUNv
dW50OworICAgICAgICBpZiAocmV0cnlDb3VudCA+IDEwKSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdObyBhdXRvc2Nyb2xsJyk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBBdXRvc2Nyb2xsIGlzIG9jY3Vy
cmVkIGV2ZXkgMC4wNSBzZWMuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrU2Nyb2xs
ZWQsIDUwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1N0b3BwZWQoKQorICAgIHsKKyAg
ICAgICAgaWYgKGxhc3RTY3JvbGxUb3AgPT0gc2Nyb2xsYWJsZS5zY3JvbGxUb3ApIHsKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ2F1dG9zY3JvbGwgc3RvcHBlZCcpOworICAgICAgICAgICAgZmlu
aXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgKyty
ZXRyeUNvdW50OworICAgICAgICBpZiAocmV0cnlDb3VudCA+IDEwKSB7CisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCdzdGlsbCBhdXRvc2Nyb2xsJyk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsYXN0U2Nyb2xsVG9w
ID0gc2Nyb2xsYWJsZS5zY3JvbGxUb3A7CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNr
U3RvcHBlZCwgNTApOworICAgIH0KKworICAgIGNoZWNrU2Nyb2xsZWQoKTsKK30KKworZnVuY3Rp
b24gc2V0VXBUZXN0KCkKK3sKKyAgICB2YXIgc2Nyb2xsYWJsZSA9ICQoJ3Njcm9sbGFibGUnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICB2YXIgbGluZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgbGluZS5pbm5lckhUTUwgPSAibGlu
ZSAiICsgaTsKKyAgICAgIHNjcm9sbGFibGUuYXBwZW5kQ2hpbGQobGluZSk7CisgICAgfQorCisg
ICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ1BsZWFz
ZSBydW4gd2l0aGluIER1bXBSZW5kZXJUcmVlJyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgd2luZG93LnNldFRpbWVvdXQo
dGVzdEl0LCAwKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitGb3IgbWFudWFsIHRl
c3RpbmcsIGRyYWcgYW5kIGRyb3AgIkRyb3AgTWUiIHRvICJTY3JvbGxhYmxlIiBhcmVhLgorPGRp
diBpZD0iY29udGFpbmVyIj4KKzxkaXYgaWQ9ImRyYWdnYWJsZSIgZHJhZ2dhYmxlPSJ0cnVlIj5E
cm9wIE1lPC9kaXY+CitTY3JvbGxhYmxlCis8ZGl2IGlkPSJzY3JvbGxhYmxlIj4KKzwvZGl2Pgor
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdD
aGVjayBhdXRvc2Nyb2xsIGJ5IGRyYWctYW5kLWRyb3AnKTsKK3NldFVwVGVzdCgpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183109</attachid>
            <date>2013-01-16 20:43:02 -0800</date>
            <delta_ts>2013-01-18 01:32:57 -0800</delta_ts>
            <desc>Patch-3.0.4</desc>
            <filename>bug-39725-20130117134003.patch</filename>
            <type>text/plain</type>
            <size>37857</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U4ZDI0MmYyOTcxNGUy
MjUwMDZjMmM4MGFjMjdjZTcwMmJjYjQzMS4uNmFmODU4YTgwM2QyNTFlMjQ1YzBkYWFkOTMyZGQw
Y2U4N2JhMTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTE0ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYXV0byBzY3JvbGxpbmcgZnVuY3Rp
b25hbGl0eSBkdXJpbmcgZHJhZy1hbmQtZHJvcAorICAgICAgICB3aGVuIGRyb3Agc291cmNlIGlz
IG5lYXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgV2hlbiBkcm9wIHNv
dXJjZSBpcyBpbnNpZGUgMjBweCBvZiBzY3JvbGxhYmxlIGVsZW1lbnQgbW9yZSB0aGFuIDIwMG1z
LAorICAgICAgICBzY3JvbGxhYmxlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBzY3JvbGxlZCBl
dmVyeSA1MG1zIHRvd2FyZCBkcm9wCisgICAgICAgIHNvdXJjZSBwb3NpdGlvbiwgZS5nLiB2ZXJ0
aWNhbGx5IHNjcm9sbCB1cCB3aGVuIGRyb3Agc291cmNlIGlzIGluIHRvcAorICAgICAgICBlZGdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcik6IENo
YW5nZWQgdG8gaW5pdGlhbGl6ZSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6
IEFkZGVkIGZvciBzdGFydC9zdG9wIGF1dG9zY3JvbGwgZHVyaW5nIGRyYWctYW5kLWRyb3AuCisg
ICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQpOiBDaGFuZ2VkIHRvIGFkZCBhdXRvc2Nyb2xsIGZvciBkcmFnLWFuZC1kcm9wLCBhbmQgdG8g
cGFzcyBsYXN0IGtub3cgcG9zaXRpb24gdG8gUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkuCisgICAg
ICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoQXV0b3Njcm9sbENv
bnRyb2xsZXIpOiBDaGFuZ2VkIHRvIGFkZCB1cGRhdGVEcmFnQW5kRHJvcCgpIGFuZCBtX2RyYWdB
bmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0aW9uIGFuZCBtX2RyYWdBbmREcm9wQXV0b3Nj
cm9sbFN0YXJ0VGltZS4KKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50KTogQ2hhbmdlZCB0byBhZGQgbmV3IGZ1bmN0aW9uIHNob3Vs
ZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcCgpLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ap
OiBDaGFuZ2VkIHRvIGNhbGwgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZURyYWdBbmREcm9w
KCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyRHJhZ1N0YXRlKTogQ2hh
bmdlZCB0byBjYWxsIHN0b3BBdXRvc2Nyb2xsVGltZXIoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXV0b3Njcm9sbCk6
IENoYW5nZWQgZm9yIG5ldyBwYXJhbWV0ZXIgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24pOiBBZGRlZCBmb3IgYXV0b3Nj
cm9sbC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6ICBDaGFuZ2VkIGZvciBuZXcgcGFyYW1ldGVy
IHBvc2l0aW9uIGFuZCBtb3ZlIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpIHRvIEF1dG9z
Y3JvbGxDb250cm9sbGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAg
ICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwpOiAgQ2hhbmdl
ZCBmb3IgbmV3IHBhcmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5oOgorICAgICAgICAoUmVuZGVyTGlzdEJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwpOiAgQ2hhbmdlZCBmb3IgbmV3IHBh
cmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmg6CisgICAgICAgIChSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorCiAy
MDEzLTAxLTE2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBT
eW5jaHJvbm91cyBYTUxIVFRQUmVxdWVzdHMgbmVlZCB0byBnbyB0byB0aGUgTmV0d29ya1Byb2Nl
c3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRmYjZjZjU1NzBlZDc5NDg5MGE3OTg0
NGQyNGZhYjg3YTZkMjQyMWUuLjY2ZTM1MTQyZGMxYWE4ODJkNTRhNmMxMGYxYzVkNDk4NWY1YTM4
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTMtMDEt
MTQgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBEcmFn
Z2luZyBvdmVyIGFuIGVsZW1lbnQgd2l0aCBzY3JvbGxiYXJzIHNob3VsZCBzY3JvbGwgdGhlIGVs
ZW1lbnQgd2hlbiBkcmFnZ2luZyBuZWFyIGVkZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBEcmFnU2Nyb2xsVGltZXIg
dXNlZCBmb3IgYXV0b21hdGljIHNjcm9sbGluZyBvZiBtYWluCisgICAgICAgIGZyYW1lIGRyYWct
YW5kLWRyb3Agd2hpY2ggaXMgbm93IGltcGxlbWVudGVkIGluIEV2ZW50SGFuZGxlci4KKworICAg
ICAgICBBbm90aGVyIHBhdGNoIHdpbGwgcmVtb3ZlIERyYWdTY3JvbGxUaW1lci57Y3BwLGh9IGFu
ZCB1cGRhdGUgR1lQIGZpbGVzIHRvCisgICAgICAgIG1ha2UgcGF0Y2ggc2l6ZSBzbWFsbC4KKwor
ICAgICAgICBObyB0ZXN0cy4gRXhpc3RpbmcgdGVzdCBjb3ZlcnMgdGhpcyBjaGFuZ2UuCisKKyAg
ICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9t
ZUNsaWVudEltcGw6OnNob3VsZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcCk6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBs
KTogQ2hhbmdlZCB0byBhZGQgc2hvdWxkQXV0b3Njcm9sbEZvckRyYWdBbmREcm9wKCkuCisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKTogQ2hhbmdlZCB0byByZW1vdmUgbV9kcmFnU2Nyb2xsVGltZXIuCisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnU291cmNlRW5kZWRBdCk6IGRpdHRvCisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRUbyk6IGRpdHRvCisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJvcCk6IGRpdHRvCisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJhZ0VudGVyT3JPdmVyKTogZGl0dG8K
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6IENoYWduZWQg
dG8gcmVtb3ZlIERyYWdTY3JvbGxUaW1lci4KKwogMjAxMy0wMS0xNiAgVy4gSmFtZXMgTWFjTGVh
biAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGlua0hpZ2hsaWdodCBzaG91
bGQgdXNlIHRvdWNoIGFkanVzdG1lbnQgdG8gbWF0Y2ggYWN0aXZlIHN0YXRlIG9uIEdlc3R1cmVU
YXBEb3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApp
bmRleCA0MzhlOTlkMzExYjdhYmE1MTY5NGZkNGY4ZWVkODZjZTVkMDAyNWJlLi4wZTU0NWM4NGYz
YzlkZmE3MmViNmU2NDkwNzZkMjdmZWJlMzEwYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkF1dG9zY3JvbGxDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJD
aHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRs
ZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtMzUs
OSArMzcsMTMgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIERlbGF5IHRpbWUgaW4gc2Vjb25kIGZvciBzdGFydCBh
dXRvc2Nyb2xsIGlmIHBvaW50ZXIgaXMgaW4gYm9yZGVyIGVkZ2Ugb2Ygc2Nyb2xsYWJsZSBlbGVt
ZW50Lgorc3RhdGljIGRvdWJsZSBhdXRvc2Nyb2xsRGVsYXkgPSAwLjI7CisKIC8vIFdoZW4gdGhl
IGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0aGUgc2Ny
b2xsIGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCiBzdGF0aWMgY29uc3QgZG91YmxlIGF1
dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CiAKQEAgLTUzLDYgKzU5LDcgQEAgQXV0b3Njcm9sbENv
bnRyb2xsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyKCkKICAgICA6IG1fYXV0b3Njcm9sbFRpbWVy
KHRoaXMsICZBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQpCiAgICAg
LCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQogICAgICwgbV9hdXRvc2Nyb2xsVHlwZShOb0F1dG9z
Y3JvbGwpCisgICAgLCBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZSgwKQogI2lmIEVO
QUJMRShQQU5fU0NST0xMSU5HKQogICAgICwgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkKGZhbHNl
KQogICAgICwgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQpAQCAtMTQ0
LDYgKzE1MSw1MCBAQCB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRvc2Nyb2xs
UmVuZGVyZXIoKQogICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXIgJiYgcmVuZGVy
ZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOwogfQogCit2b2lkIEF1dG9z
Y3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChOb2RlKiBkcm9wVGFyZ2V0Tm9kZSwg
Y29uc3QgSW50UG9pbnQmIGV2ZW50UG9zaXRpb24sIGRvdWJsZSBldmVudFRpbWUpCit7CisgICAg
aWYgKCFkcm9wVGFyZ2V0Tm9kZSkgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZW5kZXJCb3gqIHNjcm9sbGFibGUgPSBSZW5k
ZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZShkcm9wVGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKSk7Cisg
ICAgaWYgKCFzY3JvbGxhYmxlKSB7CisgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEZyYW1lKiBmcmFtZSA9IHNjcm9sbGFibGUtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KTsKKyAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c2hvdWxkQXV0
b3Njcm9sbEZvckRyYWdBbmREcm9wKHNjcm9sbGFibGUpKSB7CisgICAgICAgIHN0b3BBdXRvc2Ny
b2xsVGltZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEludFNpemUgb2Zmc2V0
ID0gc2Nyb2xsYWJsZS0+Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbihldmVudFBvc2l0aW9u
KTsKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpKSB7CisgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGlt
ZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZHJhZ0FuZERyb3BBdXRvc2Ny
b2xsUmVmZXJlbmNlUG9zaXRpb24gPSBldmVudFBvc2l0aW9uICsgb2Zmc2V0OworCisgICAgaWYg
KG1fYXV0b3Njcm9sbFR5cGUgPT0gTm9BdXRvc2Nyb2xsKSB7CisgICAgICAgIG1fYXV0b3Njcm9s
bFR5cGUgPSBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3A7CisgICAgICAgIG1fYXV0b3Njcm9sbFJl
bmRlcmVyID0gc2Nyb2xsYWJsZTsKKyAgICAgICAgbV9kcmFnQW5kRHJvcEF1dG9zY3JvbGxTdGFy
dFRpbWUgPSBldmVudFRpbWU7CisgICAgICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7CisgICAg
fSBlbHNlIGlmIChtX2F1dG9zY3JvbGxSZW5kZXJlciAhPSBzY3JvbGxhYmxlKSB7CisgICAgICAg
IG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID0gZXZlbnRUaW1lOworICAgICAgICBt
X2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgfQorfQorCiAjaWYgRU5BQkxF
KFBBTl9TQ1JPTExJTkcpCiB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpkaWRQYW5TY3JvbGxT
dGFydCgpCiB7CkBAIC0yMDAsMTMgKzI1MSwyMCBAQCB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVy
OjphdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4qKQogCiAg
ICAgRnJhbWUqIGZyYW1lID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmZyYW1lKCk7CiAgICAgc3dp
dGNoIChtX2F1dG9zY3JvbGxUeXBlKSB7Ci0gICAgY2FzZSBBdXRvc2Nyb2xsRm9yU2VsZWN0aW9u
OgotICAgICAgICBpZiAoIWZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VQcmVzc2VkKCkpIHsK
KyAgICBjYXNlIEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcDoKKyAgICAgICAgaWYgKFdURjo6Y3Vy
cmVudFRpbWUoKSAtIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lID4gYXV0b3Njcm9s
bERlbGF5KQorICAgICAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3JvbGwobV9k
cmFnQW5kRHJvcEF1dG9zY3JvbGxSZWZlcmVuY2VQb3NpdGlvbik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQXV0b3Njcm9sbEZvclNlbGVjdGlvbjogeworICAgICAgICBFdmVudEhhbmRsZXIq
IGV2ZW50SGFuZGxlciA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKTsKKyAgICAgICAgaWYgKCFldmVu
dEhhbmRsZXItPm1vdXNlUHJlc3NlZCgpKSB7CiAgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRp
bWVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9hdXRvc2Ny
b2xsUmVuZGVyZXItPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyLT51cGRhdGVT
ZWxlY3Rpb25Gb3JNb3VzZURyYWcoKTsKKyAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmF1
dG9zY3JvbGwoZXZlbnRIYW5kbGVyLT5sYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkpOwogICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBOb0F1dG9zY3JvbGw6CiAgICAgICAgIGJyZWFrOwog
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5oCmluZGV4IGY2NzFmMTVkNDMzNjU3MWFkYTJjZTU1MmYwZDc3YmFhM2I4ODg5
NjguLjQwMDBhMTc1ZDFjNjQwYTQ4OTdkZWQ3YzBkMWYyZTEwNDFkM2IyMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmgKQEAgLTM0LDEyICszNCwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFdmVudEhhbmRsZXI7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIEZyYW1lVmlldzsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBj
bGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGVudW0gQXV0b3Njcm9sbFR5
cGUgewogICAgIE5vQXV0b3Njcm9sbCwKKyAgICBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3AsCiAg
ICAgQXV0b3Njcm9sbEZvclNlbGVjdGlvbiwKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKICAg
ICBBdXRvc2Nyb2xsRm9yUGFuLApAQCAtNTYsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGFydEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24oUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBzdG9w
QXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFsc2UpOwog
ICAgIHZvaWQgdXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCk7CisgICAgdm9pZCB1cGRhdGVEcmFn
QW5kRHJvcChOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3NpdGlvbiwg
ZG91YmxlIGV2ZW50VGltZSk7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgdm9pZCBk
aWRQYW5TY3JvbGxTdGFydCgpOwogICAgIHZvaWQgZGlkUGFuU2Nyb2xsU3RvcCgpOwpAQCAtNzQs
NiArNzcsOCBAQCBwcml2YXRlOgogICAgIFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVyPiBtX2F1
dG9zY3JvbGxUaW1lcjsKICAgICBSZW5kZXJCb3gqIG1fYXV0b3Njcm9sbFJlbmRlcmVyOwogICAg
IEF1dG9zY3JvbGxUeXBlIG1fYXV0b3Njcm9sbFR5cGU7CisgICAgSW50UG9pbnQgbV9kcmFnQW5k
RHJvcEF1dG9zY3JvbGxSZWZlcmVuY2VQb3NpdGlvbjsKKyAgICBkb3VibGUgbV9kcmFnQW5kRHJv
cEF1dG9zY3JvbGxTdGFydFRpbWU7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgSW50
UG9pbnQgbV9wYW5TY3JvbGxTdGFydFBvczsKICAgICBib29sIG1fcGFuU2Nyb2xsQnV0dG9uUHJl
c3NlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDgzOWFlOWZmODJhNjMzN2Vl
MGVmOTI3NWQ2ZjIyY2YwMzRiMzE5MmUuLjMyZDJmOGY3OTVmNWI0OTJlNWUxZDM5M2Q1OTNjNTNi
YmIxMWRmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzc1LDYgKzM3NSw5
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gcGx1Z0luU3RhcnRM
YWJlbEltYWdlKFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpMYWJlbFNpemUpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KIAorICAgIC8vIEZJWE1FOiBQb3J0IHNob3VsZCByZXR1cm4gdHJ1ZSB1c2luZyBo
ZXVyaXN0aWMgYmFzZWQgb24gc2Nyb2xsYWJsZShSZW5kZXJCb3gpLgorICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3AoUmVuZGVyQm94KikgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudCgpIHsg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAwZGE4MzgxZGM4YTJj
MDlmZDgwMGM4NjIyOTU2ZDczNDY2ZDg3ZGExLi5lYzZkYWIzZDk3NzY0NDE4ODRjODFhZGYxNmRl
MmQxZTYyM2UxMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xOTU3
LDYgKzE5NTcsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgIGlmIChuZXdUYXJnZXQg
JiYgbmV3VGFyZ2V0LT5pc1RleHROb2RlKCkpCiAgICAgICAgIG5ld1RhcmdldCA9IG5ld1Rhcmdl
dC0+cGFyZW50Tm9kZSgpOwogCisgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci0+dXBkYXRlRHJh
Z0FuZERyb3AobmV3VGFyZ2V0LmdldCgpLCBldmVudC5wb3NpdGlvbigpLCBldmVudC50aW1lc3Rh
bXAoKSk7CisKICAgICBpZiAobV9kcmFnVGFyZ2V0ICE9IG5ld1RhcmdldCkgewogICAgICAgICAv
LyBGSVhNRTogdGhpcyBvcmRlcmluZyB3YXMgZXhwbGljaXRseSBjaG9zZW4gdG8gbWF0Y2ggV2lu
SUUuIEhvd2V2ZXIsCiAgICAgICAgIC8vIGl0IGlzIHNvbWV0aW1lcyBpbmNvcnJlY3Qgd2hlbiBk
cmFnZ2luZyB3aXRoaW4gc3ViZnJhbWVzLCBhcyBzZWVuIHdpdGgKQEAgLTIwNDAsNiArMjA0Miw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhckRy
YWdTdGF0ZSgpCiB7CisgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgIG1fZHJhZ1Rhcmdl
dCA9IDA7CiAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUgPSAwOwogICAgIG1fc2hvdWxk
T25seUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IGZmYTdjYmEyYWNjYzRkNmYyODJhNzNkNDc5ZjEzNmEwMTRiNmNmNjYu
LjJkZDUzNWRmNDk2MzA2ZmQ3NGY4ODE5NTNmZDIyZTk1MGRiNGFjNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC04MSw2ICs4MSwxMSBAQCBzdGF0aWMgT3ZlcnJp
ZGVTaXplTWFwKiBnT3ZlcnJpZGVXaWR0aE1hcCA9IDA7CiBzdGF0aWMgT3ZlcnJpZGVTaXplTWFw
KiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwID0gMDsKIHN0YXRpYyBP
dmVycmlkZVNpemVNYXAqIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aE1hcCA9
IDA7CiAKKworLy8gU2l6ZSBvZiBib3JkZXIgYmVsdCBmb3IgYXV0b3Njcm9sbC4gV2hlbiBtb3Vz
ZSBwb2ludGVyIGluIGJvcmRlciBiZWx0LAorLy8gYXV0b3Njcm9sbCBpcyBzdGFydGVkLgorc3Rh
dGljIGNvbnN0IGludCBhdXRvc2Nyb2xsQmVsdFNpemUgPSAyMDsKKwogYm9vbCBSZW5kZXJCb3g6
OnNfaGFkT3ZlcmZsb3dDbGlwID0gZmFsc2U7CiAKIFJlbmRlckJveDo6UmVuZGVyQm94KENvbnRh
aW5lck5vZGUqIG5vZGUpCkBAIC02OTgsMTAgKzcwMywxMCBAQCBib29sIFJlbmRlckJveDo6dXNl
c0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdAogICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAo
KSAmJiBoYXNMYXllcigpICYmIGxheWVyKCktPnVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiB9
CiAKLXZvaWQgUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyQm94OjphdXRvc2Ny
b2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBpZiAobGF5ZXIoKSkKLSAgICAg
ICAgbGF5ZXIoKS0+YXV0b3Njcm9sbCgpOworICAgICAgICBsYXllcigpLT5hdXRvc2Nyb2xsKHBv
c2l0aW9uKTsKIH0KIAogLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiByZW5kZXJlciB0aGF0IGNh
biBhdXRvc2Nyb2xsLgpAQCAtNzI1LDYgKzczMCwzMyBAQCBib29sIFJlbmRlckJveDo6Y2FuQXV0
b3Njcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0g
ZnJhbWU7CiB9CiAKKy8vIElmIHNwZWNpZmllZCBwb2ludCBpcyBpbiBib3JkZXIgYmVsdCwgcmV0
dXJuZWQgb2Zmc2V0IGRlbm90ZXMgZGlyZWN0aW9uIG9mCisvLyBzY3JvbGxpbmcuCitJbnRTaXpl
IFJlbmRlckJveDo6Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbihjb25zdCBJbnRQb2ludCYg
d2luZG93UG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAgICByZXR1cm4g
SW50U2l6ZSgpOworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZSgpLT52aWV3KCk7
CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICBJ
bnRTaXplIG9mZnNldDsKKyAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyh3aW5kb3dQb2ludCk7CisgICAgSW50UmVjdCBib3goYWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKSk7CisKKyAgICBpZiAocG9pbnQueCgpIDwgYm94LngoKSArIGF1dG9zY3JvbGxCZWx0
U2l6ZSkKKyAgICAgICAgcG9pbnQubW92ZSgtYXV0b3Njcm9sbEJlbHRTaXplLCAwKTsKKyAgICBl
bHNlIGlmIChwb2ludC54KCkgPiBib3gubWF4WCgpIC0gYXV0b3Njcm9sbEJlbHRTaXplKQorICAg
ICAgICBwb2ludC5tb3ZlKGF1dG9zY3JvbGxCZWx0U2l6ZSwgMCk7CisKKyAgICBpZiAocG9pbnQu
eSgpIDwgYm94LnkoKSArIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAgICAgcG9pbnQubW92ZSgw
LCAtYXV0b3Njcm9sbEJlbHRTaXplKTsKKyAgICBlbHNlIGlmIChwb2ludC55KCkgPiBib3gubWF4
WSgpIC0gYXV0b3Njcm9sbEJlbHRTaXplKQorICAgICAgICBwb2ludC5tb3ZlKDAsIGF1dG9zY3Jv
bGxCZWx0U2l6ZSk7CisgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhwb2lu
dCkgLSB3aW5kb3dQb2ludDsKK30KKwogUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpbmRBdXRvc2Ny
b2xsYWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIHdoaWxlIChyZW5kZXJlciAm
JiAhKHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQXV0b3Nj
cm9sbCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGNhNzQ5ZDIw
OGIwZTc4YWNkNjE4ZjQ2YjE2YzgyYjUyYzY1NTZmM2EuLjI3MjQyNmMyYWFlYjUyNzQzZWExY2I1
ZGVmMjhjZTc2N2ZkYmNlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAg
LTQ0Nyw4ICs0NDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGxvZ2ljYWxTY3JvbGwo
U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxp
ZXIgPSAxLCBOb2RlKiogc3RvcE5vZGUgPSAwKTsKICAgICBib29sIGNhbkJlU2Nyb2xsZWRBbmRI
YXNTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1h
dGljYWxseVNjcm9sbGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIGJvb2wg
Y2FuQXV0b3Njcm9sbCgpIGNvbnN0OworICAgIEludFNpemUgY2FsY3VsYXRlQXV0b3Njcm9sbERp
cmVjdGlvbihjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0OwogICAgIHN0YXRpYyBS
ZW5kZXJCb3gqIGZpbmRBdXRvc2Nyb2xsYWJsZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcEF1dG9zY3JvbGwoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFuU2Nyb2xsKGNv
bnN0IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCA0ZTY4ZThlYTg5ZmE1ZmJjMWUwMDljNzU3ZTdlMjE0MmE0MDk3ZjQyLi4zNmJkMTcyMDA5
M2I4YTJmMWU3ODYxMmY0YTk1MjkyM2U5ZmE4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTIyOTQsNyArMjI5NCw3IEBAIExheW91dFJlY3QgUmVuZGVy
TGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0ICZ2aXNpYmxlUmVjdCwgY29u
c3QgTGF5CiAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoeCwgeSksIHZpc2libGVS
ZWN0LnNpemUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGwoKQordm9pZCBS
ZW5kZXJMYXllcjo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAg
RnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAt
MjMwNCwxMSArMjMwNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmF1dG9zY3JvbGwoKQogICAgIGlm
ICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQotICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KCk7Ci0jZW5kaWYKLQotICAgIEludFBvaW50IGN1cnJlbnREb2N1bWVudFBvc2l0aW9uID0gZnJh
bWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bGFzdEtub3du
TW91c2VQb3NpdGlvbigpKTsKKyAgICBJbnRQb2ludCBjdXJyZW50RG9jdW1lbnRQb3NpdGlvbiA9
IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhwb3NpdGlvbik7CiAgICAgc2Nyb2xsUmVjdFRv
VmlzaWJsZShMYXlvdXRSZWN0KGN1cnJlbnREb2N1bWVudFBvc2l0aW9uLCBMYXlvdXRTaXplKDEs
IDEpKSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCmluZGV4IDdlMGQyNzFkM2NlNGJhYjg5NTc0OGYzMTU1ODVkNGM2ZGIzNWE5ZWQu
LjYwNDg1NDY1YWY5OTA3ZTZlNDRhYjg2ODE0YmNkZGEzYzQ1Y2MyMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zNzMsNyArMzczLDcgQEAgcHVibGljOgogICAg
IHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CiAKICAgICBib29sIHNjcm9sbChT
Y3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSk7
Ci0gICAgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBv
aW50Jik7CiAKICAgICB2b2lkIHJlc2l6ZShjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25z
dCBMYXlvdXRTaXplJik7CiAgICAgYm9vbCBpblJlc2l6ZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2luUmVzaXplTW9kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCmluZGV4IDMxYTFlZDhhYjQyNWM1Y2E5MmM3MDQ0ZjY4OTdjYmE0MWFiMWY0NDQuLjUxZjhl
NDY0Y2FmNTBlM2YzMGU2YmY4NjZjYTZiNjZmYWFmMmExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBpbnQgUmVuZGVy
TGlzdEJveDo6c2Nyb2xsVG93YXJkKGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbikKICAgICBy
ZXR1cm4gbGlzdEluZGV4QXRPZmZzZXQocG9zaXRpb25PZmZzZXQpOwogfQogCi12b2lkIFJlbmRl
ckxpc3RCb3g6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKGNv
bnN0IEludFBvaW50JikKIHsKICAgICBJbnRQb2ludCBwb3MgPSBmcmFtZSgpLT52aWV3KCktPndp
bmRvd1RvQ29udGVudHMoZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmxhc3RLbm93bk1vdXNlUG9z
aXRpb24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4
IGVmMGQ2MGE2YTZlOTE3YjM2YmRlNGUzODRjYmQyNjU2ZWQ0OWJhZjkuLjM0OTI5M2IxMjhmOWRl
YzUwOTRiM2YzMWQ3ZTBlYzdlNjE1ZTI4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYp
OwogCiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wQXV0b3Njcm9sbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhblNjcm9sbCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggZjE0MjcyN2M1MWQy
MjBkMDE5MjgxYjcyNjdkNjExOThmZWMxZmUwYS4uNTRiY2YxMDk3Nzk3NmNhNjEwMDdkYjI1MjJl
MTRjYzJlN2U3OWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTM4MSwxMSArMzgxLDExIEBAIGJv
b2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0U2hvdWxkQmVUcnVuY2F0ZWQoKSBj
b25zdAogICAgICAgICAmJiBzdHlsZSgpLT50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3dF
bGxpcHNpczsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3Jv
bGwoKQordm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIFJlbmRlckxheWVyKiBsYXllciA9IGlubmVyVGV4
dEVsZW1lbnQoKS0+cmVuZGVyQm94KCktPmxheWVyKCk7CiAgICAgaWYgKGxheWVyKQotICAgICAg
ICBsYXllci0+YXV0b3Njcm9sbCgpOworICAgICAgICBsYXllci0+YXV0b3Njcm9sbChwb3NpdGlv
bik7CiB9CiAKIGludCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNjcm9sbFdpZHRoKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuaAppbmRleCBmNzQ2MWNiOTcwNjM4ODJmZjYzODkyNWIzY2IxNmE0MTQ1
YTA0MjA5Li4wYmUxNDkzMmY0MzA0ZWJmNTYwZmUzNmJkMjY2MmIyMjhmOTc5MGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2
b2lkIGF1dG9zY3JvbGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQ
b2ludCYpOwogCiAgICAgLy8gU3ViY2xhc3NlZCB0byBmb3J3YXJkIHRvIG91ciBpbm5lciBkaXYu
CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsTGVmdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyMjdmZWU3NzVlOTMzNTgy
N2M5YWE2NGE4MTFlMWExZDA5N2Y0MDYyLi43ZTkxOGQ3MGRjODdlOGYyNDhiNWMyNDlkMjI3MWU3
NzJkZWM4ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcApAQCAtMTE0MCw2ICsxMTQwLDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6
bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBudW1iZXJPZldoZWVsSGFuZGxl
CiAgICAgbV93ZWJWaWV3LT5udW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQobnVtYmVy
T2ZXaGVlbEhhbmRsZXJzKTsKIH0KIAorYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzaG91bGRBdXRv
c2Nyb2xsRm9yRHJhZ0FuZERyb3AoV2ViQ29yZTo6UmVuZGVyQm94KikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgQ2hyb21l
Q2xpZW50SW1wbDo6bmVlZFRvdWNoRXZlbnRzKGJvb2wgbmVlZHNUb3VjaEV2ZW50cykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCBkMmFk
MTExN2VjYmE2MTU0NzA0OTExZDAxYzc5OTNmNmUyOWY5OWMxLi5kNWU5YWZmM2FhNDNlNzNiZmI5
OTNlOTA2NTdhZmUyZWZhNmUyMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCkBAIC0yMjUsNiArMjI1LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdl
ZCh1bnNpZ25lZCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b3Njcm9sbEZvckRyYWdB
bmREcm9wKFdlYkNvcmU6OlJlbmRlckJveCogc2Nyb2xsYWJsZSkgY29uc3QgT1ZFUlJJREU7CisK
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UG9pbnRl
ckxvY2soKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwNzMxYWI0NGNjY2U2
NWRlNjczNDM0MGJkNDQzNjhjYTVhZTRmZjgwLi5lNmQ1NTNjZWI2YTJjZjQxNjNiYWMwZTY5MTQ5
Y2EyOGI4YWM5YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNs
dWRlICJEcmFnQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCi0jaW5jbHVkZSAi
RHJhZ1Njcm9sbFRpbWVyLmgiCiAjaW5jbHVkZSAiRHJhZ1Nlc3Npb24uaCIKICNpbmNsdWRlICJF
ZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTQxNSw3ICs0MTQsNiBAQCBX
ZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9h
dXRvZmlsbFBvcHVwKDApCiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAgICAgLCBtX3Rh
YnNUb0xpbmtzKGZhbHNlKQotICAgICwgbV9kcmFnU2Nyb2xsVGltZXIoYWRvcHRQdHIobmV3IERy
YWdTY3JvbGxUaW1lcikpCiAgICAgLCBtX2lzQ2FuY2VsaW5nRnVsbFNjcmVlbihmYWxzZSkKICAg
ICAsIG1fYmVuY2htYXJrU3VwcG9ydCh0aGlzKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKQEAgLTMyNTAsNyArMzI0OCw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VF
bmRlZEF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDApOwogICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChwbWUsCiAg
ICAgICAgIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG9wZXJhdGlvbikpOwotICAgIG1fZHJh
Z1Njcm9sbFRpbWVyLT5zdG9wKCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VN
b3ZlZFRvKApAQCAtMzI1OCw3ICszMjU1LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJj
ZU1vdmVkVG8oCiAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAogICAgIFdlYkRyYWdP
cGVyYXRpb24gb3BlcmF0aW9uKQogewotICAgIG1fZHJhZ1Njcm9sbFRpbWVyLT50cmlnZ2VyU2Ny
b2xsKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGNsaWVudFBvaW50KTsKIH0KIAogdm9p
ZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZVN5c3RlbURyYWdFbmRlZCgpCkBAIC0zMzQ0LDggKzMz
NDAsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJvcChjb25zdCBXZWJQb2ludCYg
Y2xpZW50UG9pbnQsCiAKICAgICBtX2RyYWdPcGVyYXRpb24gPSBXZWJEcmFnT3BlcmF0aW9uTm9u
ZTsKICAgICBtX2N1cnJlbnREcmFnRGF0YSA9IDA7Ci0KLSAgICBtX2RyYWdTY3JvbGxUaW1lci0+
c3RvcCgpOwogfQogCiBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFyZ2V0RHJh
Z0VudGVyT3JPdmVyKGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwgY29uc3QgV2ViUG9pbnQm
IHNjcmVlblBvaW50LCBEcmFnQWN0aW9uIGRyYWdBY3Rpb24sIGludCBrZXlNb2RpZmllcnMpCkBA
IC0zMzczLDExICszMzY3LDYgQEAgV2ViRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ1Rh
cmdldERyYWdFbnRlck9yT3Zlcihjb25zdCBXZWJQb2ludCYgY2xpZW50UG8KIAogICAgICBtX2Ry
YWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJEcmFnT3BlcmF0aW9uPihkcm9wRWZmZWN0KTsK
IAotICAgIGlmIChkcmFnQWN0aW9uID09IERyYWdPdmVyKQotICAgICAgICBtX2RyYWdTY3JvbGxU
aW1lci0+dHJpZ2dlclNjcm9sbChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBjbGllbnRQ
b2ludCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RyYWdTY3JvbGxUaW1lci0+c3RvcCgpOwotCiAg
ICAgcmV0dXJuIG1fZHJhZ09wZXJhdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKaW5kZXggNDE1NDlhOGM1ZjI2OWQ2ODFkNWE3ZDg2NzAxMWE3ZDAwYzYw
M2VlMS4uYTgyNmE4MmQxYzIyNzZmNDMxNWM2MTM2ZDljN2FhOWE0OGM1NTFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC05Miw3ICs5Miw2IEBAIGNsYXNz
IEJhdHRlcnlDbGllbnRJbXBsOwogY2xhc3MgQ29udGV4dEZlYXR1cmVzQ2xpZW50SW1wbDsKIGNs
YXNzIENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50
UHJveHk7Ci1jbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFBy
b3h5OwogY2xhc3MgTGlua0hpZ2hsaWdodDsKIGNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDsKQEAgLTgxOSw3ICs4MTgsNiBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdU
Rjo6U3RyaW5nLCBXVEY6OlN0cmluZz4gU2V0dGluZ3NNYXA7CiAgICAgT3duUHRyPFNldHRpbmdz
TWFwPiBtX2luc3BlY3RvclNldHRpbmdzTWFwOwotICAgIE93blB0cjxEcmFnU2Nyb2xsVGltZXI+
IG1fZHJhZ1Njcm9sbFRpbWVyOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICAvLyBUaGUgcHJvdmlkZXIgb2YgZGVza3RvcCBu
b3RpZmljYXRpb25zOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDM5NDNmNWIzNGRhZTE5OTkwMGYwMjFhNWRlZWE0ZDM5ZDI3NDMwMTAuLjM1ODA2
Mjk1NmM4ZWMxMTEwMGJlNDkwZDkxMGRkYTg3MmIxYjQ2Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wMS0x
NCAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIERyYWdn
aW5nIG92ZXIgYW4gZWxlbWVudCB3aXRoIHNjcm9sbGJhcnMgc2hvdWxkIHNjcm9sbCB0aGUgZWxl
bWVudCB3aGVuIGRyYWdnaW5nIG5lYXIgZWRnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNhbmNlbGluZyBkcmFn
LWFuZC1kcm9wIGJ5IGVzY2FwZSBrZXkgZm9yIHRlc3RpbmcKKyAgICAgICAgYmVoYXZpb3IgYWZ0
ZXIgY2FuY2VsbGF0aW9uIGRyYWctYW5kLWRyb3AuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpkb01vdXNl
VXApOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmZpbmlzaERyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5oOgorICAgICAgICAoRXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmg6IEFkZGVkIFZLRVlfRVNDQVBF
LgorCiAyMDEzLTAxLTE2ICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIHN0YXJ0LXF1ZXVlLnNoIGRvZXMgbm90IHBhc3MgcmVtYWluaW5nIHBhcmFtZXRl
cnMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKaW5kZXggNzczYTU2YjE3OTYyZDQz
YWQ1NWNiNzU4Y2E4MThhNWMyZDdjZTRmNC4uYzk5YWY5YTMyOWIxYWMxMTMxY2MxMWZkZmNjNDEz
MTFhNzk2NDhiYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcApAQCAtNDY4LDEwICs0NjgsMTcg
QEAgdm9pZCBFdmVudFNlbmRlcjo6ZG9Nb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmIGUpCiAg
ICAgLy8gSWYgd2UncmUgaW4gYSBkcmFnIG9wZXJhdGlvbiwgY29tcGxldGUgaXQuCiAgICAgaWYg
KGN1cnJlbnREcmFnRGF0YS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOworCiAgICAgV2ViUG9p
bnQgY2xpZW50UG9pbnQoZS54LCBlLnkpOwogICAgIFdlYlBvaW50IHNjcmVlblBvaW50KGUuZ2xv
YmFsWCwgZS5nbG9iYWxZKTsKKyAgICBmaW5pc2hEcmFnQW5kRHJvcChlLCB3ZWJ2aWV3KCktPmRy
YWdUYXJnZXREcmFnT3ZlcihjbGllbnRQb2ludCwgc2NyZWVuUG9pbnQsIGN1cnJlbnREcmFnRWZm
ZWN0c0FsbG93ZWQsIDApKTsKK30KIAotICAgIGN1cnJlbnREcmFnRWZmZWN0ID0gd2Vidmlldygp
LT5kcmFnVGFyZ2V0RHJhZ092ZXIoY2xpZW50UG9pbnQsIHNjcmVlblBvaW50LCBjdXJyZW50RHJh
Z0VmZmVjdHNBbGxvd2VkLCAwKTsKK3ZvaWQgRXZlbnRTZW5kZXI6OmZpbmlzaERyYWdBbmREcm9w
KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGUsIFdlYktpdDo6V2ViRHJhZ09wZXJhdGlvbiBkcmFnRWZm
ZWN0KQoreworICAgIFdlYlBvaW50IGNsaWVudFBvaW50KGUueCwgZS55KTsKKyAgICBXZWJQb2lu
dCBzY3JlZW5Qb2ludChlLmdsb2JhbFgsIGUuZ2xvYmFsWSk7CisgICAgY3VycmVudERyYWdFZmZl
Y3QgPSBkcmFnRWZmZWN0OwogICAgIGlmIChjdXJyZW50RHJhZ0VmZmVjdCkKICAgICAgICAgd2Vi
dmlldygpLT5kcmFnVGFyZ2V0RHJvcChjbGllbnRQb2ludCwgc2NyZWVuUG9pbnQsIDApOwogICAg
IGVsc2UKQEAgLTY0OCw2ICs2NTUsMTIgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5RG93bihjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogCiAgICAg
d2VidmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KGV2ZW50RG93bik7CiAKKyAgICBpZiAoY29kZSA9
PSBWS0VZX0VTQ0FQRSAmJiAhY3VycmVudERyYWdEYXRhLmlzTnVsbCgpKSB7CisgICAgICAgIFdl
Yk1vdXNlRXZlbnQgZXZlbnQ7CisgICAgICAgIGluaXRNb3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6
Ok1vdXNlRG93biwgcHJlc3NlZEJ1dHRvbiwgbGFzdE1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJl
bnRFdmVudFRpbWVTZWMobV9kZWxlZ2F0ZSkpOworICAgICAgICBmaW5pc2hEcmFnQW5kRHJvcChl
dmVudCwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgfQorCiAgICAgbV9kZWxl
Z2F0ZS0+Y2xlYXJFZGl0Q29tbWFuZCgpOwogCiAgICAgaWYgKGdlbmVyYXRlQ2hhcikgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZl
bnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L0V2ZW50U2VuZGVyLmgKaW5kZXggYjFkYTY4NDg3NjExMDhiNGE2YzdhNmJmMzE4Njk2YzU5MTVm
YmIyYy4uYzJiM2NkOWZlYzI3NmUxOGQ2Mzk4YzBmMTk3YjM0ZDUxNTkwOTllZCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5k
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9F
dmVudFNlbmRlci5oCkBAIC0xNTgsNiArMTU4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBtb2RpZmll
ciB0byBiZSBwYXNzZWQgaW50byB0aGUgZ2VuZXJhdGVkIGV2ZW50LgogICAgIGJvb2wgbmVlZHNT
aGlmdE1vZGlmaWVyKGludCk7CiAKKyAgICB2b2lkIGZpbmlzaERyYWdBbmREcm9wKGNvbnN0IFdl
YktpdDo6V2ViTW91c2VFdmVudCYsIFdlYktpdDo6V2ViRHJhZ09wZXJhdGlvbik7CiAgICAgdm9p
ZCB1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKFdlYktpdDo6V2ViTW91c2VFdmVudDo6QnV0dG9u
KTsKIAogICAgIC8vIENvbXBvc2UgYSB0b3VjaCBldmVudCBmcm9tIHRoZSBjdXJyZW50IHRvdWNo
IHBvaW50cyBhbmQgc2VuZCBpdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5oCmluZGV4IDg3NDY5
ZmFjNGE1YzExNTAyYzkzNWUxZGQyOGRmZTc0MmI4YjZhZTMuLjAyM2U1OTVmYWZjZDFlOWJkNTU3
NDZjNjJlNTgxNmNjMTdjNmE2NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuaApAQCAtMzYs
NiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAvLyBUaGUga2V5Y29kZXMgbWF0
Y2ggdGhlIHZhbHVlcyBvZiB0aGUgdmlydHVhbCBrZXljb2RlcyBmb3VuZCBoZXJlIGh0dHA6Ly9t
c2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZGQzNzU3MzEo
dj12cy44NSkuYXNweAogZW51bSB7CiAgICAgVktFWV9SRVRVUk4gICA9IDB4MEQsCisgICAgVktF
WV9FU0NBUEUgICA9IDB4MUIsCiAgICAgVktFWV9QUklPUiAgICA9IDB4MjEsCiAgICAgVktFWV9O
RVhUICAgICA9IDB4MjIsCiAgICAgVktFWV9FTkQgICAgICA9IDB4MjMsCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWI2OGQy
ZTkwYjUwZjIwZTQxOGZiZThmMWMwMzgxNGQyMDkxOWE3Mi4uMTNhMGQwNTVhYThjOTVmNWViZWEw
ZjY3NmJmNGE4NWNlOTY4ZjdmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAxLTE0ICBZ
b3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcg
b3ZlciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50
IHdoZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmV3IHRlc3QgZm9yIGF1dG9zY3JvbGwg
ZHVyaW5nIGRyYWctYW5kLWRyb3AuCisgICAgICAgIFRoaXMgdGVzdCBpcyBza2lwcGVkIG90aGVy
IHRoYW4gQ2hyb21pdW0gcG9ydHMuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50
cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6IENoYW5nZWQgdG8gc2tpcCBmYXN0L2V2ZW50cy9kcmFn
LWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbAorICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1Rl
c3RFeHBlY3RhdGlvbnM6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczog
ZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczogZGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IGRpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9uczogZGl0dG8uCisKIDIwMTMtMDEtMTYgIFZpY3RvciBDYXJi
dW5lICA8dmNhcmJ1bmVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEN1ZXMgbm90IHJlbmRlcmVk
IHdoZW4gdGhleSBzaG91bGQgYmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUyZTYxNDgyOWFjMzdlYjNkMmI2MTc4ODBjZWYwNTkzYmNlYmQ2M2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorRm9yIG1hbnVhbCB0ZXN0aW5nLCBkcmFnIGFuZCBk
cm9wICJEcm9wIE1lIiB0byAiU2Nyb2xsYWJsZSIgYXJlYS4KK0NoZWNrIGF1dG9zY3JvbGwgYnkg
ZHJhZy1hbmQtZHJvcAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzY3Jv
bGxhYmxlLnNjcm9sbFRvcCA+IDAKK1BBU1MgYXV0b3Njcm9sbCBzdG9wcGVkCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzFmZTdlMzBjMTQzMTJiYzUwN2VlZjVjZDUwMTdjN2FlZWE4Mjk0MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0
b3Njcm9sbC5odG1sCkBAIC0wLDAgKzEsMTI3IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KKyNkcmFnZ2FibGUgeworICBwYWRkaW5nOiA1cHQ7CisgIGJvcmRlcjog
M3B4IHNvbGlkICMwMGNjMDA7CisgIGJhY2tncm91bmQ6ICMwMGNjY2M7CisgIHdpZHRoOiA4MHB4
OworICBjdXJzb3I6IGhhbmQ7Cit9CisKKyNzY3JvbGxhYmxlIHsKKyAgICBoZWlnaHQ6IDIwMHB4
OworICAgIG92ZXJmbG93OiBhdXRvOworICAgIGJvcmRlcjogc29saWQgM3B4ICNjYzAwMDA7Cisg
ICAgZm9udC1zaXplOiA4MHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiAkKGlk
KSB7IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IH0KKworZnVuY3Rpb24gZmlu
aXNoVGVzdCgpIHsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgJCgnY29udGFpbmVy
JykuaW5uZXJIVE1MID0gJyc7CisgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
fQorCitmdW5jdGlvbiB0ZXN0SXQoKSB7CisgICAgdmFyIGRyYWdnYWJsZSA9ICQoJ2RyYWdnYWJs
ZScpOworICAgIHZhciBzY3JvbGxhYmxlID0gJCgnc2Nyb2xsYWJsZScpOworCisgICAgaWYgKCF3
aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50U2VuZGVyLmRy
YWdNb2RlID0gZmFsc2U7CisKKyAgICAvLyBHcmFiIGRyYWdnYWJsZQorICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKGRyYWdnYWJsZS5vZmZzZXRMZWZ0ICsgNSwgZHJhZ2dhYmxlLm9mZnNldFRv
cCArIDUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworCisgICAgLy8gTW92ZSBtb3Vz
ZSB0byBhdXRvc2Nyb2xsIGJvcmRlciBiZWx0LgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHNjcm9sbGFibGUub2Zmc2V0TGVmdCArIDUsIHNjcm9sbGFibGUub2Zmc2V0VG9wICsgc2Nyb2xs
YWJsZS5vZmZzZXRIZWlnaHQgLSAxMCk7CisKKyAgICB2YXIgcmV0cnlDb3VudCA9IDA7CisgICAg
dmFyIGxhc3RTY3JvbGxUb3AgPSAwOworCisgICAgZnVuY3Rpb24gY2hlY2tTY3JvbGxlZCgpCisg
ICAgeworICAgICAgICBpZiAoc2Nyb2xsYWJsZS5zY3JvbGxUb3AgPiAwKSB7CisgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCdzY3JvbGxhYmxlLnNjcm9sbFRvcCA+IDAnKTsKKyAgICAgICAgICAgIGxh
c3RTY3JvbGxUb3AgPSBzY3JvbGxhYmxlLnNjcm9sbFRvcDsKKyAgICAgICAgICAgIC8vIENhbmNl
bCBkcmFnIGFuZCBkcm9wIGJ5IEVTQyBrZXkuCisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCdceDFCJyk7CisgICAgICAgICAgICByZXRyeUNvdW50ID0gMDsKKyAgICAgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KGNoZWNrU3RvcHBlZCwgNTApOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgKytyZXRyeUNvdW50OworICAgICAgICBpZiAocmV0cnlDb3Vu
dCA+IDEwKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdObyBhdXRvc2Nyb2xsJyk7CisgICAg
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBBdXRvc2Nyb2xsIGlzIG9jY3VycmVkIGV2ZXkgMC4wNSBzZWMuCisgICAgICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrU2Nyb2xsZWQsIDUwKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBjaGVja1N0b3BwZWQoKQorICAgIHsKKyAgICAgICAgaWYgKGxhc3RTY3JvbGxUb3AgPT0g
c2Nyb2xsYWJsZS5zY3JvbGxUb3ApIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2F1dG9zY3Jv
bGwgc3RvcHBlZCcpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgKytyZXRyeUNvdW50OworICAgICAgICBpZiAocmV0
cnlDb3VudCA+IDEwKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdzdGlsbCBhdXRvc2Nyb2xs
Jyk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBsYXN0U2Nyb2xsVG9wID0gc2Nyb2xsYWJsZS5zY3JvbGxUb3A7Cisg
ICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrU3RvcHBlZCwgNTApOworICAgIH0KKworICAg
IGNoZWNrU2Nyb2xsZWQoKTsKK30KKworZnVuY3Rpb24gc2V0VXBUZXN0KCkKK3sKKyAgICB2YXIg
c2Nyb2xsYWJsZSA9ICQoJ3Njcm9sbGFibGUnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgbGluZS5pbm5lckhUTUwgPSAibGluZSAiICsgaTsKKyAgICAgIHNjcm9sbGFibGUu
YXBwZW5kQ2hpbGQobGluZSk7CisgICAgfQorCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgY29uc29sZS5sb2coJ1BsZWFzZSBydW4gd2l0aGluIER1bXBSZW5kZXJUcmVl
Jyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgd2luZG93LnNldFRpbWVvdXQodGVzdEl0LCAwKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CitGb3IgbWFudWFsIHRlc3RpbmcsIGRyYWcgYW5kIGRyb3AgIkRyb3Ag
TWUiIHRvICJTY3JvbGxhYmxlIiBhcmVhLgorPGRpdiBpZD0iY29udGFpbmVyIj4KKzxkaXYgaWQ9
ImRyYWdnYWJsZSIgZHJhZ2dhYmxlPSJ0cnVlIj5Ecm9wIE1lPC9kaXY+CitTY3JvbGxhYmxlCis8
ZGl2IGlkPSJzY3JvbGxhYmxlIj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdDaGVjayBhdXRvc2Nyb2xsIGJ5IGRyYWctYW5k
LWRyb3AnKTsKK3NldFVwVGVzdCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVkNjAxYjg4ZjhkZmMy
MjIwNGM4ZjM5MTI0ZjJmNDhmZTQxNmI4YzguLjU4ZjE4MGYxOTNiNjk3MDNhZTI5NDgyMzU1MzIy
ODgwN2JkMWY5MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xNzc1LDYgKzE3NzUsOSBAQCB3ZWJraXQub3JnL2IvMTA1Mjk3IHdlYmF1ZGlvL2F1ZGlv
YnVmZmVyc291cmNlLXBsYXliYWNrcmF0ZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MTA1NTM1IGluc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8uaHRtbCBbIEZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzEwNTUzNSBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlvLWxlYWst
dGVzdC5odG1sIFsgRmFpbHVyZSBdCiAKKyMgRW5hYmxlIHdoZW4gc3VwcG9ydCBkcmFnLWFuZC1k
cm9wIGF1dG9zY3JvbGxpbmcKK3dlYmtpdC5vcmcvYi8zOTcyNSBmYXN0L2V2ZW50cy9kcmFnLWFu
ZC1kcm9wLWF1dG9zY3JvbGwuaHRtbCBbIFNraXAgXQorCiAjIExlYWtpbmcgc3RhdGUgaW50byB0
aGUgbmV4dCB0ZXN0Lgogd2Via2l0Lm9yZy9iLzg1NTIyIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2Fu
ZGJveGVkLWlmcmFtZS1mb3JtLXRvcC5odG1sIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMDAzOTY3NjI1ODgwNjVmNDhhMjA4NDUzZGFj
ODgwMjIxMzk3NjNkZi4uOWIwZGU1NWM5NzcwNDFmMzQwODJjN2Q1YWU4MzA4YzFiNjg2NGY1MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzNDcsNiAr
MTM0Nyw5IEBAIHdlYmtpdC5vcmcvYi84NzczNCBzdmcvZG9tL3ZpZXdzcGVjLXBhcnNlci03Lmh0
bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzk4MTQ2IGFjY2Vzc2liaWxpdHkvc3ZnLWJv
dW5kcy5odG1sIFsgRmFpbHVyZSBdCiAKKyMgRW5hYmxlIHdoZW4gc3VwcG9ydCBkcmFnLWFuZC1k
cm9wIGF1dG9zY3JvbGxpbmcKK3dlYmtpdC5vcmcvYi8zOTcyNSBmYXN0L2V2ZW50cy9kcmFnLWFu
ZC1kcm9wLWF1dG9zY3JvbGwuaHRtbCBbIFNraXAgXQorCiAjIExlYWtpbmcgc3RhdGUgaW50byB0
aGUgbmV4dCB0ZXN0Lgogd2Via2l0Lm9yZy9iLzg1NTIyIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2Fu
ZGJveGVkLWlmcmFtZS1mb3JtLXRvcC5odG1sIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGMyYWI3NjZlMGYwN2QyYzg0MzE5YTI3Y2Jj
MDAxM2ViOGYwZmM1My4uNDc3MWRiMzkzMjBmYjliMTEzZjYyZjg2ZjVhMGU1OWM2MmIxYWFkMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEyNzksNiAr
MTI3OSw5IEBAIHdlYmtpdC5vcmcvYi8xMDY0MTUgZmFzdC93b3JrZXJzL3dvcmtlci1jbG9zZS1t
b3JlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNjQxNSBmYXN0L3dvcmtl
cnMvd29ya2VyLWRvY3VtZW50LWxlYWsuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTA2NDE1IGZhc3Qvd29ya2Vycy93b3JrZXItbGlmZWN5Y2xlLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogCisjIEVuYWJsZSB3aGVuIHN1cHBvcnQgZHJhZy1hbmQtZHJvcCBhdXRvc2Nyb2xsaW5n
Cit3ZWJraXQub3JnL2IvMzk3MjUgZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xs
Lmh0bWwgWyBTa2lwIF0KKwogIyBUcmFuc2llbnQuIE5lZWRzIHJlYmFzZWxpbmUuCiB3ZWJraXQu
b3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC80Nzc0MzU0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50LzQ3NzY3NjUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggOWYyNzg3YjMyNTJmODYwZmFiZmU0MDQ5NWZhYTkwN2ZhYmE3ODYyZi4uMzY2NWM4Y2M1NDY5
ZDVmYWNlZTdlY2I3MWQ0OTgyNjllNjBkOTVmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0yNTE1LDYgKzI1MTUsOSBAQCBmYXN0L3dvcmtlcnMvc3RvcmFn
ZS9pbnRlcnJ1cHQtZGF0YWJhc2UuaHRtbAogIyBbUXRdIE5ldyBmYXN0L2pzL2RmZy1jcmVhdGUt
aW5saW5lZC1hcmd1bWVudHMtaW4tY2xvc3VyZS1pbmxpbmUuaHRtbCBhc3NlcnRzIG9uIDMyIGJp
dAogd2Via2l0Lm9yZy9iLzEwNjQ1OSBbIERlYnVnIF0gZmFzdC9qcy9kZmctY3JlYXRlLWlubGlu
ZWQtYXJndW1lbnRzLWluLWNsb3N1cmUtaW5saW5lLmh0bWwKIAorIyBFbmFibGUgd2hlbiBzdXBw
b3J0IGRyYWctYW5kLWRyb3AgYXV0b3Njcm9sbGluZword2Via2l0Lm9yZy9iLzM5NzI1IGZhc3Qv
ZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sIFsgU2tpcCBdCisKICMgTmV3IGlu
c3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItZm9ybWF0dGVyLmh0bWwgaW50cm9kdWNlZCBpbiBy
MTM5NjE3IGZhaWxzIG9uIEVGTCwgTWFjLCBRVAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA2ODgzCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWZvcm1h
dHRlci5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDg3Yzc5M2RmYTAwNmMxY2FlYzFhOTBkNDZiNjkwOWRiYmYzN2IwMTYuLjY0Mzk0NzRjNDAyOTMy
MzdkZDUwYWY0ZGM4ZDNlODg3MWFkMGZkYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0yNTA2LDYgKzI1MDYsOSBAQCBtZWRpYS92aWRlby1jb250cm9s
cy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwKIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNh
cHRpb25zLXRyYWNrbWVudS5odG1sCiBtZWRpYS92aWRlby1jb250cm9scy12aXNpYmxlLWV4aXRp
bmctZnVsbHNjcmVlbi5odG1sCiAKKyMgRW5hYmxlIHdoZW4gc3VwcG9ydCBkcmFnLWFuZC1kcm9w
IGF1dG9zY3JvbGxpbmcKK3dlYmtpdC5vcmcvYi8zOTcyNSBmYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLWF1dG9zY3JvbGwuaHRtbCBbIFNraXAgXQorCiAjIERldmljZSBQcm94aW1pdHkgaXMgbm90
IGVuYWJsZWQvaW1wbGVtZW50ZWQKIHByb3hpbWl0eS9hZGQtbGlzdGVuZXItZnJvbS1jYWxsYmFj
ay5odG1sCiBwcm94aW1pdHkvYmFzaWMtb3BlcmF0aW9uLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZkYWVhNjU3NTBjY2QxNTcz
ZmI5Y2M2NmYzYmZlZDE3YzEwOWI0NDAuLjFiMjlhNDA5Zjg4MWNiMjEzM2VjMDU0NmZhYjcyZmVk
OGUwMGJjOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMjk1OSw2ICsyOTU5LDkgQEAgd2Via2l0Lm9yZy9iLzEwMDg0NiBpbnNwZWN0
b3ItcHJvdG9jb2wvZGVidWdnZXItdGVybWluYXRlLWRlZGljYXRlZC13b3JrZXItd2hpbGUKICMg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDExNwogZmFzdC94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZWN1cnNpdmUtc3luYy1ldmVudC5odG1sCiAKKyMg
RW5hYmxlIHdoZW4gc3VwcG9ydCBkcmFnLWFuZC1kcm9wIGF1dG9zY3JvbGxpbmcKK3dlYmtpdC5v
cmcvYi8zOTcyNSBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbCBbIFNr
aXAgXQorCiAjIENTUzNfVEVYVCBpcyBkaXNhYmxlZCBvbiBXaW5kb3dzCiBmYXN0L2NzczMtdGV4
dC9jc3MzLXRleHQtYWxpZ24tbGFzdC9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUt
dGV4dC1hbGlnbi1sYXN0LWluaGVyaXRlZC5odG1sCiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQt
YWxpZ24tbGFzdC9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1hbGlnbi1s
YXN0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183400</attachid>
            <date>2013-01-18 01:33:05 -0800</date>
            <delta_ts>2013-01-20 17:30:35 -0800</delta_ts>
            <desc>Patch 3.0.5</desc>
            <filename>bug-39725-20130118183004.patch</filename>
            <type>text/plain</type>
            <size>37721</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ5OTYyNzdkY2VkYTk3
Mzc5NDk1ZWRiOWEzOGU0YTlkMDQ2NWNkYi4uNDVhNmY4OGUyMjVmMDJlOTI5ODk2YjVkNjhhYTBh
NzMxYjJmMWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTE0ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRHJhZ2dpbmcgb3Zl
ciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdo
ZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYXV0byBzY3JvbGxpbmcgZnVuY3Rp
b25hbGl0eSBkdXJpbmcgZHJhZy1hbmQtZHJvcAorICAgICAgICB3aGVuIGRyb3Agc291cmNlIGlz
IG5lYXIgZWRnZSBvZiBzY3JvbGxhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgV2hlbiBkcm9wIHNv
dXJjZSBpcyBpbnNpZGUgMjBweCBvZiBzY3JvbGxhYmxlIGVsZW1lbnQgbW9yZSB0aGFuIDIwMG1z
LAorICAgICAgICBzY3JvbGxhYmxlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBzY3JvbGxlZCBl
dmVyeSA1MG1zIHRvd2FyZCBkcm9wCisgICAgICAgIHNvdXJjZSBwb3NpdGlvbiwgZS5nLiB2ZXJ0
aWNhbGx5IHNjcm9sbCB1cCB3aGVuIGRyb3Agc291cmNlIGlzIGluIHRvcAorICAgICAgICBlZGdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcik6IENo
YW5nZWQgdG8gaW5pdGlhbGl6ZSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6
IEFkZGVkIGZvciBzdGFydC9zdG9wIGF1dG9zY3JvbGwgZHVyaW5nIGRyYWctYW5kLWRyb3AuCisg
ICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQpOiBDaGFuZ2VkIHRvIGFkZCBhdXRvc2Nyb2xsIGZvciBkcmFnLWFuZC1kcm9wLCBhbmQgdG8g
cGFzcyBsYXN0IGtub3cgcG9zaXRpb24gdG8gUmVuZGVyQm94OjphdXRvc2Nyb2xsKCkuCisgICAg
ICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoQXV0b3Njcm9sbENv
bnRyb2xsZXIpOiBDaGFuZ2VkIHRvIGFkZCB1cGRhdGVEcmFnQW5kRHJvcCgpIGFuZCBtX2RyYWdB
bmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0aW9uIGFuZCBtX2RyYWdBbmREcm9wQXV0b3Nj
cm9sbFN0YXJ0VGltZS4KKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50KTogQ2hhbmdlZCB0byBhZGQgbmV3IGZ1bmN0aW9uIHNob3Vs
ZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcCgpLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ap
OiBDaGFuZ2VkIHRvIGNhbGwgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZURyYWdBbmREcm9w
KCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyRHJhZ1N0YXRlKTogQ2hh
bmdlZCB0byBjYWxsIHN0b3BBdXRvc2Nyb2xsVGltZXIoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXV0b3Njcm9sbCk6
IENoYW5nZWQgZm9yIG5ldyBwYXJhbWV0ZXIgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24pOiBBZGRlZCBmb3IgYXV0b3Nj
cm9sbC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6ICBDaGFuZ2VkIGZvciBuZXcgcGFyYW1ldGVy
IHBvc2l0aW9uIGFuZCBtb3ZlIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpIHRvIEF1dG9z
Y3JvbGxDb250cm9sbGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAg
ICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwpOiAgQ2hhbmdl
ZCBmb3IgbmV3IHBhcmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5oOgorICAgICAgICAoUmVuZGVyTGlzdEJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmF1dG9zY3JvbGwpOiAgQ2hhbmdlZCBmb3IgbmV3IHBh
cmFtZXRlciBwb3NpdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmg6CisgICAgICAgIChSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorCiAy
MDEzLTAxLTE4ICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFtOZXR3b3JrXSBGaXggSlNEb2NzIGFuZCBkZWR1cGxpY2F0
ZSBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxOWUwNmU4NmYxZmY3N2ZhMWU5
Yzg3NjIxMDJmMTM4YWNmOTFlYmE1Li4zM2M5YzllZDFhOWU5ZTU2Yzc5N2NjNWVmMDQ1MjQ4YThh
YTYwNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEz
LTAxLTE0ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
RHJhZ2dpbmcgb3ZlciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91bGQgc2Nyb2xsIHRo
ZSBlbGVtZW50IHdoZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgRHJhZ1Njcm9sbFRp
bWVyIHVzZWQgZm9yIGF1dG9tYXRpYyBzY3JvbGxpbmcgb2YgbWFpbgorICAgICAgICBmcmFtZSBk
cmFnLWFuZC1kcm9wIHdoaWNoIGlzIG5vdyBpbXBsZW1lbnRlZCBpbiBFdmVudEhhbmRsZXIuCisK
KyAgICAgICAgQW5vdGhlciBwYXRjaCB3aWxsIHJlbW92ZSBEcmFnU2Nyb2xsVGltZXIue2NwcCxo
fSBhbmQgdXBkYXRlIEdZUCBmaWxlcyB0bworICAgICAgICBtYWtlIHBhdGNoIHNpemUgc21hbGwu
CisKKyAgICAgICAgTm8gdGVzdHMuIEV4aXN0aW5nIHRlc3QgY292ZXJzIHRoaXMgY2hhbmdlLgor
CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnRJbXBsOjpzaG91bGRBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3ApOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50
SW1wbCk6IENoYW5nZWQgdG8gYWRkIHNob3VsZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcCgpLgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpXZWJWaWV3SW1wbCk6IENoYW5nZWQgdG8gcmVtb3ZlIG1fZHJhZ1Njcm9sbFRpbWVyLgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZUVuZGVkQXQpOiBkaXR0bwor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZU1vdmVkVG8pOiBkaXR0bwor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyb3ApOiBkaXR0bworICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyYWdFbnRlck9yT3Zlcik6IGRp
dHRvCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOiBDaGFn
bmVkIHRvIHJlbW92ZSBEcmFnU2Nyb2xsVGltZXIuCisKIDIwMTMtMDEtMTcgIERvbWluaWMgQ29v
bmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZp
ZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3Jv
bGxDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xs
ZXIuY3BwCmluZGV4IDJhZWI4YzQ2NGMwNGZmZGM3ODgyZWJmMzJlMGNjYWU3YzhlYzU5MTcuLjhm
MmQ3ZWFhODNhOTg5YTEwMjVkOTAzM2NlNDFjMjUwZTJkZmMxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0b3Njcm9sbENvbnRyb2xsZXIuaCIKIAorI2lu
Y2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkV2
ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CkBAIC0zNSw5ICszNywxMyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJC
b3guaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRGVsYXkgdGltZSBpbiBzZWNvbmQgZm9y
IHN0YXJ0IGF1dG9zY3JvbGwgaWYgcG9pbnRlciBpcyBpbiBib3JkZXIgZWRnZSBvZiBzY3JvbGxh
YmxlIGVsZW1lbnQuCitzdGF0aWMgZG91YmxlIGF1dG9zY3JvbGxEZWxheSA9IDAuMjsKKwogLy8g
V2hlbiB0aGUgYXV0b3Njcm9sbCBvciB0aGUgcGFuU2Nyb2xsIGlzIHRyaWdnZXJlZCB3aGVuIGRv
IHRoZSBzY3JvbGwgZXZlcnkgMC4wNXMgdG8gbWFrZSBpdCBzbW9vdGgKIHN0YXRpYyBjb25zdCBk
b3VibGUgYXV0b3Njcm9sbEludGVydmFsID0gMC4wNTsKIApAQCAtNTMsNiArNTksNyBAQCBBdXRv
c2Nyb2xsQ29udHJvbGxlcjo6QXV0b3Njcm9sbENvbnRyb2xsZXIoKQogICAgIDogbV9hdXRvc2Ny
b2xsVGltZXIodGhpcywgJkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJl
ZCkKICAgICAsIG1fYXV0b3Njcm9sbFJlbmRlcmVyKDApCiAgICAgLCBtX2F1dG9zY3JvbGxUeXBl
KE5vQXV0b3Njcm9sbCkKKyAgICAsIG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsU3RhcnRUaW1lKDAp
CiB7CiB9CiAKQEAgLTEzNiw2ICsxNDMsNTAgQEAgdm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6
dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCkKICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHJl
bmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpID8gdG9SZW5kZXJCb3gocmVuZGVyZXIpIDogMDsK
IH0KIAordm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoTm9kZSog
ZHJvcFRhcmdldE5vZGUsIGNvbnN0IEludFBvaW50JiBldmVudFBvc2l0aW9uLCBkb3VibGUgZXZl
bnRUaW1lKQoreworICAgIGlmICghZHJvcFRhcmdldE5vZGUpIHsKKyAgICAgICAgc3RvcEF1dG9z
Y3JvbGxUaW1lcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVuZGVyQm94KiBz
Y3JvbGxhYmxlID0gUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUoZHJvcFRhcmdldE5vZGUt
PnJlbmRlcmVyKCkpOworICAgIGlmICghc2Nyb2xsYWJsZSkgeworICAgICAgICBzdG9wQXV0b3Nj
cm9sbFRpbWVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZSogZnJhbWUg
PSBzY3JvbGxhYmxlLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgc3RvcEF1
dG9zY3JvbGxUaW1lcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGFnZSogcGFn
ZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnNob3VsZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcChzY3JvbGxhYmxlKSkgeworICAg
ICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBJbnRTaXplIG9mZnNldCA9IHNjcm9sbGFibGUtPmNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rp
b24oZXZlbnRQb3NpdGlvbik7CisgICAgaWYgKG9mZnNldC5pc1plcm8oKSkgeworICAgICAgICBz
dG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Ry
YWdBbmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0aW9uID0gZXZlbnRQb3NpdGlvbiArIG9m
ZnNldDsKKworICAgIGlmIChtX2F1dG9zY3JvbGxUeXBlID09IE5vQXV0b3Njcm9sbCkgeworICAg
ICAgICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbEZvckRyYWdBbmREcm9wOworICAgICAg
ICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgICAgIG1fZHJhZ0FuZERy
b3BBdXRvc2Nyb2xsU3RhcnRUaW1lID0gZXZlbnRUaW1lOworICAgICAgICBzdGFydEF1dG9zY3Jv
bGxUaW1lcigpOworICAgIH0gZWxzZSBpZiAobV9hdXRvc2Nyb2xsUmVuZGVyZXIgIT0gc2Nyb2xs
YWJsZSkgeworICAgICAgICBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZSA9IGV2ZW50
VGltZTsKKyAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSBzY3JvbGxhYmxlOworICAgIH0K
K30KKwogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogdm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxl
cjo6ZGlkUGFuU2Nyb2xsU3RhcnQoKQogewpAQCAtMTk2LDEzICsyNDcsMjAgQEAgdm9pZCBBdXRv
c2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8QXV0b3Njcm9sbENv
bnRyb2xsZXI+KikKIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5m
cmFtZSgpOwogICAgIHN3aXRjaCAobV9hdXRvc2Nyb2xsVHlwZSkgewotICAgIGNhc2UgQXV0b3Nj
cm9sbEZvclNlbGVjdGlvbjoKLSAgICAgICAgaWYgKCFmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1v
dXNlUHJlc3NlZCgpKSB7CisgICAgY2FzZSBBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3A6CisgICAg
ICAgIGlmIChXVEY6OmN1cnJlbnRUaW1lKCkgLSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0
VGltZSA+IGF1dG9zY3JvbGxEZWxheSkKKyAgICAgICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVy
LT5hdXRvc2Nyb2xsKG1fZHJhZ0FuZERyb3BBdXRvc2Nyb2xsUmVmZXJlbmNlUG9zaXRpb24pOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1dG9zY3JvbGxGb3JTZWxlY3Rpb246IHsKKyAgICAg
ICAgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCk7Cisg
ICAgICAgIGlmICghZXZlbnRIYW5kbGVyLT5tb3VzZVByZXNzZWQoKSkgewogICAgICAgICAgICAg
c3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5hdXRvc2Nyb2xsKCk7CisgICAgICAgIGV2ZW50
SGFuZGxlci0+dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCk7CisgICAgICAgIG1fYXV0b3Nj
cm9sbFJlbmRlcmVyLT5hdXRvc2Nyb2xsKGV2ZW50SGFuZGxlci0+bGFzdEtub3duTW91c2VQb3Np
dGlvbigpKTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgTm9BdXRvc2Nyb2xsOgog
ICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaAppbmRleCAwMmUzNWUxNjllNjJkOWU1OTRhYjlm
NTYxZWMxOWY2YzViMjg0Mjg1Li5mNWQ0YmYwOWE2MWM4ZGNmOWI0YzM0ODAyMjE2MjQ0Y2NjNGRh
YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oCkBAIC0z
NCwxMiArMzQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRXZlbnRIYW5kbGVyOwog
Y2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZv
cm1Nb3VzZUV2ZW50OwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogCiBl
bnVtIEF1dG9zY3JvbGxUeXBlIHsKICAgICBOb0F1dG9zY3JvbGwsCisgICAgQXV0b3Njcm9sbEZv
ckRyYWdBbmREcm9wLAogICAgIEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24sCiAjaWYgRU5BQkxFKFBB
Tl9TQ1JPTExJTkcpCiAgICAgQXV0b3Njcm9sbEZvclBhbkNhblN0b3AsCkBAIC01Nyw2ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0QXV0b3Njcm9sbEZvclNlbGVjdGlvbihSZW5kZXJP
YmplY3QqKTsKICAgICB2b2lkIHN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5kZXJlcklzQmVp
bmdEZXN0cm95ZWQgPSBmYWxzZSk7CiAgICAgdm9pZCB1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIo
KTsKKyAgICB2b2lkIHVwZGF0ZURyYWdBbmREcm9wKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IElu
dFBvaW50JiBldmVudFBvc2l0aW9uLCBkb3VibGUgZXZlbnRUaW1lKTsKICNpZiBFTkFCTEUoUEFO
X1NDUk9MTElORykKICAgICB2b2lkIGRpZFBhblNjcm9sbFN0YXJ0KCk7CiAgICAgdm9pZCBkaWRQ
YW5TY3JvbGxTdG9wKCk7CkBAIC03NSw2ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgVGltZXI8QXV0
b3Njcm9sbENvbnRyb2xsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOwogICAgIFJlbmRlckJveCogbV9h
dXRvc2Nyb2xsUmVuZGVyZXI7CiAgICAgQXV0b3Njcm9sbFR5cGUgbV9hdXRvc2Nyb2xsVHlwZTsK
KyAgICBJbnRQb2ludCBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFJlZmVyZW5jZVBvc2l0aW9uOwor
ICAgIGRvdWJsZSBtX2RyYWdBbmREcm9wQXV0b3Njcm9sbFN0YXJ0VGltZTsKICNpZiBFTkFCTEUo
UEFOX1NDUk9MTElORykKICAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9zOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA4MzlhZTlmZjgyYTYzMzdlZTBlZjky
NzVkNmYyMmNmMDM0YjMxOTJlLi4zMmQyZjhmNzk1ZjViNDkyZTVlMWQzOTNkNTkzYzUzYmJiMTFk
ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM3NSw2ICszNzUsOSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IHBsdWdJblN0YXJ0TGFiZWxJ
bWFnZShSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6TGFiZWxTaXplKSBjb25zdCB7IHJldHVybiAw
OyB9CiAKKyAgICAvLyBGSVhNRTogUG9ydCBzaG91bGQgcmV0dXJuIHRydWUgdXNpbmcgaGV1cmlz
dGljIGJhc2VkIG9uIHNjcm9sbGFibGUoUmVuZGVyQm94KS4KKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQXV0b3Njcm9sbEZvckRyYWdBbmREcm9wKFJlbmRlckJveCopIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggN2VkNzIxYjVjNjYwNzA3ZjJk
MDY1NzIyMzJmMzY1Y2E5ZGFmMzMzYS4uY2ZlMjdlMWE3NjU0MTkyMzE5OTViZGU0ZDE5MTE3ZDBj
M2EyNWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTk2MCw2ICsx
OTYwLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCoKICAgICBpZiAobmV3VGFyZ2V0ICYmIG5l
d1RhcmdldC0+aXNUZXh0Tm9kZSgpKQogICAgICAgICBuZXdUYXJnZXQgPSBuZXdUYXJnZXQtPnBh
cmVudE5vZGUoKTsKIAorICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXItPnVwZGF0ZURyYWdBbmRE
cm9wKG5ld1RhcmdldC5nZXQoKSwgZXZlbnQucG9zaXRpb24oKSwgZXZlbnQudGltZXN0YW1wKCkp
OworCiAgICAgaWYgKG1fZHJhZ1RhcmdldCAhPSBuZXdUYXJnZXQpIHsKICAgICAgICAgLy8gRklY
TUU6IHRoaXMgb3JkZXJpbmcgd2FzIGV4cGxpY2l0bHkgY2hvc2VuIHRvIG1hdGNoIFdpbklFLiBI
b3dldmVyLAogICAgICAgICAvLyBpdCBpcyBzb21ldGltZXMgaW5jb3JyZWN0IHdoZW4gZHJhZ2dp
bmcgd2l0aGluIHN1YmZyYW1lcywgYXMgc2VlbiB3aXRoCkBAIC0yMDQzLDYgKzIwNDUsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIENsaXBib2FyZAogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXJEcmFnU3Rh
dGUoKQogeworICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKICAgICBtX2RyYWdUYXJnZXQgPSAw
OwogICAgIG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlID0gMDsKICAgICBtX3Nob3VsZE9ubHlG
aXJlRHJhZ092ZXJFdmVudCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCBmZTU4NmMyNTZiMmI3NTJmMjM1M2FkODY4ZWZiYWFkOWQ3ZDhlYmU4Li44NDAw
YjM0Njc5MGYxZTNmM2E4MGIzNDUzODE5NjgyOWJmN2I5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtODUsNiArODUsMTEgQEAgc3RhdGljIE92ZXJyaWRlU2l6
ZU1hcCogZ092ZXJyaWRlV2lkdGhNYXAgPSAwOwogc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ092
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodE1hcCA9IDA7CiBzdGF0aWMgT3ZlcnJp
ZGVTaXplTWFwKiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXAgPSAwOwog
CisKKy8vIFNpemUgb2YgYm9yZGVyIGJlbHQgZm9yIGF1dG9zY3JvbGwuIFdoZW4gbW91c2UgcG9p
bnRlciBpbiBib3JkZXIgYmVsdCwKKy8vIGF1dG9zY3JvbGwgaXMgc3RhcnRlZC4KK3N0YXRpYyBj
b25zdCBpbnQgYXV0b3Njcm9sbEJlbHRTaXplID0gMjA7CisKIGJvb2wgUmVuZGVyQm94OjpzX2hh
ZE92ZXJmbG93Q2xpcCA9IGZhbHNlOwogCiBSZW5kZXJCb3g6OlJlbmRlckJveChDb250YWluZXJO
b2RlKiBub2RlKQpAQCAtNzA4LDEwICs3MTMsMTAgQEAgYm9vbCBSZW5kZXJCb3g6OnVzZXNDb21w
b3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QKICAgICByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYg
aGFzTGF5ZXIoKSAmJiBsYXllcigpLT51c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogfQogCi12
b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbCgpCit2b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbChj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgaWYgKGxheWVyKCkpCi0gICAgICAgIGxh
eWVyKCktPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgbGF5ZXIoKS0+YXV0b3Njcm9sbChwb3NpdGlv
bik7CiB9CiAKIC8vIFRoZXJlIGFyZSB0d28ga2luZHMgb2YgcmVuZGVyZXIgdGhhdCBjYW4gYXV0
b3Njcm9sbC4KQEAgLTczNSw2ICs3NDAsMzMgQEAgYm9vbCBSZW5kZXJCb3g6OmNhbkF1dG9zY3Jv
bGwoKSBjb25zdAogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpID09IGZyYW1l
OwogfQogCisvLyBJZiBzcGVjaWZpZWQgcG9pbnQgaXMgaW4gYm9yZGVyIGJlbHQsIHJldHVybmVk
IG9mZnNldCBkZW5vdGVzIGRpcmVjdGlvbiBvZgorLy8gc2Nyb2xsaW5nLgorSW50U2l6ZSBSZW5k
ZXJCb3g6OmNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24oY29uc3QgSW50UG9pbnQmIHdpbmRv
d1BvaW50KSBjb25zdAoreworICAgIGlmICghZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIEludFNp
emUoKTsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUoKS0+dmlldygpOworICAg
IGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gSW50U2l6ZSgpOworCisgICAgSW50U2l6
ZSBvZmZzZXQ7CisgICAgSW50UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVu
dHMod2luZG93UG9pbnQpOworICAgIEludFJlY3QgYm94KGFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCkpOworCisgICAgaWYgKHBvaW50LngoKSA8IGJveC54KCkgKyBhdXRvc2Nyb2xsQmVsdFNpemUp
CisgICAgICAgIHBvaW50Lm1vdmUoLWF1dG9zY3JvbGxCZWx0U2l6ZSwgMCk7CisgICAgZWxzZSBp
ZiAocG9pbnQueCgpID4gYm94Lm1heFgoKSAtIGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAgICAg
cG9pbnQubW92ZShhdXRvc2Nyb2xsQmVsdFNpemUsIDApOworCisgICAgaWYgKHBvaW50LnkoKSA8
IGJveC55KCkgKyBhdXRvc2Nyb2xsQmVsdFNpemUpCisgICAgICAgIHBvaW50Lm1vdmUoMCwgLWF1
dG9zY3JvbGxCZWx0U2l6ZSk7CisgICAgZWxzZSBpZiAocG9pbnQueSgpID4gYm94Lm1heFkoKSAt
IGF1dG9zY3JvbGxCZWx0U2l6ZSkKKyAgICAgICAgcG9pbnQubW92ZSgwLCBhdXRvc2Nyb2xsQmVs
dFNpemUpOworICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocG9pbnQpIC0g
d2luZG93UG9pbnQ7Cit9CisKIFJlbmRlckJveCogUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFi
bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICB3aGlsZSAocmVuZGVyZXIgJiYgIShy
ZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkF1dG9zY3JvbGwo
KSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBjYTc0OWQyMDhiMGU3
OGFjZDYxOGY0NmIxNmM4MmI1MmM2NTU2ZjNhLi4yNzI0MjZjMmFhZWI1Mjc0M2VhMWNiNWRlZjI4
Y2U3NjdmZGJjZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC00NDcs
OCArNDQ3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBsb2dpY2FsU2Nyb2xsKFNjcm9s
bExvZ2ljYWxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0g
MSwgTm9kZSoqIHN0b3BOb2RlID0gMCk7CiAgICAgYm9vbCBjYW5CZVNjcm9sbGVkQW5kSGFzU2Ny
b2xsYWJsZUFyZWEoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2Fs
bHlTY3JvbGxlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAg
dmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKICAgICBib29sIGNhbkF1
dG9zY3JvbGwoKSBjb25zdDsKKyAgICBJbnRTaXplIGNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rp
b24oY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdDsKICAgICBzdGF0aWMgUmVuZGVy
Qm94KiBmaW5kQXV0b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3BBdXRvc2Nyb2xsKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJ
bnRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
OGZjMmRlOTVhNTg1MjI5NDI2NTU5YjYzNjNjM2E4YWEwOWM4ZWJmYS4uZDlhZDU1YTI5OTMxZTgy
YmUxYjM5OWZjNmY4MDVlNmM3ZDZkNzI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0yMjk0LDcgKzIyOTQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVy
OjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IExh
eQogICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KHgsIHkpLCB2aXNpYmxlUmVjdC5z
aXplKCkpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVy
TGF5ZXI6OmF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIEZyYW1l
KiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIzMDQs
MTEgKzIzMDQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKCkKICAgICBpZiAoIWZy
YW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAg
ICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygpOwot
I2VuZGlmCi0KLSAgICBJbnRQb2ludCBjdXJyZW50RG9jdW1lbnRQb3NpdGlvbiA9IGZyYW1lVmll
dy0+d2luZG93VG9Db250ZW50cyhmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmxhc3RLbm93bk1vdXNl
UG9zaXRpb24oKSk7CisgICAgSW50UG9pbnQgY3VycmVudERvY3VtZW50UG9zaXRpb24gPSBmcmFt
ZVZpZXctPndpbmRvd1RvQ29udGVudHMocG9zaXRpb24pOwogICAgIHNjcm9sbFJlY3RUb1Zpc2li
bGUoTGF5b3V0UmVjdChjdXJyZW50RG9jdW1lbnRQb3NpdGlvbiwgTGF5b3V0U2l6ZSgxLCAxKSks
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50Ojph
bGlnblRvRWRnZUlmTmVlZGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAppbmRleCAxOTA3MjA3ZGI3YjIzYTBjMDMyMGJiZTQ2YjdiNGU4NTMxYjQzYTc3Li44NWM1
ZWQ5OTM1M2FkYjdjMTljMWExNDI1Y2EwMDg3YWExY2U4ZTExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMzczLDcgKzM3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xs
RGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEpOwotICAg
IHZvaWQgYXV0b3Njcm9sbCgpOworICAgIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYp
OwogCiAgICAgdm9pZCByZXNpemUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3QgTGF5
b3V0U2l6ZSYpOwogICAgIGJvb2wgaW5SZXNpemVNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pblJl
c2l6ZU1vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCAzMWExZWQ4YWI0MjVjNWNhOTJjNzA0NGY2ODk3Y2JhNDFhYjFmNDQ0Li41MWY4ZTQ2NGNh
ZjUwZTNmMzBlNmJmODY2Y2E2YjY2ZmFhZjJhMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgaW50IFJlbmRlckxpc3RC
b3g6OnNjcm9sbFRvd2FyZChjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24pCiAgICAgcmV0dXJu
IGxpc3RJbmRleEF0T2Zmc2V0KHBvc2l0aW9uT2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5kZXJMaXN0
Qm94OjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVyTGlzdEJveDo6YXV0b3Njcm9sbChjb25zdCBJ
bnRQb2ludCYpCiB7CiAgICAgSW50UG9pbnQgcG9zID0gZnJhbWUoKS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5sYXN0S25vd25Nb3VzZVBvc2l0aW9u
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCBlZjBk
NjBhNmE2ZTkxN2IzNmJkZTRlMzg0Y2JkMjY1NmVkNDliYWY5Li4zNDkyOTNiMTI4ZjlkZWM1MDk0
YjNmMzFkN2UwZWM3ZTYxNWUyODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRk
Rm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgdmlydHVh
bCB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cEF1dG9zY3JvbGwoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYW5TY3JvbGwoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGYxNDI3MjdjNTFkMjIwZDAx
OTI4MWI3MjY3ZDYxMTk4ZmVjMWZlMGEuLjU0YmNmMTA5Nzc5NzZjYTYxMDA3ZGIyNTIyZTE0Y2My
ZTdlNzljZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0zODEsMTEgKzM4MSwxMSBAQCBib29sIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dGV4dFNob3VsZEJlVHJ1bmNhdGVkKCkgY29uc3QK
ICAgICAgICAgJiYgc3R5bGUoKS0+dGV4dE92ZXJmbG93KCkgPT0gVGV4dE92ZXJmbG93RWxsaXBz
aXM7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphdXRvc2Nyb2xsKCkK
K3ZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphdXRvc2Nyb2xsKGNvbnN0IEludFBv
aW50JiBwb3NpdGlvbikKIHsKICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBpbm5lclRleHRFbGVt
ZW50KCktPnJlbmRlckJveCgpLT5sYXllcigpOwogICAgIGlmIChsYXllcikKLSAgICAgICAgbGF5
ZXItPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgbGF5ZXItPmF1dG9zY3JvbGwocG9zaXRpb24pOwog
fQogCiBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzY3JvbGxXaWR0aCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmgKaW5kZXggZjc0NjFjYjk3MDYzODgyZmY2Mzg5MjViM2NiMTZhNDE0NWEwNDIw
OS4uMGJlMTQ5MzJmNDMwNGViZjU2MGZlMzZiZDI2NjJiMjI4Zjk3OTBjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
aApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
dXRvc2Nyb2xsKCk7CisgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQm
KTsKIAogICAgIC8vIFN1YmNsYXNzZWQgdG8gZm9yd2FyZCB0byBvdXIgaW5uZXIgZGl2LgogICAg
IHZpcnR1YWwgaW50IHNjcm9sbExlZnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggZTViZTM3MTEzNWY1YzEwNGIxYTk1
Y2QyNTMzZWEzODZhNTJkMzRlMi4uOGY3MDY5YzBmMDM0MmM4Y2YzMDg1YTQwNGU4YTU0ZDc5YmQz
Y2QyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKQEAgLTExMzEsNiArMTEzMSwxMiBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6Om51bVdo
ZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQgbnVtYmVyT2ZXaGVlbEhhbmRsZQogICAg
IG1fd2ViVmlldy0+bnVtYmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKG51bWJlck9mV2hl
ZWxIYW5kbGVycyk7CiB9CiAKK2Jvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c2hvdWxkQXV0b3Njcm9s
bEZvckRyYWdBbmREcm9wKFdlYkNvcmU6OlJlbmRlckJveCopIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIENocm9tZUNsaWVu
dEltcGw6Om5lZWRUb3VjaEV2ZW50cyhib29sIG5lZWRzVG91Y2hFdmVudHMpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggZDJhZDExMTdl
Y2JhNjE1NDcwNDkxMWQwMWM3OTkzZjZlMjlmOTljMS4uZDVlOWFmZjNhYTQzZTczYmZiOTkzZTkw
NjU3YWZlMmVmYTZlMjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaApAQCAtMjI1LDYgKzIyNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbikg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5z
aWduZWQpOwogCisgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJv
cChXZWJDb3JlOjpSZW5kZXJCb3gqIHNjcm9sbGFibGUpIGNvbnN0IE9WRVJSSURFOworCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2Nr
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYTFmYzU2NjczYTAyMzkwMGIx
Njk0MjZjMzBhOWI0ODVmMWUxMGIxYS4uNzhhOGNhMzFlMDZkYjFiZWU0NjgxNTcyYTg5NTlmMDEz
ZmFmNjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApA
QCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RHJhZ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgotI2luY2x1ZGUgIkRyYWdT
Y3JvbGxUaW1lci5oIgogI2luY2x1ZGUgIkRyYWdTZXNzaW9uLmgiCiAjaW5jbHVkZSAiRWRpdG9y
LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBAIC00MTUsNyArNDE0LDYgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fYXV0b2Zp
bGxQb3B1cCgwKQogICAgICwgbV9pc1RyYW5zcGFyZW50KGZhbHNlKQogICAgICwgbV90YWJzVG9M
aW5rcyhmYWxzZSkKLSAgICAsIG1fZHJhZ1Njcm9sbFRpbWVyKGFkb3B0UHRyKG5ldyBEcmFnU2Ny
b2xsVGltZXIpKQogICAgICwgbV9pc0NhbmNlbGluZ0Z1bGxTY3JlZW4oZmFsc2UpCiAgICAgLCBt
X2JlbmNobWFya1N1cHBvcnQodGhpcykKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CkBAIC0zMjcxLDcgKzMyNjksNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlRW5kZWRB
dCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAwKTsKICAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQocG1lLAogICAgICAg
ICBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihvcGVyYXRpb24pKTsKLSAgICBtX2RyYWdTY3Jv
bGxUaW1lci0+c3RvcCgpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlTW92ZWRU
bygKQEAgLTMyNzksNyArMzI3Niw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VNb3Zl
ZFRvKAogICAgIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwKICAgICBXZWJEcmFnT3BlcmF0
aW9uIG9wZXJhdGlvbikKIHsKLSAgICBtX2RyYWdTY3JvbGxUaW1lci0+dHJpZ2dlclNjcm9sbCht
YWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBjbGllbnRQb2ludCk7CiB9CiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OmRyYWdTb3VyY2VTeXN0ZW1EcmFnRW5kZWQoKQpAQCAtMzM2NSw4ICszMzYxLDYg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyb3AoY29uc3QgV2ViUG9pbnQmIGNsaWVu
dFBvaW50LAogCiAgICAgbV9kcmFnT3BlcmF0aW9uID0gV2ViRHJhZ09wZXJhdGlvbk5vbmU7CiAg
ICAgbV9jdXJyZW50RHJhZ0RhdGEgPSAwOwotCi0gICAgbV9kcmFnU2Nyb2xsVGltZXItPnN0b3Ao
KTsKIH0KIAogV2ViRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyYWdFbnRl
ck9yT3Zlcihjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBzY3Jl
ZW5Qb2ludCwgRHJhZ0FjdGlvbiBkcmFnQWN0aW9uLCBpbnQga2V5TW9kaWZpZXJzKQpAQCAtMzM5
NCwxMSArMzM4OCw2IEBAIFdlYkRyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdUYXJnZXRE
cmFnRW50ZXJPck92ZXIoY29uc3QgV2ViUG9pbnQmIGNsaWVudFBvCiAKICAgICAgbV9kcmFnT3Bl
cmF0aW9uID0gc3RhdGljX2Nhc3Q8V2ViRHJhZ09wZXJhdGlvbj4oZHJvcEVmZmVjdCk7CiAKLSAg
ICBpZiAoZHJhZ0FjdGlvbiA9PSBEcmFnT3ZlcikKLSAgICAgICAgbV9kcmFnU2Nyb2xsVGltZXIt
PnRyaWdnZXJTY3JvbGwobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgY2xpZW50UG9pbnQp
OwotICAgIGVsc2UKLSAgICAgICAgbV9kcmFnU2Nyb2xsVGltZXItPnN0b3AoKTsKLQogICAgIHJl
dHVybiBtX2RyYWdPcGVyYXRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCmluZGV4IDgxYTRhYjdiMWQ3NDM4YmU4Y2Q3OWEzZmYxMWFlM2Q4YjRlN2NiZGUu
LjMyZGU4ZDQxOGUzZWY2NmJhMTE5OTlkMmI1MmFjY2U0MWJmMTM0YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtOTIsNyArOTIsNiBAQCBjbGFzcyBCYXR0
ZXJ5Q2xpZW50SW1wbDsKIGNsYXNzIENvbnRleHRGZWF0dXJlc0NsaWVudEltcGw7CiBjbGFzcyBD
b250ZXh0TWVudUNsaWVudEltcGw7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
OwotY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsK
IGNsYXNzIExpbmtIaWdobGlnaHQ7CiBjbGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q7CkBA
IC04MjEsNyArODIwLDYgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6OlN0
cmluZywgV1RGOjpTdHJpbmc+IFNldHRpbmdzTWFwOwogICAgIE93blB0cjxTZXR0aW5nc01hcD4g
bV9pbnNwZWN0b3JTZXR0aW5nc01hcDsKLSAgICBPd25QdHI8RHJhZ1Njcm9sbFRpbWVyPiBtX2Ry
YWdTY3JvbGxUaW1lcjsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCiAgICAgLy8gVGhlIHByb3ZpZGVyIG9mIGRlc2t0b3Agbm90aWZp
Y2F0aW9uczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBlMzg0MTJiY2UxMDdiMGRlNjg5NGNhNjMwMzViNTQ3MDBmNzgwZWYyLi44ODhhMTI5MWM1
ODUyNTFiZGMxZTk2ZGQ3NTI1ZDJmYjNkNzFjMGZkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEtMTQgIFlv
c2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBEcmFnZ2luZyBv
dmVyIGFuIGVsZW1lbnQgd2l0aCBzY3JvbGxiYXJzIHNob3VsZCBzY3JvbGwgdGhlIGVsZW1lbnQg
d2hlbiBkcmFnZ2luZyBuZWFyIGVkZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjYW5jZWxpbmcgZHJhZy1hbmQt
ZHJvcCBieSBlc2NhcGUga2V5IGZvciB0ZXN0aW5nCisgICAgICAgIGJlaGF2aW9yIGFmdGVyIGNh
bmNlbGxhdGlvbiBkcmFnLWFuZC1kcm9wLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6ZG9Nb3VzZVVwKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpmaW5pc2hEcmFnQW5kRHJvcCk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6a2V5RG93bik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaDoK
KyAgICAgICAgKEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5oOiBBZGRlZCBWS0VZX0VTQ0FQRS4KKwog
MjAxMy0wMS0xNyAgWGlhb2JvIFdhbmcgIDx4YndhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAg
ICAgICAgIFtCbGFja0JlcnJ5XSBEUlQgLSBBY2NlcHQgaHR0cC9maWxlIFVSTCB3aGVuIHJ1bm5p
bmcgZHJ0LWxhdW5jaGVyIGZyb20gY29tbWFuZCBsaW5lCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAK
aW5kZXggNzczYTU2YjE3OTYyZDQzYWQ1NWNiNzU4Y2E4MThhNWMyZDdjZTRmNC4uYzk5YWY5YTMy
OWIxYWMxMTMxY2MxMWZkZmNjNDEzMTFhNzk2NDhiYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNw
cApAQCAtNDY4LDEwICs0NjgsMTcgQEAgdm9pZCBFdmVudFNlbmRlcjo6ZG9Nb3VzZVVwKGNvbnN0
IFdlYk1vdXNlRXZlbnQmIGUpCiAgICAgLy8gSWYgd2UncmUgaW4gYSBkcmFnIG9wZXJhdGlvbiwg
Y29tcGxldGUgaXQuCiAgICAgaWYgKGN1cnJlbnREcmFnRGF0YS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOworCiAgICAgV2ViUG9pbnQgY2xpZW50UG9pbnQoZS54LCBlLnkpOwogICAgIFdlYlBv
aW50IHNjcmVlblBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsKKyAgICBmaW5pc2hEcmFnQW5k
RHJvcChlLCB3ZWJ2aWV3KCktPmRyYWdUYXJnZXREcmFnT3ZlcihjbGllbnRQb2ludCwgc2NyZWVu
UG9pbnQsIGN1cnJlbnREcmFnRWZmZWN0c0FsbG93ZWQsIDApKTsKK30KIAotICAgIGN1cnJlbnRE
cmFnRWZmZWN0ID0gd2VidmlldygpLT5kcmFnVGFyZ2V0RHJhZ092ZXIoY2xpZW50UG9pbnQsIHNj
cmVlblBvaW50LCBjdXJyZW50RHJhZ0VmZmVjdHNBbGxvd2VkLCAwKTsKK3ZvaWQgRXZlbnRTZW5k
ZXI6OmZpbmlzaERyYWdBbmREcm9wKGNvbnN0IFdlYk1vdXNlRXZlbnQmIGUsIFdlYktpdDo6V2Vi
RHJhZ09wZXJhdGlvbiBkcmFnRWZmZWN0KQoreworICAgIFdlYlBvaW50IGNsaWVudFBvaW50KGUu
eCwgZS55KTsKKyAgICBXZWJQb2ludCBzY3JlZW5Qb2ludChlLmdsb2JhbFgsIGUuZ2xvYmFsWSk7
CisgICAgY3VycmVudERyYWdFZmZlY3QgPSBkcmFnRWZmZWN0OwogICAgIGlmIChjdXJyZW50RHJh
Z0VmZmVjdCkKICAgICAgICAgd2VidmlldygpLT5kcmFnVGFyZ2V0RHJvcChjbGllbnRQb2ludCwg
c2NyZWVuUG9pbnQsIDApOwogICAgIGVsc2UKQEAgLTY0OCw2ICs2NTUsMTIgQEAgdm9pZCBFdmVu
dFNlbmRlcjo6a2V5RG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQogCiAgICAgd2VidmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KGV2ZW50RG93
bik7CiAKKyAgICBpZiAoY29kZSA9PSBWS0VZX0VTQ0FQRSAmJiAhY3VycmVudERyYWdEYXRhLmlz
TnVsbCgpKSB7CisgICAgICAgIFdlYk1vdXNlRXZlbnQgZXZlbnQ7CisgICAgICAgIGluaXRNb3Vz
ZUV2ZW50KFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93biwgcHJlc3NlZEJ1dHRvbiwgbGFzdE1vdXNl
UG9zLCAmZXZlbnQsIGdldEN1cnJlbnRFdmVudFRpbWVTZWMobV9kZWxlZ2F0ZSkpOworICAgICAg
ICBmaW5pc2hEcmFnQW5kRHJvcChldmVudCwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uTm9uZSk7
CisgICAgfQorCiAgICAgbV9kZWxlZ2F0ZS0+Y2xlYXJFZGl0Q29tbWFuZCgpOwogCiAgICAgaWYg
KGdlbmVyYXRlQ2hhcikgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKaW5kZXggYjFkYTY4NDg3NjExMDhi
NGE2YzdhNmJmMzE4Njk2YzU5MTVmYmIyYy4uYzJiM2NkOWZlYzI3NmUxOGQ2Mzk4YzBmMTk3YjM0
ZDUxNTkwOTllZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCkBAIC0xNTgsNiArMTU4LDcgQEAgcHJp
dmF0ZToKICAgICAvLyBtb2RpZmllciB0byBiZSBwYXNzZWQgaW50byB0aGUgZ2VuZXJhdGVkIGV2
ZW50LgogICAgIGJvb2wgbmVlZHNTaGlmdE1vZGlmaWVyKGludCk7CiAKKyAgICB2b2lkIGZpbmlz
aERyYWdBbmREcm9wKGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYsIFdlYktpdDo6V2ViRHJh
Z09wZXJhdGlvbik7CiAgICAgdm9pZCB1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKFdlYktpdDo6
V2ViTW91c2VFdmVudDo6QnV0dG9uKTsKIAogICAgIC8vIENvbXBvc2UgYSB0b3VjaCBldmVudCBm
cm9tIHRoZSBjdXJyZW50IHRvdWNoIHBvaW50cyBhbmQgc2VuZCBpdC4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5n
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2Rl
TWFwcGluZy5oCmluZGV4IDg3NDY5ZmFjNGE1YzExNTAyYzkzNWUxZGQyOGRmZTc0MmI4YjZhZTMu
LjAyM2U1OTVmYWZjZDFlOWJkNTU3NDZjNjJlNTgxNmNjMTdjNmE2NzIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5n
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5
Q29kZU1hcHBpbmcuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7
CiAvLyBUaGUga2V5Y29kZXMgbWF0Y2ggdGhlIHZhbHVlcyBvZiB0aGUgdmlydHVhbCBrZXljb2Rl
cyBmb3VuZCBoZXJlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5k
b3dzL2Rlc2t0b3AvZGQzNzU3MzEodj12cy44NSkuYXNweAogZW51bSB7CiAgICAgVktFWV9SRVRV
Uk4gICA9IDB4MEQsCisgICAgVktFWV9FU0NBUEUgICA9IDB4MUIsCiAgICAgVktFWV9QUklPUiAg
ICA9IDB4MjEsCiAgICAgVktFWV9ORVhUICAgICA9IDB4MjIsCiAgICAgVktFWV9FTkQgICAgICA9
IDB4MjMsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZDMyM2NiMDc5OTFjZDk5NGVjMDg1YWE4YzBjNTE2MGI2YmE2NzNmNS4u
OTkwZDkwMTlhMWM3NWM0YTA1MWRmNmVkODBjOGY1NmFiZGQxZmIyNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDEzLTAxLTE0ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgRHJhZ2dpbmcgb3ZlciBhbiBlbGVtZW50IHdpdGggc2Nyb2xsYmFycyBzaG91
bGQgc2Nyb2xsIHRoZSBlbGVtZW50IHdoZW4gZHJhZ2dpbmcgbmVhciBlZGdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmV3
IHRlc3QgZm9yIGF1dG9zY3JvbGwgZHVyaW5nIGRyYWctYW5kLWRyb3AuCisgICAgICAgIFRoaXMg
dGVzdCBpcyBza2lwcGVkIG90aGVyIHRoYW4gQ2hyb21pdW0gcG9ydHMuCisKKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6IENoYW5nZWQgdG8g
c2tpcCBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbAorICAgICAgICAq
IHBsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6IGRpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9uczogZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4
cGVjdGF0aW9uczogZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnM6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOiBkaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczogZGl0dG8uCisKIDIw
MTMtMDEtMTggIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMmU2MTQ4MjlhYzM3ZWIzZDJiNjE3ODgwY2VmMDU5M2JjZWJkNjNj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJv
cC1hdXRvc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK0ZvciBtYW51YWwgdGVz
dGluZywgZHJhZyBhbmQgZHJvcCAiRHJvcCBNZSIgdG8gIlNjcm9sbGFibGUiIGFyZWEuCitDaGVj
ayBhdXRvc2Nyb2xsIGJ5IGRyYWctYW5kLWRyb3AKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgc2Nyb2xsYWJsZS5zY3JvbGxUb3AgPiAwCitQQVNTIGF1dG9zY3JvbGwgc3Rv
cHBlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9w
LWF1dG9zY3JvbGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3At
YXV0b3Njcm9sbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZmU3ZTMwYzE0MzEyYmM1MDdlZWY1Y2Q1MDE3
YzdhZWVhODI5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9k
cmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbApAQCAtMCwwICsxLDEyNyBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisjZHJhZ2dhYmxlIHsKKyAgcGFkZGluZzog
NXB0OworICBib3JkZXI6IDNweCBzb2xpZCAjMDBjYzAwOworICBiYWNrZ3JvdW5kOiAjMDBjY2Nj
OworICB3aWR0aDogODBweDsKKyAgY3Vyc29yOiBoYW5kOworfQorCisjc2Nyb2xsYWJsZSB7Cisg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICBvdmVyZmxvdzogYXV0bzsKKyAgICBib3JkZXI6IHNvbGlk
IDNweCAjY2MwMDAwOworICAgIGZvbnQtc2l6ZTogODBweDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0
PgorZnVuY3Rpb24gJChpZCkgeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB9
CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgICQoJ2NvbnRhaW5lcicpLmlubmVySFRNTCA9ICcnOworICAgIHdpbmRvdy50ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdEl0KCkgeworICAgIHZhciBkcmFnZ2Fi
bGUgPSAkKCdkcmFnZ2FibGUnKTsKKyAgICB2YXIgc2Nyb2xsYWJsZSA9ICQoJ3Njcm9sbGFibGUn
KTsKKworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworCisgICAgLy8gR3JhYiBkcmFnZ2FibGUK
KyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhkcmFnZ2FibGUub2Zmc2V0TGVmdCArIDUsIGRy
YWdnYWJsZS5vZmZzZXRUb3AgKyA1KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKwor
ICAgIC8vIE1vdmUgbW91c2UgdG8gYXV0b3Njcm9sbCBib3JkZXIgYmVsdC4KKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzY3JvbGxhYmxlLm9mZnNldExlZnQgKyA1LCBzY3JvbGxhYmxlLm9m
ZnNldFRvcCArIHNjcm9sbGFibGUub2Zmc2V0SGVpZ2h0IC0gMTApOworCisgICAgdmFyIHJldHJ5
Q291bnQgPSAwOworICAgIHZhciBsYXN0U2Nyb2xsVG9wID0gMDsKKworICAgIGZ1bmN0aW9uIGNo
ZWNrU2Nyb2xsZWQoKQorICAgIHsKKyAgICAgICAgaWYgKHNjcm9sbGFibGUuc2Nyb2xsVG9wID4g
MCkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgnc2Nyb2xsYWJsZS5zY3JvbGxUb3AgPiAwJyk7
CisgICAgICAgICAgICBsYXN0U2Nyb2xsVG9wID0gc2Nyb2xsYWJsZS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAvLyBDYW5jZWwgZHJhZyBhbmQgZHJvcCBieSBFU0Mga2V5LgorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bignXHgxQicpOworICAgICAgICAgICAgcmV0cnlDb3VudCA9IDA7
CisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjaGVja1N0b3BwZWQsIDUwKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgICsrcmV0cnlDb3VudDsKKyAgICAg
ICAgaWYgKHJldHJ5Q291bnQgPiAxMCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnTm8gYXV0
b3Njcm9sbCcpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgLy8gQXV0b3Njcm9sbCBpcyBvY2N1cnJlZCBldmV5IDAu
MDUgc2VjLgorICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjaGVja1Njcm9sbGVkLCA1MCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tTdG9wcGVkKCkKKyAgICB7CisgICAgICAgIGlmIChs
YXN0U2Nyb2xsVG9wID09IHNjcm9sbGFibGUuc2Nyb2xsVG9wKSB7CisgICAgICAgICAgICB0ZXN0
UGFzc2VkKCdhdXRvc2Nyb2xsIHN0b3BwZWQnKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgICsrcmV0cnlDb3VudDsK
KyAgICAgICAgaWYgKHJldHJ5Q291bnQgPiAxMCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgn
c3RpbGwgYXV0b3Njcm9sbCcpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGFzdFNjcm9sbFRvcCA9IHNjcm9sbGFi
bGUuc2Nyb2xsVG9wOworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjaGVja1N0b3BwZWQsIDUw
KTsKKyAgICB9CisKKyAgICBjaGVja1Njcm9sbGVkKCk7Cit9CisKK2Z1bmN0aW9uIHNldFVwVGVz
dCgpCit7CisgICAgdmFyIHNjcm9sbGFibGUgPSAkKCdzY3JvbGxhYmxlJyk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICAgIGxpbmUuaW5uZXJIVE1MID0gImxpbmUgIiArIGk7Cisg
ICAgICBzY3JvbGxhYmxlLmFwcGVuZENoaWxkKGxpbmUpOworICAgIH0KKworICAgIGlmICghd2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCdQbGVhc2UgcnVuIHdpdGhp
biBEdW1wUmVuZGVyVHJlZScpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRlc3RJdCwgMCk7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorRm9yIG1hbnVhbCB0ZXN0aW5nLCBkcmFn
IGFuZCBkcm9wICJEcm9wIE1lIiB0byAiU2Nyb2xsYWJsZSIgYXJlYS4KKzxkaXYgaWQ9ImNvbnRh
aW5lciI+Cis8ZGl2IGlkPSJkcmFnZ2FibGUiIGRyYWdnYWJsZT0idHJ1ZSI+RHJvcCBNZTwvZGl2
PgorU2Nyb2xsYWJsZQorPGRpdiBpZD0ic2Nyb2xsYWJsZSI+Cis8L2Rpdj4KKzwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQ2hlY2sgYXV0b3Nj
cm9sbCBieSBkcmFnLWFuZC1kcm9wJyk7CitzZXRVcFRlc3QoKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA1ZDYwMWI4OGY4ZGZjMjIyMDRjOGYzOTEyNGYyZjQ4ZmU0MTZiOGM4Li41OGYxODBmMTkzYjY5
NzAzYWUyOTQ4MjM1NTMyMjg4MDdiZDFmOTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc3NSw2ICsxNzc1LDkgQEAgd2Via2l0Lm9yZy9iLzEwNTI5
NyB3ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1wbGF5YmFja3JhdGUuaHRtbCBbIEZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzEwNTUzNSBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlvLmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU1MzUgaW5zcGVjdG9yLXByb3RvY29sL25t
aS13ZWJhdWRpby1sZWFrLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogCisjIEVuYWJsZSB3aGVuIHN1
cHBvcnQgZHJhZy1hbmQtZHJvcCBhdXRvc2Nyb2xsaW5nCit3ZWJraXQub3JnL2IvMzk3MjUgZmFz
dC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwgWyBTa2lwIF0KKwogIyBMZWFr
aW5nIHN0YXRlIGludG8gdGhlIG5leHQgdGVzdC4KIHdlYmtpdC5vcmcvYi84NTUyMiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZm9ybS10b3AuaHRtbCBbIFNraXAgXQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDM0MDczN2M4MGIz
MDNiN2NjYTgzNzhlYmI1MTIzYjAyZTQ2YTQxMWEuLmE4MzAxMTM4MzhkNjc0YWQ0MGNjMWIzMWJm
NWI1MjQzMzhhY2Q4NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCkBAIC0xMzI0LDYgKzEzMjQsOSBAQCB3ZWJraXQub3JnL2IvMTA0Njg2IGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLXRyaXBtaW5lLmh0bQogCiB3ZWJr
aXQub3JnL2IvOTgxNDYgYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwgWyBGYWlsdXJlIF0K
IAorIyBFbmFibGUgd2hlbiBzdXBwb3J0IGRyYWctYW5kLWRyb3AgYXV0b3Njcm9sbGluZword2Vi
a2l0Lm9yZy9iLzM5NzI1IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1s
IFsgU2tpcCBdCisKICMgTGVha2luZyBzdGF0ZSBpbnRvIHRoZSBuZXh0IHRlc3QuCiB3ZWJraXQu
b3JnL2IvODU1MjIgaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tdG9w
Lmh0bWwgWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCA5MGU1NTgxYzU0MTM5OGRiMmM5NTgwYjJmY2U0MTQ3ZjMyYmEzOTIzLi4yOWVjMjI1
YmRlYTBiMWZiMGQ2NzdmYmJhMjNkY2NhNTYxNmY2ZDEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI3Nyw2ICsxMjc3LDkgQEAgd2Via2l0Lm9yZy9i
LzEwNjQxNSBmYXN0L3dvcmtlcnMvd29ya2VyLWNsb3NlLW1vcmUuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTA2NDE1IGZhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVh
ay5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDY0MTUgZmFzdC93b3JrZXJz
L3dvcmtlci1saWZlY3ljbGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKKyMgRW5hYmxlIHdoZW4g
c3VwcG9ydCBkcmFnLWFuZC1kcm9wIGF1dG9zY3JvbGxpbmcKK3dlYmtpdC5vcmcvYi8zOTcyNSBm
YXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwuaHRtbCBbIFNraXAgXQorCiAjIFRy
YW5zaWVudC4gTmVlZHMgcmViYXNlbGluZS4KIHdlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBh
aW50LzQ3NzQzNTQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwMzk1
NSBmYXN0L3JlcGFpbnQvNDc3Njc2NS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5ZjI3ODdiMzI1MmY4NjBmYWJm
ZTQwNDk1ZmFhOTA3ZmFiYTc4NjJmLi4zNjY1YzhjYzU0NjlkNWZhY2VlN2VjYjcxZDQ5ODI2OWU2
MGQ5NWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI1
MTUsNiArMjUxNSw5IEBAIGZhc3Qvd29ya2Vycy9zdG9yYWdlL2ludGVycnVwdC1kYXRhYmFzZS5o
dG1sCiAjIFtRdF0gTmV3IGZhc3QvanMvZGZnLWNyZWF0ZS1pbmxpbmVkLWFyZ3VtZW50cy1pbi1j
bG9zdXJlLWlubGluZS5odG1sIGFzc2VydHMgb24gMzIgYml0CiB3ZWJraXQub3JnL2IvMTA2NDU5
IFsgRGVidWcgXSBmYXN0L2pzL2RmZy1jcmVhdGUtaW5saW5lZC1hcmd1bWVudHMtaW4tY2xvc3Vy
ZS1pbmxpbmUuaHRtbAogCisjIEVuYWJsZSB3aGVuIHN1cHBvcnQgZHJhZy1hbmQtZHJvcCBhdXRv
c2Nyb2xsaW5nCit3ZWJraXQub3JnL2IvMzk3MjUgZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1h
dXRvc2Nyb2xsLmh0bWwgWyBTa2lwIF0KKwogIyBOZXcgaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVk
aXRvci1mb3JtYXR0ZXIuaHRtbCBpbnRyb2R1Y2VkIGluIHIxMzk2MTcgZmFpbHMgb24gRUZMLCBN
YWMsIFFUCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4ODMK
IGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItZm9ybWF0dGVyLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODdjNzkzZGZhMDA2YzFjYWVjMWE5
MGQ0NmI2OTA5ZGJiZjM3YjAxNi4uNjQzOTQ3NGM0MDI5MzIzN2RkNTBhZjRkYzhkM2U4ODcxYWQw
ZmRhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI1
MDYsNiArMjUwNiw5IEBAIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1z
b3J0ZWQuaHRtbAogbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWwK
IG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXZpc2libGUtZXhpdGluZy1mdWxsc2NyZWVuLmh0bWwKIAor
IyBFbmFibGUgd2hlbiBzdXBwb3J0IGRyYWctYW5kLWRyb3AgYXV0b3Njcm9sbGluZword2Via2l0
Lm9yZy9iLzM5NzI1IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sIFsg
U2tpcCBdCisKICMgRGV2aWNlIFByb3hpbWl0eSBpcyBub3QgZW5hYmxlZC9pbXBsZW1lbnRlZAog
cHJveGltaXR5L2FkZC1saXN0ZW5lci1mcm9tLWNhbGxiYWNrLmh0bWwKIHByb3hpbWl0eS9iYXNp
Yy1vcGVyYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fp
cm8vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggNmRhZWE2NTc1MGNjZDE1NzNmYjljYzY2ZjNiZmVkMTdjMTA5YjQ0
MC4uMWIyOWE0MDlmODgxY2IyMTMzZWMwNTQ2ZmFiNzJmZWQ4ZTAwYmM5MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0yOTU5LDYgKzI5
NTksOSBAQCB3ZWJraXQub3JnL2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci10
ZXJtaW5hdGUtZGVkaWNhdGVkLXdvcmtlci13aGlsZQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTE3CiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LXJlY3Vyc2l2ZS1zeW5jLWV2ZW50Lmh0bWwKIAorIyBFbmFibGUgd2hlbiBzdXBwb3J0IGRy
YWctYW5kLWRyb3AgYXV0b3Njcm9sbGluZword2Via2l0Lm9yZy9iLzM5NzI1IGZhc3QvZXZlbnRz
L2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sIFsgU2tpcCBdCisKICMgQ1NTM19URVhUIGlz
IGRpc2FibGVkIG9uIFdpbmRvd3MKIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1hbGlnbi1sYXN0
L2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LWFsaWduLWxhc3QtaW5oZXJp
dGVkLmh0bWwKIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1hbGlnbi1sYXN0L2dldENvbXB1dGVk
U3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LWFsaWduLWxhc3QuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>