<?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>73277</bug_id>
          
          <creation_ts>2011-11-28 19:40:45 -0800</creation_ts>
          <short_desc>-webkit-aspect-ratio Layout Implementation</short_desc>
          <delta_ts>2020-12-24 02:47:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>47738</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fady Samuel">fsamuel</reporter>
          <assigned_to name="Fady Samuel">fsamuel</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>macpherson</cc>
    
    <cc>rbuis</cc>
    
    <cc>rjkroege</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510420</commentid>
    <comment_count>0</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 19:40:45 -0800</bug_when>
    <thetext>-webkit-aspect-ratio Layout Implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510422</commentid>
    <comment_count>1</comment_count>
      <attachid>116873</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 19:46:40 -0800</bug_when>
    <thetext>Created attachment 116873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510888</commentid>
    <comment_count>2</comment_count>
      <attachid>116873</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-29 10:23:03 -0800</bug_when>
    <thetext>Comment on attachment 116873
Patch

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

Just some initial comments that focus mostly on style/readability. I didn&apos;t comment too much on the guts of the code since I&apos;m not exactly sure what the right way to do it is. We&apos;ll need Hyatt&apos;s expertise there.

&gt; Source/WebCore/ChangeLog:17
&gt; +        More tests and lots of tweaking is coming. This is being uploaded for early review.

This sort of comment belongs in the bug, not in the ChangeLog since you would never actually commit this comment. Also, typically, we only mark things for review that are ready to be committed. The way to get an early review is to upload the patch without the r? and ping reviewers asking them to take an early look at it.

&gt; Source/WebCore/ChangeLog:29
&gt; +        Aspect rati computation happens in three stages.

typo: rati

&gt; Source/WebCore/rendering/RenderBlock.cpp:1208
&gt; +    LayoutUnit previousHeight = logicalHeight();
&gt; +    setLogicalHeight(0);

Did you need to move this code?

&gt; Source/WebCore/rendering/RenderBlock.cpp:1327
&gt; +      
&gt; +

I&apos;m fine with adding a line-break for readability here, but we don&apos;t typically use two line-breaks.

&gt; Source/WebCore/rendering/RenderBox.cpp:1675
&gt; +bool RenderBox::isWidthDetermined() const
&gt; +{
&gt; +    return isWidthDeterminedUsing(style()-&gt;logicalWidth(), style()-&gt;logicalLeft(), style()-&gt;logicalRight());
&gt; +}

This method look unused to me.

&gt; Source/WebCore/rendering/RenderBox.cpp:1680
&gt; +    bool logicalMinHeightIsSpecified = !style()-&gt;logicalMinHeight().isAuto() &amp;&amp; style()-&gt;logicalMinHeight().isPositive();

Is there a reason you pass in all the sizes execpt logicalMinHeight? If you passed this in as well, you could change the variables names appropriately and have a single helper function for both isWidthDeterimind and isHeightDetermined.

&gt; Source/WebCore/rendering/RenderBox.cpp:1691
&gt; +bool RenderBox::isHeightDetermined() const
&gt; +{
&gt; +    return isHeightDeterminedUsing(style()-&gt;logicalHeight(), style()-&gt;logicalTop(), style()-&gt;logicalBottom());
&gt; +}

This method look unused to me.

&gt; Source/WebCore/rendering/RenderBox.cpp:1696
&gt; +bool RenderBox::hasMinOrMaxConstraints() const
&gt; +{
&gt; +    return !style()-&gt;maxHeight().isUndefined() || !style()-&gt;minHeight().isZero();
&gt; +}

Unused?

&gt; Source/WebCore/rendering/RenderBox.cpp:1706
&gt; +bool RenderBox::useAspectRatioForWidth(const Length&amp; logicalWidth, const Length&amp; logicalLeft, const Length&amp; logicalRight) const
&gt; +{
&gt; +    return !isWidthDeterminedUsing(logicalWidth, logicalLeft, logicalRight) &amp;&amp; style()-&gt;hasAspectRatio();
&gt; +}
&gt; +
&gt; +bool RenderBox::useAspectRatioForHeight(const Length&amp; logicalHeight, const Length&amp; logicalTop, const Length&amp; logicalBottom) const
&gt; +{
&gt; +    return !isHeightDeterminedUsing(logicalHeight, logicalTop, logicalBottom) &amp;&amp; style()-&gt;hasAspectRatio();
&gt; +}

You can turn this into a single function as well once you merge the helper function. In fact, at that point, you don&apos;t really need the helper function, you can just inline the code into this function.

&gt; Source/WebCore/rendering/RenderBox.cpp:1790
&gt; +    if ((logicalWidthLength.isAuto() &amp;&amp; !style()-&gt;hasAspectRatio()) || hasPerpendicularContainingBlock) {

Shouldn&apos;t this be checking userAspectRatioForWidth?

&gt; Source/WebCore/rendering/RenderBox.cpp:1804
&gt; +    const LayoutUnit bordersPlusPadding = borderAndPaddingLogicalWidth();

Can you just inline this call into line 1818? I don&apos;t think having this extra local variable increases readability.

&gt; Source/WebCore/rendering/RenderBox.cpp:1820
&gt; +    switch (widthType) {
&gt; +    case LogicalWidth:
&gt;          logicalWidth = style()-&gt;logicalWidth();
&gt; -    else if (widthType == MinLogicalWidth)
&gt; +        break;
&gt; +    case MinLogicalWidth:
&gt;          logicalWidth = style()-&gt;logicalMinWidth();
&gt; -    else
&gt; +        break;
&gt; +    case MaxLogicalWidth:
&gt;          logicalWidth = style()-&gt;logicalMaxWidth();
&gt; +        break;
&gt; +    case MinPreferredLogicalWidth:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        logicalWidth =  Length(minPreferredLogicalWidth() - bordersPlusPadding, Fixed);
&gt; +        break;
&gt; +    }

This doesn&apos;t change any logic, right? Typically, cleanup/refactor patches should be done in a separate patch. That way it&apos;s easier to focus on reviewing the logic that actually changed. Also, when a regression is found months later, it&apos;s easier if the patches are smaller.

In this specific case, I&apos;m not sure this is an improvement. I would prefer the code the way it was with just an ASSERT(widthType != MinPreferredLogicalWidth).

&gt; Source/WebCore/rendering/RenderBox.cpp:1826
&gt; +        bool useAspectRatio = style()-&gt;hasAspectRatio();

I would inline this into the if-statement. WebKit generally errs on the side of conciseness with code style.

&gt; Source/WebCore/rendering/RenderBox.cpp:1827
&gt; +        if (useAspectRatio) {

Should this be calling userAspectRatioForWidth?

&gt; Source/WebCore/rendering/RenderBox.cpp:1830
&gt; +            if (logicalHeight()) {
&gt; +                int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);

I don&apos;t think you can rely on this having the right value. It will have the value of the last time you did a layout. I think probably all this code doesn&apos;t belong here, but I&apos;m sure Hyatt has strong opinions on where it does actually belong.

&gt; Source/WebCore/rendering/RenderBox.cpp:2160
&gt; +    } else if (style()-&gt;hasAspectRatio() &amp;&amp; !logicalHeight() &amp;&amp; heightType == LogicalHeight) {
&gt; +        if (logicalWidth()) {
&gt; +            float requiredRatio = style()-&gt;aspectRatioDenominator() / style()-&gt;aspectRatioNumerator();
&gt; +            int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);
&gt; +            logicalHeightValue = heightForAspectRatio;

If this chunk of code lived in computeLogicalHeight, you wouldn&apos;t have to modify computeLogicalHeightUsing at all. You&apos;d end up modifying a lot less code and IMO, the end result would be cleaner. I&apos;m not a huge fan of this function taking the heightType as an argument instead of the actual height when the only case it needs it for is LogicalHeight.

&gt; Source/WebCore/rendering/RenderBox.cpp:2710
&gt; +void RenderBox::computePositionedLogicalWidthUsing(LogicalWidthType widthType, const RenderBoxModelObject* containerBlock, TextDirection containerDirection,

I&apos;m not a huge fan of passing in the widthType instead of the length. But I see why you need it. I expect Hyatt&apos;s comments will clarify what the best way forward is.

&gt; Source/WebCore/rendering/RenderBox.cpp:2887
&gt; +            if (useAspectRatio) {

This could be &quot;useAspectRatio &amp;&amp; widthType == LogicalHeight&quot;. That would make the code inside a bit more readable.

&gt; Source/WebCore/rendering/RenderBox.cpp:2890
&gt; +                if (logicalHeight()) {

Same as above, I&apos;m not sure you can use logicalHeight in this function.

&gt; Source/WebCore/rendering/RenderBox.cpp:2929
&gt; +                float requiredRatio = style()-&gt;aspectRatio();
&gt; +                if (logicalHeight()) {
&gt; +                    int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);
&gt; +                    if (widthType == LogicalWidth)
&gt; +                        logicalWidthValue =  widthForAspectRatio;
&gt; +                } else {
&gt; +                    // Height is not determined so LogicalWidth is the container&apos;s content width.
&gt; +                    // widthType will be LogicalMinWidth or LogicalMaxWidth only if they are specified in which
&gt; +                    // case they have to be respected.
&gt; +                    if (widthType == LogicalWidth) {
&gt; +                        LayoutUnit availableContainerWidth = containerLogicalWidth - (logicalLeftValue + bordersPlusPadding);
&gt; +                        logicalWidthValue = availableContainerWidth;
&gt; +                    }
&gt; +                    
&gt; +                }

Can you make this a helper function? The code is almost identical with teh block above it.

&gt; LayoutTests/css3/aspect-ratio/absolute-ratio-absolute-left-right.html:7
&gt; +&lt;html&gt;
&gt; +  &lt;head&gt;
&gt; +  &lt;/head&gt;
&gt; +  &lt;body&gt;
&gt; +    &lt;div style=&quot;position: absolute; top: 10px; left: 10px; right: 10px; -webkit-aspect-ratio: 16 / 9; background-color: green;&quot;&gt;&lt;/div&gt;
&gt; +  &lt;/body&gt;
&gt; +&lt;/html&gt;

In general, we prefer all new tests to be in standards-mode, so this should start with the html DOCTYPE. Also, you don&apos;t need the html, head or body elements. They&apos;ll get auto generated. So I would just make this test be:
&lt;!DOCTYPE html&gt;
&lt;div style=&quot;position: absolute; top: 10px; left: 10px; right: 10px; -webkit-aspect-ratio: 16 / 9; background-color: green;&quot;&gt;&lt;/div&gt;

Finally, this is a perfect candidate for being a reftest. Just create absolute-ratio-absolute-left-right-expected.html with an absolutely positioned div that&apos;s rendered the same size as this one, but without using aspect-ratio.

Obviously, ditto for all the tests below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510898</commentid>
    <comment_count>3</comment_count>
      <attachid>116873</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 10:34:34 -0800</bug_when>
    <thetext>Comment on attachment 116873
Patch

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

Replying to some of your comments for my own reference. I will wait for hyatt&apos;s response before refreshing this patch!

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:1208
&gt;&gt; +    setLogicalHeight(0);
&gt; 
&gt; Did you need to move this code?

Yes, I need to reset the height to 0 before computing width because I make a decision in width computation based on whether height has been set yet or not. Maybe there&apos;s a better way to do this though.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1675
&gt;&gt; +}
&gt; 
&gt; This method look unused to me.

Looks like you&apos;re right, I&apos;ll remove.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1691
&gt;&gt; +}
&gt; 
&gt; This method look unused to me.

Looks like you&apos;re right (I iterated over this code a lot locally). I will remove it.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1696
&gt;&gt; +}
&gt; 
&gt; Unused?

Yup, removing.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1790

&gt; 
&gt; Shouldn&apos;t this be checking userAspectRatioForWidth?

I believe you&apos;re right, will fix.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1804
&gt;&gt; +    const LayoutUnit bordersPlusPadding = borderAndPaddingLogicalWidth();
&gt; 
&gt; Can you just inline this call into line 1818? I don&apos;t think having this extra local variable increases readability.

Will do.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1820
&gt;&gt; +    }
&gt; 
&gt; This doesn&apos;t change any logic, right? Typically, cleanup/refactor patches should be done in a separate patch. That way it&apos;s easier to focus on reviewing the logic that actually changed. Also, when a regression is found months later, it&apos;s easier if the patches are smaller.
&gt; 
&gt; In this specific case, I&apos;m not sure this is an improvement. I would prefer the code the way it was with just an ASSERT(widthType != MinPreferredLogicalWidth).

So I&apos;d like to put the aspect ratio code in computeLogical* and computePositionedLogical*, but I&apos;d only like to use it for width/heightType == Logical*. So I did a bit of refactoring, for these methods.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1830
&gt;&gt; +                int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);
&gt; 
&gt; I don&apos;t think you can rely on this having the right value. It will have the value of the last time you did a layout. I think probably all this code doesn&apos;t belong here, but I&apos;m sure Hyatt has strong opinions on where it does actually belong.

This is why I moved setLogicalHeight(0). I reset height initially! If logicalHeight() != 0 then we&apos;ve already called computeLogicalHeight!

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2160
&gt;&gt; +            logicalHeightValue = heightForAspectRatio;
&gt; 
&gt; If this chunk of code lived in computeLogicalHeight, you wouldn&apos;t have to modify computeLogicalHeightUsing at all. You&apos;d end up modifying a lot less code and IMO, the end result would be cleaner. I&apos;m not a huge fan of this function taking the heightType as an argument instead of the actual height when the only case it needs it for is LogicalHeight.

You&apos;re right, I could probably move it out.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2887
&gt;&gt; +            if (useAspectRatio) {
&gt; 
&gt; This could be &quot;useAspectRatio &amp;&amp; widthType == LogicalHeight&quot;. That would make the code inside a bit more readable.

I will make this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510997</commentid>
    <comment_count>4</comment_count>
      <attachid>117021</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 12:26:29 -0800</bug_when>
    <thetext>Created attachment 117021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511010</commentid>
    <comment_count>5</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 12:36:46 -0800</bug_when>
    <thetext>I&apos;ve only removed unused code at the moment. I haven&apos;t made the rest of the changes Ojan suggested just yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511022</commentid>
    <comment_count>6</comment_count>
      <attachid>117021</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-11-29 12:47:32 -0800</bug_when>
    <thetext>Comment on attachment 117021
Patch

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

Some high level comments.

&gt; Source/WebCore/rendering/RenderBlock.cpp:1348
&gt; +        relayoutChildren = true;

This whole code should be under the if (style()-&gt;hasAspectRatio()).

&gt; Source/WebCore/rendering/RenderBox.cpp:1802
&gt; +        ASSERT_NOT_REACHED();

Do we really care about this ASSERT. Even though it documents that the code cannot be reached currently, it does not seem to serve any purpose other than that. Is it really bad to get to this branch? It also creates an artificial discrepancy with the other computeLogicalWidthUsing. If it can be removed then you may consider factoring this code to be shared with the other function (same comment for heightType).

&gt; Source/WebCore/rendering/RenderBox.cpp:1815
&gt; +                int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);

Should be LayoutUnit as logicalWidthResult is. Use one of the rounding method from LayoutUnit instead of a static_cast.

&gt; Source/WebCore/rendering/RenderBox.cpp:2144
&gt; +            int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);

LayoutUnit.

&gt; Source/WebCore/rendering/RenderBox.cpp:2748
&gt; +                int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);

LayoutUnit.

&gt; Source/WebCore/rendering/RenderBox.cpp:2876
&gt; +                    int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);

LayoutUnit.

&gt; Source/WebCore/rendering/RenderBox.cpp:2902
&gt; +                    int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);

LayoutUnit.

&gt; Source/WebCore/rendering/RenderBox.cpp:3147
&gt; +                int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);

LayoutUnit.

&gt; Source/WebCore/rendering/RenderBox.cpp:3226
&gt; +                    int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);

LayoutUnit.

&gt; Source/WebCore/rendering/RenderBox.cpp:3247
&gt; +                    int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);

LayoutUnit.

&gt; LayoutTests/ChangeLog:28
&gt; +        * platform/chromium-linux/css3/aspect-ratio/aspect-ratio-stretch-to-fill-expected.txt: Added.

Please add some comments on the failing results here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511075</commentid>
    <comment_count>7</comment_count>
      <attachid>117037</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 13:36:58 -0800</bug_when>
    <thetext>Created attachment 117037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511077</commentid>
    <comment_count>8</comment_count>
      <attachid>117021</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 13:37:53 -0800</bug_when>
    <thetext>Comment on attachment 117021
Patch

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

Thanks for the input Julien!

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:1348
&gt;&gt; +        relayoutChildren = true;
&gt; 
&gt; This whole code should be under the if (style()-&gt;hasAspectRatio()).

Good catch! Thanks!

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1802
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; Do we really care about this ASSERT. Even though it documents that the code cannot be reached currently, it does not seem to serve any purpose other than that. Is it really bad to get to this branch? It also creates an artificial discrepancy with the other computeLogicalWidthUsing. If it can be removed then you may consider factoring this code to be shared with the other function (same comment for heightType).

It can be removed but it shouldn&apos;t be reached currently. Removing it.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1815
&gt;&gt; +                int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);
&gt; 
&gt; Should be LayoutUnit as logicalWidthResult is. Use one of the rounding method from LayoutUnit instead of a static_cast.

Done.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2144
&gt;&gt; +            int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);
&gt; 
&gt; LayoutUnit.

Done.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2748
&gt;&gt; +                int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);
&gt; 
&gt; LayoutUnit.

Done.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2876
&gt;&gt; +                    int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);
&gt; 
&gt; LayoutUnit.

Done.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2902
&gt;&gt; +                    int widthForAspectRatio = static_cast&lt;int&gt;(logicalHeight() * requiredRatio);
&gt; 
&gt; LayoutUnit.

Done.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:3147
&gt;&gt; +                int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);
&gt; 
&gt; LayoutUnit.

Done.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:3226
&gt;&gt; +                    int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);
&gt; 
&gt; LayoutUnit.

Done

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:3247
&gt;&gt; +                    int heightForAspectRatio = static_cast&lt;int&gt;(logicalWidth() * requiredRatio);
&gt; 
&gt; LayoutUnit.

Done.

&gt;&gt; LayoutTests/ChangeLog:28
&gt;&gt; +        * platform/chromium-linux/css3/aspect-ratio/aspect-ratio-stretch-to-fill-expected.txt: Added.
&gt; 
&gt; Please add some comments on the failing results here.

Failing? They&apos;re not failing they&apos;re expected. These layout tests are temporary. I will refresh them as I iterate over the code here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511345</commentid>
    <comment_count>9</comment_count>
      <attachid>117111</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 20:51:29 -0800</bug_when>
    <thetext>Created attachment 117111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511347</commentid>
    <comment_count>10</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 20:53:27 -0800</bug_when>
    <thetext>A little bit more clean-up and tweaking coming soon to a theater near you! More tests coming and further refactoring. Will do that tomorrow, most likely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512404</commentid>
    <comment_count>11</comment_count>
      <attachid>117111</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 20:51:34 -0800</bug_when>
    <thetext>Comment on attachment 117111
Patch

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

New failing tests:
css3/aspect-ratio/aspect-ratio-auto-height.html
css3/aspect-ratio/aspect-ratio-inherit.html
css3/aspect-ratio/absolute-ratio-absolute-left-right.html
css3/aspect-ratio/aspect-ratio-absolute-width.html
css3/aspect-ratio/aspect-ratio-absolute-height.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716558</commentid>
    <comment_count>12</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-24 02:47:34 -0800</bug_when>
    <thetext>The prefixed aspect-ratio was removed, closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116873</attachid>
            <date>2011-11-28 19:46:40 -0800</date>
            <delta_ts>2011-11-29 12:26:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73277-20111128224638.patch</filename>
            <type>text/plain</type>
            <size>47714</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhlN2Y5MGJlZDUyMjFj
NGQ5MTEyOTI2MzEyMzEzNmJiYmU0MjMyNy4uNjM4YzdiMWJjOTQ0YzMwYjU0YjMzNDUwZTQ3Mzc5
ODEyMmYwYWQ3NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDExLTExLTI4ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIC13ZWJraXQtYXNwZWN0
LXJhdGlvIExheW91dCBJbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMyNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgLXdlYmtpdC1hc3BlY3QtcmF0aW8KKworICAg
ICAgICBBc3BlY3QgcmF0aW8gY29tcHV0YXRpb25zIGhhcHBlbiBvbiB0aGUgTG9naWNhbFdpZHRo
L0xvZ2ljYWxIZWlnaHQgcGhhc2Ugb2YgdGhlCisgICAgICAgIGRpbWVuc2lvbiBjYWxjdWxhdGlv
bnMuIG1heC9taW4gcmVtYWluIGxhcmdlbHkgdW5hZmZlY3RlZC4gCisKKyAgICAgICAgY29tcHV0
ZUxvZ2ljYWwqIGFuZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwqIGhhdmUgYmVlbiB1cGRhdGVk
IHRvIHJlY29nbml6ZSB3aGF0CisgICAgICAgIHBoYXNlIHRoZSB3aWR0aC9oZWlnaHQgY2FsY3Vs
YXRpb24gaXMgaW4sIHNvIHRoYXQgaXQgY2FuIHByb2Nlc3MgYXNwZWN0IHJhdGlvIG9ubHkgYXQg
dGhlCisgICAgICAgIGFwcHJvcHJpYXRlIHBoYXNlLgorICAgICAgICAKKyAgICAgICAgTW9yZSB0
ZXN0cyBhbmQgbG90cyBvZiB0d2Vha2luZyBpcyBjb21pbmcuIFRoaXMgaXMgYmVpbmcgdXBsb2Fk
ZWQgZm9yIGVhcmx5IHJldmlldy4KKworICAgICAgICBUZXN0czogY3NzMy9hc3BlY3QtcmF0aW8v
YWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC5odG1sCisgICAgICAgICAgICAgICBj
c3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC5o
dG1sCisgICAgICAgICAgICAgICBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYXV0by1o
ZWlnaHQuaHRtbAorICAgICAgICAgICAgICAgY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlv
LWZsb2F0Lmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRp
by1pbmhlcml0Lmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1y
YXRpby1zdHJldGNoLXRvLWZpbGwuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayk6Cisg
ICAgICAgIEFzcGVjdCByYXRpIGNvbXB1dGF0aW9uIGhhcHBlbnMgaW4gdGhyZWUgc3RhZ2VzLgor
ICAgICAgICAxLiBDb21wdXRlIHdpZHRoIHRvIGJlIGFzIGxhcmdlIGFzIHBvc3NpYmxlCisgICAg
ICAgIDIuIENvbXB1dGUgaGVpZ2h0IHRvIHByZXNlcnZlIGFzcGVjdCByYXRpbyB3aGlsZSByZXNw
ZWN0aW5nIG1heC1oZWlnaHQvbWluLWhlaWdodAorICAgICAgICAzLiBSZWNvbXB1dGUgd2lkdGgg
aWYgYXNwZWN0LXJhdGlvIGlzIG5vdCBwcmVzZXJ2ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzV2lkdGhEZXRlcm1pbmVk
VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojppc1dpZHRoRGV0ZXJtaW5lZCk6
CisgICAgICAgIERldGVybWluZXMgd2hldGhlciB3aWR0aCBpcyBmdWxseSBzcGVjaWZpZWQgb3Ig
bm90CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzSGVpZ2h0RGV0ZXJtaW5lZFVzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aXNIZWlnaHREZXRlcm1pbmVkKToKKyAg
ICAgICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHdpZHRoIGlzIGZ1bGx5IHNwZWNpZmllZCBvciBub3QK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzTWluT3JNYXhDb25zdHJhaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnVzZUFzcGVjdFJhdGlvRm9yV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1c2VBc3BlY3RSYXRpb0ZvckhlaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhVc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lk
dGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKworICAgICAgICBSZWxheW91dCBpZiBhc3Bl
Y3QtcmF0aW8gaGFzIGNoYW5nZWQuCiAyMDExLTExLTI4ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1v
dGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Iga25vd2luZyB3aGVuIGEg
VHJlZUVsZW1lbnQgaXMgYWRkZWQgb3IgY2hhbmdlZCBhbnl3aGVyZSBpbiBhIFRyZWVPdXRsaW5l
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZTIxM2FhNzNl
ODJmNzY0MDEyODU3NzFmYjNjNGFmOWExYTc3MjRlMS4uNDAwNGQwNzljMGM5YzcxZjcwOGViMGIz
Mzk5ZDcyM2MwNmJmYWU2MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0xMjAzLDYgKzEyMDMsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaAogCiAgICAg
TGF5b3V0VW5pdCBvbGRXaWR0aCA9IGxvZ2ljYWxXaWR0aCgpOwogICAgIExheW91dFVuaXQgb2xk
Q29sdW1uV2lkdGggPSBkZXNpcmVkQ29sdW1uV2lkdGgoKTsKKyAgCisgICAgTGF5b3V0VW5pdCBw
cmV2aW91c0hlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKTsKKyAgICBzZXRMb2dpY2FsSGVpZ2h0KDAp
OwogCiAgICAgY29tcHV0ZUxvZ2ljYWxXaWR0aCgpOwogICAgIGNhbGNDb2x1bW5XaWR0aCgpOwpA
QCAtMTIxOSw4ICsxMjIyLDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKICAgICAgICAgZmxv
YXRzTGF5b3V0UGFzcyA9IFBvc2l0aW9uZWRGbG9hdExheW91dFBhc3M7CiAgICAgY2xlYXJGbG9h
dHMoZmxvYXRzTGF5b3V0UGFzcyk7CiAKLSAgICBMYXlvdXRVbml0IHByZXZpb3VzSGVpZ2h0ID0g
bG9naWNhbEhlaWdodCgpOwotICAgIHNldExvZ2ljYWxIZWlnaHQoMCk7CiAgICAgYm9vbCBoYXNT
cGVjaWZpZWRQYWdlTG9naWNhbEhlaWdodCA9IGZhbHNlOwogICAgIGJvb2wgcGFnZUxvZ2ljYWxI
ZWlnaHRDaGFuZ2VkID0gZmFsc2U7CiAgICAgQ29sdW1uSW5mbyogY29sSW5mbyA9IGNvbHVtbklu
Zm8oKTsKQEAgLTEzMjIsNiArMTMyMyw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdoCiAgICAg
TGF5b3V0VW5pdCBvbGRDbGllbnRBZnRlckVkZ2UgPSBjbGllbnRMb2dpY2FsQm90dG9tKCk7CiAg
ICAgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoKTsKICAgICBMYXlvdXRVbml0IG5ld0hlaWdodCA9IGxv
Z2ljYWxIZWlnaHQoKTsKKyAgICAgIAorCiAgICAgaWYgKG9sZEhlaWdodCAhPSBuZXdIZWlnaHQp
IHsKICAgICAgICAgaWYgKG9sZEhlaWdodCA+IG5ld0hlaWdodCAmJiBtYXhGbG9hdExvZ2ljYWxC
b3R0b20gPiBuZXdIZWlnaHQgJiYgIWNoaWxkcmVuSW5saW5lKCkpIHsKICAgICAgICAgICAgIC8v
IE9uZSBvZiBvdXIgY2hpbGRyZW4ncyBmbG9hdHMgbWF5IGhhdmUgYmVjb21lIGFuIG92ZXJoYW5n
aW5nIGZsb2F0IGZvciB1cy4gV2UgbmVlZCB0byBsb29rIGZvciBpdC4KQEAgLTEzMzgsNiArMTM0
MSwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaAogICAgIGlmIChwcmV2aW91c0hlaWdodCAh
PSBuZXdIZWlnaHQpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwogCisgICAgLy8g
RklYTUU6IE9ubHkgcmVjb21wdXRlIGxvZ2ljYWwgd2lkdGggaWYgYXNwZWN0IHJhdGlvIGlzIG5v
dCBzYXRpc2ZpZWQKKyAgICBvbGRXaWR0aCA9IGxvZ2ljYWxXaWR0aCgpOworICAgIGlmIChzdHls
ZSgpLT5oYXNBc3BlY3RSYXRpbygpKQorICAgICAgICBjb21wdXRlTG9naWNhbFdpZHRoKCk7Cisg
ICAgaWYgKG9sZFdpZHRoICE9IGxvZ2ljYWxXaWR0aCgpKQorICAgICAgICByZWxheW91dENoaWxk
cmVuID0gdHJ1ZTsKKwogICAgIGJvb2wgbmVlZEFub3RoZXJMYXlvdXRQYXNzID0gbGF5b3V0UG9z
aXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc1Jvb3QoKSk7CiAKICAgICBpZiAo
aW5SZW5kZXJGbG93VGhyZWFkKCkpCkBAIC0xOTY5LDcgKzE5NzksNiBAQCB2b2lkIFJlbmRlckJs
b2NrOjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCYgbWF4RmxvYQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCiAgICAgTGF5b3V0
VW5pdCBiZWZvcmVFZGdlID0gYm9yZGVyQmVmb3JlKCkgKyBwYWRkaW5nQmVmb3JlKCk7CiAgICAg
TGF5b3V0VW5pdCBhZnRlckVkZ2UgPSBib3JkZXJBZnRlcigpICsgcGFkZGluZ0FmdGVyKCkgKyBz
Y3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTE5OTgsNyArMjAwNyw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0JiBtYXhGbG9hCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBsYXlvdXQgY2hpbGRyZW4g
aWYgdGhleSBuZWVkIGl0LgogICAgICAgICAvLyBGSVhNRTogVGVjaG5pY2FsbHkgcGVyY2VudGFn
ZSBoZWlnaHQgb2JqZWN0cyBvbmx5IG5lZWQgYSByZWxheW91dCBpZiB0aGVpciBwZXJjZW50YWdl
IGlzbid0IGdvaW5nIHRvIGJlIHR1cm5lZCBpbnRvCiAgICAgICAgIC8vIGFuIGF1dG8gdmFsdWUu
ICBBZGQgYSBtZXRob2QgdG8gZGV0ZXJtaW5lIHRoaXMsIHNvIHRoYXQgd2UgY2FuIGF2b2lkIHRo
ZSByZWxheW91dC4KLSAgICAgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4gfHwgKChjaGlsZC0+c3R5
bGUoKS0+bG9naWNhbEhlaWdodCgpLmlzUGVyY2VudCgpIHx8IGNoaWxkLT5zdHlsZSgpLT5sb2dp
Y2FsTWluSGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgY2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxNYXhI
ZWlnaHQoKS5pc1BlcmNlbnQoKSkgJiYgIWlzUmVuZGVyVmlldygpKSkKKyAgICAgICAgaWYgKHJl
bGF5b3V0Q2hpbGRyZW4gfHwgKChjaGlsZC0+c3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSB8fCBj
aGlsZC0+c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLmlzUGVyY2VudCgpIHx8IGNoaWxkLT5zdHls
ZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgY2hpbGQtPnN0eWxlKCktPmxv
Z2ljYWxNYXhIZWlnaHQoKS5pc1BlcmNlbnQoKSkgJiYgIWlzUmVuZGVyVmlldygpKSkKICAgICAg
ICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKIAogICAgICAg
ICAvLyBJZiByZWxheW91dENoaWxkcmVuIGlzIHNldCBhbmQgdGhlIGNoaWxkIGhhcyBwZXJjZW50
YWdlIHBhZGRpbmcgb3IgYW4gZW1iZWRkZWQgY29udGVudCBib3gsIHdlIGFsc28gbmVlZCB0byBp
bnZhbGlkYXRlIHRoZSBjaGlsZHMgcHJlZiB3aWR0aHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCmluZGV4IDUzMWFjYmMxNWE3MjI4ZjVlZmE3YTk2YWJkNWFhMjI2OGZjMGNk
YTcuLjdlY2M2NjViNWI2ZjRjMjUzZGU3YjYyYzk3OTgyMGE3YjMwNDNhYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNjU4LDYgKzE2NTgsNTMgQEAgdm9pZCBS
ZW5kZXJCb3g6OnJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpCiAgICAgfQogfQogCitib29sIFJlbmRlckJveDo6aXNXaWR0aERldGVybWluZWRVc2luZyhj
b25zdCBMZW5ndGgmIGxvZ2ljYWxXaWR0aCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCwgY29u
c3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQpIGNvbnN0Cit7CisgICAgYm9vbCB3aWR0aElzQXV0byA9
IGxvZ2ljYWxXaWR0aC5pc0F1dG8oKTsKKyAgICBib29sIGxvZ2ljYWxNaW5XaWR0aElzU3BlY2lm
aWVkID0gIXN0eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpLmlzQXV0bygpICYmIHN0eWxlKCktPmxv
Z2ljYWxNaW5XaWR0aCgpLmlzUG9zaXRpdmUoKTsKKyAgICBib29sIGxlZnRJc0F1dG8gPSBsb2dp
Y2FsTGVmdC5pc0F1dG8oKTsKKyAgICBib29sIHJpZ2h0SXNBdXRvID0gbG9naWNhbFJpZ2h0Lmlz
QXV0bygpOworICAgIGJvb2wgaGFzQXNwZWN0UmF0aW8gPSBzdHlsZSgpLT5oYXNBc3BlY3RSYXRp
bygpOworICAgIC8vIFdpZHRoIGlzIGRldGVybWluZWQgaWYgdGhlIHdpZHRoIGlzIHNwZWNpZmll
ZCBvciBsZWZ0IGFuZCByaWdodCBhcmUgc3BlY2lmaWVkIG9uIGEgcG9zaXRpb25lZCBib3guCisg
ICAgcmV0dXJuICF3aWR0aElzQXV0byB8fCBsb2dpY2FsTWluV2lkdGhJc1NwZWNpZmllZCB8fCAo
IWxlZnRJc0F1dG8gJiYgd2lkdGhJc0F1dG8gJiYgIXJpZ2h0SXNBdXRvICYmICFoYXNBc3BlY3RS
YXRpbyAmJiBpc1Bvc2l0aW9uZWQoKSk7Cit9CisKK2Jvb2wgUmVuZGVyQm94Ojppc1dpZHRoRGV0
ZXJtaW5lZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzV2lkdGhEZXRlcm1pbmVkVXNpbmcoc3R5
bGUoKS0+bG9naWNhbFdpZHRoKCksIHN0eWxlKCktPmxvZ2ljYWxMZWZ0KCksIHN0eWxlKCktPmxv
Z2ljYWxSaWdodCgpKTsKK30KKworYm9vbCBSZW5kZXJCb3g6OmlzSGVpZ2h0RGV0ZXJtaW5lZFVz
aW5nKGNvbnN0IExlbmd0aCYgbG9naWNhbEhlaWdodCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsVG9w
LCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20pIGNvbnN0Cit7CisgICAgYm9vbCBoZWlnaHRJ
c0F1dG8gPSBsb2dpY2FsSGVpZ2h0LmlzQXV0bygpOworICAgIGJvb2wgbG9naWNhbE1pbkhlaWdo
dElzU3BlY2lmaWVkID0gIXN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKS5pc0F1dG8oKSAmJiBz
dHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkuaXNQb3NpdGl2ZSgpOworICAgIGJvb2wgdG9wSXNB
dXRvID0gbG9naWNhbFRvcC5pc0F1dG8oKTsKKyAgICBib29sIGJvdHRvbUlzQXV0byA9IGxvZ2lj
YWxCb3R0b20uaXNBdXRvKCk7CisgICAgYm9vbCBoYXNBc3BlY3RSYXRpbyA9IHN0eWxlKCktPmhh
c0FzcGVjdFJhdGlvKCk7CisgICAgLy8gSGVpZ2h0IGlzIGRldGVybWluZWQgaWYgaGVpZ2h0IGlz
IHNwZWNpZmljZWQgb3IgdG9wIGFuZCBib3R0b20gYXJlIHNwZWNpZmllZCBvbiBhIHBvc2l0aW9u
ZWQgYm94LgorICAgIHJldHVybiAhaGVpZ2h0SXNBdXRvIHx8IGxvZ2ljYWxNaW5IZWlnaHRJc1Nw
ZWNpZmllZCB8fCAoIXRvcElzQXV0byAmJiBoZWlnaHRJc0F1dG8gJiYgIWJvdHRvbUlzQXV0byAm
JiAhaGFzQXNwZWN0UmF0aW8gJiYgaXNQb3NpdGlvbmVkKCkpOworfQorCitib29sIFJlbmRlckJv
eDo6aXNIZWlnaHREZXRlcm1pbmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIZWlnaHREZXRl
cm1pbmVkVXNpbmcoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLCBzdHlsZSgpLT5sb2dpY2FsVG9w
KCksIHN0eWxlKCktPmxvZ2ljYWxCb3R0b20oKSk7Cit9CisKK2Jvb2wgUmVuZGVyQm94OjpoYXNN
aW5Pck1heENvbnN0cmFpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXN0eWxlKCktPm1heEhl
aWdodCgpLmlzVW5kZWZpbmVkKCkgfHwgIXN0eWxlKCktPm1pbkhlaWdodCgpLmlzWmVybygpOwor
fQorCitib29sIFJlbmRlckJveDo6dXNlQXNwZWN0UmF0aW9Gb3JXaWR0aChjb25zdCBMZW5ndGgm
IGxvZ2ljYWxXaWR0aCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCwgY29uc3QgTGVuZ3RoJiBs
b2dpY2FsUmlnaHQpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc1dpZHRoRGV0ZXJtaW5lZFVzaW5n
KGxvZ2ljYWxXaWR0aCwgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCkgJiYgc3R5bGUoKS0+aGFz
QXNwZWN0UmF0aW8oKTsKK30KKworYm9vbCBSZW5kZXJCb3g6OnVzZUFzcGVjdFJhdGlvRm9ySGVp
Z2h0KGNvbnN0IExlbmd0aCYgbG9naWNhbEhlaWdodCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsVG9w
LCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20pIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hl
aWdodERldGVybWluZWRVc2luZyhsb2dpY2FsSGVpZ2h0LCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90
dG9tKSAmJiBzdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpOworfQorCiB2b2lkIFJlbmRlckJveDo6
Y29tcHV0ZUxvZ2ljYWxXaWR0aCgpCiB7CiAgICAgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9u
KCk7CkBAIC0xNzQwLDcgKzE3ODcsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZgogICAgIH0K
IAogICAgIC8vIE1hcmdpbiBjYWxjdWxhdGlvbnMuCi0gICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0
aC5pc0F1dG8oKSB8fCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7CisgICAgaWYg
KChsb2dpY2FsV2lkdGhMZW5ndGguaXNBdXRvKCkgJiYgIXN0eWxlKCktPmhhc0FzcGVjdFJhdGlv
KCkpIHx8IGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2spIHsKICAgICAgICAgc2V0TWFy
Z2luU3RhcnQoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUoY29udGFpbmVyTG9n
aWNhbFdpZHRoKSk7CiAgICAgICAgIHNldE1hcmdpbkVuZChzdHlsZSgpLT5tYXJnaW5FbmQoKS5j
YWxjTWluVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAgICAgfSBlbHNlCkBAIC0xNzU0
LDE4ICsxODAxLDM3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdp
b24oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2ZmCiBMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aFVzaW5nKExvZ2ljYWxXaWR0aFR5cGUgd2lkdGhUeXBl
LCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkKIHsKICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aFJlc3VsdCA9IGxvZ2ljYWxXaWR0aCgpOworICAgIGNvbnN0IExheW91dFVuaXQg
Ym9yZGVyc1BsdXNQYWRkaW5nID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOwogICAg
IExlbmd0aCBsb2dpY2FsV2lkdGg7Ci0gICAgaWYgKHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgp
CisgICAgc3dpdGNoICh3aWR0aFR5cGUpIHsKKyAgICBjYXNlIExvZ2ljYWxXaWR0aDoKICAgICAg
ICAgbG9naWNhbFdpZHRoID0gc3R5bGUoKS0+bG9naWNhbFdpZHRoKCk7Ci0gICAgZWxzZSBpZiAo
d2lkdGhUeXBlID09IE1pbkxvZ2ljYWxXaWR0aCkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBN
aW5Mb2dpY2FsV2lkdGg6CiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlKCktPmxvZ2ljYWxN
aW5XaWR0aCgpOwotICAgIGVsc2UKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYXhMb2dpY2Fs
V2lkdGg6CiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pblByZWZlcnJlZExvZ2ljYWxXaWR0aDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9ICBMZW5n
dGgobWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcsIEZpeGVk
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgaWYgKGxvZ2ljYWxXaWR0aC5pc0ludHJp
bnNpY09yQXV0bygpKSB7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBzdHlsZSgp
LT5tYXJnaW5TdGFydCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAg
ICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IHN0eWxlKCktPm1hcmdpbkVuZCgpLmNhbGNNaW5W
YWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQg
PSBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5TdGFydCAtIG1hcmdpbkVuZDsKKyAgICAg
ICAgYm9vbCB1c2VBc3BlY3RSYXRpbyA9IHN0eWxlKCktPmhhc0FzcGVjdFJhdGlvKCk7CisgICAg
ICAgIGlmICh1c2VBc3BlY3RSYXRpbykgeworICAgICAgICAgICAgZmxvYXQgcmVxdWlyZWRSYXRp
byA9IHN0eWxlKCktPmFzcGVjdFJhdGlvKCk7CisgICAgICAgICAgICBpZiAobG9naWNhbEhlaWdo
dCgpKSB7CisgICAgICAgICAgICAgICAgaW50IHdpZHRoRm9yQXNwZWN0UmF0aW8gPSBzdGF0aWNf
Y2FzdDxpbnQ+KGxvZ2ljYWxIZWlnaHQoKSAqIHJlcXVpcmVkUmF0aW8pOworICAgICAgICAgICAg
ICAgIGlmICh3aWR0aFR5cGUgPT0gTG9naWNhbFdpZHRoKQorICAgICAgICAgICAgICAgICAgICBs
b2dpY2FsV2lkdGhSZXN1bHQgPSBtaW4od2lkdGhGb3JBc3BlY3RSYXRpbywgbG9naWNhbFdpZHRo
UmVzdWx0KTsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KIAogICAgICAgICBpZiAoc2l6ZXNU
b0ludHJpbnNpY0xvZ2ljYWxXaWR0aCh3aWR0aFR5cGUpKSB7CiAgICAgICAgICAgICBsb2dpY2Fs
V2lkdGhSZXN1bHQgPSBtYXgobG9naWNhbFdpZHRoUmVzdWx0LCBtaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoKSk7CkBAIC0yMDA5LDEyICsyMDc1LDEyIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbEhlaWdodCgpCiAKICAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQ7CiAgICAg
ICAgIGlmIChjaGVja01pbk1heEhlaWdodCkgewotICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0g
Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOworICAg
ICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhMb2dpY2Fs
SGVpZ2h0KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgPCAwIG9yIHJvdWdobHlFcXVhbHMg
d2hlbiB3ZSBtb3ZlIHRvIGZsb2F0LCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2MTQ4CiAgICAgICAgICAgICBpZiAoaGVpZ2h0UmVzdWx0ID09IC0xKQogICAg
ICAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAg
IExheW91dFVuaXQgbWluSCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9n
aWNhbE1pbkhlaWdodCgpKTsgLy8gTGVhdmUgYXMgLTEgaWYgdW5zZXQuCi0gICAgICAgICAgICBM
YXlvdXRVbml0IG1heEggPSBzdHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQo
KSA/IGhlaWdodFJlc3VsdCA6IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9n
aWNhbE1heEhlaWdodCgpKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbWluSCA9IGNvbXB1dGVM
b2dpY2FsSGVpZ2h0VXNpbmcoTWluTG9naWNhbEhlaWdodCk7IC8vIExlYXZlIGFzIC0xIGlmIHVu
c2V0LgorICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXhIID0gc3R5bGUoKS0+bG9naWNhbE1heEhl
aWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoZWlnaHRSZXN1bHQgOiBjb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKE1heExvZ2ljYWxIZWlnaHQpOwogICAgICAgICAgICAgaWYgKG1heEggPT0gLTEpCiAg
ICAgICAgICAgICAgICAgbWF4SCA9IGhlaWdodFJlc3VsdDsKICAgICAgICAgICAgIGhlaWdodFJl
c3VsdCA9IG1pbihtYXhILCBoZWlnaHRSZXN1bHQpOwpAQCAtMjA2MSwyMSArMjEyNyw0MCBAQCB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogICAgIH0KIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBo
KQorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTG9naWNh
bEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkKIHsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQg
PSAtMTsKKyAgICBMZW5ndGggaDsKKyAgICBzd2l0Y2ggKGhlaWdodFR5cGUpIHsKKyAgICBjYXNl
IExvZ2ljYWxIZWlnaHQ6CisgICAgICAgIGggPSBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTWluTG9naWNhbEhlaWdodDoKKyAgICAgICAgaCA9IHN0
eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYXhM
b2dpY2FsSGVpZ2h0OgorICAgICAgICBoID0gc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRWYWx1
ZSA9IC0xOwogICAgIGlmICghaC5pc0F1dG8oKSkgewogICAgICAgICBpZiAoaC5pc0ZpeGVkKCkp
Ci0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ID0gaC52YWx1ZSgpOworICAgICAgICAgICAgbG9n
aWNhbEhlaWdodFZhbHVlID0gaC52YWx1ZSgpOwogICAgICAgICBlbHNlIGlmIChoLmlzUGVyY2Vu
dCgpKQotICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVQZXJjZW50YWdlTG9naWNh
bEhlaWdodChoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVQZXJj
ZW50YWdlTG9naWNhbEhlaWdodChoKTsKICAgICAgICAgLy8gRklYTUU6IFVzZSA8IDAgb3Igcm91
Z2hseUVxdWFscyB3aGVuIHdlIG1vdmUgdG8gZmxvYXQsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYxNDgKLSAgICAgICAgaWYgKGxvZ2ljYWxIZWlnaHQgIT0g
LTEpIHsKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQm9yZGVyQm94TG9naWNh
bEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0
OworICAgICAgICBpZiAobG9naWNhbEhlaWdodFZhbHVlICE9IC0xKSB7CisgICAgICAgICAgICBs
b2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlQm9yZGVyQm94TG9naWNhbEhlaWdodChsb2dpY2Fs
SGVpZ2h0VmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHRWYWx1ZTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAoc3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSAmJiAhbG9n
aWNhbEhlaWdodCgpICYmIGhlaWdodFR5cGUgPT0gTG9naWNhbEhlaWdodCkgeworICAgICAgICBp
ZiAobG9naWNhbFdpZHRoKCkpIHsKKyAgICAgICAgICAgIGZsb2F0IHJlcXVpcmVkUmF0aW8gPSBz
dHlsZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkgLyBzdHlsZSgpLT5hc3BlY3RSYXRpb051
bWVyYXRvcigpOworICAgICAgICAgICAgaW50IGhlaWdodEZvckFzcGVjdFJhdGlvID0gc3RhdGlj
X2Nhc3Q8aW50Pihsb2dpY2FsV2lkdGgoKSAqIHJlcXVpcmVkUmF0aW8pOworICAgICAgICAgICAg
bG9naWNhbEhlaWdodFZhbHVlID0gaGVpZ2h0Rm9yQXNwZWN0UmF0aW87CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQ7CisgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHRW
YWx1ZTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNh
bEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCkKQEAgLTI1MzUsMTAgKzI2MjAsMTEgQEAgdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKFJlbmRlclJlZ2lvbiog
cmVnaW9uLCBMYXlvdXRVbml0IG8KICAgICAvLyBDYWxjdWxhdGUgY29uc3RyYWludCBlcXVhdGlv
biB2YWx1ZXMgZm9yICd3aWR0aCcgY2FzZS4KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aFJl
c3VsdDsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0UmVzdWx0OwotICAgIGNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbFdpZHRoKCksIGNvbnRhaW5l
ckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGhVc2luZyhMb2dpY2FsV2lkdGgsIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJMb2dp
Y2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdp
bkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQsIG1hcmdpbkxvZ2ljYWxMZWZ0QWxp
YXMsIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzLCBsb2dpY2FsTGVmdFJlc3VsdCk7CisgICAgCiAg
ICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0aFJlc3VsdCk7CiAgICAgc2V0TG9naWNhbExl
ZnQobG9naWNhbExlZnRSZXN1bHQpOwogCkBAIC0yNTQ5LDExICsyNjM1LDEyIEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lv
biwgTGF5b3V0VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2luTG9naWNhbFJpZ2h0
OwogICAgICAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCks
IGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWF4TG9naWNhbFdpZHRoLCBjb250YWluZXJCbG9jaywg
Y29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBs
b2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdp
ZHRoLCBtYXhNYXJnaW5Mb2dpY2FsTGVmdCwgbWF4TWFyZ2luTG9naWNhbFJpZ2h0LCBtYXhMb2dp
Y2FsTGVmdFBvcyk7CiAKKwogICAgICAgICBpZiAobG9naWNhbFdpZHRoKCkgPiBtYXhMb2dpY2Fs
V2lkdGgpIHsKICAgICAgICAgICAgIHNldExvZ2ljYWxXaWR0aChtYXhMb2dpY2FsV2lkdGgpOwog
ICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1heE1hcmdpbkxvZ2ljYWxMZWZ0
OwpAQCAtMjU2OSw3ICsyNjU2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbFdpZHRoKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG8KICAgICAgICAg
TGF5b3V0VW5pdCBtaW5NYXJnaW5Mb2dpY2FsUmlnaHQ7CiAgICAgICAgIExheW91dFVuaXQgbWlu
TG9naWNhbExlZnRQb3M7CiAKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhV
c2luZyhzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5l
ckRpcmVjdGlvbiwKKyAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhN
aW5Mb2dpY2FsV2lkdGgsIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdp
ZHRoLCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9naWNhbExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2lu
TG9naWNhbExlZnQsIG1hcmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGgsIG1pbk1hcmdpbkxvZ2ljYWxMZWZ0
LCBtaW5NYXJnaW5Mb2dpY2FsUmlnaHQsIG1pbkxvZ2ljYWxMZWZ0UG9zKTsKQEAgLTI1ODMsNyAr
MjY3MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChS
ZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgfQogCiAgICAgaWYgKHN0cmV0
Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdpZHRoKCkgJiYgbG9naWNhbFdpZHRoKCkgPCBtaW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZykgewotICAgICAgICBj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aChtaW5QcmVmZXJyZWRMb2dp
Y2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZywgRml4ZWQpLCBjb250YWluZXJCbG9jaywg
Y29udGFpbmVyRGlyZWN0aW9uLAorICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0
aFVzaW5nKE1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5l
ckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExlbmd0aCwgbG9naWNhbFJp
Z2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNhbFJpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCwg
bWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMsIGxvZ2ljYWxM
ZWZ0UmVzdWx0KTsKQEAgLTI2MjAsNyArMjcwNyw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2dp
Y2FsTGVmdFBvc2l0aW9uZWRPZmZzZXQoTGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MsIGNvbnN0
CiAgICAgICAgIGxvZ2ljYWxMZWZ0UG9zICs9IChjaGlsZC0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IGNvbnRhaW5lckJsb2NrLT5ib3JkZXJMZWZ0KCkgOiBjb250YWluZXJCbG9jay0+Ym9y
ZGVyVG9wKCkpOwogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogY29udGFpbmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29udGFpbmVyRGlyZWN0aW9uLAordm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTG9naWNhbFdp
ZHRoVHlwZSB3aWR0aFR5cGUsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJC
bG9jaywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9naWNhbExlZnQs
IExlbmd0aCBsb2dpY2FsUmlnaHQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsTGVmdCwgTGVuZ3RoIG1h
cmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxXaWR0aFZhbHVlLCBMYXlvdXRVbml0JiBt
YXJnaW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1
ZSwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MpCkBAIC0yNjI4LDE0ICsyNzE1LDMxIEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBs
b2dpY2FsV2lkdGgsIGNvbnN0IFJlCiAgICAgLy8gJ2xlZnQnIGFuZCAncmlnaHQnIGNhbm5vdCBi
b3RoIGJlICdhdXRvJyBiZWNhdXNlIG9uZSB3b3VsZCBvZiBiZWVuCiAgICAgLy8gY29udmVydGVk
IHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYWxyZWFkeQogICAgIEFTU0VSVCghKGxvZ2ljYWxMZWZ0
LmlzQXV0bygpICYmIGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkpOworICAgIExlbmd0aCBsb2dpY2Fs
V2lkdGg7CisgICAgc3dpdGNoICh3aWR0aFR5cGUpIHsKKyAgICBjYXNlIExvZ2ljYWxXaWR0aDoK
KyAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGUoKS0+bG9naWNhbFdpZHRoKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWluTG9naWNhbFdpZHRoOgorICAgICAgICBsb2dpY2FsV2lkdGgg
PSBzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBN
YXhMb2dpY2FsV2lkdGg6CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlKCktPmxvZ2ljYWxN
YXhXaWR0aCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pblByZWZlcnJlZExvZ2ljYWxX
aWR0aDoKKyAgICAgICAgbG9naWNhbFdpZHRoID0gIExlbmd0aChtaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZywgRml4ZWQpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0VmFsdWUgPSAwOwogCi0gICAgYm9vbCBs
b2dpY2FsV2lkdGhJc0F1dG8gPSBsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKTsKLSAg
ICBib29sIGxvZ2ljYWxMZWZ0SXNBdXRvID0gbG9naWNhbExlZnQuaXNBdXRvKCk7Ci0gICAgYm9v
bCBsb2dpY2FsUmlnaHRJc0F1dG8gPSBsb2dpY2FsUmlnaHQuaXNBdXRvKCk7CisgICAgYm9vbCB1
c2VBc3BlY3RSYXRpbyA9IHVzZUFzcGVjdFJhdGlvRm9yV2lkdGgobG9naWNhbFdpZHRoLCBsb2dp
Y2FsTGVmdCwgbG9naWNhbFJpZ2h0KTsKKyAgICAvLyBJZiB3ZSBhcmUgdXNpbmcgYXNwZWN0LXJh
dGlvIGZvciB3aWR0aCB0aGVuIHRoZXJlIGlzIGEgY29uc3RyYWludCBvbiB3aWR0aC4KKyAgICBi
b29sIGxvZ2ljYWxXaWR0aElzVW5jb25zdHJhaW5lZCA9IGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNp
Y09yQXV0bygpICYmICF1c2VBc3BlY3RSYXRpbzsKKyAgICBib29sIGxvZ2ljYWxMZWZ0SXNVbmNv
bnN0cmFpbmVkID0gbG9naWNhbExlZnQuaXNBdXRvKCk7CisgICAgYm9vbCBsb2dpY2FsUmlnaHRJ
c1VuY29uc3RyYWluZWQgPSBsb2dpY2FsUmlnaHQuaXNBdXRvKCk7CiAKLSAgICBpZiAoIWxvZ2lj
YWxMZWZ0SXNBdXRvICYmICFsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0
bykgeworICAgIGlmICghbG9naWNhbExlZnRJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxXaWR0
aElzVW5jb25zdHJhaW5lZCAmJiAhbG9naWNhbFJpZ2h0SXNVbmNvbnN0cmFpbmVkKSB7CiAgICAg
ICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgICAgICAgKiBJZiBub25lIG9mIHRoZSB0aHJlZSBp
cyAnYXV0byc6IElmIGJvdGggJ21hcmdpbi1sZWZ0JyBhbmQgJ21hcmdpbi0KICAgICAgICAgICog
cmlnaHQnIGFyZSAnYXV0bycsIHNvbHZlIHRoZSBlcXVhdGlvbiB1bmRlciB0aGUgZXh0cmEgY29u
c3RyYWludCB0aGF0CkBAIC0yNjUzLDYgKzI3NTcsMjMgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgY29uc3Qg
UmUKIAogICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0
ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNWYWx1ZShjb250YWluZXJM
b2dpY2FsV2lkdGgpKTsKKyAgICAgICAgaWYgKHVzZUFzcGVjdFJhdGlvKSB7CisgICAgICAgICAg
ICBmbG9hdCByZXF1aXJlZFJhdGlvID0gc3R5bGUoKS0+YXNwZWN0UmF0aW8oKTsKKyAgICAgICAg
ICAgIGlmIChsb2dpY2FsSGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgd2lkdGhGb3JB
c3BlY3RSYXRpbyA9IHN0YXRpY19jYXN0PGludD4obG9naWNhbEhlaWdodCgpICogcmVxdWlyZWRS
YXRpbyk7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgpCisg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gIHdpZHRoRm9yQXNwZWN0UmF0
aW87CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEhlaWdodCBpcyBu
b3QgZGV0ZXJtaW5lZCBzbyBMb2dpY2FsV2lkdGggaXMgdGhlIGNvbnRhaW5lcidzIGNvbnRlbnQg
d2lkdGguCisgICAgICAgICAgICAgICAgLy8gd2lkdGhUeXBlIHdpbGwgYmUgTG9naWNhbE1pbldp
ZHRoIG9yIExvZ2ljYWxNYXhXaWR0aCBvbmx5IGlmIHRoZXkgYXJlIHNwZWNpZmllZCBpbiB3aGlj
aAorICAgICAgICAgICAgICAgIC8vIGNhc2UgdGhleSBoYXZlIHRvIGJlIHJlc3BlY3RlZC4KKyAg
ICAgICAgICAgICAgICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0aCkgeworICAgICAgICAg
ICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUNvbnRhaW5lcldpZHRoID0gY29udGFpbmVy
TG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwor
ICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGF2YWlsYWJsZUNvbnRhaW5l
cldpZHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2Ug
PSBjb250YWluZXJMb2dpY2FsV2lkdGggLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxXaWR0
aFZhbHVlICsgbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpICsg
Ym9yZGVyc1BsdXNQYWRkaW5nKTsKIApAQCAtMjc0MSw3ICsyODYyLDcgQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0
aCwgY29uc3QgUmUKIAogICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSBmYXN0ZXIgd2F5IHRv
IGZpbmQgdGhlIGNvcnJlY3QgY2FzZT8KICAgICAgICAgLy8gVXNlIHJ1bGUvY2FzZSB0aGF0IGFw
cGxpZXMuCi0gICAgICAgIGlmIChsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1
dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgeworICAgICAgICBpZiAobG9naWNhbExlZnRJc1Vu
Y29uc3RyYWluZWQgJiYgbG9naWNhbFdpZHRoSXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsUmln
aHRJc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgMTogKHVzZSBzaHJpbmst
dG8tZml0IGZvciB3aWR0aCwgYW5kIHNvbHZlIG9mIGxlZnQpCiAgICAgICAgICAgICBMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodFZhbHVlID0gbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJM
b2dpY2FsV2lkdGgpOwogCkBAIC0yNzUxLDcgKzI4NzIsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25z
dCBSZQogICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZVNw
YWNlIC0gbG9naWNhbFJpZ2h0VmFsdWU7CiAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9
IG1pbihtYXgocHJlZmVycmVkTWluV2lkdGgsIGF2YWlsYWJsZVdpZHRoKSwgcHJlZmVycmVkV2lk
dGgpOwogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxv
Z2ljYWxXaWR0aFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUpOwotICAgICAgICB9IGVsc2UgaWYg
KCFsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYgbG9naWNhbFJpZ2h0
SXNBdXRvKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNVbmNvbnN0cmFpbmVk
ICYmIGxvZ2ljYWxXaWR0aElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2FsUmlnaHRJc1VuY29uc3Ry
YWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzogKHVzZSBzaHJpbmstdG8tZml0IGZvciB3
aWR0aCwgYW5kIG5vIG5lZWQgc29sdmUgb2YgcmlnaHQpCiAgICAgICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAK
QEAgLTI3NjAsMTggKzI4ODEsNTMgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgY29uc3QgUmUKICAgICAgICAg
ICAgIExheW91dFVuaXQgcHJlZmVycmVkTWluV2lkdGggPSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZzsKICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxh
YmxlV2lkdGggPSBhdmFpbGFibGVTcGFjZSAtIGxvZ2ljYWxMZWZ0VmFsdWU7CiAgICAgICAgICAg
ICBsb2dpY2FsV2lkdGhWYWx1ZSA9IG1pbihtYXgocHJlZmVycmVkTWluV2lkdGgsIGF2YWlsYWJs
ZVdpZHRoKSwgcHJlZmVycmVkV2lkdGgpOwotICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxMZWZ0
SXNBdXRvICYmICFsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgewor
ICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxMZWZ0SXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2Fs
V2lkdGhJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxSaWdodElzVW5jb25zdHJhaW5lZCkgewog
ICAgICAgICAgICAgLy8gUlVMRSA0OiAoc29sdmUgZm9yIGxlZnQpCiAgICAgICAgICAgICBsb2dp
Y2FsV2lkdGhWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0
aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBpZiAodXNl
QXNwZWN0UmF0aW8pIHsKKyAgICAgICAgICAgICAgICBmbG9hdCByZXF1aXJlZFJhdGlvID0gc3R5
bGUoKS0+YXNwZWN0UmF0aW8oKTsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3Ig
dGhpcy4KKyAgICAgICAgICAgICAgICBpZiAobG9naWNhbEhlaWdodCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGludCB3aWR0aEZvckFzcGVjdFJhdGlvID0gc3RhdGljX2Nhc3Q8aW50Pihsb2dp
Y2FsSGVpZ2h0KCkgKiByZXF1aXJlZFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdp
ZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
V2lkdGhWYWx1ZSA9ICB3aWR0aEZvckFzcGVjdFJhdGlvOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEhlaWdodCBpcyBub3QgZGV0ZXJtaW5lZCBzbyBM
b2dpY2FsV2lkdGggaXMgdGhlIGNvbnRhaW5lcidzIGNvbnRlbnQgd2lkdGguCisgICAgICAgICAg
ICAgICAgICAgIC8vIHdpZHRoVHlwZSB3aWxsIGJlIExvZ2ljYWxNaW5XaWR0aCBvciBMb2dpY2Fs
TWF4V2lkdGggb25seSBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgaW4gd2hpY2gKKyAgICAgICAgICAg
ICAgICAgICAgLy8gY2FzZSB0aGV5IGhhdmUgdG8gYmUgcmVzcGVjdGVkLgorICAgICAgICAgICAg
ICAgICAgICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0aCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVDb250YWluZXJXaWR0aCA9IGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCAtIChsb2dpY2FsUmlnaHQuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aWNhbFdpZHRoVmFsdWUgPSBhdmFpbGFibGVDb250YWluZXJXaWR0aDsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAo
bG9naWNhbFdpZHRoVmFsdWUgKyBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCkpOwotICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dp
Y2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgeworICAgICAgICB9IGVsc2Ug
aWYgKCFsb2dpY2FsTGVmdElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2FsV2lkdGhJc1VuY29uc3Ry
YWluZWQgJiYgIWxvZ2ljYWxSaWdodElzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAgICAgLy8g
UlVMRSA1OiAoc29sdmUgZm9yIHdpZHRoKQogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9
IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICAg
ICAgbG9naWNhbFdpZHRoVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVl
ICsgbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKLSAgICAg
ICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYgIWxvZ2ljYWxXaWR0aElzQXV0byAm
JiBsb2dpY2FsUmlnaHRJc0F1dG8pIHsKKyAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJ
c1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxXaWR0aElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2Fs
UmlnaHRJc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgNjogKG5vIG5lZWQg
c29sdmUgZm9yIHJpZ2h0KQogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGxvZ2ljYWxM
ZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgbG9naWNh
bFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGgu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgaWYgKHVzZUFz
cGVjdFJhdGlvKSB7CisgICAgICAgICAgICAgICAgZmxvYXQgcmVxdWlyZWRSYXRpbyA9IHN0eWxl
KCktPmFzcGVjdFJhdGlvKCk7CisgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxIZWlnaHQoKSkg
eworICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGhGb3JBc3BlY3RSYXRpbyA9IHN0YXRpY19j
YXN0PGludD4obG9naWNhbEhlaWdodCgpICogcmVxdWlyZWRSYXRpbyk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh3aWR0aFR5cGUgPT0gTG9naWNhbFdpZHRoKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSAgd2lkdGhGb3JBc3BlY3RSYXRpbzsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBIZWlnaHQgaXMgbm90IGRl
dGVybWluZWQgc28gTG9naWNhbFdpZHRoIGlzIHRoZSBjb250YWluZXIncyBjb250ZW50IHdpZHRo
LgorICAgICAgICAgICAgICAgICAgICAvLyB3aWR0aFR5cGUgd2lsbCBiZSBMb2dpY2FsTWluV2lk
dGggb3IgTG9naWNhbE1heFdpZHRoIG9ubHkgaWYgdGhleSBhcmUgc3BlY2lmaWVkIGluIHdoaWNo
CisgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgdGhleSBoYXZlIHRvIGJlIHJlc3BlY3RlZC4K
KyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlQ29udGFpbmVyV2lkdGgg
PSBjb250YWluZXJMb2dpY2FsV2lkdGggLSAobG9naWNhbExlZnRWYWx1ZSArIGJvcmRlcnNQbHVz
UGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGF2
YWlsYWJsZUNvbnRhaW5lcldpZHRoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIApAQCAtMjg2NCw3ICszMDIwLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbEhlaWdodCgpCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wUG9zOwogCiAg
ICAgLy8gQ2FsY3VsYXRlIGNvbnN0cmFpbnQgZXF1YXRpb24gdmFsdWVzIGZvciAnaGVpZ2h0JyBj
YXNlLgotICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxv
Z2ljYWxIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJv
cmRlcnNQbHVzUGFkZGluZywKKyAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2lu
ZyhMb2dpY2FsSGVpZ2h0LCBjb250YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwg
Ym9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3BMZW5ndGgsIGxvZ2ljYWxCb3R0b21MZW5ndGgsIG1hcmdpbkJlZm9yZSwg
bWFyZ2luQWZ0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aWNhbEhlaWdodFJlc3VsdCwgbWFyZ2luQmVmb3JlQWxpYXMsIG1hcmdpbkFmdGVyQWxpYXMsIGxv
Z2ljYWxUb3BQb3MpOwogICAgIHNldExvZ2ljYWxUb3AobG9naWNhbFRvcFBvcyk7CkBAIC0yODc5
LDcgKzMwMzUsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVp
Z2h0KCkKICAgICAgICAgTGF5b3V0VW5pdCBtYXhNYXJnaW5BZnRlcjsKICAgICAgICAgTGF5b3V0
VW5pdCBtYXhMb2dpY2FsVG9wUG9zOwogCi0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ss
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKKyAgICAgICAgY29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4TG9naWNhbEhlaWdodCwgY29udGFp
bmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlbmd0
aCwgbG9naWNhbEJvdHRvbUxlbmd0aCwgbWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbEhlaWdodCwg
bWF4TWFyZ2luQmVmb3JlLCBtYXhNYXJnaW5BZnRlciwgbWF4TG9naWNhbFRvcFBvcyk7CiAKQEAg
LTI4OTgsNyArMzA1NCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxIZWlnaHQoKQogICAgICAgICBMYXlvdXRVbml0IG1pbk1hcmdpbkFmdGVyOwogICAgICAgICBM
YXlvdXRVbml0IG1pbkxvZ2ljYWxUb3BQb3M7CiAKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbkhlaWdodCgpLCBjb250YWluZXJC
bG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nLAorICAgICAg
ICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhNaW5Mb2dpY2FsSGVpZ2h0LCBj
b250YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
TGVuZ3RoLCBsb2dpY2FsQm90dG9tTGVuZ3RoLCBtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsSGVp
Z2h0LCBtaW5NYXJnaW5CZWZvcmUsIG1pbk1hcmdpbkFmdGVyLCBtaW5Mb2dpY2FsVG9wUG9zKTsK
IApAQCAtMjk1MCw3ICszMTA2LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvZ2ljYWxUb3BQb3Np
dGlvbmVkT2Zmc2V0KExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MsIGNvbnN0IFIKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhM
ZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNv
bnRhaW5lckJsb2NrLAordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhl
aWdodFVzaW5nKExvZ2ljYWxIZWlnaHRUeXBlIGhlaWdodFR5cGUsIGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQs
IExheW91dFVuaXQgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsVG9wLCBMZW5ndGggbG9n
aWNhbEJvdHRvbSwgTGVuZ3RoIG1hcmdpbkJlZm9yZSwgTGVuZ3RoIG1hcmdpbkFmdGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVu
aXQmIGxvZ2ljYWxIZWlnaHRWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luQmVmb3JlVmFsdWUsIExh
eW91dFVuaXQmIG1hcmdpbkFmdGVyVmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MpCkBA
IC0yOTU4LDIyICszMTE0LDM1IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwKICAgICAvLyAndG9w
JyBhbmQgJ2JvdHRvbScgY2Fubm90IGJvdGggYmUgJ2F1dG8nIGJlY2F1c2UgJ3RvcCB3b3VsZCBv
ZiBiZWVuCiAgICAgLy8gY29udmVydGVkIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gaW4gY29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCkKICAgICBBU1NFUlQoIShsb2dpY2FsVG9wLmlzQXV0
bygpICYmIGxvZ2ljYWxCb3R0b20uaXNBdXRvKCkpKTsKKyAgICBMZW5ndGggbG9naWNhbEhlaWdo
dExlbmd0aDsKKyAgICBzd2l0Y2ggKGhlaWdodFR5cGUpIHsKKyAgICBjYXNlIExvZ2ljYWxIZWln
aHQ6CisgICAgICAgIGxvZ2ljYWxIZWlnaHRMZW5ndGggPSBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWluTG9naWNhbEhlaWdodDoKKyAgICAgICAg
bG9naWNhbEhlaWdodExlbmd0aCA9IHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBNYXhMb2dpY2FsSGVpZ2h0OgorICAgICAgICBsb2dpY2FsSGVp
Z2h0TGVuZ3RoID0gc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpOworICAgICAgICBicmVhazsK
KyAgICB9CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gbG9naWNhbEhl
aWdodCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nOwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
VmFsdWUgPSAwOwogCi0gICAgYm9vbCBsb2dpY2FsSGVpZ2h0SXNBdXRvID0gbG9naWNhbEhlaWdo
dExlbmd0aC5pc0F1dG8oKTsKLSAgICBib29sIGxvZ2ljYWxUb3BJc0F1dG8gPSBsb2dpY2FsVG9w
LmlzQXV0bygpOwotICAgIGJvb2wgbG9naWNhbEJvdHRvbUlzQXV0byA9IGxvZ2ljYWxCb3R0b20u
aXNBdXRvKCk7CisgICAgYm9vbCB1c2VBc3BlY3RSYXRpbyA9IHVzZUFzcGVjdFJhdGlvRm9ySGVp
Z2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOworICAg
IGJvb2wgbG9naWNhbEhlaWdodElzVW5jb25zdHJhaW5lZCA9IGxvZ2ljYWxIZWlnaHRMZW5ndGgu
aXNBdXRvKCkgJiYgIXVzZUFzcGVjdFJhdGlvOworICAgIGJvb2wgbG9naWNhbFRvcElzVW5jb25z
dHJhaW5lZCA9IGxvZ2ljYWxUb3AuaXNBdXRvKCk7CisgICAgYm9vbCBsb2dpY2FsQm90dG9tSXNV
bmNvbnN0cmFpbmVkID0gbG9naWNhbEJvdHRvbS5pc0F1dG8oKTsKIAogICAgIC8vIEhlaWdodCBp
cyBuZXZlciB1bnNvbHZlZCBmb3IgdGFibGVzLgogICAgIGlmIChpc1RhYmxlKCkpIHsKICAgICAg
ICAgbG9naWNhbEhlaWdodExlbmd0aC5zZXRWYWx1ZShGaXhlZCwgY29udGVudExvZ2ljYWxIZWln
aHQpOwotICAgICAgICBsb2dpY2FsSGVpZ2h0SXNBdXRvID0gZmFsc2U7CisgICAgICAgIGxvZ2lj
YWxIZWlnaHRJc1VuY29uc3RyYWluZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWxvZ2lj
YWxUb3BJc0F1dG8gJiYgIWxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgIWxvZ2ljYWxCb3R0b21Jc0F1
dG8pIHsKKyAgICBpZiAoIWxvZ2ljYWxUb3BJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxIZWln
aHRJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxCb3R0b21Jc1VuY29uc3RyYWluZWQpIHsKICAg
ICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICAgICAgICAqIElmIG5vbmUgb2YgdGhlIHRocmVl
IGFyZSAnYXV0byc6IElmIGJvdGggJ21hcmdpbi10b3AnIGFuZCAnbWFyZ2luLQogICAgICAgICAg
KiBib3R0b20nIGFyZSAnYXV0bycsIHNvbHZlIHRoZSBlcXVhdGlvbiB1bmRlciB0aGUgZXh0cmEg
Y29uc3RyYWludCB0aGF0CkBAIC0yOTg1LDkgKzMxNTQsMjEgQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVu
Z3RoLAogICAgICAgICAvLyBOT1RFOiAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3Ig
J2JvdHRvbScgaW4gdGhlIG92ZXIgY29uc3RyYWluZWQKICAgICAgICAgLy8gY2FzZSBiZWNhdXNl
IHRoZSB2YWx1ZSBpcyBub3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRpb25zLgogCi0g
ICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdo
dChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7
CiAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5l
ckxvZ2ljYWxIZWlnaHQpOwotCisgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVD
b250ZW50Qm94TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsSGVpZ2h0KSk7CisgICAgICAgIGlmICh1c2VBc3BlY3RSYXRpbykgeworICAg
ICAgICAgICAgZmxvYXQgcmVxdWlyZWRSYXRpbyA9IHN0eWxlKCktPmFzcGVjdFJhdGlvRGVub21p
bmF0b3IoKSAvIHN0eWxlKCktPmFzcGVjdFJhdGlvTnVtZXJhdG9yKCk7CisgICAgICAgICAgICBp
ZiAobG9naWNhbFdpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0Rm9yQXNwZWN0
UmF0aW8gPSBzdGF0aWNfY2FzdDxpbnQ+KGxvZ2ljYWxXaWR0aCgpICogcmVxdWlyZWRSYXRpbyk7
CisgICAgICAgICAgICAgICAgaWYgKGhlaWdodFR5cGUgPT0gTG9naWNhbEhlaWdodCkKKyAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gaGVpZ2h0Rm9yQXNwZWN0UmF0aW87
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChoZWlnaHRUeXBlID09
IExvZ2ljYWxIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFi
bGVDb250YWluZXJIZWlnaHQgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0IC0gKGxvZ2ljYWxUb3BW
YWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpICsg
Ym9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodFZh
bHVlID0gYXZhaWxhYmxlQ29udGFpbmVySGVpZ2h0OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNw
YWNlID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2Fs
SGVpZ2h0VmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVp
Z2h0KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CiAKICAgICAgICAgLy8gTWFyZ2lucyBhcmUgbm93
IHRoZSBvbmx5IHVua25vd24KQEAgLTMwNDIsMjYgKzMyMjMsNTIgQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0
TGVuZ3RoLAogICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFp
bmVyTG9naWNhbEhlaWdodCAtIChtYXJnaW5CZWZvcmVWYWx1ZSArIG1hcmdpbkFmdGVyVmFsdWUg
KyBib3JkZXJzUGx1c1BhZGRpbmcpOwogCiAgICAgICAgIC8vIFVzZSBydWxlL2Nhc2UgdGhhdCBh
cHBsaWVzLgotICAgICAgICBpZiAobG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0SXNB
dXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CisgICAgICAgIGlmIChsb2dpY2FsVG9wSXNV
bmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxIZWlnaHRJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxC
b3R0b21Jc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgMTogKGhlaWdodCBp
cyBjb250ZW50IGJhc2VkLCBzb2x2ZSBvZiB0b3ApCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0
VmFsdWUgPSBjb250ZW50TG9naWNhbEhlaWdodDsKICAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1
ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGxvZ2ljYWxCb3R0b20u
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKLSAgICAgICAgfSBlbHNlIGlmICgh
bG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxvZ2ljYWxCb3R0b21J
c0F1dG8pIHsKKyAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzVW5jb25zdHJhaW5lZCAm
JiBsb2dpY2FsSGVpZ2h0SXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxCb3R0b21Jc1VuY29uc3Ry
YWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzogKGhlaWdodCBpcyBjb250ZW50IGJhc2Vk
LCBubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKICAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9
IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAgICAgICAg
ICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29udGVudExvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgIH0g
ZWxzZSBpZiAobG9naWNhbFRvcElzQXV0byAmJiAhbG9naWNhbEhlaWdodElzQXV0byAmJiAhbG9n
aWNhbEJvdHRvbUlzQXV0bykgeworICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxUb3BJc1VuY29u
c3RyYWluZWQgJiYgIWxvZ2ljYWxIZWlnaHRJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxCb3R0
b21Jc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgNDogKHNvbHZlIG9mIHRv
cCkKICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9n
aWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2Fs
SGVpZ2h0KSk7CiAgICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAt
IChsb2dpY2FsSGVpZ2h0VmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJM
b2dpY2FsSGVpZ2h0KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc0F1dG8gJiYg
bG9naWNhbEhlaWdodElzQXV0byAmJiAhbG9naWNhbEJvdHRvbUlzQXV0bykgeworICAgICAgICAg
ICAgaWYgKHVzZUFzcGVjdFJhdGlvKSB7CisgICAgICAgICAgICAgICAgZmxvYXQgcmVxdWlyZWRS
YXRpbyA9IHN0eWxlKCktPmFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSAvIHN0eWxlKCktPmFzcGVj
dFJhdGlvTnVtZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHRGb3JBc3BlY3RSYXRpbyA9IHN0YXRpY19j
YXN0PGludD4obG9naWNhbFdpZHRoKCkgKiByZXF1aXJlZFJhdGlvKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGhlaWdodFR5cGUgPT0gTG9naWNhbEhlaWdodCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGhlaWdodEZvckFzcGVjdFJhdGlvOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHRUeXBlID09
IExvZ2ljYWxIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXZh
aWxhYmxlQ29udGFpbmVySGVpZ2h0ID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChsb2dpY2Fs
VG9wVmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0
KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
SGVpZ2h0VmFsdWUgPSBhdmFpbGFibGVDb250YWluZXJIZWlnaHQ7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBp
ZiAoIWxvZ2ljYWxUb3BJc1VuY29uc3RyYWluZWQgJiYgbG9naWNhbEhlaWdodElzVW5jb25zdHJh
aW5lZCAmJiAhbG9naWNhbEJvdHRvbUlzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAgICAgLy8g
UlVMRSA1OiAoc29sdmUgb2YgaGVpZ2h0KQogICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0g
bG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAg
ICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBtYXg8TGF5b3V0VW5pdD4oMCwgYXZhaWxhYmxlU3BhY2Ug
LSAobG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEJvdHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9n
aWNhbEhlaWdodCkpKTsKLSAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0byAmJiAh
bG9naWNhbEhlaWdodElzQXV0byAmJiBsb2dpY2FsQm90dG9tSXNBdXRvKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxIZWlnaHRJc1Vu
Y29uc3RyYWluZWQgJiYgbG9naWNhbEJvdHRvbUlzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAg
ICAgLy8gUlVMRSA2OiAobm8gbmVlZCBzb2x2ZSBvZiBib3R0b20pCiAgICAgICAgICAgICBsb2dp
Y2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhl
aWdodExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwogICAgICAgICAg
ICAgbG9naWNhbFRvcFZhbHVlID0gbG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNh
bEhlaWdodCk7CisgICAgICAgICAgICBpZiAodXNlQXNwZWN0UmF0aW8pIHsKKyAgICAgICAgICAg
ICAgICBmbG9hdCByZXF1aXJlZFJhdGlvID0gc3R5bGUoKS0+YXNwZWN0UmF0aW9EZW5vbWluYXRv
cigpIC8gc3R5bGUoKS0+YXNwZWN0UmF0aW9OdW1lcmF0b3IoKTsKKyAgICAgICAgICAgICAgICBp
ZiAobG9naWNhbFdpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodEZvckFz
cGVjdFJhdGlvID0gc3RhdGljX2Nhc3Q8aW50Pihsb2dpY2FsV2lkdGgoKSAqIHJlcXVpcmVkUmF0
aW8pOworICAgICAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0VHlwZSA9PSBMb2dpY2FsSGVpZ2h0
KQorICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gaGVpZ2h0Rm9y
QXNwZWN0UmF0aW87CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGhlaWdodFR5cGUgPT0gTG9naWNhbEhlaWdodCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVDb250YWluZXJIZWlnaHQgPSBjb250YWluZXJMb2dp
Y2FsSGVpZ2h0IC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGF2YWlsYWJsZUNvbnRhaW5lckhlaWdo
dDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmlu
ZGV4IGJjMWZmZDk4MzRjYjc5YjQ3ZjcwZTdhMmNkZWRmYTRlZGE3NDEyZjAuLmEzMDY5MTk2YWRh
YTRhZDU0NTNiZmMwODAwYTg0YmE1YTY4ODhjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgKQEAgLTMzLDcgKzMzLDggQEAgY2xhc3MgUmVuZGVyQm94UmVnaW9uSW5mbzsKIGNs
YXNzIFJlbmRlclJlZ2lvbjsKIHN0cnVjdCBQYWludEluZm87CiAKLWVudW0gTG9naWNhbFdpZHRo
VHlwZSB7IExvZ2ljYWxXaWR0aCwgTWluTG9naWNhbFdpZHRoLCBNYXhMb2dpY2FsV2lkdGggfTsK
K2VudW0gTG9naWNhbFdpZHRoVHlwZSB7IExvZ2ljYWxXaWR0aCwgTWluTG9naWNhbFdpZHRoLCBN
YXhMb2dpY2FsV2lkdGgsIE1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCB9OworZW51bSBMb2dpY2Fs
SGVpZ2h0VHlwZSB7IExvZ2ljYWxIZWlnaHQsIE1pbkxvZ2ljYWxIZWlnaHQsIE1heExvZ2ljYWxI
ZWlnaHQgfTsKIAogZW51bSBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSB7IElnbm9yZU92
ZXJsYXlTY3JvbGxiYXJTaXplLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUgfTsKIApAQCAt
Mjk4LDYgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tM
b2dpY2FsV2lkdGhGb3JDb250ZW50SW5SZWdpb24oUmVuZGVyUmVnaW9uKiwgTGF5b3V0VW5pdCBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHBl
cnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAgICAgCisg
ICAgdmlydHVhbCBib29sIGlzV2lkdGhEZXRlcm1pbmVkVXNpbmcoY29uc3QgTGVuZ3RoJiBsb2dp
Y2FsV2lkdGgsIGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQsIGNvbnN0IExlbmd0aCYgbG9naWNh
bFJpZ2h0KSBjb25zdDsKKyAgICBib29sIGlzV2lkdGhEZXRlcm1pbmVkKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzSGVpZ2h0RGV0ZXJtaW5lZFVzaW5nKGNvbnN0IExlbmd0aCYgbG9naWNh
bEhlaWdodCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsVG9wLCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxC
b3R0b20pIGNvbnN0OworICAgIGJvb2wgaXNIZWlnaHREZXRlcm1pbmVkKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGhhc01pbk9yTWF4Q29uc3RyYWludHMoKSBjb25zdDsKKworICAgIGJvb2wg
dXNlQXNwZWN0UmF0aW9Gb3JXaWR0aChjb25zdCBMZW5ndGgmIGxvZ2ljYWxXaWR0aCwgY29uc3Qg
TGVuZ3RoJiBsb2dpY2FsTGVmdCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQpIGNvbnN0Owor
ICAgIGJvb2wgdXNlQXNwZWN0UmF0aW9Gb3JIZWlnaHQoY29uc3QgTGVuZ3RoJiBsb2dpY2FsSGVp
Z2h0LCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxUb3AsIGNvbnN0IExlbmd0aCYgbG9naWNhbEJvdHRv
bSkgY29uc3Q7CisgICAgCiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsV2lkdGgoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoKTsKIApAQCAtMzE5LDcgKzMy
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3RyZXRjaGVzVG9NaW5JbnRyaW5zaWNM
b2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgTGF5b3V0VW5pdCBj
b21wdXRlTG9naWNhbFdpZHRoVXNpbmcoTG9naWNhbFdpZHRoVHlwZSwgTGF5b3V0VW5pdCBhdmFp
bGFibGVMb2dpY2FsV2lkdGgpOwotICAgIExheW91dFVuaXQgY29tcHV0ZUxvZ2ljYWxIZWlnaHRV
c2luZyhjb25zdCBMZW5ndGgmIGhlaWdodCk7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNh
bEhlaWdodFVzaW5nKExvZ2ljYWxIZWlnaHRUeXBlKTsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCB3aWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0
VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGgsIGJvb2wgaW5jbHVkZU1heFdpZHRoID0gdHJ1ZSkgY29uc3Q7
CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3Ro
IGhlaWdodCkgY29uc3Q7CkBAIC00NzMsMTEgKzQ4MywxMSBAQCBwcml2YXRlOgogICAgIExheW91
dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29uc3QgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBjaGVja0ZvclBlcnBlbmRp
Y3VsYXJXcml0aW5nTW9kZSA9IHRydWUpIGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxIZWlnaHQoKTsKLSAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IGNvbnRhaW5lckJsb2NrLCBUZXh0RGlyZWN0aW9uIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICB2
b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTG9naWNhbFdpZHRoVHlwZSwg
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLCBUZXh0RGlyZWN0aW9u
IGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYm9y
ZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMZW5ndGggbG9naWNhbExlZnQsIExlbmd0aCBsb2dpY2FsUmlnaHQsIExlbmd0aCBtYXJn
aW5Mb2dpY2FsTGVmdCwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCYgbG9naWNhbFdpZHRoVmFs
dWUsIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUsIExheW91dFVuaXQmIG1hcmdp
bkxvZ2ljYWxSaWdodFZhbHVlLCBMYXlvdXRVbml0JiBsb2dpY2FsTGVmdFBvcyk7Ci0gICAgdm9p
ZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdo
dCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLAorICAgIHZvaWQg
Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTG9naWNhbEhlaWdodFR5cGUsIGNv
bnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgY29udGFpbmVyTG9naWNh
bEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9naWNhbFRvcCwgTGVuZ3RoIGxv
Z2ljYWxCb3R0b20sIExlbmd0aCBtYXJnaW5Mb2dpY2FsVG9wLCBMZW5ndGggbWFyZ2luTG9naWNh
bEJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExh
eW91dFVuaXQmIGxvZ2ljYWxIZWlnaHRWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbFRv
cFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsQm90dG9tVmFsdWUsIExheW91dFVuaXQm
IGxvZ2ljYWxUb3BQb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKaW5kZXggMTUzNTRjNTg0ZmQzZmJjZjRhMzc5ZjY0MTliZjFmYWE4YTk3ZGZm
NC4uYmNiZGQ0NzI1ZjMwMGRiNTVhZTkyMWI2NTVkNDAyYzU4M2U0OGQzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0zODUsNiArMzg1
LDE2IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJTdHls
ZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29uCiAgICAgICAgICAgICB8fCByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dGV4dE92ZXJmbG93KQogICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsK
IAorICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1faGFzQXNwZWN0UmF0aW8gIT0g
b3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2hhc0FzcGVjdFJhdGlvKQorICAgICAgICAg
ICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKKworICAgICAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1faGFzQXNwZWN0UmF0aW8pIHsKKyAgICAgICAgICAgIGZsb2F0IGFzcGVj
dFJhdGlvID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9OdW1lcmF0b3IgLyBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOworICAgICAgICAg
ICAgZmxvYXQgb3RoZXJBc3BlY3RSYXRpbyA9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9hc3BlY3RSYXRpb051bWVyYXRvciAvIG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9h
c3BlY3RSYXRpb0Rlbm9taW5hdG9yOworICAgICAgICAgICAgaWYgKGFzcGVjdFJhdGlvICE9IG90
aGVyQXNwZWN0UmF0aW8pCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxh
eW91dDsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9y
ZWdpb25PdmVyZmxvdyAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uT3Zl
cmZsb3cpCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggODUyNzgxODRhZTM2ZDk1YmFkNGU3MTFlNTk5NzVhYzdjM2UyYTY2ZC4uNWMwY2NkODYyZDk5
NDYwMDYyNzUzM2YyYTlhYjliZjBjNmM1MDY1YyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEx
LTExLTI4ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIC13
ZWJraXQtYXNwZWN0LXJhdGlvIExheW91dCBJbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMyNzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvYXNwZWN0LXJhdGlvL2Fic29s
dXRlLXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQuaHRtbDogQWRkZWQuCisgICAgICAgICogY3Nz
My9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLWhlaWdodC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtd2lkdGgu
aHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1
dG8taGVpZ2h0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVj
dC1yYXRpby1mbG9hdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2FzcGVjdC1yYXRpby9h
c3BlY3QtcmF0aW8taW5oZXJpdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLmh0bWw6IEFkZGVkLgorCiAyMDExLTEx
LTI4ICBKZWZmIFRpbWFudXMgIDx0d2l6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTdXBwcmVz
c2luZyBhIGZhaWxpbmcgd2ViZ2wgY29uZm9ybWFuY2UgdGVzdCBvbiBNYWMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hYnNvbHV0ZS1yYXRpby1hYnNvbHV0ZS1s
ZWZ0LXJpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hYnNvbHV0ZS1y
YXRpby1hYnNvbHV0ZS1sZWZ0LXJpZ2h0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3ODg3MzJlYTFmMjdh
YTRjNGU1MTkxNTU4NWQ2NjUzYjQ5NGQ2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2NzczMvYXNwZWN0LXJhdGlvL2Fic29sdXRlLXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQuaHRt
bApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9oZWFkPgorICA8Ym9keT4K
KyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTBweDsgbGVmdDogMTBw
eDsgcmlnaHQ6IDEwcHg7IC13ZWJraXQtYXNwZWN0LXJhdGlvOiAxNiAvIDk7IGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOyI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS1oZWlnaHQu
aHRtbCBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0
ZS1oZWlnaHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzJjYjNkMTE1YzIwMGYzNGUwOTYwODFkOTJhN2M0
MDFhZDhiYmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0
aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLWhlaWdodC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0
bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgaGVpZ2h0OiA1MHB4OyB0b3A6IDEwcHg7IGxlZnQ6MTBweDsgLXdlYmtp
dC1hc3BlY3QtcmF0aW86IDkvMTY7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+Cisg
IDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJh
dGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9h
c3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLXdpZHRoLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmNlYjU4YTgxNjUwYzFjMDYwMjMzYmIzMDkzOTlkNjY4MzM1OGU5NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13
aWR0aC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+Cisg
IDxib2R5PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDUwcHg7
IHRvcDogMTBweDsgbGVmdDoxMHB4OyAtd2Via2l0LWFzcGVjdC1yYXRpbzogOS8xNjsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYXV0by1o
ZWlnaHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWM1OWM1MDE5ZmY4YmQzOTYyZDAyM2UyNDkwMDg5YzM3
YzVlMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8v
YXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKyAg
PGhlYWQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyBsZWZ0OiAxMHB4OyB3aWR0aDogMjAwcHg7IC13ZWJraXQtYXNwZWN0LXJhdGlvOiAx
NiAvIDk7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRp
by1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlv
LWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwMjNmYWYxMTc2ZTNhNzE4YTY1N2Q3NzllOWJlOWJh
NmRmNjM5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlv
L2FzcGVjdC1yYXRpby1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGRpdiBzdHlsZT0id2lk
dGg6IDYwMHB4OyBoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij4KKyAgPGRp
diBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0aDogNTBweDsgLXdlYmtpdC1hc3BlY3QtcmF0aW86
IDEvNDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKzwvZGl2PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWluaGVyaXQuaHRt
bCBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2QzZjc1OTZlMzAyMTJlNGZkNTY2ZGZlZmE1YWNhYjM2MGRjOWI0YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1y
YXRpby1pbmhlcml0Lmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKyAgPGhlYWQ+CisgIDwv
aGVhZD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDEw
cHg7IGJvdHRvbTogMTBweDsgbGVmdDogMTBweDsgcmlnaHQ6IDEwcHg7IC13ZWJraXQtYXNwZWN0
LXJhdGlvOiAyMCAvIDk7IGJhY2tncm91bmQtY29sb3I6IHJlZDsiPgorICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiA1MHB4OyB0b3A6IDUwcHg7IHdpZHRoOiAzMDBw
eDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IC13ZWJraXQtYXNwZWN0LXJhdGlvOiBpbmhlcml0
OyI+PC9kaXY+CisgICAgPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRvLWZpbGwu
aHRtbCBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNo
LXRvLWZpbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjAzODRlMjcxMjdiZjc3ZGI2NjY2NDk2MjEwZTM1
NmI5MDRmMzcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0
aW8vYXNwZWN0LXJhdGlvLXN0cmV0Y2gtdG8tZmlsbC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0
bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOmFic29sdXRlOyB0b3A6IDBweDsgYm90dG9tOiAwcHg7IGxlZnQ6IDBweDsgcmlnaHQ6IDBw
eDsgLXdlYmtpdC1hc3BlY3QtcmF0aW86IDE2IC8gOTsgbWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsgbWF4LWhlaWdodDogNjQwcHg7Ij48L2Rpdj4KKyAgPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117021</attachid>
            <date>2011-11-29 12:26:29 -0800</date>
            <delta_ts>2011-11-29 20:51:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73277-20111129152627.patch</filename>
            <type>text/plain</type>
            <size>57540</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwYjk0YjA5N2Q5ODJl
NDI0ZjU1NWRjYzU4Y2M1NzA3MzQzMzdjYS4uYzVjOTU4NzZhYTMwODg5NWVjNmQzY2UxYzczMmM2
MmZiMzMxM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTI5ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIC13ZWJraXQtYXNwZWN0
LXJhdGlvIExheW91dCBJbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMyNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0
aW8tYWJzb2x1dGUtbGVmdC1yaWdodC5odG1sCisgICAgICAgICAgICAgICBjc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWwKKyAgICAgICAgICAgICAgIGNz
czMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC5odG1sCisgICAgICAg
ICAgICAgICBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYXV0by1oZWlnaHQuaHRtbAor
ICAgICAgICAgICAgICAgY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWZsb2F0Lmh0bWwK
KyAgICAgICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0Lmh0
bWwKKyAgICAgICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNo
LXRvLWZpbGwuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzV2lkdGhE
ZXRlcm1pbmVkVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojppc0hlaWdodERl
dGVybWluZWRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnVzZUFzcGVjdFJh
dGlvRm9yV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1c2VBc3BlY3RSYXRp
b0ZvckhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2Fs
V2lkdGhJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKwogMjAxMS0x
MS0yOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBUZXh0UHJvbXB0IHNob3VsZCBzaG93IHN1Z2dlc3QgYWJvdmUgb3IgdW5k
ZXIgc28gdGhhdCBpdCBoYXMgbWF4aW1hbCBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBlMjEzYWE3M2U4MmY3NjQwMTI4NTc3MWZiM2M0YWY5YTFh
NzcyNGUxLi4zZmVhZjg5YzJiNjNmODQyYzY5MmYxNWYwMzE4OGU3MWJlYmE5OTk5IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEyMDMsNiArMTIwMyw5IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5
b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdoCiAKICAgICBMYXlvdXRVbml0IG9sZFdpZHRoID0gbG9n
aWNhbFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBvbGRDb2x1bW5XaWR0aCA9IGRlc2lyZWRDb2x1
bW5XaWR0aCgpOworICAKKyAgICBMYXlvdXRVbml0IHByZXZpb3VzSGVpZ2h0ID0gbG9naWNhbEhl
aWdodCgpOworICAgIHNldExvZ2ljYWxIZWlnaHQoMCk7CiAKICAgICBjb21wdXRlTG9naWNhbFdp
ZHRoKCk7CiAgICAgY2FsY0NvbHVtbldpZHRoKCk7CkBAIC0xMjE5LDggKzEyMjIsNiBAQCB2b2lk
IFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQgcGFnZUxvZ2ljYWxIZWlnaAogICAgICAgICBmbG9hdHNMYXlvdXRQYXNzID0gUG9zaXRpb25l
ZEZsb2F0TGF5b3V0UGFzczsKICAgICBjbGVhckZsb2F0cyhmbG9hdHNMYXlvdXRQYXNzKTsKIAot
ICAgIExheW91dFVuaXQgcHJldmlvdXNIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7Ci0gICAgc2V0
TG9naWNhbEhlaWdodCgwKTsKICAgICBib29sIGhhc1NwZWNpZmllZFBhZ2VMb2dpY2FsSGVpZ2h0
ID0gZmFsc2U7CiAgICAgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBmYWxzZTsKICAg
ICBDb2x1bW5JbmZvKiBjb2xJbmZvID0gY29sdW1uSW5mbygpOwpAQCAtMTMyMiw2ICsxMzIzLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKICAgICBMYXlvdXRVbml0IG9sZENsaWVudEFmdGVy
RWRnZSA9IGNsaWVudExvZ2ljYWxCb3R0b20oKTsKICAgICBjb21wdXRlTG9naWNhbEhlaWdodCgp
OwogICAgIExheW91dFVuaXQgbmV3SGVpZ2h0ID0gbG9naWNhbEhlaWdodCgpOworICAgICAgCiAg
ICAgaWYgKG9sZEhlaWdodCAhPSBuZXdIZWlnaHQpIHsKICAgICAgICAgaWYgKG9sZEhlaWdodCA+
IG5ld0hlaWdodCAmJiBtYXhGbG9hdExvZ2ljYWxCb3R0b20gPiBuZXdIZWlnaHQgJiYgIWNoaWxk
cmVuSW5saW5lKCkpIHsKICAgICAgICAgICAgIC8vIE9uZSBvZiBvdXIgY2hpbGRyZW4ncyBmbG9h
dHMgbWF5IGhhdmUgYmVjb21lIGFuIG92ZXJoYW5naW5nIGZsb2F0IGZvciB1cy4gV2UgbmVlZCB0
byBsb29rIGZvciBpdC4KQEAgLTEzMzgsNiArMTM0MCwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaAogICAgIGlmIChwcmV2aW91c0hlaWdodCAhPSBuZXdIZWlnaHQpCiAgICAgICAgIHJlbGF5
b3V0Q2hpbGRyZW4gPSB0cnVlOwogCisgICAgLy8gRklYTUU6IE9ubHkgcmVjb21wdXRlIGxvZ2lj
YWwgd2lkdGggaWYgYXNwZWN0IHJhdGlvIGlzIG5vdCBzYXRpc2ZpZWQKKyAgICBvbGRXaWR0aCA9
IGxvZ2ljYWxXaWR0aCgpOworICAgIGlmIChzdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpKQorICAg
ICAgICBjb21wdXRlTG9naWNhbFdpZHRoKCk7CisgICAgaWYgKG9sZFdpZHRoICE9IGxvZ2ljYWxX
aWR0aCgpKQorICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKKwogICAgIGJvb2wgbmVl
ZEFub3RoZXJMYXlvdXRQYXNzID0gbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGls
ZHJlbiB8fCBpc1Jvb3QoKSk7CiAKICAgICBpZiAoaW5SZW5kZXJGbG93VGhyZWFkKCkpCkBAIC0x
OTY5LDcgKzE5NzgsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgbWF4RmxvYQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQotCiAgICAgTGF5b3V0VW5pdCBiZWZvcmVFZGdlID0gYm9yZGVyQmVm
b3JlKCkgKyBwYWRkaW5nQmVmb3JlKCk7CiAgICAgTGF5b3V0VW5pdCBhZnRlckVkZ2UgPSBib3Jk
ZXJBZnRlcigpICsgcGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAK
QEAgLTE5OTgsNyArMjAwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGRy
ZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiBtYXhGbG9hCiAgICAgICAgIC8v
IE1ha2Ugc3VyZSB3ZSBsYXlvdXQgY2hpbGRyZW4gaWYgdGhleSBuZWVkIGl0LgogICAgICAgICAv
LyBGSVhNRTogVGVjaG5pY2FsbHkgcGVyY2VudGFnZSBoZWlnaHQgb2JqZWN0cyBvbmx5IG5lZWQg
YSByZWxheW91dCBpZiB0aGVpciBwZXJjZW50YWdlIGlzbid0IGdvaW5nIHRvIGJlIHR1cm5lZCBp
bnRvCiAgICAgICAgIC8vIGFuIGF1dG8gdmFsdWUuICBBZGQgYSBtZXRob2QgdG8gZGV0ZXJtaW5l
IHRoaXMsIHNvIHRoYXQgd2UgY2FuIGF2b2lkIHRoZSByZWxheW91dC4KLSAgICAgICAgaWYgKHJl
bGF5b3V0Q2hpbGRyZW4gfHwgKChjaGlsZC0+c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLmlzUGVy
Y2VudCgpIHx8IGNoaWxkLT5zdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkuaXNQZXJjZW50KCkg
fHwgY2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1BlcmNlbnQoKSkgJiYgIWlz
UmVuZGVyVmlldygpKSkKKyAgICAgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4gfHwgKChjaGlsZC0+
c3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSB8fCBjaGlsZC0+c3R5bGUoKS0+bG9naWNhbEhlaWdo
dCgpLmlzUGVyY2VudCgpIHx8IGNoaWxkLT5zdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkuaXNQ
ZXJjZW50KCkgfHwgY2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1BlcmNlbnQo
KSkgJiYgIWlzUmVuZGVyVmlldygpKSkKICAgICAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRz
TGF5b3V0KHRydWUsIGZhbHNlKTsKIAogICAgICAgICAvLyBJZiByZWxheW91dENoaWxkcmVuIGlz
IHNldCBhbmQgdGhlIGNoaWxkIGhhcyBwZXJjZW50YWdlIHBhZGRpbmcgb3IgYW4gZW1iZWRkZWQg
Y29udGVudCBib3gsIHdlIGFsc28gbmVlZCB0byBpbnZhbGlkYXRlIHRoZSBjaGlsZHMgcHJlZiB3
aWR0aHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDUzMWFjYmMx
NWE3MjI4ZjVlZmE3YTk2YWJkNWFhMjI2OGZjMGNkYTcuLjE1OTU1OWE0OWE0MDRiZGVhODhiMTRk
MGYzMTEzZTJjZWI2NjYzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC0xNjU4LDYgKzE2NTgsMzggQEAgdm9pZCBSZW5kZXJCb3g6OnJlcGFpbnREdXJpbmdMYXlv
dXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiAgICAgfQogfQogCitib29sIFJlbmRl
ckJveDo6aXNXaWR0aERldGVybWluZWRVc2luZyhjb25zdCBMZW5ndGgmIGxvZ2ljYWxXaWR0aCwg
Y29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQpIGNv
bnN0Cit7CisgICAgYm9vbCB3aWR0aElzQXV0byA9IGxvZ2ljYWxXaWR0aC5pc0F1dG8oKTsKKyAg
ICBib29sIGxvZ2ljYWxNaW5XaWR0aElzU3BlY2lmaWVkID0gIXN0eWxlKCktPmxvZ2ljYWxNaW5X
aWR0aCgpLmlzQXV0bygpICYmIHN0eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpLmlzUG9zaXRpdmUo
KTsKKyAgICBib29sIGxlZnRJc0F1dG8gPSBsb2dpY2FsTGVmdC5pc0F1dG8oKTsKKyAgICBib29s
IHJpZ2h0SXNBdXRvID0gbG9naWNhbFJpZ2h0LmlzQXV0bygpOworICAgIGJvb2wgaGFzQXNwZWN0
UmF0aW8gPSBzdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpOworICAgIC8vIFdpZHRoIGlzIGRldGVy
bWluZWQgaWYgdGhlIHdpZHRoIGlzIHNwZWNpZmllZCBvciBsZWZ0IGFuZCByaWdodCBhcmUgc3Bl
Y2lmaWVkIG9uIGEgcG9zaXRpb25lZCBib3guCisgICAgcmV0dXJuICF3aWR0aElzQXV0byB8fCBs
b2dpY2FsTWluV2lkdGhJc1NwZWNpZmllZCB8fCAoIWxlZnRJc0F1dG8gJiYgd2lkdGhJc0F1dG8g
JiYgIXJpZ2h0SXNBdXRvICYmICFoYXNBc3BlY3RSYXRpbyAmJiBpc1Bvc2l0aW9uZWQoKSk7Cit9
CisKK2Jvb2wgUmVuZGVyQm94Ojppc0hlaWdodERldGVybWluZWRVc2luZyhjb25zdCBMZW5ndGgm
IGxvZ2ljYWxIZWlnaHQsIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCwgY29uc3QgTGVuZ3RoJiBs
b2dpY2FsQm90dG9tKSBjb25zdAoreworICAgIGJvb2wgaGVpZ2h0SXNBdXRvID0gbG9naWNhbEhl
aWdodC5pc0F1dG8oKTsKKyAgICBib29sIGxvZ2ljYWxNaW5IZWlnaHRJc1NwZWNpZmllZCA9ICFz
dHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkuaXNBdXRvKCkgJiYgc3R5bGUoKS0+bG9naWNhbE1p
bkhlaWdodCgpLmlzUG9zaXRpdmUoKTsKKyAgICBib29sIHRvcElzQXV0byA9IGxvZ2ljYWxUb3Au
aXNBdXRvKCk7CisgICAgYm9vbCBib3R0b21Jc0F1dG8gPSBsb2dpY2FsQm90dG9tLmlzQXV0bygp
OworICAgIGJvb2wgaGFzQXNwZWN0UmF0aW8gPSBzdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpOwor
ICAgIC8vIEhlaWdodCBpcyBkZXRlcm1pbmVkIGlmIGhlaWdodCBpcyBzcGVjaWZpY2VkIG9yIHRv
cCBhbmQgYm90dG9tIGFyZSBzcGVjaWZpZWQgb24gYSBwb3NpdGlvbmVkIGJveC4KKyAgICByZXR1
cm4gIWhlaWdodElzQXV0byB8fCBsb2dpY2FsTWluSGVpZ2h0SXNTcGVjaWZpZWQgfHwgKCF0b3BJ
c0F1dG8gJiYgaGVpZ2h0SXNBdXRvICYmICFib3R0b21Jc0F1dG8gJiYgIWhhc0FzcGVjdFJhdGlv
ICYmIGlzUG9zaXRpb25lZCgpKTsKK30KKworYm9vbCBSZW5kZXJCb3g6OnVzZUFzcGVjdFJhdGlv
Rm9yV2lkdGgoY29uc3QgTGVuZ3RoJiBsb2dpY2FsV2lkdGgsIGNvbnN0IExlbmd0aCYgbG9naWNh
bExlZnQsIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KSBjb25zdAoreworICAgIHJldHVybiAh
aXNXaWR0aERldGVybWluZWRVc2luZyhsb2dpY2FsV2lkdGgsIGxvZ2ljYWxMZWZ0LCBsb2dpY2Fs
UmlnaHQpICYmIHN0eWxlKCktPmhhc0FzcGVjdFJhdGlvKCk7Cit9CisKK2Jvb2wgUmVuZGVyQm94
Ojp1c2VBc3BlY3RSYXRpb0ZvckhlaWdodChjb25zdCBMZW5ndGgmIGxvZ2ljYWxIZWlnaHQsIGNv
bnN0IExlbmd0aCYgbG9naWNhbFRvcCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsQm90dG9tKSBjb25z
dAoreworICAgIHJldHVybiAhaXNIZWlnaHREZXRlcm1pbmVkVXNpbmcobG9naWNhbEhlaWdodCwg
bG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSkgJiYgc3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKTsK
K30KKwogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogewogICAgIGNvbXB1
dGVMb2dpY2FsV2lkdGhJblJlZ2lvbigpOwpAQCAtMTc0MCw3ICsxNzcyLDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihSZW5kZXJSZWdpb24qIHJlZ2lvbiwg
TGF5b3V0VW5pdCBvZmYKICAgICB9CiAKICAgICAvLyBNYXJnaW4gY2FsY3VsYXRpb25zLgotICAg
IGlmIChsb2dpY2FsV2lkdGhMZW5ndGguaXNBdXRvKCkgfHwgaGFzUGVycGVuZGljdWxhckNvbnRh
aW5pbmdCbG9jaykgeworICAgIGlmICgobG9naWNhbFdpZHRoTGVuZ3RoLmlzQXV0bygpICYmICFz
dHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpKSB8fCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Js
b2NrKSB7CiAgICAgICAgIHNldE1hcmdpblN0YXJ0KHN0eWxlKCktPm1hcmdpblN0YXJ0KCkuY2Fs
Y01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAgICAgICBzZXRNYXJnaW5FbmQo
c3R5bGUoKS0+bWFyZ2luRW5kKCkuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkp
OwogICAgIH0gZWxzZQpAQCAtMTc1NCwxOCArMTc4NiwzNyBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0
IG9mZgogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhVc2luZyhMb2dp
Y2FsV2lkdGhUeXBlIHdpZHRoVHlwZSwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgp
CiB7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhSZXN1bHQgPSBsb2dpY2FsV2lkdGgoKTsK
KyAgICBjb25zdCBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZyA9IGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsV2lkdGgoKTsKICAgICBMZW5ndGggbG9naWNhbFdpZHRoOwotICAgIGlmICh3aWR0
aFR5cGUgPT0gTG9naWNhbFdpZHRoKQorICAgIHN3aXRjaCAod2lkdGhUeXBlKSB7CisgICAgY2Fz
ZSBMb2dpY2FsV2lkdGg6CiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlKCktPmxvZ2ljYWxX
aWR0aCgpOwotICAgIGVsc2UgaWYgKHdpZHRoVHlwZSA9PSBNaW5Mb2dpY2FsV2lkdGgpCisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTWluTG9naWNhbFdpZHRoOgogICAgICAgICBsb2dpY2FsV2lk
dGggPSBzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKTsKLSAgICBlbHNlCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTWF4TG9naWNhbFdpZHRoOgogICAgICAgICBsb2dpY2FsV2lkdGggPSBzdHls
ZSgpLT5sb2dpY2FsTWF4V2lkdGgoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNaW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGg6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBsb2dpY2FsV2lkdGggPSAgTGVuZ3RoKG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9y
ZGVyc1BsdXNQYWRkaW5nLCBGaXhlZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGlm
IChsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSkgewogICAgICAgICBMYXlvdXRVbml0
IG1hcmdpblN0YXJ0ID0gc3R5bGUoKS0+bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUoYXZhaWxh
YmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBzdHlsZSgp
LT5tYXJnaW5FbmQoKS5jYWxjTWluVmFsdWUoYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAg
ICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gbWFyZ2luU3Rh
cnQgLSBtYXJnaW5FbmQ7CisgICAgICAgIGJvb2wgdXNlQXNwZWN0UmF0aW8gPSBzdHlsZSgpLT5o
YXNBc3BlY3RSYXRpbygpOworICAgICAgICBpZiAodXNlQXNwZWN0UmF0aW8pIHsKKyAgICAgICAg
ICAgIGZsb2F0IHJlcXVpcmVkUmF0aW8gPSBzdHlsZSgpLT5hc3BlY3RSYXRpbygpOworICAgICAg
ICAgICAgaWYgKGxvZ2ljYWxIZWlnaHQoKSkgeworICAgICAgICAgICAgICAgIGludCB3aWR0aEZv
ckFzcGVjdFJhdGlvID0gc3RhdGljX2Nhc3Q8aW50Pihsb2dpY2FsSGVpZ2h0KCkgKiByZXF1aXJl
ZFJhdGlvKTsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0aCkK
KyAgICAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gbWluKHdpZHRoRm9yQXNw
ZWN0UmF0aW8sIGxvZ2ljYWxXaWR0aFJlc3VsdCk7CisgICAgICAgICAgICB9IAorICAgICAgICB9
CiAKICAgICAgICAgaWYgKHNpemVzVG9JbnRyaW5zaWNMb2dpY2FsV2lkdGgod2lkdGhUeXBlKSkg
ewogICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gbWF4KGxvZ2ljYWxXaWR0aFJlc3Vs
dCwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpOwpAQCAtMjAwOSwxMiArMjA2MCwxMiBAQCB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogCiAgICAgICAgIExheW91dFVu
aXQgaGVpZ2h0UmVzdWx0OwogICAgICAgICBpZiAoY2hlY2tNaW5NYXhIZWlnaHQpIHsKLSAgICAg
ICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+
bG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dp
Y2FsSGVpZ2h0VXNpbmcoTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogVXNl
IDwgMCBvciByb3VnaGx5RXF1YWxzIHdoZW4gd2UgbW92ZSB0byBmbG9hdCwgc2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjE0OAogICAgICAgICAgICAgaWYgKGhl
aWdodFJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBsb2dpY2Fs
SGVpZ2h0KCk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG1pbkggPSBjb21wdXRlTG9naWNhbEhl
aWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7IC8vIExlYXZlIGFzIC0xIGlm
IHVuc2V0LgotICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXhIID0gc3R5bGUoKS0+bG9naWNhbE1h
eEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoZWlnaHRSZXN1bHQgOiBjb21wdXRlTG9naWNhbEhl
aWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKSk7CisgICAgICAgICAgICBMYXlv
dXRVbml0IG1pbkggPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1pbkxvZ2ljYWxIZWlnaHQp
OyAvLyBMZWF2ZSBhcyAtMSBpZiB1bnNldC4KKyAgICAgICAgICAgIExheW91dFVuaXQgbWF4SCA9
IHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gaGVpZ2h0UmVzdWx0
IDogY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYXhMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAg
ICAgIGlmIChtYXhIID09IC0xKQogICAgICAgICAgICAgICAgIG1heEggPSBoZWlnaHRSZXN1bHQ7
CiAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBtaW4obWF4SCwgaGVpZ2h0UmVzdWx0KTsKQEAg
LTIwNjEsMjEgKzIxMTIsNDAgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0
KCkKICAgICB9CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKGNvbnN0IExlbmd0aCYgaCkKK0xheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9n
aWNhbEhlaWdodFVzaW5nKExvZ2ljYWxIZWlnaHRUeXBlIGhlaWdodFR5cGUpCiB7Ci0gICAgTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gLTE7CisgICAgTGVuZ3RoIGg7CisgICAgc3dpdGNoICho
ZWlnaHRUeXBlKSB7CisgICAgY2FzZSBMb2dpY2FsSGVpZ2h0OgorICAgICAgICBoID0gc3R5bGUo
KS0+bG9naWNhbEhlaWdodCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pbkxvZ2ljYWxI
ZWlnaHQ6CisgICAgICAgIGggPSBzdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWF4TG9naWNhbEhlaWdodDoKKyAgICAgICAgaCA9IHN0eWxlKCkt
PmxvZ2ljYWxNYXhIZWlnaHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0VmFsdWUgPSAtMTsKICAgICBpZiAoIWguaXNBdXRvKCkpIHsKICAg
ICAgICAgaWYgKGguaXNGaXhlZCgpKQotICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9IGgudmFs
dWUoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGgudmFsdWUoKTsKICAgICAg
ICAgZWxzZSBpZiAoaC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBj
b21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoaCk7CisgICAgICAgICAgICBsb2dpY2FsSGVp
Z2h0VmFsdWUgPSBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoaCk7CiAgICAgICAgIC8v
IEZJWE1FOiBVc2UgPCAwIG9yIHJvdWdobHlFcXVhbHMgd2hlbiB3ZSBtb3ZlIHRvIGZsb2F0LCBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTQ4Ci0gICAgICAg
IGlmIChsb2dpY2FsSGVpZ2h0ICE9IC0xKSB7Ci0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ID0g
Y29tcHV0ZUJvcmRlckJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCk7Ci0gICAgICAgICAg
ICByZXR1cm4gbG9naWNhbEhlaWdodDsKKyAgICAgICAgaWYgKGxvZ2ljYWxIZWlnaHRWYWx1ZSAh
PSAtMSkgeworICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUJvcmRlckJv
eExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBs
b2dpY2FsSGVpZ2h0VmFsdWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHN0eWxlKCktPmhh
c0FzcGVjdFJhdGlvKCkgJiYgIWxvZ2ljYWxIZWlnaHQoKSAmJiBoZWlnaHRUeXBlID09IExvZ2lj
YWxIZWlnaHQpIHsKKyAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgpKSB7CisgICAgICAgICAgICBm
bG9hdCByZXF1aXJlZFJhdGlvID0gc3R5bGUoKS0+YXNwZWN0UmF0aW9EZW5vbWluYXRvcigpIC8g
c3R5bGUoKS0+YXNwZWN0UmF0aW9OdW1lcmF0b3IoKTsKKyAgICAgICAgICAgIGludCBoZWlnaHRG
b3JBc3BlY3RSYXRpbyA9IHN0YXRpY19jYXN0PGludD4obG9naWNhbFdpZHRoKCkgKiByZXF1aXJl
ZFJhdGlvKTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGhlaWdodEZvckFzcGVj
dFJhdGlvOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0OworICAg
IHJldHVybiBsb2dpY2FsSGVpZ2h0VmFsdWU7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpj
b21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQpCkBAIC0y
NTM1LDEwICsyNjA1LDExIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgLy8gQ2FsY3Vs
YXRlIGNvbnN0cmFpbnQgZXF1YXRpb24gdmFsdWVzIGZvciAnd2lkdGgnIGNhc2UuCiAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGhSZXN1bHQ7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdFJl
c3VsdDsKLSAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlKCktPmxv
Z2ljYWxXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAorICAgIGNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTG9naWNhbFdpZHRoLCBjb250YWluZXJC
bG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExlbmd0aCwgbG9n
aWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNhbFJpZ2h0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0
LCBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzLCBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcywgbG9naWNh
bExlZnRSZXN1bHQpOworICAgIAogICAgIHNldExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGhSZXN1
bHQpOwogICAgIHNldExvZ2ljYWxMZWZ0KGxvZ2ljYWxMZWZ0UmVzdWx0KTsKIApAQCAtMjU0OSwx
MSArMjYyMCwxMiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lk
dGgoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwogICAgICAgICBMYXlvdXRVbml0
IG1heE1hcmdpbkxvZ2ljYWxSaWdodDsKICAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsTGVm
dFBvczsKIAotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxl
KCktPmxvZ2ljYWxNYXhXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9u
LAorICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1heExvZ2ljYWxX
aWR0aCwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRl
cnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2dpY2FsTGVmdExlbmd0aCwgbG9naWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVm
dCwgbWFyZ2luTG9naWNhbFJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCwgbWF4TWFyZ2luTG9naWNhbExlZnQsIG1heE1hcmdp
bkxvZ2ljYWxSaWdodCwgbWF4TG9naWNhbExlZnRQb3MpOwogCisKICAgICAgICAgaWYgKGxvZ2lj
YWxXaWR0aCgpID4gbWF4TG9naWNhbFdpZHRoKSB7CiAgICAgICAgICAgICBzZXRMb2dpY2FsV2lk
dGgobWF4TG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMg
PSBtYXhNYXJnaW5Mb2dpY2FsTGVmdDsKQEAgLTI1NjksNyArMjY0MSw3IEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwg
TGF5b3V0VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWluTWFyZ2luTG9naWNhbFJpZ2h0Owog
ICAgICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCksIGNv
bnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoVXNpbmcoTWluTG9naWNhbFdpZHRoLCBjb250YWluZXJCbG9jaywgY29u
dGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dp
Y2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRo
LCBtaW5NYXJnaW5Mb2dpY2FsTGVmdCwgbWluTWFyZ2luTG9naWNhbFJpZ2h0LCBtaW5Mb2dpY2Fs
TGVmdFBvcyk7CkBAIC0yNTgzLDcgKzI2NTUsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGgoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwog
ICAgIH0KIAogICAgIGlmIChzdHJldGNoZXNUb01pbkludHJpbnNpY0xvZ2ljYWxXaWR0aCgpICYm
IGxvZ2ljYWxXaWR0aCgpIDwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1
c1BhZGRpbmcpIHsKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhM
ZW5ndGgobWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcsIEZp
eGVkKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICAgICAgY29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhNaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNv
bnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1Bh
ZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNh
bExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdp
bkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2dpY2FsV2lkdGhSZXN1bHQsIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMsIG1hcmdpbkxvZ2lj
YWxSaWdodEFsaWFzLCBsb2dpY2FsTGVmdFJlc3VsdCk7CkBAIC0yNjIwLDcgKzI2OTIsNyBAQCBz
dGF0aWMgdm9pZCBjb21wdXRlTG9naWNhbExlZnRQb3NpdGlvbmVkT2Zmc2V0KExheW91dFVuaXQm
IGxvZ2ljYWxMZWZ0UG9zLCBjb25zdAogICAgICAgICBsb2dpY2FsTGVmdFBvcyArPSAoY2hpbGQt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjb250YWluZXJCbG9jay0+Ym9yZGVyTGVmdCgp
IDogY29udGFpbmVyQmxvY2stPmJvcmRlclRvcCgpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLCBUZXh0RGlyZWN0aW9uIGNv
bnRhaW5lckRpcmVjdGlvbiwKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxXaWR0aFVzaW5nKExvZ2ljYWxXaWR0aFR5cGUgd2lkdGhUeXBlLCBjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29udGFpbmVyRGlyZWN0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYm9yZGVyc1BsdXNQ
YWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTGVuZ3RoIGxvZ2ljYWxMZWZ0LCBMZW5ndGggbG9naWNhbFJpZ2h0LCBMZW5ndGggbWFyZ2lu
TG9naWNhbExlZnQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsb2dpY2FsV2lk
dGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSwgTGF5b3V0VW5pdCYg
bWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9zKQpAQCAt
MjYyOCwxNCArMjcwMCwzMSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZQogICAgIC8vICdsZWZ0
JyBhbmQgJ3JpZ2h0JyBjYW5ub3QgYm90aCBiZSAnYXV0bycgYmVjYXVzZSBvbmUgd291bGQgb2Yg
YmVlbgogICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgc3RhdGljIHBvc2l0aW9uIGFscmVhZHkKICAg
ICBBU1NFUlQoIShsb2dpY2FsTGVmdC5pc0F1dG8oKSAmJiBsb2dpY2FsUmlnaHQuaXNBdXRvKCkp
KTsKKyAgICBMZW5ndGggbG9naWNhbFdpZHRoOworICAgIHN3aXRjaCAod2lkdGhUeXBlKSB7Cisg
ICAgY2FzZSBMb2dpY2FsV2lkdGg6CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlKCktPmxv
Z2ljYWxXaWR0aCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pbkxvZ2ljYWxXaWR0aDoK
KyAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTWF4TG9naWNhbFdpZHRoOgorICAgICAgICBsb2dpY2FsV2lk
dGggPSBzdHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGg6CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9ICBMZW5n
dGgobWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcsIEZpeGVk
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdFZh
bHVlID0gMDsKIAotICAgIGJvb2wgbG9naWNhbFdpZHRoSXNBdXRvID0gbG9naWNhbFdpZHRoLmlz
SW50cmluc2ljT3JBdXRvKCk7Ci0gICAgYm9vbCBsb2dpY2FsTGVmdElzQXV0byA9IGxvZ2ljYWxM
ZWZ0LmlzQXV0bygpOwotICAgIGJvb2wgbG9naWNhbFJpZ2h0SXNBdXRvID0gbG9naWNhbFJpZ2h0
LmlzQXV0bygpOworICAgIGJvb2wgdXNlQXNwZWN0UmF0aW8gPSB1c2VBc3BlY3RSYXRpb0Zvcldp
ZHRoKGxvZ2ljYWxXaWR0aCwgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7CisgICAgLy8gSWYg
d2UgYXJlIHVzaW5nIGFzcGVjdC1yYXRpbyBmb3Igd2lkdGggdGhlbiB0aGVyZSBpcyBhIGNvbnN0
cmFpbnQgb24gd2lkdGguCisgICAgYm9vbCBsb2dpY2FsV2lkdGhJc1VuY29uc3RyYWluZWQgPSBs
b2dpY2FsV2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhdXNlQXNwZWN0UmF0aW87CisgICAg
Ym9vbCBsb2dpY2FsTGVmdElzVW5jb25zdHJhaW5lZCA9IGxvZ2ljYWxMZWZ0LmlzQXV0bygpOwor
ICAgIGJvb2wgbG9naWNhbFJpZ2h0SXNVbmNvbnN0cmFpbmVkID0gbG9naWNhbFJpZ2h0LmlzQXV0
bygpOwogCi0gICAgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiAhbG9naWNhbFdpZHRoSXNBdXRv
ICYmICFsb2dpY2FsUmlnaHRJc0F1dG8pIHsKKyAgICBpZiAoIWxvZ2ljYWxMZWZ0SXNVbmNvbnN0
cmFpbmVkICYmICFsb2dpY2FsV2lkdGhJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxSaWdodElz
VW5jb25zdHJhaW5lZCkgewogICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgICAgICAgICog
SWYgbm9uZSBvZiB0aGUgdGhyZWUgaXMgJ2F1dG8nOiBJZiBib3RoICdtYXJnaW4tbGVmdCcgYW5k
ICdtYXJnaW4tCiAgICAgICAgICAqIHJpZ2h0JyBhcmUgJ2F1dG8nLCBzb2x2ZSB0aGUgZXF1YXRp
b24gdW5kZXIgdGhlIGV4dHJhIGNvbnN0cmFpbnQgdGhhdApAQCAtMjY1Myw2ICsyNzQyLDIzIEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0
aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlCiAKICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGxv
Z2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICBsb2dp
Y2FsV2lkdGhWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0
aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgIGlmICh1c2VBc3Bl
Y3RSYXRpbykgeworICAgICAgICAgICAgZmxvYXQgcmVxdWlyZWRSYXRpbyA9IHN0eWxlKCktPmFz
cGVjdFJhdGlvKCk7CisgICAgICAgICAgICBpZiAobG9naWNhbEhlaWdodCgpKSB7CisgICAgICAg
ICAgICAgICAgaW50IHdpZHRoRm9yQXNwZWN0UmF0aW8gPSBzdGF0aWNfY2FzdDxpbnQ+KGxvZ2lj
YWxIZWlnaHQoKSAqIHJlcXVpcmVkUmF0aW8pOworICAgICAgICAgICAgICAgIGlmICh3aWR0aFR5
cGUgPT0gTG9naWNhbFdpZHRoKQorICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1
ZSA9ICB3aWR0aEZvckFzcGVjdFJhdGlvOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAvLyBIZWlnaHQgaXMgbm90IGRldGVybWluZWQgc28gTG9naWNhbFdpZHRoIGlzIHRo
ZSBjb250YWluZXIncyBjb250ZW50IHdpZHRoLgorICAgICAgICAgICAgICAgIC8vIHdpZHRoVHlw
ZSB3aWxsIGJlIExvZ2ljYWxNaW5XaWR0aCBvciBMb2dpY2FsTWF4V2lkdGggb25seSBpZiB0aGV5
IGFyZSBzcGVjaWZpZWQgaW4gd2hpY2gKKyAgICAgICAgICAgICAgICAvLyBjYXNlIHRoZXkgaGF2
ZSB0byBiZSByZXNwZWN0ZWQuCisgICAgICAgICAgICAgICAgaWYgKHdpZHRoVHlwZSA9PSBMb2dp
Y2FsV2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVDb250
YWluZXJXaWR0aCA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIChsb2dpY2FsTGVmdFZhbHVlICsg
Ym9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFs
dWUgPSBhdmFpbGFibGVDb250YWluZXJXaWR0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBjb25zdCBMYXlv
dXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxM
ZWZ0VmFsdWUgKyBsb2dpY2FsV2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29u
dGFpbmVyTG9naWNhbFdpZHRoKSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CiAKQEAgLTI3NDEsNyAr
Mjg0Nyw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVz
aW5nKExlbmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlCiAKICAgICAgICAgLy8gRklYTUU6IElz
IHRoZXJlIGEgZmFzdGVyIHdheSB0byBmaW5kIHRoZSBjb3JyZWN0IGNhc2U/CiAgICAgICAgIC8v
IFVzZSBydWxlL2Nhc2UgdGhhdCBhcHBsaWVzLgotICAgICAgICBpZiAobG9naWNhbExlZnRJc0F1
dG8gJiYgbG9naWNhbFdpZHRoSXNBdXRvICYmICFsb2dpY2FsUmlnaHRJc0F1dG8pIHsKKyAgICAg
ICAgaWYgKGxvZ2ljYWxMZWZ0SXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxXaWR0aElzVW5jb25z
dHJhaW5lZCAmJiAhbG9naWNhbFJpZ2h0SXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgICAgICAv
LyBSVUxFIDE6ICh1c2Ugc2hyaW5rLXRvLWZpdCBmb3Igd2lkdGgsIGFuZCBzb2x2ZSBvZiBsZWZ0
KQogICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRWYWx1ZSA9IGxvZ2ljYWxSaWdo
dC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIApAQCAtMjc1MSw3ICsyODU3LDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVu
Z3RoIGxvZ2ljYWxXaWR0aCwgY29uc3QgUmUKICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxh
YmxlV2lkdGggPSBhdmFpbGFibGVTcGFjZSAtIGxvZ2ljYWxSaWdodFZhbHVlOwogICAgICAgICAg
ICAgbG9naWNhbFdpZHRoVmFsdWUgPSBtaW4obWF4KHByZWZlcnJlZE1pbldpZHRoLCBhdmFpbGFi
bGVXaWR0aCksIHByZWZlcnJlZFdpZHRoKTsKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUg
PSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVl
KTsKLSAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYgbG9naWNhbFdpZHRo
SXNBdXRvICYmIGxvZ2ljYWxSaWdodElzQXV0bykgeworICAgICAgICB9IGVsc2UgaWYgKCFsb2dp
Y2FsTGVmdElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2FsV2lkdGhJc1VuY29uc3RyYWluZWQgJiYg
bG9naWNhbFJpZ2h0SXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDM6ICh1
c2Ugc2hyaW5rLXRvLWZpdCBmb3Igd2lkdGgsIGFuZCBubyBuZWVkIHNvbHZlIG9mIHJpZ2h0KQog
ICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsV2lkdGgpOwogCkBAIC0yNzYwLDE4ICsyODY2LDUzIEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2FsV2lk
dGgsIGNvbnN0IFJlCiAgICAgICAgICAgICBMYXlvdXRVbml0IHByZWZlcnJlZE1pbldpZHRoID0g
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmc7CiAgICAgICAg
ICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoID0gYXZhaWxhYmxlU3BhY2UgLSBsb2dpY2Fs
TGVmdFZhbHVlOwogICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBtaW4obWF4KHByZWZl
cnJlZE1pbldpZHRoLCBhdmFpbGFibGVXaWR0aCksIHByZWZlcnJlZFdpZHRoKTsKLSAgICAgICAg
fSBlbHNlIGlmIChsb2dpY2FsTGVmdElzQXV0byAmJiAhbG9naWNhbFdpZHRoSXNBdXRvICYmICFs
b2dpY2FsUmlnaHRJc0F1dG8pIHsKKyAgICAgICAgfSBlbHNlIGlmIChsb2dpY2FsTGVmdElzVW5j
b25zdHJhaW5lZCAmJiAhbG9naWNhbFdpZHRoSXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsUmln
aHRJc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgNDogKHNvbHZlIGZvciBs
ZWZ0KQogICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExv
Z2ljYWxXaWR0aChsb2dpY2FsV2lkdGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkp
OworICAgICAgICAgICAgaWYgKHVzZUFzcGVjdFJhdGlvKSB7CisgICAgICAgICAgICAgICAgZmxv
YXQgcmVxdWlyZWRSYXRpbyA9IHN0eWxlKCktPmFzcGVjdFJhdGlvKCk7CisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMuCisgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxI
ZWlnaHQoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGhGb3JBc3BlY3RSYXRpbyA9
IHN0YXRpY19jYXN0PGludD4obG9naWNhbEhlaWdodCgpICogcmVxdWlyZWRSYXRpbyk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICh3aWR0aFR5cGUgPT0gTG9naWNhbFdpZHRoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSAgd2lkdGhGb3JBc3BlY3RSYXRpbzsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBIZWlnaHQg
aXMgbm90IGRldGVybWluZWQgc28gTG9naWNhbFdpZHRoIGlzIHRoZSBjb250YWluZXIncyBjb250
ZW50IHdpZHRoLgorICAgICAgICAgICAgICAgICAgICAvLyB3aWR0aFR5cGUgd2lsbCBiZSBMb2dp
Y2FsTWluV2lkdGggb3IgTG9naWNhbE1heFdpZHRoIG9ubHkgaWYgdGhleSBhcmUgc3BlY2lmaWVk
IGluIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgdGhleSBoYXZlIHRvIGJlIHJl
c3BlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lk
dGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlQ29udGFp
bmVyV2lkdGggPSBjb250YWluZXJMb2dpY2FsV2lkdGggLSAobG9naWNhbFJpZ2h0LmNhbGNNaW5W
YWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gYXZhaWxhYmxlQ29udGFpbmVy
V2lkdGg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1
ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxXaWR0aFZhbHVlICsgbG9naWNhbFJpZ2h0LmNh
bGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKLSAgICAgICAgfSBlbHNlIGlmICghbG9n
aWNhbExlZnRJc0F1dG8gJiYgbG9naWNhbFdpZHRoSXNBdXRvICYmICFsb2dpY2FsUmlnaHRJc0F1
dG8pIHsKKyAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJc1VuY29uc3RyYWluZWQgJiYg
bG9naWNhbFdpZHRoSXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsUmlnaHRJc1VuY29uc3RyYWlu
ZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgNTogKHNvbHZlIGZvciB3aWR0aCkKICAgICAgICAg
ICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gYXZhaWxhYmxlU3Bh
Y2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVy
TG9naWNhbFdpZHRoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYm
ICFsb2dpY2FsV2lkdGhJc0F1dG8gJiYgbG9naWNhbFJpZ2h0SXNBdXRvKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsV2lkdGhJc1Vu
Y29uc3RyYWluZWQgJiYgbG9naWNhbFJpZ2h0SXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgICAg
ICAvLyBSVUxFIDY6IChubyBuZWVkIHNvbHZlIGZvciByaWdodCkKICAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRo
KTsKICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dp
Y2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsK
KyAgICAgICAgICAgIGlmICh1c2VBc3BlY3RSYXRpbykgeworICAgICAgICAgICAgICAgIGZsb2F0
IHJlcXVpcmVkUmF0aW8gPSBzdHlsZSgpLT5hc3BlY3RSYXRpbygpOworICAgICAgICAgICAgICAg
IGlmIChsb2dpY2FsSGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoRm9y
QXNwZWN0UmF0aW8gPSBzdGF0aWNfY2FzdDxpbnQ+KGxvZ2ljYWxIZWlnaHQoKSAqIHJlcXVpcmVk
UmF0aW8pOworICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0
aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gIHdpZHRoRm9y
QXNwZWN0UmF0aW87CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gSGVpZ2h0IGlzIG5vdCBkZXRlcm1pbmVkIHNvIExvZ2ljYWxXaWR0aCBpcyB0aGUgY29u
dGFpbmVyJ3MgY29udGVudCB3aWR0aC4KKyAgICAgICAgICAgICAgICAgICAgLy8gd2lkdGhUeXBl
IHdpbGwgYmUgTG9naWNhbE1pbldpZHRoIG9yIExvZ2ljYWxNYXhXaWR0aCBvbmx5IGlmIHRoZXkg
YXJlIHNwZWNpZmllZCBpbiB3aGljaAorICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIHRoZXkg
aGF2ZSB0byBiZSByZXNwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aFR5cGUg
PT0gTG9naWNhbFdpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGF2
YWlsYWJsZUNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxM
ZWZ0VmFsdWUgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAg
bG9naWNhbFdpZHRoVmFsdWUgPSBhdmFpbGFibGVDb250YWluZXJXaWR0aDsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI4NjQsNyArMzAwNSw3IEBAIHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoKQogICAgIExheW91dFVu
aXQgbG9naWNhbFRvcFBvczsKIAogICAgIC8vIENhbGN1bGF0ZSBjb25zdHJhaW50IGVxdWF0aW9u
IHZhbHVlcyBmb3IgJ2hlaWdodCcgY2FzZS4KLSAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxI
ZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250
YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJzUGx1c1BhZGRpbmcsCisgICAgY29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTG9naWNhbEhlaWdodCwgY29udGFpbmVyQmxvY2ssIGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9wTGVuZ3RoLCBsb2dpY2FsQm90dG9t
TGVuZ3RoLCBtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRSZXN1bHQsIG1hcmdpbkJlZm9yZUFsaWFz
LCBtYXJnaW5BZnRlckFsaWFzLCBsb2dpY2FsVG9wUG9zKTsKICAgICBzZXRMb2dpY2FsVG9wKGxv
Z2ljYWxUb3BQb3MpOwpAQCAtMjg3OSw3ICszMDIwLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCgpCiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2lu
QWZ0ZXI7CiAgICAgICAgIExheW91dFVuaXQgbWF4TG9naWNhbFRvcFBvczsKIAotICAgICAgICBj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsTWF4SGVp
Z2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJzUGx1
c1BhZGRpbmcsCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKE1h
eExvZ2ljYWxIZWlnaHQsIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBi
b3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3BMZW5ndGgsIGxvZ2ljYWxCb3R0b21MZW5ndGgsIG1hcmdpbkJlZm9y
ZSwgbWFyZ2luQWZ0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heExvZ2ljYWxIZWlnaHQsIG1heE1hcmdpbkJlZm9yZSwgbWF4TWFyZ2luQWZ0ZXIsIG1h
eExvZ2ljYWxUb3BQb3MpOwogCkBAIC0yODk4LDcgKzMwMzksNyBAQCB2b2lkIFJlbmRlckJveDo6
Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCkKICAgICAgICAgTGF5b3V0VW5pdCBtaW5N
YXJnaW5BZnRlcjsKICAgICAgICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsVG9wUG9zOwogCi0gICAg
ICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxN
aW5IZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRl
cnNQbHVzUGFkZGluZywKKyAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNp
bmcoTWluTG9naWNhbEhlaWdodCwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9naWNhbFRvcExlbmd0aCwgbG9naWNhbEJvdHRvbUxlbmd0aCwgbWFyZ2lu
QmVmb3JlLCBtYXJnaW5BZnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWluTG9naWNhbEhlaWdodCwgbWluTWFyZ2luQmVmb3JlLCBtaW5NYXJnaW5BZnRl
ciwgbWluTG9naWNhbFRvcFBvcyk7CiAKQEAgLTI5NTAsNyArMzA5MSw3IEBAIHN0YXRpYyB2b2lk
IGNvbXB1dGVMb2dpY2FsVG9wUG9zaXRpb25lZE9mZnNldChMYXlvdXRVbml0JiBsb2dpY2FsVG9w
UG9zLCBjb25zdCBSCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywKK3ZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhMb2dpY2FsSGVpZ2h0VHlwZSBoZWlnaHRU
eXBlLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBj
b250YWluZXJMb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgg
bG9naWNhbFRvcCwgTGVuZ3RoIGxvZ2ljYWxCb3R0b20sIExlbmd0aCBtYXJnaW5CZWZvcmUsIExl
bmd0aCBtYXJnaW5BZnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsb2dpY2FsSGVpZ2h0VmFsdWUsIExheW91dFVuaXQm
IG1hcmdpbkJlZm9yZVZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5BZnRlclZhbHVlLCBMYXlvdXRV
bml0JiBsb2dpY2FsVG9wUG9zKQpAQCAtMjk1OCwyMiArMzA5OSwzNSBAQCB2b2lkIFJlbmRlckJv
eDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWln
aHRMZW5ndGgsCiAgICAgLy8gJ3RvcCcgYW5kICdib3R0b20nIGNhbm5vdCBib3RoIGJlICdhdXRv
JyBiZWNhdXNlICd0b3Agd291bGQgb2YgYmVlbgogICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgc3Rh
dGljIHBvc2l0aW9uIGluIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCgpCiAgICAgQVNT
RVJUKCEobG9naWNhbFRvcC5pc0F1dG8oKSAmJiBsb2dpY2FsQm90dG9tLmlzQXV0bygpKSk7Cisg
ICAgTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGg7CisgICAgc3dpdGNoIChoZWlnaHRUeXBlKSB7
CisgICAgY2FzZSBMb2dpY2FsSGVpZ2h0OgorICAgICAgICBsb2dpY2FsSGVpZ2h0TGVuZ3RoID0g
c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pbkxv
Z2ljYWxIZWlnaHQ6CisgICAgICAgIGxvZ2ljYWxIZWlnaHRMZW5ndGggPSBzdHlsZSgpLT5sb2dp
Y2FsTWluSGVpZ2h0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWF4TG9naWNhbEhlaWdo
dDoKKyAgICAgICAgbG9naWNhbEhlaWdodExlbmd0aCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhIZWln
aHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgTGF5b3V0VW5pdCBjb250ZW50TG9n
aWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlcnNQbHVzUGFkZGluZzsKIAogICAg
IExheW91dFVuaXQgbG9naWNhbFRvcFZhbHVlID0gMDsKIAotICAgIGJvb2wgbG9naWNhbEhlaWdo
dElzQXV0byA9IGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNBdXRvKCk7Ci0gICAgYm9vbCBsb2dpY2Fs
VG9wSXNBdXRvID0gbG9naWNhbFRvcC5pc0F1dG8oKTsKLSAgICBib29sIGxvZ2ljYWxCb3R0b21J
c0F1dG8gPSBsb2dpY2FsQm90dG9tLmlzQXV0bygpOworICAgIGJvb2wgdXNlQXNwZWN0UmF0aW8g
PSB1c2VBc3BlY3RSYXRpb0ZvckhlaWdodChsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBsb2dpY2FsVG9w
LCBsb2dpY2FsQm90dG9tKTsKKyAgICBib29sIGxvZ2ljYWxIZWlnaHRJc1VuY29uc3RyYWluZWQg
PSBsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzQXV0bygpICYmICF1c2VBc3BlY3RSYXRpbzsKKyAgICBi
b29sIGxvZ2ljYWxUb3BJc1VuY29uc3RyYWluZWQgPSBsb2dpY2FsVG9wLmlzQXV0bygpOworICAg
IGJvb2wgbG9naWNhbEJvdHRvbUlzVW5jb25zdHJhaW5lZCA9IGxvZ2ljYWxCb3R0b20uaXNBdXRv
KCk7CiAKICAgICAvLyBIZWlnaHQgaXMgbmV2ZXIgdW5zb2x2ZWQgZm9yIHRhYmxlcy4KICAgICBp
ZiAoaXNUYWJsZSgpKSB7CiAgICAgICAgIGxvZ2ljYWxIZWlnaHRMZW5ndGguc2V0VmFsdWUoRml4
ZWQsIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9naWNhbEhlaWdodElzQXV0byA9
IGZhbHNlOworICAgICAgICBsb2dpY2FsSGVpZ2h0SXNVbmNvbnN0cmFpbmVkID0gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKCFsb2dpY2FsVG9wSXNBdXRvICYmICFsb2dpY2FsSGVpZ2h0SXNBdXRv
ICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CisgICAgaWYgKCFsb2dpY2FsVG9wSXNVbmNvbnN0
cmFpbmVkICYmICFsb2dpY2FsSGVpZ2h0SXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsQm90dG9t
SXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgICAgICAg
KiBJZiBub25lIG9mIHRoZSB0aHJlZSBhcmUgJ2F1dG8nOiBJZiBib3RoICdtYXJnaW4tdG9wJyBh
bmQgJ21hcmdpbi0KICAgICAgICAgICogYm90dG9tJyBhcmUgJ2F1dG8nLCBzb2x2ZSB0aGUgZXF1
YXRpb24gdW5kZXIgdGhlIGV4dHJhIGNvbnN0cmFpbnQgdGhhdApAQCAtMjk4NSw5ICszMTM5LDIx
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhM
ZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwKICAgICAgICAgLy8gTk9URTogIEl0IGlzIG5vdCBu
ZWNlc3NhcnkgdG8gc29sdmUgZm9yICdib3R0b20nIGluIHRoZSBvdmVyIGNvbnN0cmFpbmVkCiAg
ICAgICAgIC8vIGNhc2UgYmVjYXVzZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQgZm9yIGFueSBmdXJ0
aGVyIGNhbGN1bGF0aW9ucy4KIAotICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRl
Q29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodExlbmd0aC5jYWxjVmFsdWUoY29u
dGFpbmVyTG9naWNhbEhlaWdodCkpOwogICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2Fs
VG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKLQorICAgICAgICBsb2dpY2Fs
SGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOworICAgICAgICBpZiAo
dXNlQXNwZWN0UmF0aW8pIHsKKyAgICAgICAgICAgIGZsb2F0IHJlcXVpcmVkUmF0aW8gPSBzdHls
ZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkgLyBzdHlsZSgpLT5hc3BlY3RSYXRpb051bWVy
YXRvcigpOworICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgpKSB7CisgICAgICAgICAgICAg
ICAgaW50IGhlaWdodEZvckFzcGVjdFJhdGlvID0gc3RhdGljX2Nhc3Q8aW50Pihsb2dpY2FsV2lk
dGgoKSAqIHJlcXVpcmVkUmF0aW8pOworICAgICAgICAgICAgICAgIGlmIChoZWlnaHRUeXBlID09
IExvZ2ljYWxIZWlnaHQpCisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9
IGhlaWdodEZvckFzcGVjdFJhdGlvOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaGVpZ2h0VHlwZSA9PSBMb2dpY2FsSGVpZ2h0KSB7CisgICAgICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgYXZhaWxhYmxlQ29udGFpbmVySGVpZ2h0ID0gY29udGFpbmVyTG9naWNh
bEhlaWdodCAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsSGVpZ2h0KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CisgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGF2YWlsYWJsZUNvbnRhaW5lckhlaWdodDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgY29uc3Qg
TGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAobG9n
aWNhbFRvcFZhbHVlICsgbG9naWNhbEhlaWdodFZhbHVlICsgbG9naWNhbEJvdHRvbS5jYWxjVmFs
dWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwogCiAgICAg
ICAgIC8vIE1hcmdpbnMgYXJlIG5vdyB0aGUgb25seSB1bmtub3duCkBAIC0zMDQyLDI2ICszMjA4
LDUyIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2lu
ZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwKICAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBh
dmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAobWFyZ2luQmVmb3JlVmFs
dWUgKyBtYXJnaW5BZnRlclZhbHVlICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIAogICAgICAgICAv
LyBVc2UgcnVsZS9jYXNlIHRoYXQgYXBwbGllcy4KLSAgICAgICAgaWYgKGxvZ2ljYWxUb3BJc0F1
dG8gJiYgbG9naWNhbEhlaWdodElzQXV0byAmJiAhbG9naWNhbEJvdHRvbUlzQXV0bykgeworICAg
ICAgICBpZiAobG9naWNhbFRvcElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2FsSGVpZ2h0SXNVbmNv
bnN0cmFpbmVkICYmICFsb2dpY2FsQm90dG9tSXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgICAg
ICAvLyBSVUxFIDE6IChoZWlnaHQgaXMgY29udGVudCBiYXNlZCwgc29sdmUgb2YgdG9wKQogICAg
ICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29udGVudExvZ2ljYWxIZWlnaHQ7CiAgICAg
ICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsSGVpZ2h0
VmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc0F1dG8gJiYgbG9naWNhbEhlaWdodElz
QXV0byAmJiBsb2dpY2FsQm90dG9tSXNBdXRvKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2lj
YWxUb3BJc1VuY29uc3RyYWluZWQgJiYgbG9naWNhbEhlaWdodElzVW5jb25zdHJhaW5lZCAmJiBs
b2dpY2FsQm90dG9tSXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDM6ICho
ZWlnaHQgaXMgY29udGVudCBiYXNlZCwgbm8gbmVlZCBzb2x2ZSBvZiBib3R0b20pCiAgICAgICAg
ICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KTsKICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbnRlbnRMb2dp
Y2FsSGVpZ2h0OwotICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxUb3BJc0F1dG8gJiYgIWxvZ2lj
YWxIZWlnaHRJc0F1dG8gJiYgIWxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsKKyAgICAgICAgfSBlbHNl
IGlmIChsb2dpY2FsVG9wSXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsSGVpZ2h0SXNVbmNvbnN0
cmFpbmVkICYmICFsb2dpY2FsQm90dG9tSXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgICAgICAv
LyBSVUxFIDQ6IChzb2x2ZSBvZiB0b3ApCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUg
PSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodExlbmd0aC5jYWxj
VmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwogICAgICAgICAgICAgbG9naWNhbFRvcFZh
bHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsgbG9naWNhbEJvdHRv
bS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwotICAgICAgICB9IGVsc2UgaWYg
KCFsb2dpY2FsVG9wSXNBdXRvICYmIGxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgIWxvZ2ljYWxCb3R0
b21Jc0F1dG8pIHsKKyAgICAgICAgICAgIGlmICh1c2VBc3BlY3RSYXRpbykgeworICAgICAgICAg
ICAgICAgIGZsb2F0IHJlcXVpcmVkUmF0aW8gPSBzdHlsZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5h
dG9yKCkgLyBzdHlsZSgpLT5hc3BlY3RSYXRpb051bWVyYXRvcigpOworICAgICAgICAgICAgICAg
IGlmIChsb2dpY2FsV2lkdGgoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0Rm9y
QXNwZWN0UmF0aW8gPSBzdGF0aWNfY2FzdDxpbnQ+KGxvZ2ljYWxXaWR0aCgpICogcmVxdWlyZWRS
YXRpbyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHRUeXBlID09IExvZ2ljYWxIZWln
aHQpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBoZWlnaHRG
b3JBc3BlY3RSYXRpbzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoaGVpZ2h0VHlwZSA9PSBMb2dpY2FsSGVpZ2h0KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUNvbnRhaW5lckhlaWdodCA9IGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQgLSAobG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEJvdHRvbS5jYWxjVmFsdWUo
Y29udGFpbmVyTG9naWNhbEhlaWdodCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gYXZhaWxhYmxlQ29udGFpbmVySGVp
Z2h0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsVG9wSXNVbmNvbnN0cmFpbmVkICYmIGxv
Z2ljYWxIZWlnaHRJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxCb3R0b21Jc1VuY29uc3RyYWlu
ZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgNTogKHNvbHZlIG9mIGhlaWdodCkKICAgICAgICAg
ICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpOwogICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gbWF4PExheW91dFVu
aXQ+KDAsIGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b20u
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
IWxvZ2ljYWxUb3BJc0F1dG8gJiYgIWxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgbG9naWNhbEJvdHRv
bUlzQXV0bykgeworICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsVG9wSXNVbmNvbnN0cmFpbmVk
ICYmICFsb2dpY2FsSGVpZ2h0SXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxCb3R0b21Jc1VuY29u
c3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgNjogKG5vIG5lZWQgc29sdmUgb2YgYm90
dG9tKQogICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpKTsKICAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2Fs
Y1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAgaWYgKHVzZUFzcGVj
dFJhdGlvKSB7CisgICAgICAgICAgICAgICAgZmxvYXQgcmVxdWlyZWRSYXRpbyA9IHN0eWxlKCkt
PmFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSAvIHN0eWxlKCktPmFzcGVjdFJhdGlvTnVtZXJhdG9y
KCk7CisgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGludCBoZWlnaHRGb3JBc3BlY3RSYXRpbyA9IHN0YXRpY19jYXN0PGludD4obG9naWNh
bFdpZHRoKCkgKiByZXF1aXJlZFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhlaWdo
dFR5cGUgPT0gTG9naWNhbEhlaWdodCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxI
ZWlnaHRWYWx1ZSA9IGhlaWdodEZvckFzcGVjdFJhdGlvOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHRUeXBlID09IExvZ2ljYWxIZWlnaHQp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlQ29udGFpbmVy
SGVpZ2h0ID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dp
Y2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSArIGJvcmRlcnNQbHVz
UGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBh
dmFpbGFibGVDb250YWluZXJIZWlnaHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBiYzFmZmQ5ODM0Y2I3OWI0N2Y3MGU3YTJjZGVkZmE0
ZWRhNzQxMmYwLi42NjM5NjM1MTUxMmJhZTI1NDY4ZmEzNTNmNDkwMWUzZmQ1N2I1MGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0zMyw3ICszMyw4IEBAIGNsYXNzIFJl
bmRlckJveFJlZ2lvbkluZm87CiBjbGFzcyBSZW5kZXJSZWdpb247CiBzdHJ1Y3QgUGFpbnRJbmZv
OwogCi1lbnVtIExvZ2ljYWxXaWR0aFR5cGUgeyBMb2dpY2FsV2lkdGgsIE1pbkxvZ2ljYWxXaWR0
aCwgTWF4TG9naWNhbFdpZHRoIH07CitlbnVtIExvZ2ljYWxXaWR0aFR5cGUgeyBMb2dpY2FsV2lk
dGgsIE1pbkxvZ2ljYWxXaWR0aCwgTWF4TG9naWNhbFdpZHRoLCBNaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGggfTsKK2VudW0gTG9naWNhbEhlaWdodFR5cGUgeyBMb2dpY2FsSGVpZ2h0LCBNaW5Mb2dp
Y2FsSGVpZ2h0LCBNYXhMb2dpY2FsSGVpZ2h0IH07CiAKIGVudW0gT3ZlcmxheVNjcm9sbGJhclNp
emVSZWxldmFuY3kgeyBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgSW5jbHVkZU92ZXJsYXlT
Y3JvbGxiYXJTaXplIH07CiAKQEAgLTI5OCw2ICsyOTksMTIgQEAgcHVibGljOgogICAgIExheW91
dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudEluUmVnaW9uKFJlbmRl
clJlZ2lvbiosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBwZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhl
aWdodCgpIGNvbnN0OwogICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc1dpZHRoRGV0ZXJtaW5lZFVz
aW5nKGNvbnN0IExlbmd0aCYgbG9naWNhbFdpZHRoLCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0
LCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
SGVpZ2h0RGV0ZXJtaW5lZFVzaW5nKGNvbnN0IExlbmd0aCYgbG9naWNhbEhlaWdodCwgY29uc3Qg
TGVuZ3RoJiBsb2dpY2FsVG9wLCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20pIGNvbnN0Owor
CisgICAgYm9vbCB1c2VBc3BlY3RSYXRpb0ZvcldpZHRoKGNvbnN0IExlbmd0aCYgbG9naWNhbFdp
ZHRoLCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdo
dCkgY29uc3Q7CisgICAgYm9vbCB1c2VBc3BlY3RSYXRpb0ZvckhlaWdodChjb25zdCBMZW5ndGgm
IGxvZ2ljYWxIZWlnaHQsIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCwgY29uc3QgTGVuZ3RoJiBs
b2dpY2FsQm90dG9tKSBjb25zdDsKKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2lj
YWxXaWR0aCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodCgpOwogCkBA
IC0zMTksNyArMzI2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdHJldGNoZXNUb01p
bkludHJpbnNpY0xvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBM
YXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsV2lkdGhVc2luZyhMb2dpY2FsV2lkdGhUeXBlLCBMYXlv
dXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlTG9n
aWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaGVpZ2h0KTsKKyAgICBMYXlvdXRVbml0IGNv
bXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTG9naWNhbEhlaWdodFR5cGUpOwogICAgIExheW91dFVu
aXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIHdpZHRoKSBjb25zdDsK
ICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5N
YXhXaWR0aChMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgYm9vbCBpbmNsdWRlTWF4V2lkdGggPSB0
cnVlKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRV
c2luZyhMZW5ndGggaGVpZ2h0KSBjb25zdDsKQEAgLTQ3MywxMSArNDgwLDExIEBAIHByaXZhdGU6
CiAgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25l
ZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmluZ0Jsb2NrLCBib29sIGNoZWNr
Rm9yUGVycGVuZGljdWxhcldyaXRpbmdNb2RlID0gdHJ1ZSkgY29uc3Q7CiAKICAgICB2b2lkIGNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCgpOwotICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29udGFpbmVyRGlyZWN0
aW9uLAorICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMb2dpY2Fs
V2lkdGhUeXBlLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRl
eHREaXJlY3Rpb24gY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgTGF5
b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsTGVmdCwgTGVuZ3RoIGxvZ2ljYWxSaWdodCwg
TGVuZ3RoIG1hcmdpbkxvZ2ljYWxMZWZ0LCBMZW5ndGggbWFyZ2luTG9naWNhbFJpZ2h0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsb2dp
Y2FsV2lkdGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSwgTGF5b3V0
VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9z
KTsKLSAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBs
b2dpY2FsSGVpZ2h0LCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ss
CisgICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhMb2dpY2FsSGVp
Z2h0VHlwZSwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250
YWluZXJMb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsVG9w
LCBMZW5ndGggbG9naWNhbEJvdHRvbSwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxUb3AsIExlbmd0aCBt
YXJnaW5Mb2dpY2FsQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCYgbG9naWNhbEhlaWdodFZhbHVlLCBMYXlvdXRVbml0JiBtYXJn
aW5Mb2dpY2FsVG9wVmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxCb3R0b21WYWx1ZSwg
TGF5b3V0VW5pdCYgbG9naWNhbFRvcFBvcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAxNTM1NGM1ODRmZDNmYmNmNGEzNzlmNjQxOWJm
MWZhYThhOTdkZmY0Li5iY2JkZDQ3MjVmMzAwZGI1NWFlOTIxYjY1NWQ0MDJjNTgzZTQ4ZDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAg
LTM4NSw2ICszODUsMTYgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0
IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb24KICAgICAgICAgICAgIHx8
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgIT0gb3RoZXItPnJhcmVOb25Jbmhl
cml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJl
bmNlTGF5b3V0OwogCisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9oYXNBc3Bl
Y3RSYXRpbyAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1faGFzQXNwZWN0UmF0aW8p
CisgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OworCisgICAgICAgIGlm
IChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9oYXNBc3BlY3RSYXRpbykgeworICAgICAgICAgICAg
ZmxvYXQgYXNwZWN0UmF0aW8gPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb051
bWVyYXRvciAvIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3I7
CisgICAgICAgICAgICBmbG9hdCBvdGhlckFzcGVjdFJhdGlvID0gb3RoZXItPnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yIC8gb3RoZXItPnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3I7CisgICAgICAgICAgICBpZiAoYXNwZWN0
UmF0aW8gIT0gb3RoZXJBc3BlY3RSYXRpbykKKyAgICAgICAgICAgICAgICByZXR1cm4gU3R5bGVE
aWZmZXJlbmNlTGF5b3V0OworICAgICAgICB9CisKICAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3JlZ2lvbk92ZXJmbG93ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9yZWdpb25PdmVyZmxvdykKICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlv
dXQ7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA3MzI1ZDA0YWY4ZDAyODJkNmMxNjk4Mzc1NDI3ZjA1ODlhZjg1ZDQ4Li40
YTI2Njc3OTZhYjc5NWE4NWJhZTk4YjUwNTU0Nzc4Y2EwMmQ5ODQ3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzIgQEAKKzIwMTEtMTEtMjkgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgLXdlYmtpdC1hc3BlY3QtcmF0aW8gTGF5b3V0IEltcGxlbWVudGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzI3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzMy9hc3BlY3Qt
cmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNv
bHV0ZS13aWR0aC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2FzcGVjdC1yYXRpby9hc3Bl
Y3QtcmF0aW8tYXV0by1oZWlnaHQuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy9hc3BlY3Qt
cmF0aW8vYXNwZWN0LXJhdGlvLWZsb2F0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvYXNw
ZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNz
czMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRvLWZpbGwuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYWJz
b2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2Fic29sdXRl
LXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8t
YWJzb2x1dGUtaGVpZ2h0LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLWhl
aWdodC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxp
bnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC1leHBlY3Rl
ZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNw
ZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2Fz
cGVjdC1yYXRpby1hdXRvLWhlaWdodC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRv
LWhlaWdodC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
LWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1mbG9hdC1leHBlY3RlZC5wbmc6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJh
dGlvL2FzcGVjdC1yYXRpby1mbG9hdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhl
cml0LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWluaGVyaXQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRp
by9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJh
dGlvLXN0cmV0Y2gtdG8tZmlsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTExLTI5ICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJl
dmlld2VkIGV2ZW5pbmcgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9h
c3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1y
aWdodC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNzg4NzMyZWExZjI3YWE0YzRlNTE5MTU1ODVkNjY1M2I0
OTRkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9h
YnNvbHV0ZS1yYXRpby1hYnNvbHV0ZS1sZWZ0LXJpZ2h0Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8
aHRtbD4KKyAgPGhlYWQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDEwcHg7IGxlZnQ6IDEwcHg7IHJpZ2h0OiAxMHB4OyAtd2Vi
a2l0LWFzcGVjdC1yYXRpbzogMTYgLyA5OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2
PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2FzcGVj
dC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9j
c3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTMyY2IzZDExNWMyMDBmMzRlMDk2MDgxZDkyYTdjNDAxYWQ4YmJmMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNv
bHV0ZS1oZWlnaHQuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9o
ZWFkPgorICA8Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdo
dDogNTBweDsgdG9wOiAxMHB4OyBsZWZ0OjEwcHg7IC13ZWJraXQtYXNwZWN0LXJhdGlvOiA5LzE2
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJz
b2x1dGUtd2lkdGguaHRtbCBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1y
YXRpby1hYnNvbHV0ZS13aWR0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZWI1OGE4MTY1MGMxYzA2MDIz
M2JiMzA5Mzk5ZDY2ODMzNThlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3Mz
L2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtd2lkdGguaHRtbApAQCAtMCwwICsx
LDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiA1MHB4OyB0b3A6IDEwcHg7IGxlZnQ6MTBw
eDsgLXdlYmtpdC1hc3BlY3QtcmF0aW86IDkvMTY7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+
PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
YXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdodC5odG1sIGIvTGF5b3V0VGVzdHMv
Y3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTVjNTljNTAxOWZmOGJkMzk2MmQwMjNlMjQ5MDA4OWMzN2M1ZTFjNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhl
aWdodC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+Cisg
IDxib2R5PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTBweDsg
d2lkdGg6IDIwMHB4OyAtd2Via2l0LWFzcGVjdC1yYXRpbzogMTYgLyA5OyBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbjsiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQuaHRtbCBiL0xheW91
dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1mbG9hdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNjMDIzZmFmMTE3NmUzYTcxOGE2NTdkNzc5ZTliZTliYTZkZjYzOWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQu
aHRtbApAQCAtMCwwICsxLDMgQEAKKzxkaXYgc3R5bGU9IndpZHRoOiA2MDBweDsgaGVpZ2h0OiAy
MDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+CisgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdo
dDsgd2lkdGg6IDUwcHg7IC13ZWJraXQtYXNwZWN0LXJhdGlvOiAxLzQ7IGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOyI+PC9kaXY+Cis8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
YXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3Mz
L2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8taW5oZXJpdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkM2Y3
NTk2ZTMwMjEyZTRmZDU2NmRmZWZhNWFjYWIzNjBkYzliNGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8taW5oZXJpdC5odG1sCkBA
IC0wLDAgKzEsOSBAQAorPGh0bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyBib3R0b206IDEwcHg7IGxl
ZnQ6IDEwcHg7IHJpZ2h0OiAxMHB4OyAtd2Via2l0LWFzcGVjdC1yYXRpbzogMjAgLyA5OyBiYWNr
Z3JvdW5kLWNvbG9yOiByZWQ7Ij4KKyAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgbGVmdDogNTBweDsgdG9wOiA1MHB4OyB3aWR0aDogMzAwcHg7IGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyAtd2Via2l0LWFzcGVjdC1yYXRpbzogaW5oZXJpdDsiPjwvZGl2PgorICAgIDwvZGl2
PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2FzcGVj
dC1yYXRpby9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9j
c3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzYwMzg0ZTI3MTI3YmY3N2RiNjY2NjQ5NjIxMGUzNTZiOTA0ZjM3MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJl
dGNoLXRvLWZpbGwuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9o
ZWFkPgorICA8Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOiAw
cHg7IGJvdHRvbTogMHB4OyBsZWZ0OiAwcHg7IHJpZ2h0OiAwcHg7IC13ZWJraXQtYXNwZWN0LXJh
dGlvOiAxNiAvIDk7IG1hcmdpbjogYXV0bzsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IG1heC1o
ZWlnaHQ6IDY0MHB4OyI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2Fic29s
dXRlLXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8t
YWJzb2x1dGUtbGVmdC1yaWdodC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkwNDgwZDEwYjY5
NWVkNzQ3NDUyMmY5OGM4NGVmNWNjYzNmOWZlMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg1
OQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBv
azxtfT9vVCEhU3QKemwkMnpYQjt5cHpCdWk3bkgxazlnXkYjdis2RWgzNUx7bnA5NlUrRiRHVFJ2
I3hifUx3SUVHWnJkMyhjPHRIblhVCnopek4qPV9LSHZVcTt0TG1OVVhaI1NORyRFc1dDZVAhYCNv
Vzg1dE9NM3F+Kzc3JmZ2cDJuZ2U1P0VXfFpgc1JCIwp6ODV1VVQ/PnhAViY3aCNSZnFAfjNYX1BT
PDIley1zRyM4QktnMygrc25oUzxwRjQmZyM+QF9hfkwtZmFrT2Jpe0kKb0l0JmRuNHZhRUoxN1Rv
TyFlNTU3RVdFMkxqJkBINnd0ZzhyVUh4M3ZJVkNnITBEZTwzMXBvajUKCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NzczMvYXNwZWN0LXJhdGlvL2Fic29sdXRlLXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3Bl
Y3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2IzMTE2MzdiZDJiOTNlNTFmNmYwZDMwZDI4ZDU3OThmNmQzY2ZmNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMv
YXNwZWN0LXJhdGlvL2Fic29sdXRlLXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
clZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorbGF5ZXIgYXQgKDEwLDEwKSBzaXplIDc4
OXg0NDQKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgxMCwxMCkgc2l6ZSA3
ODl4NDQ0IFtiZ2NvbG9yPSMwMDgwMDBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUt
aGVpZ2h0LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS1oZWlnaHQtZXhwZWN0ZWQu
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg5YzEzM2NhZDgwZDMzZjE3MDc5YzAyZjhjMWZjZmExZDk2MmZhMjQK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjAKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlV
eyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuM3t3Cno8SyRGUnFaQzZeM3JvYCEz
eGd5aHFme2RrR2VlVlBRKTRxQGdKaSRKV0hTWl51Nj4+Xmp2KkN1LXJoMGZZSDs5VAp6YVA8R1B7
bH0qdCUmUz0rJmQzYW9JaS00Wj9NekRzaDhKX3teJSlwOE5IPy1GMm5hX29GY3speVk8eWs0WFdt
cU0KeiVrQkZnR2Q5ZktuWlU/IWdoaDxPIURrcFV1QVRYX216bSl9U2orfG5oOW85IzFfaVpJIyVM
Z25yaTlVNEZxI1dTCm1iSFFqWDd8akt2eHEhQzBLITJHWEA5TFlxdG1WTXdGTjNHNnBVWE9AZ2VD
eDNsakY3awoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFi
c29sdXRlLWhlaWdodC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ4Y2UwNTIwNDI4NTk1ZmQ1NzBkZjIzYzVkY2U0MjQy
Yzk2YzM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
bGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLWhlaWdodC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CitsYXllciBhdCAoMTAsMTApIHNp
emUgMjh4NTAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgxMCwxMCkgc2l6
ZSAyOHg1MCBbYmdjb2xvcj0jMDA4MDAwXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRl
LXdpZHRoLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTAyNDljNGY2NDA4MGQyY2I2OWY3YzgxMzA2ODIyNmRjMGJiY2Q5OQpH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2NAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7
K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG19T1IKejNuUDxjJWFsWXpReGdqI2Iy
QXt2KVhkei1JTUxZTEFrRVV5ezRlWUlPQUhLTGhkZjt6TG5gTEh6Mm5IJD4+JUtKCnooQzVWN3Ft
I0ZyM28hQUV1RG9eYm5aRXFxOEslYmEzPUNISGNlNjd2P0NDd2cjTCZVMSFfWTdUSHstX3BLYjNE
Xgp6Jnl1YTVkR2BIaGg2QllyNkJycWV1IXUxQF8+M3xKRzd6cXZ4d0RzJTtYIUUzMV9wKkNDVDwx
PXdOYmBzQWRJR2oKcShPZldeM3IySW5YZjdEZDF3JTN5dXEoVXB1MEY5UVkkMzEtJTs0JGo9ZCNX
enAkUHooMHJQQUMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRp
by1hYnNvbHV0ZS13aWR0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtd2lkdGgt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMDNiYTQyOTg1Zjk5NDNhNmMyNTM1Mjg3ZmY0ZjQx
ZjM1MWU2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtd2lkdGgtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorbGF5ZXIgYXQgKDEwLDEwKSBz
aXplIDUweDg4CisgIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMTAsMTApIHNp
emUgNTB4ODggW2JnY29sb3I9IzAwODAwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhl
aWdodC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9j
c3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYXV0by1oZWlnaHQtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE0MWRhODVmZmM5OGU5Y2I2NWU4ZTM3MDA3Y2NkZTQ5MmI3NDFkOWQKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDI4NjMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYy
YT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1QheGUrCnpRdjtMSzxScjd5NmpMKX1sY1dANUdz
YDV5QiFnNlFRd3c3WVc3QXNpNEZVYGRUbjlafTk3OEpSeXVHdUxfcHBIZwp6aShfRUd7V2s2VChn
aGliajkrfENKdm5yZ0o7dTEwZiNISlhlS2BoKDRicUxRMzxBT3QzPUQ9Q2pFJTI8UkBQcTYKekZa
JlN3P0QyT35oTyVjKElGKHsqOXU+aEZyYjhgUXFLIVgpVmBGR295Q1o+LTtSdVR1Z00tZn5WPkEj
KFFeSUkyCm43fGpLdnhuTUxHak9HSUI9WWwtZkRCamghYjBpdm9Fbm8mdVMzajNeUDY8cl9hLTEp
KAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVp
Z2h0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Nz
czMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdodC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGMyOWUwZTdmOGM2ZDY0ZDgzZjQ0NWViNWI1ODgyOTUxMTU1NWFkYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNw
ZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdodC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4NTg0CitsYXllciBhdCAoMTAsOCkgc2l6ZSAyMDB4MTEyCisgIFJlbmRl
ckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMTAsOCkgc2l6ZSAyMDB4MTEyIFtiZ2NvbG9y
PSMwMDgwMDBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQtZXhwZWN0ZWQucG5nIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0
LXJhdGlvLWZsb2F0LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2RkMzQzNzFiYjIzZWM3ZjM1
YzU3YTcxZmIxMjUxYjk4ODg5NzhmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODY4CnpjbWVB
U0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29U
bjZKYgp6TCpwY0szKEZMUEx9T0Q2JVQmWH1XQ0tnZkJ2VjVST0c5SExiRUFUZGR6QmQmeFE9PGNJ
RUdacmQzKG9AP35zOWoKenQ3RmQmXkUpLWdqRigqZUJlO3kkJldeWHNlUTBYVCYlamBIe3defkUh
I2xTR011c0NTVmhqI0c3PnFaaXpjeVh0CnpQaU9lQnw2Mk9AcnU9N2I9WDxPeEtGR3ctIUt1VTBG
eXBgfFY+QSMoUXYjaUghUD1RT19jQWcoMiNlWGt6PnZobQp2JjdoeiokYH1vVihVZFRuM3IySW5Y
ZjdCJnhxeTlfSVBkRTNOflRKe1cteD1OdERubXtyLVVXfE1vTHRgCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9j
c3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJh
dGlvLWZsb2F0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjhjNzBlN2E3YzJhZmYwNzU5OWRm
MTk2MjY1NGZkOGIyMmE5YWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWZsb2F0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgNjAweDIwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBS
ZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICg1NTAsMCkgc2l6ZSA1MHgyMDAgW2JnY29s
b3I9IzAwODAwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxp
bnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0LWV4cGVjdGVkLnBuZyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2Fz
cGVjdC1yYXRpby1pbmhlcml0LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzEzZWJhMTIwMjY4
ZjU0NTM1MDc0YjUzNDdjZWNiYjg2Yzk1ODI1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODgx
CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9r
PG19P29UbjIrPQp6PDN1Q0Zsdk1MSE9DeiVzQlhpMyUzcXUwfjY5WXFZVzc5LTRCaHZ9fHdmemhY
VCRlcHY5NzhKUnl1RVJkX2ZQOzIKej4lcDJTaGhFKyhhWnVVZnJFbiZ1dyh8Slk+dH1LcDcpcz5B
YDU3Mj9OSD8tRjJuYV9vRmN7KXlaMmJGUi0hKUJSCnoyOE8pRXc5Zn5iNyoyNU5GZmAwS3p7Sm9v
JW91T09gRnxYI2lyZFRaQDN6aFFJRUR7KlljPz0yQnIkT19ENSNBeAp6TWd4SldEUGRkTXYkd1Qj
eDNWeGlfPGxDVzR3d05nYWM0azBkMj5fPmY3dnd9SzclPVlmSGpMPEBoS2pMaFRrODYKcl5+IUxv
UEtIX1NJTz82ekJzd3Q3ejhsPDlxQyN1YzAjNSoydFBCakV1NnsxLW9EIU08OFY3K0MKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJh
dGlvL2FzcGVjdC1yYXRpby1pbmhlcml0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWVkOWI1
MmFlMmFlZjU5Zjg1N2ZiMjU2MGVmZGMwY2Q5MjhmMjhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0
LXJhdGlvLWluaGVyaXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAor
bGF5ZXIgYXQgKDEwLDEwKSBzaXplIDc4OHgzNTUKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgxMCwxMCkgc2l6ZSA3ODh4MzU1IFtiZ2NvbG9yPSNGRjAwMDBdCitsYXllciBh
dCAoNjAsNjApIHNpemUgMzAweDEzNQorICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25l
ZCkge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMDB4MTM1IFtiZ2NvbG9yPSMwMDgwMDBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRp
by9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1z
dHJldGNoLXRvLWZpbGwtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYmU2MmM4ZDBkMDVhYTQ1
NmUxN2ZhMmM2MmNjYmEyMTEwZjNmMmMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NDkKemNt
ZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/
b1Rtfn0oCnpxbSlGMEJtP3RBT0pnSTB3NF84TWl6RXk0PFRNTCYzJHhWSmwrKj1iN1V2aWt4SGZ5
YklFR1pyZDMpbV5DeGZCQAp6aXtzdUNYS1ZDMyomSjZYJX02KHtQN2BCYm5FVT00MTRGfWc0anFQ
dTgzJmpjSXlncmVsbXg8IXhhWiRrNyNnLSQKelkrenRXViZZfntQI2F+ODJFdTRjN3xqS3Z4bk1M
R2pPSyEybD8kclZeNzB1TkQhU041PnZgJW1jST1zJnhIU3E0ClNkRFp+aXliUFlNZWxGe3I1fUUp
diYtX3ZWCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tc3Ry
ZXRjaC10by1maWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRvLWZpbGwtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhM2Q0YzdkY2FlNjIwZTkxNDhmMjk2NjU2ODIxNmRhNjEy
MDdlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1s
aW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKK2xheWVyIGF0ICgwLDc1KSBzaXpl
IDgwMHg0NTAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDc1KSBzaXpl
IDgwMHg0NTAgW2JnY29sb3I9IzAwODAwMF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117037</attachid>
            <date>2011-11-29 13:36:58 -0800</date>
            <delta_ts>2011-11-29 20:51:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73277-20111129163656.patch</filename>
            <type>text/plain</type>
            <size>57594</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwYjk0YjA5N2Q5ODJl
NDI0ZjU1NWRjYzU4Y2M1NzA3MzQzMzdjYS4uYzVjOTU4NzZhYTMwODg5NWVjNmQzY2UxYzczMmM2
MmZiMzMxM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTI5ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIC13ZWJraXQtYXNwZWN0
LXJhdGlvIExheW91dCBJbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMyNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0
aW8tYWJzb2x1dGUtbGVmdC1yaWdodC5odG1sCisgICAgICAgICAgICAgICBjc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWwKKyAgICAgICAgICAgICAgIGNz
czMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC5odG1sCisgICAgICAg
ICAgICAgICBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYXV0by1oZWlnaHQuaHRtbAor
ICAgICAgICAgICAgICAgY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWZsb2F0Lmh0bWwK
KyAgICAgICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0Lmh0
bWwKKyAgICAgICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNo
LXRvLWZpbGwuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzV2lkdGhE
ZXRlcm1pbmVkVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojppc0hlaWdodERl
dGVybWluZWRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnVzZUFzcGVjdFJh
dGlvRm9yV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1c2VBc3BlY3RSYXRp
b0ZvckhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2Fs
V2lkdGhJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKwogMjAxMS0x
MS0yOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBUZXh0UHJvbXB0IHNob3VsZCBzaG93IHN1Z2dlc3QgYWJvdmUgb3IgdW5k
ZXIgc28gdGhhdCBpdCBoYXMgbWF4aW1hbCBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBlMjEzYWE3M2U4MmY3NjQwMTI4NTc3MWZiM2M0YWY5YTFh
NzcyNGUxLi5kODZlMmMwOWNlNmEzODgyMDcwMTJjYTA1NzBlNDkyMmRlNGM3YjQ2IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEyMDMsNiArMTIwMyw5IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5
b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdoCiAKICAgICBMYXlvdXRVbml0IG9sZFdpZHRoID0gbG9n
aWNhbFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBvbGRDb2x1bW5XaWR0aCA9IGRlc2lyZWRDb2x1
bW5XaWR0aCgpOworICAKKyAgICBMYXlvdXRVbml0IHByZXZpb3VzSGVpZ2h0ID0gbG9naWNhbEhl
aWdodCgpOworICAgIHNldExvZ2ljYWxIZWlnaHQoMCk7CiAKICAgICBjb21wdXRlTG9naWNhbFdp
ZHRoKCk7CiAgICAgY2FsY0NvbHVtbldpZHRoKCk7CkBAIC0xMjE5LDggKzEyMjIsNiBAQCB2b2lk
IFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQgcGFnZUxvZ2ljYWxIZWlnaAogICAgICAgICBmbG9hdHNMYXlvdXRQYXNzID0gUG9zaXRpb25l
ZEZsb2F0TGF5b3V0UGFzczsKICAgICBjbGVhckZsb2F0cyhmbG9hdHNMYXlvdXRQYXNzKTsKIAot
ICAgIExheW91dFVuaXQgcHJldmlvdXNIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7Ci0gICAgc2V0
TG9naWNhbEhlaWdodCgwKTsKICAgICBib29sIGhhc1NwZWNpZmllZFBhZ2VMb2dpY2FsSGVpZ2h0
ID0gZmFsc2U7CiAgICAgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBmYWxzZTsKICAg
ICBDb2x1bW5JbmZvKiBjb2xJbmZvID0gY29sdW1uSW5mbygpOwpAQCAtMTMyMiw2ICsxMzIzLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKICAgICBMYXlvdXRVbml0IG9sZENsaWVudEFmdGVy
RWRnZSA9IGNsaWVudExvZ2ljYWxCb3R0b20oKTsKICAgICBjb21wdXRlTG9naWNhbEhlaWdodCgp
OwogICAgIExheW91dFVuaXQgbmV3SGVpZ2h0ID0gbG9naWNhbEhlaWdodCgpOworICAgICAgCiAg
ICAgaWYgKG9sZEhlaWdodCAhPSBuZXdIZWlnaHQpIHsKICAgICAgICAgaWYgKG9sZEhlaWdodCA+
IG5ld0hlaWdodCAmJiBtYXhGbG9hdExvZ2ljYWxCb3R0b20gPiBuZXdIZWlnaHQgJiYgIWNoaWxk
cmVuSW5saW5lKCkpIHsKICAgICAgICAgICAgIC8vIE9uZSBvZiBvdXIgY2hpbGRyZW4ncyBmbG9h
dHMgbWF5IGhhdmUgYmVjb21lIGFuIG92ZXJoYW5naW5nIGZsb2F0IGZvciB1cy4gV2UgbmVlZCB0
byBsb29rIGZvciBpdC4KQEAgLTEzMzgsNiArMTM0MCwxNCBAQCB2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaAogICAgIGlmIChwcmV2aW91c0hlaWdodCAhPSBuZXdIZWlnaHQpCiAgICAgICAgIHJlbGF5
b3V0Q2hpbGRyZW4gPSB0cnVlOwogCisgICAgLy8gRklYTUU6IE9ubHkgcmVjb21wdXRlIGxvZ2lj
YWwgd2lkdGggaWYgYXNwZWN0IHJhdGlvIGlzIG5vdCBzYXRpc2ZpZWQKKyAgICBpZiAoc3R5bGUo
KS0+aGFzQXNwZWN0UmF0aW8oKSkgeworICAgICAgICBvbGRXaWR0aCA9IGxvZ2ljYWxXaWR0aCgp
OworICAgICAgICBjb21wdXRlTG9naWNhbFdpZHRoKCk7CisgICAgICAgIGlmIChvbGRXaWR0aCAh
PSBsb2dpY2FsV2lkdGgoKSkKKyAgICAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwor
ICAgIH0KKwogICAgIGJvb2wgbmVlZEFub3RoZXJMYXlvdXRQYXNzID0gbGF5b3V0UG9zaXRpb25l
ZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc1Jvb3QoKSk7CiAKICAgICBpZiAoaW5SZW5k
ZXJGbG93VGhyZWFkKCkpCkBAIC0xOTY5LDcgKzE5NzksNiBAQCB2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgbWF4
RmxvYQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCiAgICAgTGF5b3V0VW5pdCBi
ZWZvcmVFZGdlID0gYm9yZGVyQmVmb3JlKCkgKyBwYWRkaW5nQmVmb3JlKCk7CiAgICAgTGF5b3V0
VW5pdCBhZnRlckVkZ2UgPSBib3JkZXJBZnRlcigpICsgcGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTE5OTgsNyArMjAwNyw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
JiBtYXhGbG9hCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBsYXlvdXQgY2hpbGRyZW4gaWYgdGhl
eSBuZWVkIGl0LgogICAgICAgICAvLyBGSVhNRTogVGVjaG5pY2FsbHkgcGVyY2VudGFnZSBoZWln
aHQgb2JqZWN0cyBvbmx5IG5lZWQgYSByZWxheW91dCBpZiB0aGVpciBwZXJjZW50YWdlIGlzbid0
IGdvaW5nIHRvIGJlIHR1cm5lZCBpbnRvCiAgICAgICAgIC8vIGFuIGF1dG8gdmFsdWUuICBBZGQg
YSBtZXRob2QgdG8gZGV0ZXJtaW5lIHRoaXMsIHNvIHRoYXQgd2UgY2FuIGF2b2lkIHRoZSByZWxh
eW91dC4KLSAgICAgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4gfHwgKChjaGlsZC0+c3R5bGUoKS0+
bG9naWNhbEhlaWdodCgpLmlzUGVyY2VudCgpIHx8IGNoaWxkLT5zdHlsZSgpLT5sb2dpY2FsTWlu
SGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgY2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQo
KS5pc1BlcmNlbnQoKSkgJiYgIWlzUmVuZGVyVmlldygpKSkKKyAgICAgICAgaWYgKHJlbGF5b3V0
Q2hpbGRyZW4gfHwgKChjaGlsZC0+c3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSB8fCBjaGlsZC0+
c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLmlzUGVyY2VudCgpIHx8IGNoaWxkLT5zdHlsZSgpLT5s
b2dpY2FsTWluSGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgY2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxN
YXhIZWlnaHQoKS5pc1BlcmNlbnQoKSkgJiYgIWlzUmVuZGVyVmlldygpKSkKICAgICAgICAgICAg
IGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKIAogICAgICAgICAvLyBJ
ZiByZWxheW91dENoaWxkcmVuIGlzIHNldCBhbmQgdGhlIGNoaWxkIGhhcyBwZXJjZW50YWdlIHBh
ZGRpbmcgb3IgYW4gZW1iZWRkZWQgY29udGVudCBib3gsIHdlIGFsc28gbmVlZCB0byBpbnZhbGlk
YXRlIHRoZSBjaGlsZHMgcHJlZiB3aWR0aHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IDUzMWFjYmMxNWE3MjI4ZjVlZmE3YTk2YWJkNWFhMjI2OGZjMGNkYTcuLjA5
ZDhiZTUxMGNjN2M1YmRlODUyZTg3ZDc3NmVlZWZhYzA2N2VhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNjU4LDYgKzE2NTgsMzggQEAgdm9pZCBSZW5kZXJC
b3g6OnJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiAg
ICAgfQogfQogCitib29sIFJlbmRlckJveDo6aXNXaWR0aERldGVybWluZWRVc2luZyhjb25zdCBM
ZW5ndGgmIGxvZ2ljYWxXaWR0aCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCwgY29uc3QgTGVu
Z3RoJiBsb2dpY2FsUmlnaHQpIGNvbnN0Cit7CisgICAgYm9vbCB3aWR0aElzQXV0byA9IGxvZ2lj
YWxXaWR0aC5pc0F1dG8oKTsKKyAgICBib29sIGxvZ2ljYWxNaW5XaWR0aElzU3BlY2lmaWVkID0g
IXN0eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpLmlzQXV0bygpICYmIHN0eWxlKCktPmxvZ2ljYWxN
aW5XaWR0aCgpLmlzUG9zaXRpdmUoKTsKKyAgICBib29sIGxlZnRJc0F1dG8gPSBsb2dpY2FsTGVm
dC5pc0F1dG8oKTsKKyAgICBib29sIHJpZ2h0SXNBdXRvID0gbG9naWNhbFJpZ2h0LmlzQXV0bygp
OworICAgIGJvb2wgaGFzQXNwZWN0UmF0aW8gPSBzdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpOwor
ICAgIC8vIFdpZHRoIGlzIGRldGVybWluZWQgaWYgdGhlIHdpZHRoIGlzIHNwZWNpZmllZCBvciBs
ZWZ0IGFuZCByaWdodCBhcmUgc3BlY2lmaWVkIG9uIGEgcG9zaXRpb25lZCBib3guCisgICAgcmV0
dXJuICF3aWR0aElzQXV0byB8fCBsb2dpY2FsTWluV2lkdGhJc1NwZWNpZmllZCB8fCAoIWxlZnRJ
c0F1dG8gJiYgd2lkdGhJc0F1dG8gJiYgIXJpZ2h0SXNBdXRvICYmICFoYXNBc3BlY3RSYXRpbyAm
JiBpc1Bvc2l0aW9uZWQoKSk7Cit9CisKK2Jvb2wgUmVuZGVyQm94Ojppc0hlaWdodERldGVybWlu
ZWRVc2luZyhjb25zdCBMZW5ndGgmIGxvZ2ljYWxIZWlnaHQsIGNvbnN0IExlbmd0aCYgbG9naWNh
bFRvcCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsQm90dG9tKSBjb25zdAoreworICAgIGJvb2wgaGVp
Z2h0SXNBdXRvID0gbG9naWNhbEhlaWdodC5pc0F1dG8oKTsKKyAgICBib29sIGxvZ2ljYWxNaW5I
ZWlnaHRJc1NwZWNpZmllZCA9ICFzdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkuaXNBdXRvKCkg
JiYgc3R5bGUoKS0+bG9naWNhbE1pbkhlaWdodCgpLmlzUG9zaXRpdmUoKTsKKyAgICBib29sIHRv
cElzQXV0byA9IGxvZ2ljYWxUb3AuaXNBdXRvKCk7CisgICAgYm9vbCBib3R0b21Jc0F1dG8gPSBs
b2dpY2FsQm90dG9tLmlzQXV0bygpOworICAgIGJvb2wgaGFzQXNwZWN0UmF0aW8gPSBzdHlsZSgp
LT5oYXNBc3BlY3RSYXRpbygpOworICAgIC8vIEhlaWdodCBpcyBkZXRlcm1pbmVkIGlmIGhlaWdo
dCBpcyBzcGVjaWZpY2VkIG9yIHRvcCBhbmQgYm90dG9tIGFyZSBzcGVjaWZpZWQgb24gYSBwb3Np
dGlvbmVkIGJveC4KKyAgICByZXR1cm4gIWhlaWdodElzQXV0byB8fCBsb2dpY2FsTWluSGVpZ2h0
SXNTcGVjaWZpZWQgfHwgKCF0b3BJc0F1dG8gJiYgaGVpZ2h0SXNBdXRvICYmICFib3R0b21Jc0F1
dG8gJiYgIWhhc0FzcGVjdFJhdGlvICYmIGlzUG9zaXRpb25lZCgpKTsKK30KKworYm9vbCBSZW5k
ZXJCb3g6OnVzZUFzcGVjdFJhdGlvRm9yV2lkdGgoY29uc3QgTGVuZ3RoJiBsb2dpY2FsV2lkdGgs
IGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQsIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KSBj
b25zdAoreworICAgIHJldHVybiAhaXNXaWR0aERldGVybWluZWRVc2luZyhsb2dpY2FsV2lkdGgs
IGxvZ2ljYWxMZWZ0LCBsb2dpY2FsUmlnaHQpICYmIHN0eWxlKCktPmhhc0FzcGVjdFJhdGlvKCk7
Cit9CisKK2Jvb2wgUmVuZGVyQm94Ojp1c2VBc3BlY3RSYXRpb0ZvckhlaWdodChjb25zdCBMZW5n
dGgmIGxvZ2ljYWxIZWlnaHQsIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCwgY29uc3QgTGVuZ3Ro
JiBsb2dpY2FsQm90dG9tKSBjb25zdAoreworICAgIHJldHVybiAhaXNIZWlnaHREZXRlcm1pbmVk
VXNpbmcobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSkgJiYgc3R5bGUo
KS0+aGFzQXNwZWN0UmF0aW8oKTsKK30KKwogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2Fs
V2lkdGgoKQogewogICAgIGNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbigpOwpAQCAtMTc0MCw3
ICsxNzcyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihS
ZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmYKICAgICB9CiAKICAgICAvLyBNYXJn
aW4gY2FsY3VsYXRpb25zLgotICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGguaXNBdXRvKCkgfHwg
aGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jaykgeworICAgIGlmICgobG9naWNhbFdpZHRo
TGVuZ3RoLmlzQXV0bygpICYmICFzdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpKSB8fCBoYXNQZXJw
ZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7CiAgICAgICAgIHNldE1hcmdpblN0YXJ0KHN0eWxl
KCktPm1hcmdpblN0YXJ0KCkuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwog
ICAgICAgICBzZXRNYXJnaW5FbmQoc3R5bGUoKS0+bWFyZ2luRW5kKCkuY2FsY01pblZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAgIH0gZWxzZQpAQCAtMTc1NCwxOCArMTc4NiwzNiBA
QCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lv
biogcmVnaW9uLCBMYXlvdXRVbml0IG9mZgogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVM
b2dpY2FsV2lkdGhVc2luZyhMb2dpY2FsV2lkdGhUeXBlIHdpZHRoVHlwZSwgTGF5b3V0VW5pdCBh
dmFpbGFibGVMb2dpY2FsV2lkdGgpCiB7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhSZXN1
bHQgPSBsb2dpY2FsV2lkdGgoKTsKKyAgICBjb25zdCBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFk
ZGluZyA9IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBMZW5ndGggbG9naWNh
bFdpZHRoOwotICAgIGlmICh3aWR0aFR5cGUgPT0gTG9naWNhbFdpZHRoKQorICAgIHN3aXRjaCAo
d2lkdGhUeXBlKSB7CisgICAgY2FzZSBMb2dpY2FsV2lkdGg6CiAgICAgICAgIGxvZ2ljYWxXaWR0
aCA9IHN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpOwotICAgIGVsc2UgaWYgKHdpZHRoVHlwZSA9PSBN
aW5Mb2dpY2FsV2lkdGgpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWluTG9naWNhbFdpZHRo
OgogICAgICAgICBsb2dpY2FsV2lkdGggPSBzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKTsKLSAg
ICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWF4TG9naWNhbFdpZHRoOgogICAgICAg
ICBsb2dpY2FsV2lkdGggPSBzdHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGg6CisgICAgICAgIGxvZ2ljYWxX
aWR0aCA9ICBMZW5ndGgobWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1Bh
ZGRpbmcsIEZpeGVkKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgaWYgKGxvZ2ljYWxX
aWR0aC5pc0ludHJpbnNpY09yQXV0bygpKSB7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luU3Rh
cnQgPSBzdHlsZSgpLT5tYXJnaW5TdGFydCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2Fs
V2lkdGgpOwogICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IHN0eWxlKCktPm1hcmdpbkVu
ZCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBsb2dpY2Fs
V2lkdGhSZXN1bHQgPSBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5TdGFydCAtIG1hcmdp
bkVuZDsKKyAgICAgICAgYm9vbCB1c2VBc3BlY3RSYXRpbyA9IHN0eWxlKCktPmhhc0FzcGVjdFJh
dGlvKCk7CisgICAgICAgIGlmICh1c2VBc3BlY3RSYXRpbykgeworICAgICAgICAgICAgZmxvYXQg
cmVxdWlyZWRSYXRpbyA9IHN0eWxlKCktPmFzcGVjdFJhdGlvKCk7CisgICAgICAgICAgICBpZiAo
bG9naWNhbEhlaWdodCgpKSB7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aEZvckFz
cGVjdFJhdGlvID0gcm91bmRlZExheW91dFVuaXQobG9naWNhbEhlaWdodCgpICogcmVxdWlyZWRS
YXRpbyk7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgpCisg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IG1pbih3aWR0aEZvckFzcGVj
dFJhdGlvLCBsb2dpY2FsV2lkdGhSZXN1bHQpOworICAgICAgICAgICAgfSAKKyAgICAgICAgfQog
CiAgICAgICAgIGlmIChzaXplc1RvSW50cmluc2ljTG9naWNhbFdpZHRoKHdpZHRoVHlwZSkpIHsK
ICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IG1heChsb2dpY2FsV2lkdGhSZXN1bHQs
IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKQEAgLTIwMDksMTIgKzIwNTksMTIgQEAgdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCkKIAogICAgICAgICBMYXlvdXRVbml0
IGhlaWdodFJlc3VsdDsKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVpZ2h0KSB7Ci0gICAgICAg
ICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxv
Z2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNh
bEhlaWdodFVzaW5nKExvZ2ljYWxIZWlnaHQpOwogICAgICAgICAgICAgLy8gRklYTUU6IFVzZSA8
IDAgb3Igcm91Z2hseUVxdWFscyB3aGVuIHdlIG1vdmUgdG8gZmxvYXQsIHNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYxNDgKICAgICAgICAgICAgIGlmIChoZWln
aHRSZXN1bHQgPT0gLTEpCiAgICAgICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gbG9naWNhbEhl
aWdodCgpOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5IID0gY29tcHV0ZUxvZ2ljYWxIZWln
aHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkpOyAvLyBMZWF2ZSBhcyAtMSBpZiB1
bnNldC4KLSAgICAgICAgICAgIExheW91dFVuaXQgbWF4SCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhI
ZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUxvZ2ljYWxIZWln
aHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgICAgICAgICAgTGF5b3V0
VW5pdCBtaW5IID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5Mb2dpY2FsSGVpZ2h0KTsg
Ly8gTGVhdmUgYXMgLTEgaWYgdW5zZXQuCisgICAgICAgICAgICBMYXlvdXRVbml0IG1heEggPSBz
dHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSA/IGhlaWdodFJlc3VsdCA6
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4TG9naWNhbEhlaWdodCk7CiAgICAgICAgICAg
ICBpZiAobWF4SCA9PSAtMSkKICAgICAgICAgICAgICAgICBtYXhIID0gaGVpZ2h0UmVzdWx0Owog
ICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gbWluKG1heEgsIGhlaWdodFJlc3VsdCk7CkBAIC0y
MDYxLDIxICsyMTExLDQwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCgp
CiAgICAgfQogfQogCi1MYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRV
c2luZyhjb25zdCBMZW5ndGgmIGgpCitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxIZWlnaHRVc2luZyhMb2dpY2FsSGVpZ2h0VHlwZSBoZWlnaHRUeXBlKQogewotICAgIExheW91
dFVuaXQgbG9naWNhbEhlaWdodCA9IC0xOworICAgIExlbmd0aCBoOworICAgIHN3aXRjaCAoaGVp
Z2h0VHlwZSkgeworICAgIGNhc2UgTG9naWNhbEhlaWdodDoKKyAgICAgICAgaCA9IHN0eWxlKCkt
PmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNaW5Mb2dpY2FsSGVp
Z2h0OgorICAgICAgICBoID0gc3R5bGUoKS0+bG9naWNhbE1pbkhlaWdodCgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE1heExvZ2ljYWxIZWlnaHQ6CisgICAgICAgIGggPSBzdHlsZSgpLT5s
b2dpY2FsTWF4SGVpZ2h0KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIExheW91dFVu
aXQgbG9naWNhbEhlaWdodFZhbHVlID0gLTE7CiAgICAgaWYgKCFoLmlzQXV0bygpKSB7CiAgICAg
ICAgIGlmIChoLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBoLnZhbHVl
KCk7CisgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBoLnZhbHVlKCk7CiAgICAgICAg
IGVsc2UgaWYgKGguaXNQZXJjZW50KCkpCi0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ID0gY29t
cHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGgpOworICAgICAgICAgICAgbG9naWNhbEhlaWdo
dFZhbHVlID0gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGgpOwogICAgICAgICAvLyBG
SVhNRTogVXNlIDwgMCBvciByb3VnaGx5RXF1YWxzIHdoZW4gd2UgbW92ZSB0byBmbG9hdCwgc2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjE0OAotICAgICAgICBp
ZiAobG9naWNhbEhlaWdodCAhPSAtMSkgewotICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9IGNv
bXB1dGVCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOwotICAgICAgICAgICAg
cmV0dXJuIGxvZ2ljYWxIZWlnaHQ7CisgICAgICAgIGlmIChsb2dpY2FsSGVpZ2h0VmFsdWUgIT0g
LTEpIHsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVCb3JkZXJCb3hM
b2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHRWYWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gbG9n
aWNhbEhlaWdodFZhbHVlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzdHlsZSgpLT5oYXNB
c3BlY3RSYXRpbygpICYmICFsb2dpY2FsSGVpZ2h0KCkgJiYgaGVpZ2h0VHlwZSA9PSBMb2dpY2Fs
SGVpZ2h0KSB7CisgICAgICAgIGlmIChsb2dpY2FsV2lkdGgoKSkgeworICAgICAgICAgICAgZmxv
YXQgcmVxdWlyZWRSYXRpbyA9IHN0eWxlKCktPmFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSAvIHN0
eWxlKCktPmFzcGVjdFJhdGlvTnVtZXJhdG9yKCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGhl
aWdodEZvckFzcGVjdFJhdGlvID0gcm91bmRlZExheW91dFVuaXQobG9naWNhbFdpZHRoKCkgKiBy
ZXF1aXJlZFJhdGlvKTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGhlaWdodEZv
ckFzcGVjdFJhdGlvOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0
OworICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0VmFsdWU7CiB9CiAKIExheW91dFVuaXQgUmVuZGVy
Qm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQp
CkBAIC0yNTM1LDEwICsyNjA0LDExIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgLy8g
Q2FsY3VsYXRlIGNvbnN0cmFpbnQgZXF1YXRpb24gdmFsdWVzIGZvciAnd2lkdGgnIGNhc2UuCiAg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhSZXN1bHQ7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdFJlc3VsdDsKLSAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxl
KCktPmxvZ2ljYWxXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAor
ICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTG9naWNhbFdpZHRoLCBjb250
YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1BhZGRpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExlbmd0
aCwgbG9naWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNhbFJp
Z2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRo
UmVzdWx0LCBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzLCBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcywg
bG9naWNhbExlZnRSZXN1bHQpOworICAgIAogICAgIHNldExvZ2ljYWxXaWR0aChsb2dpY2FsV2lk
dGhSZXN1bHQpOwogICAgIHNldExvZ2ljYWxMZWZ0KGxvZ2ljYWxMZWZ0UmVzdWx0KTsKIApAQCAt
MjU0OSwxMSArMjYxOSwxMiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsV2lkdGgoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwogICAgICAgICBMYXlv
dXRVbml0IG1heE1hcmdpbkxvZ2ljYWxSaWdodDsKICAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dp
Y2FsTGVmdFBvczsKIAotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5n
KHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGly
ZWN0aW9uLAorICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1heExv
Z2ljYWxXaWR0aCwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGgs
IGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dpY2FsTGVmdExlbmd0aCwgbG9naWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dp
Y2FsTGVmdCwgbWFyZ2luTG9naWNhbFJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCwgbWF4TWFyZ2luTG9naWNhbExlZnQsIG1h
eE1hcmdpbkxvZ2ljYWxSaWdodCwgbWF4TG9naWNhbExlZnRQb3MpOwogCisKICAgICAgICAgaWYg
KGxvZ2ljYWxXaWR0aCgpID4gbWF4TG9naWNhbFdpZHRoKSB7CiAgICAgICAgICAgICBzZXRMb2dp
Y2FsV2lkdGgobWF4TG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0
QWxpYXMgPSBtYXhNYXJnaW5Mb2dpY2FsTGVmdDsKQEAgLTI1NjksNyArMjY0MCw3IEBAIHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJl
Z2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWluTWFyZ2luTG9naWNhbFJp
Z2h0OwogICAgICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbldpZHRo
KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWluTG9naWNhbFdpZHRoLCBjb250YWluZXJCbG9j
aywgY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3Ro
LCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmln
aHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNh
bFdpZHRoLCBtaW5NYXJnaW5Mb2dpY2FsTGVmdCwgbWluTWFyZ2luTG9naWNhbFJpZ2h0LCBtaW5M
b2dpY2FsTGVmdFBvcyk7CkBAIC0yNTgzLDcgKzI2NTQsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVu
aXQgbwogICAgIH0KIAogICAgIGlmIChzdHJldGNoZXNUb01pbkludHJpbnNpY0xvZ2ljYWxXaWR0
aCgpICYmIGxvZ2ljYWxXaWR0aCgpIDwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3Jk
ZXJzUGx1c1BhZGRpbmcpIHsKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhV
c2luZyhMZW5ndGgobWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRp
bmcsIEZpeGVkKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICAgICAg
Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhNaW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGgsIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJz
UGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9naWNhbExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQs
IG1hcmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQsIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMsIG1hcmdp
bkxvZ2ljYWxSaWdodEFsaWFzLCBsb2dpY2FsTGVmdFJlc3VsdCk7CkBAIC0yNjIwLDcgKzI2OTEs
NyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9naWNhbExlZnRQb3NpdGlvbmVkT2Zmc2V0KExheW91
dFVuaXQmIGxvZ2ljYWxMZWZ0UG9zLCBjb25zdAogICAgICAgICBsb2dpY2FsTGVmdFBvcyArPSAo
Y2hpbGQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjb250YWluZXJCbG9jay0+Ym9yZGVy
TGVmdCgpIDogY29udGFpbmVyQmxvY2stPmJvcmRlclRvcCgpKTsKIH0KIAotdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0
aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLCBUZXh0RGlyZWN0
aW9uIGNvbnRhaW5lckRpcmVjdGlvbiwKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxXaWR0aFVzaW5nKExvZ2ljYWxXaWR0aFR5cGUgd2lkdGhUeXBlLCBjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29udGFpbmVy
RGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYm9yZGVy
c1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxMZWZ0LCBMZW5ndGggbG9naWNhbFJpZ2h0LCBMZW5ndGgg
bWFyZ2luTG9naWNhbExlZnQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsb2dp
Y2FsV2lkdGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSwgTGF5b3V0
VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9z
KQpAQCAtMjYyOCwxNCArMjY5OSwzMSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZQogICAgIC8v
ICdsZWZ0JyBhbmQgJ3JpZ2h0JyBjYW5ub3QgYm90aCBiZSAnYXV0bycgYmVjYXVzZSBvbmUgd291
bGQgb2YgYmVlbgogICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgc3RhdGljIHBvc2l0aW9uIGFscmVh
ZHkKICAgICBBU1NFUlQoIShsb2dpY2FsTGVmdC5pc0F1dG8oKSAmJiBsb2dpY2FsUmlnaHQuaXNB
dXRvKCkpKTsKKyAgICBMZW5ndGggbG9naWNhbFdpZHRoOworICAgIHN3aXRjaCAod2lkdGhUeXBl
KSB7CisgICAgY2FzZSBMb2dpY2FsV2lkdGg6CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxl
KCktPmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pbkxvZ2ljYWxX
aWR0aDoKKyAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWF4TG9naWNhbFdpZHRoOgorICAgICAgICBsb2dp
Y2FsV2lkdGggPSBzdHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGg6CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9
ICBMZW5ndGgobWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcs
IEZpeGVkKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdFZhbHVlID0gMDsKIAotICAgIGJvb2wgbG9naWNhbFdpZHRoSXNBdXRvID0gbG9naWNhbFdp
ZHRoLmlzSW50cmluc2ljT3JBdXRvKCk7Ci0gICAgYm9vbCBsb2dpY2FsTGVmdElzQXV0byA9IGxv
Z2ljYWxMZWZ0LmlzQXV0bygpOwotICAgIGJvb2wgbG9naWNhbFJpZ2h0SXNBdXRvID0gbG9naWNh
bFJpZ2h0LmlzQXV0bygpOworICAgIGJvb2wgdXNlQXNwZWN0UmF0aW8gPSB1c2VBc3BlY3RSYXRp
b0ZvcldpZHRoKGxvZ2ljYWxXaWR0aCwgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7CisgICAg
Ly8gSWYgd2UgYXJlIHVzaW5nIGFzcGVjdC1yYXRpbyBmb3Igd2lkdGggdGhlbiB0aGVyZSBpcyBh
IGNvbnN0cmFpbnQgb24gd2lkdGguCisgICAgYm9vbCBsb2dpY2FsV2lkdGhJc1VuY29uc3RyYWlu
ZWQgPSBsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhdXNlQXNwZWN0UmF0aW87
CisgICAgYm9vbCBsb2dpY2FsTGVmdElzVW5jb25zdHJhaW5lZCA9IGxvZ2ljYWxMZWZ0LmlzQXV0
bygpOworICAgIGJvb2wgbG9naWNhbFJpZ2h0SXNVbmNvbnN0cmFpbmVkID0gbG9naWNhbFJpZ2h0
LmlzQXV0bygpOwogCi0gICAgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiAhbG9naWNhbFdpZHRo
SXNBdXRvICYmICFsb2dpY2FsUmlnaHRJc0F1dG8pIHsKKyAgICBpZiAoIWxvZ2ljYWxMZWZ0SXNV
bmNvbnN0cmFpbmVkICYmICFsb2dpY2FsV2lkdGhJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxS
aWdodElzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgICAg
ICAgICogSWYgbm9uZSBvZiB0aGUgdGhyZWUgaXMgJ2F1dG8nOiBJZiBib3RoICdtYXJnaW4tbGVm
dCcgYW5kICdtYXJnaW4tCiAgICAgICAgICAqIHJpZ2h0JyBhcmUgJ2F1dG8nLCBzb2x2ZSB0aGUg
ZXF1YXRpb24gdW5kZXIgdGhlIGV4dHJhIGNvbnN0cmFpbnQgdGhhdApAQCAtMjY1Myw2ICsyNzQx
LDIzIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5n
KExlbmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlCiAKICAgICAgICAgbG9naWNhbExlZnRWYWx1
ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAg
ICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGxvZ2lj
YWxXaWR0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgIGlmICh1
c2VBc3BlY3RSYXRpbykgeworICAgICAgICAgICAgZmxvYXQgcmVxdWlyZWRSYXRpbyA9IHN0eWxl
KCktPmFzcGVjdFJhdGlvKCk7CisgICAgICAgICAgICBpZiAobG9naWNhbEhlaWdodCgpKSB7Cisg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aEZvckFzcGVjdFJhdGlvID0gcm91bmRlZExh
eW91dFVuaXQobG9naWNhbEhlaWdodCgpICogcmVxdWlyZWRSYXRpbyk7CisgICAgICAgICAgICAg
ICAgaWYgKHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGxv
Z2ljYWxXaWR0aFZhbHVlID0gIHdpZHRoRm9yQXNwZWN0UmF0aW87CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIEhlaWdodCBpcyBub3QgZGV0ZXJtaW5lZCBzbyBMb2dp
Y2FsV2lkdGggaXMgdGhlIGNvbnRhaW5lcidzIGNvbnRlbnQgd2lkdGguCisgICAgICAgICAgICAg
ICAgLy8gd2lkdGhUeXBlIHdpbGwgYmUgTG9naWNhbE1pbldpZHRoIG9yIExvZ2ljYWxNYXhXaWR0
aCBvbmx5IGlmIHRoZXkgYXJlIHNwZWNpZmllZCBpbiB3aGljaAorICAgICAgICAgICAgICAgIC8v
IGNhc2UgdGhleSBoYXZlIHRvIGJlIHJlc3BlY3RlZC4KKyAgICAgICAgICAgICAgICBpZiAod2lk
dGhUeXBlID09IExvZ2ljYWxXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGF2YWlsYWJsZUNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2lj
YWxMZWZ0VmFsdWUgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICAgICAgICAgICAgICBs
b2dpY2FsV2lkdGhWYWx1ZSA9IGF2YWlsYWJsZUNvbnRhaW5lcldpZHRoOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAg
ICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsV2lk
dGggLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxXaWR0aFZhbHVlICsgbG9naWNhbFJpZ2h0
LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsK
IApAQCAtMjc0MSw3ICsyODQ2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgY29uc3QgUmUKIAogICAgICAg
ICAvLyBGSVhNRTogSXMgdGhlcmUgYSBmYXN0ZXIgd2F5IHRvIGZpbmQgdGhlIGNvcnJlY3QgY2Fz
ZT8KICAgICAgICAgLy8gVXNlIHJ1bGUvY2FzZSB0aGF0IGFwcGxpZXMuCi0gICAgICAgIGlmIChs
b2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElz
QXV0bykgeworICAgICAgICBpZiAobG9naWNhbExlZnRJc1VuY29uc3RyYWluZWQgJiYgbG9naWNh
bFdpZHRoSXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsUmlnaHRJc1VuY29uc3RyYWluZWQpIHsK
ICAgICAgICAgICAgIC8vIFJVTEUgMTogKHVzZSBzaHJpbmstdG8tZml0IGZvciB3aWR0aCwgYW5k
IHNvbHZlIG9mIGxlZnQpCiAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodFZhbHVl
ID0gbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCkBAIC0y
NzUxLDcgKzI4NTYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZQogICAgICAgICAgICAgTGF5
b3V0VW5pdCBhdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZVNwYWNlIC0gbG9naWNhbFJpZ2h0VmFs
dWU7CiAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IG1pbihtYXgocHJlZmVycmVkTWlu
V2lkdGgsIGF2YWlsYWJsZVdpZHRoKSwgcHJlZmVycmVkV2lkdGgpOwogICAgICAgICAgICAgbG9n
aWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxXaWR0aFZhbHVlICsgbG9n
aWNhbFJpZ2h0VmFsdWUpOwotICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAm
JiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYgbG9naWNhbFJpZ2h0SXNBdXRvKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxXaWR0aElzVW5j
b25zdHJhaW5lZCAmJiBsb2dpY2FsUmlnaHRJc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAg
IC8vIFJVTEUgMzogKHVzZSBzaHJpbmstdG8tZml0IGZvciB3aWR0aCwgYW5kIG5vIG5lZWQgc29s
dmUgb2YgcmlnaHQpCiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKQEAgLTI3NjAsMTggKzI4NjUsNTMg
QEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVu
Z3RoIGxvZ2ljYWxXaWR0aCwgY29uc3QgUmUKICAgICAgICAgICAgIExheW91dFVuaXQgcHJlZmVy
cmVkTWluV2lkdGggPSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFk
ZGluZzsKICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGggPSBhdmFpbGFibGVT
cGFjZSAtIGxvZ2ljYWxMZWZ0VmFsdWU7CiAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9
IG1pbihtYXgocHJlZmVycmVkTWluV2lkdGgsIGF2YWlsYWJsZVdpZHRoKSwgcHJlZmVycmVkV2lk
dGgpOwotICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxMZWZ0SXNBdXRvICYmICFsb2dpY2FsV2lk
dGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgeworICAgICAgICB9IGVsc2UgaWYgKGxv
Z2ljYWxMZWZ0SXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsV2lkdGhJc1VuY29uc3RyYWluZWQg
JiYgIWxvZ2ljYWxSaWdodElzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAgICAgLy8gUlVMRSA0
OiAoc29sdmUgZm9yIGxlZnQpCiAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGNvbXB1
dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0aC5jYWxjVmFsdWUoY29udGFpbmVy
TG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBpZiAodXNlQXNwZWN0UmF0aW8pIHsKKyAgICAg
ICAgICAgICAgICBmbG9hdCByZXF1aXJlZFJhdGlvID0gc3R5bGUoKS0+YXNwZWN0UmF0aW8oKTsK
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcy4KKyAgICAgICAgICAgICAg
ICBpZiAobG9naWNhbEhlaWdodCgpKSB7CisgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQg
d2lkdGhGb3JBc3BlY3RSYXRpbyA9IHJvdW5kZWRMYXlvdXRVbml0KGxvZ2ljYWxIZWlnaHQoKSAq
IHJlcXVpcmVkUmF0aW8pOworICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGhUeXBlID09IExv
Z2ljYWxXaWR0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0g
IHdpZHRoRm9yQXNwZWN0UmF0aW87CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSGVpZ2h0IGlzIG5vdCBkZXRlcm1pbmVkIHNvIExvZ2ljYWxXaWR0aCBp
cyB0aGUgY29udGFpbmVyJ3MgY29udGVudCB3aWR0aC4KKyAgICAgICAgICAgICAgICAgICAgLy8g
d2lkdGhUeXBlIHdpbGwgYmUgTG9naWNhbE1pbldpZHRoIG9yIExvZ2ljYWxNYXhXaWR0aCBvbmx5
IGlmIHRoZXkgYXJlIHNwZWNpZmllZCBpbiB3aGljaAorICAgICAgICAgICAgICAgICAgICAvLyBj
YXNlIHRoZXkgaGF2ZSB0byBiZSByZXNwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIGlmICh3
aWR0aFR5cGUgPT0gTG9naWNhbFdpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMYXlv
dXRVbml0IGF2YWlsYWJsZUNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0g
KGxvZ2ljYWxSaWdodC5jYWxjTWluVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSArIGJvcmRl
cnNQbHVzUGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1
ZSA9IGF2YWlsYWJsZUNvbnRhaW5lcldpZHRoOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsV2lkdGhW
YWx1ZSArIGxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxXaWR0aElzQXV0
byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxM
ZWZ0SXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxXaWR0aElzVW5jb25zdHJhaW5lZCAmJiAhbG9n
aWNhbFJpZ2h0SXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDU6IChzb2x2
ZSBmb3Igd2lkdGgpCiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBsb2dpY2FsV2lk
dGhWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmln
aHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwotICAgICAgICB9IGVsc2UgaWYg
KCFsb2dpY2FsTGVmdElzQXV0byAmJiAhbG9naWNhbFdpZHRoSXNBdXRvICYmIGxvZ2ljYWxSaWdo
dElzQXV0bykgeworICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzVW5jb25zdHJhaW5l
ZCAmJiAhbG9naWNhbFdpZHRoSXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxSaWdodElzVW5jb25z
dHJhaW5lZCkgewogICAgICAgICAgICAgLy8gUlVMRSA2OiAobm8gbmVlZCBzb2x2ZSBmb3Igcmln
aHQpCiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9
IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0aC5jYWxjVmFsdWUoY29u
dGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBpZiAodXNlQXNwZWN0UmF0aW8pIHsK
KyAgICAgICAgICAgICAgICBmbG9hdCByZXF1aXJlZFJhdGlvID0gc3R5bGUoKS0+YXNwZWN0UmF0
aW8oKTsKKyAgICAgICAgICAgICAgICBpZiAobG9naWNhbEhlaWdodCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgd2lkdGhGb3JBc3BlY3RSYXRpbyA9IHJvdW5kZWRMYXlvdXRV
bml0KGxvZ2ljYWxIZWlnaHQoKSAqIHJlcXVpcmVkUmF0aW8pOworICAgICAgICAgICAgICAgICAg
ICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0aCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ2ljYWxXaWR0aFZhbHVlID0gIHdpZHRoRm9yQXNwZWN0UmF0aW87CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSGVpZ2h0IGlzIG5vdCBkZXRlcm1p
bmVkIHNvIExvZ2ljYWxXaWR0aCBpcyB0aGUgY29udGFpbmVyJ3MgY29udGVudCB3aWR0aC4KKyAg
ICAgICAgICAgICAgICAgICAgLy8gd2lkdGhUeXBlIHdpbGwgYmUgTG9naWNhbE1pbldpZHRoIG9y
IExvZ2ljYWxNYXhXaWR0aCBvbmx5IGlmIHRoZXkgYXJlIHNwZWNpZmllZCBpbiB3aGljaAorICAg
ICAgICAgICAgICAgICAgICAvLyBjYXNlIHRoZXkgaGF2ZSB0byBiZSByZXNwZWN0ZWQuCisgICAg
ICAgICAgICAgICAgICAgIGlmICh3aWR0aFR5cGUgPT0gTG9naWNhbFdpZHRoKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUNvbnRhaW5lcldpZHRoID0gY29u
dGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBib3JkZXJzUGx1c1BhZGRp
bmcpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBhdmFpbGFi
bGVDb250YWluZXJXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTI4NjQsNyArMzAwNCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxIZWlnaHQoKQogICAgIExheW91dFVuaXQgbG9naWNhbFRvcFBvczsKIAogICAgIC8v
IENhbGN1bGF0ZSBjb25zdHJhaW50IGVxdWF0aW9uIHZhbHVlcyBmb3IgJ2hlaWdodCcgY2FzZS4K
LSAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2Fs
SGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJz
UGx1c1BhZGRpbmcsCisgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTG9n
aWNhbEhlaWdodCwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRl
cnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2dpY2FsVG9wTGVuZ3RoLCBsb2dpY2FsQm90dG9tTGVuZ3RoLCBtYXJnaW5CZWZvcmUsIG1hcmdp
bkFmdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxI
ZWlnaHRSZXN1bHQsIG1hcmdpbkJlZm9yZUFsaWFzLCBtYXJnaW5BZnRlckFsaWFzLCBsb2dpY2Fs
VG9wUG9zKTsKICAgICBzZXRMb2dpY2FsVG9wKGxvZ2ljYWxUb3BQb3MpOwpAQCAtMjg3OSw3ICsz
MDE5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCgp
CiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2luQWZ0ZXI7CiAgICAgICAgIExheW91dFVuaXQg
bWF4TG9naWNhbFRvcFBvczsKIAotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWln
aHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250
YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJzUGx1c1BhZGRpbmcsCisgICAgICAgIGNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKE1heExvZ2ljYWxIZWlnaHQsIGNvbnRhaW5lckJs
b2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3BMZW5ndGgsIGxv
Z2ljYWxCb3R0b21MZW5ndGgsIG1hcmdpbkJlZm9yZSwgbWFyZ2luQWZ0ZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heExvZ2ljYWxIZWlnaHQsIG1heE1h
cmdpbkJlZm9yZSwgbWF4TWFyZ2luQWZ0ZXIsIG1heExvZ2ljYWxUb3BQb3MpOwogCkBAIC0yODk4
LDcgKzMwMzgsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVp
Z2h0KCkKICAgICAgICAgTGF5b3V0VW5pdCBtaW5NYXJnaW5BZnRlcjsKICAgICAgICAgTGF5b3V0
VW5pdCBtaW5Mb2dpY2FsVG9wUG9zOwogCi0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSwgY29udGFpbmVyQmxvY2ss
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKKyAgICAgICAgY29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTWluTG9naWNhbEhlaWdodCwgY29udGFp
bmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlbmd0
aCwgbG9naWNhbEJvdHRvbUxlbmd0aCwgbWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbEhlaWdodCwg
bWluTWFyZ2luQmVmb3JlLCBtaW5NYXJnaW5BZnRlciwgbWluTG9naWNhbFRvcFBvcyk7CiAKQEAg
LTI5NTAsNyArMzA5MCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2dpY2FsVG9wUG9zaXRpb25l
ZE9mZnNldChMYXlvdXRVbml0JiBsb2dpY2FsVG9wUG9zLCBjb25zdCBSCiAgICAgfQogfQogCi12
b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3Ro
IGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWlu
ZXJCbG9jaywKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRV
c2luZyhMb2dpY2FsSGVpZ2h0VHlwZSBoZWlnaHRUeXBlLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCogY29udGFpbmVyQmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBMYXlv
dXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9naWNhbFRvcCwgTGVuZ3RoIGxvZ2ljYWxC
b3R0b20sIExlbmd0aCBtYXJnaW5CZWZvcmUsIExlbmd0aCBtYXJnaW5BZnRlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBs
b2dpY2FsSGVpZ2h0VmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkJlZm9yZVZhbHVlLCBMYXlvdXRV
bml0JiBtYXJnaW5BZnRlclZhbHVlLCBMYXlvdXRVbml0JiBsb2dpY2FsVG9wUG9zKQpAQCAtMjk1
OCwyMiArMzA5OCwzNSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsCiAgICAgLy8gJ3RvcCcgYW5k
ICdib3R0b20nIGNhbm5vdCBib3RoIGJlICdhdXRvJyBiZWNhdXNlICd0b3Agd291bGQgb2YgYmVl
bgogICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgc3RhdGljIHBvc2l0aW9uIGluIGNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbEhlaWdodCgpCiAgICAgQVNTRVJUKCEobG9naWNhbFRvcC5pc0F1dG8oKSAm
JiBsb2dpY2FsQm90dG9tLmlzQXV0bygpKSk7CisgICAgTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5n
dGg7CisgICAgc3dpdGNoIChoZWlnaHRUeXBlKSB7CisgICAgY2FzZSBMb2dpY2FsSGVpZ2h0Ogor
ICAgICAgICBsb2dpY2FsSGVpZ2h0TGVuZ3RoID0gc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pbkxvZ2ljYWxIZWlnaHQ6CisgICAgICAgIGxvZ2lj
YWxIZWlnaHRMZW5ndGggPSBzdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTWF4TG9naWNhbEhlaWdodDoKKyAgICAgICAgbG9naWNhbEhlaWdodExl
bmd0aCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogCiAgICAgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQo
KSAtIGJvcmRlcnNQbHVzUGFkZGluZzsKIAogICAgIExheW91dFVuaXQgbG9naWNhbFRvcFZhbHVl
ID0gMDsKIAotICAgIGJvb2wgbG9naWNhbEhlaWdodElzQXV0byA9IGxvZ2ljYWxIZWlnaHRMZW5n
dGguaXNBdXRvKCk7Ci0gICAgYm9vbCBsb2dpY2FsVG9wSXNBdXRvID0gbG9naWNhbFRvcC5pc0F1
dG8oKTsKLSAgICBib29sIGxvZ2ljYWxCb3R0b21Jc0F1dG8gPSBsb2dpY2FsQm90dG9tLmlzQXV0
bygpOworICAgIGJvb2wgdXNlQXNwZWN0UmF0aW8gPSB1c2VBc3BlY3RSYXRpb0ZvckhlaWdodChs
b2dpY2FsSGVpZ2h0TGVuZ3RoLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsKKyAgICBib29s
IGxvZ2ljYWxIZWlnaHRJc1VuY29uc3RyYWluZWQgPSBsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzQXV0
bygpICYmICF1c2VBc3BlY3RSYXRpbzsKKyAgICBib29sIGxvZ2ljYWxUb3BJc1VuY29uc3RyYWlu
ZWQgPSBsb2dpY2FsVG9wLmlzQXV0bygpOworICAgIGJvb2wgbG9naWNhbEJvdHRvbUlzVW5jb25z
dHJhaW5lZCA9IGxvZ2ljYWxCb3R0b20uaXNBdXRvKCk7CiAKICAgICAvLyBIZWlnaHQgaXMgbmV2
ZXIgdW5zb2x2ZWQgZm9yIHRhYmxlcy4KICAgICBpZiAoaXNUYWJsZSgpKSB7CiAgICAgICAgIGxv
Z2ljYWxIZWlnaHRMZW5ndGguc2V0VmFsdWUoRml4ZWQsIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KTsK
LSAgICAgICAgbG9naWNhbEhlaWdodElzQXV0byA9IGZhbHNlOworICAgICAgICBsb2dpY2FsSGVp
Z2h0SXNVbmNvbnN0cmFpbmVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFsb2dpY2FsVG9w
SXNBdXRvICYmICFsb2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7
CisgICAgaWYgKCFsb2dpY2FsVG9wSXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsSGVpZ2h0SXNV
bmNvbnN0cmFpbmVkICYmICFsb2dpY2FsQm90dG9tSXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAg
IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qXAogICAgICAgICAgKiBJZiBub25lIG9mIHRoZSB0aHJlZSBhcmUg
J2F1dG8nOiBJZiBib3RoICdtYXJnaW4tdG9wJyBhbmQgJ21hcmdpbi0KICAgICAgICAgICogYm90
dG9tJyBhcmUgJ2F1dG8nLCBzb2x2ZSB0aGUgZXF1YXRpb24gdW5kZXIgdGhlIGV4dHJhIGNvbnN0
cmFpbnQgdGhhdApAQCAtMjk4NSw5ICszMTM4LDIxIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwK
ICAgICAgICAgLy8gTk9URTogIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc29sdmUgZm9yICdib3R0
b20nIGluIHRoZSBvdmVyIGNvbnN0cmFpbmVkCiAgICAgICAgIC8vIGNhc2UgYmVjYXVzZSB0aGUg
dmFsdWUgaXMgbm90IHVzZWQgZm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAotICAgICAg
ICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9n
aWNhbEhlaWdodExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwogICAg
ICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KTsKLQorICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVu
dEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVy
TG9naWNhbEhlaWdodCkpOworICAgICAgICBpZiAodXNlQXNwZWN0UmF0aW8pIHsKKyAgICAgICAg
ICAgIGZsb2F0IHJlcXVpcmVkUmF0aW8gPSBzdHlsZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9y
KCkgLyBzdHlsZSgpLT5hc3BlY3RSYXRpb051bWVyYXRvcigpOworICAgICAgICAgICAgaWYgKGxv
Z2ljYWxXaWR0aCgpKSB7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRGb3JBc3Bl
Y3RSYXRpbyA9IHJvdW5kZWRMYXlvdXRVbml0KGxvZ2ljYWxXaWR0aCgpICogcmVxdWlyZWRSYXRp
byk7CisgICAgICAgICAgICAgICAgaWYgKGhlaWdodFR5cGUgPT0gTG9naWNhbEhlaWdodCkKKyAg
ICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gaGVpZ2h0Rm9yQXNwZWN0UmF0
aW87CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChoZWlnaHRUeXBl
ID09IExvZ2ljYWxIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFp
bGFibGVDb250YWluZXJIZWlnaHQgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0IC0gKGxvZ2ljYWxU
b3BWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQp
ICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdo
dFZhbHVlID0gYXZhaWxhYmxlQ29udGFpbmVySGVpZ2h0OworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJs
ZVNwYWNlID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dp
Y2FsSGVpZ2h0VmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2Fs
SGVpZ2h0KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CiAKICAgICAgICAgLy8gTWFyZ2lucyBhcmUg
bm93IHRoZSBvbmx5IHVua25vd24KQEAgLTMwNDIsMjYgKzMyMDcsNTIgQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVp
Z2h0TGVuZ3RoLAogICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29u
dGFpbmVyTG9naWNhbEhlaWdodCAtIChtYXJnaW5CZWZvcmVWYWx1ZSArIG1hcmdpbkFmdGVyVmFs
dWUgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwogCiAgICAgICAgIC8vIFVzZSBydWxlL2Nhc2UgdGhh
dCBhcHBsaWVzLgotICAgICAgICBpZiAobG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0
SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CisgICAgICAgIGlmIChsb2dpY2FsVG9w
SXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxIZWlnaHRJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2lj
YWxCb3R0b21Jc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgMTogKGhlaWdo
dCBpcyBjb250ZW50IGJhc2VkLCBzb2x2ZSBvZiB0b3ApCiAgICAgICAgICAgICBsb2dpY2FsSGVp
Z2h0VmFsdWUgPSBjb250ZW50TG9naWNhbEhlaWdodDsKICAgICAgICAgICAgIGxvZ2ljYWxUb3BW
YWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGxvZ2ljYWxCb3R0
b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKLSAgICAgICAgfSBlbHNlIGlm
ICghbG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxvZ2ljYWxCb3R0
b21Jc0F1dG8pIHsKKyAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzVW5jb25zdHJhaW5l
ZCAmJiBsb2dpY2FsSGVpZ2h0SXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxCb3R0b21Jc1VuY29u
c3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzogKGhlaWdodCBpcyBjb250ZW50IGJh
c2VkLCBubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKICAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1
ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAgICAg
ICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29udGVudExvZ2ljYWxIZWlnaHQ7Ci0gICAgICAg
IH0gZWxzZSBpZiAobG9naWNhbFRvcElzQXV0byAmJiAhbG9naWNhbEhlaWdodElzQXV0byAmJiAh
bG9naWNhbEJvdHRvbUlzQXV0bykgeworICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxUb3BJc1Vu
Y29uc3RyYWluZWQgJiYgIWxvZ2ljYWxIZWlnaHRJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxC
b3R0b21Jc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgNDogKHNvbHZlIG9m
IHRvcCkKICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94
TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KSk7CiAgICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVTcGFj
ZSAtIChsb2dpY2FsSGVpZ2h0VmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc0F1dG8g
JiYgbG9naWNhbEhlaWdodElzQXV0byAmJiAhbG9naWNhbEJvdHRvbUlzQXV0bykgeworICAgICAg
ICAgICAgaWYgKHVzZUFzcGVjdFJhdGlvKSB7CisgICAgICAgICAgICAgICAgZmxvYXQgcmVxdWly
ZWRSYXRpbyA9IHN0eWxlKCktPmFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSAvIHN0eWxlKCktPmFz
cGVjdFJhdGlvTnVtZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0Rm9yQXNwZWN0UmF0aW8g
PSByb3VuZGVkTGF5b3V0VW5pdChsb2dpY2FsV2lkdGgoKSAqIHJlcXVpcmVkUmF0aW8pOworICAg
ICAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0VHlwZSA9PSBMb2dpY2FsSGVpZ2h0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gaGVpZ2h0Rm9yQXNwZWN0UmF0
aW87CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhl
aWdodFR5cGUgPT0gTG9naWNhbEhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCBhdmFpbGFibGVDb250YWluZXJIZWlnaHQgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0
IC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGF2YWlsYWJsZUNvbnRhaW5lckhlaWdodDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2FsSGVpZ2h0
SXNVbmNvbnN0cmFpbmVkICYmICFsb2dpY2FsQm90dG9tSXNVbmNvbnN0cmFpbmVkKSB7CiAgICAg
ICAgICAgICAvLyBSVUxFIDU6IChzb2x2ZSBvZiBoZWlnaHQpCiAgICAgICAgICAgICBsb2dpY2Fs
VG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsK
ICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IG1heDxMYXlvdXRVbml0PigwLCBhdmFp
bGFibGVTcGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShj
b250YWluZXJMb2dpY2FsSGVpZ2h0KSkpOwotICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsVG9w
SXNBdXRvICYmICFsb2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsK
KyAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzVW5jb25zdHJhaW5lZCAmJiAhbG9naWNh
bEhlaWdodElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2FsQm90dG9tSXNVbmNvbnN0cmFpbmVkKSB7
CiAgICAgICAgICAgICAvLyBSVUxFIDY6IChubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKICAgICAg
ICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdo
dChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7
CiAgICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIGlmICh1c2VBc3BlY3RSYXRpbykgewor
ICAgICAgICAgICAgICAgIGZsb2F0IHJlcXVpcmVkUmF0aW8gPSBzdHlsZSgpLT5hc3BlY3RSYXRp
b0Rlbm9taW5hdG9yKCkgLyBzdHlsZSgpLT5hc3BlY3RSYXRpb051bWVyYXRvcigpOworICAgICAg
ICAgICAgICAgIGlmIChsb2dpY2FsV2lkdGgoKSkgeworICAgICAgICAgICAgICAgICAgICBMYXlv
dXRVbml0IGhlaWdodEZvckFzcGVjdFJhdGlvID0gcm91bmRlZExheW91dFVuaXQobG9naWNhbFdp
ZHRoKCkgKiByZXF1aXJlZFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhlaWdodFR5
cGUgPT0gTG9naWNhbEhlaWdodCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxIZWln
aHRWYWx1ZSA9IGhlaWdodEZvckFzcGVjdFJhdGlvOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHRUeXBlID09IExvZ2ljYWxIZWlnaHQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlQ29udGFpbmVySGVp
Z2h0ID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2Fs
Qm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSArIGJvcmRlcnNQbHVzUGFk
ZGluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBhdmFp
bGFibGVDb250YWluZXJIZWlnaHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAppbmRleCBiYzFmZmQ5ODM0Y2I3OWI0N2Y3MGU3YTJjZGVkZmE0ZWRh
NzQxMmYwLi42NjM5NjM1MTUxMmJhZTI1NDY4ZmEzNTNmNDkwMWUzZmQ1N2I1MGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0zMyw3ICszMyw4IEBAIGNsYXNzIFJlbmRl
ckJveFJlZ2lvbkluZm87CiBjbGFzcyBSZW5kZXJSZWdpb247CiBzdHJ1Y3QgUGFpbnRJbmZvOwog
Ci1lbnVtIExvZ2ljYWxXaWR0aFR5cGUgeyBMb2dpY2FsV2lkdGgsIE1pbkxvZ2ljYWxXaWR0aCwg
TWF4TG9naWNhbFdpZHRoIH07CitlbnVtIExvZ2ljYWxXaWR0aFR5cGUgeyBMb2dpY2FsV2lkdGgs
IE1pbkxvZ2ljYWxXaWR0aCwgTWF4TG9naWNhbFdpZHRoLCBNaW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGggfTsKK2VudW0gTG9naWNhbEhlaWdodFR5cGUgeyBMb2dpY2FsSGVpZ2h0LCBNaW5Mb2dpY2Fs
SGVpZ2h0LCBNYXhMb2dpY2FsSGVpZ2h0IH07CiAKIGVudW0gT3ZlcmxheVNjcm9sbGJhclNpemVS
ZWxldmFuY3kgeyBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgSW5jbHVkZU92ZXJsYXlTY3Jv
bGxiYXJTaXplIH07CiAKQEAgLTI5OCw2ICsyOTksMTIgQEAgcHVibGljOgogICAgIExheW91dFVu
aXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudEluUmVnaW9uKFJlbmRlclJl
Z2lvbiosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3Q7
CiAgICAgTGF5b3V0VW5pdCBwZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdo
dCgpIGNvbnN0OwogICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc1dpZHRoRGV0ZXJtaW5lZFVzaW5n
KGNvbnN0IExlbmd0aCYgbG9naWNhbFdpZHRoLCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBj
b25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzSGVp
Z2h0RGV0ZXJtaW5lZFVzaW5nKGNvbnN0IExlbmd0aCYgbG9naWNhbEhlaWdodCwgY29uc3QgTGVu
Z3RoJiBsb2dpY2FsVG9wLCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20pIGNvbnN0OworCisg
ICAgYm9vbCB1c2VBc3BlY3RSYXRpb0ZvcldpZHRoKGNvbnN0IExlbmd0aCYgbG9naWNhbFdpZHRo
LCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCkg
Y29uc3Q7CisgICAgYm9vbCB1c2VBc3BlY3RSYXRpb0ZvckhlaWdodChjb25zdCBMZW5ndGgmIGxv
Z2ljYWxIZWlnaHQsIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCwgY29uc3QgTGVuZ3RoJiBsb2dp
Y2FsQm90dG9tKSBjb25zdDsKKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxX
aWR0aCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodCgpOwogCkBAIC0z
MTksNyArMzI2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdHJldGNoZXNUb01pbklu
dHJpbnNpY0xvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBMYXlv
dXRVbml0IGNvbXB1dGVMb2dpY2FsV2lkdGhVc2luZyhMb2dpY2FsV2lkdGhUeXBlLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNh
bEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaGVpZ2h0KTsKKyAgICBMYXlvdXRVbml0IGNvbXB1
dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTG9naWNhbEhlaWdodFR5cGUpOwogICAgIExheW91dFVuaXQg
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIHdpZHRoKSBjb25zdDsKICAg
ICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhX
aWR0aChMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgYm9vbCBpbmNsdWRlTWF4V2lkdGggPSB0cnVl
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2lu
ZyhMZW5ndGggaGVpZ2h0KSBjb25zdDsKQEAgLTQ3MywxMSArNDgwLDExIEBAIHByaXZhdGU6CiAg
ICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChj
b25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmluZ0Jsb2NrLCBib29sIGNoZWNrRm9y
UGVycGVuZGljdWxhcldyaXRpbmdNb2RlID0gdHJ1ZSkgY29uc3Q7CiAKICAgICB2b2lkIGNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCgpOwotICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29udGFpbmVyRGlyZWN0aW9u
LAorICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMb2dpY2FsV2lk
dGhUeXBlLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHRE
aXJlY3Rpb24gY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgTGF5b3V0
VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsTGVmdCwgTGVuZ3RoIGxvZ2ljYWxSaWdodCwgTGVu
Z3RoIG1hcmdpbkxvZ2ljYWxMZWZ0LCBMZW5ndGggbWFyZ2luTG9naWNhbFJpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsb2dpY2Fs
V2lkdGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSwgTGF5b3V0VW5p
dCYgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9zKTsK
LSAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dp
Y2FsSGVpZ2h0LCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssCisg
ICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhMb2dpY2FsSGVpZ2h0
VHlwZSwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsVG9wLCBM
ZW5ndGggbG9naWNhbEJvdHRvbSwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxUb3AsIExlbmd0aCBtYXJn
aW5Mb2dpY2FsQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCYgbG9naWNhbEhlaWdodFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5M
b2dpY2FsVG9wVmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxCb3R0b21WYWx1ZSwgTGF5
b3V0VW5pdCYgbG9naWNhbFRvcFBvcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAxNTM1NGM1ODRmZDNmYmNmNGEzNzlmNjQxOWJmMWZh
YThhOTdkZmY0Li5iY2JkZDQ3MjVmMzAwZGI1NWFlOTIxYjY1NWQ0MDJjNTgzZTQ4ZDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTM4
NSw2ICszODUsMTYgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0IFJl
bmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb24KICAgICAgICAgICAgIHx8IHJh
cmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0
ZWREYXRhLT50ZXh0T3ZlcmZsb3cpCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNl
TGF5b3V0OwogCisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9oYXNBc3BlY3RS
YXRpbyAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1faGFzQXNwZWN0UmF0aW8pCisg
ICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OworCisgICAgICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9oYXNBc3BlY3RSYXRpbykgeworICAgICAgICAgICAgZmxv
YXQgYXNwZWN0UmF0aW8gPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb051bWVy
YXRvciAvIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3I7Cisg
ICAgICAgICAgICBmbG9hdCBvdGhlckFzcGVjdFJhdGlvID0gb3RoZXItPnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yIC8gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3I7CisgICAgICAgICAgICBpZiAoYXNwZWN0UmF0
aW8gIT0gb3RoZXJBc3BlY3RSYXRpbykKKyAgICAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZm
ZXJlbmNlTGF5b3V0OworICAgICAgICB9CisKICAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3JlZ2lvbk92ZXJmbG93ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9y
ZWdpb25PdmVyZmxvdykKICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3MzI1ZDA0YWY4ZDAyODJkNmMxNjk4Mzc1NDI3ZjA1ODlhZjg1ZDQ4Li40YTI2
Njc3OTZhYjc5NWE4NWJhZTk4YjUwNTU0Nzc4Y2EwMmQ5ODQ3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMTEtMjkgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgLXdlYmtpdC1hc3BlY3QtcmF0aW8gTGF5b3V0IEltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzI3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzMy9hc3BlY3QtcmF0
aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0
ZS13aWR0aC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3Qt
cmF0aW8tYXV0by1oZWlnaHQuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy9hc3BlY3QtcmF0
aW8vYXNwZWN0LXJhdGlvLWZsb2F0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvYXNwZWN0
LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMv
YXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRvLWZpbGwuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1
dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2Fic29sdXRlLXJh
dGlvLWFic29sdXRlLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJz
b2x1dGUtaGVpZ2h0LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLWhlaWdo
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC1leHBlY3RlZC5w
bmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0
LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVj
dC1yYXRpby1hdXRvLWhlaWdodC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhl
aWdodC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxp
bnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1mbG9hdC1leHBlY3RlZC5wbmc6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlv
L2FzcGVjdC1yYXRpby1mbG9hdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgv
Y3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWluaGVyaXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9h
c3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlv
LXN0cmV0Y2gtdG8tZmlsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTExLTI5ICBDc2Fi
YSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmll
d2VkIGV2ZW5pbmcgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9hc3Bl
Y3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC5odG1sIGIvTGF5b3V0
VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdo
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkNzg4NzMyZWExZjI3YWE0YzRlNTE5MTU1ODVkNjY1M2I0OTRk
NjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hYnNv
bHV0ZS1yYXRpby1hYnNvbHV0ZS1sZWZ0LXJpZ2h0Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8aHRt
bD4KKyAgPGhlYWQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlOyB0b3A6IDEwcHg7IGxlZnQ6IDEwcHg7IHJpZ2h0OiAxMHB4OyAtd2Via2l0
LWFzcGVjdC1yYXRpbzogMTYgLyA5OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2Pgor
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3Mz
L2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTMyY2IzZDExNWMyMDBmMzRlMDk2MDgxZDkyYTdjNDAxYWQ4YmJmMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0
ZS1oZWlnaHQuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9oZWFk
PgorICA8Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDog
NTBweDsgdG9wOiAxMHB4OyBsZWZ0OjEwcHg7IC13ZWJraXQtYXNwZWN0LXJhdGlvOiA5LzE2OyBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1
dGUtd2lkdGguaHRtbCBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRp
by1hYnNvbHV0ZS13aWR0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZWI1OGE4MTY1MGMxYzA2MDIzM2Ji
MzA5Mzk5ZDY2ODMzNThlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Fz
cGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtd2lkdGguaHRtbApAQCAtMCwwICsxLDcg
QEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiA1MHB4OyB0b3A6IDEwcHg7IGxlZnQ6MTBweDsg
LXdlYmtpdC1hc3BlY3QtcmF0aW86IDkvMTY7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9k
aXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvYXNw
ZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdodC5odG1sIGIvTGF5b3V0VGVzdHMvY3Nz
My9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTVjNTljNTAxOWZmOGJkMzk2MmQwMjNlMjQ5MDA4OWMzN2M1ZTFjNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdo
dC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+CisgIDxi
b2R5PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTBweDsgd2lk
dGg6IDIwMHB4OyAtd2Via2l0LWFzcGVjdC1yYXRpbzogMTYgLyA5OyBiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQuaHRtbCBiL0xheW91dFRl
c3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1mbG9hdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNjMDIzZmFmMTE3NmUzYTcxOGE2NTdkNzc5ZTliZTliYTZkZjYzOWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQuaHRt
bApAQCAtMCwwICsxLDMgQEAKKzxkaXYgc3R5bGU9IndpZHRoOiA2MDBweDsgaGVpZ2h0OiAyMDBw
eDsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+CisgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsg
d2lkdGg6IDUwcHg7IC13ZWJraXQtYXNwZWN0LXJhdGlvOiAxLzQ7IGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyI+PC9kaXY+Cis8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvYXNw
ZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2Fz
cGVjdC1yYXRpby9hc3BlY3QtcmF0aW8taW5oZXJpdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkM2Y3NTk2
ZTMwMjEyZTRmZDU2NmRmZWZhNWFjYWIzNjBkYzliNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8taW5oZXJpdC5odG1sCkBAIC0w
LDAgKzEsOSBAQAorPGh0bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyBib3R0b206IDEwcHg7IGxlZnQ6
IDEwcHg7IHJpZ2h0OiAxMHB4OyAtd2Via2l0LWFzcGVjdC1yYXRpbzogMjAgLyA5OyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7Ij4KKyAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
bGVmdDogNTBweDsgdG9wOiA1MHB4OyB3aWR0aDogMzAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOyAtd2Via2l0LWFzcGVjdC1yYXRpbzogaW5oZXJpdDsiPjwvZGl2PgorICAgIDwvZGl2Pgor
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3Mz
L2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzYwMzg0ZTI3MTI3YmY3N2RiNjY2NjQ5NjIxMGUzNTZiOTA0ZjM3MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNo
LXRvLWZpbGwuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9oZWFk
PgorICA8Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOiAwcHg7
IGJvdHRvbTogMHB4OyBsZWZ0OiAwcHg7IHJpZ2h0OiAwcHg7IC13ZWJraXQtYXNwZWN0LXJhdGlv
OiAxNiAvIDk7IG1hcmdpbjogYXV0bzsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IG1heC1oZWln
aHQ6IDY0MHB4OyI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2Fic29sdXRl
LXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJz
b2x1dGUtbGVmdC1yaWdodC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkwNDgwZDEwYjY5NWVk
NzQ3NDUyMmY5OGM4NGVmNWNjYzNmOWZlMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg1OQp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxt
fT9vVCEhU3QKemwkMnpYQjt5cHpCdWk3bkgxazlnXkYjdis2RWgzNUx7bnA5NlUrRiRHVFJ2I3hi
fUx3SUVHWnJkMyhjPHRIblhVCnopek4qPV9LSHZVcTt0TG1OVVhaI1NORyRFc1dDZVAhYCNvVzg1
dE9NM3F+Kzc3JmZ2cDJuZ2U1P0VXfFpgc1JCIwp6ODV1VVQ/PnhAViY3aCNSZnFAfjNYX1BTPDIl
ey1zRyM4QktnMygrc25oUzxwRjQmZyM+QF9hfkwtZmFrT2Jpe0kKb0l0JmRuNHZhRUoxN1RvTyFl
NTU3RVdFMkxqJkBINnd0ZzhyVUh4M3ZJVkNnITBEZTwzMXBvajUKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Nz
czMvYXNwZWN0LXJhdGlvL2Fic29sdXRlLXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3Qt
cmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2IzMTE2MzdiZDJiOTNlNTFmNmYwZDMwZDI4ZDU3OThmNmQzY2ZmNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNw
ZWN0LXJhdGlvL2Fic29sdXRlLXJhdGlvLWFic29sdXRlLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZp
ZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorbGF5ZXIgYXQgKDEwLDEwKSBzaXplIDc4OXg0
NDQKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgxMCwxMCkgc2l6ZSA3ODl4
NDQ0IFtiZ2NvbG9yPSMwMDgwMDBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVp
Z2h0LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Nz
czMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS1oZWlnaHQtZXhwZWN0ZWQucG5n
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg5YzEzM2NhZDgwZDMzZjE3MDc5YzAyZjhjMWZjZmExZDk2MmZhMjQKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjAKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2
WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuM3t3Cno8SyRGUnFaQzZeM3JvYCEzeGd5
aHFme2RrR2VlVlBRKTRxQGdKaSRKV0hTWl51Nj4+Xmp2KkN1LXJoMGZZSDs5VAp6YVA8R1B7bH0q
dCUmUz0rJmQzYW9JaS00Wj9NekRzaDhKX3teJSlwOE5IPy1GMm5hX29GY3speVk8eWs0WFdtcU0K
eiVrQkZnR2Q5ZktuWlU/IWdoaDxPIURrcFV1QVRYX216bSl9U2orfG5oOW85IzFfaVpJIyVMZ25y
aTlVNEZxI1dTCm1iSFFqWDd8akt2eHEhQzBLITJHWEA5TFlxdG1WTXdGTjNHNnBVWE9AZ2VDeDNs
akY3awoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29s
dXRlLWhlaWdodC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1s
aW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ4Y2UwNTIwNDI4NTk1ZmQ1NzBkZjIzYzVkY2U0MjQyYzk2
YzM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLWhlaWdodC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CitsYXllciBhdCAoMTAsMTApIHNpemUg
Mjh4NTAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgxMCwxMCkgc2l6ZSAy
OHg1MCBbYmdjb2xvcj0jMDA4MDAwXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLXdp
ZHRoLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Nz
czMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC1leHBlY3RlZC5wbmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTAyNDljNGY2NDA4MGQyY2I2OWY3YzgxMzA2ODIyNmRjMGJiY2Q5OQpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2NAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZ
VjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG19T1IKejNuUDxjJWFsWXpReGdqI2IyQXt2
KVhkei1JTUxZTEFrRVV5ezRlWUlPQUhLTGhkZjt6TG5gTEh6Mm5IJD4+JUtKCnooQzVWN3FtI0Zy
M28hQUV1RG9eYm5aRXFxOEslYmEzPUNISGNlNjd2P0NDd2cjTCZVMSFfWTdUSHstX3BLYjNEXgp6
Jnl1YTVkR2BIaGg2QllyNkJycWV1IXUxQF8+M3xKRzd6cXZ4d0RzJTtYIUUzMV9wKkNDVDwxPXdO
YmBzQWRJR2oKcShPZldeM3IySW5YZjdEZDF3JTN5dXEoVXB1MEY5UVkkMzEtJTs0JGo9ZCNXenAk
UHooMHJQQUMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1h
YnNvbHV0ZS13aWR0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtd2lkdGgtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMDNiYTQyOTg1Zjk5NDNhNmMyNTM1Mjg3ZmY0ZjQxZjM1
MWU2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1s
aW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtd2lkdGgtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorbGF5ZXIgYXQgKDEwLDEwKSBzaXpl
IDUweDg4CisgIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMTAsMTApIHNpemUg
NTB4ODggW2JnY29sb3I9IzAwODAwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdo
dC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3Mz
L2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYXV0by1oZWlnaHQtZXhwZWN0ZWQucG5nCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE0MWRhODVmZmM5OGU5Y2I2NWU4ZTM3MDA3Y2NkZTQ5MmI3NDFkOWQKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDI4NjMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5p
MCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1QheGUrCnpRdjtMSzxScjd5NmpMKX1sY1dANUdzYDV5
QiFnNlFRd3c3WVc3QXNpNEZVYGRUbjlafTk3OEpSeXVHdUxfcHBIZwp6aShfRUd7V2s2VChnaGli
ajkrfENKdm5yZ0o7dTEwZiNISlhlS2BoKDRicUxRMzxBT3QzPUQ9Q2pFJTI8UkBQcTYKekZaJlN3
P0QyT35oTyVjKElGKHsqOXU+aEZyYjhgUXFLIVgpVmBGR295Q1o+LTtSdVR1Z00tZn5WPkEjKFFe
SUkyCm43fGpLdnhuTUxHak9HSUI9WWwtZkRCamghYjBpdm9Fbm8mdVMzajNeUDY8cl9hLTEpKAoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMv
YXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdodC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGMyOWUwZTdmOGM2ZDY0ZDgzZjQ0NWViNWI1ODgyOTUxMTU1NWFkYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0
LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdodC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4NTg0CitsYXllciBhdCAoMTAsOCkgc2l6ZSAyMDB4MTEyCisgIFJlbmRlckJs
b2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMTAsOCkgc2l6ZSAyMDB4MTEyIFtiZ2NvbG9yPSMw
MDgwMDBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9j
c3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQtZXhwZWN0ZWQucG5nIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJh
dGlvLWZsb2F0LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2RkMzQzNzFiYjIzZWM3ZjM1YzU3
YTcxZmIxMjUxYjk4ODg5NzhmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODY4CnpjbWVBU0BO
PyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbjZK
Ygp6TCpwY0szKEZMUEx9T0Q2JVQmWH1XQ0tnZkJ2VjVST0c5SExiRUFUZGR6QmQmeFE9PGNJRUda
cmQzKG9AP35zOWoKenQ3RmQmXkUpLWdqRigqZUJlO3kkJldeWHNlUTBYVCYlamBIe3defkUhI2xT
R011c0NTVmhqI0c3PnFaaXpjeVh0CnpQaU9lQnw2Mk9AcnU9N2I9WDxPeEtGR3ctIUt1VTBGeXBg
fFY+QSMoUXYjaUghUD1RT19jQWcoMiNlWGt6PnZobQp2JjdoeiokYH1vVihVZFRuM3IySW5YZjdC
JnhxeTlfSVBkRTNOflRKe1cteD1OdERubXtyLVVXfE1vTHRgCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3Mz
L2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlv
LWZsb2F0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjhjNzBlN2E3YzJhZmYwNzU5OWRmMTk2
MjY1NGZkOGIyMmE5YWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWZsb2F0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDApIHNpemUgNjAweDIwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5k
ZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICg1NTAsMCkgc2l6ZSA1MHgyMDAgW2JnY29sb3I9
IzAwODAwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0LWV4cGVjdGVkLnBuZyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVj
dC1yYXRpby1pbmhlcml0LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzEzZWJhMTIwMjY4ZjU0
NTM1MDc0YjUzNDdjZWNiYjg2Yzk1ODI1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODgxCnpj
bWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19
P29UbjIrPQp6PDN1Q0Zsdk1MSE9DeiVzQlhpMyUzcXUwfjY5WXFZVzc5LTRCaHZ9fHdmemhYVCRl
cHY5NzhKUnl1RVJkX2ZQOzIKej4lcDJTaGhFKyhhWnVVZnJFbiZ1dyh8Slk+dH1LcDcpcz5BYDU3
Mj9OSD8tRjJuYV9vRmN7KXlaMmJGUi0hKUJSCnoyOE8pRXc5Zn5iNyoyNU5GZmAwS3p7Sm9vJW91
T09gRnxYI2lyZFRaQDN6aFFJRUR7KlljPz0yQnIkT19ENSNBeAp6TWd4SldEUGRkTXYkd1QjeDNW
eGlfPGxDVzR3d05nYWM0azBkMj5fPmY3dnd9SzclPVlmSGpMPEBoS2pMaFRrODYKcl5+IUxvUEtI
X1NJTz82ekJzd3Q3ejhsPDlxQyN1YzAjNSoydFBCakV1NnsxLW9EIU08OFY3K0MKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlv
L2FzcGVjdC1yYXRpby1pbmhlcml0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWVkOWI1MmFl
MmFlZjU5Zjg1N2ZiMjU2MGVmZGMwY2Q5MjhmMjhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJh
dGlvLWluaGVyaXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorbGF5
ZXIgYXQgKDEwLDEwKSBzaXplIDc4OHgzNTUKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgxMCwxMCkgc2l6ZSA3ODh4MzU1IFtiZ2NvbG9yPSNGRjAwMDBdCitsYXllciBhdCAo
NjAsNjApIHNpemUgMzAweDEzNQorICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkg
e0RJVn0gYXQgKDAsMCkgc2l6ZSAzMDB4MTM1IFtiZ2NvbG9yPSMwMDgwMDBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9h
c3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJl
dGNoLXRvLWZpbGwtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYmU2MmM4ZDBkMDVhYTQ1NmUx
N2ZhMmM2MmNjYmEyMTEwZjNmMmMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NDkKemNtZUFT
QE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1Rt
fn0oCnpxbSlGMEJtP3RBT0pnSTB3NF84TWl6RXk0PFRNTCYzJHhWSmwrKj1iN1V2aWt4SGZ5YklF
R1pyZDMpbV5DeGZCQAp6aXtzdUNYS1ZDMyomSjZYJX02KHtQN2BCYm5FVT00MTRGfWc0anFQdTgz
JmpjSXlncmVsbXg8IXhhWiRrNyNnLSQKelkrenRXViZZfntQI2F+ODJFdTRjN3xqS3Z4bk1MR2pP
SyEybD8kclZeNzB1TkQhU041PnZgJW1jST1zJnhIU3E0ClNkRFp+aXliUFlNZWxGe3I1fUUpdiYt
X3ZWCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tc3RyZXRj
aC10by1maWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxp
bnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRvLWZpbGwtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFhM2Q0YzdkY2FlNjIwZTkxNDhmMjk2NjU2ODIxNmRhNjEyMDdl
ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKK2xheWVyIGF0ICgwLDc1KSBzaXplIDgw
MHg0NTAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDc1KSBzaXplIDgw
MHg0NTAgW2JnY29sb3I9IzAwODAwMF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117111</attachid>
            <date>2011-11-29 20:51:29 -0800</date>
            <delta_ts>2011-11-30 20:51:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73277-20111129235127.patch</filename>
            <type>text/plain</type>
            <size>56768</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwYjk0YjA5N2Q5ODJl
NDI0ZjU1NWRjYzU4Y2M1NzA3MzQzMzdjYS4uYzVjOTU4NzZhYTMwODg5NWVjNmQzY2UxYzczMmM2
MmZiMzMxM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTI5ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIC13ZWJraXQtYXNwZWN0
LXJhdGlvIExheW91dCBJbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMyNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0
aW8tYWJzb2x1dGUtbGVmdC1yaWdodC5odG1sCisgICAgICAgICAgICAgICBjc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0Lmh0bWwKKyAgICAgICAgICAgICAgIGNz
czMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC5odG1sCisgICAgICAg
ICAgICAgICBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYXV0by1oZWlnaHQuaHRtbAor
ICAgICAgICAgICAgICAgY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWZsb2F0Lmh0bWwK
KyAgICAgICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhlcml0Lmh0
bWwKKyAgICAgICAgICAgICAgIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNo
LXRvLWZpbGwuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzV2lkdGhE
ZXRlcm1pbmVkVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojppc0hlaWdodERl
dGVybWluZWRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnVzZUFzcGVjdFJh
dGlvRm9yV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1c2VBc3BlY3RSYXRp
b0ZvckhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2Fs
V2lkdGhJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKwogMjAxMS0x
MS0yOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBUZXh0UHJvbXB0IHNob3VsZCBzaG93IHN1Z2dlc3QgYWJvdmUgb3IgdW5k
ZXIgc28gdGhhdCBpdCBoYXMgbWF4aW1hbCBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBlMjEzYWE3M2U4MmY3NjQwMTI4NTc3MWZiM2M0YWY5YTFh
NzcyNGUxLi5kMmNiNzU4Y2Y3NmY0MWUzNWQ0MTI1Mzc3ZGNhNTlmYWY5NWQ5YTY0IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMTIw
Myw2ICsxMjA0LDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKIAogICAgIExheW91dFVuaXQg
b2xkV2lkdGggPSBsb2dpY2FsV2lkdGgoKTsKICAgICBMYXlvdXRVbml0IG9sZENvbHVtbldpZHRo
ID0gZGVzaXJlZENvbHVtbldpZHRoKCk7CisgIAorICAgIExheW91dFVuaXQgcHJldmlvdXNIZWln
aHQgPSBsb2dpY2FsSGVpZ2h0KCk7CisgICAgc2V0TG9naWNhbEhlaWdodCgwKTsKIAogICAgIGNv
bXB1dGVMb2dpY2FsV2lkdGgoKTsKICAgICBjYWxjQ29sdW1uV2lkdGgoKTsKQEAgLTEyMTksOCAr
MTIyMyw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdoCiAgICAgICAgIGZsb2F0c0xheW91dFBh
c3MgPSBQb3NpdGlvbmVkRmxvYXRMYXlvdXRQYXNzOwogICAgIGNsZWFyRmxvYXRzKGZsb2F0c0xh
eW91dFBhc3MpOwogCi0gICAgTGF5b3V0VW5pdCBwcmV2aW91c0hlaWdodCA9IGxvZ2ljYWxIZWln
aHQoKTsKLSAgICBzZXRMb2dpY2FsSGVpZ2h0KDApOwogICAgIGJvb2wgaGFzU3BlY2lmaWVkUGFn
ZUxvZ2ljYWxIZWlnaHQgPSBmYWxzZTsKICAgICBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZCA9IGZhbHNlOwogICAgIENvbHVtbkluZm8qIGNvbEluZm8gPSBjb2x1bW5JbmZvKCk7CkBAIC0x
MzIyLDYgKzEzMjQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaAogICAgIExheW91dFVuaXQg
b2xkQ2xpZW50QWZ0ZXJFZGdlID0gY2xpZW50TG9naWNhbEJvdHRvbSgpOwogICAgIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0KCk7CiAgICAgTGF5b3V0VW5pdCBuZXdIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0
KCk7CisgICAgICAKICAgICBpZiAob2xkSGVpZ2h0ICE9IG5ld0hlaWdodCkgewogICAgICAgICBp
ZiAob2xkSGVpZ2h0ID4gbmV3SGVpZ2h0ICYmIG1heEZsb2F0TG9naWNhbEJvdHRvbSA+IG5ld0hl
aWdodCAmJiAhY2hpbGRyZW5JbmxpbmUoKSkgewogICAgICAgICAgICAgLy8gT25lIG9mIG91ciBj
aGlsZHJlbidzIGZsb2F0cyBtYXkgaGF2ZSBiZWNvbWUgYW4gb3ZlcmhhbmdpbmcgZmxvYXQgZm9y
IHVzLiBXZSBuZWVkIHRvIGxvb2sgZm9yIGl0LgpAQCAtMTMzOCw2ICsxMzQxLDE3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdoCiAgICAgaWYgKHByZXZpb3VzSGVpZ2h0ICE9IG5ld0hlaWdodCkK
ICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAKKyAgICAvLyBPbmx5IHJlY29tcHV0
ZSBsb2dpY2FsIHdpZHRoIGlmIGFzcGVjdCByYXRpbyBpcyBub3Qgc2F0aXNmaWVkCisgICAgaWYg
KHN0eWxlKCktPmhhc0FzcGVjdFJhdGlvKCkpIHsKKyAgICAgICAgZmxvYXQgZXhwZWN0ZWRXaWR0
aCA9IGxvZ2ljYWxIZWlnaHQoKSAqIHN0eWxlKCktPmFzcGVjdFJhdGlvKCk7CisgICAgICAgIGlm
IChmYWJzKGV4cGVjdGVkV2lkdGggLSBsb2dpY2FsV2lkdGgoKSkgPCBudW1lcmljX2xpbWl0czxm
bG9hdD46OmVwc2lsb24oKSkgeworICAgICAgICAgICAgb2xkV2lkdGggPSBsb2dpY2FsV2lkdGgo
KTsKKyAgICAgICAgICAgIGNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKKyAgICAgICAgICAgIGlmIChv
bGRXaWR0aCAhPSBsb2dpY2FsV2lkdGgoKSkKKyAgICAgICAgICAgICAgICByZWxheW91dENoaWxk
cmVuID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGJvb2wgbmVlZEFub3RoZXJMYXlv
dXRQYXNzID0gbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc1Jv
b3QoKSk7CiAKICAgICBpZiAoaW5SZW5kZXJGbG93VGhyZWFkKCkpCkBAIC0xOTY5LDcgKzE5ODMs
NiBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCYgbWF4RmxvYQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQotCiAgICAgTGF5b3V0VW5pdCBiZWZvcmVFZGdlID0gYm9yZGVyQmVmb3JlKCkgKyBwYWRk
aW5nQmVmb3JlKCk7CiAgICAgTGF5b3V0VW5pdCBhZnRlckVkZ2UgPSBib3JkZXJBZnRlcigpICsg
cGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTE5OTgsNyAr
MjAxMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiBtYXhGbG9hCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3
ZSBsYXlvdXQgY2hpbGRyZW4gaWYgdGhleSBuZWVkIGl0LgogICAgICAgICAvLyBGSVhNRTogVGVj
aG5pY2FsbHkgcGVyY2VudGFnZSBoZWlnaHQgb2JqZWN0cyBvbmx5IG5lZWQgYSByZWxheW91dCBp
ZiB0aGVpciBwZXJjZW50YWdlIGlzbid0IGdvaW5nIHRvIGJlIHR1cm5lZCBpbnRvCiAgICAgICAg
IC8vIGFuIGF1dG8gdmFsdWUuICBBZGQgYSBtZXRob2QgdG8gZGV0ZXJtaW5lIHRoaXMsIHNvIHRo
YXQgd2UgY2FuIGF2b2lkIHRoZSByZWxheW91dC4KLSAgICAgICAgaWYgKHJlbGF5b3V0Q2hpbGRy
ZW4gfHwgKChjaGlsZC0+c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLmlzUGVyY2VudCgpIHx8IGNo
aWxkLT5zdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgY2hpbGQtPnN0
eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1BlcmNlbnQoKSkgJiYgIWlzUmVuZGVyVmlldygp
KSkKKyAgICAgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4gfHwgKChjaGlsZC0+c3R5bGUoKS0+aGFz
QXNwZWN0UmF0aW8oKSB8fCBjaGlsZC0+c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLmlzUGVyY2Vu
dCgpIHx8IGNoaWxkLT5zdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwg
Y2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1BlcmNlbnQoKSkgJiYgIWlzUmVu
ZGVyVmlldygpKSkKICAgICAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUs
IGZhbHNlKTsKIAogICAgICAgICAvLyBJZiByZWxheW91dENoaWxkcmVuIGlzIHNldCBhbmQgdGhl
IGNoaWxkIGhhcyBwZXJjZW50YWdlIHBhZGRpbmcgb3IgYW4gZW1iZWRkZWQgY29udGVudCBib3gs
IHdlIGFsc28gbmVlZCB0byBpbnZhbGlkYXRlIHRoZSBjaGlsZHMgcHJlZiB3aWR0aHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDUzMWFjYmMxNWE3MjI4ZjVlZmE3
YTk2YWJkNWFhMjI2OGZjMGNkYTcuLjFjZDQ4MGQyOGQyMWMzOGVlZDJiYzNjZWFjYTliM2Q3Zjkw
MzQ5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNjU4LDYg
KzE2NTgsMzYgQEAgdm9pZCBSZW5kZXJCb3g6OnJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNv
bnN0IExheW91dFJlY3QmIHJlY3QpCiAgICAgfQogfQogCitib29sIFJlbmRlckJveDo6aXNXaWR0
aERldGVybWluZWRVc2luZyhjb25zdCBMZW5ndGgmIGxvZ2ljYWxXaWR0aCwgY29uc3QgTGVuZ3Ro
JiBsb2dpY2FsTGVmdCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQpIGNvbnN0Cit7CisgICAg
Ym9vbCB3aWR0aElzQXV0byA9IGxvZ2ljYWxXaWR0aC5pc0F1dG8oKTsKKyAgICBib29sIGxlZnRJ
c0F1dG8gPSBsb2dpY2FsTGVmdC5pc0F1dG8oKTsKKyAgICBib29sIHJpZ2h0SXNBdXRvID0gbG9n
aWNhbFJpZ2h0LmlzQXV0bygpOworICAgIGJvb2wgaGFzQXNwZWN0UmF0aW8gPSBzdHlsZSgpLT5o
YXNBc3BlY3RSYXRpbygpOworICAgIC8vIFdpZHRoIGlzIGRldGVybWluZWQgaWYgdGhlIHdpZHRo
IGlzIHNwZWNpZmllZCBvciBsZWZ0IGFuZCByaWdodCBhcmUgc3BlY2lmaWVkIG9uIGEgcG9zaXRp
b25lZCBib3guCisgICAgcmV0dXJuICF3aWR0aElzQXV0byB8fCAoIWxlZnRJc0F1dG8gJiYgd2lk
dGhJc0F1dG8gJiYgIXJpZ2h0SXNBdXRvICYmICFoYXNBc3BlY3RSYXRpbyAmJiBpc1Bvc2l0aW9u
ZWQoKSk7Cit9CisKK2Jvb2wgUmVuZGVyQm94Ojppc0hlaWdodERldGVybWluZWRVc2luZyhjb25z
dCBMZW5ndGgmIGxvZ2ljYWxIZWlnaHQsIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCwgY29uc3Qg
TGVuZ3RoJiBsb2dpY2FsQm90dG9tKSBjb25zdAoreworICAgIGJvb2wgaGVpZ2h0SXNBdXRvID0g
bG9naWNhbEhlaWdodC5pc0F1dG8oKTsKKyAgICBib29sIHRvcElzQXV0byA9IGxvZ2ljYWxUb3Au
aXNBdXRvKCk7CisgICAgYm9vbCBib3R0b21Jc0F1dG8gPSBsb2dpY2FsQm90dG9tLmlzQXV0bygp
OworICAgIGJvb2wgaGFzQXNwZWN0UmF0aW8gPSBzdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpOwor
ICAgIC8vIEhlaWdodCBpcyBkZXRlcm1pbmVkIGlmIGhlaWdodCBpcyBzcGVjaWZpY2VkIG9yIHRv
cCBhbmQgYm90dG9tIGFyZSBzcGVjaWZpZWQgb24gYSBwb3NpdGlvbmVkIGJveC4KKyAgICByZXR1
cm4gIWhlaWdodElzQXV0byB8fCAoIXRvcElzQXV0byAmJiBoZWlnaHRJc0F1dG8gJiYgIWJvdHRv
bUlzQXV0byAmJiAhaGFzQXNwZWN0UmF0aW8gJiYgaXNQb3NpdGlvbmVkKCkpOworfQorCitib29s
IFJlbmRlckJveDo6dXNlQXNwZWN0UmF0aW9Gb3JXaWR0aChjb25zdCBMZW5ndGgmIGxvZ2ljYWxX
aWR0aCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmln
aHQpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc1dpZHRoRGV0ZXJtaW5lZFVzaW5nKGxvZ2ljYWxX
aWR0aCwgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCkgJiYgc3R5bGUoKS0+aGFzQXNwZWN0UmF0
aW8oKTsKK30KKworYm9vbCBSZW5kZXJCb3g6OnVzZUFzcGVjdFJhdGlvRm9ySGVpZ2h0KGNvbnN0
IExlbmd0aCYgbG9naWNhbEhlaWdodCwgY29uc3QgTGVuZ3RoJiBsb2dpY2FsVG9wLCBjb25zdCBM
ZW5ndGgmIGxvZ2ljYWxCb3R0b20pIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hlaWdodERldGVy
bWluZWRVc2luZyhsb2dpY2FsSGVpZ2h0LCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKSAmJiBz
dHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpOworfQorCiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aCgpCiB7CiAgICAgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKCk7CkBAIC0x
NzQwLDcgKzE3NzAsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVn
aW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZgogICAgIH0KIAogICAgIC8v
IE1hcmdpbiBjYWxjdWxhdGlvbnMuCi0gICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc0F1dG8o
KSB8fCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7CisgICAgaWYgKChsb2dpY2Fs
V2lkdGhMZW5ndGguaXNBdXRvKCkgJiYgIXN0eWxlKCktPmhhc0FzcGVjdFJhdGlvKCkpIHx8IGhh
c1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2spIHsKICAgICAgICAgc2V0TWFyZ2luU3RhcnQo
c3R5bGUoKS0+bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRo
KSk7CiAgICAgICAgIHNldE1hcmdpbkVuZChzdHlsZSgpLT5tYXJnaW5FbmQoKS5jYWxjTWluVmFs
dWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAgICAgfSBlbHNlCkBAIC0xNzU0LDE4ICsxNzg0
LDMzIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oUmVuZGVy
UmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2ZmCiBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29t
cHV0ZUxvZ2ljYWxXaWR0aFVzaW5nKExvZ2ljYWxXaWR0aFR5cGUgd2lkdGhUeXBlLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkKIHsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aFJlc3VsdCA9IGxvZ2ljYWxXaWR0aCgpOworCiAgICAgTGVuZ3RoIGxvZ2ljYWxXaWR0aDsKLSAg
ICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0aCkKKyAgICBzd2l0Y2ggKHdpZHRoVHlwZSkg
eworICAgIGNhc2UgTG9naWNhbFdpZHRoOgogICAgICAgICBsb2dpY2FsV2lkdGggPSBzdHlsZSgp
LT5sb2dpY2FsV2lkdGgoKTsKLSAgICBlbHNlIGlmICh3aWR0aFR5cGUgPT0gTWluTG9naWNhbFdp
ZHRoKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pbkxvZ2ljYWxXaWR0aDoKICAgICAgICAg
bG9naWNhbFdpZHRoID0gc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCk7Ci0gICAgZWxzZQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE1heExvZ2ljYWxXaWR0aDoKICAgICAgICAgbG9naWNhbFdp
ZHRoID0gc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTWluUHJlZmVycmVkTG9naWNhbFdpZHRoOgorICAgICAgICBsb2dpY2FsV2lkdGggPSAgTGVu
Z3RoKG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxX
aWR0aCgpLCBGaXhlZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGlmIChsb2dpY2Fs
V2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSkgewogICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0
YXJ0ID0gc3R5bGUoKS0+bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUoYXZhaWxhYmxlTG9naWNh
bFdpZHRoKTsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBzdHlsZSgpLT5tYXJnaW5F
bmQoKS5jYWxjTWluVmFsdWUoYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgbG9naWNh
bFdpZHRoUmVzdWx0ID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gbWFyZ2luU3RhcnQgLSBtYXJn
aW5FbmQ7CisgICAgICAgIC8vIEZJWE1FOiBJbiB0aGlzIGNhc2UsIHRoZSBmaXJzdCBwYXNzIG9m
IGNvbXB1dGVMb2dpY2FsV2lkdGhVc2luZyB3aWxsIGRvIG5vdGhpbmcKKyAgICAgICAgLy8gYW5k
IHRoZSBhcHByb3ByaWF0ZSB3aWR0aCB3aWxsIG9ubHkgYmUgY29tcHV0ZWQgYWZ0ZXIgd2UgY29t
cHV0ZSBoZWlnaHQuCisgICAgICAgIGlmIChzdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpICYmIHdp
ZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGggJiYgbG9naWNhbEhlaWdodCgpKSB7CisgICAgICAgICAg
ICBMYXlvdXRVbml0IHdpZHRoRm9yQXNwZWN0UmF0aW8gPSByb3VuZGVkTGF5b3V0VW5pdChsb2dp
Y2FsSGVpZ2h0KCkgKiBzdHlsZSgpLT5hc3BlY3RSYXRpbygpKTsKKyAgICAgICAgICAgIGxvZ2lj
YWxXaWR0aFJlc3VsdCA9IG1pbih3aWR0aEZvckFzcGVjdFJhdGlvLCBsb2dpY2FsV2lkdGhSZXN1
bHQpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKHNpemVzVG9JbnRyaW5zaWNMb2dpY2FsV2lk
dGgod2lkdGhUeXBlKSkgewogICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gbWF4KGxv
Z2ljYWxXaWR0aFJlc3VsdCwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpOwpAQCAtMjAwOSwx
MiArMjA1NCwxMiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogCiAg
ICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVzdWx0OwogICAgICAgICBpZiAoY2hlY2tNaW5NYXhI
ZWlnaHQpIHsKLSAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0
VXNpbmcoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgIGhlaWdodFJlc3Vs
dCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogVXNlIDwgMCBvciByb3VnaGx5RXF1YWxzIHdoZW4gd2UgbW92ZSB0byBmbG9h
dCwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjE0OAogICAg
ICAgICAgICAgaWYgKGhlaWdodFJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgICAgICBoZWlnaHRS
ZXN1bHQgPSBsb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG1pbkggPSBj
b21wdXRlTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7IC8v
IExlYXZlIGFzIC0xIGlmIHVuc2V0LgotICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXhIID0gc3R5
bGUoKS0+bG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoZWlnaHRSZXN1bHQgOiBj
b21wdXRlTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKSk7Cisg
ICAgICAgICAgICBMYXlvdXRVbml0IG1pbkggPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1p
bkxvZ2ljYWxIZWlnaHQpOyAvLyBMZWF2ZSBhcyAtMSBpZiB1bnNldC4KKyAgICAgICAgICAgIExh
eW91dFVuaXQgbWF4SCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgp
ID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYXhMb2dpY2FsSGVp
Z2h0KTsKICAgICAgICAgICAgIGlmIChtYXhIID09IC0xKQogICAgICAgICAgICAgICAgIG1heEgg
PSBoZWlnaHRSZXN1bHQ7CiAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBtaW4obWF4SCwgaGVp
Z2h0UmVzdWx0KTsKQEAgLTIwNjEsMjEgKzIxMDYsMzcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVMb2dpY2FsSGVpZ2h0KCkKICAgICB9CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb21w
dXRlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCkKK0xheW91dFVuaXQgUmVuZGVy
Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKExvZ2ljYWxIZWlnaHRUeXBlIGhlaWdodFR5
cGUpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gLTE7CisgICAgTGVuZ3RoIGg7
CisgICAgc3dpdGNoIChoZWlnaHRUeXBlKSB7CisgICAgY2FzZSBMb2dpY2FsSGVpZ2h0OgorICAg
ICAgICBoID0gc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIE1pbkxvZ2ljYWxIZWlnaHQ6CisgICAgICAgIGggPSBzdHlsZSgpLT5sb2dpY2FsTWluSGVp
Z2h0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWF4TG9naWNhbEhlaWdodDoKKyAgICAg
ICAgaCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0VmFsdWUgPSAtMTsKICAgICBpZiAoIWgu
aXNBdXRvKCkpIHsKICAgICAgICAgaWYgKGguaXNGaXhlZCgpKQotICAgICAgICAgICAgbG9naWNh
bEhlaWdodCA9IGgudmFsdWUoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGgu
dmFsdWUoKTsKICAgICAgICAgZWxzZSBpZiAoaC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgIGxv
Z2ljYWxIZWlnaHQgPSBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoaCk7CisgICAgICAg
ICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQo
aCk7CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgPCAwIG9yIHJvdWdobHlFcXVhbHMgd2hlbiB3ZSBt
b3ZlIHRvIGZsb2F0LCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY2MTQ4Ci0gICAgICAgIGlmIChsb2dpY2FsSGVpZ2h0ICE9IC0xKSB7Ci0gICAgICAgICAgICBs
b2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUJvcmRlckJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCk7Ci0gICAgICAgICAgICByZXR1cm4gbG9naWNhbEhlaWdodDsKKyAgICAgICAgaWYgKGxvZ2lj
YWxIZWlnaHRWYWx1ZSAhPSAtMSkgeworICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0g
Y29tcHV0ZUJvcmRlckJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodFZhbHVlKTsKKyAgICAg
ICAgICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0VmFsdWU7CiAgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKHN0eWxlKCktPmhhc0FzcGVjdFJhdGlvKCkgJiYgaGVpZ2h0VHlwZSA9PSBMb2dpY2FsSGVp
Z2h0ICYmIGxvZ2ljYWxXaWR0aCgpKSB7CisgICAgICAgIExheW91dFVuaXQgaGVpZ2h0Rm9yQXNw
ZWN0UmF0aW8gPSByb3VuZGVkTGF5b3V0VW5pdChsb2dpY2FsV2lkdGgoKSAvIHN0eWxlKCktPmFz
cGVjdFJhdGlvKCkpOworICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBoZWlnaHRGb3JBc3Bl
Y3RSYXRpbzsKICAgICB9Ci0gICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQ7CisgICAgcmV0dXJuIGxv
Z2ljYWxIZWlnaHRWYWx1ZTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVQZXJj
ZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCkKQEAgLTI1MzUsMTAgKzI1
OTYsMTEgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKFJl
bmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG8KICAgICAvLyBDYWxjdWxhdGUgY29uc3Ry
YWludCBlcXVhdGlvbiB2YWx1ZXMgZm9yICd3aWR0aCcgY2FzZS4KICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aFJlc3VsdDsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0UmVzdWx0OwotICAg
IGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbFdpZHRo
KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgY29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMb2dpY2FsV2lkdGgsIGNvbnRhaW5lckJsb2NrLCBjb250
YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRM
ZW5ndGgsIG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQsIG1hcmdpbkxv
Z2ljYWxMZWZ0QWxpYXMsIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzLCBsb2dpY2FsTGVmdFJlc3Vs
dCk7CisgICAgCiAgICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0aFJlc3VsdCk7CiAgICAg
c2V0TG9naWNhbExlZnQobG9naWNhbExlZnRSZXN1bHQpOwogCkBAIC0yNTQ5LDExICsyNjExLDEy
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJS
ZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2lu
TG9naWNhbFJpZ2h0OwogICAgICAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxMZWZ0UG9zOwogCi0g
ICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNh
bE1heFdpZHRoKCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAg
IGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWF4TG9naWNhbFdpZHRoLCBjb250
YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRk
aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxM
ZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5M
b2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF4TG9naWNhbFdpZHRoLCBtYXhNYXJnaW5Mb2dpY2FsTGVmdCwgbWF4TWFyZ2luTG9naWNhbFJp
Z2h0LCBtYXhMb2dpY2FsTGVmdFBvcyk7CiAKKwogICAgICAgICBpZiAobG9naWNhbFdpZHRoKCkg
PiBtYXhMb2dpY2FsV2lkdGgpIHsKICAgICAgICAgICAgIHNldExvZ2ljYWxXaWR0aChtYXhMb2dp
Y2FsV2lkdGgpOwogICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1heE1hcmdp
bkxvZ2ljYWxMZWZ0OwpAQCAtMjU2OSw3ICsyNjMyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0
IG8KICAgICAgICAgTGF5b3V0VW5pdCBtaW5NYXJnaW5Mb2dpY2FsUmlnaHQ7CiAgICAgICAgIExh
eW91dFVuaXQgbWluTG9naWNhbExlZnRQb3M7CiAKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKSwgY29udGFpbmVyQmxv
Y2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGhVc2luZyhNaW5Mb2dpY2FsV2lkdGgsIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJl
Y3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFp
bmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExl
bmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGgsIG1pbk1hcmdp
bkxvZ2ljYWxMZWZ0LCBtaW5NYXJnaW5Mb2dpY2FsUmlnaHQsIG1pbkxvZ2ljYWxMZWZ0UG9zKTsK
QEAgLTI1ODMsNyArMjY0Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgfQogCiAg
ICAgaWYgKHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdpZHRoKCkgJiYgbG9naWNhbFdp
ZHRoKCkgPCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZykg
ewotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aChtaW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZywgRml4ZWQpLCBjb250
YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAorICAgICAgICBjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxXaWR0aFVzaW5nKE1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgY29udGFpbmVyQmxv
Y2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExlbmd0
aCwgbG9naWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNhbFJp
Z2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxX
aWR0aFJlc3VsdCwgbWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNhbFJpZ2h0QWxp
YXMsIGxvZ2ljYWxMZWZ0UmVzdWx0KTsKQEAgLTI2MjAsNyArMjY4Myw3IEBAIHN0YXRpYyB2b2lk
IGNvbXB1dGVMb2dpY2FsTGVmdFBvc2l0aW9uZWRPZmZzZXQoTGF5b3V0VW5pdCYgbG9naWNhbExl
ZnRQb3MsIGNvbnN0CiAgICAgICAgIGxvZ2ljYWxMZWZ0UG9zICs9IChjaGlsZC0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGNvbnRhaW5lckJsb2NrLT5ib3JkZXJMZWZ0KCkgOiBjb250YWlu
ZXJCbG9jay0+Ym9yZGVyVG9wKCkpOwogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29udGFpbmVyRGly
ZWN0aW9uLAordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNp
bmcoTG9naWNhbFdpZHRoVHlwZSB3aWR0aFR5cGUsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBjb250YWluZXJCbG9jaywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgg
bG9naWNhbExlZnQsIExlbmd0aCBsb2dpY2FsUmlnaHQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsTGVm
dCwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxXaWR0aFZhbHVlLCBM
YXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dp
Y2FsUmlnaHRWYWx1ZSwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MpCkBAIC0yNjI4LDE0ICsy
NjkxLDMxIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVz
aW5nKExlbmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlCiAgICAgLy8gJ2xlZnQnIGFuZCAncmln
aHQnIGNhbm5vdCBib3RoIGJlICdhdXRvJyBiZWNhdXNlIG9uZSB3b3VsZCBvZiBiZWVuCiAgICAg
Ly8gY29udmVydGVkIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYWxyZWFkeQogICAgIEFTU0VSVCgh
KGxvZ2ljYWxMZWZ0LmlzQXV0bygpICYmIGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkpOworICAgIExl
bmd0aCBsb2dpY2FsV2lkdGg7CisgICAgc3dpdGNoICh3aWR0aFR5cGUpIHsKKyAgICBjYXNlIExv
Z2ljYWxXaWR0aDoKKyAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGUoKS0+bG9naWNhbFdpZHRo
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWluTG9naWNhbFdpZHRoOgorICAgICAgICBs
b2dpY2FsV2lkdGggPSBzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBNYXhMb2dpY2FsV2lkdGg6CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxl
KCktPmxvZ2ljYWxNYXhXaWR0aCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aDoKKyAgICAgICAgbG9naWNhbFdpZHRoID0gIExlbmd0aChtaW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZywgRml4ZWQpOworICAgICAg
ICBicmVhazsKKyAgICB9CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0VmFsdWUgPSAwOwog
Ci0gICAgYm9vbCBsb2dpY2FsV2lkdGhJc0F1dG8gPSBsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWNP
ckF1dG8oKTsKLSAgICBib29sIGxvZ2ljYWxMZWZ0SXNBdXRvID0gbG9naWNhbExlZnQuaXNBdXRv
KCk7Ci0gICAgYm9vbCBsb2dpY2FsUmlnaHRJc0F1dG8gPSBsb2dpY2FsUmlnaHQuaXNBdXRvKCk7
CisgICAgYm9vbCB1c2VBc3BlY3RSYXRpbyA9IHVzZUFzcGVjdFJhdGlvRm9yV2lkdGgobG9naWNh
bFdpZHRoLCBsb2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0KTsKKyAgICAvLyBJZiB3ZSBhcmUgdXNp
bmcgYXNwZWN0LXJhdGlvIGZvciB3aWR0aCB0aGVuIHRoZXJlIGlzIGEgY29uc3RyYWludCBvbiB3
aWR0aC4KKyAgICBib29sIGxvZ2ljYWxXaWR0aElzVW5jb25zdHJhaW5lZCA9IGxvZ2ljYWxXaWR0
aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF1c2VBc3BlY3RSYXRpbzsKKyAgICBib29sIGxvZ2lj
YWxMZWZ0SXNVbmNvbnN0cmFpbmVkID0gbG9naWNhbExlZnQuaXNBdXRvKCk7CisgICAgYm9vbCBs
b2dpY2FsUmlnaHRJc1VuY29uc3RyYWluZWQgPSBsb2dpY2FsUmlnaHQuaXNBdXRvKCk7CiAKLSAg
ICBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmICFsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2lj
YWxSaWdodElzQXV0bykgeworICAgIGlmICghbG9naWNhbExlZnRJc1VuY29uc3RyYWluZWQgJiYg
IWxvZ2ljYWxXaWR0aElzVW5jb25zdHJhaW5lZCAmJiAhbG9naWNhbFJpZ2h0SXNVbmNvbnN0cmFp
bmVkKSB7CiAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgICAgICAgKiBJZiBub25lIG9m
IHRoZSB0aHJlZSBpcyAnYXV0byc6IElmIGJvdGggJ21hcmdpbi1sZWZ0JyBhbmQgJ21hcmdpbi0K
ICAgICAgICAgICogcmlnaHQnIGFyZSAnYXV0bycsIHNvbHZlIHRoZSBlcXVhdGlvbiB1bmRlciB0
aGUgZXh0cmEgY29uc3RyYWludCB0aGF0CkBAIC0yNjUzLDYgKzI3MzMsMTkgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxX
aWR0aCwgY29uc3QgUmUKIAogICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGxvZ2ljYWxXaWR0aFZh
bHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNWYWx1
ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgaWYgKHVzZUFzcGVjdFJhdGlvICYm
IHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgpIHsKKyAgICAgICAgICAgIGlmIChsb2dpY2FsSGVp
Z2h0KCkpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCByZXF1aXJlZFJhdGlvID0gc3R5bGUoKS0+
YXNwZWN0UmF0aW8oKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHdpZHRoRm9yQXNwZWN0
UmF0aW8gPSByb3VuZGVkTGF5b3V0VW5pdChsb2dpY2FsSGVpZ2h0KCkgKiByZXF1aXJlZFJhdGlv
KTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9ICB3aWR0aEZvckFzcGVjdFJh
dGlvOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBIZWlnaHQgaXMg
bm90IGRldGVybWluZWQgc28gTG9naWNhbFdpZHRoIGlzIHRoZSBjb250YWluZXIncyBjb250ZW50
IHdpZHRoLgorICAgICAgICAgICAgICAgIC8vIHdpZHRoVHlwZSB3aWxsIGJlIExvZ2ljYWxNaW5X
aWR0aCBvciBMb2dpY2FsTWF4V2lkdGggb25seSBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgaW4gd2hp
Y2gKKyAgICAgICAgICAgICAgICAvLyBjYXNlIHRoZXkgaGF2ZSB0byBiZSByZXNwZWN0ZWQuCisg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVDb250YWluZXJXaWR0aCA9IGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCAtIChsb2dpY2FsTGVmdFZhbHVlICsgYm9yZGVyc1BsdXNQYWRkaW5n
KTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGF2YWlsYWJsZUNvbnRhaW5l
cldpZHRoOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgY29uc3QgTGF5b3V0
VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIChsb2dpY2FsTGVm
dFZhbHVlICsgbG9naWNhbFdpZHRoVmFsdWUgKyBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwogCkBAIC0yNzQxLDcgKzI4
MzQsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2lu
ZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZQogCiAgICAgICAgIC8vIEZJWE1FOiBJcyB0
aGVyZSBhIGZhc3RlciB3YXkgdG8gZmluZCB0aGUgY29ycmVjdCBjYXNlPwogICAgICAgICAvLyBV
c2UgcnVsZS9jYXNlIHRoYXQgYXBwbGllcy4KLSAgICAgICAgaWYgKGxvZ2ljYWxMZWZ0SXNBdXRv
ICYmIGxvZ2ljYWxXaWR0aElzQXV0byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CisgICAgICAg
IGlmIChsb2dpY2FsTGVmdElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2FsV2lkdGhJc1VuY29uc3Ry
YWluZWQgJiYgIWxvZ2ljYWxSaWdodElzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAgICAgLy8g
UlVMRSAxOiAodXNlIHNocmluay10by1maXQgZm9yIHdpZHRoLCBhbmQgc29sdmUgb2YgbGVmdCkK
ICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKQEAgLTI3NTEsNyArMjg0NCw3IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0
aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlCiAgICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJs
ZVdpZHRoID0gYXZhaWxhYmxlU3BhY2UgLSBsb2dpY2FsUmlnaHRWYWx1ZTsKICAgICAgICAgICAg
IGxvZ2ljYWxXaWR0aFZhbHVlID0gbWluKG1heChwcmVmZXJyZWRNaW5XaWR0aCwgYXZhaWxhYmxl
V2lkdGgpLCBwcmVmZXJyZWRXaWR0aCk7CiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0g
YXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFdpZHRoVmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxXaWR0aElz
QXV0byAmJiBsb2dpY2FsUmlnaHRJc0F1dG8pIHsKKyAgICAgICAgfSBlbHNlIGlmICghbG9naWNh
bExlZnRJc1VuY29uc3RyYWluZWQgJiYgbG9naWNhbFdpZHRoSXNVbmNvbnN0cmFpbmVkICYmIGxv
Z2ljYWxSaWdodElzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAgICAgLy8gUlVMRSAzOiAodXNl
IHNocmluay10by1maXQgZm9yIHdpZHRoLCBhbmQgbm8gbmVlZCBzb2x2ZSBvZiByaWdodCkKICAg
ICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFp
bmVyTG9naWNhbFdpZHRoKTsKIApAQCAtMjc2MCwxOCArMjg1Myw0NSBAQCB2b2lkIFJlbmRlckJv
eDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRo
LCBjb25zdCBSZQogICAgICAgICAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRNaW5XaWR0aCA9IG1p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nOwogICAgICAgICAg
ICAgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZVNwYWNlIC0gbG9naWNhbExl
ZnRWYWx1ZTsKICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gbWluKG1heChwcmVmZXJy
ZWRNaW5XaWR0aCwgYXZhaWxhYmxlV2lkdGgpLCBwcmVmZXJyZWRXaWR0aCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAobG9naWNhbExlZnRJc0F1dG8gJiYgIWxvZ2ljYWxXaWR0aElzQXV0byAmJiAhbG9n
aWNhbFJpZ2h0SXNBdXRvKSB7CisgICAgICAgIH0gZWxzZSBpZiAobG9naWNhbExlZnRJc1VuY29u
c3RyYWluZWQgJiYgIWxvZ2ljYWxXaWR0aElzVW5jb25zdHJhaW5lZCAmJiAhbG9naWNhbFJpZ2h0
SXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDQ6IChzb2x2ZSBmb3IgbGVm
dCkKICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dp
Y2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzLgorICAgICAgICAgICAgaWYgKHVz
ZUFzcGVjdFJhdGlvICYmIHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobG9naWNhbEhlaWdodCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJl
cXVpcmVkUmF0aW8gPSBzdHlsZSgpLT5hc3BlY3RSYXRpbygpOworICAgICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IHdpZHRoRm9yQXNwZWN0UmF0aW8gPSByb3VuZGVkTGF5b3V0VW5pdChsb2dp
Y2FsSGVpZ2h0KCkgKiByZXF1aXJlZFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgbG9naWNh
bFdpZHRoVmFsdWUgPSAgd2lkdGhGb3JBc3BlY3RSYXRpbzsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAvLyBIZWlnaHQgaXMgbm90IGRldGVybWluZWQgc28g
TG9naWNhbFdpZHRoIGlzIHRoZSBjb250YWluZXIncyBjb250ZW50IHdpZHRoLgorICAgICAgICAg
ICAgICAgICAgICAvLyB3aWR0aFR5cGUgd2lsbCBiZSBMb2dpY2FsTWluV2lkdGggb3IgTG9naWNh
bE1heFdpZHRoIG9ubHkgaWYgdGhleSBhcmUgc3BlY2lmaWVkIGluIHdoaWNoCisgICAgICAgICAg
ICAgICAgICAgIC8vIGNhc2UgdGhleSBoYXZlIHRvIGJlIHJlc3BlY3RlZC4KKyAgICAgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVDb250YWluZXJXaWR0aCA9IGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCAtIChsb2dpY2FsUmlnaHQuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
V2lkdGhWYWx1ZSA9IGF2YWlsYWJsZUNvbnRhaW5lcldpZHRoOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVT
cGFjZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFp
bmVyTG9naWNhbFdpZHRoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRv
ICYmIGxvZ2ljYWxXaWR0aElzQXV0byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CisgICAgICAg
IH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxXaWR0aElz
VW5jb25zdHJhaW5lZCAmJiAhbG9naWNhbFJpZ2h0SXNVbmNvbnN0cmFpbmVkKSB7CiAgICAgICAg
ICAgICAvLyBSVUxFIDU6IChzb2x2ZSBmb3Igd2lkdGgpCiAgICAgICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAg
ICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxM
ZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkp
OwotICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiAhbG9naWNhbFdpZHRo
SXNBdXRvICYmIGxvZ2ljYWxSaWdodElzQXV0bykgeworICAgICAgICB9IGVsc2UgaWYgKCFsb2dp
Y2FsTGVmdElzVW5jb25zdHJhaW5lZCAmJiAhbG9naWNhbFdpZHRoSXNVbmNvbnN0cmFpbmVkICYm
IGxvZ2ljYWxSaWdodElzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAgICAgLy8gUlVMRSA2OiAo
bm8gbmVlZCBzb2x2ZSBmb3IgcmlnaHQpCiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0g
bG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAg
ICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGxvZ2lj
YWxXaWR0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBp
ZiAodXNlQXNwZWN0UmF0aW8pIHsKKyAgICAgICAgICAgICAgICBpZiAobG9naWNhbEhlaWdodCgp
ICYmIHdpZHRoVHlwZSA9PSBMb2dpY2FsV2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZmxv
YXQgcmVxdWlyZWRSYXRpbyA9IHN0eWxlKCktPmFzcGVjdFJhdGlvKCk7CisgICAgICAgICAgICAg
ICAgICAgIExheW91dFVuaXQgd2lkdGhGb3JBc3BlY3RSYXRpbyA9IHJvdW5kZWRMYXlvdXRVbml0
KGxvZ2ljYWxIZWlnaHQoKSAqIHJlcXVpcmVkUmF0aW8pOworICAgICAgICAgICAgICAgICAgICBs
b2dpY2FsV2lkdGhWYWx1ZSA9ICB3aWR0aEZvckFzcGVjdFJhdGlvOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEhlaWdodCBpcyBub3QgZGV0ZXJtaW5l
ZCBzbyBMb2dpY2FsV2lkdGggaXMgdGhlIGNvbnRhaW5lcidzIGNvbnRlbnQgd2lkdGguCisgICAg
ICAgICAgICAgICAgICAgIC8vIHdpZHRoVHlwZSB3aWxsIGJlIExvZ2ljYWxNaW5XaWR0aCBvciBM
b2dpY2FsTWF4V2lkdGggb25seSBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgaW4gd2hpY2gKKyAgICAg
ICAgICAgICAgICAgICAgLy8gY2FzZSB0aGV5IGhhdmUgdG8gYmUgcmVzcGVjdGVkLgorICAgICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUNvbnRhaW5lcldpZHRoID0gY29udGFp
bmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBib3JkZXJzUGx1c1BhZGRpbmcp
OworICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGF2YWlsYWJsZUNvbnRh
aW5lcldpZHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIApAQCAtMjg2NCw3ICsyOTg0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbEhlaWdodCgpCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wUG9zOwogCiAg
ICAgLy8gQ2FsY3VsYXRlIGNvbnN0cmFpbnQgZXF1YXRpb24gdmFsdWVzIGZvciAnaGVpZ2h0JyBj
YXNlLgotICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxv
Z2ljYWxIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJv
cmRlcnNQbHVzUGFkZGluZywKKyAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2lu
ZyhMb2dpY2FsSGVpZ2h0LCBjb250YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwg
Ym9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3BMZW5ndGgsIGxvZ2ljYWxCb3R0b21MZW5ndGgsIG1hcmdpbkJlZm9yZSwg
bWFyZ2luQWZ0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aWNhbEhlaWdodFJlc3VsdCwgbWFyZ2luQmVmb3JlQWxpYXMsIG1hcmdpbkFmdGVyQWxpYXMsIGxv
Z2ljYWxUb3BQb3MpOwogICAgIHNldExvZ2ljYWxUb3AobG9naWNhbFRvcFBvcyk7CkBAIC0yODc5
LDcgKzI5OTksNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVp
Z2h0KCkKICAgICAgICAgTGF5b3V0VW5pdCBtYXhNYXJnaW5BZnRlcjsKICAgICAgICAgTGF5b3V0
VW5pdCBtYXhMb2dpY2FsVG9wUG9zOwogCi0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ss
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKKyAgICAgICAgY29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4TG9naWNhbEhlaWdodCwgY29udGFp
bmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlbmd0
aCwgbG9naWNhbEJvdHRvbUxlbmd0aCwgbWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbEhlaWdodCwg
bWF4TWFyZ2luQmVmb3JlLCBtYXhNYXJnaW5BZnRlciwgbWF4TG9naWNhbFRvcFBvcyk7CiAKQEAg
LTI4OTgsNyArMzAxOCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxIZWlnaHQoKQogICAgICAgICBMYXlvdXRVbml0IG1pbk1hcmdpbkFmdGVyOwogICAgICAgICBM
YXlvdXRVbml0IG1pbkxvZ2ljYWxUb3BQb3M7CiAKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbkhlaWdodCgpLCBjb250YWluZXJC
bG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nLAorICAgICAg
ICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhNaW5Mb2dpY2FsSGVpZ2h0LCBj
b250YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
TGVuZ3RoLCBsb2dpY2FsQm90dG9tTGVuZ3RoLCBtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsSGVp
Z2h0LCBtaW5NYXJnaW5CZWZvcmUsIG1pbk1hcmdpbkFmdGVyLCBtaW5Mb2dpY2FsVG9wUG9zKTsK
IApAQCAtMjk1MCw3ICszMDcwLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvZ2ljYWxUb3BQb3Np
dGlvbmVkT2Zmc2V0KExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MsIGNvbnN0IFIKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhM
ZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNv
bnRhaW5lckJsb2NrLAordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhl
aWdodFVzaW5nKExvZ2ljYWxIZWlnaHRUeXBlIGhlaWdodFR5cGUsIGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQs
IExheW91dFVuaXQgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsVG9wLCBMZW5ndGggbG9n
aWNhbEJvdHRvbSwgTGVuZ3RoIG1hcmdpbkJlZm9yZSwgTGVuZ3RoIG1hcmdpbkFmdGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVu
aXQmIGxvZ2ljYWxIZWlnaHRWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luQmVmb3JlVmFsdWUsIExh
eW91dFVuaXQmIG1hcmdpbkFmdGVyVmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MpCkBA
IC0yOTU4LDIyICszMDc4LDM1IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwKICAgICAvLyAndG9w
JyBhbmQgJ2JvdHRvbScgY2Fubm90IGJvdGggYmUgJ2F1dG8nIGJlY2F1c2UgJ3RvcCB3b3VsZCBv
ZiBiZWVuCiAgICAgLy8gY29udmVydGVkIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gaW4gY29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCkKICAgICBBU1NFUlQoIShsb2dpY2FsVG9wLmlzQXV0
bygpICYmIGxvZ2ljYWxCb3R0b20uaXNBdXRvKCkpKTsKKyAgICBMZW5ndGggbG9naWNhbEhlaWdo
dExlbmd0aDsKKyAgICBzd2l0Y2ggKGhlaWdodFR5cGUpIHsKKyAgICBjYXNlIExvZ2ljYWxIZWln
aHQ6CisgICAgICAgIGxvZ2ljYWxIZWlnaHRMZW5ndGggPSBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWluTG9naWNhbEhlaWdodDoKKyAgICAgICAg
bG9naWNhbEhlaWdodExlbmd0aCA9IHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBNYXhMb2dpY2FsSGVpZ2h0OgorICAgICAgICBsb2dpY2FsSGVp
Z2h0TGVuZ3RoID0gc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpOworICAgICAgICBicmVhazsK
KyAgICB9CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gbG9naWNhbEhl
aWdodCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nOwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
VmFsdWUgPSAwOwogCi0gICAgYm9vbCBsb2dpY2FsSGVpZ2h0SXNBdXRvID0gbG9naWNhbEhlaWdo
dExlbmd0aC5pc0F1dG8oKTsKLSAgICBib29sIGxvZ2ljYWxUb3BJc0F1dG8gPSBsb2dpY2FsVG9w
LmlzQXV0bygpOwotICAgIGJvb2wgbG9naWNhbEJvdHRvbUlzQXV0byA9IGxvZ2ljYWxCb3R0b20u
aXNBdXRvKCk7CisgICAgYm9vbCB1c2VBc3BlY3RSYXRpbyA9IHVzZUFzcGVjdFJhdGlvRm9ySGVp
Z2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOworICAg
IGJvb2wgbG9naWNhbEhlaWdodElzVW5jb25zdHJhaW5lZCA9IGxvZ2ljYWxIZWlnaHRMZW5ndGgu
aXNBdXRvKCkgJiYgIXVzZUFzcGVjdFJhdGlvOworICAgIGJvb2wgbG9naWNhbFRvcElzVW5jb25z
dHJhaW5lZCA9IGxvZ2ljYWxUb3AuaXNBdXRvKCk7CisgICAgYm9vbCBsb2dpY2FsQm90dG9tSXNV
bmNvbnN0cmFpbmVkID0gbG9naWNhbEJvdHRvbS5pc0F1dG8oKTsKIAogICAgIC8vIEhlaWdodCBp
cyBuZXZlciB1bnNvbHZlZCBmb3IgdGFibGVzLgogICAgIGlmIChpc1RhYmxlKCkpIHsKICAgICAg
ICAgbG9naWNhbEhlaWdodExlbmd0aC5zZXRWYWx1ZShGaXhlZCwgY29udGVudExvZ2ljYWxIZWln
aHQpOwotICAgICAgICBsb2dpY2FsSGVpZ2h0SXNBdXRvID0gZmFsc2U7CisgICAgICAgIGxvZ2lj
YWxIZWlnaHRJc1VuY29uc3RyYWluZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWxvZ2lj
YWxUb3BJc0F1dG8gJiYgIWxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgIWxvZ2ljYWxCb3R0b21Jc0F1
dG8pIHsKKyAgICBpZiAoIWxvZ2ljYWxUb3BJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxIZWln
aHRJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxCb3R0b21Jc1VuY29uc3RyYWluZWQpIHsKICAg
ICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICAgICAgICAqIElmIG5vbmUgb2YgdGhlIHRocmVl
IGFyZSAnYXV0byc6IElmIGJvdGggJ21hcmdpbi10b3AnIGFuZCAnbWFyZ2luLQogICAgICAgICAg
KiBib3R0b20nIGFyZSAnYXV0bycsIHNvbHZlIHRoZSBlcXVhdGlvbiB1bmRlciB0aGUgZXh0cmEg
Y29uc3RyYWludCB0aGF0CkBAIC0yOTg1LDkgKzMxMTgsMTggQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVu
Z3RoLAogICAgICAgICAvLyBOT1RFOiAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3Ig
J2JvdHRvbScgaW4gdGhlIG92ZXIgY29uc3RyYWluZWQKICAgICAgICAgLy8gY2FzZSBiZWNhdXNl
IHRoZSB2YWx1ZSBpcyBub3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRpb25zLgogCi0g
ICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdo
dChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7
CiAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5l
ckxvZ2ljYWxIZWlnaHQpOwotCisgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVD
b250ZW50Qm94TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsSGVpZ2h0KSk7CisgICAgICAgIGlmICh1c2VBc3BlY3RSYXRpbyAmJiBoZWln
aHRUeXBlID09IExvZ2ljYWxIZWlnaHQpIHsKKyAgICAgICAgICAgIGlmIChsb2dpY2FsV2lkdGgo
KSkgeworICAgICAgICAgICAgICAgIGZsb2F0IHJlcXVpcmVkUmF0aW8gPSBzdHlsZSgpLT5hc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKCkgLyBzdHlsZSgpLT5hc3BlY3RSYXRpb051bWVyYXRvcigpOwor
ICAgICAgICAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0Rm9yQXNwZWN0UmF0aW8gPSByb3VuZGVk
TGF5b3V0VW5pdChsb2dpY2FsV2lkdGgoKSAqIHJlcXVpcmVkUmF0aW8pOworICAgICAgICAgICAg
ICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGhlaWdodEZvckFzcGVjdFJhdGlvOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUNvbnRhaW5l
ckhlaWdodCA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAobG9naWNhbFRvcFZhbHVlICsgbG9n
aWNhbEJvdHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkgKyBib3JkZXJzUGx1
c1BhZGRpbmcpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGF2YWlsYWJs
ZUNvbnRhaW5lckhlaWdodDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBjb25z
dCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChs
b2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsSGVpZ2h0VmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNW
YWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CiAKICAg
ICAgICAgLy8gTWFyZ2lucyBhcmUgbm93IHRoZSBvbmx5IHVua25vd24KQEAgLTMwNDIsMjYgKzMx
ODQsNDYgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVz
aW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLAogICAgICAgICBjb25zdCBMYXlvdXRVbml0
IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChtYXJnaW5CZWZvcmVW
YWx1ZSArIG1hcmdpbkFmdGVyVmFsdWUgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwogCiAgICAgICAg
IC8vIFVzZSBydWxlL2Nhc2UgdGhhdCBhcHBsaWVzLgotICAgICAgICBpZiAobG9naWNhbFRvcElz
QXV0byAmJiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7Cisg
ICAgICAgIGlmIChsb2dpY2FsVG9wSXNVbmNvbnN0cmFpbmVkICYmIGxvZ2ljYWxIZWlnaHRJc1Vu
Y29uc3RyYWluZWQgJiYgIWxvZ2ljYWxCb3R0b21Jc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAg
ICAgIC8vIFJVTEUgMTogKGhlaWdodCBpcyBjb250ZW50IGJhc2VkLCBzb2x2ZSBvZiB0b3ApCiAg
ICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb250ZW50TG9naWNhbEhlaWdodDsKICAg
ICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWln
aHRWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQp
KTsKLSAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0
SXNBdXRvICYmIGxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsKKyAgICAgICAgfSBlbHNlIGlmICghbG9n
aWNhbFRvcElzVW5jb25zdHJhaW5lZCAmJiBsb2dpY2FsSGVpZ2h0SXNVbmNvbnN0cmFpbmVkICYm
IGxvZ2ljYWxCb3R0b21Jc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzog
KGhlaWdodCBpcyBjb250ZW50IGJhc2VkLCBubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKICAgICAg
ICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpOwogICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29udGVudExv
Z2ljYWxIZWlnaHQ7Ci0gICAgICAgIH0gZWxzZSBpZiAobG9naWNhbFRvcElzQXV0byAmJiAhbG9n
aWNhbEhlaWdodElzQXV0byAmJiAhbG9naWNhbEJvdHRvbUlzQXV0bykgeworICAgICAgICB9IGVs
c2UgaWYgKGxvZ2ljYWxUb3BJc1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxIZWlnaHRJc1VuY29u
c3RyYWluZWQgJiYgIWxvZ2ljYWxCb3R0b21Jc1VuY29uc3RyYWluZWQpIHsKICAgICAgICAgICAg
IC8vIFJVTEUgNDogKHNvbHZlIG9mIHRvcCkKICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1
ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNh
bGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7CiAgICAgICAgICAgICBsb2dpY2FsVG9w
VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsSGVpZ2h0VmFsdWUgKyBsb2dpY2FsQm90
dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoIWxvZ2ljYWxUb3BJc0F1dG8gJiYgbG9naWNhbEhlaWdodElzQXV0byAmJiAhbG9naWNhbEJv
dHRvbUlzQXV0bykgeworICAgICAgICAgICAgaWYgKHVzZUFzcGVjdFJhdGlvICYmIGhlaWdodFR5
cGUgPT0gTG9naWNhbEhlaWdodCkgeworICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsV2lkdGgo
KSkgeworICAgICAgICAgICAgICAgICAgICBmbG9hdCByZXF1aXJlZFJhdGlvID0gc3R5bGUoKS0+
YXNwZWN0UmF0aW9EZW5vbWluYXRvcigpIC8gc3R5bGUoKS0+YXNwZWN0UmF0aW9OdW1lcmF0b3Io
KTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRGb3JBc3BlY3RSYXRpbyA9
IHJvdW5kZWRMYXlvdXRVbml0KGxvZ2ljYWxXaWR0aCgpICogcmVxdWlyZWRSYXRpbyk7CisgICAg
ICAgICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGhlaWdodEZvckFzcGVjdFJhdGlv
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExheW91dFVu
aXQgYXZhaWxhYmxlQ29udGFpbmVySGVpZ2h0ID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChs
b2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2Fs
SGVpZ2h0KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGxvZ2lj
YWxIZWlnaHRWYWx1ZSA9IGF2YWlsYWJsZUNvbnRhaW5lckhlaWdodDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc1VuY29u
c3RyYWluZWQgJiYgbG9naWNhbEhlaWdodElzVW5jb25zdHJhaW5lZCAmJiAhbG9naWNhbEJvdHRv
bUlzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAgICAgLy8gUlVMRSA1OiAoc29sdmUgb2YgaGVp
Z2h0KQogICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gbG9naWNhbFRvcC5jYWxjVmFsdWUo
Y29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUg
PSBtYXg8TGF5b3V0VW5pdD4oMCwgYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFRvcFZhbHVlICsg
bG9naWNhbEJvdHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpKTsKLSAgICAg
ICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0byAmJiAhbG9naWNhbEhlaWdodElzQXV0byAm
JiBsb2dpY2FsQm90dG9tSXNBdXRvKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJ
c1VuY29uc3RyYWluZWQgJiYgIWxvZ2ljYWxIZWlnaHRJc1VuY29uc3RyYWluZWQgJiYgbG9naWNh
bEJvdHRvbUlzVW5jb25zdHJhaW5lZCkgewogICAgICAgICAgICAgLy8gUlVMRSA2OiAobm8gbmVl
ZCBzb2x2ZSBvZiBib3R0b20pCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21w
dXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodExlbmd0aC5jYWxjVmFsdWUo
Y29udGFpbmVyTG9naWNhbEhlaWdodCkpOwogICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0g
bG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgICAg
ICBpZiAodXNlQXNwZWN0UmF0aW8gJiYgaGVpZ2h0VHlwZSA9PSBMb2dpY2FsSGVpZ2h0KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHJlcXVpcmVkUmF0aW8gPSBzdHlsZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkg
LyBzdHlsZSgpLT5hc3BlY3RSYXRpb051bWVyYXRvcigpOworICAgICAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IGhlaWdodEZvckFzcGVjdFJhdGlvID0gcm91bmRlZExheW91dFVuaXQobG9naWNh
bFdpZHRoKCkgKiByZXF1aXJlZFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhl
aWdodFZhbHVlID0gaGVpZ2h0Rm9yQXNwZWN0UmF0aW87CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVDb250YWluZXJIZWln
aHQgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0IC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxC
b3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpICsgYm9yZGVyc1BsdXNQYWRk
aW5nKTsKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gYXZhaWxhYmxl
Q29udGFpbmVySGVpZ2h0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGJjMWZm
ZDk4MzRjYjc5YjQ3ZjcwZTdhMmNkZWRmYTRlZGE3NDEyZjAuLjY2Mzk2MzUxNTEyYmFlMjU0Njhm
YTM1M2Y0OTAxZTNmZDU3YjUwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
QEAgLTMzLDcgKzMzLDggQEAgY2xhc3MgUmVuZGVyQm94UmVnaW9uSW5mbzsKIGNsYXNzIFJlbmRl
clJlZ2lvbjsKIHN0cnVjdCBQYWludEluZm87CiAKLWVudW0gTG9naWNhbFdpZHRoVHlwZSB7IExv
Z2ljYWxXaWR0aCwgTWluTG9naWNhbFdpZHRoLCBNYXhMb2dpY2FsV2lkdGggfTsKK2VudW0gTG9n
aWNhbFdpZHRoVHlwZSB7IExvZ2ljYWxXaWR0aCwgTWluTG9naWNhbFdpZHRoLCBNYXhMb2dpY2Fs
V2lkdGgsIE1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCB9OworZW51bSBMb2dpY2FsSGVpZ2h0VHlw
ZSB7IExvZ2ljYWxIZWlnaHQsIE1pbkxvZ2ljYWxIZWlnaHQsIE1heExvZ2ljYWxIZWlnaHQgfTsK
IAogZW51bSBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSB7IElnbm9yZU92ZXJsYXlTY3Jv
bGxiYXJTaXplLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUgfTsKIApAQCAtMjk4LDYgKzI5
OSwxMiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lk
dGhGb3JDb250ZW50SW5SZWdpb24oUmVuZGVyUmVnaW9uKiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHBlcnBlbmRpY3Vs
YXJDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAgICAgCisgICAgdmlydHVh
bCBib29sIGlzV2lkdGhEZXRlcm1pbmVkVXNpbmcoY29uc3QgTGVuZ3RoJiBsb2dpY2FsV2lkdGgs
IGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQsIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNIZWlnaHREZXRlcm1pbmVkVXNpbmcoY29uc3QgTGVu
Z3RoJiBsb2dpY2FsSGVpZ2h0LCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxUb3AsIGNvbnN0IExlbmd0
aCYgbG9naWNhbEJvdHRvbSkgY29uc3Q7CisKKyAgICBib29sIHVzZUFzcGVjdFJhdGlvRm9yV2lk
dGgoY29uc3QgTGVuZ3RoJiBsb2dpY2FsV2lkdGgsIGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQs
IGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KSBjb25zdDsKKyAgICBib29sIHVzZUFzcGVjdFJh
dGlvRm9ySGVpZ2h0KGNvbnN0IExlbmd0aCYgbG9naWNhbEhlaWdodCwgY29uc3QgTGVuZ3RoJiBs
b2dpY2FsVG9wLCBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20pIGNvbnN0OworICAgIAogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbFdpZHRoKCk7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTMxOSw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIExheW91dFVuaXQgY29tcHV0ZUxvZ2ljYWxXaWR0aFVz
aW5nKExvZ2ljYWxXaWR0aFR5cGUsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsK
LSAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBo
ZWlnaHQpOworICAgIExheW91dFVuaXQgY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhMb2dpY2Fs
SGVpZ2h0VHlwZSk7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhV
c2luZyhMZW5ndGggd2lkdGgpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKExheW91dFVuaXQgbG9naWNhbFdpZHRo
LCBib29sIGluY2x1ZGVNYXhXaWR0aCA9IHRydWUpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29t
cHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBoZWlnaHQpIGNvbnN0OwpAQCAt
NDczLDExICs0ODAsMTEgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBj
b250YWluaW5nQmxvY2ssIGJvb2wgY2hlY2tGb3JQZXJwZW5kaWN1bGFyV3JpdGluZ01vZGUgPSB0
cnVlKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCk7
Ci0gICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dp
Y2FsV2lkdGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywgVGV4
dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCisgICAgdm9pZCBjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxXaWR0aFVzaW5nKExvZ2ljYWxXaWR0aFR5cGUsIGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjb250YWluZXJCbG9jaywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQg
Y29udGFpbmVyTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxM
ZWZ0LCBMZW5ndGggbG9naWNhbFJpZ2h0LCBMZW5ndGggbWFyZ2luTG9naWNhbExlZnQsIExlbmd0
aCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxXaWR0aFZhbHVlLCBMYXlvdXRVbml0JiBtYXJn
aW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSwg
TGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MpOwotICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHQsIGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywKKyAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbEhlaWdodFVzaW5nKExvZ2ljYWxIZWlnaHRUeXBlLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCogY29udGFpbmVyQmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQg
Ym9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxUb3AsIExlbmd0aCBsb2dpY2FsQm90dG9tLCBMZW5ndGgg
bWFyZ2luTG9naWNhbFRvcCwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxCb3R0b20sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsb2dpY2FsSGVp
Z2h0VmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxUb3BWYWx1ZSwgTGF5b3V0VW5pdCYg
bWFyZ2luTG9naWNhbEJvdHRvbVZhbHVlLCBMYXlvdXRVbml0JiBsb2dpY2FsVG9wUG9zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDE1
MzU0YzU4NGZkM2ZiY2Y0YTM3OWY2NDE5YmYxZmFhOGE5N2RmZjQuLmJjYmRkNDcyNWYzMDBkYjU1
YWU5MjFiNjU1ZDQwMmM1ODNlNDhkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMzg1LDYgKzM4NSwxNiBAQCBTdHlsZURpZmZlcmVu
Y2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyLCB1bnNpZ25lZCYg
Y2hhbmdlZENvbgogICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVy
ZmxvdyAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdykKICAgICAg
ICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKKyAgICAgICAgaWYgKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2hhc0FzcGVjdFJhdGlvICE9IG90aGVyLT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9oYXNBc3BlY3RSYXRpbykKKyAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZl
cmVuY2VMYXlvdXQ7CisKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2hhc0Fz
cGVjdFJhdGlvKSB7CisgICAgICAgICAgICBmbG9hdCBhc3BlY3RSYXRpbyA9IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yIC8gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcjsKKyAgICAgICAgICAgIGZsb2F0IG90aGVyQXNwZWN0
UmF0aW8gPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9OdW1lcmF0
b3IgLyBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9EZW5vbWluYXRv
cjsKKyAgICAgICAgICAgIGlmIChhc3BlY3RSYXRpbyAhPSBvdGhlckFzcGVjdFJhdGlvKQorICAg
ICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uT3ZlcmZsb3cgIT0gb3Ro
ZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbk92ZXJmbG93KQogICAgICAgICAgICAg
cmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDczMjVkMDRhZjhkMDI4MmQ2
YzE2OTgzNzU0MjdmMDU4OWFmODVkNDguLjRhMjY2Nzc5NmFiNzk1YTg1YmFlOThiNTA1NTQ3Nzhj
YTAyZDk4NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0xMS0yOSAgRmFkeSBTYW11ZWwg
IDxmc2FtdWVsQGNocm9taXVtLm9yZz4KKworICAgICAgICAtd2Via2l0LWFzcGVjdC1yYXRpbyBM
YXlvdXQgSW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczMjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBjc3MzL2FzcGVjdC1yYXRpby9hYnNvbHV0ZS1yYXRpby1hYnNvbHV0ZS1s
ZWZ0LXJpZ2h0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVj
dC1yYXRpby1hYnNvbHV0ZS1oZWlnaHQuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy9hc3Bl
Y3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLXdpZHRoLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGNzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hdXRvLWhlaWdodC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWluaGVyaXQu
aHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLXN0
cmV0Y2gtdG8tZmlsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1s
aW51eC9jc3MzL2FzcGVjdC1yYXRpby9hYnNvbHV0ZS1yYXRpby1hYnNvbHV0ZS1sZWZ0LXJpZ2h0
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgv
Y3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMv
YXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS1oZWlnaHQtZXhwZWN0ZWQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRp
by9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJh
dGlvLWFic29sdXRlLXdpZHRoLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRl
LXdpZHRoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0t
bGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0LWV4cGVjdGVk
LnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3Bl
Y3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0
LXJhdGlvLWZsb2F0LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWZsb2F0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3Bl
Y3QtcmF0aW8vYXNwZWN0LXJhdGlvLWluaGVyaXQtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0
aW8taW5oZXJpdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRvLWZpbGwt
ZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9j
c3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tc3RyZXRjaC10by1maWxsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKIDIwMTEtMTEtMjkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZXZlbmluZyBnYXJkZW5pbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hYnNvbHV0ZS1yYXRpby1hYnNv
bHV0ZS1sZWZ0LXJpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hYnNv
bHV0ZS1yYXRpby1hYnNvbHV0ZS1sZWZ0LXJpZ2h0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3ODg3MzJl
YTFmMjdhYTRjNGU1MTkxNTU4NWQ2NjUzYjQ5NGQ2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2Fic29sdXRlLXJhdGlvLWFic29sdXRlLWxlZnQtcmln
aHQuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9oZWFkPgorICA8
Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTBweDsgbGVm
dDogMTBweDsgcmlnaHQ6IDEwcHg7IC13ZWJraXQtYXNwZWN0LXJhdGlvOiAxNiAvIDk7IGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS1o
ZWlnaHQuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1h
YnNvbHV0ZS1oZWlnaHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzJjYjNkMTE1YzIwMGYzNGUwOTYwODFk
OTJhN2M0MDFhZDhiYmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9hc3Bl
Y3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLWhlaWdodC5odG1sCkBAIC0wLDAgKzEsNyBA
QAorPGh0bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgaGVpZ2h0OiA1MHB4OyB0b3A6IDEwcHg7IGxlZnQ6MTBweDsg
LXdlYmtpdC1hc3BlY3QtcmF0aW86IDkvMTY7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9k
aXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvYXNw
ZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC5odG1sIGIvTGF5b3V0VGVzdHMv
Y3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLXdpZHRoLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmNlYjU4YTgxNjUwYzFjMDYwMjMzYmIzMDkzOTlkNjY4MzM1OGU5NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1hYnNv
bHV0ZS13aWR0aC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+CisgIDxoZWFkPgorICA8L2hl
YWQ+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6
IDUwcHg7IHRvcDogMTBweDsgbGVmdDoxMHB4OyAtd2Via2l0LWFzcGVjdC1yYXRpbzogOS8xNjsg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8t
aGVpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8t
YXV0by1oZWlnaHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWM1OWM1MDE5ZmY4YmQzOTYyZDAyM2UyNDkw
MDg5YzM3YzVlMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3Qt
cmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8aHRt
bD4KKyAgPGhlYWQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlOyBsZWZ0OiAxMHB4OyB3aWR0aDogMjAwcHg7IC13ZWJraXQtYXNwZWN0LXJh
dGlvOiAxNiAvIDk7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgIDwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVj
dC1yYXRpby1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0
LXJhdGlvLWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwMjNmYWYxMTc2ZTNhNzE4YTY1N2Q3Nzll
OWJlOWJhNmRmNjM5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0
LXJhdGlvL2FzcGVjdC1yYXRpby1mbG9hdC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGRpdiBzdHls
ZT0id2lkdGg6IDYwMHB4OyBoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij4K
KyAgPGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0aDogNTBweDsgLXdlYmtpdC1hc3BlY3Qt
cmF0aW86IDEvNDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKzwvZGl2PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWluaGVy
aXQuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1pbmhl
cml0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QzZjc1OTZlMzAyMTJlNGZkNTY2ZGZlZmE1YWNhYjM2MGRj
OWI0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2Fz
cGVjdC1yYXRpby1pbmhlcml0Lmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKyAgPGhlYWQ+
CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0
b3A6IDEwcHg7IGJvdHRvbTogMTBweDsgbGVmdDogMTBweDsgcmlnaHQ6IDEwcHg7IC13ZWJraXQt
YXNwZWN0LXJhdGlvOiAyMCAvIDk7IGJhY2tncm91bmQtY29sb3I6IHJlZDsiPgorICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiA1MHB4OyB0b3A6IDUwcHg7IHdpZHRo
OiAzMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IC13ZWJraXQtYXNwZWN0LXJhdGlvOiBp
bmhlcml0OyI+PC9kaXY+CisgICAgPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRv
LWZpbGwuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1z
dHJldGNoLXRvLWZpbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjAzODRlMjcxMjdiZjc3ZGI2NjY2NDk2
MjEwZTM1NmI5MDRmMzcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9hc3Bl
Y3QtcmF0aW8vYXNwZWN0LXJhdGlvLXN0cmV0Y2gtdG8tZmlsbC5odG1sCkBAIC0wLDAgKzEsNyBA
QAorPGh0bWw+CisgIDxoZWFkPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDBweDsgYm90dG9tOiAwcHg7IGxlZnQ6IDBweDsgcmln
aHQ6IDBweDsgLXdlYmtpdC1hc3BlY3QtcmF0aW86IDE2IC8gOTsgbWFyZ2luOiBhdXRvOyBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsgbWF4LWhlaWdodDogNjQwcHg7Ij48L2Rpdj4KKyAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJzb2x1dGUtbGVmdC1yaWdodC1l
eHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2Fz
cGVjdC1yYXRpby9hYnNvbHV0ZS1yYXRpby1hYnNvbHV0ZS1sZWZ0LXJpZ2h0LWV4cGVjdGVkLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OTA0ODBkMTBiNjk1ZWQ3NDc0NTIyZjk4Yzg0ZWY1Y2NjM2Y5ZmUwCkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODU5CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsr
dllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UISFTdAp6bCQyelhCO3lwekJ1aTduSDFr
OWdeRiN2KzZFaDM1THtucDk2VStGJEdUUnYjeGJ9THdJRUdacmQzKGM8dEhuWFUKeil6Tio9X0tI
dlVxO3RMbU5VWFojU05HJEVzV0NlUCFgI29XODV0T00zcX4rNzcmZnZwMm5nZTU/RVd8WmBzUkIj
Cno4NXVVVD8+eEBWJjdoI1JmcUB+M1hfUFM8MiV7LXNHIzhCS2czKCtzbmhTPHBGNCZnIz5AX2F+
TC1mYWtPYml7SQpvSXQmZG40dmFFSjE3VG9PIWU1NTdFV0UyTGomQEg2d3RnOHJVSHgzdklWQ2ch
MERlPDMxcG9qNQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0
aW8tYWJzb2x1dGUtbGVmdC1yaWdodC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hYnNvbHV0ZS1yYXRpby1hYnNvbHV0
ZS1sZWZ0LXJpZ2h0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjMxMTYzN2JkMmI5M2U1MWY2
ZjBkMzBkMjhkNTc5OGY2ZDNjZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYWJzb2x1dGUtcmF0aW8tYWJz
b2x1dGUtbGVmdC1yaWdodC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0
CitsYXllciBhdCAoMTAsMTApIHNpemUgNzg5eDQ0NAorICBSZW5kZXJCbG9jayAocG9zaXRpb25l
ZCkge0RJVn0gYXQgKDEwLDEwKSBzaXplIDc4OXg0NDQgW2JnY29sb3I9IzAwODAwMF0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJh
dGlvL2FzcGVjdC1yYXRpby1hYnNvbHV0ZS1oZWlnaHQtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlv
LWFic29sdXRlLWhlaWdodC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljMTMzY2FkODBkMzNm
MTcwNzljMDJmOGMxZmNmYTFkOTYyZmEyNApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2MAp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxt
fT9vVG4ze3cKejxLJEZScVpDNl4zcm9gITN4Z3locWZ7ZGtHZWVWUFEpNHFAZ0ppJEpXSFNaXnU2
Pj5eanYqQ3UtcmgwZllIOzlUCnphUDxHUHtsfSp0JSZTPSsmZDNhb0lpLTRaP016RHNoOEpfe14l
KXA4Tkg/LUYybmFfb0Zjeyl5WTx5azRYV21xTQp6JWtCRmdHZDlmS25aVT8hZ2hoPE8hRGtwVXVB
VFhfbXptKX1Tait8bmg5bzkjMV9pWkkjJUxnbnJpOVU0RnEjV1MKbWJIUWpYN3xqS3Z4cSFDMEsh
MkdYQDlMWXF0bVZNd0ZOM0c2cFVYT0BnZUN4M2xqRjdrCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2Fz
cGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtaGVpZ2h0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVj
dC1yYXRpby1hYnNvbHV0ZS1oZWlnaHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZDhjZTA1
MjA0Mjg1OTVmZDU3MGRmMjNjNWRjZTQyNDJjOTZjMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3Qt
cmF0aW8tYWJzb2x1dGUtaGVpZ2h0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4
NHg1ODQKK2xheWVyIGF0ICgxMCwxMCkgc2l6ZSAyOHg1MAorICBSZW5kZXJCbG9jayAocG9zaXRp
b25lZCkge0RJVn0gYXQgKDEwLDEwKSBzaXplIDI4eDUwIFtiZ2NvbG9yPSMwMDgwMDBdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tYWJzb2x1dGUtd2lkdGgtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlv
LWFic29sdXRlLXdpZHRoLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDI0OWM0ZjY0MDgwZDJj
YjY5ZjdjODEzMDY4MjI2ZGMwYmJjZDk5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODY0Cnpj
bWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19
P29UbX1PUgp6M25QPGMlYWxZelF4Z2ojYjJBe3YpWGR6LUlNTFlMQWtFVXl7NGVZSU9BSEtMaGRm
O3pMbmBMSHoybkgkPj4lS0oKeihDNVY3cW0jRnIzbyFBRXVEb15iblpFcXE4SyViYTM9Q0hIY2U2
N3Y/Q0N3ZyNMJlUxIV9ZN1RIey1fcEtiM0ReCnomeXVhNWRHYEhoaDZCWXI2QnJxZXUhdTFAXz4z
fEpHN3pxdnh3RHMlO1ghRTMxX3AqQ0NUPDE9d05iYHNBZElHagpxKE9mV14zcjJJblhmN0RkMXcl
M3l1cShVcHUwRjlRWSQzMS0lOzQkaj1kI1d6cCRQeigwclBBQwoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3Nz
My9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWFic29sdXRlLXdpZHRoLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2Fz
cGVjdC1yYXRpby1hYnNvbHV0ZS13aWR0aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAwM2Jh
NDI5ODVmOTk0M2E2YzI1MzUyODdmZjRmNDFmMzUxZTYzZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVj
dC1yYXRpby1hYnNvbHV0ZS13aWR0aC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4NTg0CitsYXllciBhdCAoMTAsMTApIHNpemUgNTB4ODgKKyAgUmVuZGVyQmxvY2sgKHBvc2l0
aW9uZWQpIHtESVZ9IGF0ICgxMCwxMCkgc2l6ZSA1MHg4OCBbYmdjb2xvcj0jMDA4MDAwXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3Qt
cmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVpZ2h0LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1h
dXRvLWhlaWdodC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQxZGE4NWZmYzk4ZTljYjY1ZThl
MzcwMDdjY2RlNDkyYjc0MWQ5ZApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2Mwp6Y21lQVNA
Tj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVCF4
ZSsKelF2O0xLPFJyN3k2akwpfWxjV0A1R3NgNXlCIWc2UVF3dzdZVzdBc2k0RlVgZFRuOVp9OTc4
SlJ5dUd1TF9wcEhnCnppKF9FR3tXazZUKGdoaWJqOSt8Q0p2bnJnSjt1MTBmI0hKWGVLYGgoNGJx
TFEzPEFPdDM9RD1DakUlMjxSQFBxNgp6RlomU3c/RDJPfmhPJWMoSUYoeyo5dT5oRnJiOGBRcUsh
WClWYEZHb3lDWj4tO1J1VHVnTS1mflY+QSMoUV5JSTIKbjd8akt2eG5NTEdqT0dJQj1ZbC1mREJq
aCFiMGl2b0VubyZ1UzNqM15QNjxyX2EtMSkoCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tYXV0by1oZWlnaHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1
dG8taGVpZ2h0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzI5ZTBlN2Y4YzZkNjRkODNmNDQ1
ZWI1YjU4ODI5NTExNTU1YWRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWF1dG8taGVp
Z2h0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKK2xheWVyIGF0ICgx
MCw4KSBzaXplIDIwMHgxMTIKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgx
MCw4KSBzaXplIDIwMHgxMTIgW2JnY29sb3I9IzAwODAwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRp
by1mbG9hdC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQtZXhwZWN0ZWQucG5nCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRjZGQzNDM3MWJiMjNlYzdmMzVjNTdhNzFmYjEyNTFiOTg4ODk3OGYKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDI4NjgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5p
MCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuNkpiCnpMKnBjSzMoRkxQTH1PRDYlVCZYfVdDS2dm
QnZWNVJPRzlITGJFQVRkZHpCZCZ4UT08Y0lFR1pyZDMob0A/fnM5agp6dDdGZCZeRSktZ2pGKCpl
QmU7eSQmV15Yc2VRMFhUJiVqYEh7d15+RSEjbFNHTXVzQ1NWaGojRzc+cVppemN5WHQKelBpT2VC
fDYyT0BydT03Yj1YPE94S0ZHdy0hS3VVMEZ5cGB8Vj5BIyhRdiNpSCFQPVFPX2NBZygyI2VYa3o+
dmhtCnYmN2h6KiRgfW9WKFVkVG4zcjJJblhmN0ImeHF5OV9JUGRFM05+VEp7Vy14PU50RG5te3It
VVd8TW9MdGAKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1m
bG9hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9j
c3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8tZmxvYXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2OGM3MGU3YTdjMmFmZjA3NTk5ZGYxOTYyNjU0ZmQ4YjIyYTlhYzkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jc3MzL2FzcGVjdC1y
YXRpby9hc3BlY3QtcmF0aW8tZmxvYXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA2MDB4MjAwIFti
Z2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQg
KDU1MCwwKSBzaXplIDUweDIwMCBbYmdjb2xvcj0jMDA4MDAwXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJh
dGlvLWluaGVyaXQtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
bGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWluaGVyaXQtZXhwZWN0ZWQucG5n
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRjMTNlYmExMjAyNjhmNTQ1MzUwNzRiNTM0N2NlY2JiODZjOTU4MjUKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4ODEKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2
WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuMis9Cno8M3VDRmx2TUxIT0N6JXNCWGkz
JTNxdTB+NjlZcVlXNzktNEJodn18d2Z6aFhUJGVwdjk3OEpSeXVFUmRfZlA7Mgp6PiVwMlNoaEUr
KGFadVVmckVuJnV3KHxKWT50fUtwNylzPkFgNTcyP05IPy1GMm5hX29GY3speVoyYkZSLSEpQlIK
ejI4TylFdzlmfmI3KjI1TkZmYDBLentKb28lb3VPT2BGfFgjaXJkVFpAM3poUUlFRHsqWWM/PTJC
ciRPX0Q1I0F4CnpNZ3hKV0RQZGRNdiR3VCN4M1Z4aV88bENXNHd3TmdhYzRrMGQyPl8+Zjd2d31L
NyU9WWZIakw8QGhLakxoVGs4NgpyXn4hTG9QS0hfU0lPPzZ6QnN3dDd6OGw8OXFDI3VjMCM1KjJ0
UEJqRXU2ezEtb0QhTTw4VjcrQwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNw
ZWN0LXJhdGlvLWluaGVyaXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLWluaGVyaXQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ1ZWQ5YjUyYWUyYWVmNTlmODU3ZmIyNTYwZWZkYzBjZDkyOGYy
OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9jc3MzL2FzcGVjdC1yYXRpby9hc3BlY3QtcmF0aW8taW5oZXJpdC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw5IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CitsYXllciBhdCAoMTAsMTApIHNpemUgNzg4eDM1NQor
ICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDEwLDEwKSBzaXplIDc4OHgzNTUg
W2JnY29sb3I9I0ZGMDAwMF0KK2xheWVyIGF0ICg2MCw2MCkgc2l6ZSAzMDB4MTM1CisgIFJlbmRl
ckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgxMzUg
W2JnY29sb3I9IzAwODAwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRvLWZpbGwt
ZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9h
c3BlY3QtcmF0aW8vYXNwZWN0LXJhdGlvLXN0cmV0Y2gtdG8tZmlsbC1leHBlY3RlZC5wbmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODNiZTYyYzhkMGQwNWFhNDU2ZTE3ZmEyYzYyY2NiYTIxMTBmM2YyYwpHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMjg0OQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJh
PmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG1+fSgKenFtKUYwQm0/dEFPSmdJMHc0XzhNaXpF
eTQ8VE1MJjMkeFZKbCsqPWI3VXZpa3hIZnliSUVHWnJkMyltXkN4ZkJACnppe3N1Q1hLVkMzKiZK
NlglfTYoe1A3YEJibkVVPTQxNEZ9ZzRqcVB1ODMmamNJeWdyZWxteDwheGFaJGs3I2ctJAp6WSt6
dFdWJll+e1AjYX44MkV1NGM3fGpLdnhuTUxHak9LITJsPyRyVl43MHVORCFTTjU+dmAlbWNJPXMm
eEhTcTQKU2REWn5peWJQWU1lbEZ7cjV9RSl2Ji1fdlYKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNw
ZWN0LXJhdGlvL2FzcGVjdC1yYXRpby1zdHJldGNoLXRvLWZpbGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY3NzMy9hc3BlY3QtcmF0aW8vYXNwZWN0
LXJhdGlvLXN0cmV0Y2gtdG8tZmlsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEzZDRjN2Rj
YWU2MjBlOTE0OGYyOTY2NTY4MjE2ZGE2MTIwN2VmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NzczMvYXNwZWN0LXJhdGlvL2FzcGVjdC1y
YXRpby1zdHJldGNoLXRvLWZpbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0
eDU4NAorbGF5ZXIgYXQgKDAsNzUpIHNpemUgODAweDQ1MAorICBSZW5kZXJCbG9jayAocG9zaXRp
b25lZCkge0RJVn0gYXQgKDAsNzUpIHNpemUgODAweDQ1MCBbYmdjb2xvcj0jMDA4MDAwXQo=
</data>
<flag name="commit-queue"
          id="116723"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>