<?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>95625</bug_id>
          
          <creation_ts>2012-08-31 16:52:17 -0700</creation_ts>
          <short_desc>[CSS Exclusions] add support for a subset of the basic shapes</short_desc>
          <delta_ts>2012-09-10 11:24:18 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89707</blocked>
    
    <blocked>96156</blocked>
    
    <blocked>96157</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyatt</cc>
    
    <cc>rakuco</cc>
    
    <cc>stearns</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>710071</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-08-31 16:52:17 -0700</bug_when>
    <thetext>Initial support for computing line layout within a subset of the shapes listed in the &quot;Basic Shapes&quot; section of the CSS Exclusions spec - http://dev.w3.org/csswg/css3-exclusions/#basic-shapes-from-svg-syntax.  

To keep the patch smaller and simpler, the support for polygons has been temporarily removed and I&apos;ve only gone as far as replacing the stub in WrapShapeInfo::computeSegmentsForLine() with a call - XShape::getInsideIntervals() - to the new shape class.

Subsequent patches will add tests for circle, ellipse, and rounded rectangle exclusions, and restore the support for XShape polygons, along with appropriate tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710072</commentid>
    <comment_count>1</comment_count>
      <attachid>161791</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-08-31 16:52:46 -0700</bug_when>
    <thetext>Created attachment 161791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710074</commentid>
    <comment_count>2</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-08-31 16:53:19 -0700</bug_when>
    <thetext>*** Bug 95490 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710075</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 16:54:52 -0700</bug_when>
    <thetext>Attachment 161791 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/rendering/WrapShapeInfo.cpp:123:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 15 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>710257</commentid>
    <comment_count>4</comment_count>
      <attachid>161830</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-01 09:39:08 -0700</bug_when>
    <thetext>Created attachment 161830
Patch

Removed the extra space check-webkit-style was complaining about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712413</commentid>
    <comment_count>5</comment_count>
      <attachid>161830</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-05 12:22:21 -0700</bug_when>
    <thetext>Comment on attachment 161830
Patch

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

Overall I&apos;m left scratching my head here regarding the mixture of physical and logical terminology. Your platform/graphics additions seem to be using largely physical terminology, but then everything you&apos;re doing with them over in the rendering code is in terms of logical coordinates (i.e., line top and line bottom are x values in vertical writing-modes, but you&apos;re happily passing those values in to your XShape code, which then calls them &quot;y&quot;).

I think you need to have a clear design intent here. Either the shapes are physical, in which case you need to be doing a translation at the WrapShapeInfo level, or the shapes themselves are logical, in which case I don&apos;t think you should be using x and y terminology in their implementations.

I&apos;m also wondering what the reasoning is behind putting all of the classes into platform/graphics. Especially if they end up being logical, I&apos;m not sure there is any reason to have them over there instead of just putting them in the rendering directory.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Initial commit of a subset of the Xhapes classes.

Typo, should be XShapes.

&gt; Source/WebCore/ChangeLog:10
&gt; +        This set of classes enables the exclusions layout code to determine how to break up a line into segements

Typo, segements should be segments.

&gt; Source/WebCore/ChangeLog:11
&gt; +        that will fit within or around a shape, given the Y coordinates of the line&apos;s top edge and bottom edges.

Do you mean logical top rather than Y?

&gt; Source/WebCore/platform/graphics/XSRectangle.h:39
&gt; +class XSRectangle : public XShape {

I think a comment above this class declaration describing what it represents might be helpful here.

&gt; Source/WebCore/platform/graphics/XSRectangle.h:54
&gt; +    virtual FloatRect shapeBoundingBox() const { return FloatRect(m_x, m_y, m_width, m_height); }
&gt; +    virtual void getOutsideIntervals(float y1, float y2, Vector&lt;XSInterval&gt;&amp;) const;
&gt; +    virtual void getInsideIntervals(float y1, float y2, Vector&lt;XSInterval&gt;&amp;) const;

You&apos;re missing OVERRIDEs on these three functions

&gt; Source/WebCore/platform/graphics/XSRectangle.h:62
&gt; +    float m_rx;
&gt; +    float m_ry;

I would add a comment here explaining what these are. A person who isn&apos;t familiar with this code will see x,y,width,height and understand those, but may be left scratching their head wondering what m_rx and m_ry are here.

&gt; Source/WebCore/platform/graphics/XShape.h:43
&gt; +    static PassOwnPtr&lt;XShape&gt; createXShape(const BasicShape*, float borderBoxWidth, float borderBoxHeight);

borderBoxWidth and borderBoxHeight are physical terminology. Is this physical or logical? I&apos;m confused about this.

&gt; Source/WebCore/rendering/WrapShapeInfo.cpp:110
&gt; +    m_xshape = XShape::createXShape(shape, logicalWidth, logicalHeight);

Here you&apos;re passing in logical values to a function whose (see my comment above)  arguments had physical names. Which is correct?

&gt; Source/WebCore/rendering/WrapShapeInfo.h:70
&gt; +    LayoutUnit shapeTop() const 

Is this logical or physical? If it&apos;s supposed to be a value that is compared with a line top or bottom, then this should be renamed to shapeLogicalTop().

&gt; Source/WebCore/rendering/WrapShapeInfo.h:103
&gt; +    FloatRect shapeBounds = m_xshape-&gt;shapeBoundingBox();

This appears to be logical. Is that the intent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712423</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-05 12:38:48 -0700</bug_when>
    <thetext>Oh, I mentioned this on IRC, but I would just put the XShape classes in rendering/ and rename them to ExclusionShape, ExclusionRectangle, etc. I don&apos;t think these classes are going to end up being anything generically reusable, so they should just be closer to the Exclusion implementation.

Is there any particular reason why WrapShape info isn&apos;t just called ExclusionShapeInfo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712443</commentid>
    <comment_count>7</comment_count>
    <who name="Alan Stearns">stearns</who>
    <bug_when>2012-09-05 12:56:04 -0700</bug_when>
    <thetext>(In reply to comment #6)

Dave,

The intent is to use Shapes both with exclusions and with floats (and eventually with masks or anything else that needs a shape). Do you have any suggestions on how to make these classes generically reusable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712753</commentid>
    <comment_count>8</comment_count>
      <attachid>162390</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-05 18:45:04 -0700</bug_when>
    <thetext>Created attachment 162390
Patch

Just the XS =&gt; ExclusionShape relocation/rename.  Moved the classes from platform/graphics to rendering and renamed the classes:

XSInterval  =&gt; ExclusionInterval
XSRectangle = &gt;ExclusionRectangle
XSShape =&gt; ExclusionShape

This patch is just to shakeout rename related build problems on the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712754</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 18:46:48 -0700</bug_when>
    <thetext>Attachment 162390 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/rendering/WrapShapeInfo.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 15 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>712845</commentid>
    <comment_count>10</comment_count>
      <attachid>162408</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-05 21:24:52 -0700</bug_when>
    <thetext>Created attachment 162408
Patch

Fixed the style-checker problem (alphabetized WrapInfo include files, and update the XCode project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713494</commentid>
    <comment_count>11</comment_count>
      <attachid>162542</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-06 11:16:54 -0700</bug_when>
    <thetext>Created attachment 162542
One shape-outside exclusion shape overlaps elements with different writing-modes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713503</commentid>
    <comment_count>12</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-06 11:24:16 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 161830 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161830&amp;action=review
&gt; 
&gt; Overall I&apos;m left scratching my head here regarding the mixture of physical and logical terminology. Your platform/graphics additions seem to be using largely physical terminology, but then everything you&apos;re doing with them over in the rendering code is in terms of logical coordinates (i.e., line top and line bottom are x values in vertical writing-modes, but you&apos;re happily passing those values in to your XShape code, which then calls them &quot;y&quot;).

Here&apos;s a proposal that I hope addresses the problem you&apos;ve brought up.

I think the ExclusionShape API should use logical coordinates for the incoming top/bottom line edges and similarly it should report line segments&apos; start/stops with logical X coordinates. The incoming BasicShape, which is just an encoding of the CSS shape, is defined with physical coordinates.  That means that createExclusionShape() method will need an additional parameter, so that it can transform the BasicShape&apos;s physical coordinates when the writing-mode is vertical.  It also means that an ExclusionShape will be specific to a writing-mode, so in a shape-outside case like this: https://bug-95625-attachments.webkit.org/attachment.cgi?id=162542, two ExclusionShape objects will be used to compute the layouts. 

Internally, the ExclusionShapes classes (just ExclusionRectangle for the moment) do their computations as if the writing-mode was horizontal.  I don&apos;t think this needs to change, although the ExclusionInterval class, which is used to report line segment endpoints, should use logical names for the X coordinates, start and end instead of x1 and x2.  Here&apos;s what the ExclusionShape API would become:

  // A representation of a BasicShape that enables layout code to determine how to break a line up into segments
  // that will fit within or around a shape. The line is defined by a pair of logical Y coordinates and the 
  // computed segments are returned as pairs of logical X coordinates (ExclusionIntervals).  

  class ExclusionShape {
  public:
      static PassOwnPtr&lt;ExclusionShape&gt; createExclusionShape(const BasicShape*, float borderBoxWidth, float borderBoxHeight, WritingMode);

      virtual ~ExclusionShape() { }

      virtual LayouRect shapeBoundingBox() const = 0;
      virtual void getInsideIntervals(float logicalTop, float logicalBottom, Vector&lt;ExclusionInterval&gt;&amp;) const = 0;
      virtual void getOutsideIntervals(float logicalTop, float logicalBottom, Vector&lt;ExclusionInterval&gt;&amp;) const = 0;
  };

  } // namespace WebCore


The shapeBoundingBox() would return the logical bounds of the exclusion shape.  I&apos;ve changed the return type from FloatRect to LayoutRect.

Currently the exclusion layout code only supports shape-inside (so an exclusion shape only affects one element&apos;s contents) and it explicitly ignores exclusions defined for vertical content (see WrapShapeInfo::isWrapShapeInfoEnabledForRenderBlock).  If possible, I&apos;d like to file a bug about the lack of writing-mode support in ExclusionShape, rather than making the changes now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713509</commentid>
    <comment_count>13</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-06 11:27:33 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Oh, I mentioned this on IRC, but I would just put the XShape classes in rendering/ and rename them to ExclusionShape, ExclusionRectangle, etc. I don&apos;t think these classes are going to end up being anything generically reusable, so they should just be closer to the Exclusion implementation.

I have moved and renamed the XS classes.

&gt; Is there any particular reason why WrapShape info isn&apos;t just called ExclusionShapeInfo?

The current name is (now) largely historical, and I&apos;d be happy to change it.  OK, if I file a separate bug for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713511</commentid>
    <comment_count>14</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-06 11:33:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 161830 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161830&amp;action=review

&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Initial commit of a subset of the Xhapes classes.
&gt; 
&gt; Typo, should be XShapes.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        This set of classes enables the exclusions layout code to determine how to break up a line into segements
&gt; 
&gt; Typo, segements should be segments.

I have fixed these typos.

&gt; &gt; Source/WebCore/platform/graphics/XSRectangle.h:54
&gt; &gt; +    virtual FloatRect shapeBoundingBox() const { return FloatRect(m_x, m_y, m_width, m_height); }
&gt; &gt; +    virtual void getOutsideIntervals(float y1, float y2, Vector&lt;XSInterval&gt;&amp;) const;
&gt; &gt; +    virtual void getInsideIntervals(float y1, float y2, Vector&lt;XSInterval&gt;&amp;) const;
&gt; 
&gt; You&apos;re missing OVERRIDEs on these three functions

Added the OVERRIDES.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/XSRectangle.h:62
&gt; &gt; +    float m_rx;
&gt; &gt; +    float m_ry;
&gt; 
&gt; I would add a comment here explaining what these are. A person who isn&apos;t familiar with this code will see x,y,width,height and understand those, but may be left scratching their head wondering what m_rx and m_ry are here.

Added comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713513</commentid>
    <comment_count>15</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-06 11:38:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 161830 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161830&amp;action=review

If, per comment #10, it&apos;s OK to make the changes vis logical vs physical geometry in a separate bug fix, I&apos;d like to address the following then:

&gt; Do you mean logical top rather than Y?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/XSRectangle.h:39
&gt; &gt; +class XSRectangle : public XShape {
&gt; 
&gt; I think a comment above this class declaration describing what it represents might be helpful here.

[I&apos;ve proposed such a comment in #10.  Since it depends on resolving logical vs physical geometry, I&apos;d like to include with that TBD patch]

&gt; &gt; Source/WebCore/platform/graphics/XShape.h:43
&gt; &gt; +    static PassOwnPtr&lt;XShape&gt; createXShape(const BasicShape*, float borderBoxWidth, float borderBoxHeight);
&gt; 
&gt; borderBoxWidth and borderBoxHeight are physical terminology. Is this physical or logical? I&apos;m confused about this.
&gt; 
&gt; &gt; Source/WebCore/rendering/WrapShapeInfo.cpp:110
&gt; &gt; +    m_xshape = XShape::createXShape(shape, logicalWidth, logicalHeight);
&gt; 
&gt; Here you&apos;re passing in logical values to a function whose (see my comment above)  arguments had physical names. Which is correct?
&gt; 
&gt; &gt; Source/WebCore/rendering/WrapShapeInfo.h:70
&gt; &gt; +    LayoutUnit shapeTop() const 
&gt; 
&gt; Is this logical or physical? If it&apos;s supposed to be a value that is compared with a line top or bottom, then this should be renamed to shapeLogicalTop().
&gt; 
&gt; &gt; Source/WebCore/rendering/WrapShapeInfo.h:103
&gt; &gt; +    FloatRect shapeBounds = m_xshape-&gt;shapeBoundingBox();
&gt; 
&gt; This appears to be logical. Is that the intent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715051</commentid>
    <comment_count>16</comment_count>
      <attachid>162408</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-07 15:33:09 -0700</bug_when>
    <thetext>Comment on attachment 162408
Patch

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

Looks pretty good. Just minor comments.

&gt; Source/WebCore/ChangeLog:499
&gt; -        * platform/graphics/harfbuzz/FontPlatformDataHarfBuzz.cpp:
&gt; +        * rendering/harfbuzz/FontPlatformDataHarfBuzz.cpp:

Not sure what this is about? I don&apos;t see this code in the patch.

&gt; Source/WebCore/ChangeLog:504
&gt; -        * platform/graphics/harfbuzz/FontPlatformDataHarfBuzz.h:
&gt; +        * rendering/harfbuzz/FontPlatformDataHarfBuzz.h:

Ditto.

&gt; Source/WebCore/rendering/ExclusionShape.h:43
&gt; +    static PassOwnPtr&lt;ExclusionShape&gt; createExclusionShape(const BasicShape*, float borderBoxWidth, float borderBoxHeight);

Rename borderBoxWidth and borderBoxHeight to borderBoxLogicalWidth and borderBoxLogicalHeight, since right now at least, your shapes are clearly logical.

&gt; Source/WebCore/rendering/WrapShapeInfo.cpp:110
&gt; +    m_xshape = ExclusionShape::createExclusionShape(shape, logicalWidth, logicalHeight);

I&apos;d just drop the x here. At this point, inside this class, it&apos;s pretty obvious what we&apos;re dealing with, so I would just call this m_shape.

&gt; Source/WebCore/rendering/WrapShapeInfo.h:70
&gt; +    LayoutUnit shapeTop() const 

Rename this to shapeLogicalTop(), since right now at least, it&apos;s clearly logical.

&gt; Source/WebCore/rendering/WrapShapeInfo.h:103
&gt; +    FloatRect shapeBounds = m_xshape-&gt;shapeBoundingBox();

Let&apos;s call the local shapeLogicalBoundingBox to help clarify it is logical in nature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715052</commentid>
    <comment_count>17</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-07 15:35:37 -0700</bug_when>
    <thetext>One more comment:

virtual void getInsideIntervals(float logicalTop, float logicalBottom, Vector&lt;ExclusionInterval&gt;&amp;) const = 0;
      virtual void getOutsideIntervals(float logicalTop, float logicalBottom, Vector&lt;ExclusionInterval&gt;&amp;) const = 0;

You should go ahead and do those renames to logicalTop and logicalBottom in the headers at least, instead of still using y1 and y2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715053</commentid>
    <comment_count>18</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-07 15:36:06 -0700</bug_when>
    <thetext>I mean minY / maxY.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715262</commentid>
    <comment_count>19</comment_count>
      <attachid>162938</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-07 22:10:27 -0700</bug_when>
    <thetext>Created attachment 162938
Patch

I&apos;ve made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715342</commentid>
    <comment_count>20</comment_count>
      <attachid>162938</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-09-08 07:55:17 -0700</bug_when>
    <thetext>Comment on attachment 162938
Patch

I&apos;ve created the following bugs per the additional work noted previously:

ExclusionShape API should use logical coordinates for input/output - https://bugs.webkit.org/show_bug.cgi?id=96156

Rename WrapShapeInfo to ExclusionShapeInfo  - https://bugs.webkit.org/show_bug.cgi?id=96157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716271</commentid>
    <comment_count>21</comment_count>
      <attachid>162938</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-10 10:56:42 -0700</bug_when>
    <thetext>Comment on attachment 162938
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716309</commentid>
    <comment_count>22</comment_count>
      <attachid>162938</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 11:24:13 -0700</bug_when>
    <thetext>Comment on attachment 162938
Patch

Clearing flags on attachment: 162938

Committed r128083: &lt;http://trac.webkit.org/changeset/128083&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716310</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 11:24:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161791</attachid>
            <date>2012-08-31 16:52:46 -0700</date>
            <delta_ts>2012-09-01 09:40:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>40858</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjExM2IzZi4uYTI3NDBlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE4NjMsNiArMTg2Myw5IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZ1N0b3JlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvWFNJbnRlcnZhbC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9YU1JlY3RhbmdsZS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9YU2hhcGUuY3BwCiAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNzg0Y2Y2ZC4uYmZjMDU4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDk3IEBACisyMDEyLTA4LTMxICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgor
CisgICAgICAgIFtDU1MgRXhsdXNpb25zXSBhZGQgc3VwcG9ydCBmb3IgdGhlIGJhc2ljIHNoYXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0OTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFs
IGNvbW1pdCBvZiBhIHN1YnNldCBvZiB0aGUgWGhhcGVzIGNsYXNzZXMuCisKKyAgICAgICAgVGhp
cyBzZXQgb2YgY2xhc3NlcyBlbmFibGVzIHRoZSBleGNsdXNpb25zIGxheW91dCBjb2RlIHRvIGRl
dGVybWluZSBob3cgdG8gYnJlYWsgdXAgYSBsaW5lIGludG8gc2VnZW1lbnRzCisgICAgICAgIHRo
YXQgd2lsbCBmaXQgd2l0aGluIG9yIGFyb3VuZCBhIHNoYXBlLCBnaXZlbiB0aGUgWSBjb29yZGlu
YXRlcyBvZiB0aGUgbGluZSdzIHRvcCBlZGdlIGFuZCBib3R0b20gZWRnZXMuCisgICAgICAgIFRo
ZSBYU2hhcGUgY2xhc3MgcmVwcmVzZW50cyBCYXNpY1NoYXBlcyB3aG9zZSBjb29yZGluYXRlcyBo
YXZlIGJlZW4gcmVzb2x2ZWQgdG8gYWN0dWFsIHZhbHVlcy4gSXQgcHJvdmlkZXMKKyAgICAgICAg
YSBwYWlyIG9mIG1ldGhvZHMsIGdldEluc2lkZUludGVydmFscygpIGFuZCBnZXRPdXRzaWRlSW50
ZXJ2YWxzKCksIHRoYXQgcmV0dXJuIHRoZSBsaW5lIHNlZ21lbnRzJyBzdGFydAorICAgICAgICBh
bmQgZW5kIFggY29vcmRpbmF0ZXMsIGFuZCBhIG1ldGhvZCB0aGF0IGNvbXB1dGVzIHRoZSBzaGFw
ZSdzIGJvdW5kaW5nIGJveC4gVGhlIGxpbmUgc2VnbWVudHMnIGNvb3JkaW5hdGVzCisgICAgICAg
IGFyZSByZXByZXNlbnRlZCBieSBhIFZlY3RvciBvZiBYU0ludGVydmFscy4gIFhTSW50ZXJ2YWwg
aXMganVzdCBhIHBhaXIgb2YgWCBjb29yZGluYXRlcy4KKworICAgICAgICBUaGUgb3RoZXIgY2xh
c3NlcywgWFNSZWN0YW5nbGUgKGFuZCBUQkQgWFNQb2x5Z29uIGV0IGFsKSwgYXJlIGludGVybmFs
IHRvIHRoZSBYU2hhcGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgVGhpcyBpcyB0aGUgaW5p
dGlhbCB2ZXJzaW9uIG9mIHRoZSBYU2hhcGVzIGNvZGUgYW5kIGl0J3Mgb25seSBiZWluZyB1c2Vk
IHRvIHRoZSBsaW1pdGVkIGV4dGVudCBXZWJLaXQKKyAgICAgICAgY3VycmVudGx5IHN1cHBvcnRz
IHNoYXBlLWluc2lkZSBleGNsdXNpb25zLiAgSXQgd2lsbCBiZSBleHRlbmRlZCB0byBzdXBwb3J0
IGNvbXB1dGluZyBhIG1pbmltYWwKKyAgICAgICAgbGluZSBzZWdtZW50J3MgImZpcnN0IGxheW91
dCBsb2NhdGlvbiIgYW5kIG90aGVyIGltcHJvdmVtZW50cywgaW4gdGFuZGVtIHdpdGggdGhlIGV4
Y2x1c2lvbnMgbGF5b3V0IGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGhhdmUgYmVlbiBh
ZGRlZCBzaW5jZSB0aGlzIGNvZGUganVzdCByZXBsYWNlcyBhIHByb3Zpc2lvbmFsIGltcGxlbWVu
dGF0aW9uIHN0dWIuCisKKyAgICAgICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWxnb3Jp
dGhtcyB1c2VkIGJ5IHRoZSBTaGFwZXMgbW9kdWxlIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwOi8v
aGFuc211bGxlci13ZWJraXQuYmxvZ3Nwb3QuY29tLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJp
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvWFNJbnRlcnZhbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnZhbFgxQ29tcGFyYXRvcjo6
b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpYU0ludGVydmFsOjppbnRlcnNlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6c29ydFhTSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6Om1l
cmdlWFNJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJzZWN0WFNJbnRlcnZhbHMp
OgorICAgICAgICAoV2ViQ29yZTo6c3VidHJhY3RYU0ludGVydmFscyk6CisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmg6IEFkZGVkLgorICAgICAgICBSZXByZXNlbnRz
IHRoZSBhY3R1YWwgc3RhcnQgYW5kIGVuZCBjb29yZGluYXRlcyBvZiBhIGhvcml6b250YWwgbGlu
ZSBzZWdtZW50LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChYU0ludGVydmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTSW50ZXJ2YWw6OlhTSW50ZXJ2YWwpOgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvWFNSZWN0YW5nbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6ZWxsaXBzZVhJbnRlcmNlcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6WFNSZWN0YW5nbGU6OmdldE91dHNpZGVJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6
WFNSZWN0YW5nbGU6OmdldEluc2lkZUludGVydmFscyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9YU1JlY3RhbmdsZS5oOiBBZGRlZC4KKyAgICAgICAgQSBzdWJjbGFzcyBvZiBYU2hh
cGUgdXNlZCB0byByZXByZXNlbnQgcm91bmRlZCByZWN0YW5nbGVzLCBjaXJjbGVzLCBhbmQgZWxs
aXBzZXMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFhTUmVjdGFuZ2xlKQorICAgICAg
ICAoV2ViQ29yZTo6WFNSZWN0YW5nbGU6OlhTUmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTUmVjdGFuZ2xlOjpzaGFwZUJvdW5kaW5nQm94KToKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1hTaGFwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVYU1JlY3RhbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYU0Np
cmNsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYU0VsbGlwc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6WFNoYXBlOjpjcmVhdGVYU2hhcGUpOgorICAgICAgICBDcmVhdGVzIGFuIFhTaGFwZSBn
aXZlbiBhIEJhc2ljU2hhcGUgYW5kIHRoZSB3aWR0aC9oZWlnaHQgb2YgYSBib3JkZXIgYm94LiAg
Q3VycmVudGx5IHJvdW5kZWQKKyAgICAgICAgcmVjdGFuZ2xlcywgY2lyY2xlcywgYW5kIGVsbGlw
c2VzIGFyZSBzdXBwb3J0ZWQuICBTdXBwb3J0IGZvciBwb2x5Z29ucyB3aWxsIGJlIGluY2x1ZGVk
IGluIHRoZQorICAgICAgICBuZXh0IHBhdGNoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvWFNoYXBlLmg6IEFkZGVkLgorICAgICAgICBUaGUgcmVzdCBvZiB0aGUgZXhjbHVzaW9ucyBp
bXBsZW1lbnRhdGlvbiB3aWxsIG9ubHkgZGVwZW5kIG9uIHRoZSBkZWZpbml0aW9ucyBpbmNsdWRl
ZCBieSB0aGlzIGZpbGU6IFhTaGFwZSwKKyAgICAgICAgYW5kIFhTSW50ZXJ2YWwuIFhTaGFwZSBz
dWJjbGFzc2VzIGRlZmluZSBzaGFwZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIG1l
dGhvZHMgdGhhdCBjb21wdXRlIHRoZQorICAgICAgICBob3Jpem9udGFsIGludGVydmFscyB0aGF0
IGZpdCB3aXRoaW4gb3IgYXJvdW5kIGEgc3BlY2lmaWMgc2hhcGUsIGEgc2hhcGUncyBib3VuZGlu
ZyBib3gsIGFuZCAtIGluIGZ1dHVyZQorICAgICAgICByZXZpc2lvbnMgLSBvdGhlciBvcGVyYXRp
b25zIHJlcXVpcmVkIGJ5IHRoZSBleGNsdXNpb25zIGltcGxlbWVudGF0aW9uLCBsaWtlIGNvbXB1
dGluZyB0aGUgZmlyc3QgcG9zc2libGUKKyAgICAgICAgbGF5b3V0IGxvY2F0aW9uIHdpdGhpbiBh
IHNoYXBlLiAgWFNoYXBlcyBhcmUgY3JlYXRlZCBmb3IgQmFzaWNTaGFwZSBvYmplY3RzIGFzIG5l
ZWRlZCwgdXNpbmcgdGhlCisgICAgICAgIGNyZWF0ZVhTaGFwZSgpIG1ldGhvZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoWFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTaGFwZTo6
flhTaGFwZSk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXcmFwU2hhcGVJbmZvOjpjb21wdXRlU2hhcGVTaXplKToKKyAgICAgICAg
Q3JlYXRlIGFuIFhTaGFwZSBmb3IgdGhlIFJlbmRlckJsb2NrJ3MgQmFzaWNTaGFwZS4KKyAgICAg
ICAgKFdlYkNvcmU6OldyYXBTaGFwZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUpOgorICAg
ICAgICBVc2UgWFNoYXBlOjpnZXRJbnNpZGVJbnRlcnZhbHMoKSB0byBjb21wdXRlIHRoZSBzaGFw
ZS1pbnNpZGUgaW50ZXJ2YWxzIHdpdGhpbiB3aGljaCBhIGxpbmUgd2lsbCBmaXQuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6V3JhcFNo
YXBlSW5mbzo6c2hhcGVUb3ApOgorICAgICAgICBSZW1vdmVkIC0gbm8gbG9uZ2VyIHVzZWQuCisg
ICAgICAgIChXcmFwU2hhcGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OldyYXBTaGFwZUluZm86
OmxpbmVTdGF0ZSk6CisgICAgICAgIFVzZSB0aGUgWFNoYXBlJ3MgYm91bmRpbmcgYm94IHRvIGNv
bXB1dGUgbGluZVN0YXRlLgorCiAyMDEyLTA4LTMwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIG5ldyBDU1MgcHJvcGVydHkgZm9yIGNsaXAtcGF0
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODBjNjM2Zi4uMWI4MzcyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NDU4LDYgKzQ0NTgsMTIgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVs
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvWFNSZWN0YW5nbGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvWFNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvWFNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
ZjczNTlhZi4uNzQwYWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05OTQsNiArOTk0LDkgQEAgU09VUkNF
UyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAg
XAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuY3BwIFwKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9YU1JlY3RhbmdsZS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5j
cHAgXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgXAogICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIFwKICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIFwKQEAgLTIxNDEs
NiArMjE0NCw5IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtU3RhdGUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2lk
dGhJdGVyYXRvci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmggXAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1hTaGFwZS5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmggXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5o
IFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDczMzc2MDkuLmE5NDMyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTQxOCw2ICs0MTgsMTIgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvWFNJbnRlcnZhbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9YU1JlY3RhbmdsZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1hT
UmVjdGFuZ2xlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJDb21wYXJhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2xl
dmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGYwNDk0MGIuLjQwMGJiNmYgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNDEzMyw2ICszNDEzMywz
MCBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFdpZHRoSXRlcmF0
b3IuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFhTSW50ZXJ2YWwuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcWFNJ
bnRlcnZhbC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcWFNSZWN0YW5nbGUuY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcWFNSZWN0YW5nbGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFhTaGFwZS5jcHAiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xYU2hhcGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCQk8RmlsdGVyCiAJCQkJCU5h
bWU9ImNmIgogCQkJCQk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOGE0MjQzZi4uOGZlMjIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgzMSw2ICsxODMx
LDEyIEBACiAJCTZFNEU5MUFEMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmli
dXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0
RTkxQTgxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07
CiAJCTZFNEU5MUFFMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUE5
MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLzsgfTsKIAkJ
NkU0RTkxQUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZC
MzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CisJCTZFNjM3NDUy
MTVGMTI4MDIwMEIzRkRBMyAvKiBYU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2Mzc0NEExNUYxMjgwMjAwQjNGREEzIC8qIFhTaGFwZS5j
cHAgKi87IH07CisJCTZFNjM3NDUzMTVGMTI4MDIwMEIzRkRBMyAvKiBYU2hhcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjM3NDRCMTVGMTI4MDIw
MEIzRkRBMyAvKiBYU2hhcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk2RTYzNzQ1NDE1RjEyODAyMDBCM0ZEQTMgLyogWFNJbnRlcnZhbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTYzNzQ0QzE1
RjEyODAyMDBCM0ZEQTMgLyogWFNJbnRlcnZhbC5jcHAgKi87IH07CisJCTZFNjM3NDU1MTVGMTI4
MDIwMEIzRkRBMyAvKiBYU0ludGVydmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTYzNzQ0RDE1RjEyODAyMDBCM0ZEQTMgLyogWFNJbnRlcnZhbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZFNjM3
NDU4MTVGMTI4MDIwMEIzRkRBMyAvKiBYU1JlY3RhbmdsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTYzNzQ1MDE1RjEyODAyMDBCM0ZEQTMgLyog
WFNSZWN0YW5nbGUuY3BwICovOyB9OworCQk2RTYzNzQ1OTE1RjEyODAyMDBCM0ZEQTMgLyogWFNS
ZWN0YW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNjM3NDUxMTVGMTI4MDIwMEIzRkRBMyAvKiBYU1JlY3RhbmdsZS5oICovOyB9OwogCQk2RTY3
RDJBNjEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3
NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0
MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5z
aW9uczNET3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zM0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKQEAgLTkw
MDgsNiArOTAxNCwxMiBAQAogCQk2RTRFOTFBOTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oOyBwYXRoID0gY2FudmFzL1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0
RTkxQUIxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsOyBwYXRoID0gY2Fu
dmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2RTYzNzQ0QTE1RjEyODAyMDBCM0ZEQTMgLyogWFNoYXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFNjM3NDRCMTVGMTI4MDIwMEIzRkRBMyAvKiBYU2hhcGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFNoYXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTZFNjM3NDRDMTVGMTI4MDIwMEIzRkRBMyAvKiBYU0ludGVydmFsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTSW50ZXJ2YWwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2RTYzNzQ0RDE1RjEyODAyMDBCM0ZEQTMgLyogWFNJbnRlcnZh
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU0ludGVydmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFNjM3NDUwMTVGMTI4MDIwMEIzRkRBMyAvKiBYU1Jl
Y3RhbmdsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU1JlY3Rh
bmdsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFNjM3NDUxMTVGMTI4MDIw
MEIzRkRBMyAvKiBYU1JlY3RhbmdsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBYU1JlY3RhbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBNDEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25z
M0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uczNE
T3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4QkQw
MDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTk0Myw2
ICsxOTk1NSwxMiBAQAogCQkJCTUwMUJBQUE4MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5o
ICovLAogCQkJCTM3OTkxOTk0MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAg
Ki8sCiAJCQkJMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9ybWF0LmggKi8s
CisJCQkJNkU2Mzc0NEExNUYxMjgwMjAwQjNGREEzIC8qIFhTaGFwZS5jcHAgKi8sCisJCQkJNkU2
Mzc0NEIxNUYxMjgwMjAwQjNGREEzIC8qIFhTaGFwZS5oICovLAorCQkJCTZFNjM3NDRDMTVGMTI4
MDIwMEIzRkRBMyAvKiBYU0ludGVydmFsLmNwcCAqLywKKwkJCQk2RTYzNzQ0RDE1RjEyODAyMDBC
M0ZEQTMgLyogWFNJbnRlcnZhbC5oICovLAorCQkJCTZFNjM3NDUwMTVGMTI4MDIwMEIzRkRBMyAv
KiBYU1JlY3RhbmdsZS5jcHAgKi8sCisJCQkJNkU2Mzc0NTExNUYxMjgwMjAwQjNGREEzIC8qIFhT
UmVjdGFuZ2xlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTIyMjEyLDYgKzIyMjMwLDggQEAKIAkJCWlzYSA9IFBCWEhlYWRl
cnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAorCQkJCTZFNjM3NDUzMTVGMTI4MDIwMEIzRkRBMyAvKiBYU2hhcGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZFNjM3NDU1MTVGMTI4MDIwMEIzRkRBMyAvKiBYU0ludGVydmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRhYmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3Ry
YWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMg
LyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ5Nyw2
ICsyNTUxNyw3IEBACiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hh
cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QTE1RUYyNURGMDA4QjcxMTAgLyogQmFz
aWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEMxNUVGMjYwNDAw
OEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTYzNzQ1OTE1RjEy
ODAyMDBCM0ZEQTMgLyogWFNSZWN0YW5nbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg1ODcsNiAr
Mjg2MDgsOSBAQAogCQkJCUZCRDZBRjhEMTVFRjI2MEEwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJh
dGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3
IC8qIEJpdG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkU2Mzc0NTIxNUYxMjgw
MjAwQjNGREEzIC8qIFhTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTYzNzQ1NDE1RjEy
ODAyMDBCM0ZEQTMgLyogWFNJbnRlcnZhbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTYzNzQ1
ODE1RjEyODAyMDBCM0ZEQTMgLyogWFNSZWN0YW5nbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NTQwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmNwcApAQCAtMCwwICsx
LDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICog
Q09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYU0ludGVydmFs
LmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBJbnRlcnZhbFgxQ29tcGFyYXRvciB7CisgICAgYm9vbCBvcGVyYXRvcigpIChj
b25zdCBYU0ludGVydmFsJiBpMSwgY29uc3QgWFNJbnRlcnZhbCYgaTIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gaTEueDEgPCBpMi54MTsKKyAgICB9Cit9OworCitib29sIFhTSW50ZXJ2
YWw6OmludGVyc2VjdChjb25zdCBYU0ludGVydmFsJiBpLCBYU0ludGVydmFsJiBydikgY29uc3QK
K3sKKyAgICBpZiAoeDIgPCBpLngxIHx8IHgxID4gaS54MikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJ2LngxID0gc3RkOjptYXgoeDEsIGkueDEpOworICAgIHJ2LngyID0gc3RkOjptaW4o
eDIsIGkueDIpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIHNvcnRYU0ludGVydmFscyhW
ZWN0b3I8WFNJbnRlcnZhbD4mIHYpCit7CisgICAgc3RkOjpzb3J0KHYuYmVnaW4oKSwgdi5lbmQo
KSwgSW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7Cit9CisKK3ZvaWQgbWVyZ2VYU0ludGVydmFscyhj
b25zdCBWZWN0b3I8WFNJbnRlcnZhbD4mIHYxLCBjb25zdCBWZWN0b3I8WFNJbnRlcnZhbD4mIHYy
LCBWZWN0b3I8WFNJbnRlcnZhbD4mIHJ2KQoreworICAgIGlmICghdjEuc2l6ZSgpKQorICAgICAg
ICBydi5hcHBlbmRSYW5nZSh2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7CisgICAgZWxzZSBpZiAoIXYy
LnNpemUoKSkKKyAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOwor
ICAgIGVsc2UgeworICAgICAgICBWZWN0b3I8WFNJbnRlcnZhbD4gdih2MS5zaXplKCkgKyB2Mi5z
aXplKCkpOworICAgICAgICBYU0ludGVydmFsKiBpbnRlcnZhbCA9IDA7CisKKyAgICAgICAgc3Rk
OjptZXJnZSh2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwgdjIuZW5kKCksIHYuYmVn
aW4oKSwgSW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIWludGVydmFsKQorICAg
ICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07CisgICAgICAgICAgICBlbHNlIGlmICh2W2ld
LngxID49IGludGVydmFsLT54MSAmJiB2W2ldLngxIDw9IGludGVydmFsLT54MikgLy8gRklYTUU6
IDFzdCA8PSB0ZXN0IG5vdCBuZWVkZWQ/CisgICAgICAgICAgICAgICAgaW50ZXJ2YWwtPngyID0g
c3RkOjptYXgoaW50ZXJ2YWwtPngyLCB2W2ldLngyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgIGludGVy
dmFsID0gJnZbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW50
ZXJ2YWwpCisgICAgICAgICAgICBydi5hcHBlbmQoKmludGVydmFsKTsKKyAgICB9Cit9CisKK3Zv
aWQgaW50ZXJzZWN0WFNJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFhTSW50ZXJ2YWw+JiB2MSwgY29u
c3QgVmVjdG9yPFhTSW50ZXJ2YWw+JiB2MiwgVmVjdG9yPFhTSW50ZXJ2YWw+JiBydikKK3sKKyAg
ICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOworICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXpl
KCk7CisKKyAgICBpZiAoIXYxU2l6ZSB8fCAhdjJTaXplKQorICAgICAgICByZXR1cm47CisKKyAg
ICBYU0ludGVydmFsIGludGVydmFsOworICAgIGJvb2wgb3ZlcmxhcCA9IGZhbHNlOworICAgIHNp
emVfdCBpMSA9IDA7CisgICAgc2l6ZV90IGkyID0gMDsKKworICAgIHdoaWxlIChpMSA8IHYxU2l6
ZSAmJiBpMiA8IHYyU2l6ZSkgeworICAgICAgICBYU0ludGVydmFsIHYxMjsKKyAgICAgICAgaWYg
KHYxW2kxXS5pbnRlcnNlY3QodjJbaTJdLCB2MTIpKSB7CisgICAgICAgICAgICBpZiAoIW92ZXJs
YXAgfHwgIXYxMi5pbnRlcnNlY3QoaW50ZXJ2YWwsIGludGVydmFsKSkgeworICAgICAgICAgICAg
ICAgIGlmIChvdmVybGFwKQorICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwp
OworICAgICAgICAgICAgICAgIGludGVydmFsID0gdjEyOworICAgICAgICAgICAgICAgIG92ZXJs
YXAgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHYxW2kxXS54MiA8IHYy
W2kyXS54MikKKyAgICAgICAgICAgICAgICBpMSsrOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGkyKys7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAob3Zlcmxh
cCkKKyAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOworICAgICAgICAgICAgb3Zl
cmxhcCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHYxW2kxXS54MSA8IHYyW2kyXS54MSkKKyAg
ICAgICAgICAgICAgICBpMSsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGky
Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAob3ZlcmxhcCkKKyAgICAgICAgcnYuYXBw
ZW5kKGludGVydmFsKTsKK30KKwordm9pZCBzdWJ0cmFjdFhTSW50ZXJ2YWxzKGNvbnN0IFZlY3Rv
cjxYU0ludGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxYU0ludGVydmFsPiYgdjIsIFZlY3RvcjxY
U0ludGVydmFsPiYgcnYpCit7CisgICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKKyAgICBz
aXplX3QgdjJTaXplID0gdjIuc2l6ZSgpOworCisgICAgaWYgKCF2MVNpemUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghdjJTaXplKQorICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdp
bigpLCB2MS5lbmQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBpMSA9IDAsIGkyID0g
MDsKKyAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworCisgICAg
ICAgIHdoaWxlIChpMSA8IHJ2LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgeworICAgICAgICAgICAg
WFNJbnRlcnZhbCYgaW50ZXJ2YWwxID0gcnZbaTFdOworICAgICAgICAgICAgY29uc3QgWFNJbnRl
cnZhbCYgaW50ZXJ2YWwyID0gdjJbaTJdOworCisgICAgICAgICAgICBpZiAoaW50ZXJ2YWwyLngx
IDw9IGludGVydmFsMS54MSAmJiBpbnRlcnZhbDIueDIgPj0gaW50ZXJ2YWwxLngyKQorICAgICAg
ICAgICAgICAgIHJ2LnJlbW92ZShpMSk7CisgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIu
eDIgPCBpbnRlcnZhbDEueDEpCisgICAgICAgICAgICAgICAgaTIgKz0gMTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGludGVydmFsMi54MSA+IGludGVydmFsMS54MikKKyAgICAgICAgICAgICAgICBp
MSArPSAxOworICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxID4gaW50ZXJ2YWwxLngx
ICYmIGludGVydmFsMi54MiA8IGludGVydmFsMS54MikgeworICAgICAgICAgICAgICAgIHJ2Lmlu
c2VydChpMSwgWFNJbnRlcnZhbChpbnRlcnZhbDEueDEsIGludGVydmFsMi54MSkpOworICAgICAg
ICAgICAgICAgIGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsKKyAgICAgICAgICAgICAgICBp
MiArPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbDIueDEgPD0gaW50ZXJ2YWwx
LngxKSB7CisgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngxID0gaW50ZXJ2YWwyLngyOworICAg
ICAgICAgICAgICAgIGkyICs9IDE7CisgICAgICAgICAgICB9IGVsc2UgIHsgLy8gKGludGVydmFs
Mi54MiA+PSBpbnRlcnZhbDEueDIpCisgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngyID0gaW50
ZXJ2YWwyLngxOworICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4yZmRmZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvWFNJbnRlcnZhbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisg
KiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFhTSW50ZXJ2YWxfaAorI2RlZmluZSBYU0ludGVydmFsX2gKKworI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgWFNJbnRlcnZhbCB7
CitwdWJsaWM6CisgICAgZmxvYXQgeDE7CisgICAgZmxvYXQgeDI7CisKKyAgICBYU0ludGVydmFs
KGZsb2F0IHgxID0gMCwgZmxvYXQgeDIgPSAwKSAKKyAgICAgICAgOiB4MSh4MSkKKyAgICAgICAg
LCB4Mih4MikKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpbnRlcnNlY3QoY29uc3QgWFNJbnRl
cnZhbCYsIFhTSW50ZXJ2YWwmKSBjb25zdDsKK307CisKK3ZvaWQgc29ydFhTSW50ZXJ2YWxzKFZl
Y3RvcjxYU0ludGVydmFsPiYpOwordm9pZCBtZXJnZVhTSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxY
U0ludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxYU0ludGVydmFsPiYsIFZlY3RvcjxYU0ludGVydmFs
PiYpOwordm9pZCBpbnRlcnNlY3RYU0ludGVydmFscyhjb25zdCBWZWN0b3I8WFNJbnRlcnZhbD4m
LCBjb25zdCBWZWN0b3I8WFNJbnRlcnZhbD4mLCBWZWN0b3I8WFNJbnRlcnZhbD4mKTsKK3ZvaWQg
c3VidHJhY3RYU0ludGVydmFscyhjb25zdCBWZWN0b3I8WFNJbnRlcnZhbD4mLCBjb25zdCBWZWN0
b3I8WFNJbnRlcnZhbD4mLCBWZWN0b3I8WFNJbnRlcnZhbD4mKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gWFNJbnRlcnZhbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU1JlY3RhbmdsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9YU1JlY3RhbmdsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uN2FiZDZlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYU1JlY3RhbmdsZS5oIgorCisjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5s
aW5lIGZsb2F0IGVsbGlwc2VYSW50ZXJjZXB0KGZsb2F0IHksIGZsb2F0IHJ4LCBmbG9hdCByeSkg
Cit7CisgICAgQVNTRVJUKHJ5ID4gMCk7CisgICAgcmV0dXJuIHJ4ICogc3FydCgxIC0gKHkqeSkg
LyAocnkqcnkpKTsKK30KKwordm9pZCBYU1JlY3RhbmdsZTo6Z2V0T3V0c2lkZUludGVydmFscyhm
bG9hdCB5MSwgZmxvYXQgeTIsIFZlY3RvcjxYU0ludGVydmFsPiYgcnYpIGNvbnN0Cit7CisgICAg
aWYgKHkxID4geTIpCisgICAgICAgIHN0ZDo6c3dhcCh5MSwgeTIpOworCisgICAgaWYgKHkyIDwg
bV95IHx8IHkxID49IG1feSArIG1faGVpZ2h0KQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9h
dCB4MSA9IG1feDsKKyAgICBmbG9hdCB4MiA9IG1feCArIG1fd2lkdGg7CisKKyAgICBpZiAobV9y
eSA+IDApIHsKKyAgICAgICAgaWYgKHkyIDwgbV95ICsgbV9yeSkgeworICAgICAgICAgICAgZmxv
YXQgeWkgPSB5MiAtIG1feSAtIG1fcnk7CisgICAgICAgICAgICBmbG9hdCB4aSA9IGVsbGlwc2VY
SW50ZXJjZXB0KHlpLCBtX3J4LCBtX3J5KTsKKyAgICAgICAgICAgIHgxID0gbV94ICsgbV9yeCAt
IHhpOworICAgICAgICAgICAgeDIgPSBtX3ggKyBtX3dpZHRoIC0gbV9yeCArIHhpOworICAgICAg
ICB9IGVsc2UgaWYgKHkxID4gbV95ICsgbV9oZWlnaHQgLSBtX3J5KSB7CisgICAgICAgICAgICBm
bG9hdCB5aSA9ICB5MSAtIChtX3kgKyBtX2hlaWdodCAtIG1fcnkpOworICAgICAgICAgICAgZmxv
YXQgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbV9yeCwgbV9yeSk7CisgICAgICAgICAgICB4
MSA9IG1feCArIG1fcnggLSB4aTsKKyAgICAgICAgICAgIHgyID0gbV94ICsgbV93aWR0aCAtIG1f
cnggKyB4aTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJ2LmFwcGVuZChYU0ludGVydmFsKHgx
LCB4MikpOworfQorCit2b2lkIFhTUmVjdGFuZ2xlOjpnZXRJbnNpZGVJbnRlcnZhbHMoZmxvYXQg
eTEsIGZsb2F0IHkyLCBWZWN0b3I8WFNJbnRlcnZhbD4mIHJ2KSBjb25zdAoreworICAgIGlmICh5
MSA+IHkyKQorICAgICAgICBzdGQ6OnN3YXAoeTEsIHkyKTsKKworICAgIGlmICh5MSA8IG1feSB8
fCB5MiA+PSBtX3kgKyBtX2hlaWdodCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgeDEg
PSBtX3g7CisgICAgZmxvYXQgeDIgPSBtX3ggKyBtX3dpZHRoOworCisgICAgaWYgKG1fcnkgPiAw
KSB7CisgICAgICAgIGJvb2wgeTFJbnRlcmNlcHRzQ29ybmVyID0geTEgPCBtX3kgKyBtX3J5Owor
ICAgICAgICBib29sIHkySW50ZXJjZXB0c0Nvcm5lciA9IHkyID4gbV95ICsgbV9oZWlnaHQgLSBt
X3J5OworICAgICAgICBmbG9hdCB4aSA9IDA7CisKKyAgICAgICAgaWYgKHkxSW50ZXJjZXB0c0Nv
cm5lciAmJiB5MkludGVyY2VwdHNDb3JuZXIpIHsKKyAgICAgICAgICAgIGlmICAoeTEgPCBtX2hl
aWdodCArIDIqbV95IC0geTIpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB5aSA9IHkxIC0gbV95
IC0gbV9yeTsKKyAgICAgICAgICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBtX3J4
LCBtX3J5KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZmxvYXQgeWkg
PSAgeTIgLSAobV95ICsgbV9oZWlnaHQgLSBtX3J5KTsKKyAgICAgICAgICAgICAgICB4aSA9IGVs
bGlwc2VYSW50ZXJjZXB0KHlpLCBtX3J4LCBtX3J5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIGlmICh5MUludGVyY2VwdHNDb3JuZXIpIHsKKyAgICAgICAgICAgIGZsb2F0IHlpID0g
eTEgLSBtX3kgLSBtX3J5OworICAgICAgICAgICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwg
bV9yeCwgbV9yeSk7CisgICAgICAgIH0gZWxzZSBpZiAoeTJJbnRlcmNlcHRzQ29ybmVyKSB7Cisg
ICAgICAgICAgICBmbG9hdCB5aSA9ICB5MiAtIChtX3kgKyBtX2hlaWdodCAtIG1fcnkpOworICAg
ICAgICAgICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbV9yeCwgbV9yeSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoeTFJbnRlcmNlcHRzQ29ybmVyIHx8IHkySW50ZXJjZXB0c0Nvcm5l
cikgeworICAgICAgICAgICAgeDEgPSBtX3ggKyBtX3J4IC0geGk7CisgICAgICAgICAgICB4MiA9
IG1feCArIG1fd2lkdGggLSBtX3J4ICsgeGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBydi5h
cHBlbmQoWFNJbnRlcnZhbCh4MSwgeDIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvWFNSZWN0YW5nbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkMjM0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmgKQEAgLTAsMCAr
MSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICog
Q09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgWFNSZWN0YW5nbGVfaAorI2RlZmluZSBYU1JlY3Rhbmds
ZV9oCisKKyNpbmNsdWRlICJYU2hhcGUuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBY
U1JlY3RhbmdsZSA6IHB1YmxpYyBYU2hhcGUgeworcHVibGljOgorICAgIFhTUmVjdGFuZ2xlKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IHJ4ID0gMCwg
ZmxvYXQgcnkgPSAwKQorICAgICAgICA6IFhTaGFwZSgpCisgICAgICAgICwgbV94KHgpCisgICAg
ICAgICwgbV95KHkpCisgICAgICAgICwgbV93aWR0aCh3aWR0aCkKKyAgICAgICAgLCBtX2hlaWdo
dChoZWlnaHQpCisgICAgICAgICwgbV9yeChyeCkKKyAgICAgICAgLCBtX3J5KHJ5KSAKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVCb3VuZGluZ0JveCgpIGNvbnN0
IHsgcmV0dXJuIEZsb2F0UmVjdChtX3gsIG1feSwgbV93aWR0aCwgbV9oZWlnaHQpOyB9CisgICAg
dmlydHVhbCB2b2lkIGdldE91dHNpZGVJbnRlcnZhbHMoZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0
b3I8WFNJbnRlcnZhbD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5zaWRlSW50ZXJ2
YWxzKGZsb2F0IHkxLCBmbG9hdCB5MiwgVmVjdG9yPFhTSW50ZXJ2YWw+JikgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgZmxvYXQgbV94OworICAgIGZsb2F0IG1feTsKKyAgICBmbG9hdCBtX3dpZHRo
OworICAgIGZsb2F0IG1faGVpZ2h0OworICAgIGZsb2F0IG1fcng7CisgICAgZmxvYXQgbV9yeTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFhTUmVjdGFuZ2xlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU2hhcGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MzFiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU2hhcGUuY3BwCkBAIC0wLDAgKzEsMTA2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklH
SFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhTaGFwZS5oIgorCisjaW5j
bHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2luZFJ1bGUuaCIKKyNp
bmNsdWRlICJYU1JlY3RhbmdsZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFBhc3NPd25QdHI8WFNoYXBlPiBjcmVhdGVYU1JlY3Rh
bmdsZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBy
eCwgZmxvYXQgcnkpCit7CisgICAgQVNTRVJUKHdpZHRoID49IDAgJiYgaGVpZ2h0ID49IDAgJiYg
cnggPj0gMCAmJiByeSA+PSAwKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFhTUmVjdGFuZ2xl
KHgsIHksIHdpZHRoLCBoZWlnaHQsIHJ4LCByeSkpOworfQorCitzdGF0aWMgUGFzc093blB0cjxY
U2hhcGU+IGNyZWF0ZVhTQ2lyY2xlKGZsb2F0IGN4LCBmbG9hdCBjeSwgZmxvYXQgcmFkaXVzKSAK
K3sKKyAgICBBU1NFUlQocmFkaXVzID49IDApOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgWFNS
ZWN0YW5nbGUoY3ggLSByYWRpdXMsIGN5IC0gcmFkaXVzLCBjeCArIHJhZGl1cywgY3kgKyByYWRp
dXMsIHJhZGl1cywgcmFkaXVzKSk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPFhTaGFwZT4gY3Jl
YXRlWFNFbGxpcHNlKGZsb2F0IGN4LCBmbG9hdCBjeSwgZmxvYXQgcngsIGZsb2F0IHJ5KQorewor
ICAgIEFTU0VSVChyeCA+PSAwICYmIHJ5ID49IDApOworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
WFNSZWN0YW5nbGUoY3ggLSByeCwgY3kgLSByeSwgY3ggKyByeCwgY3kgKyByeSwgcngsIHJ5KSk7
Cit9CisKK1Bhc3NPd25QdHI8WFNoYXBlPiBYU2hhcGU6OmNyZWF0ZVhTaGFwZShjb25zdCBCYXNp
Y1NoYXBlKiB3cmFwU2hhcGUsIGZsb2F0IGJveFdpZHRoLCBmbG9hdCBib3hIZWlnaHQpCit7Cisg
ICAgaWYgKCF3cmFwU2hhcGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNo
ICh3cmFwU2hhcGUtPnR5cGUoKSkgeworICAgIGNhc2UgQmFzaWNTaGFwZTo6QkFTSUNfU0hBUEVf
UkVDVEFOR0xFOiB7CisgICAgICAgIGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5nbGUqIHJlY3Rhbmds
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5nbGUqPih3cmFwU2hhcGUpOwor
ICAgICAgICBMZW5ndGggcnggPSByZWN0YW5nbGUtPmNvcm5lclJhZGl1c1goKTsKKyAgICAgICAg
TGVuZ3RoIHJ5ID0gcmVjdGFuZ2xlLT5jb3JuZXJSYWRpdXNZKCk7CisgICAgICAgIHJldHVybiBj
cmVhdGVYU1JlY3RhbmdsZSgKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgocmVjdGFu
Z2xlLT54KCksIGJveFdpZHRoKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgocmVj
dGFuZ2xlLT55KCksIGJveEhlaWdodCksCisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHJlY3RhbmdsZS0+d2lkdGgoKSwgYm94V2lkdGgpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZv
ckxlbmd0aChyZWN0YW5nbGUtPmhlaWdodCgpLCBib3hIZWlnaHQpLAorICAgICAgICAgICAgcngu
aXNVbmRlZmluZWQoKSA/IDAgOiBmbG9hdFZhbHVlRm9yTGVuZ3RoKHJ4LCBib3hXaWR0aCksCisg
ICAgICAgICAgICByeS5pc1VuZGVmaW5lZCgpID8gMCA6IGZsb2F0VmFsdWVGb3JMZW5ndGgocnks
IGJveEhlaWdodCkgKTsKKyAgICB9CisKKyAgICBjYXNlIEJhc2ljU2hhcGU6OkJBU0lDX1NIQVBF
X0NJUkNMRTogeworICAgICAgICBjb25zdCBCYXNpY1NoYXBlQ2lyY2xlKiBjaXJjbGUgPSBzdGF0
aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlQ2lyY2xlKj4od3JhcFNoYXBlKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVhTQ2lyY2xlKAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChjaXJj
bGUtPmNlbnRlclgoKSwgYm94V2lkdGgpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0
aChjaXJjbGUtPmNlbnRlclkoKSwgYm94SGVpZ2h0KSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVG
b3JMZW5ndGgoY2lyY2xlLT5yYWRpdXMoKSwgc3RkOjptYXgoYm94SGVpZ2h0LCBib3hXaWR0aCkp
ICk7CisgICAgfQorCisgICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9FTExJUFNFOiB7
CisgICAgICAgIGNvbnN0IEJhc2ljU2hhcGVFbGxpcHNlKiBlbGxpcHNlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQmFzaWNTaGFwZUVsbGlwc2UqPih3cmFwU2hhcGUpOworICAgICAgICByZXR1cm4gY3Jl
YXRlWFNFbGxpcHNlKAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChlbGxpcHNlLT5j
ZW50ZXJYKCksIGJveFdpZHRoKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxs
aXBzZS0+Y2VudGVyWSgpLCBib3hIZWlnaHQpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxl
bmd0aChlbGxpcHNlLT5yYWRpdXNYKCksIGJveFdpZHRoKSwKKyAgICAgICAgICAgIGZsb2F0VmFs
dWVGb3JMZW5ndGgoZWxsaXBzZS0+cmFkaXVzWSgpLCBib3hIZWlnaHQpICk7CisgICAgfQorCisg
ICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9QT0xZR09OOgorICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjZhNGQwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9YU2hhcGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBYU2hhcGVf
aAorI2RlZmluZSBYU2hhcGVfaAorCisjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJYU0ludGVydmFsLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgWFNoYXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxYU2hh
cGU+IGNyZWF0ZVhTaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgZmxvYXQgYm9yZGVyQm94V2lkdGgs
IGZsb2F0IGJvcmRlckJveEhlaWdodCk7CisKKyAgICB2aXJ0dWFsIH5YU2hhcGUoKSB7IH0KKwor
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNoYXBlQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldEluc2lkZUludGVydmFscyhmbG9hdCB5TWluLCBmbG9hdCB5TWF4LCBW
ZWN0b3I8WFNJbnRlcnZhbD4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldE91dHNp
ZGVJbnRlcnZhbHMoZmxvYXQgeU1pbiwgZmxvYXQgeU1heCwgVmVjdG9yPFhTSW50ZXJ2YWw+Jikg
Y29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gWFNo
YXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmNwcAppbmRleCA4
ZWY3M2M3Li4wNDIyY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3Jh
cFNoYXBlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUlu
Zm8uY3BwCkBAIC0xMDUsMzcgKzEwNSwyOCBAQCB2b2lkIFdyYXBTaGFwZUluZm86OmNvbXB1dGVT
aGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgbG9naWNhbAogCiAg
ICAgLy8gRklYTUU6IEJ1ZyA4OTk5MzogVGhlIHdyYXAgc2hhcGUgbWF5IGNvbWUgZnJvbSB0aGUg
cGFyZW50IG9iamVjdAogICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gbV9ibG9jay0+c3R5bGUoKS0+
d3JhcFNoYXBlSW5zaWRlKCk7Ci0KICAgICBBU1NFUlQoc2hhcGUpOwogCi0gICAgc3dpdGNoIChz
aGFwZS0+dHlwZSgpKSB7Ci0gICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9SRUNUQU5H
TEU6IHsKLSAgICAgICAgQmFzaWNTaGFwZVJlY3RhbmdsZSogcmVjdCA9IHN0YXRpY19jYXN0PEJh
c2ljU2hhcGVSZWN0YW5nbGUgKj4oc2hhcGUpOwotICAgICAgICBtX3NoYXBlTGVmdCA9IHZhbHVl
Rm9yTGVuZ3RoKHJlY3QtPngoKSwgbV9sb2dpY2FsV2lkdGgpOwotICAgICAgICBtX3NoYXBlV2lk
dGggPSB2YWx1ZUZvckxlbmd0aChyZWN0LT53aWR0aCgpLCBtX2xvZ2ljYWxXaWR0aCk7Ci0gICAg
ICAgIG1fc2hhcGVUb3AgPSB2YWx1ZUZvckxlbmd0aChyZWN0LT55KCksIG1fbG9naWNhbEhlaWdo
dCk7Ci0gICAgICAgIG1fc2hhcGVIZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChyZWN0LT5oZWlnaHQo
KSwgbV9sb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIC8vIEZJWE1F
OiBCdWcgODk3MDc6IEVuYWJsZSBzaGFwZSBpbnNpZGUgZm9yIG5vbi1yZWN0YW5ndWxhciBzaGFw
ZXMKLSAgICBjYXNlIEJhc2ljU2hhcGU6OkJBU0lDX1NIQVBFX0NJUkNMRToKLSAgICBjYXNlIEJh
c2ljU2hhcGU6OkJBU0lDX1NIQVBFX0VMTElQU0U6Ci0gICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJ
Q19TSEFQRV9QT0xZR09OOiB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICB9CisgICAgbV94c2hhcGUgPSBYU2hhcGU6OmNyZWF0ZVhTaGFwZShz
aGFwZSwgbG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KTsKKyAgICBBU1NFUlQobV94c2hhcGUp
OwogfQogCiBib29sIFdyYXBTaGFwZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0
VW5pdCBsaW5lVG9wKQogewogICAgIG1fbGluZVRvcCA9IGxpbmVUb3A7CiAgICAgbV9zZWdtZW50
cy5jbGVhcigpOworCiAgICAgaWYgKGxpbmVTdGF0ZSgpID09IExJTkVfSU5TSURFX1NIQVBFKSB7
Ci0gICAgICAgIExpbmVTZWdtZW50IHNlZ21lbnQ7Ci0gICAgICAgIHNlZ21lbnQubG9naWNhbExl
ZnQgPSBtX3NoYXBlTGVmdDsKLSAgICAgICAgc2VnbWVudC5sb2dpY2FsUmlnaHQgPSBtX3NoYXBl
TGVmdCArIG1fc2hhcGVXaWR0aDsKLSAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoc2VnbWVudCk7
CisgICAgICAgIEFTU0VSVChtX3hzaGFwZSk7CisKKyAgICAgICAgVmVjdG9yPFhTSW50ZXJ2YWw+
IGludGVydmFsczsKKyAgICAgICAgbV94c2hhcGUtPmdldEluc2lkZUludGVydmFscyhsaW5lVG9w
LCBsaW5lVG9wLCBpbnRlcnZhbHMpOyAgLy8gRklYTUU6IEJ1ZyA5NTQ3OSwgd29ya2Fyb3VuZCBm
b3Igbm93CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50ZXJ2YWxzLnNpemUoKTsg
aSsrKSB7CisgICAgICAgICAgICBMaW5lU2VnbWVudCBzZWdtZW50OworICAgICAgICAgICAgc2Vn
bWVudC5sb2dpY2FsTGVmdCA9IGludGVydmFsc1tpXS54MTsKKyAgICAgICAgICAgIHNlZ21lbnQu
bG9naWNhbFJpZ2h0ID0gaW50ZXJ2YWxzW2ldLngyOworICAgICAgICAgICAgbV9zZWdtZW50cy5h
cHBlbmQoc2VnbWVudCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG1fc2VnbWVudHMu
c2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFw
ZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmgKaW5kZXgg
YTgwMzZkMC4uZjA3MDBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dy
YXBTaGFwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNoYXBlSW5m
by5oCkBAIC0zMiw3ICszMiwxMCBAQAogCiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogCisj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2Rz
LmgiCisjaW5jbHVkZSAiWFNoYXBlLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC02NCwx
NCArNjcsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVdyYXBTaGFwZUluZm9G
b3JSZW5kZXJCbG9jayhjb25zdCBSZW5kZXJCbG9jayopOwogICAgIHN0YXRpYyBib29sIGlzV3Jh
cFNoYXBlSW5mb0VuYWJsZWRGb3JSZW5kZXJCbG9jayhjb25zdCBSZW5kZXJCbG9jayopOwogCi0g
ICAgTGF5b3V0VW5pdCBzaGFwZVRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGVUb3A7IH0KKyAg
ICBMYXlvdXRVbml0IHNoYXBlVG9wKCkgY29uc3QgCisgICAgeyAKKyAgICAgICAgQVNTRVJUKG1f
eHNoYXBlKTsKKyAgICAgICAgcmV0dXJuIG1feHNoYXBlLT5zaGFwZUJvdW5kaW5nQm94KCkueSgp
OworICAgIH0KICAgICBib29sIGhhc1NlZ21lbnRzKCkgY29uc3Q7CiAgICAgY29uc3QgU2VnbWVu
dExpc3QmIHNlZ21lbnRzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTZWdtZW50
cygpKTsKICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHM7CiAgICAgfQotICAgIGJvb2wgY29tcHV0
ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0KTsKKyAgICBib29sIGNvbXB1dGVTZWdtZW50c0Zv
ckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wKTsKICAgICBMaW5lU3RhdGUgbGluZVN0YXRlKCkgY29u
c3Q7CiAgICAgdm9pZCBjb21wdXRlU2hhcGVTaXplKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpOwogICAgIHZvaWQgZGlydHlXcmFwU2hhcGVTaXplKCkg
eyBtX3dyYXBTaGFwZVNpemVEaXJ0eSA9IHRydWU7IH0KQEAgLTgwLDEwICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgV3JhcFNoYXBlSW5mbyhSZW5kZXJCbG9jayopOwogCiAgICAgUmVuZGVyQmxvY2sq
IG1fYmxvY2s7Ci0gICAgTGF5b3V0VW5pdCBtX3NoYXBlTGVmdDsKLSAgICBMYXlvdXRVbml0IG1f
c2hhcGVUb3A7Ci0gICAgTGF5b3V0VW5pdCBtX3NoYXBlV2lkdGg7Ci0gICAgTGF5b3V0VW5pdCBt
X3NoYXBlSGVpZ2h0OworICAgIE93blB0cjxYU2hhcGU+IG1feHNoYXBlOwogCiAgICAgTGF5b3V0
VW5pdCBtX2xpbmVUb3A7CiAgICAgTGF5b3V0VW5pdCBtX2xvZ2ljYWxXaWR0aDsKQEAgLTk1LDEw
ICs5OSwxNSBAQCBwcml2YXRlOgogCiBpbmxpbmUgV3JhcFNoYXBlSW5mbzo6TGluZVN0YXRlIFdy
YXBTaGFwZUluZm86OmxpbmVTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fbGluZVRvcCA8IG1f
c2hhcGVUb3ApCisgICAgQVNTRVJUKG1feHNoYXBlKTsKKyAgICBGbG9hdFJlY3Qgc2hhcGVCb3Vu
ZHMgPSBtX3hzaGFwZS0+c2hhcGVCb3VuZGluZ0JveCgpOworCisgICAgaWYgKG1fbGluZVRvcCA8
IHNoYXBlQm91bmRzLnkoKSkKICAgICAgICAgcmV0dXJuIExJTkVfQkVGT1JFX1NIQVBFOwotICAg
IGlmIChtX2xpbmVUb3AgPCBtX3NoYXBlVG9wICsgbV9zaGFwZUhlaWdodCkKKworICAgIGlmICht
X2xpbmVUb3AgPCBzaGFwZUJvdW5kcy5tYXhZKCkpCiAgICAgICAgIHJldHVybiBMSU5FX0lOU0lE
RV9TSEFQRTsKKwogICAgIHJldHVybiBMSU5FX0FGVEVSX1NIQVBFOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161830</attachid>
            <date>2012-09-01 09:39:08 -0700</date>
            <delta_ts>2012-09-06 11:39:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>41250</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjExM2IzZi4uYTI3NDBlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE4NjMsNiArMTg2Myw5IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZ1N0b3JlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvWFNJbnRlcnZhbC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9YU1JlY3RhbmdsZS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9YU2hhcGUuY3BwCiAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNzg0Y2Y2ZC4uZDg3NGU5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwNCBAQAorMjAxMi0wOC0zMSAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4K
KworICAgICAgICBbQ1NTIEV4bHVzaW9uc10gYWRkIHN1cHBvcnQgZm9yIHRoZSBiYXNpYyBzaGFw
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5pdGlh
bCBjb21taXQgb2YgYSBzdWJzZXQgb2YgdGhlIFhoYXBlcyBjbGFzc2VzLgorCisgICAgICAgIFRo
aXMgc2V0IG9mIGNsYXNzZXMgZW5hYmxlcyB0aGUgZXhjbHVzaW9ucyBsYXlvdXQgY29kZSB0byBk
ZXRlcm1pbmUgaG93IHRvIGJyZWFrIHVwIGEgbGluZSBpbnRvIHNlZ2VtZW50cworICAgICAgICB0
aGF0IHdpbGwgZml0IHdpdGhpbiBvciBhcm91bmQgYSBzaGFwZSwgZ2l2ZW4gdGhlIFkgY29vcmRp
bmF0ZXMgb2YgdGhlIGxpbmUncyB0b3AgZWRnZSBhbmQgYm90dG9tIGVkZ2VzLgorICAgICAgICBU
aGUgWFNoYXBlIGNsYXNzIHJlcHJlc2VudHMgQmFzaWNTaGFwZXMgd2hvc2UgY29vcmRpbmF0ZXMg
aGF2ZSBiZWVuIHJlc29sdmVkIHRvIGFjdHVhbCB2YWx1ZXMuIEl0IHByb3ZpZGVzCisgICAgICAg
IGEgcGFpciBvZiBtZXRob2RzLCBnZXRJbnNpZGVJbnRlcnZhbHMoKSBhbmQgZ2V0T3V0c2lkZUlu
dGVydmFscygpLCB0aGF0IHJldHVybiB0aGUgbGluZSBzZWdtZW50cycgc3RhcnQKKyAgICAgICAg
YW5kIGVuZCBYIGNvb3JkaW5hdGVzLCBhbmQgYSBtZXRob2QgdGhhdCBjb21wdXRlcyB0aGUgc2hh
cGUncyBib3VuZGluZyBib3guIFRoZSBsaW5lIHNlZ21lbnRzJyBjb29yZGluYXRlcworICAgICAg
ICBhcmUgcmVwcmVzZW50ZWQgYnkgYSBWZWN0b3Igb2YgWFNJbnRlcnZhbHMuICBYU0ludGVydmFs
IGlzIGp1c3QgYSBwYWlyIG9mIFggY29vcmRpbmF0ZXMuCisKKyAgICAgICAgVGhlIG90aGVyIGNs
YXNzZXMsIFhTUmVjdGFuZ2xlIChhbmQgVEJEIFhTUG9seWdvbiBldCBhbCksIGFyZSBpbnRlcm5h
bCB0byB0aGUgWFNoYXBlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGlu
aXRpYWwgdmVyc2lvbiBvZiB0aGUgWFNoYXBlcyBjb2RlIGFuZCBpdCdzIG9ubHkgYmVpbmcgdXNl
ZCB0byB0aGUgbGltaXRlZCBleHRlbnQgV2ViS2l0CisgICAgICAgIGN1cnJlbnRseSBzdXBwb3J0
cyBzaGFwZS1pbnNpZGUgZXhjbHVzaW9ucy4gIEl0IHdpbGwgYmUgZXh0ZW5kZWQgdG8gc3VwcG9y
dCBjb21wdXRpbmcgYSBtaW5pbWFsCisgICAgICAgIGxpbmUgc2VnbWVudCdzICJmaXJzdCBsYXlv
dXQgbG9jYXRpb24iIGFuZCBvdGhlciBpbXByb3ZlbWVudHMsIGluIHRhbmRlbSB3aXRoIHRoZSBl
eGNsdXNpb25zIGxheW91dCBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBoYXZlIGJlZW4g
YWRkZWQgc2luY2UgdGhpcyBjb2RlIGp1c3QgcmVwbGFjZXMgYSBwcm92aXNpb25hbCBpbXBsZW1l
bnRhdGlvbiBzdHViLgorCisgICAgICAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFsZ29y
aXRobXMgdXNlZCBieSB0aGUgU2hhcGVzIG1vZHVsZSBjYW4gYmUgZm91bmQgaGVyZTogaHR0cDov
L2hhbnNtdWxsZXItd2Via2l0LmJsb2dzcG90LmNvbS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJ2YWxYMUNvbXBhcmF0b3I6
Om9wZXJhdG9yKCkpOgorICAgICAgICBDb21wYXJlIHgxIFhTSW50ZXJ2YWwgZmllbGRzLgorICAg
ICAgICAoV2ViQ29yZTo6WFNJbnRlcnZhbDo6aW50ZXJzZWN0KToKKyAgICAgICAgQ29tcHV0ZSB0
aGUgaW50ZXJzZWN0aW9uIG9mIHRoaXMgaW50ZXJ2YWwgd2l0aCBhbm90aGVyIGludGVydmFsLiAg
VW5saWtlIG1lcmdlL3N1YnRyYWN0LAorICAgICAgICB0aGUgcmVzdWx0IGlzIGFsd2F5cyBhIHNp
bmdsZSBpbnRlcnZhbC4KKyAgICAgICAgKFdlYkNvcmU6OnNvcnRYU0ludGVydmFscyk6CisgICAg
ICAgIFNvcnQgYSB2ZWN0b3Igb2YgaW50ZXJ2YWxzIGJ5IHRoZWlyIHgxIChzdGFydCkgZmllbGQu
CisgICAgICAgIChXZWJDb3JlOjptZXJnZVhTSW50ZXJ2YWxzKToKKyAgICAgICAgVW5pb24gb2Yg
dHdvIHZlY3RvcnMgb2YgaW50ZXJ2YWxzLgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJzZWN0WFNJ
bnRlcnZhbHMpOgorICAgICAgICBJbnRlcnNlY2lvbiBvZiB0d28gdmVjdG9ycyBvZiBpbnRlcnZh
bHMuCisgICAgICAgIChXZWJDb3JlOjpzdWJ0cmFjdFhTSW50ZXJ2YWxzKToKKyAgICAgICAgRGlm
ZmVyZW5jZSBvZiB0d28gdmVjdG9ycyBvZiBpbnRlcnZhbHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9YU0ludGVydmFsLmg6IEFkZGVkLgorICAgICAgICBSZXByZXNlbnRzIHRoZSBh
Y3R1YWwgc3RhcnQgYW5kIGVuZCBjb29yZGluYXRlcyBvZiBhIGhvcml6b250YWwgbGluZSBzZWdt
ZW50LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChYU0ludGVydmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlhTSW50ZXJ2YWw6OlhTSW50ZXJ2YWwpOgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvWFNSZWN0YW5nbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZWxsaXBzZVhJbnRlcmNlcHQpOgorICAgICAgICAoV2ViQ29yZTo6WFNS
ZWN0YW5nbGU6OmdldE91dHNpZGVJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6WFNSZWN0
YW5nbGU6OmdldEluc2lkZUludGVydmFscyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9YU1JlY3RhbmdsZS5oOiBBZGRlZC4KKyAgICAgICAgQSBzdWJjbGFzcyBvZiBYU2hhcGUgdXNl
ZCB0byByZXByZXNlbnQgcm91bmRlZCByZWN0YW5nbGVzLCBjaXJjbGVzLCBhbmQgZWxsaXBzZXMu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFhTUmVjdGFuZ2xlKQorICAgICAgICAoV2Vi
Q29yZTo6WFNSZWN0YW5nbGU6OlhTUmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTUmVj
dGFuZ2xlOjpzaGFwZUJvdW5kaW5nQm94KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1hTaGFwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVYU1JlY3RhbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYU0NpcmNsZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYU0VsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFNoYXBlOjpjcmVhdGVYU2hhcGUpOgorICAgICAgICBDcmVhdGVzIGFuIFhTaGFwZSBnaXZlbiBh
IEJhc2ljU2hhcGUgYW5kIHRoZSB3aWR0aC9oZWlnaHQgb2YgYSBib3JkZXIgYm94LiAgQ3VycmVu
dGx5IHJvdW5kZWQKKyAgICAgICAgcmVjdGFuZ2xlcywgY2lyY2xlcywgYW5kIGVsbGlwc2VzIGFy
ZSBzdXBwb3J0ZWQuICBTdXBwb3J0IGZvciBwb2x5Z29ucyB3aWxsIGJlIGluY2x1ZGVkIGluIHRo
ZQorICAgICAgICBuZXh0IHBhdGNoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvWFNo
YXBlLmg6IEFkZGVkLgorICAgICAgICBUaGUgcmVzdCBvZiB0aGUgZXhjbHVzaW9ucyBpbXBsZW1l
bnRhdGlvbiB3aWxsIG9ubHkgZGVwZW5kIG9uIHRoZSBkZWZpbml0aW9ucyBpbmNsdWRlZCBieSB0
aGlzIGZpbGU6IFhTaGFwZSwKKyAgICAgICAgYW5kIFhTSW50ZXJ2YWwuIFhTaGFwZSBzdWJjbGFz
c2VzIGRlZmluZSBzaGFwZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIG1ldGhvZHMg
dGhhdCBjb21wdXRlIHRoZQorICAgICAgICBob3Jpem9udGFsIGludGVydmFscyB0aGF0IGZpdCB3
aXRoaW4gb3IgYXJvdW5kIGEgc3BlY2lmaWMgc2hhcGUsIGEgc2hhcGUncyBib3VuZGluZyBib3gs
IGFuZCAtIGluIGZ1dHVyZQorICAgICAgICByZXZpc2lvbnMgLSBvdGhlciBvcGVyYXRpb25zIHJl
cXVpcmVkIGJ5IHRoZSBleGNsdXNpb25zIGltcGxlbWVudGF0aW9uLCBsaWtlIGNvbXB1dGluZyB0
aGUgZmlyc3QgcG9zc2libGUKKyAgICAgICAgbGF5b3V0IGxvY2F0aW9uIHdpdGhpbiBhIHNoYXBl
LiAgWFNoYXBlcyBhcmUgY3JlYXRlZCBmb3IgQmFzaWNTaGFwZSBvYmplY3RzIGFzIG5lZWRlZCwg
dXNpbmcgdGhlCisgICAgICAgIGNyZWF0ZVhTaGFwZSgpIG1ldGhvZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoWFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTaGFwZTo6flhTaGFw
ZSk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXcmFwU2hhcGVJbmZvOjpjb21wdXRlU2hhcGVTaXplKToKKyAgICAgICAgQ3JlYXRl
IGFuIFhTaGFwZSBmb3IgdGhlIFJlbmRlckJsb2NrJ3MgQmFzaWNTaGFwZS4KKyAgICAgICAgKFdl
YkNvcmU6OldyYXBTaGFwZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUpOgorICAgICAgICBV
c2UgWFNoYXBlOjpnZXRJbnNpZGVJbnRlcnZhbHMoKSB0byBjb21wdXRlIHRoZSBzaGFwZS1pbnNp
ZGUgaW50ZXJ2YWxzIHdpdGhpbiB3aGljaCBhIGxpbmUgd2lsbCBmaXQuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6V3JhcFNoYXBlSW5m
bzo6c2hhcGVUb3ApOgorICAgICAgICBSZW1vdmVkIC0gbm8gbG9uZ2VyIHVzZWQuCisgICAgICAg
IChXcmFwU2hhcGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OldyYXBTaGFwZUluZm86OmxpbmVT
dGF0ZSk6CisgICAgICAgIFVzZSB0aGUgWFNoYXBlJ3MgYm91bmRpbmcgYm94IHRvIGNvbXB1dGUg
bGluZVN0YXRlLgorCiAyMDEyLTA4LTMwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgSW50cm9kdWNlIG5ldyBDU1MgcHJvcGVydHkgZm9yIGNsaXAtcGF0aApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODBjNjM2Zi4uMWI4MzcyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NDU4LDYgKzQ0NTgsMTIgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvWFNSZWN0YW5nbGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvWFNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
WFNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZjczNTlh
Zi4uNzQwYWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05OTQsNiArOTk0LDkgQEAgU09VUkNFUyArPSBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgXAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9YU1JlY3RhbmdsZS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5jcHAgXAog
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgXAogICAgIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIFwKQEAgLTIxNDEsNiArMjE0
NCw5IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtU3RhdGUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVy
YXRvci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmggXAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1hTaGFw
ZS5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgg
XAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKICAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDczMzc2MDkuLmE5NDMyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQxOCw2
ICs0MTgsMTIgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybU9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvWFNJbnRlcnZhbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Y
U1JlY3RhbmdsZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFu
Z2xlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJDb21wYXJhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2xldmVsZGIv
TGV2ZWxEQkRhdGFiYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IGYwNDk0MGIuLjQwMGJiNmYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNDEzMyw2ICszNDEzMywzMCBAQAog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFdpZHRoSXRlcmF0b3IuaCIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXFhTSW50ZXJ2YWwuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcWFNJbnRlcnZh
bC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcWFNSZWN0YW5nbGUuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcWFNS
ZWN0YW5nbGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFhTaGFwZS5jcHAiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xY
U2hhcGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCQk8RmlsdGVyCiAJCQkJCU5hbWU9ImNm
IgogCQkJCQk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOGE0MjQzZi4uOGZlMjIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgzMSw2ICsxODMxLDEyIEBA
CiAJCTZFNEU5MUFEMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQTgx
MEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CiAJCTZF
NEU5MUFFMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUE5MTBGN0ZC
MzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLzsgfTsKIAkJNkU0RTkx
QUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEy
Nzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CisJCTZFNjM3NDUyMTVGMTI4
MDIwMEIzRkRBMyAvKiBYU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkU2Mzc0NEExNUYxMjgwMjAwQjNGREEzIC8qIFhTaGFwZS5jcHAgKi87
IH07CisJCTZFNjM3NDUzMTVGMTI4MDIwMEIzRkRBMyAvKiBYU2hhcGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjM3NDRCMTVGMTI4MDIwMEIzRkRB
MyAvKiBYU2hhcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk2RTYzNzQ1NDE1RjEyODAyMDBCM0ZEQTMgLyogWFNJbnRlcnZhbC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTYzNzQ0QzE1RjEyODAy
MDBCM0ZEQTMgLyogWFNJbnRlcnZhbC5jcHAgKi87IH07CisJCTZFNjM3NDU1MTVGMTI4MDIwMEIz
RkRBMyAvKiBYU0ludGVydmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTYzNzQ0RDE1RjEyODAyMDBCM0ZEQTMgLyogWFNJbnRlcnZhbC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZFNjM3NDU4MTVG
MTI4MDIwMEIzRkRBMyAvKiBYU1JlY3RhbmdsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTYzNzQ1MDE1RjEyODAyMDBCM0ZEQTMgLyogWFNSZWN0
YW5nbGUuY3BwICovOyB9OworCQk2RTYzNzQ1OTE1RjEyODAyMDBCM0ZEQTMgLyogWFNSZWN0YW5n
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjM3
NDUxMTVGMTI4MDIwMEIzRkRBMyAvKiBYU1JlY3RhbmdsZS5oICovOyB9OwogCQk2RTY3RDJBNjEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAv
KiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0MDA4NzU4
RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNE
T3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
M0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKQEAgLTkwMDgsNiAr
OTAxNCwxMiBAQAogCQk2RTRFOTFBOTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0RTkxQUExMEY3RkIzMTAwQTI3
NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oOyBwYXRoID0gY2FudmFzL1dlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0RTkxQUIx
MEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsOyBwYXRoID0gY2FudmFzL1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
RTYzNzQ0QTE1RjEyODAyMDBCM0ZEQTMgLyogWFNoYXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFhTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTZFNjM3NDRCMTVGMTI4MDIwMEIzRkRBMyAvKiBYU2hhcGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWFNoYXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTZFNjM3NDRDMTVGMTI4MDIwMEIzRkRBMyAvKiBYU0ludGVydmFsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTSW50ZXJ2YWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2RTYzNzQ0RDE1RjEyODAyMDBCM0ZEQTMgLyogWFNJbnRlcnZhbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU0ludGVydmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTZFNjM3NDUwMTVGMTI4MDIwMEIzRkRBMyAvKiBYU1JlY3Rhbmds
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU1JlY3RhbmdsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFNjM3NDUxMTVGMTI4MDIwMEIzRkRB
MyAvKiBYU1JlY3RhbmdsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU1Jl
Y3RhbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBNDEyODBFOEE0
MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVu
R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uczNET3BlbkdM
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4QkQwMDg3NThG
NyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0
ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTk0Myw2ICsxOTk1
NSwxMiBAQAogCQkJCTUwMUJBQUE4MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oICovLAog
CQkJCTM3OTkxOTk0MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAgKi8sCiAJ
CQkJMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9ybWF0LmggKi8sCisJCQkJ
NkU2Mzc0NEExNUYxMjgwMjAwQjNGREEzIC8qIFhTaGFwZS5jcHAgKi8sCisJCQkJNkU2Mzc0NEIx
NUYxMjgwMjAwQjNGREEzIC8qIFhTaGFwZS5oICovLAorCQkJCTZFNjM3NDRDMTVGMTI4MDIwMEIz
RkRBMyAvKiBYU0ludGVydmFsLmNwcCAqLywKKwkJCQk2RTYzNzQ0RDE1RjEyODAyMDBCM0ZEQTMg
LyogWFNJbnRlcnZhbC5oICovLAorCQkJCTZFNjM3NDUwMTVGMTI4MDIwMEIzRkRBMyAvKiBYU1Jl
Y3RhbmdsZS5jcHAgKi8sCisJCQkJNkU2Mzc0NTExNUYxMjgwMjAwQjNGREEzIC8qIFhTUmVjdGFu
Z2xlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTIyMjEyLDYgKzIyMjMwLDggQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAor
CQkJCTZFNjM3NDUzMTVGMTI4MDIwMEIzRkRBMyAvKiBYU2hhcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTZFNjM3NDU1MTVGMTI4MDIwMEIzRkRBMyAvKiBYU0ludGVydmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29y
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ5Nyw2ICsyNTUx
Nyw3IEBACiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QTE1RUYyNURGMDA4QjcxMTAgLyogQmFzaWNTaGFw
ZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEw
IC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTYzNzQ1OTE1RjEyODAyMDBC
M0ZEQTMgLyogWFNSZWN0YW5nbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg1ODcsNiArMjg2MDgs
OSBAQAogCQkJCUZCRDZBRjhEMTVFRjI2MEEwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1h
Z2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJp
dG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkU2Mzc0NTIxNUYxMjgwMjAwQjNG
REEzIC8qIFhTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTYzNzQ1NDE1RjEyODAyMDBC
M0ZEQTMgLyogWFNJbnRlcnZhbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTYzNzQ1ODE1RjEy
ODAyMDBCM0ZEQTMgLyogWFNSZWN0YW5nbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NTQwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU0ludGVydmFsLmNwcApAQCAtMCwwICsxLDE2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICog
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICog
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYU0ludGVydmFsLmgiCisK
KyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBJbnRlcnZhbFgxQ29tcGFyYXRvciB7CisgICAgYm9vbCBvcGVyYXRvcigpIChjb25zdCBY
U0ludGVydmFsJiBpMSwgY29uc3QgWFNJbnRlcnZhbCYgaTIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gaTEueDEgPCBpMi54MTsKKyAgICB9Cit9OworCitib29sIFhTSW50ZXJ2YWw6Omlu
dGVyc2VjdChjb25zdCBYU0ludGVydmFsJiBpLCBYU0ludGVydmFsJiBydikgY29uc3QKK3sKKyAg
ICBpZiAoeDIgPCBpLngxIHx8IHgxID4gaS54MikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJ2LngxID0gc3RkOjptYXgoeDEsIGkueDEpOworICAgIHJ2LngyID0gc3RkOjptaW4oeDIsIGku
eDIpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIHNvcnRYU0ludGVydmFscyhWZWN0b3I8
WFNJbnRlcnZhbD4mIHYpCit7CisgICAgc3RkOjpzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSwgSW50
ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7Cit9CisKK3ZvaWQgbWVyZ2VYU0ludGVydmFscyhjb25zdCBW
ZWN0b3I8WFNJbnRlcnZhbD4mIHYxLCBjb25zdCBWZWN0b3I8WFNJbnRlcnZhbD4mIHYyLCBWZWN0
b3I8WFNJbnRlcnZhbD4mIHJ2KQoreworICAgIGlmICghdjEuc2l6ZSgpKQorICAgICAgICBydi5h
cHBlbmRSYW5nZSh2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7CisgICAgZWxzZSBpZiAoIXYyLnNpemUo
KSkKKyAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworICAgIGVs
c2UgeworICAgICAgICBWZWN0b3I8WFNJbnRlcnZhbD4gdih2MS5zaXplKCkgKyB2Mi5zaXplKCkp
OworICAgICAgICBYU0ludGVydmFsKiBpbnRlcnZhbCA9IDA7CisKKyAgICAgICAgc3RkOjptZXJn
ZSh2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwgdjIuZW5kKCksIHYuYmVnaW4oKSwg
SW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIWludGVydmFsKQorICAgICAgICAg
ICAgICAgIGludGVydmFsID0gJnZbaV07CisgICAgICAgICAgICBlbHNlIGlmICh2W2ldLngxID49
IGludGVydmFsLT54MSAmJiB2W2ldLngxIDw9IGludGVydmFsLT54MikgLy8gRklYTUU6IDFzdCA8
PSB0ZXN0IG5vdCBuZWVkZWQ/CisgICAgICAgICAgICAgICAgaW50ZXJ2YWwtPngyID0gc3RkOjpt
YXgoaW50ZXJ2YWwtPngyLCB2W2ldLngyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgIGludGVydmFsID0g
JnZbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW50ZXJ2YWwp
CisgICAgICAgICAgICBydi5hcHBlbmQoKmludGVydmFsKTsKKyAgICB9Cit9CisKK3ZvaWQgaW50
ZXJzZWN0WFNJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFhTSW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVj
dG9yPFhTSW50ZXJ2YWw+JiB2MiwgVmVjdG9yPFhTSW50ZXJ2YWw+JiBydikKK3sKKyAgICBzaXpl
X3QgdjFTaXplID0gdjEuc2l6ZSgpOworICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXplKCk7CisK
KyAgICBpZiAoIXYxU2l6ZSB8fCAhdjJTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBYU0lu
dGVydmFsIGludGVydmFsOworICAgIGJvb2wgb3ZlcmxhcCA9IGZhbHNlOworICAgIHNpemVfdCBp
MSA9IDA7CisgICAgc2l6ZV90IGkyID0gMDsKKworICAgIHdoaWxlIChpMSA8IHYxU2l6ZSAmJiBp
MiA8IHYyU2l6ZSkgeworICAgICAgICBYU0ludGVydmFsIHYxMjsKKyAgICAgICAgaWYgKHYxW2kx
XS5pbnRlcnNlY3QodjJbaTJdLCB2MTIpKSB7CisgICAgICAgICAgICBpZiAoIW92ZXJsYXAgfHwg
IXYxMi5pbnRlcnNlY3QoaW50ZXJ2YWwsIGludGVydmFsKSkgeworICAgICAgICAgICAgICAgIGlm
IChvdmVybGFwKQorICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOworICAg
ICAgICAgICAgICAgIGludGVydmFsID0gdjEyOworICAgICAgICAgICAgICAgIG92ZXJsYXAgPSB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHYxW2kxXS54MiA8IHYyW2kyXS54
MikKKyAgICAgICAgICAgICAgICBpMSsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGkyKys7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAob3ZlcmxhcCkKKyAg
ICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOworICAgICAgICAgICAgb3ZlcmxhcCA9
IGZhbHNlOworICAgICAgICAgICAgaWYgKHYxW2kxXS54MSA8IHYyW2kyXS54MSkKKyAgICAgICAg
ICAgICAgICBpMSsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGkyKys7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAob3ZlcmxhcCkKKyAgICAgICAgcnYuYXBwZW5kKGlu
dGVydmFsKTsKK30KKwordm9pZCBzdWJ0cmFjdFhTSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxYU0lu
dGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxYU0ludGVydmFsPiYgdjIsIFZlY3RvcjxYU0ludGVy
dmFsPiYgcnYpCit7CisgICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKKyAgICBzaXplX3Qg
djJTaXplID0gdjIuc2l6ZSgpOworCisgICAgaWYgKCF2MVNpemUpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghdjJTaXplKQorICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2
MS5lbmQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBpMSA9IDAsIGkyID0gMDsKKyAg
ICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworCisgICAgICAgIHdo
aWxlIChpMSA8IHJ2LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgeworICAgICAgICAgICAgWFNJbnRl
cnZhbCYgaW50ZXJ2YWwxID0gcnZbaTFdOworICAgICAgICAgICAgY29uc3QgWFNJbnRlcnZhbCYg
aW50ZXJ2YWwyID0gdjJbaTJdOworCisgICAgICAgICAgICBpZiAoaW50ZXJ2YWwyLngxIDw9IGlu
dGVydmFsMS54MSAmJiBpbnRlcnZhbDIueDIgPj0gaW50ZXJ2YWwxLngyKQorICAgICAgICAgICAg
ICAgIHJ2LnJlbW92ZShpMSk7CisgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDIgPCBp
bnRlcnZhbDEueDEpCisgICAgICAgICAgICAgICAgaTIgKz0gMTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGludGVydmFsMi54MSA+IGludGVydmFsMS54MikKKyAgICAgICAgICAgICAgICBpMSArPSAx
OworICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxID4gaW50ZXJ2YWwxLngxICYmIGlu
dGVydmFsMi54MiA8IGludGVydmFsMS54MikgeworICAgICAgICAgICAgICAgIHJ2Lmluc2VydChp
MSwgWFNJbnRlcnZhbChpbnRlcnZhbDEueDEsIGludGVydmFsMi54MSkpOworICAgICAgICAgICAg
ICAgIGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsKKyAgICAgICAgICAgICAgICBpMiArPSAx
OworICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbDIueDEgPD0gaW50ZXJ2YWwxLngxKSB7
CisgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngxID0gaW50ZXJ2YWwyLngyOworICAgICAgICAg
ICAgICAgIGkyICs9IDE7CisgICAgICAgICAgICB9IGVsc2UgIHsgLy8gKGludGVydmFsMi54MiA+
PSBpbnRlcnZhbDEueDIpCisgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngyID0gaW50ZXJ2YWwy
LngxOworICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1hTSW50ZXJ2YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yZmRmZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvWFNJbnRlcnZhbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFhTSW50ZXJ2YWxfaAorI2RlZmluZSBYU0ludGVydmFsX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgWFNJbnRlcnZhbCB7CitwdWJs
aWM6CisgICAgZmxvYXQgeDE7CisgICAgZmxvYXQgeDI7CisKKyAgICBYU0ludGVydmFsKGZsb2F0
IHgxID0gMCwgZmxvYXQgeDIgPSAwKSAKKyAgICAgICAgOiB4MSh4MSkKKyAgICAgICAgLCB4Mih4
MikKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpbnRlcnNlY3QoY29uc3QgWFNJbnRlcnZhbCYs
IFhTSW50ZXJ2YWwmKSBjb25zdDsKK307CisKK3ZvaWQgc29ydFhTSW50ZXJ2YWxzKFZlY3RvcjxY
U0ludGVydmFsPiYpOwordm9pZCBtZXJnZVhTSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxYU0ludGVy
dmFsPiYsIGNvbnN0IFZlY3RvcjxYU0ludGVydmFsPiYsIFZlY3RvcjxYU0ludGVydmFsPiYpOwor
dm9pZCBpbnRlcnNlY3RYU0ludGVydmFscyhjb25zdCBWZWN0b3I8WFNJbnRlcnZhbD4mLCBjb25z
dCBWZWN0b3I8WFNJbnRlcnZhbD4mLCBWZWN0b3I8WFNJbnRlcnZhbD4mKTsKK3ZvaWQgc3VidHJh
Y3RYU0ludGVydmFscyhjb25zdCBWZWN0b3I8WFNJbnRlcnZhbD4mLCBjb25zdCBWZWN0b3I8WFNJ
bnRlcnZhbD4mLCBWZWN0b3I8WFNJbnRlcnZhbD4mKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gWFNJbnRlcnZhbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9YU1JlY3RhbmdsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9YU1JlY3RhbmdsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uN2FiZDZlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAg
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYU1JlY3RhbmdsZS5oIgorCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIGZs
b2F0IGVsbGlwc2VYSW50ZXJjZXB0KGZsb2F0IHksIGZsb2F0IHJ4LCBmbG9hdCByeSkgCit7Cisg
ICAgQVNTRVJUKHJ5ID4gMCk7CisgICAgcmV0dXJuIHJ4ICogc3FydCgxIC0gKHkqeSkgLyAocnkq
cnkpKTsKK30KKwordm9pZCBYU1JlY3RhbmdsZTo6Z2V0T3V0c2lkZUludGVydmFscyhmbG9hdCB5
MSwgZmxvYXQgeTIsIFZlY3RvcjxYU0ludGVydmFsPiYgcnYpIGNvbnN0Cit7CisgICAgaWYgKHkx
ID4geTIpCisgICAgICAgIHN0ZDo6c3dhcCh5MSwgeTIpOworCisgICAgaWYgKHkyIDwgbV95IHx8
IHkxID49IG1feSArIG1faGVpZ2h0KQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB4MSA9
IG1feDsKKyAgICBmbG9hdCB4MiA9IG1feCArIG1fd2lkdGg7CisKKyAgICBpZiAobV9yeSA+IDAp
IHsKKyAgICAgICAgaWYgKHkyIDwgbV95ICsgbV9yeSkgeworICAgICAgICAgICAgZmxvYXQgeWkg
PSB5MiAtIG1feSAtIG1fcnk7CisgICAgICAgICAgICBmbG9hdCB4aSA9IGVsbGlwc2VYSW50ZXJj
ZXB0KHlpLCBtX3J4LCBtX3J5KTsKKyAgICAgICAgICAgIHgxID0gbV94ICsgbV9yeCAtIHhpOwor
ICAgICAgICAgICAgeDIgPSBtX3ggKyBtX3dpZHRoIC0gbV9yeCArIHhpOworICAgICAgICB9IGVs
c2UgaWYgKHkxID4gbV95ICsgbV9oZWlnaHQgLSBtX3J5KSB7CisgICAgICAgICAgICBmbG9hdCB5
aSA9ICB5MSAtIChtX3kgKyBtX2hlaWdodCAtIG1fcnkpOworICAgICAgICAgICAgZmxvYXQgeGkg
PSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbV9yeCwgbV9yeSk7CisgICAgICAgICAgICB4MSA9IG1f
eCArIG1fcnggLSB4aTsKKyAgICAgICAgICAgIHgyID0gbV94ICsgbV93aWR0aCAtIG1fcnggKyB4
aTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJ2LmFwcGVuZChYU0ludGVydmFsKHgxLCB4Mikp
OworfQorCit2b2lkIFhTUmVjdGFuZ2xlOjpnZXRJbnNpZGVJbnRlcnZhbHMoZmxvYXQgeTEsIGZs
b2F0IHkyLCBWZWN0b3I8WFNJbnRlcnZhbD4mIHJ2KSBjb25zdAoreworICAgIGlmICh5MSA+IHky
KQorICAgICAgICBzdGQ6OnN3YXAoeTEsIHkyKTsKKworICAgIGlmICh5MSA8IG1feSB8fCB5MiA+
PSBtX3kgKyBtX2hlaWdodCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgeDEgPSBtX3g7
CisgICAgZmxvYXQgeDIgPSBtX3ggKyBtX3dpZHRoOworCisgICAgaWYgKG1fcnkgPiAwKSB7Cisg
ICAgICAgIGJvb2wgeTFJbnRlcmNlcHRzQ29ybmVyID0geTEgPCBtX3kgKyBtX3J5OworICAgICAg
ICBib29sIHkySW50ZXJjZXB0c0Nvcm5lciA9IHkyID4gbV95ICsgbV9oZWlnaHQgLSBtX3J5Owor
ICAgICAgICBmbG9hdCB4aSA9IDA7CisKKyAgICAgICAgaWYgKHkxSW50ZXJjZXB0c0Nvcm5lciAm
JiB5MkludGVyY2VwdHNDb3JuZXIpIHsKKyAgICAgICAgICAgIGlmICAoeTEgPCBtX2hlaWdodCAr
IDIqbV95IC0geTIpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB5aSA9IHkxIC0gbV95IC0gbV9y
eTsKKyAgICAgICAgICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBtX3J4LCBtX3J5
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZmxvYXQgeWkgPSAgeTIg
LSAobV95ICsgbV9oZWlnaHQgLSBtX3J5KTsKKyAgICAgICAgICAgICAgICB4aSA9IGVsbGlwc2VY
SW50ZXJjZXB0KHlpLCBtX3J4LCBtX3J5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IGlmICh5MUludGVyY2VwdHNDb3JuZXIpIHsKKyAgICAgICAgICAgIGZsb2F0IHlpID0geTEgLSBt
X3kgLSBtX3J5OworICAgICAgICAgICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbV9yeCwg
bV9yeSk7CisgICAgICAgIH0gZWxzZSBpZiAoeTJJbnRlcmNlcHRzQ29ybmVyKSB7CisgICAgICAg
ICAgICBmbG9hdCB5aSA9ICB5MiAtIChtX3kgKyBtX2hlaWdodCAtIG1fcnkpOworICAgICAgICAg
ICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbV9yeCwgbV9yeSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoeTFJbnRlcmNlcHRzQ29ybmVyIHx8IHkySW50ZXJjZXB0c0Nvcm5lcikgewor
ICAgICAgICAgICAgeDEgPSBtX3ggKyBtX3J4IC0geGk7CisgICAgICAgICAgICB4MiA9IG1feCAr
IG1fd2lkdGggLSBtX3J4ICsgeGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBydi5hcHBlbmQo
WFNJbnRlcnZhbCh4MSwgeDIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvWFNSZWN0YW5nbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkMjM0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTUmVjdGFuZ2xlLmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICog
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICog
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgWFNSZWN0YW5nbGVfaAorI2RlZmluZSBYU1JlY3RhbmdsZV9oCisK
KyNpbmNsdWRlICJYU2hhcGUuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBYU1JlY3Rh
bmdsZSA6IHB1YmxpYyBYU2hhcGUgeworcHVibGljOgorICAgIFhTUmVjdGFuZ2xlKGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IHJ4ID0gMCwgZmxvYXQg
cnkgPSAwKQorICAgICAgICA6IFhTaGFwZSgpCisgICAgICAgICwgbV94KHgpCisgICAgICAgICwg
bV95KHkpCisgICAgICAgICwgbV93aWR0aCh3aWR0aCkKKyAgICAgICAgLCBtX2hlaWdodChoZWln
aHQpCisgICAgICAgICwgbV9yeChyeCkKKyAgICAgICAgLCBtX3J5KHJ5KSAKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0
dXJuIEZsb2F0UmVjdChtX3gsIG1feSwgbV93aWR0aCwgbV9oZWlnaHQpOyB9CisgICAgdmlydHVh
bCB2b2lkIGdldE91dHNpZGVJbnRlcnZhbHMoZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0b3I8WFNJ
bnRlcnZhbD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5zaWRlSW50ZXJ2YWxzKGZs
b2F0IHkxLCBmbG9hdCB5MiwgVmVjdG9yPFhTSW50ZXJ2YWw+JikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgZmxvYXQgbV94OworICAgIGZsb2F0IG1feTsKKyAgICBmbG9hdCBtX3dpZHRoOworICAg
IGZsb2F0IG1faGVpZ2h0OworICAgIGZsb2F0IG1fcng7CisgICAgZmxvYXQgbV9yeTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFhTUmVjdGFuZ2xlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1hTaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU2hhcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjM4MzFiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU2hhcGUuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhTaGFwZS5oIgorCisjaW5jbHVkZSAi
QmFzaWNTaGFwZUZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgorI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2luZFJ1bGUuaCIKKyNpbmNsdWRl
ICJYU1JlY3RhbmdsZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIFBhc3NPd25QdHI8WFNoYXBlPiBjcmVhdGVYU1JlY3RhbmdsZShm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCByeCwgZmxv
YXQgcnkpCit7CisgICAgQVNTRVJUKHdpZHRoID49IDAgJiYgaGVpZ2h0ID49IDAgJiYgcnggPj0g
MCAmJiByeSA+PSAwKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFhTUmVjdGFuZ2xlKHgsIHks
IHdpZHRoLCBoZWlnaHQsIHJ4LCByeSkpOworfQorCitzdGF0aWMgUGFzc093blB0cjxYU2hhcGU+
IGNyZWF0ZVhTQ2lyY2xlKGZsb2F0IGN4LCBmbG9hdCBjeSwgZmxvYXQgcmFkaXVzKSAKK3sKKyAg
ICBBU1NFUlQocmFkaXVzID49IDApOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgWFNSZWN0YW5n
bGUoY3ggLSByYWRpdXMsIGN5IC0gcmFkaXVzLCBjeCArIHJhZGl1cywgY3kgKyByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPFhTaGFwZT4gY3JlYXRlWFNF
bGxpcHNlKGZsb2F0IGN4LCBmbG9hdCBjeSwgZmxvYXQgcngsIGZsb2F0IHJ5KQoreworICAgIEFT
U0VSVChyeCA+PSAwICYmIHJ5ID49IDApOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgWFNSZWN0
YW5nbGUoY3ggLSByeCwgY3kgLSByeSwgY3ggKyByeCwgY3kgKyByeSwgcngsIHJ5KSk7Cit9CisK
K1Bhc3NPd25QdHI8WFNoYXBlPiBYU2hhcGU6OmNyZWF0ZVhTaGFwZShjb25zdCBCYXNpY1NoYXBl
KiB3cmFwU2hhcGUsIGZsb2F0IGJveFdpZHRoLCBmbG9hdCBib3hIZWlnaHQpCit7CisgICAgaWYg
KCF3cmFwU2hhcGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNoICh3cmFw
U2hhcGUtPnR5cGUoKSkgeworICAgIGNhc2UgQmFzaWNTaGFwZTo6QkFTSUNfU0hBUEVfUkVDVEFO
R0xFOiB7CisgICAgICAgIGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5nbGUqIHJlY3RhbmdsZSA9IHN0
YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5nbGUqPih3cmFwU2hhcGUpOworICAgICAg
ICBMZW5ndGggcnggPSByZWN0YW5nbGUtPmNvcm5lclJhZGl1c1goKTsKKyAgICAgICAgTGVuZ3Ro
IHJ5ID0gcmVjdGFuZ2xlLT5jb3JuZXJSYWRpdXNZKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVY
U1JlY3RhbmdsZSgKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgocmVjdGFuZ2xlLT54
KCksIGJveFdpZHRoKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgocmVjdGFuZ2xl
LT55KCksIGJveEhlaWdodCksCisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHJlY3Rh
bmdsZS0+d2lkdGgoKSwgYm94V2lkdGgpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0
aChyZWN0YW5nbGUtPmhlaWdodCgpLCBib3hIZWlnaHQpLAorICAgICAgICAgICAgcnguaXNVbmRl
ZmluZWQoKSA/IDAgOiBmbG9hdFZhbHVlRm9yTGVuZ3RoKHJ4LCBib3hXaWR0aCksCisgICAgICAg
ICAgICByeS5pc1VuZGVmaW5lZCgpID8gMCA6IGZsb2F0VmFsdWVGb3JMZW5ndGgocnksIGJveEhl
aWdodCkgKTsKKyAgICB9CisKKyAgICBjYXNlIEJhc2ljU2hhcGU6OkJBU0lDX1NIQVBFX0NJUkNM
RTogeworICAgICAgICBjb25zdCBCYXNpY1NoYXBlQ2lyY2xlKiBjaXJjbGUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBCYXNpY1NoYXBlQ2lyY2xlKj4od3JhcFNoYXBlKTsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZVhTQ2lyY2xlKAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChjaXJjbGUtPmNl
bnRlclgoKSwgYm94V2lkdGgpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChjaXJj
bGUtPmNlbnRlclkoKSwgYm94SGVpZ2h0KSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5n
dGgoY2lyY2xlLT5yYWRpdXMoKSwgc3RkOjptYXgoYm94SGVpZ2h0LCBib3hXaWR0aCkpICk7Cisg
ICAgfQorCisgICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9FTExJUFNFOiB7CisgICAg
ICAgIGNvbnN0IEJhc2ljU2hhcGVFbGxpcHNlKiBlbGxpcHNlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
QmFzaWNTaGFwZUVsbGlwc2UqPih3cmFwU2hhcGUpOworICAgICAgICByZXR1cm4gY3JlYXRlWFNF
bGxpcHNlKAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChlbGxpcHNlLT5jZW50ZXJY
KCksIGJveFdpZHRoKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBzZS0+
Y2VudGVyWSgpLCBib3hIZWlnaHQpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChl
bGxpcHNlLT5yYWRpdXNYKCksIGJveFdpZHRoKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JM
ZW5ndGgoZWxsaXBzZS0+cmFkaXVzWSgpLCBib3hIZWlnaHQpICk7CisgICAgfQorCisgICAgY2Fz
ZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9QT0xZR09OOgorICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9YU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1hTaGFwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZh
NGQwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9YU2hhcGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBYU2hhcGVfaAorI2Rl
ZmluZSBYU2hhcGVfaAorCisjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKKyNpbmNsdWRlICJYU0ludGVydmFsLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgWFNoYXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxYU2hhcGU+IGNy
ZWF0ZVhTaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgZmxvYXQgYm9yZGVyQm94V2lkdGgsIGZsb2F0
IGJvcmRlckJveEhlaWdodCk7CisKKyAgICB2aXJ0dWFsIH5YU2hhcGUoKSB7IH0KKworICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHNoYXBlQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldEluc2lkZUludGVydmFscyhmbG9hdCB5TWluLCBmbG9hdCB5TWF4LCBWZWN0b3I8
WFNJbnRlcnZhbD4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldE91dHNpZGVJbnRl
cnZhbHMoZmxvYXQgeU1pbiwgZmxvYXQgeU1heCwgVmVjdG9yPFhTSW50ZXJ2YWw+JikgY29uc3Qg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gWFNoYXBlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmNwcAppbmRleCA4ZWY3M2M3
Li5kNGNiZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNoYXBl
SW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uY3Bw
CkBAIC0xMDUsMzcgKzEwNSwyOCBAQCB2b2lkIFdyYXBTaGFwZUluZm86OmNvbXB1dGVTaGFwZVNp
emUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgbG9naWNhbAogCiAgICAgLy8g
RklYTUU6IEJ1ZyA4OTk5MzogVGhlIHdyYXAgc2hhcGUgbWF5IGNvbWUgZnJvbSB0aGUgcGFyZW50
IG9iamVjdAogICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gbV9ibG9jay0+c3R5bGUoKS0+d3JhcFNo
YXBlSW5zaWRlKCk7Ci0KICAgICBBU1NFUlQoc2hhcGUpOwogCi0gICAgc3dpdGNoIChzaGFwZS0+
dHlwZSgpKSB7Ci0gICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9SRUNUQU5HTEU6IHsK
LSAgICAgICAgQmFzaWNTaGFwZVJlY3RhbmdsZSogcmVjdCA9IHN0YXRpY19jYXN0PEJhc2ljU2hh
cGVSZWN0YW5nbGUgKj4oc2hhcGUpOwotICAgICAgICBtX3NoYXBlTGVmdCA9IHZhbHVlRm9yTGVu
Z3RoKHJlY3QtPngoKSwgbV9sb2dpY2FsV2lkdGgpOwotICAgICAgICBtX3NoYXBlV2lkdGggPSB2
YWx1ZUZvckxlbmd0aChyZWN0LT53aWR0aCgpLCBtX2xvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIG1f
c2hhcGVUb3AgPSB2YWx1ZUZvckxlbmd0aChyZWN0LT55KCksIG1fbG9naWNhbEhlaWdodCk7Ci0g
ICAgICAgIG1fc2hhcGVIZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChyZWN0LT5oZWlnaHQoKSwgbV9s
b2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIC8vIEZJWE1FOiBCdWcg
ODk3MDc6IEVuYWJsZSBzaGFwZSBpbnNpZGUgZm9yIG5vbi1yZWN0YW5ndWxhciBzaGFwZXMKLSAg
ICBjYXNlIEJhc2ljU2hhcGU6OkJBU0lDX1NIQVBFX0NJUkNMRToKLSAgICBjYXNlIEJhc2ljU2hh
cGU6OkJBU0lDX1NIQVBFX0VMTElQU0U6Ci0gICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQ
RV9QT0xZR09OOiB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICB9CisgICAgbV94c2hhcGUgPSBYU2hhcGU6OmNyZWF0ZVhTaGFwZShzaGFwZSwg
bG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KTsKKyAgICBBU1NFUlQobV94c2hhcGUpOwogfQog
CiBib29sIFdyYXBTaGFwZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBs
aW5lVG9wKQogewogICAgIG1fbGluZVRvcCA9IGxpbmVUb3A7CiAgICAgbV9zZWdtZW50cy5jbGVh
cigpOworCiAgICAgaWYgKGxpbmVTdGF0ZSgpID09IExJTkVfSU5TSURFX1NIQVBFKSB7Ci0gICAg
ICAgIExpbmVTZWdtZW50IHNlZ21lbnQ7Ci0gICAgICAgIHNlZ21lbnQubG9naWNhbExlZnQgPSBt
X3NoYXBlTGVmdDsKLSAgICAgICAgc2VnbWVudC5sb2dpY2FsUmlnaHQgPSBtX3NoYXBlTGVmdCAr
IG1fc2hhcGVXaWR0aDsKLSAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoc2VnbWVudCk7CisgICAg
ICAgIEFTU0VSVChtX3hzaGFwZSk7CisKKyAgICAgICAgVmVjdG9yPFhTSW50ZXJ2YWw+IGludGVy
dmFsczsKKyAgICAgICAgbV94c2hhcGUtPmdldEluc2lkZUludGVydmFscyhsaW5lVG9wLCBsaW5l
VG9wLCBpbnRlcnZhbHMpOyAvLyBGSVhNRTogQnVnIDk1NDc5LCB3b3JrYXJvdW5kIGZvciBub3cK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnRlcnZhbHMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgICAgIExpbmVTZWdtZW50IHNlZ21lbnQ7CisgICAgICAgICAgICBzZWdtZW50Lmxv
Z2ljYWxMZWZ0ID0gaW50ZXJ2YWxzW2ldLngxOworICAgICAgICAgICAgc2VnbWVudC5sb2dpY2Fs
UmlnaHQgPSBpbnRlcnZhbHNbaV0ueDI7CisgICAgICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZChz
ZWdtZW50KTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uaAppbmRleCBhODAzNmQw
Li5mMDcwMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNoYXBl
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmgKQEAg
LTMyLDcgKzMyLDEwIEBACiAKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCiAKKyNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlc0lubGluZU1ldGhvZHMuaCIKKyNp
bmNsdWRlICJYU2hhcGUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTY0LDE0ICs2Nywx
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlV3JhcFNoYXBlSW5mb0ZvclJlbmRl
ckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKik7CiAgICAgc3RhdGljIGJvb2wgaXNXcmFwU2hhcGVJ
bmZvRW5hYmxlZEZvclJlbmRlckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKik7CiAKLSAgICBMYXlv
dXRVbml0IHNoYXBlVG9wKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZVRvcDsgfQorICAgIExheW91
dFVuaXQgc2hhcGVUb3AoKSBjb25zdCAKKyAgICB7IAorICAgICAgICBBU1NFUlQobV94c2hhcGUp
OworICAgICAgICByZXR1cm4gbV94c2hhcGUtPnNoYXBlQm91bmRpbmdCb3goKS55KCk7CisgICAg
fQogICAgIGJvb2wgaGFzU2VnbWVudHMoKSBjb25zdDsKICAgICBjb25zdCBTZWdtZW50TGlzdCYg
c2VnbWVudHMoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1NlZ21lbnRzKCkpOwog
ICAgICAgICByZXR1cm4gbV9zZWdtZW50czsKICAgICB9Ci0gICAgYm9vbCBjb21wdXRlU2VnbWVu
dHNGb3JMaW5lKExheW91dFVuaXQpOworICAgIGJvb2wgY29tcHV0ZVNlZ21lbnRzRm9yTGluZShM
YXlvdXRVbml0IGxpbmVUb3ApOwogICAgIExpbmVTdGF0ZSBsaW5lU3RhdGUoKSBjb25zdDsKICAg
ICB2b2lkIGNvbXB1dGVTaGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVu
aXQgbG9naWNhbEhlaWdodCk7CiAgICAgdm9pZCBkaXJ0eVdyYXBTaGFwZVNpemUoKSB7IG1fd3Jh
cFNoYXBlU2l6ZURpcnR5ID0gdHJ1ZTsgfQpAQCAtODAsMTAgKzg3LDcgQEAgcHJpdmF0ZToKICAg
ICBXcmFwU2hhcGVJbmZvKFJlbmRlckJsb2NrKik7CiAKICAgICBSZW5kZXJCbG9jayogbV9ibG9j
azsKLSAgICBMYXlvdXRVbml0IG1fc2hhcGVMZWZ0OwotICAgIExheW91dFVuaXQgbV9zaGFwZVRv
cDsKLSAgICBMYXlvdXRVbml0IG1fc2hhcGVXaWR0aDsKLSAgICBMYXlvdXRVbml0IG1fc2hhcGVI
ZWlnaHQ7CisgICAgT3duUHRyPFhTaGFwZT4gbV94c2hhcGU7CiAKICAgICBMYXlvdXRVbml0IG1f
bGluZVRvcDsKICAgICBMYXlvdXRVbml0IG1fbG9naWNhbFdpZHRoOwpAQCAtOTUsMTAgKzk5LDE1
IEBAIHByaXZhdGU6CiAKIGlubGluZSBXcmFwU2hhcGVJbmZvOjpMaW5lU3RhdGUgV3JhcFNoYXBl
SW5mbzo6bGluZVN0YXRlKCkgY29uc3QKIHsKLSAgICBpZiAobV9saW5lVG9wIDwgbV9zaGFwZVRv
cCkKKyAgICBBU1NFUlQobV94c2hhcGUpOworICAgIEZsb2F0UmVjdCBzaGFwZUJvdW5kcyA9IG1f
eHNoYXBlLT5zaGFwZUJvdW5kaW5nQm94KCk7CisKKyAgICBpZiAobV9saW5lVG9wIDwgc2hhcGVC
b3VuZHMueSgpKQogICAgICAgICByZXR1cm4gTElORV9CRUZPUkVfU0hBUEU7Ci0gICAgaWYgKG1f
bGluZVRvcCA8IG1fc2hhcGVUb3AgKyBtX3NoYXBlSGVpZ2h0KQorCisgICAgaWYgKG1fbGluZVRv
cCA8IHNoYXBlQm91bmRzLm1heFkoKSkKICAgICAgICAgcmV0dXJuIExJTkVfSU5TSURFX1NIQVBF
OworCiAgICAgcmV0dXJuIExJTkVfQUZURVJfU0hBUEU7CiB9CiAK
</data>
<flag name="review"
          id="172754"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162390</attachid>
            <date>2012-09-05 18:45:04 -0700</date>
            <delta_ts>2012-09-05 20:54:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>43406</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmRjMDRiYi4uODg0MmYwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIwMTMsNiArMjAxMyw5IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvQmlkaVJ1bi5jcHAKICAgICByZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCiAgICAgcmVu
ZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorICAgIHJlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5j
cHAKKyAgICByZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcAorICAgIHJlbmRlcmluZy9F
eGNsdXNpb25TaGFwZS5jcHAKICAgICByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CiAgICAgcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCiAgICAgcmVuZGVyaW5nL0Zsb3dU
aHJlYWRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE0ZjA1YmMuLmM4OGNkNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMDYgQEAKKzIwMTItMDgtMzEgIEhhbnMgTXVsbGVyICA8aG11bGxl
ckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGx1c2lvbnNdIGFkZCBzdXBwb3J0IGZvciB0
aGUgYmFzaWMgc2hhcGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluaXRpYWwgY29tbWl0IG9mIGEgc3Vic2V0IG9mIHRoZSBFeGNsdXNpb25TaGFwZSBj
bGFzc2VzLgorCisgICAgICAgIFRoaXMgc2V0IG9mIGNsYXNzZXMgZW5hYmxlcyB0aGUgZXhjbHVz
aW9ucyBsYXlvdXQgY29kZSB0byBkZXRlcm1pbmUgaG93IHRvIGJyZWFrIHVwIGEgbGluZSBpbnRv
IHNlZ21lbnRzCisgICAgICAgIHRoYXQgd2lsbCBmaXQgd2l0aGluIG9yIGFyb3VuZCBhIHNoYXBl
LCBnaXZlbiB0aGUgWSBjb29yZGluYXRlcyBvZiB0aGUgbGluZSdzIHRvcCBlZGdlIGFuZCBib3R0
b20gZWRnZXMuCisgICAgICAgIFRoZSBFeGNsdXNpb25TaGFwZSBjbGFzcyByZXByZXNlbnRzIEJh
c2ljU2hhcGVzIHdob3NlIGNvb3JkaW5hdGVzIGhhdmUgYmVlbiByZXNvbHZlZCB0byBhY3R1YWwg
dmFsdWVzLiBJdAorICAgICAgICBwcm92aWRlcyBhIHBhaXIgb2YgbWV0aG9kcywgZ2V0SW5zaWRl
SW50ZXJ2YWxzKCkgYW5kIGdldE91dHNpZGVJbnRlcnZhbHMoKSwgdGhhdCByZXR1cm4gdGhlIGxp
bmUgc2VnbWVudHMnCisgICAgICAgIHN0YXJ0IGFuZCBlbmQgWCBjb29yZGluYXRlcywgYW5kIGEg
bWV0aG9kIHRoYXQgY29tcHV0ZXMgdGhlIHNoYXBlJ3MgYm91bmRpbmcgYm94LiBUaGUgbGluZSBz
ZWdtZW50cycKKyAgICAgICAgY29vcmRpbmF0ZXMgYXJlIHJlcHJlc2VudGVkIGJ5IGEgVmVjdG9y
IG9mIEV4Y2x1c2lvbkludGVydmFscy4gRXhjbHVzaW9uSW50ZXJ2YWwgaXMganVzdCBhIHBhaXIK
KyAgICAgICAgb2YgWCBjb29yZGluYXRlcy4KKworICAgICAgICBUaGUgb3RoZXIgY2xhc3Nlcywg
RXhjbHVzaW9uUmVjdGFuZ2xlIChhbmQgVEJEIEV4Y2x1c2lvblBvbHlnb24gZXQgYWwpLCBhcmUg
aW50ZXJuYWwgdG8gdGhlCisgICAgICAgIEV4Y2x1c2lvblNoYXBlIGltcGxlbWVudGF0aW9uLgor
CisgICAgICAgIFRoaXMgaXMgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgRXhjbHVzaW9uU2hh
cGVzIGNvZGUgYW5kIGl0J3Mgb25seSBiZWluZyB1c2VkIHRvIHRoZSBsaW1pdGVkIGV4dGVudCBX
ZWJLaXQKKyAgICAgICAgY3VycmVudGx5IHN1cHBvcnRzIHNoYXBlLWluc2lkZSBleGNsdXNpb25z
LiBJdCB3aWxsIGJlIGV4dGVuZGVkIHRvIHN1cHBvcnQgY29tcHV0aW5nIGEgbWluaW1hbAorICAg
ICAgICBsaW5lIHNlZ21lbnQncyAiZmlyc3QgbGF5b3V0IGxvY2F0aW9uIiBhbmQgb3RoZXIgaW1w
cm92ZW1lbnRzLCBpbiB0YW5kZW0gd2l0aCB0aGUgZXhjbHVzaW9ucyBsYXlvdXQgY29kZS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoaXMgY29kZSBqdXN0
IHJlcGxhY2VzIGEgcHJvdmlzaW9uYWwgaW1wbGVtZW50YXRpb24gc3R1Yi4KKworICAgICAgICBN
b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhbGdvcml0aG1zIHVzZWQgYnkgdGhlIEV4Y2x1c2lv
blNoYXBlcyBjbGFzc2VzIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwOi8vaGFuc211bGxlci13ZWJr
aXQuYmxvZ3Nwb3QuY29tLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVu
ZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVydmFsWDFDb21wYXJhdG9yOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgQ29tcGFyZSB4MSBFeGNsdXNpb25JbnRlcnZhbCBmaWVsZHMuCisgICAgICAgIChXZWJD
b3JlOjpFeGNsdXNpb25JbnRlcnZhbDo6aW50ZXJzZWN0KToKKyAgICAgICAgQ29tcHV0ZSB0aGUg
aW50ZXJzZWN0aW9uIG9mIHRoaXMgaW50ZXJ2YWwgd2l0aCBhbm90aGVyIGludGVydmFsLiBVbmxp
a2UgbWVyZ2Uvc3VidHJhY3QsCisgICAgICAgIHRoZSByZXN1bHQgaXMgYWx3YXlzIGEgc2luZ2xl
IGludGVydmFsLgorICAgICAgICAoV2ViQ29yZTo6c29ydEV4Y2x1c2lvbkludGVydmFscyk6Cisg
ICAgICAgIFNvcnQgYSB2ZWN0b3Igb2YgaW50ZXJ2YWxzIGJ5IHRoZWlyIHgxIChzdGFydCkgZmll
bGQuCisgICAgICAgIChXZWJDb3JlOjptZXJnZUV4Y2x1c2lvbkludGVydmFscyk6CisgICAgICAg
IFVuaW9uIG9mIHR3byB2ZWN0b3JzIG9mIGludGVydmFscy4KKyAgICAgICAgKFdlYkNvcmU6Omlu
dGVyc2VjdEV4Y2x1c2lvbkludGVydmFscyk6CisgICAgICAgIEludGVyc2VjaW9uIG9mIHR3byB2
ZWN0b3JzIG9mIGludGVydmFscy4KKyAgICAgICAgKFdlYkNvcmU6OnN1YnRyYWN0RXhjbHVzaW9u
SW50ZXJ2YWxzKToKKyAgICAgICAgRGlmZmVyZW5jZSBvZiB0d28gdmVjdG9ycyBvZiBpbnRlcnZh
bHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuaDogQWRkZWQuCisg
ICAgICAgIFJlcHJlc2VudHMgdGhlIGFjdHVhbCBzdGFydCBhbmQgZW5kIGNvb3JkaW5hdGVzIG9m
IGEgaG9yaXpvbnRhbCBsaW5lIHNlZ21lbnQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEV4Y2x1c2lvbkludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvbkludGVydmFs
OjpFeGNsdXNpb25JbnRlcnZhbCk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUmVj
dGFuZ2xlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OmVsbGlwc2VYSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblJlY3Rhbmds
ZTo6Z2V0T3V0c2lkZUludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0
YW5nbGU6OmdldEluc2lkZUludGVydmFscyk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVz
aW9uUmVjdGFuZ2xlLmg6IEFkZGVkLgorICAgICAgICBBIHN1YmNsYXNzIG9mIEV4Y2x1c2lvblNo
YXBlIHVzZWQgdG8gcmVwcmVzZW50IHJvdW5kZWQgcmVjdGFuZ2xlcywgY2lyY2xlcywgYW5kIGVs
bGlwc2VzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFeGNsdXNpb25SZWN0YW5nbGUp
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0YW5nbGU6OkV4Y2x1c2lvblJlY3Rhbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0YW5nbGU6OnNoYXBlQm91bmRpbmdC
b3gpOgorCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUV4Y2x1c2lvblJlY3Rh
bmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFeGNsdXNpb25DaXJjbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRXhjbHVzaW9uRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25oYXBlOjpjcmVhdGVFeGNsdXNpb25TaGFwZSk6CisgICAgICAgIENyZWF0ZXMgYW4g
RXhjbHVzaW9uU2hhcGUgZ2l2ZW4gYSBCYXNpY1NoYXBlIGFuZCB0aGUgd2lkdGgvaGVpZ2h0IG9m
IGEgYm9yZGVyIGJveC4gIEN1cnJlbnRseSByb3VuZGVkCisgICAgICAgIHJlY3RhbmdsZXMsIGNp
cmNsZXMsIGFuZCBlbGxpcHNlcyBhcmUgc3VwcG9ydGVkLiAgU3VwcG9ydCBmb3IgcG9seWdvbnMg
d2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgbmV4dCBwYXRjaC4KKworICAgICAgICAq
IHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oOiBBZGRlZC4KKyAgICAgICAgVGhlIHJlc3Qgb2Yg
dGhlIGV4Y2x1c2lvbnMgaW1wbGVtZW50YXRpb24gd2lsbCBvbmx5IGRlcGVuZCBvbiB0aGUgZGVm
aW5pdGlvbnMgaW5jbHVkZWQgYnkgdGhpcyBmaWxlOiBFeGNsdXNpb25TaGFwZSwKKyAgICAgICAg
YW5kIEV4Y2x1c2lvbkludGVydmFsLiBFeGNsdXNpb25TaGFwZSBzdWJjbGFzc2VzIGRlZmluZSBz
aGFwZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIG1ldGhvZHMgdGhhdCBjb21wdXRl
IHRoZQorICAgICAgICBob3Jpem9udGFsIGludGVydmFscyB0aGF0IGZpdCB3aXRoaW4gb3IgYXJv
dW5kIGEgc3BlY2lmaWMgc2hhcGUsIGEgc2hhcGUncyBib3VuZGluZyBib3gsIGFuZCAtIGluIGZ1
dHVyZQorICAgICAgICByZXZpc2lvbnMgLSBvdGhlciBvcGVyYXRpb25zIHJlcXVpcmVkIGJ5IHRo
ZSBleGNsdXNpb25zIGltcGxlbWVudGF0aW9uLCBsaWtlIGNvbXB1dGluZyB0aGUgZmlyc3QgcG9z
c2libGUKKyAgICAgICAgbGF5b3V0IGxvY2F0aW9uIHdpdGhpbiBhIHNoYXBlLiBFeGNsdXNpb25T
aGFwZXMgYXJlIGNyZWF0ZWQgZm9yIEJhc2ljU2hhcGUgb2JqZWN0cyBhcyBuZWVkZWQsIHVzaW5n
IHRoZQorICAgICAgICBjcmVhdGVFeGNsdXNpb25TaGFwZSgpIG1ldGhvZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoRXhjbHVzaW9uU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6RXhj
bHVzaW9uU2hhcGU6On5FeGNsdXNpb25TaGFwZSk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvV3Jh
cFNoYXBlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXcmFwU2hhcGVJbmZvOjpjb21wdXRl
U2hhcGVTaXplKToKKyAgICAgICAgQ3JlYXRlIGFuIEV4Y2x1c2lvblNoYXBlIGZvciB0aGUgUmVu
ZGVyQmxvY2sncyBCYXNpY1NoYXBlLgorICAgICAgICAoV2ViQ29yZTo6V3JhcFNoYXBlSW5mbzo6
Y29tcHV0ZVNlZ21lbnRzRm9yTGluZSk6CisgICAgICAgIFVzZSBFeGNsdXNpb25TaGFwZTo6Z2V0
SW5zaWRlSW50ZXJ2YWxzKCkgdG8gY29tcHV0ZSB0aGUgc2hhcGUtaW5zaWRlIGludGVydmFscyB3
aXRoaW4gd2hpY2ggYSBsaW5lIHdpbGwgZml0LgorCisgICAgICAgICogcmVuZGVyaW5nL1dyYXBT
aGFwZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBTaGFwZUluZm86OnNoYXBlVG9wKToK
KyAgICAgICAgUmVtb3ZlZCAtIG5vIGxvbmdlciB1c2VkLgorICAgICAgICAoV3JhcFNoYXBlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpXcmFwU2hhcGVJbmZvOjpsaW5lU3RhdGUpOgorICAgICAg
ICBVc2UgdGhlIEV4Y2x1c2lvblNoYXBlJ3MgYm91bmRpbmcgYm94IHRvIGNvbXB1dGUgbGluZVN0
YXRlLgorCiAyMDEyLTA5LTA1ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBhdHRlbXB0IGFm
dGVyIHIxMjc2NjAKQEAgLTE0NywxMiArMjUwLDEyIEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKICAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6Ci0g
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9udFBsYXRmb3JtRGF0YUhhcmZC
dXp6LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvaGFyZmJ1enovRm9udFBsYXRmb3JtRGF0YUhh
cmZCdXp6LmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PT0pOgogICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Z2V0UmVuZGVyU3R5bGVG
b3JTdHJpa2UpOgogICAgICAgICAoV2ViQ29yZSk6CiAgICAgICAgIChXZWJDb3JlOjpGb250UGxh
dGZvcm1EYXRhOjpxdWVyeVN5c3RlbUZvclJlbmRlclN0eWxlKToKLSAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9Gb250UGxhdGZvcm1EYXRhSGFyZkJ1enouaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvaGFyZmJ1enovRm9udFBsYXRmb3JtRGF0YUhhcmZCdXp6Lmg6CiAgICAgICAg
IChGb250UGxhdGZvcm1EYXRhKToKIAogMjAxMi0wOS0wNSAgU2FtaSBLeW9zdGlsYSAgPHNreW9z
dGlsQGdvb2dsZS5jb20+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwYTRiNjFm
Li4yMjcxMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ4NTksNiArNDg1
OSwxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
b3VudGVyTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaCBcCisJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25SZWN0YW5nbGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUmVjdGFuZ2xlLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25T
aGFwZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IDg2Zjc1ZTIuLjRiYmE0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTA5NCw2ICsxMDk0LDkgQEAgU09V
UkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL0JpZGlSdW4uY3BwIFwKICAgICByZW5kZXJpbmcvQ291
bnRlck5vZGUuY3BwIFwKICAgICByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIFwKKyAgICByZW5k
ZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuY3BwIFwKKyAgICByZW5kZXJpbmcvRXhjbHVzaW9uUmVj
dGFuZ2xlLmNwcCBcCisgICAgcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcCBcCiAgICAgcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBcCiAgICAgcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuY3BwIFwKICAgICByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwIFwK
QEAgLTIyNzIsNiArMjI3NSw5IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9icmVha19s
aW5lcy5oIFwKICAgICByZW5kZXJpbmcvQ291bnRlck5vZGUuaCBcCiAgICAgcmVuZGVyaW5nL0Vs
bGlwc2lzQm94LmggXAorICAgIHJlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5oIFwKKyAgICBy
ZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmggXAorICAgIHJlbmRlcmluZy9FeGNsdXNpb25T
aGFwZS5oIFwKICAgICByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBcCiAgICAgcmVu
ZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuaCBcCiAgICAgcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFu
c2Zvcm1TdGF0ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1MGZiMzU1Li44ZTVmMDkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC00NzAwLDYgKzQ3MDAsMTIgQEAKICAgICAgICAgICAgICdyZW5kZXJp
bmcvQ291bnRlck5vZGUuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL0VsbGlwc2lzQm94LmNw
cCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL0VsbGlwc2lzQm94LmgnLAorICAgICAgICAgICAg
J3JlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9FeGNsdXNpb25JbnRlcnZhbC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvRXhjbHVzaW9u
UmVjdGFuZ2xlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL0V4Y2x1c2lvblJlY3Rhbmds
ZS5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuY3BwJywKKyAgICAg
ICAgICAgICdyZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCcsCiAgICAgICAgICAgICAncmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDk4NDIyYmUuLjI1MzhiNmMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zODM2Niw2ICszODM2NiwzMCBAQAogCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXEVsbGlwc2lzQm94LmgiCiAJCQkJPgogCQkJPC9GaWxlPgor
ICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcRXhjbHVzaW9uSW50ZXJ2YWwuY3BwIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAg
ICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xFeGNsdXNpb25JbnRl
cnZhbC5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAg
ICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xFeGNs
dXNpb25SZWN0YW5nbGUuY3BwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Cisg
ICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8
RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xFeGNsdXNpb25TUmVjdGFuZ2xlLmgiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZl
UGF0aD0iLi5ccmVuZGVyaW5nXEV4Y2x1c2lvblNoYXBlLmNwcCIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAg
ICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcRXhjbHVzaW9uU2hhcGUuaCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgog
CQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xGaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAiCiAJCQkJPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDRlNjA2NWUuLjgxZDJiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MzQsNiArMTgz
NCwxMiBAQAogCQk2RTY3RDJBNjEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdM
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE0MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2
RTY3RDJBNzEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4
NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQw
MDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0Qu
aCAqLzsgfTsKKwkJNkU4Nzk4QkExNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvbkludGVydmFs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODc5
OEI0MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5jcHAgKi87IH07CisJCTZF
ODc5OEJCMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4Nzk4QjUxNUY4MUU0QTAwQkZF
NEFBIC8qIEV4Y2x1c2lvbkludGVydmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkU4Nzk4QkMxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lv
blJlY3RhbmdsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RTg3OThCNjE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcCAq
LzsgfTsKKwkJNkU4Nzk4QkQxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4Nzk4Qjcx
NUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5oICovOyB9OworCQk2RTg3OThC
RTE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4Nzk4QjgxNUY4MUU0QTAwQkZFNEFBIC8q
IEV4Y2x1c2lvblNoYXBlLmNwcCAqLzsgfTsKKwkJNkU4Nzk4QkYxNUY4MUU0QTAwQkZFNEFBIC8q
IEV4Y2x1c2lvblNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTg3OThCOTE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RUJDNUVBRjEz
OEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUQxMzhCNTBGMjAwQTBDRjhBIC8qIEpT
RmxvYXQ2NEFycmF5LmNwcCAqLzsgfTsKIAkJNkVCQzVFQjAxMzhCNTBGMjAwQTBDRjhBIC8qIEpT
RmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuaCAqLzsgfTsK
IAkJNkVCRjBFNDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU0NTEyQTg5MjYx
MDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsgfTsKQEAgLTkwMDksNiArOTAxNSwx
MiBAQAogCQk2RTY3RDJBNDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5H
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3
NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXh0ZW5zaW9uczNET3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFODc5OEI0MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNsdXNpb25JbnRlcnZh
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODc5OEI1MTVGODFFNEEwMEJG
RTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGNsdXNpb25JbnRlcnZhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
RTg3OThCNjE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2x1c2lvblJlY3RhbmdsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODc5OEI3MTVGODFFNEEwMEJGRTRBQSAvKiBF
eGNsdXNpb25SZWN0YW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhj
bHVzaW9uUmVjdGFuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODc5OEI4
MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25TaGFwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFeGNsdXNpb25TaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTZFODc5OEI5MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25TaGFwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNsdXNpb25TaGFwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxv
YXQ2NEFycmF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBw
YXRoID0gY2FudmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRB
cnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEyODQsNiArMjEyOTYsMTIg
QEAKIAkJCQk5MzkyRjE0QjBBRDE4NjFCMDA2OTFCRDQgLyogQ291bnRlck5vZGUuaCAqLywKIAkJ
CQlBOENGRjZDQTBBMTU2MUNEMDAwQTQyMzQgLyogRWxsaXBzaXNCb3guY3BwICovLAogCQkJCUE4
Q0ZGNkJEMEExNTYxMTgwMDBBNDIzNCAvKiBFbGxpcHNpc0JveC5oICovLAorCQkJCTZFODc5OEI0
MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5jcHAgKi8sCisJCQkJNkU4Nzk4
QjUxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvbkludGVydmFsLmggKi8sCisJCQkJNkU4Nzk4
QjYxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5jcHAgKi8sCisJCQkJNkU4
Nzk4QjcxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5oICovLAorCQkJCTZF
ODc5OEI4MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25TaGFwZS5jcHAgKi8sCisJCQkJNkU4
Nzk4QjkxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblNoYXBlLmggKi8sCiAJCQkJMzEzMTNG
NjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLywKIAkJCQkz
MTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLywKIAkJ
CQlBOENGRjA0ODBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgKi8sCkBA
IC0yMjIwNiw2ICsyMjIyNCw4IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk2RTg3OThC
QjE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAor
CQkJCTZFODc5OEJGMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25TaGFwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTdCQzY5REIxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFj
dFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjU0OTAsNiAr
MjU1MTAsNyBAQAogCQkJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEExNUVGMjVERjAwOEI3MTEwIC8qIEJhc2lj
U2hhcGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhDMTVFRjI2MDQwMDhC
NzExMCAvKiBCYXNpY1NoYXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU4Nzk4QkQxNUY4MUU0
QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODU3
OSw2ICsyODYwMCw5IEBACiAJCQkJNEZCMzkwQUQxNUVGNjFGMzAwN0FENTFGIC8qIEdlbmVyYXRl
ZEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAv
KiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDhBNUYwMTVGNTZGMkMw
MDk4RDA3MSAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTg3
OThCQTE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNkU4Nzk4QkMxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTg3OThCRTE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVz
aW9uU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V4Y2x1c2lvbkludGVydmFsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40ZTBlZjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvbkludGVydmFsLmNwcApAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAor
ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJFeGNsdXNpb25JbnRlcnZhbC5oIgorCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSW50ZXJ2YWxY
MUNvbXBhcmF0b3IgeworICAgIGJvb2wgb3BlcmF0b3IoKSAoY29uc3QgRXhjbHVzaW9uSW50ZXJ2
YWwmIGkxLCBjb25zdCBFeGNsdXNpb25JbnRlcnZhbCYgaTIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gaTEueDEgPCBpMi54MTsKKyAgICB9Cit9OworCitib29sIEV4Y2x1c2lvbkludGVy
dmFsOjppbnRlcnNlY3QoY29uc3QgRXhjbHVzaW9uSW50ZXJ2YWwmIGksIEV4Y2x1c2lvbkludGVy
dmFsJiBydikgY29uc3QKK3sKKyAgICBpZiAoeDIgPCBpLngxIHx8IHgxID4gaS54MikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJ2LngxID0gc3RkOjptYXgoeDEsIGkueDEpOworICAgIHJ2
LngyID0gc3RkOjptaW4oeDIsIGkueDIpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIHNv
cnRFeGNsdXNpb25JbnRlcnZhbHMoVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYgdikKK3sKKyAg
ICBzdGQ6OnNvcnQodi5iZWdpbigpLCB2LmVuZCgpLCBJbnRlcnZhbFgxQ29tcGFyYXRvcigpKTsK
K30KKwordm9pZCBtZXJnZUV4Y2x1c2lvbkludGVydmFscyhjb25zdCBWZWN0b3I8RXhjbHVzaW9u
SW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYgdjIsIFZlY3Rv
cjxFeGNsdXNpb25JbnRlcnZhbD4mIHJ2KQoreworICAgIGlmICghdjEuc2l6ZSgpKQorICAgICAg
ICBydi5hcHBlbmRSYW5nZSh2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7CisgICAgZWxzZSBpZiAoIXYy
LnNpemUoKSkKKyAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOwor
ICAgIGVsc2UgeworICAgICAgICBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+IHYodjEuc2l6ZSgp
ICsgdjIuc2l6ZSgpKTsKKyAgICAgICAgRXhjbHVzaW9uSW50ZXJ2YWwqIGludGVydmFsID0gMDsK
KworICAgICAgICBzdGQ6Om1lcmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpLCB2Mi5iZWdpbigpLCB2
Mi5lbmQoKSwgdi5iZWdpbigpLCBJbnRlcnZhbFgxQ29tcGFyYXRvcigpKTsKKworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmICgh
aW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAmdltpXTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKHZbaV0ueDEgPj0gaW50ZXJ2YWwtPngxICYmIHZbaV0ueDEgPD0gaW50ZXJ2YWwt
PngyKSAvLyBGSVhNRTogMXN0IDw9IHRlc3Qgbm90IG5lZWRlZD8KKyAgICAgICAgICAgICAgICBp
bnRlcnZhbC0+eDIgPSBzdGQ6Om1heChpbnRlcnZhbC0+eDIsIHZbaV0ueDIpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7CisgICAgICAg
ICAgICAgICAgaW50ZXJ2YWwgPSAmdltpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChpbnRlcnZhbCkKKyAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOwor
ICAgIH0KK30KKwordm9pZCBpbnRlcnNlY3RFeGNsdXNpb25JbnRlcnZhbHMoY29uc3QgVmVjdG9y
PEV4Y2x1c2lvbkludGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4m
IHYyLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiBydikKK3sKKyAgICBzaXplX3QgdjFTaXpl
ID0gdjEuc2l6ZSgpOworICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXplKCk7CisKKyAgICBpZiAo
IXYxU2l6ZSB8fCAhdjJTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBFeGNsdXNpb25JbnRl
cnZhbCBpbnRlcnZhbDsKKyAgICBib29sIG92ZXJsYXAgPSBmYWxzZTsKKyAgICBzaXplX3QgaTEg
PSAwOworICAgIHNpemVfdCBpMiA9IDA7CisKKyAgICB3aGlsZSAoaTEgPCB2MVNpemUgJiYgaTIg
PCB2MlNpemUpIHsKKyAgICAgICAgRXhjbHVzaW9uSW50ZXJ2YWwgdjEyOworICAgICAgICBpZiAo
djFbaTFdLmludGVyc2VjdCh2MltpMl0sIHYxMikpIHsKKyAgICAgICAgICAgIGlmICghb3Zlcmxh
cCB8fCAhdjEyLmludGVyc2VjdChpbnRlcnZhbCwgaW50ZXJ2YWwpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG92ZXJsYXApCisgICAgICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7
CisgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSB2MTI7CisgICAgICAgICAgICAgICAgb3Zlcmxh
cCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodjFbaTFdLngyIDwgdjJb
aTJdLngyKQorICAgICAgICAgICAgICAgIGkxKys7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgaTIrKzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChvdmVybGFw
KQorICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7CisgICAgICAgICAgICBvdmVy
bGFwID0gZmFsc2U7CisgICAgICAgICAgICBpZiAodjFbaTFdLngxIDwgdjJbaTJdLngxKQorICAg
ICAgICAgICAgICAgIGkxKys7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaTIr
KzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChvdmVybGFwKQorICAgICAgICBydi5hcHBl
bmQoaW50ZXJ2YWwpOworfQorCit2b2lkIHN1YnRyYWN0RXhjbHVzaW9uSW50ZXJ2YWxzKGNvbnN0
IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mIHYxLCBjb25zdCBWZWN0b3I8RXhjbHVzaW9uSW50
ZXJ2YWw+JiB2MiwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYgcnYpCit7CisgICAgc2l6ZV90
IHYxU2l6ZSA9IHYxLnNpemUoKTsKKyAgICBzaXplX3QgdjJTaXplID0gdjIuc2l6ZSgpOworCisg
ICAgaWYgKCF2MVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdjJTaXplKQorICAg
ICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIHNpemVfdCBpMSA9IDAsIGkyID0gMDsKKyAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEu
YmVnaW4oKSwgdjEuZW5kKCkpOworCisgICAgICAgIHdoaWxlIChpMSA8IHJ2LnNpemUoKSAmJiBp
MiA8IHYyU2l6ZSkgeworICAgICAgICAgICAgRXhjbHVzaW9uSW50ZXJ2YWwmIGludGVydmFsMSA9
IHJ2W2kxXTsKKyAgICAgICAgICAgIGNvbnN0IEV4Y2x1c2lvbkludGVydmFsJiBpbnRlcnZhbDIg
PSB2MltpMl07CisKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbDIueDEgPD0gaW50ZXJ2YWwxLngx
ICYmIGludGVydmFsMi54MiA+PSBpbnRlcnZhbDEueDIpCisgICAgICAgICAgICAgICAgcnYucmVt
b3ZlKGkxKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MiA8IGludGVydmFsMS54
MSkKKyAgICAgICAgICAgICAgICBpMiArPSAxOworICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2
YWwyLngxID4gaW50ZXJ2YWwxLngyKQorICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAg
ICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEgPiBpbnRlcnZhbDEueDEgJiYgaW50ZXJ2YWwyLngy
IDwgaW50ZXJ2YWwxLngyKSB7CisgICAgICAgICAgICAgICAgcnYuaW5zZXJ0KGkxLCBFeGNsdXNp
b25JbnRlcnZhbChpbnRlcnZhbDEueDEsIGludGVydmFsMi54MSkpOworICAgICAgICAgICAgICAg
IGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsKKyAgICAgICAgICAgICAgICBpMiArPSAxOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbDIueDEgPD0gaW50ZXJ2YWwxLngxKSB7Cisg
ICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngxID0gaW50ZXJ2YWwyLngyOworICAgICAgICAgICAg
ICAgIGkyICs9IDE7CisgICAgICAgICAgICB9IGVsc2UgIHsgLy8gKGludGVydmFsMi54MiA+PSBp
bnRlcnZhbDEueDIpCisgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngyID0gaW50ZXJ2YWwyLngx
OworICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0V4Y2x1c2lvbkludGVydmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWQzMWZlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25JbnRlcnZhbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAq
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV4Y2x1
c2lvbkludGVydmFsX2gKKyNkZWZpbmUgRXhjbHVzaW9uSW50ZXJ2YWxfaAorCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBFeGNsdXNpb25J
bnRlcnZhbCB7CitwdWJsaWM6CisgICAgZmxvYXQgeDE7CisgICAgZmxvYXQgeDI7CisKKyAgICBF
eGNsdXNpb25JbnRlcnZhbChmbG9hdCB4MSA9IDAsIGZsb2F0IHgyID0gMCkKKyAgICAgICAgOiB4
MSh4MSkKKyAgICAgICAgLCB4Mih4MikKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpbnRlcnNl
Y3QoY29uc3QgRXhjbHVzaW9uSW50ZXJ2YWwmLCBFeGNsdXNpb25JbnRlcnZhbCYpIGNvbnN0Owor
fTsKKwordm9pZCBzb3J0RXhjbHVzaW9uSW50ZXJ2YWxzKFZlY3RvcjxFeGNsdXNpb25JbnRlcnZh
bD4mKTsKK3ZvaWQgbWVyZ2VFeGNsdXNpb25JbnRlcnZhbHMoY29uc3QgVmVjdG9yPEV4Y2x1c2lv
bkludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mLCBWZWN0b3I8RXhj
bHVzaW9uSW50ZXJ2YWw+Jik7Cit2b2lkIGludGVyc2VjdEV4Y2x1c2lvbkludGVydmFscyhjb25z
dCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiwgY29uc3QgVmVjdG9yPEV4Y2x1c2lvbkludGVy
dmFsPiYsIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKTsKK3ZvaWQgc3VidHJhY3RFeGNsdXNp
b25JbnRlcnZhbHMoY29uc3QgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYsIGNvbnN0IFZlY3Rv
cjxFeGNsdXNpb25JbnRlcnZhbD4mLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+Jik7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEV4Y2x1c2lvbkludGVydmFsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhmODNiMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuY3BwCkBAIC0wLDAg
KzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jw
b3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisg
KiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4Y2x1c2lv
blJlY3RhbmdsZS5oIgorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIGZsb2F0IGVsbGlwc2VYSW50ZXJjZXB0KGZsb2F0
IHksIGZsb2F0IHJ4LCBmbG9hdCByeSkKK3sKKyAgICBBU1NFUlQocnkgPiAwKTsKKyAgICByZXR1
cm4gcnggKiBzcXJ0KDEgLSAoeSp5KSAvIChyeSpyeSkpOworfQorCit2b2lkIEV4Y2x1c2lvblJl
Y3RhbmdsZTo6Z2V0T3V0c2lkZUludGVydmFscyhmbG9hdCB5MSwgZmxvYXQgeTIsIFZlY3RvcjxF
eGNsdXNpb25JbnRlcnZhbD4mIHJ2KSBjb25zdAoreworICAgIGlmICh5MSA+IHkyKQorICAgICAg
ICBzdGQ6OnN3YXAoeTEsIHkyKTsKKworICAgIGlmICh5MiA8IG1feSB8fCB5MSA+PSBtX3kgKyBt
X2hlaWdodCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgeDEgPSBtX3g7CisgICAgZmxv
YXQgeDIgPSBtX3ggKyBtX3dpZHRoOworCisgICAgaWYgKG1fcnkgPiAwKSB7CisgICAgICAgIGlm
ICh5MiA8IG1feSArIG1fcnkpIHsKKyAgICAgICAgICAgIGZsb2F0IHlpID0geTIgLSBtX3kgLSBt
X3J5OworICAgICAgICAgICAgZmxvYXQgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbV9yeCwg
bV9yeSk7CisgICAgICAgICAgICB4MSA9IG1feCArIG1fcnggLSB4aTsKKyAgICAgICAgICAgIHgy
ID0gbV94ICsgbV93aWR0aCAtIG1fcnggKyB4aTsKKyAgICAgICAgfSBlbHNlIGlmICh5MSA+IG1f
eSArIG1faGVpZ2h0IC0gbV9yeSkgeworICAgICAgICAgICAgZmxvYXQgeWkgPSAgeTEgLSAobV95
ICsgbV9oZWlnaHQgLSBtX3J5KTsKKyAgICAgICAgICAgIGZsb2F0IHhpID0gZWxsaXBzZVhJbnRl
cmNlcHQoeWksIG1fcngsIG1fcnkpOworICAgICAgICAgICAgeDEgPSBtX3ggKyBtX3J4IC0geGk7
CisgICAgICAgICAgICB4MiA9IG1feCArIG1fd2lkdGggLSBtX3J4ICsgeGk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBydi5hcHBlbmQoRXhjbHVzaW9uSW50ZXJ2YWwoeDEsIHgyKSk7Cit9CisK
K3ZvaWQgRXhjbHVzaW9uUmVjdGFuZ2xlOjpnZXRJbnNpZGVJbnRlcnZhbHMoZmxvYXQgeTEsIGZs
b2F0IHkyLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiBydikgY29uc3QKK3sKKyAgICBpZiAo
eTEgPiB5MikKKyAgICAgICAgc3RkOjpzd2FwKHkxLCB5Mik7CisKKyAgICBpZiAoeTEgPCBtX3kg
fHwgeTIgPj0gbV95ICsgbV9oZWlnaHQpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHgx
ID0gbV94OworICAgIGZsb2F0IHgyID0gbV94ICsgbV93aWR0aDsKKworICAgIGlmIChtX3J5ID4g
MCkgeworICAgICAgICBib29sIHkxSW50ZXJjZXB0c0Nvcm5lciA9IHkxIDwgbV95ICsgbV9yeTsK
KyAgICAgICAgYm9vbCB5MkludGVyY2VwdHNDb3JuZXIgPSB5MiA+IG1feSArIG1faGVpZ2h0IC0g
bV9yeTsKKyAgICAgICAgZmxvYXQgeGkgPSAwOworCisgICAgICAgIGlmICh5MUludGVyY2VwdHND
b3JuZXIgJiYgeTJJbnRlcmNlcHRzQ29ybmVyKSB7CisgICAgICAgICAgICBpZiAgKHkxIDwgbV9o
ZWlnaHQgKyAyKm1feSAtIHkyKSB7CisgICAgICAgICAgICAgICAgZmxvYXQgeWkgPSB5MSAtIG1f
eSAtIG1fcnk7CisgICAgICAgICAgICAgICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbV9y
eCwgbV9yeSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZsb2F0IHlp
ID0gIHkyIC0gKG1feSArIG1faGVpZ2h0IC0gbV9yeSk7CisgICAgICAgICAgICAgICAgeGkgPSBl
bGxpcHNlWEludGVyY2VwdCh5aSwgbV9yeCwgbV9yeSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAoeTFJbnRlcmNlcHRzQ29ybmVyKSB7CisgICAgICAgICAgICBmbG9hdCB5aSA9
IHkxIC0gbV95IC0gbV9yeTsKKyAgICAgICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWks
IG1fcngsIG1fcnkpOworICAgICAgICB9IGVsc2UgaWYgKHkySW50ZXJjZXB0c0Nvcm5lcikgewor
ICAgICAgICAgICAgZmxvYXQgeWkgPSAgeTIgLSAobV95ICsgbV9oZWlnaHQgLSBtX3J5KTsKKyAg
ICAgICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIG1fcngsIG1fcnkpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHkxSW50ZXJjZXB0c0Nvcm5lciB8fCB5MkludGVyY2VwdHNDb3Ju
ZXIpIHsKKyAgICAgICAgICAgIHgxID0gbV94ICsgbV9yeCAtIHhpOworICAgICAgICAgICAgeDIg
PSBtX3ggKyBtX3dpZHRoIC0gbV9yeCArIHhpOworICAgICAgICB9CisgICAgfQorCisgICAgcnYu
YXBwZW5kKEV4Y2x1c2lvbkludGVydmFsKHgxLCB4MikpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVj
dGFuZ2xlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAyZjE4YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaApAQCAt
MCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
CisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeGNsdXNpb25SZWN0YW5nbGVfaAorI2RlZmlu
ZSBFeGNsdXNpb25SZWN0YW5nbGVfaAorCisjaW5jbHVkZSAiRXhjbHVzaW9uU2hhcGUuaCIKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFeGNsdXNpb25SZWN0YW5nbGUgOiBwdWJsaWMgRXhj
bHVzaW9uU2hhcGUgeworcHVibGljOgorICAgIEV4Y2x1c2lvblJlY3RhbmdsZShmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCByeCA9IDAsIGZsb2F0IHJ5
ID0gMCkKKyAgICAgICAgOiBFeGNsdXNpb25TaGFwZSgpCisgICAgICAgICwgbV94KHgpCisgICAg
ICAgICwgbV95KHkpCisgICAgICAgICwgbV93aWR0aCh3aWR0aCkKKyAgICAgICAgLCBtX2hlaWdo
dChoZWlnaHQpCisgICAgICAgICwgbV9yeChyeCkKKyAgICAgICAgLCBtX3J5KHJ5KQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzaGFwZUJvdW5kaW5nQm94KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gRmxvYXRSZWN0KG1feCwgbV95LCBtX3dpZHRoLCBtX2hlaWdodCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T3V0c2lkZUludGVydmFscyhmbG9hdCB5MSwgZmxvYXQg
eTIsIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW5zaWRlSW50ZXJ2YWxzKGZsb2F0IHkxLCBmbG9hdCB5MiwgVmVjdG9yPEV4
Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGZsb2F0
IG1feDsKKyAgICBmbG9hdCBtX3k7CisgICAgZmxvYXQgbV93aWR0aDsKKyAgICBmbG9hdCBtX2hl
aWdodDsKKyAgICBmbG9hdCBtX3J4OyAvLyBjb3JuZXIgWCByYWRpdXMKKyAgICBmbG9hdCBtX3J5
OyAvLyBjb3JuZXIgWSByYWRpdXMKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEV4Y2x1c2lvblJlY3RhbmdsZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblNoYXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTYx
ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blNoYXBlLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
ZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJFeGNsdXNpb25TaGFwZS5oIgorCisjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0
aW9ucy5oIgorI2luY2x1ZGUgIkV4Y2x1c2lvblJlY3RhbmdsZS5oIgorI2luY2x1ZGUgIkxlbmd0
aEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2lu
ZFJ1bGUuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBQYXNzT3duUHRyPEV4Y2x1c2lvblNoYXBlPiBjcmVhdGVFeGNsdXNpb25SZWN0
YW5nbGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
cngsIGZsb2F0IHJ5KQoreworICAgIEFTU0VSVCh3aWR0aCA+PSAwICYmIGhlaWdodCA+PSAwICYm
IHJ4ID49IDAgJiYgcnkgPj0gMCk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFeGNsdXNpb25S
ZWN0YW5nbGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgcngsIHJ5KSk7Cit9CisKK3N0YXRpYyBQYXNz
T3duUHRyPEV4Y2x1c2lvblNoYXBlPiBjcmVhdGVFeGNsdXNpb25DaXJjbGUoZmxvYXQgY3gsIGZs
b2F0IGN5LCBmbG9hdCByYWRpdXMpCit7CisgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEV4Y2x1c2lvblJlY3RhbmdsZShjeCAtIHJhZGl1cywgY3kgLSBy
YWRpdXMsIGN4ICsgcmFkaXVzLCBjeSArIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKK30KKwor
c3RhdGljIFBhc3NPd25QdHI8RXhjbHVzaW9uU2hhcGU+IGNyZWF0ZUV4Y2x1c2lvbkVsbGlwc2Uo
ZmxvYXQgY3gsIGZsb2F0IGN5LCBmbG9hdCByeCwgZmxvYXQgcnkpCit7CisgICAgQVNTRVJUKHJ4
ID49IDAgJiYgcnkgPj0gMCk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFeGNsdXNpb25SZWN0
YW5nbGUoY3ggLSByeCwgY3kgLSByeSwgY3ggKyByeCwgY3kgKyByeSwgcngsIHJ5KSk7Cit9CisK
K1Bhc3NPd25QdHI8RXhjbHVzaW9uU2hhcGU+IEV4Y2x1c2lvblNoYXBlOjpjcmVhdGVFeGNsdXNp
b25TaGFwZShjb25zdCBCYXNpY1NoYXBlKiB3cmFwU2hhcGUsIGZsb2F0IGJveFdpZHRoLCBmbG9h
dCBib3hIZWlnaHQpCit7CisgICAgaWYgKCF3cmFwU2hhcGUpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgc3dpdGNoICh3cmFwU2hhcGUtPnR5cGUoKSkgeworICAgIGNhc2UgQmFzaWNT
aGFwZTo6QkFTSUNfU0hBUEVfUkVDVEFOR0xFOiB7CisgICAgICAgIGNvbnN0IEJhc2ljU2hhcGVS
ZWN0YW5nbGUqIHJlY3RhbmdsZSA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5n
bGUqPih3cmFwU2hhcGUpOworICAgICAgICBMZW5ndGggcnggPSByZWN0YW5nbGUtPmNvcm5lclJh
ZGl1c1goKTsKKyAgICAgICAgTGVuZ3RoIHJ5ID0gcmVjdGFuZ2xlLT5jb3JuZXJSYWRpdXNZKCk7
CisgICAgICAgIHJldHVybiBjcmVhdGVFeGNsdXNpb25SZWN0YW5nbGUoCisgICAgICAgICAgICBm
bG9hdFZhbHVlRm9yTGVuZ3RoKHJlY3RhbmdsZS0+eCgpLCBib3hXaWR0aCksCisgICAgICAgICAg
ICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHJlY3RhbmdsZS0+eSgpLCBib3hIZWlnaHQpLAorICAgICAg
ICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChyZWN0YW5nbGUtPndpZHRoKCksIGJveFdpZHRoKSwK
KyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgocmVjdGFuZ2xlLT5oZWlnaHQoKSwgYm94
SGVpZ2h0KSwKKyAgICAgICAgICAgIHJ4LmlzVW5kZWZpbmVkKCkgPyAwIDogZmxvYXRWYWx1ZUZv
ckxlbmd0aChyeCwgYm94V2lkdGgpLAorICAgICAgICAgICAgcnkuaXNVbmRlZmluZWQoKSA/IDAg
OiBmbG9hdFZhbHVlRm9yTGVuZ3RoKHJ5LCBib3hIZWlnaHQpICk7CisgICAgfQorCisgICAgY2Fz
ZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9DSVJDTEU6IHsKKyAgICAgICAgY29uc3QgQmFzaWNT
aGFwZUNpcmNsZSogY2lyY2xlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZUNpcmNsZSo+
KHdyYXBTaGFwZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGNsdXNpb25DaXJjbGUoCisgICAg
ICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNpcmNsZS0+Y2VudGVyWCgpLCBib3hXaWR0aCks
CisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNpcmNsZS0+Y2VudGVyWSgpLCBib3hI
ZWlnaHQpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChjaXJjbGUtPnJhZGl1cygp
LCBzdGQ6Om1heChib3hIZWlnaHQsIGJveFdpZHRoKSkgKTsKKyAgICB9CisKKyAgICBjYXNlIEJh
c2ljU2hhcGU6OkJBU0lDX1NIQVBFX0VMTElQU0U6IHsKKyAgICAgICAgY29uc3QgQmFzaWNTaGFw
ZUVsbGlwc2UqIGVsbGlwc2UgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlRWxsaXBzZSo+
KHdyYXBTaGFwZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGNsdXNpb25FbGxpcHNlKAorICAg
ICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChlbGxpcHNlLT5jZW50ZXJYKCksIGJveFdpZHRo
KSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBzZS0+Y2VudGVyWSgpLCBi
b3hIZWlnaHQpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChlbGxpcHNlLT5yYWRp
dXNYKCksIGJveFdpZHRoKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBz
ZS0+cmFkaXVzWSgpLCBib3hIZWlnaHQpICk7CisgICAgfQorCisgICAgY2FzZSBCYXNpY1NoYXBl
OjpCQVNJQ19TSEFQRV9QT0xZR09OOgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRXhjbHVzaW9uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25T
aGFwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTE0OGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaApA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeGNsdXNpb25TaGFwZV9oCisjZGVmaW5l
IEV4Y2x1c2lvblNoYXBlX2gKKworI2luY2x1ZGUgIkJhc2ljU2hhcGVzLmgiCisjaW5jbHVkZSAi
RXhjbHVzaW9uSW50ZXJ2YWwuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBFeGNsdXNpb25TaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8RXhjbHVzaW9uU2hhcGU+IGNyZWF0ZUV4Y2x1c2lvblNoYXBlKGNvbnN0IEJhc2lj
U2hhcGUqLCBmbG9hdCBib3JkZXJCb3hXaWR0aCwgZmxvYXQgYm9yZGVyQm94SGVpZ2h0KTsKKwor
ICAgIHZpcnR1YWwgfkV4Y2x1c2lvblNoYXBlKCkgeyB9CisKKyAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBzaGFwZUJvdW5kaW5nQm94KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbnNp
ZGVJbnRlcnZhbHMoZmxvYXQgeU1pbiwgZmxvYXQgeU1heCwgVmVjdG9yPEV4Y2x1c2lvbkludGVy
dmFsPiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T3V0c2lkZUludGVydmFscyhm
bG9hdCB5TWluLCBmbG9hdCB5TWF4LCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Qg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRXhjbHVzaW9u
U2hhcGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUlu
Zm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uY3BwCmluZGV4
IDhlZjczYzcuLjY1OTZhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9X
cmFwU2hhcGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNoYXBl
SW5mby5jcHAKQEAgLTEwNSwzNyArMTA1LDI4IEBAIHZvaWQgV3JhcFNoYXBlSW5mbzo6Y29tcHV0
ZVNoYXBlU2l6ZShMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBsb2dpY2FsCiAK
ICAgICAvLyBGSVhNRTogQnVnIDg5OTkzOiBUaGUgd3JhcCBzaGFwZSBtYXkgY29tZSBmcm9tIHRo
ZSBwYXJlbnQgb2JqZWN0CiAgICAgQmFzaWNTaGFwZSogc2hhcGUgPSBtX2Jsb2NrLT5zdHlsZSgp
LT53cmFwU2hhcGVJbnNpZGUoKTsKLQogICAgIEFTU0VSVChzaGFwZSk7CiAKLSAgICBzd2l0Y2gg
KHNoYXBlLT50eXBlKCkpIHsKLSAgICBjYXNlIEJhc2ljU2hhcGU6OkJBU0lDX1NIQVBFX1JFQ1RB
TkdMRTogewotICAgICAgICBCYXNpY1NoYXBlUmVjdGFuZ2xlKiByZWN0ID0gc3RhdGljX2Nhc3Q8
QmFzaWNTaGFwZVJlY3RhbmdsZSAqPihzaGFwZSk7Ci0gICAgICAgIG1fc2hhcGVMZWZ0ID0gdmFs
dWVGb3JMZW5ndGgocmVjdC0+eCgpLCBtX2xvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIG1fc2hhcGVX
aWR0aCA9IHZhbHVlRm9yTGVuZ3RoKHJlY3QtPndpZHRoKCksIG1fbG9naWNhbFdpZHRoKTsKLSAg
ICAgICAgbV9zaGFwZVRvcCA9IHZhbHVlRm9yTGVuZ3RoKHJlY3QtPnkoKSwgbV9sb2dpY2FsSGVp
Z2h0KTsKLSAgICAgICAgbV9zaGFwZUhlaWdodCA9IHZhbHVlRm9yTGVuZ3RoKHJlY3QtPmhlaWdo
dCgpLCBtX2xvZ2ljYWxIZWlnaHQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgLy8gRklY
TUU6IEJ1ZyA4OTcwNzogRW5hYmxlIHNoYXBlIGluc2lkZSBmb3Igbm9uLXJlY3Rhbmd1bGFyIHNo
YXBlcwotICAgIGNhc2UgQmFzaWNTaGFwZTo6QkFTSUNfU0hBUEVfQ0lSQ0xFOgotICAgIGNhc2Ug
QmFzaWNTaGFwZTo6QkFTSUNfU0hBUEVfRUxMSVBTRToKLSAgICBjYXNlIEJhc2ljU2hhcGU6OkJB
U0lDX1NIQVBFX1BPTFlHT046IHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIH0KKyAgICBtX3hzaGFwZSA9IEV4Y2x1c2lvblNoYXBlOjpjcmVh
dGVFeGNsdXNpb25TaGFwZShzaGFwZSwgbG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KTsKKyAg
ICBBU1NFUlQobV94c2hhcGUpOwogfQogCiBib29sIFdyYXBTaGFwZUluZm86OmNvbXB1dGVTZWdt
ZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wKQogewogICAgIG1fbGluZVRvcCA9IGxpbmVU
b3A7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOworCiAgICAgaWYgKGxpbmVTdGF0ZSgpID09IExJ
TkVfSU5TSURFX1NIQVBFKSB7Ci0gICAgICAgIExpbmVTZWdtZW50IHNlZ21lbnQ7Ci0gICAgICAg
IHNlZ21lbnQubG9naWNhbExlZnQgPSBtX3NoYXBlTGVmdDsKLSAgICAgICAgc2VnbWVudC5sb2dp
Y2FsUmlnaHQgPSBtX3NoYXBlTGVmdCArIG1fc2hhcGVXaWR0aDsKLSAgICAgICAgbV9zZWdtZW50
cy5hcHBlbmQoc2VnbWVudCk7CisgICAgICAgIEFTU0VSVChtX3hzaGFwZSk7CisKKyAgICAgICAg
VmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiBpbnRlcnZhbHM7CisgICAgICAgIG1feHNoYXBlLT5n
ZXRJbnNpZGVJbnRlcnZhbHMobGluZVRvcCwgbGluZVRvcCwgaW50ZXJ2YWxzKTsgLy8gRklYTUU6
IEJ1ZyA5NTQ3OSwgd29ya2Fyb3VuZCBmb3Igbm93CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW50ZXJ2YWxzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBMaW5lU2VnbWVudCBz
ZWdtZW50OworICAgICAgICAgICAgc2VnbWVudC5sb2dpY2FsTGVmdCA9IGludGVydmFsc1tpXS54
MTsKKyAgICAgICAgICAgIHNlZ21lbnQubG9naWNhbFJpZ2h0ID0gaW50ZXJ2YWxzW2ldLngyOwor
ICAgICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoc2VnbWVudCk7CisgICAgICAgIH0KICAgICB9
CiAgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9XcmFwU2hhcGVJbmZvLmgKaW5kZXggYTgwMzZkMC4uNDM5MzM3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5oCkBAIC0zMiw3ICszMiwxMCBAQAogCiAjaWYgRU5B
QkxFKENTU19FWENMVVNJT05TKQogCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
TGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiRXhjbHVzaW9uU2hhcGUuaCIK
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTY0LDE0ICs2NywxOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgcmVtb3ZlV3JhcFNoYXBlSW5mb0ZvclJlbmRlckJsb2NrKGNvbnN0IFJlbmRl
ckJsb2NrKik7CiAgICAgc3RhdGljIGJvb2wgaXNXcmFwU2hhcGVJbmZvRW5hYmxlZEZvclJlbmRl
ckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKik7CiAKLSAgICBMYXlvdXRVbml0IHNoYXBlVG9wKCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFwZVRvcDsgfQorICAgIExheW91dFVuaXQgc2hhcGVUb3AoKSBj
b25zdCAKKyAgICB7IAorICAgICAgICBBU1NFUlQobV94c2hhcGUpOworICAgICAgICByZXR1cm4g
bV94c2hhcGUtPnNoYXBlQm91bmRpbmdCb3goKS55KCk7CisgICAgfQogICAgIGJvb2wgaGFzU2Vn
bWVudHMoKSBjb25zdDsKICAgICBjb25zdCBTZWdtZW50TGlzdCYgc2VnbWVudHMoKSBjb25zdAog
ICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1NlZ21lbnRzKCkpOwogICAgICAgICByZXR1cm4gbV9z
ZWdtZW50czsKICAgICB9Ci0gICAgYm9vbCBjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVu
aXQpOworICAgIGJvb2wgY29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3Ap
OwogICAgIExpbmVTdGF0ZSBsaW5lU3RhdGUoKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVTaGFw
ZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCk7
CiAgICAgdm9pZCBkaXJ0eVdyYXBTaGFwZVNpemUoKSB7IG1fd3JhcFNoYXBlU2l6ZURpcnR5ID0g
dHJ1ZTsgfQpAQCAtODAsMTAgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBXcmFwU2hhcGVJbmZvKFJl
bmRlckJsb2NrKik7CiAKICAgICBSZW5kZXJCbG9jayogbV9ibG9jazsKLSAgICBMYXlvdXRVbml0
IG1fc2hhcGVMZWZ0OwotICAgIExheW91dFVuaXQgbV9zaGFwZVRvcDsKLSAgICBMYXlvdXRVbml0
IG1fc2hhcGVXaWR0aDsKLSAgICBMYXlvdXRVbml0IG1fc2hhcGVIZWlnaHQ7CisgICAgT3duUHRy
PEV4Y2x1c2lvblNoYXBlPiBtX3hzaGFwZTsKIAogICAgIExheW91dFVuaXQgbV9saW5lVG9wOwog
ICAgIExheW91dFVuaXQgbV9sb2dpY2FsV2lkdGg7CkBAIC05NSwxMCArOTksMTUgQEAgcHJpdmF0
ZToKIAogaW5saW5lIFdyYXBTaGFwZUluZm86OkxpbmVTdGF0ZSBXcmFwU2hhcGVJbmZvOjpsaW5l
U3RhdGUoKSBjb25zdAogewotICAgIGlmIChtX2xpbmVUb3AgPCBtX3NoYXBlVG9wKQorICAgIEFT
U0VSVChtX3hzaGFwZSk7CisgICAgRmxvYXRSZWN0IHNoYXBlQm91bmRzID0gbV94c2hhcGUtPnNo
YXBlQm91bmRpbmdCb3goKTsKKworICAgIGlmIChtX2xpbmVUb3AgPCBzaGFwZUJvdW5kcy55KCkp
CiAgICAgICAgIHJldHVybiBMSU5FX0JFRk9SRV9TSEFQRTsKLSAgICBpZiAobV9saW5lVG9wIDwg
bV9zaGFwZVRvcCArIG1fc2hhcGVIZWlnaHQpCisKKyAgICBpZiAobV9saW5lVG9wIDwgc2hhcGVC
b3VuZHMubWF4WSgpKQogICAgICAgICByZXR1cm4gTElORV9JTlNJREVfU0hBUEU7CisKICAgICBy
ZXR1cm4gTElORV9BRlRFUl9TSEFQRTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162408</attachid>
            <date>2012-09-05 21:24:52 -0700</date>
            <delta_ts>2012-09-07 22:10:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>43692</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTdhMjZlOS4uMDQ5YTk3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIwMTIsNiArMjAxMiw5IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvQmlkaVJ1bi5jcHAKICAgICByZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCiAgICAgcmVu
ZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorICAgIHJlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5j
cHAKKyAgICByZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcAorICAgIHJlbmRlcmluZy9F
eGNsdXNpb25TaGFwZS5jcHAKICAgICByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CiAgICAgcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCiAgICAgcmVuZGVyaW5nL0Zsb3dU
aHJlYWRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkzMDQ2MzIuLjBhODU2MDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMDYgQEAKKzIwMTItMDgtMzEgIEhhbnMgTXVsbGVyICA8aG11bGxl
ckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGx1c2lvbnNdIGFkZCBzdXBwb3J0IGZvciB0
aGUgYmFzaWMgc2hhcGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluaXRpYWwgY29tbWl0IG9mIGEgc3Vic2V0IG9mIHRoZSBFeGNsdXNpb25TaGFwZSBj
bGFzc2VzLgorCisgICAgICAgIFRoaXMgc2V0IG9mIGNsYXNzZXMgZW5hYmxlcyB0aGUgZXhjbHVz
aW9ucyBsYXlvdXQgY29kZSB0byBkZXRlcm1pbmUgaG93IHRvIGJyZWFrIHVwIGEgbGluZSBpbnRv
IHNlZ21lbnRzCisgICAgICAgIHRoYXQgd2lsbCBmaXQgd2l0aGluIG9yIGFyb3VuZCBhIHNoYXBl
LCBnaXZlbiB0aGUgWSBjb29yZGluYXRlcyBvZiB0aGUgbGluZSdzIHRvcCBlZGdlIGFuZCBib3R0
b20gZWRnZXMuCisgICAgICAgIFRoZSBFeGNsdXNpb25TaGFwZSBjbGFzcyByZXByZXNlbnRzIEJh
c2ljU2hhcGVzIHdob3NlIGNvb3JkaW5hdGVzIGhhdmUgYmVlbiByZXNvbHZlZCB0byBhY3R1YWwg
dmFsdWVzLiBJdAorICAgICAgICBwcm92aWRlcyBhIHBhaXIgb2YgbWV0aG9kcywgZ2V0SW5zaWRl
SW50ZXJ2YWxzKCkgYW5kIGdldE91dHNpZGVJbnRlcnZhbHMoKSwgdGhhdCByZXR1cm4gdGhlIGxp
bmUgc2VnbWVudHMnCisgICAgICAgIHN0YXJ0IGFuZCBlbmQgWCBjb29yZGluYXRlcywgYW5kIGEg
bWV0aG9kIHRoYXQgY29tcHV0ZXMgdGhlIHNoYXBlJ3MgYm91bmRpbmcgYm94LiBUaGUgbGluZSBz
ZWdtZW50cycKKyAgICAgICAgY29vcmRpbmF0ZXMgYXJlIHJlcHJlc2VudGVkIGJ5IGEgVmVjdG9y
IG9mIEV4Y2x1c2lvbkludGVydmFscy4gRXhjbHVzaW9uSW50ZXJ2YWwgaXMganVzdCBhIHBhaXIK
KyAgICAgICAgb2YgWCBjb29yZGluYXRlcy4KKworICAgICAgICBUaGUgb3RoZXIgY2xhc3Nlcywg
RXhjbHVzaW9uUmVjdGFuZ2xlIChhbmQgVEJEIEV4Y2x1c2lvblBvbHlnb24gZXQgYWwpLCBhcmUg
aW50ZXJuYWwgdG8gdGhlCisgICAgICAgIEV4Y2x1c2lvblNoYXBlIGltcGxlbWVudGF0aW9uLgor
CisgICAgICAgIFRoaXMgaXMgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgRXhjbHVzaW9uU2hh
cGVzIGNvZGUgYW5kIGl0J3Mgb25seSBiZWluZyB1c2VkIHRvIHRoZSBsaW1pdGVkIGV4dGVudCBX
ZWJLaXQKKyAgICAgICAgY3VycmVudGx5IHN1cHBvcnRzIHNoYXBlLWluc2lkZSBleGNsdXNpb25z
LiBJdCB3aWxsIGJlIGV4dGVuZGVkIHRvIHN1cHBvcnQgY29tcHV0aW5nIGEgbWluaW1hbAorICAg
ICAgICBsaW5lIHNlZ21lbnQncyAiZmlyc3QgbGF5b3V0IGxvY2F0aW9uIiBhbmQgb3RoZXIgaW1w
cm92ZW1lbnRzLCBpbiB0YW5kZW0gd2l0aCB0aGUgZXhjbHVzaW9ucyBsYXlvdXQgY29kZS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoaXMgY29kZSBqdXN0
IHJlcGxhY2VzIGEgcHJvdmlzaW9uYWwgaW1wbGVtZW50YXRpb24gc3R1Yi4KKworICAgICAgICBN
b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhbGdvcml0aG1zIHVzZWQgYnkgdGhlIEV4Y2x1c2lv
blNoYXBlcyBjbGFzc2VzIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwOi8vaGFuc211bGxlci13ZWJr
aXQuYmxvZ3Nwb3QuY29tLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVu
ZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVydmFsWDFDb21wYXJhdG9yOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgQ29tcGFyZSB4MSBFeGNsdXNpb25JbnRlcnZhbCBmaWVsZHMuCisgICAgICAgIChXZWJD
b3JlOjpFeGNsdXNpb25JbnRlcnZhbDo6aW50ZXJzZWN0KToKKyAgICAgICAgQ29tcHV0ZSB0aGUg
aW50ZXJzZWN0aW9uIG9mIHRoaXMgaW50ZXJ2YWwgd2l0aCBhbm90aGVyIGludGVydmFsLiBVbmxp
a2UgbWVyZ2Uvc3VidHJhY3QsCisgICAgICAgIHRoZSByZXN1bHQgaXMgYWx3YXlzIGEgc2luZ2xl
IGludGVydmFsLgorICAgICAgICAoV2ViQ29yZTo6c29ydEV4Y2x1c2lvbkludGVydmFscyk6Cisg
ICAgICAgIFNvcnQgYSB2ZWN0b3Igb2YgaW50ZXJ2YWxzIGJ5IHRoZWlyIHgxIChzdGFydCkgZmll
bGQuCisgICAgICAgIChXZWJDb3JlOjptZXJnZUV4Y2x1c2lvbkludGVydmFscyk6CisgICAgICAg
IFVuaW9uIG9mIHR3byB2ZWN0b3JzIG9mIGludGVydmFscy4KKyAgICAgICAgKFdlYkNvcmU6Omlu
dGVyc2VjdEV4Y2x1c2lvbkludGVydmFscyk6CisgICAgICAgIEludGVyc2VjaW9uIG9mIHR3byB2
ZWN0b3JzIG9mIGludGVydmFscy4KKyAgICAgICAgKFdlYkNvcmU6OnN1YnRyYWN0RXhjbHVzaW9u
SW50ZXJ2YWxzKToKKyAgICAgICAgRGlmZmVyZW5jZSBvZiB0d28gdmVjdG9ycyBvZiBpbnRlcnZh
bHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuaDogQWRkZWQuCisg
ICAgICAgIFJlcHJlc2VudHMgdGhlIGFjdHVhbCBzdGFydCBhbmQgZW5kIGNvb3JkaW5hdGVzIG9m
IGEgaG9yaXpvbnRhbCBsaW5lIHNlZ21lbnQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEV4Y2x1c2lvbkludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvbkludGVydmFs
OjpFeGNsdXNpb25JbnRlcnZhbCk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUmVj
dGFuZ2xlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OmVsbGlwc2VYSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblJlY3Rhbmds
ZTo6Z2V0T3V0c2lkZUludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0
YW5nbGU6OmdldEluc2lkZUludGVydmFscyk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVz
aW9uUmVjdGFuZ2xlLmg6IEFkZGVkLgorICAgICAgICBBIHN1YmNsYXNzIG9mIEV4Y2x1c2lvblNo
YXBlIHVzZWQgdG8gcmVwcmVzZW50IHJvdW5kZWQgcmVjdGFuZ2xlcywgY2lyY2xlcywgYW5kIGVs
bGlwc2VzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFeGNsdXNpb25SZWN0YW5nbGUp
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0YW5nbGU6OkV4Y2x1c2lvblJlY3Rhbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0YW5nbGU6OnNoYXBlQm91bmRpbmdC
b3gpOgorCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUV4Y2x1c2lvblJlY3Rh
bmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFeGNsdXNpb25DaXJjbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRXhjbHVzaW9uRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25oYXBlOjpjcmVhdGVFeGNsdXNpb25TaGFwZSk6CisgICAgICAgIENyZWF0ZXMgYW4g
RXhjbHVzaW9uU2hhcGUgZ2l2ZW4gYSBCYXNpY1NoYXBlIGFuZCB0aGUgd2lkdGgvaGVpZ2h0IG9m
IGEgYm9yZGVyIGJveC4gIEN1cnJlbnRseSByb3VuZGVkCisgICAgICAgIHJlY3RhbmdsZXMsIGNp
cmNsZXMsIGFuZCBlbGxpcHNlcyBhcmUgc3VwcG9ydGVkLiAgU3VwcG9ydCBmb3IgcG9seWdvbnMg
d2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgbmV4dCBwYXRjaC4KKworICAgICAgICAq
IHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oOiBBZGRlZC4KKyAgICAgICAgVGhlIHJlc3Qgb2Yg
dGhlIGV4Y2x1c2lvbnMgaW1wbGVtZW50YXRpb24gd2lsbCBvbmx5IGRlcGVuZCBvbiB0aGUgZGVm
aW5pdGlvbnMgaW5jbHVkZWQgYnkgdGhpcyBmaWxlOiBFeGNsdXNpb25TaGFwZSwKKyAgICAgICAg
YW5kIEV4Y2x1c2lvbkludGVydmFsLiBFeGNsdXNpb25TaGFwZSBzdWJjbGFzc2VzIGRlZmluZSBz
aGFwZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIG1ldGhvZHMgdGhhdCBjb21wdXRl
IHRoZQorICAgICAgICBob3Jpem9udGFsIGludGVydmFscyB0aGF0IGZpdCB3aXRoaW4gb3IgYXJv
dW5kIGEgc3BlY2lmaWMgc2hhcGUsIGEgc2hhcGUncyBib3VuZGluZyBib3gsIGFuZCAtIGluIGZ1
dHVyZQorICAgICAgICByZXZpc2lvbnMgLSBvdGhlciBvcGVyYXRpb25zIHJlcXVpcmVkIGJ5IHRo
ZSBleGNsdXNpb25zIGltcGxlbWVudGF0aW9uLCBsaWtlIGNvbXB1dGluZyB0aGUgZmlyc3QgcG9z
c2libGUKKyAgICAgICAgbGF5b3V0IGxvY2F0aW9uIHdpdGhpbiBhIHNoYXBlLiBFeGNsdXNpb25T
aGFwZXMgYXJlIGNyZWF0ZWQgZm9yIEJhc2ljU2hhcGUgb2JqZWN0cyBhcyBuZWVkZWQsIHVzaW5n
IHRoZQorICAgICAgICBjcmVhdGVFeGNsdXNpb25TaGFwZSgpIG1ldGhvZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoRXhjbHVzaW9uU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6RXhj
bHVzaW9uU2hhcGU6On5FeGNsdXNpb25TaGFwZSk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvV3Jh
cFNoYXBlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXcmFwU2hhcGVJbmZvOjpjb21wdXRl
U2hhcGVTaXplKToKKyAgICAgICAgQ3JlYXRlIGFuIEV4Y2x1c2lvblNoYXBlIGZvciB0aGUgUmVu
ZGVyQmxvY2sncyBCYXNpY1NoYXBlLgorICAgICAgICAoV2ViQ29yZTo6V3JhcFNoYXBlSW5mbzo6
Y29tcHV0ZVNlZ21lbnRzRm9yTGluZSk6CisgICAgICAgIFVzZSBFeGNsdXNpb25TaGFwZTo6Z2V0
SW5zaWRlSW50ZXJ2YWxzKCkgdG8gY29tcHV0ZSB0aGUgc2hhcGUtaW5zaWRlIGludGVydmFscyB3
aXRoaW4gd2hpY2ggYSBsaW5lIHdpbGwgZml0LgorCisgICAgICAgICogcmVuZGVyaW5nL1dyYXBT
aGFwZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBTaGFwZUluZm86OnNoYXBlVG9wKToK
KyAgICAgICAgUmVtb3ZlZCAtIG5vIGxvbmdlciB1c2VkLgorICAgICAgICAoV3JhcFNoYXBlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpXcmFwU2hhcGVJbmZvOjpsaW5lU3RhdGUpOgorICAgICAg
ICBVc2UgdGhlIEV4Y2x1c2lvblNoYXBlJ3MgYm91bmRpbmcgYm94IHRvIGNvbXB1dGUgbGluZVN0
YXRlLgorCiAyMDEyLTA5LTA1ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgSW5kZXhlZERCOiBMYXJnZSBpbnRlZ2VyIHZlcnNpb25zIG5vdCBwZXJzaXN0ZWQg
Y29ycmVjdGx5CkBAIC0zOTMsMTIgKzQ5NiwxMiBAQAogCiAgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CiAgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgotICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0ZvbnRQbGF0Zm9ybURhdGFIYXJmQnV6
ei5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL2hhcmZidXp6L0ZvbnRQbGF0Zm9ybURhdGFIYXJm
QnV6ei5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj09
KToKICAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmdldFJlbmRlclN0eWxlRm9y
U3RyaWtlKToKICAgICAgICAgKFdlYkNvcmUpOgogICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6cXVlcnlTeXN0ZW1Gb3JSZW5kZXJTdHlsZSk6Ci0gICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvaGFyZmJ1enovRm9udFBsYXRmb3JtRGF0YUhhcmZCdXp6Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL2hhcmZidXp6L0ZvbnRQbGF0Zm9ybURhdGFIYXJmQnV6ei5oOgogICAgICAgICAo
Rm9udFBsYXRmb3JtRGF0YSk6CiAKIDIwMTItMDktMDUgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3Rp
bEBnb29nbGUuY29tPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMGVmNGRhMy4u
ZGEzZWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00ODU4LDYgKzQ4NTgs
MTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291
bnRlck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmggXAorCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXhjbHVzaW9uUmVjdGFuZ2xlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblJlY3RhbmdsZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hh
cGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAw
MjJmZTk3Li4yMWNkYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwOTUsNiArMTA5NSw5IEBAIFNPVVJD
RVMgKz0gXAogICAgIHJlbmRlcmluZy9CaWRpUnVuLmNwcCBcCiAgICAgcmVuZGVyaW5nL0NvdW50
ZXJOb2RlLmNwcCBcCiAgICAgcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBcCisgICAgcmVuZGVy
aW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcCBcCisgICAgcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3Rh
bmdsZS5jcHAgXAorICAgIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5jcHAgXAogICAgIHJlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgXAogICAgIHJlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmNwcCBcCiAgICAgcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcCBcCkBA
IC0yMjc1LDYgKzIyNzgsOSBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuaCBcCiAgICAgcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmggXAogICAgIHJlbmRlcmluZy9FbGxp
cHNpc0JveC5oIFwKKyAgICByZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuaCBcCisgICAgcmVu
ZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oIFwKKyAgICByZW5kZXJpbmcvRXhjbHVzaW9uU2hh
cGUuaCBcCiAgICAgcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggXAogICAgIHJlbmRl
cmluZy9GaXhlZFRhYmxlTGF5b3V0LmggXAogICAgIHJlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTcxNDcyOC4uZDk1ZDBhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNDY5OSw2ICs0Njk5LDEyIEBACiAgICAgICAgICAgICAncmVuZGVyaW5n
L0NvdW50ZXJOb2RlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9FbGxpcHNpc0JveC5oJywKKyAgICAgICAgICAgICdy
ZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcv
RXhjbHVzaW9uSW50ZXJ2YWwuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL0V4Y2x1c2lvblJl
Y3RhbmdsZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUu
aCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcCcsCisgICAgICAg
ICAgICAncmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvRml4ZWRUYWJsZUxh
eW91dC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA5ODc0OWUwLi5hNDY2OTI3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzgzNzQsNiArMzgzNzQsMzAgQEAKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHJlbmRlcmluZ1xFbGxpcHNpc0JveC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXEV4Y2x1c2lvbkludGVydmFsLmNwcCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAg
PC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcRXhjbHVzaW9uSW50ZXJ2
YWwuaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAg
ICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcRXhjbHVz
aW9uUmVjdGFuZ2xlLmNwcCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAg
ICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZp
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxyZW5k
ZXJpbmdcRXhjbHVzaW9uU1JlY3RhbmdsZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBh
dGg9Ii4uXHJlbmRlcmluZ1xFeGNsdXNpb25TaGFwZS5jcHAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXEV4Y2x1c2lvblNoYXBlLmgiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KIAkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwIgogCQkJCT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBlOWZmMGZlLi5jMWQ3ZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODM2LDYgKzE4MzYs
MTIgQEAKIAkJNkU2N0QyQTYxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJB
NDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLzsgfTsKIAkJNkU2
N0QyQTcxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTUxMjgwRThBNDAwODc1
OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oICovOyB9OwogCQk2RTY3RDJBOTEyODBFOEJEMDA4
NzU4RjcgLyogRXh0ZW5zaW9uczNELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmgg
Ki87IH07CisJCTZFODc5OEJBMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTg3OThC
NDE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuY3BwICovOyB9OworCQk2RTg3
OThCQjE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODc5OEI1MTVGODFFNEEwMEJGRTRB
QSAvKiBFeGNsdXNpb25JbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTZFODc5OEJDMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25S
ZWN0YW5nbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkU4Nzk4QjYxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5jcHAgKi87
IH07CisJCTZFODc5OEJEMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODc5OEI3MTVG
ODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuaCAqLzsgfTsKKwkJNkU4Nzk4QkUx
NUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODc5OEI4MTVGODFFNEEwMEJGRTRBQSAvKiBF
eGNsdXNpb25TaGFwZS5jcHAgKi87IH07CisJCTZFODc5OEJGMTVGODFFNEEwMEJGRTRBQSAvKiBF
eGNsdXNpb25TaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkU4Nzk4QjkxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblNoYXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhC
NTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5jcHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkVCQzVFQUUxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJ
CTZFQkYwRTQ4MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAw
REIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC05MDE1LDYgKzkwMjEsMTIg
QEAKIAkJNkU2N0QyQTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25zM0RPcGVuR0wu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBNTEyODBFOEE0MDA4NzU4
RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2RTg3OThCNDE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjbHVzaW9uSW50ZXJ2YWwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg3OThCNTE1RjgxRTRBMDBCRkU0
QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXhjbHVzaW9uSW50ZXJ2YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU4
Nzk4QjYxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNsdXNpb25SZWN0YW5nbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg3OThCNzE1RjgxRTRBMDBCRkU0QUEgLyogRXhj
bHVzaW9uUmVjdGFuZ2xlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2x1
c2lvblJlY3RhbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg3OThCODE1
RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhjbHVzaW9uU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2RTg3OThCOTE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjbHVzaW9uU2hhcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVEODAxMzhCNEM0RTAwQTBDRjhBIC8qIEZsb2F0
NjRBcnJheS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmxvYXQ2NEFycmF5LmlkbDsgcGF0
aCA9IGNhbnZhcy9GbG9hdDY0QXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RUJDNUVBRDEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGbG9hdDY0QXJyYXkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9h
dDY0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGbG9hdDY0QXJy
YXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMjk0LDYgKzIxMzA2LDEyIEBA
CiAJCQkJOTM5MkYxNEIwQUQxODYxQjAwNjkxQkQ0IC8qIENvdW50ZXJOb2RlLmggKi8sCiAJCQkJ
QThDRkY2Q0EwQTE1NjFDRDAwMEE0MjM0IC8qIEVsbGlwc2lzQm94LmNwcCAqLywKIAkJCQlBOENG
RjZCRDBBMTU2MTE4MDAwQTQyMzQgLyogRWxsaXBzaXNCb3guaCAqLywKKwkJCQk2RTg3OThCNDE1
RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuY3BwICovLAorCQkJCTZFODc5OEI1
MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5oICovLAorCQkJCTZFODc5OEI2
MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuY3BwICovLAorCQkJCTZFODc5
OEI3MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuaCAqLywKKwkJCQk2RTg3
OThCODE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuY3BwICovLAorCQkJCTZFODc5
OEI5MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25TaGFwZS5oICovLAogCQkJCTMxMzEzRjYz
MTQ0M0IzNUUwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgKi8sCiAJCQkJMzEz
MTNGNjQxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggKi8sCiAJCQkJ
QThDRkYwNDgwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuY3BwICovLApAQCAt
MjIyMTgsNiArMjIyMzYsOCBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNkU4Nzk4QkIx
NUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvbkludGVydmFsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2RTg3OThCRjE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3QkM2OURCMTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NTAzLDcgKzI1
NTIzLDggQEAKIAkJCQlGQkQ2QUY4ODE1RUYyNUM5MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNpY1No
YXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4Qjcx
MTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTc2RjJFMkVDMTVGNzRDRUYw
MDVGRjY2NCAvKiBSZW5kZXJEaWFsb2cuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFODc5OEJEMTVG
ODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuaCBpbiBIZWFkZXJzICovLAkJCQkK
KyAgICAgICAgICAgICAgICA3NkYyRTJFQzE1Rjc0Q0VGMDA1RkY2NjQgLyogUmVuZGVyRGlhbG9n
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4NTkxLDYgKzI4NjEyLDkgQEAKIAkJCQlGQkQ2QUY4OTE1
RUYyNURCMDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGQkQ2QUY4QjE1RUYyNUU1MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkJENkFGOEQxNUVGMjYwQTAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTZFODc5OEJBMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNp
b25JbnRlcnZhbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTg3OThCQzE1RjgxRTRBMDBCRkU0
QUEgLyogRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFODc5OEJF
MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25TaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVh
a0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25JbnRlcnZhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGUwZWY3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25JbnRlcnZhbC5jcHAKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQK
KyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRXhjbHVzaW9uSW50ZXJ2YWwuaCIKKworI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEludGVydmFs
WDFDb21wYXJhdG9yIHsKKyAgICBib29sIG9wZXJhdG9yKCkgKGNvbnN0IEV4Y2x1c2lvbkludGVy
dmFsJiBpMSwgY29uc3QgRXhjbHVzaW9uSW50ZXJ2YWwmIGkyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGkxLngxIDwgaTIueDE7CisgICAgfQorfTsKKworYm9vbCBFeGNsdXNpb25JbnRl
cnZhbDo6aW50ZXJzZWN0KGNvbnN0IEV4Y2x1c2lvbkludGVydmFsJiBpLCBFeGNsdXNpb25JbnRl
cnZhbCYgcnYpIGNvbnN0Cit7CisgICAgaWYgKHgyIDwgaS54MSB8fCB4MSA+IGkueDIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBydi54MSA9IHN0ZDo6bWF4KHgxLCBpLngxKTsKKyAgICBy
di54MiA9IHN0ZDo6bWluKHgyLCBpLngyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBz
b3J0RXhjbHVzaW9uSW50ZXJ2YWxzKFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mIHYpCit7Cisg
ICAgc3RkOjpzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSwgSW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7
Cit9CisKK3ZvaWQgbWVyZ2VFeGNsdXNpb25JbnRlcnZhbHMoY29uc3QgVmVjdG9yPEV4Y2x1c2lv
bkludGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mIHYyLCBWZWN0
b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiBydikKK3sKKyAgICBpZiAoIXYxLnNpemUoKSkKKyAgICAg
ICAgcnYuYXBwZW5kUmFuZ2UodjIuYmVnaW4oKSwgdjIuZW5kKCkpOworICAgIGVsc2UgaWYgKCF2
Mi5zaXplKCkpCisgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiB2KHYxLnNpemUo
KSArIHYyLnNpemUoKSk7CisgICAgICAgIEV4Y2x1c2lvbkludGVydmFsKiBpbnRlcnZhbCA9IDA7
CisKKyAgICAgICAgc3RkOjptZXJnZSh2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwg
djIuZW5kKCksIHYuYmVnaW4oKSwgSW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7CisKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB2LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAo
IWludGVydmFsKQorICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07CisgICAgICAgICAg
ICBlbHNlIGlmICh2W2ldLngxID49IGludGVydmFsLT54MSAmJiB2W2ldLngxIDw9IGludGVydmFs
LT54MikgLy8gRklYTUU6IDFzdCA8PSB0ZXN0IG5vdCBuZWVkZWQ/CisgICAgICAgICAgICAgICAg
aW50ZXJ2YWwtPngyID0gc3RkOjptYXgoaW50ZXJ2YWwtPngyLCB2W2ldLngyKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOworICAgICAg
ICAgICAgICAgIGludGVydmFsID0gJnZbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoaW50ZXJ2YWwpCisgICAgICAgICAgICBydi5hcHBlbmQoKmludGVydmFsKTsK
KyAgICB9Cit9CisKK3ZvaWQgaW50ZXJzZWN0RXhjbHVzaW9uSW50ZXJ2YWxzKGNvbnN0IFZlY3Rv
cjxFeGNsdXNpb25JbnRlcnZhbD4mIHYxLCBjb25zdCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+
JiB2MiwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYgcnYpCit7CisgICAgc2l6ZV90IHYxU2l6
ZSA9IHYxLnNpemUoKTsKKyAgICBzaXplX3QgdjJTaXplID0gdjIuc2l6ZSgpOworCisgICAgaWYg
KCF2MVNpemUgfHwgIXYyU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjbHVzaW9uSW50
ZXJ2YWwgaW50ZXJ2YWw7CisgICAgYm9vbCBvdmVybGFwID0gZmFsc2U7CisgICAgc2l6ZV90IGkx
ID0gMDsKKyAgICBzaXplX3QgaTIgPSAwOworCisgICAgd2hpbGUgKGkxIDwgdjFTaXplICYmIGky
IDwgdjJTaXplKSB7CisgICAgICAgIEV4Y2x1c2lvbkludGVydmFsIHYxMjsKKyAgICAgICAgaWYg
KHYxW2kxXS5pbnRlcnNlY3QodjJbaTJdLCB2MTIpKSB7CisgICAgICAgICAgICBpZiAoIW92ZXJs
YXAgfHwgIXYxMi5pbnRlcnNlY3QoaW50ZXJ2YWwsIGludGVydmFsKSkgeworICAgICAgICAgICAg
ICAgIGlmIChvdmVybGFwKQorICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwp
OworICAgICAgICAgICAgICAgIGludGVydmFsID0gdjEyOworICAgICAgICAgICAgICAgIG92ZXJs
YXAgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHYxW2kxXS54MiA8IHYy
W2kyXS54MikKKyAgICAgICAgICAgICAgICBpMSsrOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGkyKys7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAob3Zlcmxh
cCkKKyAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOworICAgICAgICAgICAgb3Zl
cmxhcCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHYxW2kxXS54MSA8IHYyW2kyXS54MSkKKyAg
ICAgICAgICAgICAgICBpMSsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGky
Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAob3ZlcmxhcCkKKyAgICAgICAgcnYuYXBw
ZW5kKGludGVydmFsKTsKK30KKwordm9pZCBzdWJ0cmFjdEV4Y2x1c2lvbkludGVydmFscyhjb25z
dCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVjdG9yPEV4Y2x1c2lvbklu
dGVydmFsPiYgdjIsIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mIHJ2KQoreworICAgIHNpemVf
dCB2MVNpemUgPSB2MS5zaXplKCk7CisgICAgc2l6ZV90IHYyU2l6ZSA9IHYyLnNpemUoKTsKKwor
ICAgIGlmICghdjFTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXYyU2l6ZSkKKyAg
ICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworICAgIGVsc2Ugewor
ICAgICAgICBzaXplX3QgaTEgPSAwLCBpMiA9IDA7CisgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYx
LmJlZ2luKCksIHYxLmVuZCgpKTsKKworICAgICAgICB3aGlsZSAoaTEgPCBydi5zaXplKCkgJiYg
aTIgPCB2MlNpemUpIHsKKyAgICAgICAgICAgIEV4Y2x1c2lvbkludGVydmFsJiBpbnRlcnZhbDEg
PSBydltpMV07CisgICAgICAgICAgICBjb25zdCBFeGNsdXNpb25JbnRlcnZhbCYgaW50ZXJ2YWwy
ID0gdjJbaTJdOworCisgICAgICAgICAgICBpZiAoaW50ZXJ2YWwyLngxIDw9IGludGVydmFsMS54
MSAmJiBpbnRlcnZhbDIueDIgPj0gaW50ZXJ2YWwxLngyKQorICAgICAgICAgICAgICAgIHJ2LnJl
bW92ZShpMSk7CisgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDIgPCBpbnRlcnZhbDEu
eDEpCisgICAgICAgICAgICAgICAgaTIgKz0gMTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGludGVy
dmFsMi54MSA+IGludGVydmFsMS54MikKKyAgICAgICAgICAgICAgICBpMSArPSAxOworICAgICAg
ICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxID4gaW50ZXJ2YWwxLngxICYmIGludGVydmFsMi54
MiA8IGludGVydmFsMS54MikgeworICAgICAgICAgICAgICAgIHJ2Lmluc2VydChpMSwgRXhjbHVz
aW9uSW50ZXJ2YWwoaW50ZXJ2YWwxLngxLCBpbnRlcnZhbDIueDEpKTsKKyAgICAgICAgICAgICAg
ICBpbnRlcnZhbDEueDEgPSBpbnRlcnZhbDIueDI7CisgICAgICAgICAgICAgICAgaTIgKz0gMTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJ2YWwyLngxIDw9IGludGVydmFsMS54MSkgewor
ICAgICAgICAgICAgICAgIGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsKKyAgICAgICAgICAg
ICAgICBpMiArPSAxOworICAgICAgICAgICAgfSBlbHNlICB7IC8vIChpbnRlcnZhbDIueDIgPj0g
aW50ZXJ2YWwxLngyKQorICAgICAgICAgICAgICAgIGludGVydmFsMS54MiA9IGludGVydmFsMi54
MTsKKyAgICAgICAgICAgICAgICBpMSArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FeGNsdXNpb25JbnRlcnZhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjVkMzFmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXhjbHVzaW9uSW50ZXJ2YWwuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisg
KiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeGNs
dXNpb25JbnRlcnZhbF9oCisjZGVmaW5lIEV4Y2x1c2lvbkludGVydmFsX2gKKworI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRXhjbHVzaW9u
SW50ZXJ2YWwgeworcHVibGljOgorICAgIGZsb2F0IHgxOworICAgIGZsb2F0IHgyOworCisgICAg
RXhjbHVzaW9uSW50ZXJ2YWwoZmxvYXQgeDEgPSAwLCBmbG9hdCB4MiA9IDApCisgICAgICAgIDog
eDEoeDEpCisgICAgICAgICwgeDIoeDIpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaW50ZXJz
ZWN0KGNvbnN0IEV4Y2x1c2lvbkludGVydmFsJiwgRXhjbHVzaW9uSW50ZXJ2YWwmKSBjb25zdDsK
K307CisKK3ZvaWQgc29ydEV4Y2x1c2lvbkludGVydmFscyhWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2
YWw+Jik7Cit2b2lkIG1lcmdlRXhjbHVzaW9uSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxFeGNsdXNp
b25JbnRlcnZhbD4mLCBjb25zdCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiwgVmVjdG9yPEV4
Y2x1c2lvbkludGVydmFsPiYpOwordm9pZCBpbnRlcnNlY3RFeGNsdXNpb25JbnRlcnZhbHMoY29u
c3QgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxFeGNsdXNpb25JbnRl
cnZhbD4mLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+Jik7Cit2b2lkIHN1YnRyYWN0RXhjbHVz
aW9uSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mLCBjb25zdCBWZWN0
b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYpOworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFeGNsdXNpb25JbnRlcnZhbF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZjgzYjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcApAQCAtMCww
ICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29y
cG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQor
ICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFeGNsdXNp
b25SZWN0YW5nbGUuaCIKKworI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBmbG9hdCBlbGxpcHNlWEludGVyY2VwdChmbG9h
dCB5LCBmbG9hdCByeCwgZmxvYXQgcnkpCit7CisgICAgQVNTRVJUKHJ5ID4gMCk7CisgICAgcmV0
dXJuIHJ4ICogc3FydCgxIC0gKHkqeSkgLyAocnkqcnkpKTsKK30KKwordm9pZCBFeGNsdXNpb25S
ZWN0YW5nbGU6OmdldE91dHNpZGVJbnRlcnZhbHMoZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0b3I8
RXhjbHVzaW9uSW50ZXJ2YWw+JiBydikgY29uc3QKK3sKKyAgICBpZiAoeTEgPiB5MikKKyAgICAg
ICAgc3RkOjpzd2FwKHkxLCB5Mik7CisKKyAgICBpZiAoeTIgPCBtX3kgfHwgeTEgPj0gbV95ICsg
bV9oZWlnaHQpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHgxID0gbV94OworICAgIGZs
b2F0IHgyID0gbV94ICsgbV93aWR0aDsKKworICAgIGlmIChtX3J5ID4gMCkgeworICAgICAgICBp
ZiAoeTIgPCBtX3kgKyBtX3J5KSB7CisgICAgICAgICAgICBmbG9hdCB5aSA9IHkyIC0gbV95IC0g
bV9yeTsKKyAgICAgICAgICAgIGZsb2F0IHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIG1fcngs
IG1fcnkpOworICAgICAgICAgICAgeDEgPSBtX3ggKyBtX3J4IC0geGk7CisgICAgICAgICAgICB4
MiA9IG1feCArIG1fd2lkdGggLSBtX3J4ICsgeGk7CisgICAgICAgIH0gZWxzZSBpZiAoeTEgPiBt
X3kgKyBtX2hlaWdodCAtIG1fcnkpIHsKKyAgICAgICAgICAgIGZsb2F0IHlpID0gIHkxIC0gKG1f
eSArIG1faGVpZ2h0IC0gbV9yeSk7CisgICAgICAgICAgICBmbG9hdCB4aSA9IGVsbGlwc2VYSW50
ZXJjZXB0KHlpLCBtX3J4LCBtX3J5KTsKKyAgICAgICAgICAgIHgxID0gbV94ICsgbV9yeCAtIHhp
OworICAgICAgICAgICAgeDIgPSBtX3ggKyBtX3dpZHRoIC0gbV9yeCArIHhpOworICAgICAgICB9
CisgICAgfQorCisgICAgcnYuYXBwZW5kKEV4Y2x1c2lvbkludGVydmFsKHgxLCB4MikpOworfQor
Cit2b2lkIEV4Y2x1c2lvblJlY3RhbmdsZTo6Z2V0SW5zaWRlSW50ZXJ2YWxzKGZsb2F0IHkxLCBm
bG9hdCB5MiwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYgcnYpIGNvbnN0Cit7CisgICAgaWYg
KHkxID4geTIpCisgICAgICAgIHN0ZDo6c3dhcCh5MSwgeTIpOworCisgICAgaWYgKHkxIDwgbV95
IHx8IHkyID49IG1feSArIG1faGVpZ2h0KQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB4
MSA9IG1feDsKKyAgICBmbG9hdCB4MiA9IG1feCArIG1fd2lkdGg7CisKKyAgICBpZiAobV9yeSA+
IDApIHsKKyAgICAgICAgYm9vbCB5MUludGVyY2VwdHNDb3JuZXIgPSB5MSA8IG1feSArIG1fcnk7
CisgICAgICAgIGJvb2wgeTJJbnRlcmNlcHRzQ29ybmVyID0geTIgPiBtX3kgKyBtX2hlaWdodCAt
IG1fcnk7CisgICAgICAgIGZsb2F0IHhpID0gMDsKKworICAgICAgICBpZiAoeTFJbnRlcmNlcHRz
Q29ybmVyICYmIHkySW50ZXJjZXB0c0Nvcm5lcikgeworICAgICAgICAgICAgaWYgICh5MSA8IG1f
aGVpZ2h0ICsgMiptX3kgLSB5MikgeworICAgICAgICAgICAgICAgIGZsb2F0IHlpID0geTEgLSBt
X3kgLSBtX3J5OworICAgICAgICAgICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIG1f
cngsIG1fcnkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB5
aSA9ICB5MiAtIChtX3kgKyBtX2hlaWdodCAtIG1fcnkpOworICAgICAgICAgICAgICAgIHhpID0g
ZWxsaXBzZVhJbnRlcmNlcHQoeWksIG1fcngsIG1fcnkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKHkxSW50ZXJjZXB0c0Nvcm5lcikgeworICAgICAgICAgICAgZmxvYXQgeWkg
PSB5MSAtIG1feSAtIG1fcnk7CisgICAgICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlp
LCBtX3J4LCBtX3J5KTsKKyAgICAgICAgfSBlbHNlIGlmICh5MkludGVyY2VwdHNDb3JuZXIpIHsK
KyAgICAgICAgICAgIGZsb2F0IHlpID0gIHkyIC0gKG1feSArIG1faGVpZ2h0IC0gbV9yeSk7Cisg
ICAgICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBtX3J4LCBtX3J5KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICh5MUludGVyY2VwdHNDb3JuZXIgfHwgeTJJbnRlcmNlcHRzQ29y
bmVyKSB7CisgICAgICAgICAgICB4MSA9IG1feCArIG1fcnggLSB4aTsKKyAgICAgICAgICAgIHgy
ID0gbV94ICsgbV93aWR0aCAtIG1fcnggKyB4aTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJ2
LmFwcGVuZChFeGNsdXNpb25JbnRlcnZhbCh4MSwgeDIpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJl
Y3RhbmdsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMmYxOGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmgKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXhjbHVzaW9uUmVjdGFuZ2xlX2gKKyNkZWZp
bmUgRXhjbHVzaW9uUmVjdGFuZ2xlX2gKKworI2luY2x1ZGUgIkV4Y2x1c2lvblNoYXBlLmgiCisj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXhjbHVzaW9uUmVjdGFuZ2xlIDogcHVibGljIEV4
Y2x1c2lvblNoYXBlIHsKK3B1YmxpYzoKKyAgICBFeGNsdXNpb25SZWN0YW5nbGUoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgcnggPSAwLCBmbG9hdCBy
eSA9IDApCisgICAgICAgIDogRXhjbHVzaW9uU2hhcGUoKQorICAgICAgICAsIG1feCh4KQorICAg
ICAgICAsIG1feSh5KQorICAgICAgICAsIG1fd2lkdGgod2lkdGgpCisgICAgICAgICwgbV9oZWln
aHQoaGVpZ2h0KQorICAgICAgICAsIG1fcngocngpCisgICAgICAgICwgbV9yeShyeSkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVCb3VuZGluZ0JveCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIEZsb2F0UmVjdChtX3gsIG1feSwgbV93aWR0aCwgbV9oZWlnaHQp
OyB9CisgICAgdmlydHVhbCB2b2lkIGdldE91dHNpZGVJbnRlcnZhbHMoZmxvYXQgeTEsIGZsb2F0
IHkyLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGdldEluc2lkZUludGVydmFscyhmbG9hdCB5MSwgZmxvYXQgeTIsIFZlY3RvcjxF
eGNsdXNpb25JbnRlcnZhbD4mKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBmbG9h
dCBtX3g7CisgICAgZmxvYXQgbV95OworICAgIGZsb2F0IG1fd2lkdGg7CisgICAgZmxvYXQgbV9o
ZWlnaHQ7CisgICAgZmxvYXQgbV9yeDsgLy8gY29ybmVyIFggcmFkaXVzCisgICAgZmxvYXQgbV9y
eTsgLy8gY29ybmVyIFkgcmFkaXVzCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFeGNsdXNpb25SZWN0YW5nbGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25TaGFwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU2
MWVmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNp
b25TaGFwZS5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRXhjbHVzaW9uU2hhcGUuaCIKKworI2luY2x1ZGUgIkJhc2ljU2hhcGVGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlICJFeGNsdXNpb25SZWN0YW5nbGUuaCIKKyNpbmNsdWRlICJMZW5n
dGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldp
bmRSdWxlLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgUGFzc093blB0cjxFeGNsdXNpb25TaGFwZT4gY3JlYXRlRXhjbHVzaW9uUmVj
dGFuZ2xlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IHJ4LCBmbG9hdCByeSkKK3sKKyAgICBBU1NFUlQod2lkdGggPj0gMCAmJiBoZWlnaHQgPj0gMCAm
JiByeCA+PSAwICYmIHJ5ID49IDApOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXhjbHVzaW9u
UmVjdGFuZ2xlKHgsIHksIHdpZHRoLCBoZWlnaHQsIHJ4LCByeSkpOworfQorCitzdGF0aWMgUGFz
c093blB0cjxFeGNsdXNpb25TaGFwZT4gY3JlYXRlRXhjbHVzaW9uQ2lyY2xlKGZsb2F0IGN4LCBm
bG9hdCBjeSwgZmxvYXQgcmFkaXVzKQoreworICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBFeGNsdXNpb25SZWN0YW5nbGUoY3ggLSByYWRpdXMsIGN5IC0g
cmFkaXVzLCBjeCArIHJhZGl1cywgY3kgKyByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7Cit9CisK
K3N0YXRpYyBQYXNzT3duUHRyPEV4Y2x1c2lvblNoYXBlPiBjcmVhdGVFeGNsdXNpb25FbGxpcHNl
KGZsb2F0IGN4LCBmbG9hdCBjeSwgZmxvYXQgcngsIGZsb2F0IHJ5KQoreworICAgIEFTU0VSVChy
eCA+PSAwICYmIHJ5ID49IDApOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXhjbHVzaW9uUmVj
dGFuZ2xlKGN4IC0gcngsIGN5IC0gcnksIGN4ICsgcngsIGN5ICsgcnksIHJ4LCByeSkpOworfQor
CitQYXNzT3duUHRyPEV4Y2x1c2lvblNoYXBlPiBFeGNsdXNpb25TaGFwZTo6Y3JlYXRlRXhjbHVz
aW9uU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogd3JhcFNoYXBlLCBmbG9hdCBib3hXaWR0aCwgZmxv
YXQgYm94SGVpZ2h0KQoreworICAgIGlmICghd3JhcFNoYXBlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHN3aXRjaCAod3JhcFNoYXBlLT50eXBlKCkpIHsKKyAgICBjYXNlIEJhc2lj
U2hhcGU6OkJBU0lDX1NIQVBFX1JFQ1RBTkdMRTogeworICAgICAgICBjb25zdCBCYXNpY1NoYXBl
UmVjdGFuZ2xlKiByZWN0YW5nbGUgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlUmVjdGFu
Z2xlKj4od3JhcFNoYXBlKTsKKyAgICAgICAgTGVuZ3RoIHJ4ID0gcmVjdGFuZ2xlLT5jb3JuZXJS
YWRpdXNYKCk7CisgICAgICAgIExlbmd0aCByeSA9IHJlY3RhbmdsZS0+Y29ybmVyUmFkaXVzWSgp
OworICAgICAgICByZXR1cm4gY3JlYXRlRXhjbHVzaW9uUmVjdGFuZ2xlKAorICAgICAgICAgICAg
ZmxvYXRWYWx1ZUZvckxlbmd0aChyZWN0YW5nbGUtPngoKSwgYm94V2lkdGgpLAorICAgICAgICAg
ICAgZmxvYXRWYWx1ZUZvckxlbmd0aChyZWN0YW5nbGUtPnkoKSwgYm94SGVpZ2h0KSwKKyAgICAg
ICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgocmVjdGFuZ2xlLT53aWR0aCgpLCBib3hXaWR0aCks
CisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHJlY3RhbmdsZS0+aGVpZ2h0KCksIGJv
eEhlaWdodCksCisgICAgICAgICAgICByeC5pc1VuZGVmaW5lZCgpID8gMCA6IGZsb2F0VmFsdWVG
b3JMZW5ndGgocngsIGJveFdpZHRoKSwKKyAgICAgICAgICAgIHJ5LmlzVW5kZWZpbmVkKCkgPyAw
IDogZmxvYXRWYWx1ZUZvckxlbmd0aChyeSwgYm94SGVpZ2h0KSApOworICAgIH0KKworICAgIGNh
c2UgQmFzaWNTaGFwZTo6QkFTSUNfU0hBUEVfQ0lSQ0xFOiB7CisgICAgICAgIGNvbnN0IEJhc2lj
U2hhcGVDaXJjbGUqIGNpcmNsZSA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVDaXJjbGUq
Pih3cmFwU2hhcGUpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhjbHVzaW9uQ2lyY2xlKAorICAg
ICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChjaXJjbGUtPmNlbnRlclgoKSwgYm94V2lkdGgp
LAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChjaXJjbGUtPmNlbnRlclkoKSwgYm94
SGVpZ2h0KSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoY2lyY2xlLT5yYWRpdXMo
KSwgc3RkOjptYXgoYm94SGVpZ2h0LCBib3hXaWR0aCkpICk7CisgICAgfQorCisgICAgY2FzZSBC
YXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9FTExJUFNFOiB7CisgICAgICAgIGNvbnN0IEJhc2ljU2hh
cGVFbGxpcHNlKiBlbGxpcHNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZUVsbGlwc2Uq
Pih3cmFwU2hhcGUpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhjbHVzaW9uRWxsaXBzZSgKKyAg
ICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBzZS0+Y2VudGVyWCgpLCBib3hXaWR0
aCksCisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGVsbGlwc2UtPmNlbnRlclkoKSwg
Ym94SGVpZ2h0KSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBzZS0+cmFk
aXVzWCgpLCBib3hXaWR0aCksCisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGVsbGlw
c2UtPnJhZGl1c1koKSwgYm94SGVpZ2h0KSApOworICAgIH0KKworICAgIGNhc2UgQmFzaWNTaGFw
ZTo6QkFTSUNfU0hBUEVfUE9MWUdPTjoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0V4Y2x1c2lvblNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9u
U2hhcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTUxNDhlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmgK
QEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICog
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXhjbHVzaW9uU2hhcGVfaAorI2RlZmlu
ZSBFeGNsdXNpb25TaGFwZV9oCisKKyNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgorI2luY2x1ZGUg
IkV4Y2x1c2lvbkludGVydmFsLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRXhjbHVzaW9uU2hhcGUgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEV4Y2x1c2lvblNoYXBlPiBjcmVhdGVFeGNsdXNpb25TaGFwZShjb25zdCBCYXNp
Y1NoYXBlKiwgZmxvYXQgYm9yZGVyQm94V2lkdGgsIGZsb2F0IGJvcmRlckJveEhlaWdodCk7CisK
KyAgICB2aXJ0dWFsIH5FeGNsdXNpb25TaGFwZSgpIHsgfQorCisgICAgdmlydHVhbCBGbG9hdFJl
Y3Qgc2hhcGVCb3VuZGluZ0JveCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5z
aWRlSW50ZXJ2YWxzKGZsb2F0IHlNaW4sIGZsb2F0IHlNYXgsIFZlY3RvcjxFeGNsdXNpb25JbnRl
cnZhbD4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldE91dHNpZGVJbnRlcnZhbHMo
ZmxvYXQgeU1pbiwgZmxvYXQgeU1heCwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEV4Y2x1c2lv
blNoYXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJ
bmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmNwcAppbmRl
eCA4ZWY3M2M3Li42NTk2YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
V3JhcFNoYXBlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFw
ZUluZm8uY3BwCkBAIC0xMDUsMzcgKzEwNSwyOCBAQCB2b2lkIFdyYXBTaGFwZUluZm86OmNvbXB1
dGVTaGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgbG9naWNhbAog
CiAgICAgLy8gRklYTUU6IEJ1ZyA4OTk5MzogVGhlIHdyYXAgc2hhcGUgbWF5IGNvbWUgZnJvbSB0
aGUgcGFyZW50IG9iamVjdAogICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gbV9ibG9jay0+c3R5bGUo
KS0+d3JhcFNoYXBlSW5zaWRlKCk7Ci0KICAgICBBU1NFUlQoc2hhcGUpOwogCi0gICAgc3dpdGNo
IChzaGFwZS0+dHlwZSgpKSB7Ci0gICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9SRUNU
QU5HTEU6IHsKLSAgICAgICAgQmFzaWNTaGFwZVJlY3RhbmdsZSogcmVjdCA9IHN0YXRpY19jYXN0
PEJhc2ljU2hhcGVSZWN0YW5nbGUgKj4oc2hhcGUpOwotICAgICAgICBtX3NoYXBlTGVmdCA9IHZh
bHVlRm9yTGVuZ3RoKHJlY3QtPngoKSwgbV9sb2dpY2FsV2lkdGgpOwotICAgICAgICBtX3NoYXBl
V2lkdGggPSB2YWx1ZUZvckxlbmd0aChyZWN0LT53aWR0aCgpLCBtX2xvZ2ljYWxXaWR0aCk7Ci0g
ICAgICAgIG1fc2hhcGVUb3AgPSB2YWx1ZUZvckxlbmd0aChyZWN0LT55KCksIG1fbG9naWNhbEhl
aWdodCk7Ci0gICAgICAgIG1fc2hhcGVIZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChyZWN0LT5oZWln
aHQoKSwgbV9sb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIC8vIEZJ
WE1FOiBCdWcgODk3MDc6IEVuYWJsZSBzaGFwZSBpbnNpZGUgZm9yIG5vbi1yZWN0YW5ndWxhciBz
aGFwZXMKLSAgICBjYXNlIEJhc2ljU2hhcGU6OkJBU0lDX1NIQVBFX0NJUkNMRToKLSAgICBjYXNl
IEJhc2ljU2hhcGU6OkJBU0lDX1NIQVBFX0VMTElQU0U6Ci0gICAgY2FzZSBCYXNpY1NoYXBlOjpC
QVNJQ19TSEFQRV9QT0xZR09OOiB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICB9CisgICAgbV94c2hhcGUgPSBFeGNsdXNpb25TaGFwZTo6Y3Jl
YXRlRXhjbHVzaW9uU2hhcGUoc2hhcGUsIGxvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCk7Cisg
ICAgQVNTRVJUKG1feHNoYXBlKTsKIH0KIAogYm9vbCBXcmFwU2hhcGVJbmZvOjpjb21wdXRlU2Vn
bWVudHNGb3JMaW5lKExheW91dFVuaXQgbGluZVRvcCkKIHsKICAgICBtX2xpbmVUb3AgPSBsaW5l
VG9wOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKwogICAgIGlmIChsaW5lU3RhdGUoKSA9PSBM
SU5FX0lOU0lERV9TSEFQRSkgewotICAgICAgICBMaW5lU2VnbWVudCBzZWdtZW50OwotICAgICAg
ICBzZWdtZW50LmxvZ2ljYWxMZWZ0ID0gbV9zaGFwZUxlZnQ7Ci0gICAgICAgIHNlZ21lbnQubG9n
aWNhbFJpZ2h0ID0gbV9zaGFwZUxlZnQgKyBtX3NoYXBlV2lkdGg7Ci0gICAgICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHNlZ21lbnQpOworICAgICAgICBBU1NFUlQobV94c2hhcGUpOworCisgICAgICAg
IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4gaW50ZXJ2YWxzOworICAgICAgICBtX3hzaGFwZS0+
Z2V0SW5zaWRlSW50ZXJ2YWxzKGxpbmVUb3AsIGxpbmVUb3AsIGludGVydmFscyk7IC8vIEZJWE1F
OiBCdWcgOTU0NzksIHdvcmthcm91bmQgZm9yIG5vdworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGludGVydmFscy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgTGluZVNlZ21lbnQg
c2VnbWVudDsKKyAgICAgICAgICAgIHNlZ21lbnQubG9naWNhbExlZnQgPSBpbnRlcnZhbHNbaV0u
eDE7CisgICAgICAgICAgICBzZWdtZW50LmxvZ2ljYWxSaWdodCA9IGludGVydmFsc1tpXS54MjsK
KyAgICAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHNlZ21lbnQpOworICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvV3JhcFNoYXBlSW5mby5oCmluZGV4IGE4MDM2ZDAuLjNjYTEyOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uaApAQCAtMzIsNyArMzIsMTAgQEAKIAogI2lmIEVO
QUJMRShDU1NfRVhDTFVTSU9OUykKIAorI2luY2x1ZGUgIkV4Y2x1c2lvblNoYXBlLmgiCisjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgi
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC02NCwxNCArNjcsMTggQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHJlbW92ZVdyYXBTaGFwZUluZm9Gb3JSZW5kZXJCbG9jayhjb25zdCBSZW5k
ZXJCbG9jayopOwogICAgIHN0YXRpYyBib29sIGlzV3JhcFNoYXBlSW5mb0VuYWJsZWRGb3JSZW5k
ZXJCbG9jayhjb25zdCBSZW5kZXJCbG9jayopOwogCi0gICAgTGF5b3V0VW5pdCBzaGFwZVRvcCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcGVUb3A7IH0KKyAgICBMYXlvdXRVbml0IHNoYXBlVG9wKCkg
Y29uc3QgCisgICAgeyAKKyAgICAgICAgQVNTRVJUKG1feHNoYXBlKTsKKyAgICAgICAgcmV0dXJu
IG1feHNoYXBlLT5zaGFwZUJvdW5kaW5nQm94KCkueSgpOworICAgIH0KICAgICBib29sIGhhc1Nl
Z21lbnRzKCkgY29uc3Q7CiAgICAgY29uc3QgU2VnbWVudExpc3QmIHNlZ21lbnRzKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTZWdtZW50cygpKTsKICAgICAgICAgcmV0dXJuIG1f
c2VnbWVudHM7CiAgICAgfQotICAgIGJvb2wgY29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRV
bml0KTsKKyAgICBib29sIGNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9w
KTsKICAgICBMaW5lU3RhdGUgbGluZVN0YXRlKCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlU2hh
cGVTaXplKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQp
OwogICAgIHZvaWQgZGlydHlXcmFwU2hhcGVTaXplKCkgeyBtX3dyYXBTaGFwZVNpemVEaXJ0eSA9
IHRydWU7IH0KQEAgLTgwLDEwICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgV3JhcFNoYXBlSW5mbyhS
ZW5kZXJCbG9jayopOwogCiAgICAgUmVuZGVyQmxvY2sqIG1fYmxvY2s7Ci0gICAgTGF5b3V0VW5p
dCBtX3NoYXBlTGVmdDsKLSAgICBMYXlvdXRVbml0IG1fc2hhcGVUb3A7Ci0gICAgTGF5b3V0VW5p
dCBtX3NoYXBlV2lkdGg7Ci0gICAgTGF5b3V0VW5pdCBtX3NoYXBlSGVpZ2h0OworICAgIE93blB0
cjxFeGNsdXNpb25TaGFwZT4gbV94c2hhcGU7CiAKICAgICBMYXlvdXRVbml0IG1fbGluZVRvcDsK
ICAgICBMYXlvdXRVbml0IG1fbG9naWNhbFdpZHRoOwpAQCAtOTUsMTAgKzk5LDE1IEBAIHByaXZh
dGU6CiAKIGlubGluZSBXcmFwU2hhcGVJbmZvOjpMaW5lU3RhdGUgV3JhcFNoYXBlSW5mbzo6bGlu
ZVN0YXRlKCkgY29uc3QKIHsKLSAgICBpZiAobV9saW5lVG9wIDwgbV9zaGFwZVRvcCkKKyAgICBB
U1NFUlQobV94c2hhcGUpOworICAgIEZsb2F0UmVjdCBzaGFwZUJvdW5kcyA9IG1feHNoYXBlLT5z
aGFwZUJvdW5kaW5nQm94KCk7CisKKyAgICBpZiAobV9saW5lVG9wIDwgc2hhcGVCb3VuZHMueSgp
KQogICAgICAgICByZXR1cm4gTElORV9CRUZPUkVfU0hBUEU7Ci0gICAgaWYgKG1fbGluZVRvcCA8
IG1fc2hhcGVUb3AgKyBtX3NoYXBlSGVpZ2h0KQorCisgICAgaWYgKG1fbGluZVRvcCA8IHNoYXBl
Qm91bmRzLm1heFkoKSkKICAgICAgICAgcmV0dXJuIExJTkVfSU5TSURFX1NIQVBFOworCiAgICAg
cmV0dXJuIExJTkVfQUZURVJfU0hBUEU7CiB9CiAK
</data>
<flag name="review"
          id="173694"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>162542</attachid>
            <date>2012-09-06 11:16:54 -0700</date>
            <delta_ts>2012-09-06 11:16:54 -0700</delta_ts>
            <desc>One shape-outside exclusion shape overlaps elements with different writing-modes.</desc>
            <filename>writing-mode.png</filename>
            <type>image/png</type>
            <size>66588</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">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
AAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162938</attachid>
            <date>2012-09-07 22:10:27 -0700</date>
            <delta_ts>2012-09-10 11:24:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>44170</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjJiYmM1Zi4uYzgyOTI1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIwMTQsNiArMjAxNCw5IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvQmlkaVJ1bi5jcHAKICAgICByZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCiAgICAgcmVu
ZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorICAgIHJlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5j
cHAKKyAgICByZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcAorICAgIHJlbmRlcmluZy9F
eGNsdXNpb25TaGFwZS5jcHAKICAgICByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CiAgICAgcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCiAgICAgcmVuZGVyaW5nL0Zsb3dU
aHJlYWRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFlNDJlNDcuLjg1Mzg1YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMDYgQEAKKzIwMTItMDgtMzEgIEhhbnMgTXVsbGVyICA8aG11bGxl
ckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGx1c2lvbnNdIGFkZCBzdXBwb3J0IGZvciB0
aGUgYmFzaWMgc2hhcGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluaXRpYWwgY29tbWl0IG9mIGEgc3Vic2V0IG9mIHRoZSBFeGNsdXNpb25TaGFwZSBj
bGFzc2VzLgorCisgICAgICAgIFRoaXMgc2V0IG9mIGNsYXNzZXMgZW5hYmxlcyB0aGUgZXhjbHVz
aW9ucyBsYXlvdXQgY29kZSB0byBkZXRlcm1pbmUgaG93IHRvIGJyZWFrIHVwIGEgbGluZSBpbnRv
IHNlZ21lbnRzCisgICAgICAgIHRoYXQgd2lsbCBmaXQgd2l0aGluIG9yIGFyb3VuZCBhIHNoYXBl
LCBnaXZlbiB0aGUgWSBjb29yZGluYXRlcyBvZiB0aGUgbGluZSdzIHRvcCBlZGdlIGFuZCBib3R0
b20gZWRnZXMuCisgICAgICAgIFRoZSBFeGNsdXNpb25TaGFwZSBjbGFzcyByZXByZXNlbnRzIEJh
c2ljU2hhcGVzIHdob3NlIGNvb3JkaW5hdGVzIGhhdmUgYmVlbiByZXNvbHZlZCB0byBhY3R1YWwg
dmFsdWVzLiBJdAorICAgICAgICBwcm92aWRlcyBhIHBhaXIgb2YgbWV0aG9kcywgZ2V0SW5zaWRl
SW50ZXJ2YWxzKCkgYW5kIGdldE91dHNpZGVJbnRlcnZhbHMoKSwgdGhhdCByZXR1cm4gdGhlIGxp
bmUgc2VnbWVudHMnCisgICAgICAgIHN0YXJ0IGFuZCBlbmQgWCBjb29yZGluYXRlcywgYW5kIGEg
bWV0aG9kIHRoYXQgY29tcHV0ZXMgdGhlIHNoYXBlJ3MgYm91bmRpbmcgYm94LiBUaGUgbGluZSBz
ZWdtZW50cycKKyAgICAgICAgY29vcmRpbmF0ZXMgYXJlIHJlcHJlc2VudGVkIGJ5IGEgVmVjdG9y
IG9mIEV4Y2x1c2lvbkludGVydmFscy4gRXhjbHVzaW9uSW50ZXJ2YWwgaXMganVzdCBhIHBhaXIK
KyAgICAgICAgb2YgWCBjb29yZGluYXRlcy4KKworICAgICAgICBUaGUgb3RoZXIgY2xhc3Nlcywg
RXhjbHVzaW9uUmVjdGFuZ2xlIChhbmQgVEJEIEV4Y2x1c2lvblBvbHlnb24gZXQgYWwpLCBhcmUg
aW50ZXJuYWwgdG8gdGhlCisgICAgICAgIEV4Y2x1c2lvblNoYXBlIGltcGxlbWVudGF0aW9uLgor
CisgICAgICAgIFRoaXMgaXMgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgRXhjbHVzaW9uU2hh
cGVzIGNvZGUgYW5kIGl0J3Mgb25seSBiZWluZyB1c2VkIHRvIHRoZSBsaW1pdGVkIGV4dGVudCBX
ZWJLaXQKKyAgICAgICAgY3VycmVudGx5IHN1cHBvcnRzIHNoYXBlLWluc2lkZSBleGNsdXNpb25z
LiBJdCB3aWxsIGJlIGV4dGVuZGVkIHRvIHN1cHBvcnQgY29tcHV0aW5nIGEgbWluaW1hbAorICAg
ICAgICBsaW5lIHNlZ21lbnQncyAiZmlyc3QgbGF5b3V0IGxvY2F0aW9uIiBhbmQgb3RoZXIgaW1w
cm92ZW1lbnRzLCBpbiB0YW5kZW0gd2l0aCB0aGUgZXhjbHVzaW9ucyBsYXlvdXQgY29kZS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoaXMgY29kZSBqdXN0
IHJlcGxhY2VzIGEgcHJvdmlzaW9uYWwgaW1wbGVtZW50YXRpb24gc3R1Yi4KKworICAgICAgICBN
b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhbGdvcml0aG1zIHVzZWQgYnkgdGhlIEV4Y2x1c2lv
blNoYXBlcyBjbGFzc2VzIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwOi8vaGFuc211bGxlci13ZWJr
aXQuYmxvZ3Nwb3QuY29tLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVu
ZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVydmFsWDFDb21wYXJhdG9yOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgQ29tcGFyZSB4MSBFeGNsdXNpb25JbnRlcnZhbCBmaWVsZHMuCisgICAgICAgIChXZWJD
b3JlOjpFeGNsdXNpb25JbnRlcnZhbDo6aW50ZXJzZWN0KToKKyAgICAgICAgQ29tcHV0ZSB0aGUg
aW50ZXJzZWN0aW9uIG9mIHRoaXMgaW50ZXJ2YWwgd2l0aCBhbm90aGVyIGludGVydmFsLiBVbmxp
a2UgbWVyZ2Uvc3VidHJhY3QsCisgICAgICAgIHRoZSByZXN1bHQgaXMgYWx3YXlzIGEgc2luZ2xl
IGludGVydmFsLgorICAgICAgICAoV2ViQ29yZTo6c29ydEV4Y2x1c2lvbkludGVydmFscyk6Cisg
ICAgICAgIFNvcnQgYSB2ZWN0b3Igb2YgaW50ZXJ2YWxzIGJ5IHRoZWlyIHgxIChzdGFydCkgZmll
bGQuCisgICAgICAgIChXZWJDb3JlOjptZXJnZUV4Y2x1c2lvbkludGVydmFscyk6CisgICAgICAg
IFVuaW9uIG9mIHR3byB2ZWN0b3JzIG9mIGludGVydmFscy4KKyAgICAgICAgKFdlYkNvcmU6Omlu
dGVyc2VjdEV4Y2x1c2lvbkludGVydmFscyk6CisgICAgICAgIEludGVyc2VjaW9uIG9mIHR3byB2
ZWN0b3JzIG9mIGludGVydmFscy4KKyAgICAgICAgKFdlYkNvcmU6OnN1YnRyYWN0RXhjbHVzaW9u
SW50ZXJ2YWxzKToKKyAgICAgICAgRGlmZmVyZW5jZSBvZiB0d28gdmVjdG9ycyBvZiBpbnRlcnZh
bHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuaDogQWRkZWQuCisg
ICAgICAgIFJlcHJlc2VudHMgdGhlIGFjdHVhbCBzdGFydCBhbmQgZW5kIGNvb3JkaW5hdGVzIG9m
IGEgaG9yaXpvbnRhbCBsaW5lIHNlZ21lbnQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEV4Y2x1c2lvbkludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvbkludGVydmFs
OjpFeGNsdXNpb25JbnRlcnZhbCk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUmVj
dGFuZ2xlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OmVsbGlwc2VYSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblJlY3Rhbmds
ZTo6Z2V0T3V0c2lkZUludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0
YW5nbGU6OmdldEluc2lkZUludGVydmFscyk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVz
aW9uUmVjdGFuZ2xlLmg6IEFkZGVkLgorICAgICAgICBBIHN1YmNsYXNzIG9mIEV4Y2x1c2lvblNo
YXBlIHVzZWQgdG8gcmVwcmVzZW50IHJvdW5kZWQgcmVjdGFuZ2xlcywgY2lyY2xlcywgYW5kIGVs
bGlwc2VzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFeGNsdXNpb25SZWN0YW5nbGUp
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0YW5nbGU6OkV4Y2x1c2lvblJlY3Rhbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0YW5nbGU6OnNoYXBlQm91bmRpbmdC
b3gpOgorCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUV4Y2x1c2lvblJlY3Rh
bmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFeGNsdXNpb25DaXJjbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRXhjbHVzaW9uRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25oYXBlOjpjcmVhdGVFeGNsdXNpb25TaGFwZSk6CisgICAgICAgIENyZWF0ZXMgYW4g
RXhjbHVzaW9uU2hhcGUgZ2l2ZW4gYSBCYXNpY1NoYXBlIGFuZCB0aGUgd2lkdGgvaGVpZ2h0IG9m
IGEgYm9yZGVyIGJveC4gIEN1cnJlbnRseSByb3VuZGVkCisgICAgICAgIHJlY3RhbmdsZXMsIGNp
cmNsZXMsIGFuZCBlbGxpcHNlcyBhcmUgc3VwcG9ydGVkLiAgU3VwcG9ydCBmb3IgcG9seWdvbnMg
d2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgbmV4dCBwYXRjaC4KKworICAgICAgICAq
IHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oOiBBZGRlZC4KKyAgICAgICAgVGhlIHJlc3Qgb2Yg
dGhlIGV4Y2x1c2lvbnMgaW1wbGVtZW50YXRpb24gd2lsbCBvbmx5IGRlcGVuZCBvbiB0aGUgZGVm
aW5pdGlvbnMgaW5jbHVkZWQgYnkgdGhpcyBmaWxlOiBFeGNsdXNpb25TaGFwZSwKKyAgICAgICAg
YW5kIEV4Y2x1c2lvbkludGVydmFsLiBFeGNsdXNpb25TaGFwZSBzdWJjbGFzc2VzIGRlZmluZSBz
aGFwZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIG1ldGhvZHMgdGhhdCBjb21wdXRl
IHRoZQorICAgICAgICBob3Jpem9udGFsIGludGVydmFscyB0aGF0IGZpdCB3aXRoaW4gb3IgYXJv
dW5kIGEgc3BlY2lmaWMgc2hhcGUsIGEgc2hhcGUncyBib3VuZGluZyBib3gsIGFuZCAtIGluIGZ1
dHVyZQorICAgICAgICByZXZpc2lvbnMgLSBvdGhlciBvcGVyYXRpb25zIHJlcXVpcmVkIGJ5IHRo
ZSBleGNsdXNpb25zIGltcGxlbWVudGF0aW9uLCBsaWtlIGNvbXB1dGluZyB0aGUgZmlyc3QgcG9z
c2libGUKKyAgICAgICAgbGF5b3V0IGxvY2F0aW9uIHdpdGhpbiBhIHNoYXBlLiBFeGNsdXNpb25T
aGFwZXMgYXJlIGNyZWF0ZWQgZm9yIEJhc2ljU2hhcGUgb2JqZWN0cyBhcyBuZWVkZWQsIHVzaW5n
IHRoZQorICAgICAgICBjcmVhdGVFeGNsdXNpb25TaGFwZSgpIG1ldGhvZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoRXhjbHVzaW9uU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6RXhj
bHVzaW9uU2hhcGU6On5FeGNsdXNpb25TaGFwZSk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvV3Jh
cFNoYXBlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXcmFwU2hhcGVJbmZvOjpjb21wdXRl
U2hhcGVTaXplKToKKyAgICAgICAgQ3JlYXRlIGFuIEV4Y2x1c2lvblNoYXBlIGZvciB0aGUgUmVu
ZGVyQmxvY2sncyBCYXNpY1NoYXBlLgorICAgICAgICAoV2ViQ29yZTo6V3JhcFNoYXBlSW5mbzo6
Y29tcHV0ZVNlZ21lbnRzRm9yTGluZSk6CisgICAgICAgIFVzZSBFeGNsdXNpb25TaGFwZTo6Z2V0
SW5zaWRlSW50ZXJ2YWxzKCkgdG8gY29tcHV0ZSB0aGUgc2hhcGUtaW5zaWRlIGludGVydmFscyB3
aXRoaW4gd2hpY2ggYSBsaW5lIHdpbGwgZml0LgorCisgICAgICAgICogcmVuZGVyaW5nL1dyYXBT
aGFwZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBTaGFwZUluZm86OnNoYXBlVG9wKToK
KyAgICAgICAgUmVtb3ZlZCAtIG5vIGxvbmdlciB1c2VkLgorICAgICAgICAoV3JhcFNoYXBlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpXcmFwU2hhcGVJbmZvOjpsaW5lU3RhdGUpOgorICAgICAg
ICBVc2UgdGhlIEV4Y2x1c2lvblNoYXBlJ3MgYm91bmRpbmcgYm94IHRvIGNvbXB1dGUgbGluZVN0
YXRlLgorCiAyMDEyLTA5LTA3ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29t
PgogCiAgICAgICAgIEFYOiBXZWJDb3JlIGFjY2Vzc2liaWxpdHkgcm9sZXMgc2hvdWxkIGJlIGNy
b3NzLXBsYXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzZjVlNGFiLi41
NDViOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ4NjUsNiArNDg2NSwx
MiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3Vu
dGVyTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaCBcCisJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25SZWN0YW5nbGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uUmVjdGFuZ2xlLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFw
ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDc4
ZTAzMDguLmI2YWE1MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwOTYsNiArMTA5Niw5IEBAIFNPVVJD
RVMgKz0gXAogICAgIHJlbmRlcmluZy9CaWRpUnVuLmNwcCBcCiAgICAgcmVuZGVyaW5nL0NvdW50
ZXJOb2RlLmNwcCBcCiAgICAgcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBcCisgICAgcmVuZGVy
aW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcCBcCisgICAgcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3Rh
bmdsZS5jcHAgXAorICAgIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5jcHAgXAogICAgIHJlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgXAogICAgIHJlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmNwcCBcCiAgICAgcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcCBcCkBA
IC0yMjc3LDYgKzIyODAsOSBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuaCBcCiAgICAgcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmggXAogICAgIHJlbmRlcmluZy9FbGxp
cHNpc0JveC5oIFwKKyAgICByZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuaCBcCisgICAgcmVu
ZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oIFwKKyAgICByZW5kZXJpbmcvRXhjbHVzaW9uU2hh
cGUuaCBcCiAgICAgcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggXAogICAgIHJlbmRl
cmluZy9GaXhlZFRhYmxlTGF5b3V0LmggXAogICAgIHJlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOThlY2FhZS4uYjQwMTUyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMzI4OSw2ICszMjg5LDEyIEBACiAgICAgICAgICAgICAncmVuZGVyaW5n
L0NvdW50ZXJOb2RlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9FbGxpcHNpc0JveC5oJywKKyAgICAgICAgICAgICdy
ZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcv
RXhjbHVzaW9uSW50ZXJ2YWwuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL0V4Y2x1c2lvblJl
Y3RhbmdsZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUu
aCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcCcsCisgICAgICAg
ICAgICAncmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvRml4ZWRUYWJsZUxh
eW91dC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCBmZDJiNTYyLi45OTgwZjA3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzgzNzgsNiArMzgzNzgsMzAgQEAKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHJlbmRlcmluZ1xFbGxpcHNpc0JveC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXEV4Y2x1c2lvbkludGVydmFsLmNwcCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAg
PC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcRXhjbHVzaW9uSW50ZXJ2
YWwuaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAg
ICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcRXhjbHVz
aW9uUmVjdGFuZ2xlLmNwcCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAg
ICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZp
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxyZW5k
ZXJpbmdcRXhjbHVzaW9uU1JlY3RhbmdsZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBh
dGg9Ii4uXHJlbmRlcmluZ1xFeGNsdXNpb25TaGFwZS5jcHAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXEV4Y2x1c2lvblNoYXBlLmgiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KIAkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwIgogCQkJCT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBlNGRjZjUwLi5mYWIzZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODM5LDYgKzE4Mzks
MTIgQEAKIAkJNkU2N0QyQTYxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJB
NDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLzsgfTsKIAkJNkU2
N0QyQTcxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTUxMjgwRThBNDAwODc1
OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oICovOyB9OwogCQk2RTY3RDJBOTEyODBFOEJEMDA4
NzU4RjcgLyogRXh0ZW5zaW9uczNELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmgg
Ki87IH07CisJCTZFODc5OEJBMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTg3OThC
NDE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuY3BwICovOyB9OworCQk2RTg3
OThCQjE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODc5OEI1MTVGODFFNEEwMEJGRTRB
QSAvKiBFeGNsdXNpb25JbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTZFODc5OEJDMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25S
ZWN0YW5nbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkU4Nzk4QjYxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5jcHAgKi87
IH07CisJCTZFODc5OEJEMTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODc5OEI3MTVG
ODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuaCAqLzsgfTsKKwkJNkU4Nzk4QkUx
NUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODc5OEI4MTVGODFFNEEwMEJGRTRBQSAvKiBF
eGNsdXNpb25TaGFwZS5jcHAgKi87IH07CisJCTZFODc5OEJGMTVGODFFNEEwMEJGRTRBQSAvKiBF
eGNsdXNpb25TaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkU4Nzk4QjkxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblNoYXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhC
NTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5jcHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkVCQzVFQUUxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJ
CTZFQkYwRTQ4MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAw
REIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC05MDIwLDYgKzkwMjYsMTIg
QEAKIAkJNkU2N0QyQTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25zM0RPcGVuR0wu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBNTEyODBFOEE0MDA4NzU4
RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2RTg3OThCNDE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjbHVzaW9uSW50ZXJ2YWwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg3OThCNTE1RjgxRTRBMDBCRkU0
QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXhjbHVzaW9uSW50ZXJ2YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU4
Nzk4QjYxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblJlY3RhbmdsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNsdXNpb25SZWN0YW5nbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg3OThCNzE1RjgxRTRBMDBCRkU0QUEgLyogRXhj
bHVzaW9uUmVjdGFuZ2xlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2x1
c2lvblJlY3RhbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg3OThCODE1
RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhjbHVzaW9uU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2RTg3OThCOTE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjbHVzaW9uU2hhcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVEODAxMzhCNEM0RTAwQTBDRjhBIC8qIEZsb2F0
NjRBcnJheS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmxvYXQ2NEFycmF5LmlkbDsgcGF0
aCA9IGNhbnZhcy9GbG9hdDY0QXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RUJDNUVBRDEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGbG9hdDY0QXJyYXkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9h
dDY0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGbG9hdDY0QXJy
YXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMjk5LDYgKzIxMzExLDEyIEBA
CiAJCQkJOTM5MkYxNEIwQUQxODYxQjAwNjkxQkQ0IC8qIENvdW50ZXJOb2RlLmggKi8sCiAJCQkJ
QThDRkY2Q0EwQTE1NjFDRDAwMEE0MjM0IC8qIEVsbGlwc2lzQm94LmNwcCAqLywKIAkJCQlBOENG
RjZCRDBBMTU2MTE4MDAwQTQyMzQgLyogRWxsaXBzaXNCb3guaCAqLywKKwkJCQk2RTg3OThCNDE1
RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uSW50ZXJ2YWwuY3BwICovLAorCQkJCTZFODc5OEI1
MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25JbnRlcnZhbC5oICovLAorCQkJCTZFODc5OEI2
MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuY3BwICovLAorCQkJCTZFODc5
OEI3MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuaCAqLywKKwkJCQk2RTg3
OThCODE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuY3BwICovLAorCQkJCTZFODc5
OEI5MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25TaGFwZS5oICovLAogCQkJCTMxMzEzRjYz
MTQ0M0IzNUUwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgKi8sCiAJCQkJMzEz
MTNGNjQxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggKi8sCiAJCQkJ
QThDRkYwNDgwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuY3BwICovLApAQCAt
MjIyMjQsNiArMjIyNDIsOCBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNkU4Nzk4QkIx
NUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvbkludGVydmFsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2RTg3OThCRjE1RjgxRTRBMDBCRkU0QUEgLyogRXhjbHVzaW9uU2hhcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3QkM2OURCMTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NTA4LDYgKzI1
NTI4LDcgQEAKIAkJCQlGQkQ2QUY4ODE1RUYyNUM5MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNpY1No
YXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4Qjcx
MTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFODc5OEJEMTVGODFFNEEw
MEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2RjJF
MkVDMTVGNzRDRUYwMDVGRjY2NCAvKiBSZW5kZXJEaWFsb2cuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNjA1QUVEMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEYzNzdGRjUxNUZBMzU2QTAwRTVENjBEIC8qIFdlYkNvcmVNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjg1OTgsNiArMjg2MTksOSBAQAog
CQkJCUZCRDZBRjg5MTVFRjI1REIwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZCRDZBRjhCMTVFRjI1RTUwMDhCNzExMCAvKiBDU1NCYXNpY1No
YXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQkQ2QUY4RDE1RUYyNjBBMDA4QjcxMTAgLyog
QmFzaWNTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkU4Nzk4QkExNUY4MUU0QTAwQkZF
NEFBIC8qIEV4Y2x1c2lvbkludGVydmFsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFODc5OEJD
MTVGODFFNEEwMEJGRTRBQSAvKiBFeGNsdXNpb25SZWN0YW5nbGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNkU4Nzk4QkUxNUY4MUU0QTAwQkZFNEFBIC8qIEV4Y2x1c2lvblNoYXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTRGQjM5MEFEMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0
bWFwSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q4QTVGMDE1RjU2RjJDMDA5OEQw
NzEgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uSW50ZXJ2YWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40ZTBlZjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmNwcApAQCAtMCwwICsxLDE2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhP
TERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFeGNsdXNpb25JbnRlcnZhbC5oIgor
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgSW50ZXJ2YWxYMUNvbXBhcmF0b3IgeworICAgIGJvb2wgb3BlcmF0b3IoKSAoY29uc3Qg
RXhjbHVzaW9uSW50ZXJ2YWwmIGkxLCBjb25zdCBFeGNsdXNpb25JbnRlcnZhbCYgaTIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gaTEueDEgPCBpMi54MTsKKyAgICB9Cit9OworCitib29s
IEV4Y2x1c2lvbkludGVydmFsOjppbnRlcnNlY3QoY29uc3QgRXhjbHVzaW9uSW50ZXJ2YWwmIGks
IEV4Y2x1c2lvbkludGVydmFsJiBydikgY29uc3QKK3sKKyAgICBpZiAoeDIgPCBpLngxIHx8IHgx
ID4gaS54MikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJ2LngxID0gc3RkOjptYXgoeDEs
IGkueDEpOworICAgIHJ2LngyID0gc3RkOjptaW4oeDIsIGkueDIpOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIHNvcnRFeGNsdXNpb25JbnRlcnZhbHMoVmVjdG9yPEV4Y2x1c2lvbkludGVy
dmFsPiYgdikKK3sKKyAgICBzdGQ6OnNvcnQodi5iZWdpbigpLCB2LmVuZCgpLCBJbnRlcnZhbFgx
Q29tcGFyYXRvcigpKTsKK30KKwordm9pZCBtZXJnZUV4Y2x1c2lvbkludGVydmFscyhjb25zdCBW
ZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVjdG9yPEV4Y2x1c2lvbkludGVy
dmFsPiYgdjIsIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mIHJ2KQoreworICAgIGlmICghdjEu
c2l6ZSgpKQorICAgICAgICBydi5hcHBlbmRSYW5nZSh2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7Cisg
ICAgZWxzZSBpZiAoIXYyLnNpemUoKSkKKyAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4o
KSwgdjEuZW5kKCkpOworICAgIGVsc2UgeworICAgICAgICBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2
YWw+IHYodjEuc2l6ZSgpICsgdjIuc2l6ZSgpKTsKKyAgICAgICAgRXhjbHVzaW9uSW50ZXJ2YWwq
IGludGVydmFsID0gMDsKKworICAgICAgICBzdGQ6Om1lcmdlKHYxLmJlZ2luKCksIHYxLmVuZCgp
LCB2Mi5iZWdpbigpLCB2Mi5lbmQoKSwgdi5iZWdpbigpLCBJbnRlcnZhbFgxQ29tcGFyYXRvcigp
KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgIGlmICghaW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAmdltp
XTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZbaV0ueDEgPj0gaW50ZXJ2YWwtPngxICYmIHZbaV0u
eDEgPD0gaW50ZXJ2YWwtPngyKSAvLyBGSVhNRTogMXN0IDw9IHRlc3Qgbm90IG5lZWRlZD8KKyAg
ICAgICAgICAgICAgICBpbnRlcnZhbC0+eDIgPSBzdGQ6Om1heChpbnRlcnZhbC0+eDIsIHZbaV0u
eDIpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRl
cnZhbCk7CisgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAmdltpXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChpbnRlcnZhbCkKKyAgICAgICAgICAgIHJ2LmFwcGVu
ZCgqaW50ZXJ2YWwpOworICAgIH0KK30KKwordm9pZCBpbnRlcnNlY3RFeGNsdXNpb25JbnRlcnZh
bHMoY29uc3QgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxFeGNs
dXNpb25JbnRlcnZhbD4mIHYyLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiBydikKK3sKKyAg
ICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOworICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXpl
KCk7CisKKyAgICBpZiAoIXYxU2l6ZSB8fCAhdjJTaXplKQorICAgICAgICByZXR1cm47CisKKyAg
ICBFeGNsdXNpb25JbnRlcnZhbCBpbnRlcnZhbDsKKyAgICBib29sIG92ZXJsYXAgPSBmYWxzZTsK
KyAgICBzaXplX3QgaTEgPSAwOworICAgIHNpemVfdCBpMiA9IDA7CisKKyAgICB3aGlsZSAoaTEg
PCB2MVNpemUgJiYgaTIgPCB2MlNpemUpIHsKKyAgICAgICAgRXhjbHVzaW9uSW50ZXJ2YWwgdjEy
OworICAgICAgICBpZiAodjFbaTFdLmludGVyc2VjdCh2MltpMl0sIHYxMikpIHsKKyAgICAgICAg
ICAgIGlmICghb3ZlcmxhcCB8fCAhdjEyLmludGVyc2VjdChpbnRlcnZhbCwgaW50ZXJ2YWwpKSB7
CisgICAgICAgICAgICAgICAgaWYgKG92ZXJsYXApCisgICAgICAgICAgICAgICAgICAgIHJ2LmFw
cGVuZChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSB2MTI7CisgICAgICAg
ICAgICAgICAgb3ZlcmxhcCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
djFbaTFdLngyIDwgdjJbaTJdLngyKQorICAgICAgICAgICAgICAgIGkxKys7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgaTIrKzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlmIChvdmVybGFwKQorICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Cisg
ICAgICAgICAgICBvdmVybGFwID0gZmFsc2U7CisgICAgICAgICAgICBpZiAodjFbaTFdLngxIDwg
djJbaTJdLngxKQorICAgICAgICAgICAgICAgIGkxKys7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgaTIrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChvdmVybGFwKQor
ICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOworfQorCit2b2lkIHN1YnRyYWN0RXhjbHVzaW9u
SW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mIHYxLCBjb25zdCBWZWN0
b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiB2MiwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYgcnYp
Cit7CisgICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKKyAgICBzaXplX3QgdjJTaXplID0g
djIuc2l6ZSgpOworCisgICAgaWYgKCF2MVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghdjJTaXplKQorICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7
CisgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBpMSA9IDAsIGkyID0gMDsKKyAgICAgICAgcnYu
YXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworCisgICAgICAgIHdoaWxlIChpMSA8
IHJ2LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgeworICAgICAgICAgICAgRXhjbHVzaW9uSW50ZXJ2
YWwmIGludGVydmFsMSA9IHJ2W2kxXTsKKyAgICAgICAgICAgIGNvbnN0IEV4Y2x1c2lvbkludGVy
dmFsJiBpbnRlcnZhbDIgPSB2MltpMl07CisKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbDIueDEg
PD0gaW50ZXJ2YWwxLngxICYmIGludGVydmFsMi54MiA+PSBpbnRlcnZhbDEueDIpCisgICAgICAg
ICAgICAgICAgcnYucmVtb3ZlKGkxKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54
MiA8IGludGVydmFsMS54MSkKKyAgICAgICAgICAgICAgICBpMiArPSAxOworICAgICAgICAgICAg
ZWxzZSBpZiAoaW50ZXJ2YWwyLngxID4gaW50ZXJ2YWwxLngyKQorICAgICAgICAgICAgICAgIGkx
ICs9IDE7CisgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEgPiBpbnRlcnZhbDEueDEg
JiYgaW50ZXJ2YWwyLngyIDwgaW50ZXJ2YWwxLngyKSB7CisgICAgICAgICAgICAgICAgcnYuaW5z
ZXJ0KGkxLCBFeGNsdXNpb25JbnRlcnZhbChpbnRlcnZhbDEueDEsIGludGVydmFsMi54MSkpOwor
ICAgICAgICAgICAgICAgIGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsKKyAgICAgICAgICAg
ICAgICBpMiArPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbDIueDEgPD0gaW50
ZXJ2YWwxLngxKSB7CisgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngxID0gaW50ZXJ2YWwyLngy
OworICAgICAgICAgICAgICAgIGkyICs9IDE7CisgICAgICAgICAgICB9IGVsc2UgIHsgLy8gKGlu
dGVydmFsMi54MiA+PSBpbnRlcnZhbDEueDIpCisgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngy
ID0gaW50ZXJ2YWwyLngxOworICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvbkludGVydmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNWQzMWZlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25JbnRlcnZhbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
CisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEV4Y2x1c2lvbkludGVydmFsX2gKKyNkZWZpbmUgRXhjbHVzaW9uSW50ZXJ2YWxf
aAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBFeGNsdXNpb25JbnRlcnZhbCB7CitwdWJsaWM6CisgICAgZmxvYXQgeDE7CisgICAgZmxv
YXQgeDI7CisKKyAgICBFeGNsdXNpb25JbnRlcnZhbChmbG9hdCB4MSA9IDAsIGZsb2F0IHgyID0g
MCkKKyAgICAgICAgOiB4MSh4MSkKKyAgICAgICAgLCB4Mih4MikKKyAgICB7CisgICAgfQorCisg
ICAgYm9vbCBpbnRlcnNlY3QoY29uc3QgRXhjbHVzaW9uSW50ZXJ2YWwmLCBFeGNsdXNpb25JbnRl
cnZhbCYpIGNvbnN0OworfTsKKwordm9pZCBzb3J0RXhjbHVzaW9uSW50ZXJ2YWxzKFZlY3RvcjxF
eGNsdXNpb25JbnRlcnZhbD4mKTsKK3ZvaWQgbWVyZ2VFeGNsdXNpb25JbnRlcnZhbHMoY29uc3Qg
VmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZh
bD4mLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+Jik7Cit2b2lkIGludGVyc2VjdEV4Y2x1c2lv
bkludGVydmFscyhjb25zdCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiwgY29uc3QgVmVjdG9y
PEV4Y2x1c2lvbkludGVydmFsPiYsIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKTsKK3ZvaWQg
c3VidHJhY3RFeGNsdXNpb25JbnRlcnZhbHMoY29uc3QgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFs
PiYsIGNvbnN0IFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mLCBWZWN0b3I8RXhjbHVzaW9uSW50
ZXJ2YWw+Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEV4Y2x1c2lv
bkludGVydmFsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNp
b25SZWN0YW5nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3Rh
bmdsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhmODNiMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5n
bGUuY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkV4Y2x1c2lvblJlY3RhbmdsZS5oIgorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIGZsb2F0IGVsbGlwc2VY
SW50ZXJjZXB0KGZsb2F0IHksIGZsb2F0IHJ4LCBmbG9hdCByeSkKK3sKKyAgICBBU1NFUlQocnkg
PiAwKTsKKyAgICByZXR1cm4gcnggKiBzcXJ0KDEgLSAoeSp5KSAvIChyeSpyeSkpOworfQorCit2
b2lkIEV4Y2x1c2lvblJlY3RhbmdsZTo6Z2V0T3V0c2lkZUludGVydmFscyhmbG9hdCB5MSwgZmxv
YXQgeTIsIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mIHJ2KSBjb25zdAoreworICAgIGlmICh5
MSA+IHkyKQorICAgICAgICBzdGQ6OnN3YXAoeTEsIHkyKTsKKworICAgIGlmICh5MiA8IG1feSB8
fCB5MSA+PSBtX3kgKyBtX2hlaWdodCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgeDEg
PSBtX3g7CisgICAgZmxvYXQgeDIgPSBtX3ggKyBtX3dpZHRoOworCisgICAgaWYgKG1fcnkgPiAw
KSB7CisgICAgICAgIGlmICh5MiA8IG1feSArIG1fcnkpIHsKKyAgICAgICAgICAgIGZsb2F0IHlp
ID0geTIgLSBtX3kgLSBtX3J5OworICAgICAgICAgICAgZmxvYXQgeGkgPSBlbGxpcHNlWEludGVy
Y2VwdCh5aSwgbV9yeCwgbV9yeSk7CisgICAgICAgICAgICB4MSA9IG1feCArIG1fcnggLSB4aTsK
KyAgICAgICAgICAgIHgyID0gbV94ICsgbV93aWR0aCAtIG1fcnggKyB4aTsKKyAgICAgICAgfSBl
bHNlIGlmICh5MSA+IG1feSArIG1faGVpZ2h0IC0gbV9yeSkgeworICAgICAgICAgICAgZmxvYXQg
eWkgPSAgeTEgLSAobV95ICsgbV9oZWlnaHQgLSBtX3J5KTsKKyAgICAgICAgICAgIGZsb2F0IHhp
ID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIG1fcngsIG1fcnkpOworICAgICAgICAgICAgeDEgPSBt
X3ggKyBtX3J4IC0geGk7CisgICAgICAgICAgICB4MiA9IG1feCArIG1fd2lkdGggLSBtX3J4ICsg
eGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBydi5hcHBlbmQoRXhjbHVzaW9uSW50ZXJ2YWwo
eDEsIHgyKSk7Cit9CisKK3ZvaWQgRXhjbHVzaW9uUmVjdGFuZ2xlOjpnZXRJbnNpZGVJbnRlcnZh
bHMoZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiBydikgY29u
c3QKK3sKKyAgICBpZiAoeTEgPiB5MikKKyAgICAgICAgc3RkOjpzd2FwKHkxLCB5Mik7CisKKyAg
ICBpZiAoeTEgPCBtX3kgfHwgeTIgPj0gbV95ICsgbV9oZWlnaHQpCisgICAgICAgIHJldHVybjsK
KworICAgIGZsb2F0IHgxID0gbV94OworICAgIGZsb2F0IHgyID0gbV94ICsgbV93aWR0aDsKKwor
ICAgIGlmIChtX3J5ID4gMCkgeworICAgICAgICBib29sIHkxSW50ZXJjZXB0c0Nvcm5lciA9IHkx
IDwgbV95ICsgbV9yeTsKKyAgICAgICAgYm9vbCB5MkludGVyY2VwdHNDb3JuZXIgPSB5MiA+IG1f
eSArIG1faGVpZ2h0IC0gbV9yeTsKKyAgICAgICAgZmxvYXQgeGkgPSAwOworCisgICAgICAgIGlm
ICh5MUludGVyY2VwdHNDb3JuZXIgJiYgeTJJbnRlcmNlcHRzQ29ybmVyKSB7CisgICAgICAgICAg
ICBpZiAgKHkxIDwgbV9oZWlnaHQgKyAyKm1feSAtIHkyKSB7CisgICAgICAgICAgICAgICAgZmxv
YXQgeWkgPSB5MSAtIG1feSAtIG1fcnk7CisgICAgICAgICAgICAgICAgeGkgPSBlbGxpcHNlWElu
dGVyY2VwdCh5aSwgbV9yeCwgbV9yeSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGZsb2F0IHlpID0gIHkyIC0gKG1feSArIG1faGVpZ2h0IC0gbV9yeSk7CisgICAgICAg
ICAgICAgICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbV9yeCwgbV9yeSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoeTFJbnRlcmNlcHRzQ29ybmVyKSB7CisgICAgICAg
ICAgICBmbG9hdCB5aSA9IHkxIC0gbV95IC0gbV9yeTsKKyAgICAgICAgICAgIHhpID0gZWxsaXBz
ZVhJbnRlcmNlcHQoeWksIG1fcngsIG1fcnkpOworICAgICAgICB9IGVsc2UgaWYgKHkySW50ZXJj
ZXB0c0Nvcm5lcikgeworICAgICAgICAgICAgZmxvYXQgeWkgPSAgeTIgLSAobV95ICsgbV9oZWln
aHQgLSBtX3J5KTsKKyAgICAgICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIG1fcngs
IG1fcnkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHkxSW50ZXJjZXB0c0Nvcm5lciB8fCB5
MkludGVyY2VwdHNDb3JuZXIpIHsKKyAgICAgICAgICAgIHgxID0gbV94ICsgbV9yeCAtIHhpOwor
ICAgICAgICAgICAgeDIgPSBtX3ggKyBtX3dpZHRoIC0gbV9yeCArIHhpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcnYuYXBwZW5kKEV4Y2x1c2lvbkludGVydmFsKHgxLCB4MikpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uUmVjdGFuZ2xlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFmMDIx
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25S
ZWN0YW5nbGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeGNsdXNpb25SZWN0
YW5nbGVfaAorI2RlZmluZSBFeGNsdXNpb25SZWN0YW5nbGVfaAorCisjaW5jbHVkZSAiRXhjbHVz
aW9uU2hhcGUuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFeGNsdXNpb25SZWN0YW5n
bGUgOiBwdWJsaWMgRXhjbHVzaW9uU2hhcGUgeworcHVibGljOgorICAgIEV4Y2x1c2lvblJlY3Rh
bmdsZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBy
eCA9IDAsIGZsb2F0IHJ5ID0gMCkKKyAgICAgICAgOiBFeGNsdXNpb25TaGFwZSgpCisgICAgICAg
ICwgbV94KHgpCisgICAgICAgICwgbV95KHkpCisgICAgICAgICwgbV93aWR0aCh3aWR0aCkKKyAg
ICAgICAgLCBtX2hlaWdodChoZWlnaHQpCisgICAgICAgICwgbV9yeChyeCkKKyAgICAgICAgLCBt
X3J5KHJ5KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzaGFwZUxvZ2lj
YWxCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEZsb2F0UmVjdChtX3gsIG1f
eSwgbV93aWR0aCwgbV9oZWlnaHQpOyB9CisgICAgdmlydHVhbCB2b2lkIGdldE91dHNpZGVJbnRl
cnZhbHMoZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGdldEluc2lkZUludGVydmFscyhmbG9hdCB5
MSwgZmxvYXQgeTIsIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKSBjb25zdCBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICBmbG9hdCBtX3g7CisgICAgZmxvYXQgbV95OworICAgIGZsb2F0IG1f
d2lkdGg7CisgICAgZmxvYXQgbV9oZWlnaHQ7CisgICAgZmxvYXQgbV9yeDsgLy8gY29ybmVyIFgg
cmFkaXVzCisgICAgZmxvYXQgbV9yeTsgLy8gY29ybmVyIFkgcmFkaXVzCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFeGNsdXNpb25SZWN0YW5nbGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDhjODhiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
CisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhjbHVzaW9uU2hhcGUuaCIKKworI2lu
Y2x1ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJFeGNsdXNpb25SZWN0YW5n
bGUuaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIldpbmRSdWxlLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUGFzc093blB0cjxFeGNsdXNpb25TaGFw
ZT4gY3JlYXRlRXhjbHVzaW9uUmVjdGFuZ2xlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQsIGZsb2F0IHJ4LCBmbG9hdCByeSkKK3sKKyAgICBBU1NFUlQod2lkdGgg
Pj0gMCAmJiBoZWlnaHQgPj0gMCAmJiByeCA+PSAwICYmIHJ5ID49IDApOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRXhjbHVzaW9uUmVjdGFuZ2xlKHgsIHksIHdpZHRoLCBoZWlnaHQsIHJ4LCBy
eSkpOworfQorCitzdGF0aWMgUGFzc093blB0cjxFeGNsdXNpb25TaGFwZT4gY3JlYXRlRXhjbHVz
aW9uQ2lyY2xlKGZsb2F0IGN4LCBmbG9hdCBjeSwgZmxvYXQgcmFkaXVzKQoreworICAgIEFTU0VS
VChyYWRpdXMgPj0gMCk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFeGNsdXNpb25SZWN0YW5n
bGUoY3ggLSByYWRpdXMsIGN5IC0gcmFkaXVzLCBjeCArIHJhZGl1cywgY3kgKyByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPEV4Y2x1c2lvblNoYXBlPiBj
cmVhdGVFeGNsdXNpb25FbGxpcHNlKGZsb2F0IGN4LCBmbG9hdCBjeSwgZmxvYXQgcngsIGZsb2F0
IHJ5KQoreworICAgIEFTU0VSVChyeCA+PSAwICYmIHJ5ID49IDApOworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgRXhjbHVzaW9uUmVjdGFuZ2xlKGN4IC0gcngsIGN5IC0gcnksIGN4ICsgcngsIGN5
ICsgcnksIHJ4LCByeSkpOworfQorCitQYXNzT3duUHRyPEV4Y2x1c2lvblNoYXBlPiBFeGNsdXNp
b25TaGFwZTo6Y3JlYXRlRXhjbHVzaW9uU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogd3JhcFNoYXBl
LCBmbG9hdCBib3JkZXJCb3hMb2dpY2FsV2lkdGgsIGZsb2F0IGJvcmRlckJveExvZ2ljYWxIZWln
aHQpCit7CisgICAgaWYgKCF3cmFwU2hhcGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgc3dpdGNoICh3cmFwU2hhcGUtPnR5cGUoKSkgeworICAgIGNhc2UgQmFzaWNTaGFwZTo6QkFT
SUNfU0hBUEVfUkVDVEFOR0xFOiB7CisgICAgICAgIGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5nbGUq
IHJlY3RhbmdsZSA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5nbGUqPih3cmFw
U2hhcGUpOworICAgICAgICBMZW5ndGggcnggPSByZWN0YW5nbGUtPmNvcm5lclJhZGl1c1goKTsK
KyAgICAgICAgTGVuZ3RoIHJ5ID0gcmVjdGFuZ2xlLT5jb3JuZXJSYWRpdXNZKCk7CisgICAgICAg
IHJldHVybiBjcmVhdGVFeGNsdXNpb25SZWN0YW5nbGUoCisgICAgICAgICAgICBmbG9hdFZhbHVl
Rm9yTGVuZ3RoKHJlY3RhbmdsZS0+eCgpLCBib3JkZXJCb3hMb2dpY2FsV2lkdGgpLAorICAgICAg
ICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChyZWN0YW5nbGUtPnkoKSwgYm9yZGVyQm94TG9naWNh
bEhlaWdodCksCisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHJlY3RhbmdsZS0+d2lk
dGgoKSwgYm9yZGVyQm94TG9naWNhbFdpZHRoKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JM
ZW5ndGgocmVjdGFuZ2xlLT5oZWlnaHQoKSwgYm9yZGVyQm94TG9naWNhbEhlaWdodCksCisgICAg
ICAgICAgICByeC5pc1VuZGVmaW5lZCgpID8gMCA6IGZsb2F0VmFsdWVGb3JMZW5ndGgocngsIGJv
cmRlckJveExvZ2ljYWxXaWR0aCksCisgICAgICAgICAgICByeS5pc1VuZGVmaW5lZCgpID8gMCA6
IGZsb2F0VmFsdWVGb3JMZW5ndGgocnksIGJvcmRlckJveExvZ2ljYWxIZWlnaHQpICk7CisgICAg
fQorCisgICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9DSVJDTEU6IHsKKyAgICAgICAg
Y29uc3QgQmFzaWNTaGFwZUNpcmNsZSogY2lyY2xlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNT
aGFwZUNpcmNsZSo+KHdyYXBTaGFwZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGNsdXNpb25D
aXJjbGUoCisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNpcmNsZS0+Y2VudGVyWCgp
LCBib3JkZXJCb3hMb2dpY2FsV2lkdGgpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0
aChjaXJjbGUtPmNlbnRlclkoKSwgYm9yZGVyQm94TG9naWNhbEhlaWdodCksCisgICAgICAgICAg
ICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNpcmNsZS0+cmFkaXVzKCksIHN0ZDo6bWF4KGJvcmRlckJv
eExvZ2ljYWxIZWlnaHQsIGJvcmRlckJveExvZ2ljYWxXaWR0aCkpICk7CisgICAgfQorCisgICAg
Y2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9FTExJUFNFOiB7CisgICAgICAgIGNvbnN0IEJh
c2ljU2hhcGVFbGxpcHNlKiBlbGxpcHNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZUVs
bGlwc2UqPih3cmFwU2hhcGUpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhjbHVzaW9uRWxsaXBz
ZSgKKyAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBzZS0+Y2VudGVyWCgpLCBi
b3JkZXJCb3hMb2dpY2FsV2lkdGgpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChl
bGxpcHNlLT5jZW50ZXJZKCksIGJvcmRlckJveExvZ2ljYWxIZWlnaHQpLAorICAgICAgICAgICAg
ZmxvYXRWYWx1ZUZvckxlbmd0aChlbGxpcHNlLT5yYWRpdXNYKCksIGJvcmRlckJveExvZ2ljYWxX
aWR0aCksCisgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGVsbGlwc2UtPnJhZGl1c1ko
KSwgYm9yZGVyQm94TG9naWNhbEhlaWdodCkgKTsKKyAgICB9CisKKyAgICBjYXNlIEJhc2ljU2hh
cGU6OkJBU0lDX1NIQVBFX1BPTFlHT046CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
fQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FeGNsdXNpb25TaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blNoYXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVkZTRkNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5o
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVt
cyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICog
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKKyAqIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwKKyAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV4Y2x1c2lvblNoYXBlX2gKKyNkZWZp
bmUgRXhjbHVzaW9uU2hhcGVfaAorCisjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRl
ICJFeGNsdXNpb25JbnRlcnZhbC5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEV4Y2x1c2lvblNoYXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxFeGNsdXNpb25TaGFwZT4gY3JlYXRlRXhjbHVzaW9uU2hhcGUoY29uc3QgQmFz
aWNTaGFwZSosIGZsb2F0IGJvcmRlckJveExvZ2ljYWxXaWR0aCwgZmxvYXQgYm9yZGVyQm94TG9n
aWNhbEhlaWdodCk7CisKKyAgICB2aXJ0dWFsIH5FeGNsdXNpb25TaGFwZSgpIHsgfQorCisgICAg
dmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVMb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdldEluc2lkZUludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9h
dCBsb2dpY2FsQm90dG9tLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRPdXRzaWRlSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZs
b2F0IGxvZ2ljYWxCb3R0b20sIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKSBjb25zdCA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFeGNsdXNpb25TaGFw
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5l
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlv
dXQuY3BwCmluZGV4IGMwYzM0MDQuLmZlNjY5NDQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0xMjk3LDggKzEyOTcsOCBA
QCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5lTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBJbmxpbgogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKICAg
ICBXcmFwU2hhcGVJbmZvKiB3cmFwU2hhcGVJbmZvID0gdGhpcy0+d3JhcFNoYXBlSW5mbygpOwog
ICAgIC8vIE1vdmUgdG8gdGhlIHRvcCBvZiB0aGUgc2hhcGUgaW5zaWRlIHRvIGJlZ2luIGxheW91
dAotICAgIGlmICh3cmFwU2hhcGVJbmZvICYmIGxvZ2ljYWxIZWlnaHQoKSA8IHdyYXBTaGFwZUlu
Zm8tPnNoYXBlVG9wKCkpCi0gICAgICAgIHNldExvZ2ljYWxIZWlnaHQod3JhcFNoYXBlSW5mby0+
c2hhcGVUb3AoKSk7CisgICAgaWYgKHdyYXBTaGFwZUluZm8gJiYgbG9naWNhbEhlaWdodCgpIDwg
d3JhcFNoYXBlSW5mby0+c2hhcGVMb2dpY2FsVG9wKCkpCisgICAgICAgIHNldExvZ2ljYWxIZWln
aHQod3JhcFNoYXBlSW5mby0+c2hhcGVMb2dpY2FsVG9wKCkpOwogI2VuZGlmCiAKICAgICB3aGls
ZSAoIWVuZC5hdEVuZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
V3JhcFNoYXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNoYXBlSW5m
by5jcHAKaW5kZXggOGVmNzNjNy4uMGExNmNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9XcmFwU2hhcGVJbmZvLmNwcApAQCAtMTA1LDM3ICsxMDUsMjggQEAgdm9pZCBXcmFwU2hhcGVJ
bmZvOjpjb21wdXRlU2hhcGVTaXplKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0
IGxvZ2ljYWwKIAogICAgIC8vIEZJWE1FOiBCdWcgODk5OTM6IFRoZSB3cmFwIHNoYXBlIG1heSBj
b21lIGZyb20gdGhlIHBhcmVudCBvYmplY3QKICAgICBCYXNpY1NoYXBlKiBzaGFwZSA9IG1fYmxv
Y2stPnN0eWxlKCktPndyYXBTaGFwZUluc2lkZSgpOwotCiAgICAgQVNTRVJUKHNoYXBlKTsKIAot
ICAgIHN3aXRjaCAoc2hhcGUtPnR5cGUoKSkgewotICAgIGNhc2UgQmFzaWNTaGFwZTo6QkFTSUNf
U0hBUEVfUkVDVEFOR0xFOiB7Ci0gICAgICAgIEJhc2ljU2hhcGVSZWN0YW5nbGUqIHJlY3QgPSBz
dGF0aWNfY2FzdDxCYXNpY1NoYXBlUmVjdGFuZ2xlICo+KHNoYXBlKTsKLSAgICAgICAgbV9zaGFw
ZUxlZnQgPSB2YWx1ZUZvckxlbmd0aChyZWN0LT54KCksIG1fbG9naWNhbFdpZHRoKTsKLSAgICAg
ICAgbV9zaGFwZVdpZHRoID0gdmFsdWVGb3JMZW5ndGgocmVjdC0+d2lkdGgoKSwgbV9sb2dpY2Fs
V2lkdGgpOwotICAgICAgICBtX3NoYXBlVG9wID0gdmFsdWVGb3JMZW5ndGgocmVjdC0+eSgpLCBt
X2xvZ2ljYWxIZWlnaHQpOwotICAgICAgICBtX3NoYXBlSGVpZ2h0ID0gdmFsdWVGb3JMZW5ndGgo
cmVjdC0+aGVpZ2h0KCksIG1fbG9naWNhbEhlaWdodCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICAvLyBGSVhNRTogQnVnIDg5NzA3OiBFbmFibGUgc2hhcGUgaW5zaWRlIGZvciBub24tcmVj
dGFuZ3VsYXIgc2hhcGVzCi0gICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9DSVJDTEU6
Ci0gICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19TSEFQRV9FTExJUFNFOgotICAgIGNhc2UgQmFz
aWNTaGFwZTo6QkFTSUNfU0hBUEVfUE9MWUdPTjogewotICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQorICAgIG1fc2hhcGUgPSBFeGNsdXNpb25T
aGFwZTo6Y3JlYXRlRXhjbHVzaW9uU2hhcGUoc2hhcGUsIGxvZ2ljYWxXaWR0aCwgbG9naWNhbEhl
aWdodCk7CisgICAgQVNTRVJUKG1fc2hhcGUpOwogfQogCiBib29sIFdyYXBTaGFwZUluZm86OmNv
bXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wKQogewogICAgIG1fbGluZVRv
cCA9IGxpbmVUb3A7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOworCiAgICAgaWYgKGxpbmVTdGF0
ZSgpID09IExJTkVfSU5TSURFX1NIQVBFKSB7Ci0gICAgICAgIExpbmVTZWdtZW50IHNlZ21lbnQ7
Ci0gICAgICAgIHNlZ21lbnQubG9naWNhbExlZnQgPSBtX3NoYXBlTGVmdDsKLSAgICAgICAgc2Vn
bWVudC5sb2dpY2FsUmlnaHQgPSBtX3NoYXBlTGVmdCArIG1fc2hhcGVXaWR0aDsKLSAgICAgICAg
bV9zZWdtZW50cy5hcHBlbmQoc2VnbWVudCk7CisgICAgICAgIEFTU0VSVChtX3NoYXBlKTsKKwor
ICAgICAgICBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+IGludGVydmFsczsKKyAgICAgICAgbV9z
aGFwZS0+Z2V0SW5zaWRlSW50ZXJ2YWxzKGxpbmVUb3AsIGxpbmVUb3AsIGludGVydmFscyk7IC8v
IEZJWE1FOiBCdWcgOTU0NzksIHdvcmthcm91bmQgZm9yIG5vdworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGludGVydmFscy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgTGluZVNl
Z21lbnQgc2VnbWVudDsKKyAgICAgICAgICAgIHNlZ21lbnQubG9naWNhbExlZnQgPSBpbnRlcnZh
bHNbaV0ueDE7CisgICAgICAgICAgICBzZWdtZW50LmxvZ2ljYWxSaWdodCA9IGludGVydmFsc1tp
XS54MjsKKyAgICAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHNlZ21lbnQpOworICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5oCmluZGV4IGE4MDM2ZDAuLmY5OTZiNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uaApAQCAtMzIsNyArMzIsMTAgQEAKIAog
I2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKIAorI2luY2x1ZGUgIkV4Y2x1c2lvblNoYXBlLmgi
CisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRo
b2RzLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC02NCwxNCArNjcsMTggQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVdyYXBTaGFwZUluZm9Gb3JSZW5kZXJCbG9jayhjb25z
dCBSZW5kZXJCbG9jayopOwogICAgIHN0YXRpYyBib29sIGlzV3JhcFNoYXBlSW5mb0VuYWJsZWRG
b3JSZW5kZXJCbG9jayhjb25zdCBSZW5kZXJCbG9jayopOwogCi0gICAgTGF5b3V0VW5pdCBzaGFw
ZVRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGVUb3A7IH0KKyAgICBMYXlvdXRVbml0IHNoYXBl
TG9naWNhbFRvcCgpIGNvbnN0IAorICAgIHsgCisgICAgICAgIEFTU0VSVChtX3NoYXBlKTsKKyAg
ICAgICAgcmV0dXJuIG1fc2hhcGUtPnNoYXBlTG9naWNhbEJvdW5kaW5nQm94KCkueSgpOworICAg
IH0KICAgICBib29sIGhhc1NlZ21lbnRzKCkgY29uc3Q7CiAgICAgY29uc3QgU2VnbWVudExpc3Qm
IHNlZ21lbnRzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTZWdtZW50cygpKTsK
ICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHM7CiAgICAgfQotICAgIGJvb2wgY29tcHV0ZVNlZ21l
bnRzRm9yTGluZShMYXlvdXRVbml0KTsKKyAgICBib29sIGNvbXB1dGVTZWdtZW50c0ZvckxpbmUo
TGF5b3V0VW5pdCBsaW5lVG9wKTsKICAgICBMaW5lU3RhdGUgbGluZVN0YXRlKCkgY29uc3Q7CiAg
ICAgdm9pZCBjb21wdXRlU2hhcGVTaXplKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQpOwogICAgIHZvaWQgZGlydHlXcmFwU2hhcGVTaXplKCkgeyBtX3dy
YXBTaGFwZVNpemVEaXJ0eSA9IHRydWU7IH0KQEAgLTgwLDEwICs4Nyw3IEBAIHByaXZhdGU6CiAg
ICAgV3JhcFNoYXBlSW5mbyhSZW5kZXJCbG9jayopOwogCiAgICAgUmVuZGVyQmxvY2sqIG1fYmxv
Y2s7Ci0gICAgTGF5b3V0VW5pdCBtX3NoYXBlTGVmdDsKLSAgICBMYXlvdXRVbml0IG1fc2hhcGVU
b3A7Ci0gICAgTGF5b3V0VW5pdCBtX3NoYXBlV2lkdGg7Ci0gICAgTGF5b3V0VW5pdCBtX3NoYXBl
SGVpZ2h0OworICAgIE93blB0cjxFeGNsdXNpb25TaGFwZT4gbV9zaGFwZTsKIAogICAgIExheW91
dFVuaXQgbV9saW5lVG9wOwogICAgIExheW91dFVuaXQgbV9sb2dpY2FsV2lkdGg7CkBAIC05NSwx
MCArOTksMTUgQEAgcHJpdmF0ZToKIAogaW5saW5lIFdyYXBTaGFwZUluZm86OkxpbmVTdGF0ZSBX
cmFwU2hhcGVJbmZvOjpsaW5lU3RhdGUoKSBjb25zdAogewotICAgIGlmIChtX2xpbmVUb3AgPCBt
X3NoYXBlVG9wKQorICAgIEFTU0VSVChtX3NoYXBlKTsKKyAgICBGbG9hdFJlY3Qgc2hhcGVCb3Vu
ZHMgPSBtX3NoYXBlLT5zaGFwZUxvZ2ljYWxCb3VuZGluZ0JveCgpOworCisgICAgaWYgKG1fbGlu
ZVRvcCA8IHNoYXBlQm91bmRzLnkoKSkKICAgICAgICAgcmV0dXJuIExJTkVfQkVGT1JFX1NIQVBF
OwotICAgIGlmIChtX2xpbmVUb3AgPCBtX3NoYXBlVG9wICsgbV9zaGFwZUhlaWdodCkKKworICAg
IGlmIChtX2xpbmVUb3AgPCBzaGFwZUJvdW5kcy5tYXhZKCkpCiAgICAgICAgIHJldHVybiBMSU5F
X0lOU0lERV9TSEFQRTsKKwogICAgIHJldHVybiBMSU5FX0FGVEVSX1NIQVBFOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>