<?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>205318</bug_id>
          
          <creation_ts>2019-12-16 17:37:46 -0800</creation_ts>
          <short_desc>Paint highlights specified in CSS Highlight API</short_desc>
          <delta_ts>2020-01-30 13:23:33 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>205528</blocked>
    
    <blocked>205529</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1599237</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-16 17:37:46 -0800</bug_when>
    <thetext>Paint highlights specified in CSS Highlight API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599243</commentid>
    <comment_count>1</comment_count>
      <attachid>385842</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-16 18:17:36 -0800</bug_when>
    <thetext>Created attachment 385842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599479</commentid>
    <comment_count>2</comment_count>
      <attachid>385903</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-17 11:32:20 -0800</bug_when>
    <thetext>Created attachment 385903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599505</commentid>
    <comment_count>3</comment_count>
      <attachid>385909</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-17 12:24:49 -0800</bug_when>
    <thetext>Created attachment 385909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599519</commentid>
    <comment_count>4</comment_count>
      <attachid>385909</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-12-17 12:59:46 -0800</bug_when>
    <thetext>Comment on attachment 385909
Patch

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

Now that you can actually test the highlight API&apos;s results, I think you need some more tests:
1. Replace a HighlightRangeGroup:
    CSS.highlights.set(&quot;example-highlight1&quot;, highlightRangeGroup1);
   // make another one
    CSS.highlights.set(&quot;example-highlight1&quot;, highlightRangeGroup2);

2. Test the ::highlight cascade:
::highlight(example-highlight1) {...}
#foo::highlight(example-highlight1) {...}

testing things inside and outside #foo, and with the same and different named highlights.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:208
&gt; +RenderObject::SelectionState InlineTextBox::rendererHighlightState(RenderObject* startObject, unsigned /*startPos*/, RenderObject* endObject, unsigned endPos) const

Can the arguments be RenderObject&amp;?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:231
&gt; +    if (&amp;renderer() == startObject || renderer().isDescendantOf(startObject)) {
&gt; +        if (startObject &amp;&amp; endObject &amp;&amp; startObject == endObject)
&gt; +            return RenderObject::SelectionBoth;
&gt; +        if (startObject)
&gt; +            return RenderObject::SelectionStart;
&gt; +    }
&gt; +    if (&amp;renderer() == endObject || renderer().isDescendantOf(endObject))
&gt; +        return RenderObject::SelectionEnd;
&gt; +
&gt; +    RenderObject* selectionEnd = nullptr;
&gt; +    auto* selectionDataEnd = endObject;
&gt; +    if (selectionDataEnd)
&gt; +        selectionEnd = rendererAfterPosition(*selectionDataEnd, endPos);
&gt; +    SelectionIterator selectionIterator(startObject);
&gt; +    for (auto* currentRenderer = startObject; currentRenderer &amp;&amp; currentRenderer != endObject; currentRenderer = selectionIterator.next()) {
&gt; +        if (currentRenderer == startObject || currentRenderer == endObject)
&gt; +            continue;
&gt; +        if (!currentRenderer-&gt;canBeSelectionLeaf())
&gt; +            continue;
&gt; +        if (&amp;renderer() == currentRenderer)
&gt; +            return RenderObject::SelectionInside;
&gt; +    }

Was this copied from somewhere, and can it be shared with selection code?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:235
&gt; +RenderObject::SelectionState InlineTextBox::highlightState(RenderObject* startObject, unsigned startPos, RenderObject* endObject, unsigned endPos) const

Can the arguments be RenderObject&amp;?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:256
&gt; +        // The position after a hard line break is considered to be past its end.
&gt; +        ASSERT(start() + len() &gt;= (isLineBreak() ? 1 : 0));
&gt; +        unsigned lastSelectable = start() + len() - (isLineBreak() ? 1 : 0);
&gt; +
&gt; +        bool start = (state != RenderObject::SelectionEnd &amp;&amp; startPos &gt;= m_start &amp;&amp; startPos &lt; m_start + m_len);
&gt; +        bool end = (state != RenderObject::SelectionStart &amp;&amp; endPos &gt; m_start &amp;&amp; endPos &lt;= lastSelectable);
&gt; +        if (start &amp;&amp; end)
&gt; +            state = RenderObject::SelectionBoth;
&gt; +        else if (start)
&gt; +            state = RenderObject::SelectionStart;
&gt; +        else if (end)
&gt; +            state = RenderObject::SelectionEnd;
&gt; +        else if ((state == RenderObject::SelectionEnd || startPos &lt; m_start) &amp;&amp; (state == RenderObject::SelectionStart || endPos &gt; lastSelectable))
&gt; +            state = RenderObject::SelectionInside;
&gt; +        else if (state == RenderObject::SelectionBoth)
&gt; +            state = RenderObject::SelectionNone;
&gt; +    }

Please share this code with the existing selection code.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:632
&gt; +                    if (!highlightMarkedTexts.isEmpty())
&gt; +                    markedTexts.appendVector(WTFMove(highlightMarkedTexts));

Bad indent.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:744
&gt; +std::pair&lt;unsigned, unsigned&gt; InlineTextBox::highlightStartEnd(RenderObject* start, unsigned startPos, RenderObject* end, unsigned endPos) const

Can the arguments be RenderObject&amp;?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:865
&gt; +        {

Brace on previous line.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:866
&gt; +        auto renderStyle = parent()-&gt;renderer().getUncachedPseudoStyle({ PseudoId::Highlight, markedText.highlightName}, &amp;parent()-&gt;renderer().style());

Indent.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1099
&gt; +            Position endPos = createLegacyEditingPosition(staticRange-&gt;endContainer(), staticRange-&gt;endOffset());

Can we not use &quot;legacy&quot; things in new code? What&apos;s the replacement?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1103
&gt; +                int startOffset = startPos.deprecatedEditingOffset();

More deprecated.

&gt; Source/WebCore/rendering/InlineTextBox.h:124
&gt; +    std::pair&lt;unsigned, unsigned&gt; highlightStartEnd(RenderObject*, unsigned, RenderObject*, unsigned) const;

The arguments should get names.

&gt; Source/WebCore/rendering/InlineTextBox.h:138
&gt; +    RenderObject::SelectionState rendererHighlightState(RenderObject* , unsigned , RenderObject* , unsigned) const;
&gt; +    RenderObject::SelectionState highlightState(RenderObject*, unsigned, RenderObject*, unsigned) const;

The names don&apos;t clarify how these are different.

&gt; Source/WebCore/rendering/MarkedText.cpp:83
&gt; -                    result.append({ offsetSoFar, offsets[i].value, offsets[*frontmost].markedText-&gt;type, offsets[*frontmost].markedText-&gt;marker });
&gt; +                    result.append({ offsetSoFar, offsets[i].value, offsets[*frontmost].markedText-&gt;type, offsets[*frontmost].markedText-&gt;marker, offsets[*frontmost].markedText-&gt;highlightName});
&gt;              } else {
&gt;                  // The appended marked texts may not be in paint order. We will fix this up at the end of this function.
&gt;                  for (unsigned j = 0; j &lt; i; ++j) {
&gt;                      if (!processedMarkedTexts.contains(offsets[j].markedText))
&gt; -                        result.append({ offsetSoFar, offsets[i].value, offsets[j].markedText-&gt;type, offsets[j].markedText-&gt;marker });
&gt; +                        result.append({ offsetSoFar, offsets[i].value, offsets[j].markedText-&gt;type, offsets[j].markedText-&gt;marker, offsets[j].markedText-&gt;highlightName });

I don&apos;t really know what&apos;s going on here. If text has a combination of highlights and spelling underlines, do we need to subdivide based on both, or should we run subdivision separately for spelling underlines vs. highlights?

&gt; Source/WebCore/rendering/SelectionRangeData.h:43
&gt; +class SelectionIterator {

I think this needs a better name now that you exposed it. It&apos;s not iterating over the selection.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-across-elements.html:6
&gt; +  &lt;link rel=&quot;help&quot; href=&quot;https://drafts.csswg.org/css-highlight-api-1/#creating-highlights&quot;&gt;

This is not testing #creating-highlights, it&apos;s testing the painting I think?

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-across-elements.html:8
&gt; +  &lt;meta name=&quot;assert&quot; content=&quot;Highlights should be able to be specified across elements.&quot;&gt;

Not quite sure what this means.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-across-elements.html:30
&gt; +        &lt;span id=&quot;text1&quot;&gt;One two three&lt;/span&gt;
&gt; +        &lt;span id=&quot;text2&quot;&gt;four five six&lt;/span&gt;
&gt; +        &lt;span id=&quot;text3&quot;&gt;seven eight nine&lt;/span&gt;
&gt; +        &lt;span id=&quot;text4&quot;&gt;ten eleven twelve&lt;/span&gt;
&gt; +        &lt;span id=&quot;text5&quot;&gt;thirteen fourteen fifteen&lt;/span&gt;

At least one of these spans should not break on whitespace for better testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599646</commentid>
    <comment_count>5</comment_count>
      <attachid>385909</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-17 18:05:39 -0800</bug_when>
    <thetext>Comment on attachment 385909
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Render highlights when present, similar to the way we render selection.

This description should appear below &quot;reviewed by&quot; line but above the list of tests.

&gt; Source/WebCore/ChangeLog:1764
&gt; +        Move some helpful functions so they are accessible.
&gt; +

What&apos;s up with this change?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:591
&gt; +        if (RuntimeEnabledFeatures::sharedFeatures().highlightAPIEnabled()) {

Instead of checking this at every caller, collectMarkedTextsForHighlights should have that check builtin.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1098
&gt; +            Position startPos = createLegacyEditingPosition(staticRange-&gt;startContainer(), staticRange-&gt;startOffset());

I don&apos;t think this works. See what FrameSelection::updateAppearance() does.
We need to use the deepEquivalent of VisiblePosition, which is probably built at the end of each layout.
Don&apos;t create these VisiblePosition here; that would be incorrect &amp; cause security bugs.
Instead, we ned to have some fixed time relative to updateLayout, perhaps post layout task,
where we build up all VisiblePositions needed for each highlight group&apos;s ranges.

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:1103
&gt;&gt; +                int startOffset = startPos.deprecatedEditingOffset();
&gt; 
&gt; More deprecated.

I don&apos;t think rendering code works with new non-deprecated node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599680</commentid>
    <comment_count>6</comment_count>
      <attachid>385909</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-17 19:40:16 -0800</bug_when>
    <thetext>Comment on attachment 385909
Patch

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

&gt; Source/WebCore/rendering/InlineTextBox.cpp:749
&gt; +        return { 0, 0};

Nit - Space between 0 and }

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:866
&gt;&gt; +        auto renderStyle = parent()-&gt;renderer().getUncachedPseudoStyle({ PseudoId::Highlight, markedText.highlightName}, &amp;parent()-&gt;renderer().style());
&gt; 
&gt; Indent.

Also, space between markedText.highlightName and }

&gt; Source/WebCore/rendering/InlineTextBox.cpp:888
&gt; +                if (decorations.contains(TextDecoration::Underline)) {
&gt; +                    style.textDecorationStyles.underlineColor = color;
&gt; +                    style.textDecorationStyles.underlineStyle = decorationStyle;
&gt; +                }
&gt; +                if (decorations.contains(TextDecoration::Overline)) {
&gt; +                    style.textDecorationStyles.overlineColor = color;
&gt; +                    style.textDecorationStyles.overlineStyle = decorationStyle;
&gt; +                }
&gt; +                if (decorations.contains(TextDecoration::LineThrough)) {
&gt; +                    style.textDecorationStyles.linethroughColor = color;
&gt; +                    style.textDecorationStyles.linethroughStyle = decorationStyle;
&gt; +                }

You could deduplicate logic in these if statements by using a single if statement, with decorations.containsAny().

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1110
&gt; +                    markedTexts.append({ highlightStart, highlightEnd, MarkedText::Highlight, nullptr, highlightGroup.key});

Nit - Space between key and }

&gt; Source/WebCore/rendering/MarkedText.cpp:31
&gt; +#include &lt;wtf/text/WTFString.h&gt;

If the header includes WTFString.h, you shouldn&apos;t need this #include

&gt; Source/WebCore/rendering/MarkedText.cpp:78
&gt; +                    result.append({ offsetSoFar, offsets[i].value, offsets[*frontmost].markedText-&gt;type, offsets[*frontmost].markedText-&gt;marker, offsets[*frontmost].markedText-&gt;highlightName});

Nit - space between highlightName and }

&gt; Source/WebCore/rendering/MarkedText.h:56
&gt; +    String highlightName { };

Nit - just String highlightName; is fine here.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-across-elements-expected.html:20
&gt; +&lt;body&gt;
&gt; +    &lt;body&gt;

Multiple body tags.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-across-elements.html:25
&gt; +&lt;body&gt;
&gt; +    &lt;body&gt;

Multiple body tags.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-expected.html:20
&gt; +&lt;body&gt;
&gt; +    &lt;body&gt;

Multiple body tags.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text.html:25
&gt; +&lt;body&gt;
&gt; +    &lt;body&gt;

Multiple body tags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600049</commentid>
    <comment_count>7</comment_count>
      <attachid>385909</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-18 16:25:07 -0800</bug_when>
    <thetext>Comment on attachment 385909
Patch

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

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:1098
&gt;&gt; +            Position startPos = createLegacyEditingPosition(staticRange-&gt;startContainer(), staticRange-&gt;startOffset());
&gt; 
&gt; I don&apos;t think this works. See what FrameSelection::updateAppearance() does.
&gt; We need to use the deepEquivalent of VisiblePosition, which is probably built at the end of each layout.
&gt; Don&apos;t create these VisiblePosition here; that would be incorrect &amp; cause security bugs.
&gt; Instead, we ned to have some fixed time relative to updateLayout, perhaps post layout task,
&gt; where we build up all VisiblePositions needed for each highlight group&apos;s ranges.

Are you envisioning some sort of parallel grouping of VisiblePositions? I&apos;m not sure when you are thinking these should be built up. 
But this does work at least for simple websites/test cases.

&gt;&gt; Source/WebCore/rendering/MarkedText.h:56
&gt;&gt; +    String highlightName { };
&gt; 
&gt; Nit - just String highlightName; is fine here.

you sure? I thought I needed a default constructor because this struct only has the implicit constructor, and if I want to make sure this is initialized, I thought I needed to do this explicitly?

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-across-elements.html:9
&gt; +    &lt;style&gt;

Just that they can start in one element and end in another.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-across-elements.html:31
&gt; +

The test is really about the highlight ranges and them crossing each of these spans. I&apos;m not sure what breaking the spans on non-whitespace would help test about highlights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600050</commentid>
    <comment_count>8</comment_count>
      <attachid>385909</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-18 16:27:59 -0800</bug_when>
    <thetext>Comment on attachment 385909
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/MarkedText.h:56
&gt;&gt;&gt; +    String highlightName { };
&gt;&gt; 
&gt;&gt; Nit - just String highlightName; is fine here.
&gt; 
&gt; you sure? I thought I needed a default constructor because this struct only has the implicit constructor, and if I want to make sure this is initialized, I thought I needed to do this explicitly?

I think Wenson is right. The implicit constructor should call the String&apos;s default constructor. type and endOffset not having default values above is fishy though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600059</commentid>
    <comment_count>9</comment_count>
      <attachid>386032</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-18 16:49:44 -0800</bug_when>
    <thetext>Created attachment 386032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600061</commentid>
    <comment_count>10</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-18 16:51:29 -0800</bug_when>
    <thetext>I plan on renaming SelectionRangeData.cpp and SelectionRangeData.h, but anticipated some bikesheding around the name, so I am putting off the expensive file renames until PsudoElementRangeData is approved, or we come up with a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600063</commentid>
    <comment_count>11</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-18 16:53:28 -0800</bug_when>
    <thetext>(In reply to Megan Gardner from comment #9)
&gt; Created attachment 386032 [details]
&gt; Patch

Ok, I&apos;ll pull it out then. I actually plan on make explicit constructors for this struct as it&apos;s gotten complicated enough that I think it would benefit from explicit constructors, but I&apos;ll do that in a follow up patch, as this is already getting out of control.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600065</commentid>
    <comment_count>12</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-18 17:00:56 -0800</bug_when>
    <thetext>(In reply to Megan Gardner from comment #11)
&gt; (In reply to Megan Gardner from comment #9)
&gt; &gt; Created attachment 386032 [details]
&gt; &gt; Patch
&gt; 
&gt; Ok, I&apos;ll pull it out then. I actually plan on make explicit constructors for
&gt; this struct as it&apos;s gotten complicated enough that I think it would benefit
&gt; from explicit constructors, but I&apos;ll do that in a follow up patch, as this
&gt; is already getting out of control.

Tried to pull it out, it won&apos;t build, so I&apos;ll leave it in and deal with it when I make the explicit constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600116</commentid>
    <comment_count>13</comment_count>
      <attachid>386032</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-18 19:40:03 -0800</bug_when>
    <thetext>Comment on attachment 386032
Patch

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

&gt; Source/WebCore/rendering/InlineTextBox.cpp:178
&gt; +    updateEllipsisState(state);

Is there really a point in separating this into its own helper function? It&apos;s only used once here.
Why don&apos;t we just inline the code here instead?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:182
&gt; +RenderObject::SelectionState InlineTextBox::pseudoElementState(RenderObject::SelectionState state, PseudoElementRangeData&amp; rangeData) const

This is too generic of name. We&apos;re trying to compute the highlight state really so I&apos;d call this highlightPseudoElementState instead.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1022
&gt; +    if (!RuntimeEnabledFeatures::sharedFeatures().highlightAPIEnabled()) {

Nit: no curly braces around a single line statement.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1034
&gt; +        // &lt;MMG&gt; get peudoStyle here to save calculations

Remove or use FIXME.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1047
&gt; +                    

Nit: whitespace.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1048
&gt; +                    PseudoElementRangeData highlightData = PseudoElementRangeData(renderer().view());

Use auto? as in `auto highlightData = ~`.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1050
&gt; +                    

Nit: Whitespace.

&gt; Source/WebCore/rendering/SelectionRangeData.cpp:46
&gt; +struct PseudoElementData {

PseudoElementData is too generic of a name. I wouldn&apos;t call selection or highlight groups as a pseudo element.
It usually refers to things like ::before &amp; ::after: https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements

I&apos;d call it RangePseudoElementData or simply HighlightData instead
since we can think of selection highlight as a type of highlight.

&gt; Source/WebCore/rendering/SelectionRangeData.cpp:162
&gt; +    // &lt;MMG&gt; these were pulled from elswhere in this file, refactor to make this work. Hopefully.

Remove or use FIXME.

&gt; Source/WebCore/rendering/SelectionRangeData.h:43
&gt; -class SelectionRangeData {
&gt; +class PseudoElementRangeData {

Again, this is too generic of name. It should be probably something like HighlightRangeData.

&gt; ChangeLog:1
&gt; +2019-12-18  Megan Gardner  &lt;megan_gardner@apple.com&gt;

Revert

&gt; WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:60
&gt; -               BuildableName = &quot;libANGLE-shared.dylib&quot;
&gt; +               BuildableName = &quot;libANGLE.a&quot;

Revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600118</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-18 19:41:55 -0800</bug_when>
    <thetext>(In reply to Megan Gardner from comment #10)
&gt; I plan on renaming SelectionRangeData.cpp and SelectionRangeData.h, but
&gt; anticipated some bikesheding around the name, so I am putting off the
&gt; expensive file renames until PsudoElementRangeData is approved, or we come
&gt; up with a better name.

I don&apos;t think PsudoElementRangeData is a good name. Pseudo element is way more than just selection or highlight groups. They refer to things like ::first-line, ::before, ::after, etc... https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements

It would be too confusing to use PseudoElement prefix to refer to data structures related to selection &amp; highlight groups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600120</commentid>
    <comment_count>15</comment_count>
      <attachid>386032</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-18 19:55:55 -0800</bug_when>
    <thetext>Comment on attachment 386032
Patch

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

&gt; Source/WebCore/rendering/InlineTextBox.cpp:577
&gt; +                auto highlightMarkedTexts = collectMarkedTextsForHighlights(TextPaintPhase::Foreground);
&gt; +                if (!highlightMarkedTexts.isEmpty())
&gt; +                    markedTexts.appendVector(WTFMove(highlightMarkedTexts));

Nit - this is indented by one extra level.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:819
&gt; +                if (decorations.containsAny({ TextDecoration::Underline, TextDecoration::Overline, TextDecoration::Overline })) {

This should be TextDecoration::Underline, TextDecoration::Overline, TextDecoration::LineThrough</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600403</commentid>
    <comment_count>16</comment_count>
      <attachid>386125</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-19 11:43:17 -0800</bug_when>
    <thetext>Created attachment 386125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600421</commentid>
    <comment_count>17</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-19 12:08:19 -0800</bug_when>
    <thetext>Took out the rename, working on the leaks, but figured I could get some feedback in the meantime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600508</commentid>
    <comment_count>18</comment_count>
      <attachid>386125</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-19 14:47:17 -0800</bug_when>
    <thetext>Comment on attachment 386125
Patch

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

Excited to see this coming together!

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1030
&gt; +    for (auto&amp; highlightGroup : renderer().document().highlightMap().map()) {

You can make sue of destructing here. for (auto&amp; [highlightKey, highlightGroup] : renderer().document().highlightMap().map()) {

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1031
&gt; +        auto renderStyle = parent()-&gt;renderer().getUncachedPseudoStyle({ PseudoId::Highlight, highlightGroup.key }, &amp;parent()-&gt;renderer().style());

Not sure if parent()-&gt;renderer()/parent()-&gt;renderer()-&gt;style() is expensive, but probably worth hoisting access outside the loop.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1035
&gt; +                Position startPos = createLegacyEditingPosition(staticRange-&gt;startContainer(), staticRange-&gt;startOffset());
&gt; +                Position endPos = createLegacyEditingPosition(staticRange-&gt;endContainer(), staticRange-&gt;endOffset());

Why is new code using LegacyEditingPositions? By the name of it, it seems like someone didn&apos;t want it to continued to be used.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1044
&gt; +                    auto highlightData = SelectionRangeData(renderer().view());

Probably want to use constructor syntax rather than assignment.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1045
&gt; +                    highlightData.setContext({startRenderer, endRenderer, static_cast&lt;unsigned&gt;(startOffset), static_cast&lt;unsigned&gt;(endOffset)});

Please add spaces after / before the braces.

&gt; Source/WebCore/rendering/InlineTextBox.h:138
&gt; +    RenderObject::SelectionState rendererHighlightState(RenderObject* , unsigned , RenderObject* , unsigned) const;
&gt; +    RenderObject::SelectionState highlightState(RenderObject*, unsigned, RenderObject*, unsigned) const;

Do these functions have implementations? They seem to be missing from the patch.

&gt; Source/WebCore/rendering/InlineTextBox.h:148
&gt; +    void updateEllipsisState(RenderObject::SelectionState);

Do this function have an implementation? It seems to be missing from the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600513</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-19 14:50:29 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #18)
&gt; Comment on attachment 386125 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=386125&amp;action=review
&gt;
&gt; &gt; Source/WebCore/rendering/InlineTextBox.cpp:1035
&gt; &gt; +                Position startPos = createLegacyEditingPosition(staticRange-&gt;startContainer(), staticRange-&gt;startOffset());
&gt; &gt; +                Position endPos = createLegacyEditingPosition(staticRange-&gt;endContainer(), staticRange-&gt;endOffset());
&gt; 
&gt; Why is new code using LegacyEditingPositions? By the name of it, it seems
&gt; like someone didn&apos;t want it to continued to be used.

Unfortunately, the rendering code hasn&apos;t been updated to handle non-legacy Position offsets. We should fix that but we decided it shouldn&apos;t be a blocker for this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600535</commentid>
    <comment_count>20</comment_count>
      <attachid>386157</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-19 15:32:24 -0800</bug_when>
    <thetext>Created attachment 386157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600590</commentid>
    <comment_count>21</comment_count>
      <attachid>386168</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-19 17:32:55 -0800</bug_when>
    <thetext>Created attachment 386168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600596</commentid>
    <comment_count>22</comment_count>
      <attachid>386171</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-19 17:58:15 -0800</bug_when>
    <thetext>Created attachment 386171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600619</commentid>
    <comment_count>23</comment_count>
      <attachid>386171</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-19 20:40:57 -0800</bug_when>
    <thetext>Comment on attachment 386171
Patch

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

&gt; Source/WebCore/dom/Document.cpp:783
&gt; +    highlightMap().clear();

Nit - it looks like this will create m_highlightMap if it didn&apos;t already exist; we might want to consider something like this instead:

if (m_highlightMap)
    m_highlightMap-&gt;clear();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600898</commentid>
    <comment_count>24</comment_count>
      <attachid>386244</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-20 13:27:19 -0800</bug_when>
    <thetext>Created attachment 386244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600941</commentid>
    <comment_count>25</comment_count>
      <attachid>386244</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-20 14:37:13 -0800</bug_when>
    <thetext>Comment on attachment 386244
Patch

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

&gt; Source/WebCore/rendering/InlineTextBox.cpp:162
&gt; +    // If there are ellipsis following, make sure their selection is updated.
&gt; +    if (m_truncation != cNoTruncation &amp;&amp; root().ellipsisBox()) {

It&apos;s unclear why ellipsis won&apos;t affect CSS highlight groups. Did we test this?
If not, can we file a bug somewhere to track it or add a FIXME?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:804
&gt; +    case MarkedText::Highlight:
&gt; +        {

{ should appear after : in the previous line like so:
case MarkedText::Highlight: {

&gt; Source/WebCore/rendering/InlineTextBox.cpp:807
&gt; +            auto renderStyle = parent()-&gt;renderer().getUncachedPseudoStyle({ PseudoId::Highlight, markedText.highlightName }, &amp;parent()-&gt;renderer().style());
&gt; +            
&gt; +            if (renderStyle) {

Declare renderStyle inside if as in:
if (auto renderStyle = ~)

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1021
&gt; +    

Nit: whitespace.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1025
&gt; +    

Ditto.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1034
&gt; +        if (renderStyle) {

Continue when renderStyle is null instead to avoid deep nesting.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1045
&gt; +                    

Nit: whitespace.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1047
&gt; +                    highlightData.setContext({startRenderer, endRenderer, static_cast&lt;unsigned&gt;(startOffset), static_cast&lt;unsigned&gt;(endOffset)});

Just FYI, there is no guarantee that offset is anything sane. It could be way higher than the actual number of characters or the children.

Also, why don&apos;t we continue when either startRenderer or endRenderer is null here instead of checking it in setContext?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1048
&gt; +                    

Ditto.

&gt; Source/WebCore/rendering/InlineTextBox.h:138
&gt; +    

Nit: whitespace.

&gt; Source/WebCore/rendering/SelectionRangeData.cpp:159
&gt; +    if ((context.start() &amp;&amp; !context.end()) || (context.end() &amp;&amp; !context.start()))

Just do: !!context.start() != !!context.end().
But we should just get rid of this code entirely by checking this condition in the caller instead.
Then we can assert that both start &amp; end are set here.

&gt; Source/WebCore/rendering/SelectionRangeData.cpp:166
&gt; +    if (&amp;renderer == m_selectionContext.start() || renderer.isDescendantOf(m_selectionContext.start())) {

Why do we need this check? SelectionRangeData::apply doesn&apos;t do this.

&gt; Source/WebCore/rendering/SelectionRangeData.cpp:168
&gt; +        if (m_selectionContext.start() &amp;&amp; m_selectionContext.end() &amp;&amp; m_selectionContext.start() == m_selectionContext.end())
&gt; +            return RenderObject::SelectionBoth;

How could this be correct?
It would mean that every descendent of a render object which is both start &amp; end would be marked as SelectionBoth.
Perhaps you had to do this because you&apos;re not currently used canonicalized position out of VisiblePosition?

This most certainly needs to be fixed in a follow up. I suggest adding FIXME here at least.

&gt; Source/WebCore/rendering/SelectionRangeData.cpp:170
&gt; +        if (m_selectionContext.start())
&gt; +            return RenderObject::SelectionStart;

Ditto.

&gt; Source/WebCore/rendering/SelectionRangeData.cpp:173
&gt; +    if (&amp;renderer == m_selectionContext.end() || renderer.isDescendantOf(m_selectionContext.end()))
&gt; +        return RenderObject::SelectionEnd;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600985</commentid>
    <comment_count>26</comment_count>
      <attachid>386270</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-20 15:30:36 -0800</bug_when>
    <thetext>Created attachment 386270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601001</commentid>
    <comment_count>27</comment_count>
      <attachid>386244</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-20 16:06:04 -0800</bug_when>
    <thetext>Comment on attachment 386244
Patch

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

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:162
&gt;&gt; +    if (m_truncation != cNoTruncation &amp;&amp; root().ellipsisBox()) {
&gt; 
&gt; It&apos;s unclear why ellipsis won&apos;t affect CSS highlight groups. Did we test this?
&gt; If not, can we file a bug somewhere to track it or add a FIXME?

They probably are affected, I didn&apos;t test this yet, but this code is in the &apos;wrong&apos; place, so I&apos;ll file a radar to just clean it all up.

&gt;&gt; Source/WebCore/rendering/SelectionRangeData.cpp:166
&gt;&gt; +    if (&amp;renderer == m_selectionContext.start() || renderer.isDescendantOf(m_selectionContext.start())) {
&gt; 
&gt; Why do we need this check? SelectionRangeData::apply doesn&apos;t do this.

It doesn&apos;t work if we don&apos;t check descendants. I expect this is a fallout of not using VisiblePositions yet, I will review when I make that fix.

&gt;&gt; Source/WebCore/rendering/SelectionRangeData.cpp:168
&gt;&gt; +            return RenderObject::SelectionBoth;
&gt; 
&gt; How could this be correct?
&gt; It would mean that every descendent of a render object which is both start &amp; end would be marked as SelectionBoth.
&gt; Perhaps you had to do this because you&apos;re not currently used canonicalized position out of VisiblePosition?
&gt; 
&gt; This most certainly needs to be fixed in a follow up. I suggest adding FIXME here at least.

Yes, I didn&apos;t read this one before I responded to the one above. I&apos;ll add a note about the radar I&apos;ve already filed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601004</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-20 16:20:49 -0800</bug_when>
    <thetext>(In reply to Megan Gardner from comment #27)
&gt; Comment on attachment 386244 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=386244&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:162
&gt; &gt;&gt; +    if (m_truncation != cNoTruncation &amp;&amp; root().ellipsisBox()) {
&gt; &gt; 
&gt; &gt; It&apos;s unclear why ellipsis won&apos;t affect CSS highlight groups. Did we test this?
&gt; &gt; If not, can we file a bug somewhere to track it or add a FIXME?
&gt; 
&gt; They probably are affected, I didn&apos;t test this yet, but this code is in the
&gt; &apos;wrong&apos; place, so I&apos;ll file a radar to just clean it all up.

Please also file a WebKit bugzilla bug &amp; relate to this Bugzilla bug.

&gt; &gt;&gt; Source/WebCore/rendering/SelectionRangeData.cpp:168
&gt; &gt;&gt; +            return RenderObject::SelectionBoth;
&gt; &gt; 
&gt; &gt; How could this be correct?
&gt; &gt; It would mean that every descendent of a render object which is both start &amp; end would be marked as SelectionBoth.
&gt; &gt; Perhaps you had to do this because you&apos;re not currently used canonicalized position out of VisiblePosition?
&gt; &gt; 
&gt; &gt; This most certainly needs to be fixed in a follow up. I suggest adding FIXME here at least.
&gt; 
&gt; Yes, I didn&apos;t read this one before I responded to the one above. I&apos;ll add a
&gt; note about the radar I&apos;ve already filed.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601009</commentid>
    <comment_count>29</comment_count>
      <attachid>386270</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-20 16:25:34 -0800</bug_when>
    <thetext>Comment on attachment 386270
Patch

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

&gt; Source/WebCore/dom/Document.cpp:784
&gt; +    if (m_highlightMap)
&gt; +        m_highlightMap-&gt;clear();

Nice!

&gt; Source/WebCore/rendering/InlineTextBox.cpp:805
&gt; +    case MarkedText::Highlight: {
&gt; +        if (auto renderStyle = parent()-&gt;renderer().getUncachedPseudoStyle({ PseudoId::Highlight, markedText.highlightName }, &amp;parent()-&gt;renderer().style())) {

Now that you&apos;ve wrapped the whole thing, the outer { ~ } is unnecessary.

&gt; Source/WebCore/rendering/SelectionRangeData.cpp:165
&gt; +    // FIXME: we shouldln&apos;t have to check that a renderer is a descendant of the render node from the range. This is likely because we aren&apos;t using VisiblePositions yet. Planned fix in a followup: &lt;rdar://problem/58095923&gt;

Please split this comment into two lines since it&apos;s really long.
And also file a Bugzilla bug &amp; prefer to that instead.
People in the open source community won&apos;t be able to follow this otherwise.

&gt; LayoutTests/imported/w3c/ChangeLog:7
&gt; +

Please state from where thees tests are imported, and as of which Git hash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601010</commentid>
    <comment_count>30</comment_count>
      <attachid>386270</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-20 16:27:29 -0800</bug_when>
    <thetext>Comment on attachment 386270
Patch

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

&gt;&gt; LayoutTests/imported/w3c/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; Please state from where thees tests are imported, and as of which Git hash.

They aren&apos;t actually imported, I wrote them, with the intent of upstreaming them eventually, as there are no web platform tests yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601012</commentid>
    <comment_count>31</comment_count>
      <attachid>386270</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-20 16:44:51 -0800</bug_when>
    <thetext>Comment on attachment 386270
Patch

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

&gt;&gt;&gt; LayoutTests/imported/w3c/ChangeLog:7
&gt;&gt;&gt; +
&gt;&gt; 
&gt;&gt; Please state from where thees tests are imported, and as of which Git hash.
&gt; 
&gt; They aren&apos;t actually imported, I wrote them, with the intent of upstreaming them eventually, as there are no web platform tests yet.

Okay, then they need to be under LayoutTests/http/wpt or just to LayoutTests/highlight.
There is no need to put them in different directories.

&gt; LayoutTests/highlight/highlight-world-leak.html:5
&gt; +&lt;head&gt;
&gt; +&lt;script src=&quot;../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;/head&gt;

Put this script element above &lt;script&gt; below instead of having it in head.

&gt; LayoutTests/highlight/highlight-world-leak.html:21
&gt; +        }, 10);

Hm... this is dangerous approach. We have a conservative GC so it&apos;s possible that the document won&apos;t be collected.
As I said previously in person, we should be creating ~20 framers and make sure at least a few of them e.g. 5 of them are collected instead.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-cascade.html:4
&gt; +  &lt;meta charset=&quot;utf-8&quot;&gt;

Please don&apos;t mix 2 space indentation with 4 space indentation.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text-replace.html:4
&gt; +  &lt;meta charset=&quot;utf-8&quot;&gt;

Ditto about identation.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-text.html:4
&gt; +  &lt;meta charset=&quot;utf-8&quot;&gt;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601021</commentid>
    <comment_count>32</comment_count>
      <attachid>386279</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2019-12-20 17:00:12 -0800</bug_when>
    <thetext>Created attachment 386279
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601039</commentid>
    <comment_count>33</comment_count>
      <attachid>386279</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-20 17:33:18 -0800</bug_when>
    <thetext>Comment on attachment 386279
Patch for landing

Clearing flags on attachment: 386279

Committed r253857: &lt;https://trac.webkit.org/changeset/253857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601040</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-20 17:33:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601041</commentid>
    <comment_count>35</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-20 17:34:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58130458&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613088</commentid>
    <comment_count>36</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-01-30 12:36:30 -0800</bug_when>
    <thetext>Hey Megan, sorry I&apos;m late with this but there is one warning:

[497/899] Building CXX object Source/W...ources/UnifiedSource-043dd90b-15.cpp.o
In file included from DerivedSources/WebCore/unified-sources/UnifiedSource-043dd90b-15.cpp:7:
/home/mcatanzaro/Projects/WebKit/Source/WebCore/rendering/SelectionRangeData.cpp: In member function ‘WebCore::RenderObject::SelectionState WebCore::SelectionRangeData::selectionStateForRenderer(WebCore::RenderObject&amp;)’:
/home/mcatanzaro/Projects/WebKit/Source/WebCore/rendering/SelectionRangeData.cpp:179:19: warning: variable ‘selectionEnd’ set but not used [-Wunused-but-set-variable]
  179 |     RenderObject* selectionEnd = nullptr;
      |                   ^~~~~~~~~~~~

I think the solution is:

diff --git a/Source/WebCore/rendering/SelectionRangeData.cpp b/Source/WebCore/rendering/SelectionRangeData.cpp
index d2188905703..ef82b36d5d4 100644
--- a/Source/WebCore/rendering/SelectionRangeData.cpp
+++ b/Source/WebCore/rendering/SelectionRangeData.cpp
@@ -176,10 +176,6 @@ RenderObject::SelectionState SelectionRangeData::selectionStateForRenderer(Rende
     if (&amp;renderer == m_selectionContext.end())
         return RenderObject::SelectionEnd;
 
-    RenderObject* selectionEnd = nullptr;
-    auto* selectionDataEnd = m_selectionContext.end();
-    if (selectionDataEnd)
-        selectionEnd = rendererAfterOffset(*selectionDataEnd, m_selectionContext.endOffset().value());
     SelectionIterator selectionIterator(m_selectionContext.start());
     for (auto* currentRenderer = m_selectionContext.start(); currentRenderer &amp;&amp; currentRenderer != m_selectionContext.end(); currentRenderer = selectionIterator.next()) {
         if (currentRenderer == m_selectionContext.start() || currentRenderer == m_selectionContext.end())


Do you agree? Or are there important side effects to rendererAfterOffset()? If so, we can cast the return value to (void) to suppress the warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613111</commentid>
    <comment_count>37</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-01-30 13:23:33 -0800</bug_when>
    <thetext>No, I expect that is was an error as is supposed to be used in the next line, as that is what happens in the code that this was pulled from. Please do not commit that fix. I will look into this soon.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385842</attachid>
            <date>2019-12-16 18:17:36 -0800</date>
            <delta_ts>2019-12-17 11:32:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191216181736.patch</filename>
            <type>text/plain</type>
            <size>30897</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY3ODJkODRlMmJjOGVi
ZWEyOTlkNzFiNzkwY2JjMzQ2YTlmYWJmNS4uOTBiOWRmZjEzMWIyMzFkYWRjNTg5ZDY5NzE0ZjA0
MjNlZDliZWIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTE2ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3Mt
ZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQuaHRtbAorCisgICAgICAg
IFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJlc2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJl
bmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLiAgCisKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJl
ckFmdGVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cmVuZGVy
ZXJIaWdobGlnaHRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpoaWdobGlnaHRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpoaWdobGlnaHRTdGFy
dEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpyZXNvbHZlU3R5
bGVGb3JNYXJrZWRUZXh0KToKKworICAgICAgICBVc2UgdGhlIGhpZ2hsaWdodCBuYW1lIGZyb20g
dGhlIEhpZ2hsaWdodFJhbmdlR3JvdXAgdG8gb2J0YWluIHRoZSBzdHlsZSBmcm9tIHRoZSByZW5k
ZXJlci4KKworICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRl
eHRzRm9ySGlnaGxpZ2h0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaDoKKworICAgICAgICBSZW5kZXIgdGhlIGhpZ2hsaWdodHMgd2hlbiBwYWludGluZyB0ZXh0
LiBEZXRlcm1pbmUgaWYgYSBoaWdobGlnaHQgaXMgcHJlc2VudCBpbiB0aGUgY3VycmVudCBSZW5k
ZXJPYmplY3QsIGFuZCAKKyAgICAgICAgYWRkIGFkZGl0aW9uYWwgTWFya2VkVGV4dCB0byBiZSBy
ZW5kZXJlZCB3aGVuIHBhaW50aW5nCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9NYXJr
ZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1YmRpdmlkZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL01hcmtlZFRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmtlZFRleHQ6Om9wZXJh
dG9yPT0gY29uc3QpOgorCisgICAgICAgIEV4cGFuZCBNYXJrZWRUZXh0IHRvIHRha2UgYSBzdHls
ZSBuYW1lLgorCisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uSXRlcmF0b3I6OlNlbGVjdGlvbkl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkl0ZXJhdG9yOjpjdXJyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkl0
ZXJhdG9yOjpjaGVja0ZvclNwYW5uZXIpOgorCisgICAgICAgIE1vdmUgc29tZSBoZWxwZnVsIGZ1
bmN0aW9ucyBzbyB0aGV5IGFyZSBhY2Nlc3NpYmxlLgorCiAyMDE5LTEyLTEyICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEZW55IG1hY2ggbG9v
a3VwIGFjY2VzcyB0byBjb250ZW50IGZpbHRlciBzZXJ2aWNlIGluIHRoZSBXZWJDb250ZW50IHNh
bmRib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodE1hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFw
LmgKaW5kZXggZmY5OGNjM2JhNTMyZmUwMWRlNDA3NTY4OWEwYjkyMzY1N2ZjZWVmMi4uMWE0ODU3
YjI1YzU4ZmU4ZmM0YTQxNTlhZjRhODk3N2VkOWZiN2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIFJlZlB0cjxI
aWdobGlnaHRSYW5nZUdyb3VwPiBnZXRHcm91cEZvcktleShjb25zdCBTdHJpbmcmIGtleSk7Cisg
ICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxIaWdobGlnaHRSYW5nZUdyb3VwPj4mIG1hcCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CiAgICAgCiBwcml2YXRlOgogICAgIEhpZ2hsaWdodE1h
cCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAppbmRleCA0MzNhMDc0ZjUwMjY0NzhjNzNiYWVlYTYxM2MzMzU4NDg5MmY1MzFjLi5mYTdlNTdk
YTFkYWUzNjY1YzU1MzZkODU2NWVlNTViYmUxODkwMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0yOCwxMCArMjgsMTIgQEAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVk
ZSAiRWxsaXBzaXNCb3guaCIKICNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSGlnaGxpZ2h0
TWFwLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCkBAIC00Niw2ICs0OCw4IEBACiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25SYW5nZURhdGEuaCIKICNpbmNsdWRlICJUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCiAjaW5jbHVkZSAiVGV4dFBh
aW50U3R5bGUuaCIKQEAgLTE5NCw2ICsxOTgsNjYgQEAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25T
dGF0ZSBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiAgICAgcmV0dXJuIHN0YXRlOwog
fQogCisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgYXV0byogY2hp
bGQgPSByZW5kZXJlci5jaGlsZEF0KG9mZnNldCk7CisgICAgcmV0dXJuIGNoaWxkID8gY2hpbGQg
OiByZW5kZXJlci5uZXh0SW5QcmVPcmRlckFmdGVyQ2hpbGRyZW4oKTsKK30KKworUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxpbmVUZXh0Qm94OjpyZW5kZXJlckhpZ2hsaWdodFN0YXRl
KFJlbmRlck9iamVjdCogc3RhcnRPYmplY3QsIHVuc2lnbmVkIC8qc3RhcnRQb3MqLywgUmVuZGVy
T2JqZWN0KiBlbmRPYmplY3QsIHVuc2lnbmVkIGVuZFBvcykgY29uc3QKK3sKKyAgICBpZiAoJnJl
bmRlcmVyKCkgPT0gc3RhcnRPYmplY3QgfHwgcmVuZGVyZXIoKS5pc0Rlc2NlbmRhbnRPZihzdGFy
dE9iamVjdCkpIHsKKyAgICAgICAgaWYgKHN0YXJ0T2JqZWN0ICYmIGVuZE9iamVjdCAmJiBzdGFy
dE9iamVjdCA9PSBlbmRPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25Cb3RoOworICAgICAgICBpZiAoc3RhcnRPYmplY3QpCisgICAgICAgICAgICByZXR1
cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydDsKKyAgICB9CisgICAgaWYgKCZyZW5kZXJl
cigpID09IGVuZE9iamVjdCB8fCByZW5kZXJlcigpLmlzRGVzY2VuZGFudE9mKGVuZE9iamVjdCkp
CisgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZDsKKworICAgIFJlbmRl
ck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKKyAgICBhdXRvKiBzZWxlY3Rpb25EYXRh
RW5kID0gZW5kT2JqZWN0OworICAgIGlmIChzZWxlY3Rpb25EYXRhRW5kKQorICAgICAgICBzZWxl
Y3Rpb25FbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKnNlbGVjdGlvbkRhdGFFbmQsIGVuZFBv
cyk7CisgICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Ioc3RhcnRPYmplY3Qp
OworICAgIGZvciAoYXV0byogY3VycmVudFJlbmRlcmVyID0gc3RhcnRPYmplY3Q7IGN1cnJlbnRS
ZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gZW5kT2JqZWN0OyBjdXJyZW50UmVuZGVyZXIg
PSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJl
ciA9PSBzdGFydE9iamVjdCB8fCBjdXJyZW50UmVuZGVyZXIgPT0gZW5kT2JqZWN0KQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5jYW5CZVNlbGVj
dGlvbkxlYWYoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnJlbmRlcmVy
KCkgPT0gY3VycmVudFJlbmRlcmVyKQorICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6
U2VsZWN0aW9uSW5zaWRlOworICAgIH0KKyAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rp
b25Ob25lOworfQorCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6
OmhpZ2hsaWdodFN0YXRlKFJlbmRlck9iamVjdCogc3RhcnRPYmplY3QsIHVuc2lnbmVkIHN0YXJ0
UG9zLCBSZW5kZXJPYmplY3QqIGVuZE9iamVjdCwgdW5zaWduZWQgZW5kUG9zKSBjb25zdAorewor
ICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc3RhdGUgPSByZW5kZXJlckhpZ2hsaWdo
dFN0YXRlKHN0YXJ0T2JqZWN0LCBzdGFydFBvcywgZW5kT2JqZWN0LCBlbmRQb3MpOworICAgIGlm
IChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0IHx8IHN0YXRlID09IFJlbmRl
ck9iamVjdDo6U2VsZWN0aW9uRW5kIHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
Qm90aCkgeworCisgICAgICAgIC8vIFRoZSBwb3NpdGlvbiBhZnRlciBhIGhhcmQgbGluZSBicmVh
ayBpcyBjb25zaWRlcmVkIHRvIGJlIHBhc3QgaXRzIGVuZC4KKyAgICAgICAgQVNTRVJUKHN0YXJ0
KCkgKyBsZW4oKSA+PSAoaXNMaW5lQnJlYWsoKSA/IDEgOiAwKSk7CisgICAgICAgIHVuc2lnbmVk
IGxhc3RTZWxlY3RhYmxlID0gc3RhcnQoKSArIGxlbigpIC0gKGlzTGluZUJyZWFrKCkgPyAxIDog
MCk7CisKKyAgICAgICAgYm9vbCBzdGFydCA9IChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvbkVuZCAmJiBzdGFydFBvcyA+PSBtX3N0YXJ0ICYmIHN0YXJ0UG9zIDwgbV9zdGFydCArIG1f
bGVuKTsKKyAgICAgICAgYm9vbCBlbmQgPSAoc3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rp
b25TdGFydCAmJiBlbmRQb3MgPiBtX3N0YXJ0ICYmIGVuZFBvcyA8PSBsYXN0U2VsZWN0YWJsZSk7
CisgICAgICAgIGlmIChzdGFydCAmJiBlbmQpCisgICAgICAgICAgICBzdGF0ZSA9IFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uQm90aDsKKyAgICAgICAgZWxzZSBpZiAoc3RhcnQpCisgICAgICAgICAg
ICBzdGF0ZSA9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQ7CisgICAgICAgIGVsc2UgaWYg
KGVuZCkKKyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQ7Cisg
ICAgICAgIGVsc2UgaWYgKChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCB8fCBz
dGFydFBvcyA8IG1fc3RhcnQpICYmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXJ0IHx8IGVuZFBvcyA+IGxhc3RTZWxlY3RhYmxlKSkKKyAgICAgICAgICAgIHN0YXRlID0gUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGU7CisgICAgICAgIGVsc2UgaWYgKHN0YXRlID09IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uQm90aCkKKyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25Ob25lOworICAgIH0KKworICAgIHJldHVybiBzdGF0ZTsKK30KKwogaW5s
aW5lIGNvbnN0IEZvbnRDYXNjYWRlJiBJbmxpbmVUZXh0Qm94OjpsaW5lRm9udCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvbWJpbmVkVGV4dCgpID8gY29tYmluZWRUZXh0KCktPnRleHRDb21iaW5l
Rm9udCgpIDogbGluZVN0eWxlKCkuZm9udENhc2NhZGUoKTsKQEAgLTUyNCw2ICs1ODgsMTEgQEAg
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICAgICAgcGFpbnRDb21wb3NpdGlvbkJhY2tn
cm91bmQocGFpbnRJbmZvLCBib3hPcmlnaW4pOwogCiAgICAgICAgIFZlY3RvcjxNYXJrZWRUZXh0
PiBtYXJrZWRUZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0
UGFpbnRQaGFzZTo6QmFja2dyb3VuZCk7CisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmhpZ2hsaWdodEFQSUVuYWJsZWQoKSkgeworICAgICAgICAg
ICAgYXV0byBoaWdobGlnaHRNYXJrZWRUZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hs
aWdodHMoVGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQpOworICAgICAgICAgICAgaWYgKCFoaWdo
bGlnaHRNYXJrZWRUZXh0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbWFya2VkVGV4dHMu
YXBwZW5kVmVjdG9yKFdURk1vdmUoaGlnaGxpZ2h0TWFya2VkVGV4dHMpKTsKKyAgICAgICAgfQog
I2lmIEVOQUJMRShURVhUX1NFTEVDVElPTikKICAgICAgICAgaWYgKGhhdmVTZWxlY3Rpb24gJiYg
IXVzZUN1c3RvbVVuZGVybGluZXMgJiYgIWNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKSB7CiAg
ICAgICAgICAgICBhdXRvIHNlbGVjdGlvbk1hcmtlZFRleHQgPSBjcmVhdGVNYXJrZWRUZXh0RnJv
bVNlbGVjdGlvbkluQm94KCp0aGlzKTsKQEAgLTU1Nyw2ICs2MjYsMTEgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LAogICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmQoeyBjbGFtcGVkT2Zmc2V0KG1f
c3RhcnQpLCBjbGFtcGVkT2Zmc2V0KGVuZCgpKSwgTWFya2VkVGV4dDo6VW5tYXJrZWQgfSk7CiAg
ICAgICAgIGlmICghaXNQcmludGluZykgewogICAgICAgICAgICAgbWFya2VkVGV4dHMuYXBwZW5k
VmVjdG9yKGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFz
ZTo6Rm9yZWdyb3VuZCkpOworICAgICAgICAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmhpZ2hsaWdodEFQSUVuYWJsZWQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGhpZ2hsaWdodE1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtlZFRleHRz
Rm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghaGlnaGxpZ2h0TWFya2VkVGV4dHMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoV1RGTW92ZShoaWdobGlnaHRNYXJrZWRU
ZXh0cykpOworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYm9vbCBzaG91bGRQYWlu
dERyYWdnZWRDb250ZW50ID0gIShwYWludEluZm8ucGFpbnRCZWhhdmlvci5jb250YWlucyhQYWlu
dEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKSk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkUGFp
bnREcmFnZ2VkQ29udGVudCkgewpAQCAtNjY3LDYgKzc0MSwyMyBAQCBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHsgY2xhbXBlZE9mZnNldChzdGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKSB9Owog
fQogCitzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpoaWdobGln
aHRTdGFydEVuZChSZW5kZXJPYmplY3QqIHN0YXJ0LCB1bnNpZ25lZCBzdGFydFBvcywgUmVuZGVy
T2JqZWN0KiBlbmQsIHVuc2lnbmVkIGVuZFBvcykgY29uc3QKK3sKKyAgICBhdXRvIHN0YXRlID0g
aGlnaGxpZ2h0U3RhdGUoc3RhcnQsIHN0YXJ0UG9zLCBlbmQsIGVuZFBvcyk7CisgICAgCisgICAg
aWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkKKyAgICAgICAgcmV0dXJu
IHsgMCwgMH07CisgICAgCisgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
SW5zaWRlKQorICAgICAgICByZXR1cm4geyAwLCBjbGFtcGVkT2Zmc2V0KG1fc3RhcnQgKyBtX2xl
bikgfTsKKyAgICAKKyAgICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFy
dCkKKyAgICAgICAgZW5kUG9zID0gcmVuZGVyZXIoKS50ZXh0KCkubGVuZ3RoKCk7CisgICAgZWxz
ZSBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpCisgICAgICAgIHN0YXJ0
UG9zID0gMDsKKyAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0YXJ0UG9zKSwgY2xhbXBlZE9m
ZnNldChlbmRQb3MpIH07Cit9CisKIGJvb2wgSW5saW5lVGV4dEJveDo6aGFzTWFya2VycygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhU
ZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbikuc2l6ZSgpOwpAQCAtNzcwLDYgKzg2MSwzNCBAQCBh
dXRvIElubGluZVRleHRCb3g6OnJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQoY29uc3QgTWFya2Vk
VGV4dCYgbWFya2VkVGV4dCwgY29ucwogICAgIGNhc2UgTWFya2VkVGV4dDo6U3BlbGxpbmdFcnJv
cjoKICAgICBjYXNlIE1hcmtlZFRleHQ6OlVubWFya2VkOgogICAgICAgICBicmVhazsKKyAgICBj
YXNlIE1hcmtlZFRleHQ6OkhpZ2hsaWdodDoKKyAgICAgICAgeworICAgICAgICBhdXRvIHJlbmRl
clN0eWxlID0gcGFyZW50KCktPnJlbmRlcmVyKCkuZ2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSh7IFBz
ZXVkb0lkOjpIaWdobGlnaHQsIG1hcmtlZFRleHQuaGlnaGxpZ2h0TmFtZX0sICZwYXJlbnQoKS0+
cmVuZGVyZXIoKS5zdHlsZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHJlbmRl
clN0eWxlKSB7CisgICAgICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZENvbG9yID0gcmVuZGVy
U3R5bGUtPmJhY2tncm91bmRDb2xvcigpOworICAgICAgICAgICAgICAgIHN0eWxlLnRleHRTdHls
ZXMuZmlsbENvbG9yID0gcmVuZGVyU3R5bGUtPmNvbXB1dGVkU3Ryb2tlQ29sb3IoKTsKKyAgICAg
ICAgICAgICAgICBzdHlsZS50ZXh0U3R5bGVzLnN0cm9rZUNvbG9yID0gcmVuZGVyU3R5bGUtPmNv
bXB1dGVkU3Ryb2tlQ29sb3IoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBh
dXRvIGNvbG9yID0gcmVuZGVyU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZp
bHRlcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOworICAgICAgICAgICAgICAgIGF1
dG8gZGVjb3JhdGlvblN0eWxlID0gcmVuZGVyU3R5bGUtPnRleHREZWNvcmF0aW9uU3R5bGUoKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGRlY29yYXRpb25zID0gcmVuZGVyU3R5bGUtPnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
c3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKKyAgICAg
ICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lU3R5bGUg
PSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
IChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lQ29sb3Ig
PSBjb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMu
b3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5l
VGhyb3VnaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHls
ZXMubGluZXRocm91Z2hDb2xvciA9IGNvbG9yOworICAgICAgICAgICAgICAgICAgICBzdHlsZS50
ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaFN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVh
azsKICAgICBjYXNlIE1hcmtlZFRleHQ6OkRyYWdnZWRDb250ZW50OgogICAgICAgICBzdHlsZS5h
bHBoYSA9IDAuMjU7CiAgICAgICAgIGJyZWFrOwpAQCAtOTYzLDYgKzEwODIsMzggQEAgVmVjdG9y
PE1hcmtlZFRleHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50
TWFya2VycyhUZXh0UGFpbnQKICAgICByZXR1cm4gbWFya2VkVGV4dHM7CiB9CiAKKworVmVjdG9y
PE1hcmtlZFRleHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdo
dHMoVGV4dFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0Cit7CisgICAgQVNTRVJUX0FSRyhwaGFzZSwg
cGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQgfHwgcGhhc2UgPT0gVGV4dFBhaW50
UGhhc2U6OkZvcmVncm91bmQgfHwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkRlY29yYXRpb24p
OworCisgICAgVU5VU0VEX1BBUkFNKHBoYXNlKTsKKyAgICAKKyAgICBpZiAoIXJlbmRlcmVyKCku
dGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxNYXJrZWRUZXh0
PiBtYXJrZWRUZXh0czsKKyAgICBmb3IgKGF1dG8mIGhpZ2hsaWdodEdyb3VwIDogcmVuZGVyZXIo
KS5kb2N1bWVudCgpLmhpZ2hsaWdodE1hcCgpLm1hcCgpKSB7CisgICAgICAgIGZvciAoYXV0byYg
c3RhdGljUmFuZ2UgOiBoaWdobGlnaHRHcm91cC52YWx1ZS0+cmFuZ2VzKCkpIHsKKyAgICAgICAg
ICAgIFBvc2l0aW9uIHN0YXJ0UG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRp
Y1JhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+c3RhcnRPZmZzZXQoKSk7Cisg
ICAgICAgICAgICBQb3NpdGlvbiBlbmRQb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
c3RhdGljUmFuZ2UtPmVuZENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+ZW5kT2Zmc2V0KCkpOwor
CisgICAgICAgICAgICBpZiAoc3RhcnRQb3MuaXNOb3ROdWxsKCkgJiYgZW5kUG9zLmlzTm90TnVs
bCgpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3Rh
cnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICBpbnQg
c3RhcnRPZmZzZXQgPSBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgICAg
ICAgICAgICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmRQb3MuZGVwcmVjYXRlZE5v
ZGUoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZW5kUG9z
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0
T2Zmc2V0ID49IDAgJiYgZW5kT2Zmc2V0ID49IDApOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGF1dG8gW2hpZ2hsaWdodFN0YXJ0LCBoaWdobGlnaHRFbmRdID0gaGlnaGxpZ2h0
U3RhcnRFbmQoc3RhcnRSZW5kZXJlciwgc3RhcnRPZmZzZXQsIGVuZFJlbmRlcmVyLCBlbmRPZmZz
ZXQpOworICAgICAgICAgICAgICAgIGlmIChoaWdobGlnaHRTdGFydCA8IGhpZ2hsaWdodEVuZCkK
KyAgICAgICAgICAgICAgICAgICAgbWFya2VkVGV4dHMuYXBwZW5kKHsgaGlnaGxpZ2h0U3RhcnQs
IGhpZ2hsaWdodEVuZCwgTWFya2VkVGV4dDo6SGlnaGxpZ2h0LCBudWxscHRyLCBoaWdobGlnaHRH
cm91cC5rZXl9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
bWFya2VkVGV4dHM7Cit9CisKIEZsb2F0UG9pbnQgSW5saW5lVGV4dEJveDo6dGV4dE9yaWdpbkZy
b21Cb3hSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29uc3QKIHsKICAgICBGbG9hdFBv
aW50IHRleHRPcmlnaW4geyBib3hSZWN0LngoKSwgYm94UmVjdC55KCkgKyBsaW5lRm9udCgpLmZv
bnRNZXRyaWNzKCkuYXNjZW50KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5oCmluZGV4IDVjYTJiYzg2MTM2YjZkOTMyNjg3MjhiZGFmODcyOTJlODg1OGQ2NWMuLjUw
Zjg3ODg1YjlmYjNmOTk1ZTYzODExYzczMjY5M2I3ZmE3ZDExYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtMTIxLDYgKzEyMSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9z
LCB1bnNpZ25lZCBlbmRQb3MpIGNvbnN0OwogICAgIGJvb2wgaXNTZWxlY3RlZCh1bnNpZ25lZCBz
dGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikgY29uc3Q7CiAgICAgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRFbmQoKSBjb25zdDsKKyAgICBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBoaWdobGlnaHRTdGFydEVuZChSZW5kZXJPYmplY3Qq
LCB1bnNpZ25lZCwgUmVuZGVyT2JqZWN0KiwgdW5zaWduZWQpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVu
aXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKQEAgLTEzMiw2ICsx
MzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlTGluZSgpIGZpbmFsOwogICAgIHZvaWQg
ZXh0cmFjdExpbmUoKSBmaW5hbDsKICAgICB2b2lkIGF0dGFjaExpbmUoKSBmaW5hbDsKKyAgICAK
KyAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHJlbmRlcmVySGlnaGxpZ2h0U3RhdGUo
UmVuZGVyT2JqZWN0KiAsIHVuc2lnbmVkICwgUmVuZGVyT2JqZWN0KiAsIHVuc2lnbmVkKSBjb25z
dDsKKyAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIGhpZ2hsaWdodFN0YXRlKFJlbmRl
ck9iamVjdCosIHVuc2lnbmVkLCBSZW5kZXJPYmplY3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKIHB1
YmxpYzoKICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkg
ZmluYWw7CkBAIC0xNjksNiArMTczLDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxNYXJrZWRU
ZXh0PiBjb2xsZWN0TWFya2VkVGV4dHNGb3JEcmFnZ2VkQ29udGVudCgpOwogICAgIFZlY3RvcjxN
YXJrZWRUZXh0PiBjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50
UGhhc2UpIGNvbnN0OworICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xsZWN0TWFya2VkVGV4dHNG
b3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlKSBjb25zdDsKIAogICAgIE1hcmtlZFRleHRTdHls
ZSBjb21wdXRlU3R5bGVGb3JVbm1hcmtlZE1hcmtlZFRleHQoY29uc3QgUGFpbnRJbmZvJikgY29u
c3Q7CiAgICAgU3R5bGVkTWFya2VkVGV4dCByZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KGNvbnN0
IE1hcmtlZFRleHQmLCBjb25zdCBNYXJrZWRUZXh0U3R5bGUmIGJhc2VTdHlsZSwgY29uc3QgUGFp
bnRJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAKaW5kZXggYTc5
MTkyZTI4YWUxOTk5Njg2YjYyNjU3Yzg5MGY1N2IyYzg0ZTU2Mi4uMDQ0ZGVmYWQwNTZlY2NlZjE2
ZDgxYmUwNzI4ZWYyMDk5MzE2N2FlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL01hcmtlZFRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRU
ZXh0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzQsMTIgKzc1LDEyIEBAIFZlY3RvcjxNYXJrZWRUZXh0
PiBzdWJkaXZpZGUoY29uc3QgVmVjdG9yPE1hcmtlZFRleHQ+JiBtYXJrZWRUZXh0cywgT3Zlcmxh
cFN0cmF0CiAgICAgICAgICAgICAgICAgICAgICAgICBmcm9udG1vc3QgPSBqOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZnJvbnRtb3N0KQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNl
dHNbKmZyb250bW9zdF0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJr
ZWRUZXh0LT5tYXJrZXIgfSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBv
ZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRU
ZXh0LT50eXBlLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPm1hcmtlciwgb2Zmc2V0
c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT5oaWdobGlnaHROYW1lfSk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRoZSBhcHBlbmRlZCBtYXJrZWQgdGV4dHMgbWF5
IG5vdCBiZSBpbiBwYWludCBvcmRlci4gV2Ugd2lsbCBmaXggdGhpcyB1cCBhdCB0aGUgZW5kIG9m
IHRoaXMgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IGk7ICsraikgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3NlZE1hcmtlZFRleHRz
LmNvbnRhaW5zKG9mZnNldHNbal0ubWFya2VkVGV4dCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNb
al0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT5tYXJrZXIgfSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNl
dHNbaV0udmFsdWUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1tqXS5tYXJr
ZWRUZXh0LT5tYXJrZXIsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+aGlnaGxpZ2h0TmFtZSB9KTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvZmZzZXRTb0Zh
ciA9IG9mZnNldHNbaV0udmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTWFya2VkVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaApp
bmRleCBiMmI1YWEwZmZmMGQ3ZTY1NGQxNDM4MjA4Y2I5YWJhMmM3ZGFkODJhLi43M2MwNjIxMWZl
NGFhNDMzMmEyYjgyODQwMWM5Y2FkMTlmMDkxZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9N
YXJrZWRUZXh0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQwLDYgKzQxLDcgQEAgc3RydWN0IE1hcmtlZFRleHQgewogICAg
ICAgICBTcGVsbGluZ0Vycm9yLAogICAgICAgICBUZXh0TWF0Y2gsCiAgICAgICAgIERpY3RhdGlv
bkFsdGVybmF0aXZlcywKKyAgICAgICAgSGlnaGxpZ2h0LAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNv
LCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgogICAgICAgICBEaWN0YXRp
b25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLApAQCAtNTEsMTIgKzUzLDEzIEBAIHN0cnVjdCBNYXJr
ZWRUZXh0IHsKICAgICB1bnNpZ25lZCBlbmRPZmZzZXQ7CiAgICAgVHlwZSB0eXBlOwogICAgIGNv
bnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqIG1hcmtlciB7IG51bGxwdHIgfTsKKyAgICBTdHJp
bmcgaGlnaGxpZ2h0TmFtZSB7IH07CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBlbmRPZmZzZXQgPD0gc3RhcnRPZmZzZXQ7IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
TWFya2VkVGV4dCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hcmtlZFRleHQmIG90aGVyKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0ID09IG90aGVyLnN0YXJ0T2Zmc2V0ICYmIGVuZE9m
ZnNldCA9PSBvdGhlci5lbmRPZmZzZXQgJiYgdHlwZSA9PSBvdGhlci50eXBlICYmIG1hcmtlciA9
PSBvdGhlci5tYXJrZXI7CisgICAgICAgIHJldHVybiBzdGFydE9mZnNldCA9PSBvdGhlci5zdGFy
dE9mZnNldCAmJiBlbmRPZmZzZXQgPT0gb3RoZXIuZW5kT2Zmc2V0ICYmIHR5cGUgPT0gb3RoZXIu
dHlwZSAmJiBtYXJrZXIgPT0gb3RoZXIubWFya2VyICYmIGhpZ2hsaWdodE5hbWUgPT0gb3RoZXIu
aGlnaGxpZ2h0TmFtZTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCmluZGV4IGI5YmFkMGEwOWYyOWJmN2FkYzlkMzMzZjRl
ODExYzNlYTFiOTNmYzIuLjNjYmRkMGViYmRlZTY3NGY0NjU4ZjY3MWIyNzBmNDI0ZGEzMTg0YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3Bw
CkBAIC01NSw0NyArNTUsNiBAQCBzdHJ1Y3QgU2VsZWN0aW9uRGF0YSB7CiAgICAgUmVuZGVyQmxv
Y2tNYXAgYmxvY2tzOwogfTsKIAotY2xhc3MgU2VsZWN0aW9uSXRlcmF0b3IgewotcHVibGljOgot
ICAgIFNlbGVjdGlvbkl0ZXJhdG9yKFJlbmRlck9iamVjdCogc3RhcnQpCi0gICAgICAgIDogbV9j
dXJyZW50KHN0YXJ0KQotICAgIHsKLSAgICAgICAgY2hlY2tGb3JTcGFubmVyKCk7Ci0gICAgfQot
ICAgIAotICAgIFJlbmRlck9iamVjdCogY3VycmVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50OwotICAgIH0KLSAgICAKLSAgICBSZW5kZXJPYmplY3QqIG5leHQoKQot
ICAgIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50U3BhbiA9IG1fc3Bhbm5lclN0YWNr
LmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3NwYW5uZXJTdGFjay5sYXN0KCktPnNwYW5uZXIoKTsK
LSAgICAgICAgbV9jdXJyZW50ID0gbV9jdXJyZW50LT5uZXh0SW5QcmVPcmRlcihjdXJyZW50U3Bh
bik7Ci0gICAgICAgIGNoZWNrRm9yU3Bhbm5lcigpOwotICAgICAgICBpZiAoIW1fY3VycmVudCAm
JiBjdXJyZW50U3BhbikgewotICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwbGFjZWhvbGRlciA9
IG1fc3Bhbm5lclN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgIG1fc3Bhbm5lclN0YWNrLnJlbW92
ZUxhc3QoKTsKLSAgICAgICAgICAgIG1fY3VycmVudCA9IHBsYWNlaG9sZGVyLT5uZXh0SW5QcmVP
cmRlcigpOwotICAgICAgICAgICAgY2hlY2tGb3JTcGFubmVyKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG1fY3VycmVudDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBjaGVja0Zv
clNwYW5uZXIoKQotICAgIHsKLSAgICAgICAgaWYgKCFpczxSZW5kZXJNdWx0aUNvbHVtblNwYW5u
ZXJQbGFjZWhvbGRlcj4obV9jdXJyZW50KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
YXV0byYgcGxhY2Vob2xkZXIgPSBkb3duY2FzdDxSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlcj4oKm1fY3VycmVudCk7Ci0gICAgICAgIG1fc3Bhbm5lclN0YWNrLmFwcGVuZCgmcGxh
Y2Vob2xkZXIpOwotICAgICAgICBtX2N1cnJlbnQgPSBwbGFjZWhvbGRlci5zcGFubmVyKCk7Ci0g
ICAgfQotCi0gICAgUmVuZGVyT2JqZWN0KiBtX2N1cnJlbnQgeyBudWxscHRyIH07Ci0gICAgVmVj
dG9yPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKj4gbV9zcGFubmVyU3RhY2s7
Ci19OwotCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogc3RhdGljIFJlbmRlck9iamVjdCog
cmVuZGVyZXJBZnRlclBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2ln
bmVkIG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rp
b25SYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURh
dGEuaAppbmRleCA4OWFlYmU3NDYxODRmZTNlZjU0ZDU4ZmM1NzAxMmZhZDAzNTkxZmM4Li4wMGNi
ZWIxYTYzOTFhMmQ3ZjZhZTcyZjg2NjI2OGQ2NjZiZTlhMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTZWxlY3Rpb25JbmZvLmgiCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9DT05UUk9MUykKQEAgLTM4LDYgKzM5LDQ3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgU2VsZWN0aW9uSXRlcmF0b3IgeworcHVibGljOgorICAgIFNlbGVjdGlvbkl0ZXJh
dG9yKFJlbmRlck9iamVjdCogc3RhcnQpCisgICAgICAgIDogbV9jdXJyZW50KHN0YXJ0KQorICAg
IHsKKyAgICAgICAgY2hlY2tGb3JTcGFubmVyKCk7CisgICAgfQorICAgIAorICAgIFJlbmRlck9i
amVjdCogY3VycmVudCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jdXJyZW50Owor
ICAgIH0KKyAgICAKKyAgICBSZW5kZXJPYmplY3QqIG5leHQoKQorICAgIHsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiBjdXJyZW50U3BhbiA9IG1fc3Bhbm5lclN0YWNrLmlzRW1wdHkoKSA/IG51bGxw
dHIgOiBtX3NwYW5uZXJTdGFjay5sYXN0KCktPnNwYW5uZXIoKTsKKyAgICAgICAgbV9jdXJyZW50
ID0gbV9jdXJyZW50LT5uZXh0SW5QcmVPcmRlcihjdXJyZW50U3Bhbik7CisgICAgICAgIGNoZWNr
Rm9yU3Bhbm5lcigpOworICAgICAgICBpZiAoIW1fY3VycmVudCAmJiBjdXJyZW50U3Bhbikgewor
ICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwbGFjZWhvbGRlciA9IG1fc3Bhbm5lclN0YWNrLmxh
c3QoKTsKKyAgICAgICAgICAgIG1fc3Bhbm5lclN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAg
ICAgIG1fY3VycmVudCA9IHBsYWNlaG9sZGVyLT5uZXh0SW5QcmVPcmRlcigpOworICAgICAgICAg
ICAgY2hlY2tGb3JTcGFubmVyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fY3VycmVu
dDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBjaGVja0ZvclNwYW5uZXIoKQorICAgIHsK
KyAgICAgICAgaWYgKCFpczxSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4obV9j
dXJyZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byYgcGxhY2Vob2xkZXIg
PSBkb3duY2FzdDxSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4oKm1fY3VycmVu
dCk7CisgICAgICAgIG1fc3Bhbm5lclN0YWNrLmFwcGVuZCgmcGxhY2Vob2xkZXIpOworICAgICAg
ICBtX2N1cnJlbnQgPSBwbGFjZWhvbGRlci5zcGFubmVyKCk7CisgICAgfQorCisgICAgUmVuZGVy
T2JqZWN0KiBtX2N1cnJlbnQgeyBudWxscHRyIH07CisgICAgVmVjdG9yPFJlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyKj4gbV9zcGFubmVyU3RhY2s7Cit9OworCiBzdHJ1Y3QgT2xk
U2VsZWN0aW9uRGF0YTsKICAgICAKIGNsYXNzIFNlbGVjdGlvblJhbmdlRGF0YSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTc4MTgyNjUxYjEy
ZjRhNzZiMmFlNTMzNTgyNGM5ZGRkMmJkODBiMi4uYmUwNjkxZGFlNWIwMmYwMDI4MTIxNzkzYmRk
YTIwNzYyZjc5OGMwYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEyLTE2ICBNZWdhbiBHYXJkbmVyICA8bWVn
YW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGlnaGxpZ2h0cyBzcGVjaWZp
ZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV4cGFuZCBNYXJrZWRUZXh0IHRvIGhhbmRsZSBoaWdobGlnaHQgYW5k
IHRoZWlyIG5hbWVkIHN0eWxlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9NYXJrZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorCiAy
MDE5LTEyLTEyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBEZW55IG1hY2ggbG9va3VwIGFjY2VzcyB0byBjb250ZW50IGZpbHRlciBzZXJ2aWNl
IGluIHRoZSBXZWJDb250ZW50IHNhbmRib3gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcAppbmRleCA1YTE2MmM2MGVjOTZmMGRjMmFmYTA2ODBl
M2MxZDgzZDBkYmZlODBmLi4wNjgxY2FiNDM2N2M1MjM2YTliNTY0MjhhZDZmMTA3NDViYTkxNzgx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQu
Y3BwCkBAIC01NSw2ICs1NSw4IEBAIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJl
YW0mIG9zLCBNYXJrZWRUZXh0OjpUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBvcyA8PCAiU3Bl
bGxpbmdFcnJvciI7CiAgICAgY2FzZSBNYXJrZWRUZXh0OjpUZXh0TWF0Y2g6CiAgICAgICAgIHJl
dHVybiBvcyA8PCAiVGV4dE1hdGNoIjsKKyAgICBjYXNlIE1hcmtlZFRleHQ6OkhpZ2hsaWdodDoK
KyAgICAgICAgcmV0dXJuIG9zIDw8ICJIaWdobGlnaHQiOwogICAgIGNhc2UgTWFya2VkVGV4dDo6
VW5tYXJrZWQ6CiAgICAgICAgIHJldHVybiBvcyA8PCAiVW5tYXJrZWQiOwogICAgIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDlmOTlkMjg4Mzk2Y2ZjZDBkYWQ5NzlhN2ZhNzVm
NGVmMDgyMmVkMzAuLmQ5NjYzY2RjZmZlNTFmYmI4MWY0ODcwY2Q5MjcyNjE5NWY3YjJkYjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEyLTE2
ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFp
bnQgaGlnaGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
aGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWw6IEFkZGVkLgor
CiAyMDE5LTEyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
d2luZG93LkF1ZGlvQ29udGV4dCAvIHdpbmRvdy5PZmZsaW5lQXVkaW9Db250ZXh0IHNob3VsZCBu
b3QgYmUgZW51bWVyYWJsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNy
b3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jv
c3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmY0M2E0ODY2Mjg1ZGY0MjMy
YmQxM2RkNDE5YjMzNTBiMWM5MjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxp
Z2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAjc3R5bGUx
IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVl
bjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7
CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0eWxlMyB7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6cGluazsKKyAgICB9CisgICAgPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxib2R5PgorICAgICAgICBPbmUgPHNwYW4gaWQ9
InN0eWxlMSI+dHdvPC9zcGFuPiB0aDxzcGFuIGlkPSJzdHlsZTIiPnJlZQorICAgICAgICBmb3Vy
PC9zcGFuPiBmaXZlIDxzcGFuIGlkPSJzdHlsZTIiPnNpeAorICAgICAgICBzZXZlbjwvc3Bhbj4g
ZWlnaDxzcGFuIGlkPSJzdHlsZTMiPnQgbmluZQorICAgICAgICB0ZW4gZWxldmVuIHR3ZWx2ZQor
ICAgICAgICB0aGlydGVlbiBmb3U8L3NwYW4+cnRlZW4gZmlmdGVlbgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
aGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZGZmNWE0ZGIwZjBiNmExYzQyMDYzYWFmNzc5NzNhY2JkMjcwN2NiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwKQEAg
LTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+CisgIDx0aXRsZT5DdXN0b20gaGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50
cyBhY3Jvc3MgZWxlbWVudHMuPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jY3JlYXRpbmctaGlnaGxp
Z2h0cyI+CisgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10ZXh0LWV4cGVjdGVk
Lmh0bWwiPgorICA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkhpZ2hsaWdodHMgc2hvdWxk
IGJlIGFibGUgdG8gYmUgc3BlY2lmaWVkIGFjcm9zcyBlbGVtZW50cy4iPgorICAgIDxzdHlsZT4K
KyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDEpIHsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgOjpoaWdo
bGlnaHQoZXhhbXBsZS1oaWdobGlnaHQyKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJs
dWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1o
aWdobGlnaHQzKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAg
Y29sb3I6cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxi
b2R5PgorICAgICAgICA8c3BhbiBpZD0idGV4dDEiPk9uZSB0d28gdGhyZWU8L3NwYW4+CisgICAg
ICAgIDxzcGFuIGlkPSJ0ZXh0MiI+Zm91ciBmaXZlIHNpeDwvc3Bhbj4KKyAgICAgICAgPHNwYW4g
aWQ9InRleHQzIj5zZXZlbiBlaWdodCBuaW5lPC9zcGFuPgorICAgICAgICA8c3BhbiBpZD0idGV4
dDQiPnRlbiBlbGV2ZW4gdHdlbHZlPC9zcGFuPgorICAgICAgICA8c3BhbiBpZD0idGV4dDUiPnRo
aXJ0ZWVuIGZvdXJ0ZWVuIGZpZnRlZW48L3NwYW4+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBs
ZXQgdGV4dEVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAg
ICAgIGxldCB0ZXh0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDInKTsK
KyAgICAgICAgbGV0IHRleHRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0
MycpOworICAgICAgICBsZXQgdGV4dEVsZW1lbnQ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RleHQ0Jyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGV4dDUnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAxID0gbmV3IEhp
Z2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVs
ZW1lbnQxLCBzdGFydE9mZnNldDogNCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDEsIGVuZE9m
ZnNldDogN30pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGln
aGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxl
bWVudDEsIHN0YXJ0T2Zmc2V0OiAxMCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDIsIGVuZE9m
ZnNldDogNH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNS
YW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Miwgc3RhcnRPZmZzZXQ6IDEwLCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50MywgZW5kT2Zmc2V0OiA1fSkpOworCisgICAgICAgIGxldCBo
aWdobGlnaHRSYW5nZUdyb3VwMyA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNS
YW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Mywgc3RhcnRPZmZzZXQ6IDEwLCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50NSwgZW5kT2Zmc2V0OiAxMn0pKTsKKworICAgICAgICBDU1Mu
aGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hsaWdodFJhbmdlR3JvdXAx
KTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDIiLCBoaWdo
bGlnaHRSYW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1o
aWdobGlnaHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVjZDAyYzQ3NTg2YTMxNDNjMDcwY2E3MzE2NjZkMTVjY2E3MmIyYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1o
aWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAjc3R5
bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpn
cmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJs
dWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0eWxlMyB7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6cGluazsKKyAgICB9CisgICAg
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxib2R5PgorICAgICAgICBPPHNwYW4gaWQ9
InN0eWxlMSI+bjwvc3Bhbj5lPHNwYW4gaWQ9InN0eWxlMiI+IDwvc3Bhbj50PHNwYW4gaWQ9InN0
eWxlMiI+dzwvc3Bhbj5vPHNwYW4gaWQ9InN0eWxlMyI+IDwvc3Bhbj50PHNwYW4gaWQ9InN0eWxl
MyI+aDwvc3Bhbj5yZTxzcGFuIGlkPSJzdHlsZTMiPmU8L3NwYW4+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGln
aGxpZ2h0LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjFhZDc3ZTBkNWIwN2IxZTcyMjlhZmI0NTRk
MmZjN2E1OGRlMDYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQu
aHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPHRpdGxlPk11bHRpcGxlIGN1c3RvbSBoaWdobGln
aHQgcHNldWRvIGVsZW1lbnRzLjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI2NyZWF0aW5nLWhpZ2hs
aWdodHMiPgorICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJoaWdobGlnaHQtdGV4dC1leHBlY3Rl
ZC5odG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJNdWx0aXBsZSBoaWdobGln
aHRzIHNob3VsZCBiZSBhYmxlIHRvIGJlIHNwZWNpZmllZC4iPgorICAgIDxzdHlsZT4KKyAgICA6
OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDEpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgOjpoaWdobGlnaHQo
ZXhhbXBsZS1oaWdobGlnaHQyKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cisg
ICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGln
aHQzKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6
cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxib2R5Pgor
ICAgICAgICA8c3BhbiBpZD0idGV4dDEiPk9uZSB0d28gdGhyZWU8L3NwYW4+CisKKworICAgIDxz
Y3JpcHQ+CisgICAgICAgIGxldCB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0ZXh0MScpOworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDEgPSBuZXcgSGlnaGxp
Z2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVu
dCwgc3RhcnRPZmZzZXQ6IDEsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDog
Mn0pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGlnaGxpZ2h0
UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwg
c3RhcnRPZmZzZXQ6IDMsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogNH0p
KTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3Rh
cnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogNSwgZW5kQ29udGFpbmVyOiB0
ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiA2fSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5n
ZUdyb3VwMyA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRD
b250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogNywgZW5kQ29udGFpbmVyOiB0ZXh0
RWxlbWVudCwgZW5kT2Zmc2V0OiA4fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMy5h
ZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zm
c2V0OiA5LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDEwfSkpOworICAg
ICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMy5hZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRh
aW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiAxMiwgZW5kQ29udGFpbmVyOiB0ZXh0RWxl
bWVudCwgZW5kT2Zmc2V0OiAxM30pKTsKKyAgICAgICAgCisKKyAgICAgICAgQ1NTLmhpZ2hsaWdo
dHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDEiLCBoaWdobGlnaHRSYW5nZUdyb3VwMSk7CisgICAg
ICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQyIiwgaGlnaGxpZ2h0UmFu
Z2VHcm91cDIpOworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0
MyIsIGhpZ2hsaWdodFJhbmdlR3JvdXAzKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385903</attachid>
            <date>2019-12-17 11:32:20 -0800</date>
            <delta_ts>2019-12-17 12:24:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191217113219.patch</filename>
            <type>text/plain</type>
            <size>31127</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U5YTlhNTA2ODhmYTk1
Y2FjNTE4YjRiYTgxZGZjMzA1MDE5YTZhYi4uZDFmMWFiZGM0YTBlNzExZWJiZTkyOWZjODZjOTlk
YWMwOGU1MDlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEyLTE2ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3Mt
ZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQuaHRtbAorCisgICAgICAg
IFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJlc2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJl
bmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLiAgCisKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJl
ckFmdGVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cmVuZGVy
ZXJIaWdobGlnaHRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpoaWdobGlnaHRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpoaWdobGlnaHRTdGFy
dEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpyZXNvbHZlU3R5
bGVGb3JNYXJrZWRUZXh0KToKKworICAgICAgICBVc2UgdGhlIGhpZ2hsaWdodCBuYW1lIGZyb20g
dGhlIEhpZ2hsaWdodFJhbmdlR3JvdXAgdG8gb2J0YWluIHRoZSBzdHlsZSBmcm9tIHRoZSByZW5k
ZXJlci4KKworICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRl
eHRzRm9ySGlnaGxpZ2h0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaDoKKworICAgICAgICBSZW5kZXIgdGhlIGhpZ2hsaWdodHMgd2hlbiBwYWludGluZyB0ZXh0
LiBEZXRlcm1pbmUgaWYgYSBoaWdobGlnaHQgaXMgcHJlc2VudCBpbiB0aGUgY3VycmVudCBSZW5k
ZXJPYmplY3QsIGFuZCAKKyAgICAgICAgYWRkIGFkZGl0aW9uYWwgTWFya2VkVGV4dCB0byBiZSBy
ZW5kZXJlZCB3aGVuIHBhaW50aW5nCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9NYXJr
ZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1YmRpdmlkZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL01hcmtlZFRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmtlZFRleHQ6Om9wZXJh
dG9yPT0gY29uc3QpOgorCisgICAgICAgIEV4cGFuZCBNYXJrZWRUZXh0IHRvIHRha2UgYSBzdHls
ZSBuYW1lLgorCisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uSXRlcmF0b3I6OlNlbGVjdGlvbkl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkl0ZXJhdG9yOjpjdXJyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkl0
ZXJhdG9yOjpjaGVja0ZvclNwYW5uZXIpOgorCiAyMDE5LTEyLTE3ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBBU1NFUlRJT04gRkFJTEVE
OiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKSA9PSBtX2dlbmVyYXRpb24KQEAg
LTE3MTMsNiArMTc2MCw4IEBACiAgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJ
bmxpbmVDb250ZW50LmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OiBjb25zdCk6CiAK
KyAgICAgICAgTW92ZSBzb21lIGhlbHBmdWwgZnVuY3Rpb25zIHNvIHRoZXkgYXJlIGFjY2Vzc2li
bGUuCisKIDIwMTktMTItMTIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIERlbnkgbWFjaCBsb29rdXAgYWNjZXNzIHRvIGNvbnRlbnQgZmlsdGVy
IHNlcnZpY2UgaW4gdGhlIFdlYkNvbnRlbnQgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRNYXAuaAppbmRleCBmZjk4Y2MzYmE1MzJmZTAxZGU0
MDc1Njg5YTBiOTIzNjU3ZmNlZWYyLi4xYTQ4NTdiMjVjNThmZThmYzRhNDE1OWFmNGE4OTc3ZWQ5
ZmI3YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdo
bGlnaHRNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGln
aHRNYXAuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmUoY29uc3Qg
U3RyaW5nJik7CiAgICAgCiAgICAgUmVmUHRyPEhpZ2hsaWdodFJhbmdlR3JvdXA+IGdldEdyb3Vw
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KTsKKyAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgUmVm
PEhpZ2hsaWdodFJhbmdlR3JvdXA+PiYgbWFwKCkgY29uc3QgeyByZXR1cm4gbV9tYXA7IH0KICAg
ICAKIHByaXZhdGU6CiAgICAgSGlnaGxpZ2h0TWFwKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDQzM2EwNzRmNTAyNjQ3OGM3M2Jh
ZWVhNjEzYzMzNTg0ODkyZjUzMWMuLmZhN2U1N2RhMWRhZTM2NjVjNTUzNmQ4NTY1ZWU1NWJiZTE4
OTAxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAg
LTI4LDEwICsyOCwxMiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRWxl
bWVudFJ1bGVDb2xsZWN0b3IuaCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgogI2luY2x1ZGUg
IkV2ZW50UmVnaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJIaWdobGlnaHRNYXAuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94
U3R5bGUuaCIKQEAgLTQ2LDYgKzQ4LDggQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgi
CisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNlbGVjdGlv
blJhbmdlRGF0YS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0RGVjb3JhdGlv
blBhaW50ZXIuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgpAQCAtMTk0LDYgKzE5OCw2
NiBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNlbGVjdGlv
blN0YXRlKCkKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKKworc3RhdGljIFJlbmRlck9iamVjdCog
cmVuZGVyZXJBZnRlclBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2ln
bmVkIG9mZnNldCkKK3sKKyAgICBhdXRvKiBjaGlsZCA9IHJlbmRlcmVyLmNoaWxkQXQob2Zmc2V0
KTsKKyAgICByZXR1cm4gY2hpbGQgPyBjaGlsZCA6IHJlbmRlcmVyLm5leHRJblByZU9yZGVyQWZ0
ZXJDaGlsZHJlbigpOworfQorCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRl
eHRCb3g6OnJlbmRlcmVySGlnaGxpZ2h0U3RhdGUoUmVuZGVyT2JqZWN0KiBzdGFydE9iamVjdCwg
dW5zaWduZWQgLypzdGFydFBvcyovLCBSZW5kZXJPYmplY3QqIGVuZE9iamVjdCwgdW5zaWduZWQg
ZW5kUG9zKSBjb25zdAoreworICAgIGlmICgmcmVuZGVyZXIoKSA9PSBzdGFydE9iamVjdCB8fCBy
ZW5kZXJlcigpLmlzRGVzY2VuZGFudE9mKHN0YXJ0T2JqZWN0KSkgeworICAgICAgICBpZiAoc3Rh
cnRPYmplY3QgJiYgZW5kT2JqZWN0ICYmIHN0YXJ0T2JqZWN0ID09IGVuZE9iamVjdCkKKyAgICAg
ICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkJvdGg7CisgICAgICAgIGlmIChz
dGFydE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXJ0OworICAgIH0KKyAgICBpZiAoJnJlbmRlcmVyKCkgPT0gZW5kT2JqZWN0IHx8IHJlbmRlcmVy
KCkuaXNEZXNjZW5kYW50T2YoZW5kT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uRW5kOworCisgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQgPSBudWxs
cHRyOworICAgIGF1dG8qIHNlbGVjdGlvbkRhdGFFbmQgPSBlbmRPYmplY3Q7CisgICAgaWYgKHNl
bGVjdGlvbkRhdGFFbmQpCisgICAgICAgIHNlbGVjdGlvbkVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3Np
dGlvbigqc2VsZWN0aW9uRGF0YUVuZCwgZW5kUG9zKTsKKyAgICBTZWxlY3Rpb25JdGVyYXRvciBz
ZWxlY3Rpb25JdGVyYXRvcihzdGFydE9iamVjdCk7CisgICAgZm9yIChhdXRvKiBjdXJyZW50UmVu
ZGVyZXIgPSBzdGFydE9iamVjdDsgY3VycmVudFJlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAh
PSBlbmRPYmplY3Q7IGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkg
eworICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyID09IHN0YXJ0T2JqZWN0IHx8IGN1cnJlbnRS
ZW5kZXJlciA9PSBlbmRPYmplY3QpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KCFjdXJyZW50UmVuZGVyZXItPmNhbkJlU2VsZWN0aW9uTGVhZigpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmICgmcmVuZGVyZXIoKSA9PSBjdXJyZW50UmVuZGVyZXIpCisgICAg
ICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGU7CisgICAgfQorICAg
IHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmU7Cit9CisKK1JlbmRlck9iamVjdDo6
U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhdGUoUmVuZGVyT2JqZWN0
KiBzdGFydE9iamVjdCwgdW5zaWduZWQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZW5kT2JqZWN0
LCB1bnNpZ25lZCBlbmRQb3MpIGNvbnN0Cit7CisgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25T
dGF0ZSBzdGF0ZSA9IHJlbmRlcmVySGlnaGxpZ2h0U3RhdGUoc3RhcnRPYmplY3QsIHN0YXJ0UG9z
LCBlbmRPYmplY3QsIGVuZFBvcyk7CisgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhcnQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQgfHwgc3Rh
dGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKSB7CisKKyAgICAgICAgLy8gVGhlIHBv
c2l0aW9uIGFmdGVyIGEgaGFyZCBsaW5lIGJyZWFrIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFzdCBp
dHMgZW5kLgorICAgICAgICBBU1NFUlQoc3RhcnQoKSArIGxlbigpID49IChpc0xpbmVCcmVhaygp
ID8gMSA6IDApKTsKKyAgICAgICAgdW5zaWduZWQgbGFzdFNlbGVjdGFibGUgPSBzdGFydCgpICsg
bGVuKCkgLSAoaXNMaW5lQnJlYWsoKSA/IDEgOiAwKTsKKworICAgICAgICBib29sIHN0YXJ0ID0g
KHN0YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kICYmIHN0YXJ0UG9zID49IG1fc3Rh
cnQgJiYgc3RhcnRQb3MgPCBtX3N0YXJ0ICsgbV9sZW4pOworICAgICAgICBib29sIGVuZCA9IChz
dGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0ICYmIGVuZFBvcyA+IG1fc3RhcnQg
JiYgZW5kUG9zIDw9IGxhc3RTZWxlY3RhYmxlKTsKKyAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkK
KyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoOworICAgICAg
ICBlbHNlIGlmIChzdGFydCkKKyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25TdGFydDsKKyAgICAgICAgZWxzZSBpZiAoZW5kKQorICAgICAgICAgICAgc3RhdGUgPSBS
ZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZDsKKyAgICAgICAgZWxzZSBpZiAoKHN0YXRlID09IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uRW5kIHx8IHN0YXJ0UG9zIDwgbV9zdGFydCkgJiYgKHN0YXRl
ID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQgfHwgZW5kUG9zID4gbGFzdFNlbGVjdGFi
bGUpKQorICAgICAgICAgICAgc3RhdGUgPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkluc2lkZTsK
KyAgICAgICAgZWxzZSBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKQor
ICAgICAgICAgICAgc3RhdGUgPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmU7CisgICAgfQor
CisgICAgcmV0dXJuIHN0YXRlOworfQorCiBpbmxpbmUgY29uc3QgRm9udENhc2NhZGUmIElubGlu
ZVRleHRCb3g6OmxpbmVGb250KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29tYmluZWRUZXh0KCkg
PyBjb21iaW5lZFRleHQoKS0+dGV4dENvbWJpbmVGb250KCkgOiBsaW5lU3R5bGUoKS5mb250Q2Fz
Y2FkZSgpOwpAQCAtNTI0LDYgKzU4OCwxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAg
ICAgICAgICBwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbik7
CiAKICAgICAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtl
ZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsKKyAg
ICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaGlnaGxp
Z2h0QVBJRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBhdXRvIGhpZ2hsaWdodE1hcmtlZFRleHRz
ID0gY29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZTo6QmFja2dy
b3VuZCk7CisgICAgICAgICAgICBpZiAoIWhpZ2hsaWdodE1hcmtlZFRleHRzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoV1RGTW92ZShoaWdobGln
aHRNYXJrZWRUZXh0cykpOworICAgICAgICB9CiAjaWYgRU5BQkxFKFRFWFRfU0VMRUNUSU9OKQog
ICAgICAgICBpZiAoaGF2ZVNlbGVjdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcyAmJiAhY29u
dGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uTWFy
a2VkVGV4dCA9IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3goKnRoaXMpOwpAQCAt
NTU3LDYgKzYyNiwxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIG1hcmtlZFRl
eHRzLmFwcGVuZCh7IGNsYW1wZWRPZmZzZXQobV9zdGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKCkp
LCBNYXJrZWRUZXh0OjpVbm1hcmtlZCB9KTsKICAgICAgICAgaWYgKCFpc1ByaW50aW5nKSB7CiAg
ICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoY29sbGVjdE1hcmtlZFRleHRzRm9y
RG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kKSk7CisgICAgICAgICAg
ICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaGlnaGxp
Z2h0QVBJRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaGlnaGxpZ2h0TWFy
a2VkVGV4dHMgPSBjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNl
OjpGb3JlZ3JvdW5kKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFoaWdobGlnaHRNYXJrZWRU
ZXh0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZl
Y3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CisgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBib29sIHNob3VsZFBhaW50RHJhZ2dlZENvbnRlbnQgPSAhKHBhaW50SW5m
by5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24p
KTsKICAgICAgICAgICAgIGlmIChzaG91bGRQYWludERyYWdnZWRDb250ZW50KSB7CkBAIC02Njcs
NiArNzQxLDIzIEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6
OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKICAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0
YXJ0KSwgY2xhbXBlZE9mZnNldChlbmQpIH07CiB9CiAKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IElubGluZVRleHRCb3g6OmhpZ2hsaWdodFN0YXJ0RW5kKFJlbmRlck9iamVjdCogc3Rh
cnQsIHVuc2lnbmVkIHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVuZCwgdW5zaWduZWQgZW5kUG9z
KSBjb25zdAoreworICAgIGF1dG8gc3RhdGUgPSBoaWdobGlnaHRTdGF0ZShzdGFydCwgc3RhcnRQ
b3MsIGVuZCwgZW5kUG9zKTsKKyAgICAKKyAgICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25Ob25lKQorICAgICAgICByZXR1cm4geyAwLCAwfTsKKyAgICAKKyAgICBpZiAoc3Rh
dGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGUpCisgICAgICAgIHJldHVybiB7IDAs
IGNsYW1wZWRPZmZzZXQobV9zdGFydCArIG1fbGVuKSB9OworICAgIAorICAgIGlmIChzdGF0ZSA9
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0KQorICAgICAgICBlbmRQb3MgPSByZW5kZXJl
cigpLnRleHQoKS5sZW5ndGgoKTsKKyAgICBlbHNlIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvbkVuZCkKKyAgICAgICAgc3RhcnRQb3MgPSAwOworICAgIHJldHVybiB7IGNsYW1w
ZWRPZmZzZXQoc3RhcnRQb3MpLCBjbGFtcGVkT2Zmc2V0KGVuZFBvcykgfTsKK30KKwogYm9vbCBJ
bmxpbmVUZXh0Qm94OjpoYXNNYXJrZXJzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sbGVjdE1h
cmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKS5z
aXplKCk7CkBAIC03NzAsNiArODYxLDM0IEBAIGF1dG8gSW5saW5lVGV4dEJveDo6cmVzb2x2ZVN0
eWxlRm9yTWFya2VkVGV4dChjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zCiAgICAg
Y2FzZSBNYXJrZWRUZXh0OjpTcGVsbGluZ0Vycm9yOgogICAgIGNhc2UgTWFya2VkVGV4dDo6VW5t
YXJrZWQ6CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWFya2VkVGV4dDo6SGlnaGxpZ2h0Ogor
ICAgICAgICB7CisgICAgICAgIGF1dG8gcmVuZGVyU3R5bGUgPSBwYXJlbnQoKS0+cmVuZGVyZXIo
KS5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHsgUHNldWRvSWQ6OkhpZ2hsaWdodCwgbWFya2VkVGV4
dC5oaWdobGlnaHROYW1lfSwgJnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAocmVuZGVyU3R5bGUpIHsKKyAgICAgICAgICAgICAgICBz
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJTdHlsZS0+YmFja2dyb3VuZENvbG9yKCk7Cisg
ICAgICAgICAgICAgICAgc3R5bGUudGV4dFN0eWxlcy5maWxsQ29sb3IgPSByZW5kZXJTdHlsZS0+
Y29tcHV0ZWRTdHJva2VDb2xvcigpOworICAgICAgICAgICAgICAgIHN0eWxlLnRleHRTdHlsZXMu
c3Ryb2tlQ29sb3IgPSByZW5kZXJTdHlsZS0+Y29tcHV0ZWRTdHJva2VDb2xvcigpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gY29sb3IgPSByZW5kZXJTdHlsZS0+dmlz
aXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5V2Via2l0VGV4dEZp
bGxDb2xvcik7CisgICAgICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUgPSByZW5kZXJT
dHlsZS0+dGV4dERlY29yYXRpb25TdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8gZGVjb3Jh
dGlvbnMgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKKworICAgICAg
ICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJs
aW5lKSkgeworICAgICAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51
bmRlcmxpbmVDb2xvciA9IGNvbG9yOworICAgICAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVj
b3JhdGlvblN0eWxlcy51bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uOjpPdmVybGluZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERl
Y29yYXRpb25TdHlsZXMub3ZlcmxpbmVDb2xvciA9IGNvbG9yOworICAgICAgICAgICAgICAgICAg
ICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0
eWxlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSkgeworICAgICAgICAgICAgICAg
ICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9yID0gY29sb3I7
CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJv
dWdoU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWFya2VkVGV4dDo6RHJh
Z2dlZENvbnRlbnQ6CiAgICAgICAgIHN0eWxlLmFscGhhID0gMC4yNTsKICAgICAgICAgYnJlYWs7
CkBAIC05NjMsNiArMTA4MiwzOCBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6
Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludAogICAgIHJldHVy
biBtYXJrZWRUZXh0czsKIH0KIAorCitWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6
Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZSBwaGFzZSkgY29u
c3QKK3sKKyAgICBBU1NFUlRfQVJHKHBoYXNlLCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6QmFj
a2dyb3VuZCB8fCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCB8fCBwaGFzZSA9
PSBUZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbik7CisKKyAgICBVTlVTRURfUEFSQU0ocGhhc2Up
OworICAgIAorICAgIGlmICghcmVuZGVyZXIoKS50ZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzOworICAgIGZvciAoYXV0
byYgaGlnaGxpZ2h0R3JvdXAgOiByZW5kZXJlcigpLmRvY3VtZW50KCkuaGlnaGxpZ2h0TWFwKCku
bWFwKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzdGF0aWNSYW5nZSA6IGhpZ2hsaWdodEdyb3Vw
LnZhbHVlLT5yYW5nZXMoKSkgeworICAgICAgICAgICAgUG9zaXRpb24gc3RhcnRQb3MgPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHN0
YXRpY1JhbmdlLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIFBvc2l0aW9uIGVuZFBvcyA9
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdGF0aWNSYW5nZS0+ZW5kQ29udGFpbmVyKCks
IHN0YXRpY1JhbmdlLT5lbmRPZmZzZXQoKSk7CisKKyAgICAgICAgICAgIGlmIChzdGFydFBvcy5p
c05vdE51bGwoKSAmJiBlbmRQb3MuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5k
ZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5k
ZXJlcigpOworICAgICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0UG9zLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBlbmRS
ZW5kZXJlciA9IGVuZFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgICAgICAg
ICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0g
MCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0byBbaGlnaGxpZ2h0U3Rh
cnQsIGhpZ2hsaWdodEVuZF0gPSBoaWdobGlnaHRTdGFydEVuZChzdGFydFJlbmRlcmVyLCBzdGFy
dE9mZnNldCwgZW5kUmVuZGVyZXIsIGVuZE9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKGhp
Z2hsaWdodFN0YXJ0IDwgaGlnaGxpZ2h0RW5kKQorICAgICAgICAgICAgICAgICAgICBtYXJrZWRU
ZXh0cy5hcHBlbmQoeyBoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0RW5kLCBNYXJrZWRUZXh0OjpI
aWdobGlnaHQsIG51bGxwdHIsIGhpZ2hsaWdodEdyb3VwLmtleX0pOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtYXJrZWRUZXh0czsKK30KKwogRmxvYXRQb2lu
dCBJbmxpbmVUZXh0Qm94Ojp0ZXh0T3JpZ2luRnJvbUJveFJlY3QoY29uc3QgRmxvYXRSZWN0JiBi
b3hSZWN0KSBjb25zdAogewogICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IGJveFJlY3QueCgp
LCBib3hSZWN0LnkoKSArIGxpbmVGb250KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggNWNhMmJjODYxMzZiNmQ5
MzI2ODcyOGJkYWY4NzI5MmU4ODU4ZDY1Yy4uNTBmODc4ODViOWZiM2Y5OTVlNjM4MTFjNzMyNjkz
YjdmYTdkMTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBA
IC0xMjEsNiArMTIxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbFNl
bGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmVkIGVuZFBvcykgY29uc3Q7CiAg
ICAgYm9vbCBpc1NlbGVjdGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBv
c2l0aW9uKSBjb25zdDsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBzZWxlY3Rp
b25TdGFydEVuZCgpIGNvbnN0OworICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGhp
Z2hsaWdodFN0YXJ0RW5kKFJlbmRlck9iamVjdCosIHVuc2lnbmVkLCBSZW5kZXJPYmplY3QqLCB1
bnNpZ25lZCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20pIG92ZXJyaWRlOwpAQCAtMTMyLDYgKzEzMyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZWxldGVMaW5lKCkgZmluYWw7CiAgICAgdm9pZCBleHRyYWN0TGluZSgpIGZpbmFsOwogICAgIHZv
aWQgYXR0YWNoTGluZSgpIGZpbmFsOworICAgIAorICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
U3RhdGUgcmVuZGVyZXJIaWdobGlnaHRTdGF0ZShSZW5kZXJPYmplY3QqICwgdW5zaWduZWQgLCBS
ZW5kZXJPYmplY3QqICwgdW5zaWduZWQpIGNvbnN0OworICAgIFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUgaGlnaGxpZ2h0U3RhdGUoUmVuZGVyT2JqZWN0KiwgdW5zaWduZWQsIFJlbmRlck9i
amVjdCosIHVuc2lnbmVkKSBjb25zdDsKIAogcHVibGljOgogICAgIFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBmaW5hbDsKQEAgLTE2OSw2ICsxNzMsNyBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRy
YWdnZWRDb250ZW50KCk7CiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0
c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZSkgY29uc3Q7CisgICAgVmVjdG9yPE1h
cmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2Up
IGNvbnN0OwogCiAgICAgTWFya2VkVGV4dFN0eWxlIGNvbXB1dGVTdHlsZUZvclVubWFya2VkTWFy
a2VkVGV4dChjb25zdCBQYWludEluZm8mKSBjb25zdDsKICAgICBTdHlsZWRNYXJrZWRUZXh0IHJl
c29sdmVTdHlsZUZvck1hcmtlZFRleHQoY29uc3QgTWFya2VkVGV4dCYsIGNvbnN0IE1hcmtlZFRl
eHRTdHlsZSYgYmFzZVN0eWxlLCBjb25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9NYXJrZWRUZXh0LmNwcAppbmRleCBhNzkxOTJlMjhhZTE5OTk2ODZiNjI2NTdjODkwZjU3
YjJjODRlNTYyLi4wNDRkZWZhZDA1NmVjY2VmMTZkODFiZTA3MjhlZjIwOTkzMTY3YWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCwx
MiArNzUsMTIgQEAgVmVjdG9yPE1hcmtlZFRleHQ+IHN1YmRpdmlkZShjb25zdCBWZWN0b3I8TWFy
a2VkVGV4dD4mIG1hcmtlZFRleHRzLCBPdmVybGFwU3RyYXQKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyb250bW9zdCA9IGo7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChmcm9udG1vc3QpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRT
b0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50
eXBlLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPm1hcmtlciB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVl
LCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbKmZyb250bW9z
dF0ubWFya2VkVGV4dC0+bWFya2VyLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPmhp
Z2hsaWdodE5hbWV9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIGFwcGVuZGVkIG1hcmtlZCB0ZXh0cyBtYXkgbm90IGJlIGluIHBhaW50IG9yZGVyLiBXZSB3
aWxsIGZpeCB0aGlzIHVwIGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4KICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgaTsgKytqKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghcHJvY2Vzc2VkTWFya2VkVGV4dHMuY29udGFpbnMob2Zmc2V0c1tqXS5tYXJrZWRU
ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zh
ciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT50eXBlLCBvZmZzZXRz
W2pdLm1hcmtlZFRleHQtPm1hcmtlciB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1tqXS5tYXJr
ZWRUZXh0LT50eXBlLCBvZmZzZXRzW2pdLm1hcmtlZFRleHQtPm1hcmtlciwgb2Zmc2V0c1tqXS5t
YXJrZWRUZXh0LT5oaWdobGlnaHROYW1lIH0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG9mZnNldFNvRmFyID0gb2Zmc2V0c1tpXS52YWx1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCmluZGV4IGIyYjVhYTBmZmYwZDdlNjU0ZDE0Mzgy
MDhjYjlhYmEyYzdkYWQ4MmEuLjczYzA2MjExZmU0YWE0MzMyYTJiODI4NDAxYzljYWQxOWYwOTFk
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsNiArNDEs
NyBAQCBzdHJ1Y3QgTWFya2VkVGV4dCB7CiAgICAgICAgIFNwZWxsaW5nRXJyb3IsCiAgICAgICAg
IFRleHRNYXRjaCwKICAgICAgICAgRGljdGF0aW9uQWx0ZXJuYXRpdmVzLAorICAgICAgICBIaWdo
bGlnaHQsCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gRklYTUU6IFNlZSA8
cmRhcjovL3Byb2JsZW0vODkzMzM1Mj4uIEFsc28sIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZB
TUlMWSktZ3VhcmQuCiAgICAgICAgIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsCkBA
IC01MSwxMiArNTMsMTMgQEAgc3RydWN0IE1hcmtlZFRleHQgewogICAgIHVuc2lnbmVkIGVuZE9m
ZnNldDsKICAgICBUeXBlIHR5cGU7CiAgICAgY29uc3QgUmVuZGVyZWREb2N1bWVudE1hcmtlciog
bWFya2VyIHsgbnVsbHB0ciB9OworICAgIFN0cmluZyBoaWdobGlnaHROYW1lIHsgfTsKIAogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGVuZE9mZnNldCA8PSBzdGFydE9mZnNldDsg
fQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXJrZWRUZXh0JiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFy
a2VkVGV4dCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gc3RhcnRPZmZzZXQg
PT0gb3RoZXIuc3RhcnRPZmZzZXQgJiYgZW5kT2Zmc2V0ID09IG90aGVyLmVuZE9mZnNldCAmJiB0
eXBlID09IG90aGVyLnR5cGUgJiYgbWFya2VyID09IG90aGVyLm1hcmtlcjsKKyAgICAgICAgcmV0
dXJuIHN0YXJ0T2Zmc2V0ID09IG90aGVyLnN0YXJ0T2Zmc2V0ICYmIGVuZE9mZnNldCA9PSBvdGhl
ci5lbmRPZmZzZXQgJiYgdHlwZSA9PSBvdGhlci50eXBlICYmIG1hcmtlciA9PSBvdGhlci5tYXJr
ZXIgJiYgaGlnaGxpZ2h0TmFtZSA9PSBvdGhlci5oaWdobGlnaHROYW1lOwogICAgIH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5k
ZXggYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNmNGU4MTFjM2VhMWI5M2ZjMi4uM2NiZGQwZWJiZGVl
Njc0ZjQ2NThmNjcxYjI3MGY0MjRkYTMxODRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAgLTU1LDQ3ICs1NSw2IEBAIHN0cnVjdCBT
ZWxlY3Rpb25EYXRhIHsKICAgICBSZW5kZXJCbG9ja01hcCBibG9ja3M7CiB9OwogCi1jbGFzcyBT
ZWxlY3Rpb25JdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgU2VsZWN0aW9uSXRlcmF0b3IoUmVuZGVy
T2JqZWN0KiBzdGFydCkKLSAgICAgICAgOiBtX2N1cnJlbnQoc3RhcnQpCi0gICAgewotICAgICAg
ICBjaGVja0ZvclNwYW5uZXIoKTsKLSAgICB9Ci0gICAgCi0gICAgUmVuZGVyT2JqZWN0KiBjdXJy
ZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2N1cnJlbnQ7Ci0gICAgfQotICAg
IAotICAgIFJlbmRlck9iamVjdCogbmV4dCgpCi0gICAgewotICAgICAgICBSZW5kZXJPYmplY3Qq
IGN1cnJlbnRTcGFuID0gbV9zcGFubmVyU3RhY2suaXNFbXB0eSgpID8gbnVsbHB0ciA6IG1fc3Bh
bm5lclN0YWNrLmxhc3QoKS0+c3Bhbm5lcigpOwotICAgICAgICBtX2N1cnJlbnQgPSBtX2N1cnJl
bnQtPm5leHRJblByZU9yZGVyKGN1cnJlbnRTcGFuKTsKLSAgICAgICAgY2hlY2tGb3JTcGFubmVy
KCk7Ci0gICAgICAgIGlmICghbV9jdXJyZW50ICYmIGN1cnJlbnRTcGFuKSB7Ci0gICAgICAgICAg
ICBSZW5kZXJPYmplY3QqIHBsYWNlaG9sZGVyID0gbV9zcGFubmVyU3RhY2subGFzdCgpOwotICAg
ICAgICAgICAgbV9zcGFubmVyU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICAgICAgbV9jdXJy
ZW50ID0gcGxhY2Vob2xkZXItPm5leHRJblByZU9yZGVyKCk7Ci0gICAgICAgICAgICBjaGVja0Zv
clNwYW5uZXIoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9jdXJyZW50OwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICB2b2lkIGNoZWNrRm9yU3Bhbm5lcigpCi0gICAgewotICAgICAgICBp
ZiAoIWlzPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyPihtX2N1cnJlbnQpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvJiBwbGFjZWhvbGRlciA9IGRvd25jYXN0
PFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyPigqbV9jdXJyZW50KTsKLSAgICAg
ICAgbV9zcGFubmVyU3RhY2suYXBwZW5kKCZwbGFjZWhvbGRlcik7Ci0gICAgICAgIG1fY3VycmVu
dCA9IHBsYWNlaG9sZGVyLnNwYW5uZXIoKTsKLSAgICB9Ci0KLSAgICBSZW5kZXJPYmplY3QqIG1f
Y3VycmVudCB7IG51bGxwdHIgfTsKLSAgICBWZWN0b3I8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVy
UGxhY2Vob2xkZXIqPiBtX3NwYW5uZXJTdGFjazsKLX07Ci0KIH0gLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQogCiBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckFmdGVyUG9zaXRpb24oY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zaWduZWQgb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCmluZGV4IDg5YWViZTc0NjE4NGZlM2Vm
NTRkNThmYzU3MDEyZmFkMDM1OTFmYzguLjAwY2JlYjFhNjM5MWEyZDdmNmFlNzJmODY2MjY4ZDY2
NmJlOWExMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25S
YW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VE
YXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJSZW5k
ZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlclNlbGVj
dGlvbkluZm8uaCIKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpAQCAtMzgsNiArMzks
NDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZWxlY3Rpb25JdGVyYXRvciB7
CitwdWJsaWM6CisgICAgU2VsZWN0aW9uSXRlcmF0b3IoUmVuZGVyT2JqZWN0KiBzdGFydCkKKyAg
ICAgICAgOiBtX2N1cnJlbnQoc3RhcnQpCisgICAgeworICAgICAgICBjaGVja0ZvclNwYW5uZXIo
KTsKKyAgICB9CisgICAgCisgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50KCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2N1cnJlbnQ7CisgICAgfQorICAgIAorICAgIFJlbmRlck9iamVj
dCogbmV4dCgpCisgICAgeworICAgICAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnRTcGFuID0gbV9z
cGFubmVyU3RhY2suaXNFbXB0eSgpID8gbnVsbHB0ciA6IG1fc3Bhbm5lclN0YWNrLmxhc3QoKS0+
c3Bhbm5lcigpOworICAgICAgICBtX2N1cnJlbnQgPSBtX2N1cnJlbnQtPm5leHRJblByZU9yZGVy
KGN1cnJlbnRTcGFuKTsKKyAgICAgICAgY2hlY2tGb3JTcGFubmVyKCk7CisgICAgICAgIGlmICgh
bV9jdXJyZW50ICYmIGN1cnJlbnRTcGFuKSB7CisgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBs
YWNlaG9sZGVyID0gbV9zcGFubmVyU3RhY2subGFzdCgpOworICAgICAgICAgICAgbV9zcGFubmVy
U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgbV9jdXJyZW50ID0gcGxhY2Vob2xkZXIt
Pm5leHRJblByZU9yZGVyKCk7CisgICAgICAgICAgICBjaGVja0ZvclNwYW5uZXIoKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gbV9jdXJyZW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGNoZWNrRm9yU3Bhbm5lcigpCisgICAgeworICAgICAgICBpZiAoIWlzPFJlbmRlck11bHRp
Q29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyPihtX2N1cnJlbnQpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBhdXRvJiBwbGFjZWhvbGRlciA9IGRvd25jYXN0PFJlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyPigqbV9jdXJyZW50KTsKKyAgICAgICAgbV9zcGFubmVyU3RhY2su
YXBwZW5kKCZwbGFjZWhvbGRlcik7CisgICAgICAgIG1fY3VycmVudCA9IHBsYWNlaG9sZGVyLnNw
YW5uZXIoKTsKKyAgICB9CisKKyAgICBSZW5kZXJPYmplY3QqIG1fY3VycmVudCB7IG51bGxwdHIg
fTsKKyAgICBWZWN0b3I8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIqPiBtX3Nw
YW5uZXJTdGFjazsKK307CisKIHN0cnVjdCBPbGRTZWxlY3Rpb25EYXRhOwogICAgIAogY2xhc3Mg
U2VsZWN0aW9uUmFuZ2VEYXRhIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBhMGQ4ZTc1ZDdlZWUyZDZhYzU4ZTA2OGVlMTgyNjRkNDhkYWY2ZDEz
Li4zZTdjMmQyMDYyMDRlYTEwNjM0YzE1YzM4NWEzMDY2OGU3YjI5ODUxIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTktMTItMTYgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBQYWludCBoaWdobGlnaHRzIHNwZWNpZmllZCBpbiBDU1MgSGlnaGxpZ2h0IEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzE4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwYW5kIE1hcmtl
ZFRleHQgdG8gaGFuZGxlIGhpZ2hsaWdodCBhbmQgdGhlaXIgbmFtZWQgc3R5bGVzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisKIDIwMTktMTItMTcgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRl
bmluZy4gTWFyayBXZWJLaXQuRm9jdXNlZEZyYW1lQWZ0ZXJDcmFzaCBhcyB0aW1lb3V0CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5jcHAKaW5kZXgg
NWExNjJjNjBlYzk2ZjBkYzJhZmEwNjgwZTNjMWQ4M2QwZGJmZTgwZi4uMDY4MWNhYjQzNjdjNTIz
NmE5YjU2NDI4YWQ2ZjEwNzQ1YmE5MTc4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcApAQCAtNTUsNiArNTUsOCBAQCBzdGQ6Om9zdHJl
YW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgTWFya2VkVGV4dDo6VHlwZSB0eXBlKQog
ICAgICAgICByZXR1cm4gb3MgPDwgIlNwZWxsaW5nRXJyb3IiOwogICAgIGNhc2UgTWFya2VkVGV4
dDo6VGV4dE1hdGNoOgogICAgICAgICByZXR1cm4gb3MgPDwgIlRleHRNYXRjaCI7CisgICAgY2Fz
ZSBNYXJrZWRUZXh0OjpIaWdobGlnaHQ6CisgICAgICAgIHJldHVybiBvcyA8PCAiSGlnaGxpZ2h0
IjsKICAgICBjYXNlIE1hcmtlZFRleHQ6OlVubWFya2VkOgogICAgICAgICByZXR1cm4gb3MgPDwg
IlVubWFya2VkIjsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA2ZGRm
YTNhOTJhNjQyMDA5MzMyMzkwMzQ1YTE0OWRmOGU1ZDk3YTM3Li41YmVlZWUzNWVmMDBhN2Q4MmRj
YTUyMDBlOTZmMmJjNjNmMTBhNjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxOS0xMi0xNiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFBhaW50IGhpZ2hsaWdodHMgc3BlY2lmaWVkIGluIENTUyBI
aWdobGlnaHQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDUzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0
LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNy
b3NzLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxOS0xMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlLXN5bmMgd2ViLXBsYXRmb3JtLXRlc3RzL3Jlc291
cmNlcyBmcm9tIHVwc3RyZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1h
Y3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFj
cm9zcy1lbGVtZW50cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZjQzYTQ4NjYyODVkZjQy
MzJiZDEzZGQ0MTliMzM1MGIxYzkyMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICNzdHls
ZTEgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdy
ZWVuOworICAgIH0KKyAgICAjc3R5bGUyIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1
ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICAjc3R5bGUzIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGJvZHk+CisgICAgICAgIE9uZSA8c3BhbiBp
ZD0ic3R5bGUxIj50d288L3NwYW4+IHRoPHNwYW4gaWQ9InN0eWxlMiI+cmVlCisgICAgICAgIGZv
dXI8L3NwYW4+IGZpdmUgPHNwYW4gaWQ9InN0eWxlMiI+c2l4CisgICAgICAgIHNldmVuPC9zcGFu
PiBlaWdoPHNwYW4gaWQ9InN0eWxlMyI+dCBuaW5lCisgICAgICAgIHRlbiBlbGV2ZW4gdHdlbHZl
CisgICAgICAgIHRoaXJ0ZWVuIGZvdTwvc3Bhbj5ydGVlbiBmaWZ0ZWVuCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZkZmY1YTRkYjBmMGI2YTFjNDIwNjNhYWY3Nzk3M2FjYmQyNzA3Y2IKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbApA
QCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKyAgPHRpdGxlPkN1c3RvbSBoaWdobGlnaHQgcHNldWRvIGVsZW1l
bnRzIGFjcm9zcyBlbGVtZW50cy48L3RpdGxlPgorICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtaGlnaGxpZ2h0LWFwaS0xLyNjcmVhdGluZy1oaWdo
bGlnaHRzIj4KKyAgPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0
ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iSGlnaGxpZ2h0cyBzaG91
bGQgYmUgYWJsZSB0byBiZSBzcGVjaWZpZWQgYWNyb3NzIGVsZW1lbnRzLiI+CisgICAgPHN0eWxl
PgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICA6Omhp
Z2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDIpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Ymx1ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxl
LWhpZ2hsaWdodDMpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAg
ICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAg
PGJvZHk+CisgICAgICAgIDxzcGFuIGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwvc3Bhbj4KKyAg
ICAgICAgPHNwYW4gaWQ9InRleHQyIj5mb3VyIGZpdmUgc2l4PC9zcGFuPgorICAgICAgICA8c3Bh
biBpZD0idGV4dDMiPnNldmVuIGVpZ2h0IG5pbmU8L3NwYW4+CisgICAgICAgIDxzcGFuIGlkPSJ0
ZXh0NCI+dGVuIGVsZXZlbiB0d2VsdmU8L3NwYW4+CisgICAgICAgIDxzcGFuIGlkPSJ0ZXh0NSI+
dGhpcnRlZW4gZm91cnRlZW4gZmlmdGVlbjwvc3Bhbj4KKworICAgIDxzY3JpcHQ+CisgICAgICAg
IGxldCB0ZXh0RWxlbWVudDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDEnKTsKKyAg
ICAgICAgbGV0IHRleHRFbGVtZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0Micp
OworICAgICAgICBsZXQgdGV4dEVsZW1lbnQzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
eHQzJyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGV4dDQnKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50NSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0ZXh0NScpOworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDEgPSBuZXcg
SGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0
RWxlbWVudDEsIHN0YXJ0T2Zmc2V0OiA0LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50MSwgZW5k
T2Zmc2V0OiA3fSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMiA9IG5ldyBI
aWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRF
bGVtZW50MSwgc3RhcnRPZmZzZXQ6IDEwLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50MiwgZW5k
T2Zmc2V0OiA0fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMi5hZGQobmV3IFN0YXRp
Y1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQyLCBzdGFydE9mZnNldDogMTAsIGVu
ZENvbnRhaW5lcjogdGV4dEVsZW1lbnQzLCBlbmRPZmZzZXQ6IDV9KSk7CisKKyAgICAgICAgbGV0
IGhpZ2hsaWdodFJhbmdlR3JvdXAzID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRp
Y1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQzLCBzdGFydE9mZnNldDogMTAsIGVu
ZENvbnRhaW5lcjogdGV4dEVsZW1lbnQ1LCBlbmRPZmZzZXQ6IDEyfSkpOworCisgICAgICAgIENT
Uy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQxIiwgaGlnaGxpZ2h0UmFuZ2VHcm91
cDEpOworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MiIsIGhp
Z2hsaWdodFJhbmdlR3JvdXAyKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxl
LWhpZ2hsaWdodDMiLCBoaWdobGlnaHRSYW5nZUdyb3VwMyk7CisgICAgPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWNkMDJjNDc1ODZhMzE0M2MwNzBjYTczMTY2NmQxNWNjYTcyYjJiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICNz
dHlsZTEgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9y
OmdyZWVuOworICAgIH0KKyAgICAjc3R5bGUyIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Ymx1ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICAjc3R5bGUzIHsKKyAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAg
ICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGJvZHk+CisgICAgICAgIE88c3BhbiBp
ZD0ic3R5bGUxIj5uPC9zcGFuPmU8c3BhbiBpZD0ic3R5bGUyIj4gPC9zcGFuPnQ8c3BhbiBpZD0i
c3R5bGUyIj53PC9zcGFuPm88c3BhbiBpZD0ic3R5bGUzIj4gPC9zcGFuPnQ8c3BhbiBpZD0ic3R5
bGUzIj5oPC9zcGFuPnJlPHNwYW4gaWQ9InN0eWxlMyI+ZTwvc3Bhbj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9o
aWdobGlnaHQtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2MWFkNzdlMGQ1YjA3YjFlNzIyOWFmYjQ1
NGQyZmM3YTU4ZGUwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4
dC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICA8dGl0bGU+TXVsdGlwbGUgY3VzdG9tIGhpZ2hs
aWdodCBwc2V1ZG8gZWxlbWVudHMuPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jY3JlYXRpbmctaGln
aGxpZ2h0cyI+CisgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10ZXh0LWV4cGVj
dGVkLmh0bWwiPgorICA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik11bHRpcGxlIGhpZ2hs
aWdodHMgc2hvdWxkIGJlIGFibGUgdG8gYmUgc3BlY2lmaWVkLiI+CisgICAgPHN0eWxlPgorICAg
IDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdo
dChleGFtcGxlLWhpZ2hsaWdodDIpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsK
KyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hs
aWdodDMpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xv
cjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGJvZHk+
CisgICAgICAgIDxzcGFuIGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwvc3Bhbj4KKworCisgICAg
PHNjcmlwdD4KKyAgICAgICAgbGV0IHRleHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RleHQxJyk7CisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMSA9IG5ldyBIaWdo
bGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVt
ZW50LCBzdGFydE9mZnNldDogMSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zmc2V0
OiAyfSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMiA9IG5ldyBIaWdobGln
aHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50
LCBzdGFydE9mZnNldDogMywgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiA0
fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMi5hZGQobmV3IFN0YXRpY1JhbmdlKHtz
dGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA1LCBlbmRDb250YWluZXI6
IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDZ9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJh
bmdlR3JvdXAzID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFy
dENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA3LCBlbmRDb250YWluZXI6IHRl
eHRFbGVtZW50LCBlbmRPZmZzZXQ6IDh9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAz
LmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRP
ZmZzZXQ6IDksIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogMTB9KSk7Cisg
ICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAzLmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29u
dGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDEyLCBlbmRDb250YWluZXI6IHRleHRF
bGVtZW50LCBlbmRPZmZzZXQ6IDEzfSkpOworICAgICAgICAKKworICAgICAgICBDU1MuaGlnaGxp
Z2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hsaWdodFJhbmdlR3JvdXAxKTsKKyAg
ICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDIiLCBoaWdobGlnaHRS
YW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGln
aHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385909</attachid>
            <date>2019-12-17 12:24:49 -0800</date>
            <delta_ts>2019-12-18 16:49:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191217122449.patch</filename>
            <type>text/plain</type>
            <size>31132</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U5YTlhNTA2ODhmYTk1
Y2FjNTE4YjRiYTgxZGZjMzA1MDE5YTZhYi4uZDFmMWFiZGM0YTBlNzExZWJiZTkyOWZjODZjOTlk
YWMwOGU1MDlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEyLTE2ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3Mt
ZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQuaHRtbAorCisgICAgICAg
IFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJlc2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJl
bmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLiAgCisKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJl
ckFmdGVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cmVuZGVy
ZXJIaWdobGlnaHRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpoaWdobGlnaHRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpoaWdobGlnaHRTdGFy
dEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpyZXNvbHZlU3R5
bGVGb3JNYXJrZWRUZXh0KToKKworICAgICAgICBVc2UgdGhlIGhpZ2hsaWdodCBuYW1lIGZyb20g
dGhlIEhpZ2hsaWdodFJhbmdlR3JvdXAgdG8gb2J0YWluIHRoZSBzdHlsZSBmcm9tIHRoZSByZW5k
ZXJlci4KKworICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRl
eHRzRm9ySGlnaGxpZ2h0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaDoKKworICAgICAgICBSZW5kZXIgdGhlIGhpZ2hsaWdodHMgd2hlbiBwYWludGluZyB0ZXh0
LiBEZXRlcm1pbmUgaWYgYSBoaWdobGlnaHQgaXMgcHJlc2VudCBpbiB0aGUgY3VycmVudCBSZW5k
ZXJPYmplY3QsIGFuZCAKKyAgICAgICAgYWRkIGFkZGl0aW9uYWwgTWFya2VkVGV4dCB0byBiZSBy
ZW5kZXJlZCB3aGVuIHBhaW50aW5nCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9NYXJr
ZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1YmRpdmlkZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL01hcmtlZFRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmtlZFRleHQ6Om9wZXJh
dG9yPT0gY29uc3QpOgorCisgICAgICAgIEV4cGFuZCBNYXJrZWRUZXh0IHRvIHRha2UgYSBzdHls
ZSBuYW1lLgorCisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uSXRlcmF0b3I6OlNlbGVjdGlvbkl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkl0ZXJhdG9yOjpjdXJyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkl0
ZXJhdG9yOjpjaGVja0ZvclNwYW5uZXIpOgorCiAyMDE5LTEyLTE3ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBBU1NFUlRJT04gRkFJTEVE
OiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKSA9PSBtX2dlbmVyYXRpb24KQEAg
LTE3MTMsNiArMTc2MCw4IEBACiAgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJ
bmxpbmVDb250ZW50LmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OiBjb25zdCk6CiAK
KyAgICAgICAgTW92ZSBzb21lIGhlbHBmdWwgZnVuY3Rpb25zIHNvIHRoZXkgYXJlIGFjY2Vzc2li
bGUuCisKIDIwMTktMTItMTIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIERlbnkgbWFjaCBsb29rdXAgYWNjZXNzIHRvIGNvbnRlbnQgZmlsdGVy
IHNlcnZpY2UgaW4gdGhlIFdlYkNvbnRlbnQgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRNYXAuaAppbmRleCBmZjk4Y2MzYmE1MzJmZTAxZGU0
MDc1Njg5YTBiOTIzNjU3ZmNlZWYyLi4xYTQ4NTdiMjVjNThmZThmYzRhNDE1OWFmNGE4OTc3ZWQ5
ZmI3YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdo
bGlnaHRNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGln
aHRNYXAuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmUoY29uc3Qg
U3RyaW5nJik7CiAgICAgCiAgICAgUmVmUHRyPEhpZ2hsaWdodFJhbmdlR3JvdXA+IGdldEdyb3Vw
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KTsKKyAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgUmVm
PEhpZ2hsaWdodFJhbmdlR3JvdXA+PiYgbWFwKCkgY29uc3QgeyByZXR1cm4gbV9tYXA7IH0KICAg
ICAKIHByaXZhdGU6CiAgICAgSGlnaGxpZ2h0TWFwKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDQzM2EwNzRmNTAyNjQ3OGM3M2Jh
ZWVhNjEzYzMzNTg0ODkyZjUzMWMuLmZhN2U1N2RhMWRhZTM2NjVjNTUzNmQ4NTY1ZWU1NWJiZTE4
OTAxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAg
LTI4LDEwICsyOCwxMiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRWxl
bWVudFJ1bGVDb2xsZWN0b3IuaCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgogI2luY2x1ZGUg
IkV2ZW50UmVnaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJIaWdobGlnaHRNYXAuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94
U3R5bGUuaCIKQEAgLTQ2LDYgKzQ4LDggQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgi
CisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNlbGVjdGlv
blJhbmdlRGF0YS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0RGVjb3JhdGlv
blBhaW50ZXIuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgpAQCAtMTk0LDYgKzE5OCw2
NiBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNlbGVjdGlv
blN0YXRlKCkKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKKworc3RhdGljIFJlbmRlck9iamVjdCog
cmVuZGVyZXJBZnRlclBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2ln
bmVkIG9mZnNldCkKK3sKKyAgICBhdXRvKiBjaGlsZCA9IHJlbmRlcmVyLmNoaWxkQXQob2Zmc2V0
KTsKKyAgICByZXR1cm4gY2hpbGQgPyBjaGlsZCA6IHJlbmRlcmVyLm5leHRJblByZU9yZGVyQWZ0
ZXJDaGlsZHJlbigpOworfQorCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRl
eHRCb3g6OnJlbmRlcmVySGlnaGxpZ2h0U3RhdGUoUmVuZGVyT2JqZWN0KiBzdGFydE9iamVjdCwg
dW5zaWduZWQgLypzdGFydFBvcyovLCBSZW5kZXJPYmplY3QqIGVuZE9iamVjdCwgdW5zaWduZWQg
ZW5kUG9zKSBjb25zdAoreworICAgIGlmICgmcmVuZGVyZXIoKSA9PSBzdGFydE9iamVjdCB8fCBy
ZW5kZXJlcigpLmlzRGVzY2VuZGFudE9mKHN0YXJ0T2JqZWN0KSkgeworICAgICAgICBpZiAoc3Rh
cnRPYmplY3QgJiYgZW5kT2JqZWN0ICYmIHN0YXJ0T2JqZWN0ID09IGVuZE9iamVjdCkKKyAgICAg
ICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkJvdGg7CisgICAgICAgIGlmIChz
dGFydE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXJ0OworICAgIH0KKyAgICBpZiAoJnJlbmRlcmVyKCkgPT0gZW5kT2JqZWN0IHx8IHJlbmRlcmVy
KCkuaXNEZXNjZW5kYW50T2YoZW5kT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uRW5kOworCisgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQgPSBudWxs
cHRyOworICAgIGF1dG8qIHNlbGVjdGlvbkRhdGFFbmQgPSBlbmRPYmplY3Q7CisgICAgaWYgKHNl
bGVjdGlvbkRhdGFFbmQpCisgICAgICAgIHNlbGVjdGlvbkVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3Np
dGlvbigqc2VsZWN0aW9uRGF0YUVuZCwgZW5kUG9zKTsKKyAgICBTZWxlY3Rpb25JdGVyYXRvciBz
ZWxlY3Rpb25JdGVyYXRvcihzdGFydE9iamVjdCk7CisgICAgZm9yIChhdXRvKiBjdXJyZW50UmVu
ZGVyZXIgPSBzdGFydE9iamVjdDsgY3VycmVudFJlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAh
PSBlbmRPYmplY3Q7IGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkg
eworICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyID09IHN0YXJ0T2JqZWN0IHx8IGN1cnJlbnRS
ZW5kZXJlciA9PSBlbmRPYmplY3QpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KCFjdXJyZW50UmVuZGVyZXItPmNhbkJlU2VsZWN0aW9uTGVhZigpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmICgmcmVuZGVyZXIoKSA9PSBjdXJyZW50UmVuZGVyZXIpCisgICAg
ICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGU7CisgICAgfQorICAg
IHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmU7Cit9CisKK1JlbmRlck9iamVjdDo6
U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhdGUoUmVuZGVyT2JqZWN0
KiBzdGFydE9iamVjdCwgdW5zaWduZWQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZW5kT2JqZWN0
LCB1bnNpZ25lZCBlbmRQb3MpIGNvbnN0Cit7CisgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25T
dGF0ZSBzdGF0ZSA9IHJlbmRlcmVySGlnaGxpZ2h0U3RhdGUoc3RhcnRPYmplY3QsIHN0YXJ0UG9z
LCBlbmRPYmplY3QsIGVuZFBvcyk7CisgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhcnQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQgfHwgc3Rh
dGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKSB7CisKKyAgICAgICAgLy8gVGhlIHBv
c2l0aW9uIGFmdGVyIGEgaGFyZCBsaW5lIGJyZWFrIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFzdCBp
dHMgZW5kLgorICAgICAgICBBU1NFUlQoc3RhcnQoKSArIGxlbigpID49IChpc0xpbmVCcmVhaygp
ID8gMSA6IDApKTsKKyAgICAgICAgdW5zaWduZWQgbGFzdFNlbGVjdGFibGUgPSBzdGFydCgpICsg
bGVuKCkgLSAoaXNMaW5lQnJlYWsoKSA/IDEgOiAwKTsKKworICAgICAgICBib29sIHN0YXJ0ID0g
KHN0YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kICYmIHN0YXJ0UG9zID49IG1fc3Rh
cnQgJiYgc3RhcnRQb3MgPCBtX3N0YXJ0ICsgbV9sZW4pOworICAgICAgICBib29sIGVuZCA9IChz
dGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0ICYmIGVuZFBvcyA+IG1fc3RhcnQg
JiYgZW5kUG9zIDw9IGxhc3RTZWxlY3RhYmxlKTsKKyAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkK
KyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoOworICAgICAg
ICBlbHNlIGlmIChzdGFydCkKKyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25TdGFydDsKKyAgICAgICAgZWxzZSBpZiAoZW5kKQorICAgICAgICAgICAgc3RhdGUgPSBS
ZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZDsKKyAgICAgICAgZWxzZSBpZiAoKHN0YXRlID09IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uRW5kIHx8IHN0YXJ0UG9zIDwgbV9zdGFydCkgJiYgKHN0YXRl
ID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQgfHwgZW5kUG9zID4gbGFzdFNlbGVjdGFi
bGUpKQorICAgICAgICAgICAgc3RhdGUgPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkluc2lkZTsK
KyAgICAgICAgZWxzZSBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKQor
ICAgICAgICAgICAgc3RhdGUgPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmU7CisgICAgfQor
CisgICAgcmV0dXJuIHN0YXRlOworfQorCiBpbmxpbmUgY29uc3QgRm9udENhc2NhZGUmIElubGlu
ZVRleHRCb3g6OmxpbmVGb250KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29tYmluZWRUZXh0KCkg
PyBjb21iaW5lZFRleHQoKS0+dGV4dENvbWJpbmVGb250KCkgOiBsaW5lU3R5bGUoKS5mb250Q2Fz
Y2FkZSgpOwpAQCAtNTI0LDYgKzU4OCwxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAg
ICAgICAgICBwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbik7
CiAKICAgICAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtl
ZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsKKyAg
ICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaGlnaGxp
Z2h0QVBJRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBhdXRvIGhpZ2hsaWdodE1hcmtlZFRleHRz
ID0gY29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZTo6QmFja2dy
b3VuZCk7CisgICAgICAgICAgICBpZiAoIWhpZ2hsaWdodE1hcmtlZFRleHRzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoV1RGTW92ZShoaWdobGln
aHRNYXJrZWRUZXh0cykpOworICAgICAgICB9CiAjaWYgRU5BQkxFKFRFWFRfU0VMRUNUSU9OKQog
ICAgICAgICBpZiAoaGF2ZVNlbGVjdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcyAmJiAhY29u
dGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uTWFy
a2VkVGV4dCA9IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3goKnRoaXMpOwpAQCAt
NTU3LDYgKzYyNiwxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIG1hcmtlZFRl
eHRzLmFwcGVuZCh7IGNsYW1wZWRPZmZzZXQobV9zdGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKCkp
LCBNYXJrZWRUZXh0OjpVbm1hcmtlZCB9KTsKICAgICAgICAgaWYgKCFpc1ByaW50aW5nKSB7CiAg
ICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoY29sbGVjdE1hcmtlZFRleHRzRm9y
RG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kKSk7CisgICAgICAgICAg
ICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaGlnaGxp
Z2h0QVBJRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaGlnaGxpZ2h0TWFy
a2VkVGV4dHMgPSBjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNl
OjpGb3JlZ3JvdW5kKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFoaWdobGlnaHRNYXJrZWRU
ZXh0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZl
Y3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CisgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBib29sIHNob3VsZFBhaW50RHJhZ2dlZENvbnRlbnQgPSAhKHBhaW50SW5m
by5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24p
KTsKICAgICAgICAgICAgIGlmIChzaG91bGRQYWludERyYWdnZWRDb250ZW50KSB7CkBAIC02Njcs
NiArNzQxLDIzIEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6
OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKICAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0
YXJ0KSwgY2xhbXBlZE9mZnNldChlbmQpIH07CiB9CiAKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IElubGluZVRleHRCb3g6OmhpZ2hsaWdodFN0YXJ0RW5kKFJlbmRlck9iamVjdCogc3Rh
cnQsIHVuc2lnbmVkIHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVuZCwgdW5zaWduZWQgZW5kUG9z
KSBjb25zdAoreworICAgIGF1dG8gc3RhdGUgPSBoaWdobGlnaHRTdGF0ZShzdGFydCwgc3RhcnRQ
b3MsIGVuZCwgZW5kUG9zKTsKKyAgICAKKyAgICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25Ob25lKQorICAgICAgICByZXR1cm4geyAwLCAwfTsKKyAgICAKKyAgICBpZiAoc3Rh
dGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGUpCisgICAgICAgIHJldHVybiB7IDAs
IGNsYW1wZWRPZmZzZXQobV9zdGFydCArIG1fbGVuKSB9OworICAgIAorICAgIGlmIChzdGF0ZSA9
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0KQorICAgICAgICBlbmRQb3MgPSByZW5kZXJl
cigpLnRleHQoKS5sZW5ndGgoKTsKKyAgICBlbHNlIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvbkVuZCkKKyAgICAgICAgc3RhcnRQb3MgPSAwOworICAgIHJldHVybiB7IGNsYW1w
ZWRPZmZzZXQoc3RhcnRQb3MpLCBjbGFtcGVkT2Zmc2V0KGVuZFBvcykgfTsKK30KKwogYm9vbCBJ
bmxpbmVUZXh0Qm94OjpoYXNNYXJrZXJzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sbGVjdE1h
cmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKS5z
aXplKCk7CkBAIC03NzAsNiArODYxLDM0IEBAIGF1dG8gSW5saW5lVGV4dEJveDo6cmVzb2x2ZVN0
eWxlRm9yTWFya2VkVGV4dChjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zCiAgICAg
Y2FzZSBNYXJrZWRUZXh0OjpTcGVsbGluZ0Vycm9yOgogICAgIGNhc2UgTWFya2VkVGV4dDo6VW5t
YXJrZWQ6CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWFya2VkVGV4dDo6SGlnaGxpZ2h0Ogor
ICAgICAgICB7CisgICAgICAgIGF1dG8gcmVuZGVyU3R5bGUgPSBwYXJlbnQoKS0+cmVuZGVyZXIo
KS5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHsgUHNldWRvSWQ6OkhpZ2hsaWdodCwgbWFya2VkVGV4
dC5oaWdobGlnaHROYW1lfSwgJnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAocmVuZGVyU3R5bGUpIHsKKyAgICAgICAgICAgICAgICBz
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJTdHlsZS0+YmFja2dyb3VuZENvbG9yKCk7Cisg
ICAgICAgICAgICAgICAgc3R5bGUudGV4dFN0eWxlcy5maWxsQ29sb3IgPSByZW5kZXJTdHlsZS0+
Y29tcHV0ZWRTdHJva2VDb2xvcigpOworICAgICAgICAgICAgICAgIHN0eWxlLnRleHRTdHlsZXMu
c3Ryb2tlQ29sb3IgPSByZW5kZXJTdHlsZS0+Y29tcHV0ZWRTdHJva2VDb2xvcigpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gY29sb3IgPSByZW5kZXJTdHlsZS0+dmlz
aXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5V2Via2l0VGV4dEZp
bGxDb2xvcik7CisgICAgICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUgPSByZW5kZXJT
dHlsZS0+dGV4dERlY29yYXRpb25TdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8gZGVjb3Jh
dGlvbnMgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKKworICAgICAg
ICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJs
aW5lKSkgeworICAgICAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51
bmRlcmxpbmVDb2xvciA9IGNvbG9yOworICAgICAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVj
b3JhdGlvblN0eWxlcy51bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uOjpPdmVybGluZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERl
Y29yYXRpb25TdHlsZXMub3ZlcmxpbmVDb2xvciA9IGNvbG9yOworICAgICAgICAgICAgICAgICAg
ICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0
eWxlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSkgeworICAgICAgICAgICAgICAg
ICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9yID0gY29sb3I7
CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJv
dWdoU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWFya2VkVGV4dDo6RHJh
Z2dlZENvbnRlbnQ6CiAgICAgICAgIHN0eWxlLmFscGhhID0gMC4yNTsKICAgICAgICAgYnJlYWs7
CkBAIC05NjMsNiArMTA4MiwzOCBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6
Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludAogICAgIHJldHVy
biBtYXJrZWRUZXh0czsKIH0KIAorCitWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6
Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZSBwaGFzZSkgY29u
c3QKK3sKKyAgICBBU1NFUlRfQVJHKHBoYXNlLCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6QmFj
a2dyb3VuZCB8fCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCB8fCBwaGFzZSA9
PSBUZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbik7CisKKyAgICBVTlVTRURfUEFSQU0ocGhhc2Up
OworICAgIAorICAgIGlmICghcmVuZGVyZXIoKS50ZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzOworICAgIGZvciAoYXV0
byYgaGlnaGxpZ2h0R3JvdXAgOiByZW5kZXJlcigpLmRvY3VtZW50KCkuaGlnaGxpZ2h0TWFwKCku
bWFwKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzdGF0aWNSYW5nZSA6IGhpZ2hsaWdodEdyb3Vw
LnZhbHVlLT5yYW5nZXMoKSkgeworICAgICAgICAgICAgUG9zaXRpb24gc3RhcnRQb3MgPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHN0
YXRpY1JhbmdlLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIFBvc2l0aW9uIGVuZFBvcyA9
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdGF0aWNSYW5nZS0+ZW5kQ29udGFpbmVyKCks
IHN0YXRpY1JhbmdlLT5lbmRPZmZzZXQoKSk7CisKKyAgICAgICAgICAgIGlmIChzdGFydFBvcy5p
c05vdE51bGwoKSAmJiBlbmRQb3MuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5k
ZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5k
ZXJlcigpOworICAgICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0UG9zLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBlbmRS
ZW5kZXJlciA9IGVuZFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgICAgICAg
ICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0g
MCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0byBbaGlnaGxpZ2h0U3Rh
cnQsIGhpZ2hsaWdodEVuZF0gPSBoaWdobGlnaHRTdGFydEVuZChzdGFydFJlbmRlcmVyLCBzdGFy
dE9mZnNldCwgZW5kUmVuZGVyZXIsIGVuZE9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKGhp
Z2hsaWdodFN0YXJ0IDwgaGlnaGxpZ2h0RW5kKQorICAgICAgICAgICAgICAgICAgICBtYXJrZWRU
ZXh0cy5hcHBlbmQoeyBoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0RW5kLCBNYXJrZWRUZXh0OjpI
aWdobGlnaHQsIG51bGxwdHIsIGhpZ2hsaWdodEdyb3VwLmtleX0pOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtYXJrZWRUZXh0czsKK30KKwogRmxvYXRQb2lu
dCBJbmxpbmVUZXh0Qm94Ojp0ZXh0T3JpZ2luRnJvbUJveFJlY3QoY29uc3QgRmxvYXRSZWN0JiBi
b3hSZWN0KSBjb25zdAogewogICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IGJveFJlY3QueCgp
LCBib3hSZWN0LnkoKSArIGxpbmVGb250KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggNWNhMmJjODYxMzZiNmQ5
MzI2ODcyOGJkYWY4NzI5MmU4ODU4ZDY1Yy4uNTBmODc4ODViOWZiM2Y5OTVlNjM4MTFjNzMyNjkz
YjdmYTdkMTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBA
IC0xMjEsNiArMTIxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbFNl
bGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmVkIGVuZFBvcykgY29uc3Q7CiAg
ICAgYm9vbCBpc1NlbGVjdGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBv
c2l0aW9uKSBjb25zdDsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBzZWxlY3Rp
b25TdGFydEVuZCgpIGNvbnN0OworICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGhp
Z2hsaWdodFN0YXJ0RW5kKFJlbmRlck9iamVjdCosIHVuc2lnbmVkLCBSZW5kZXJPYmplY3QqLCB1
bnNpZ25lZCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20pIG92ZXJyaWRlOwpAQCAtMTMyLDYgKzEzMyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZWxldGVMaW5lKCkgZmluYWw7CiAgICAgdm9pZCBleHRyYWN0TGluZSgpIGZpbmFsOwogICAgIHZv
aWQgYXR0YWNoTGluZSgpIGZpbmFsOworICAgIAorICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
U3RhdGUgcmVuZGVyZXJIaWdobGlnaHRTdGF0ZShSZW5kZXJPYmplY3QqICwgdW5zaWduZWQgLCBS
ZW5kZXJPYmplY3QqICwgdW5zaWduZWQpIGNvbnN0OworICAgIFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUgaGlnaGxpZ2h0U3RhdGUoUmVuZGVyT2JqZWN0KiwgdW5zaWduZWQsIFJlbmRlck9i
amVjdCosIHVuc2lnbmVkKSBjb25zdDsKIAogcHVibGljOgogICAgIFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBmaW5hbDsKQEAgLTE2OSw2ICsxNzMsNyBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRy
YWdnZWRDb250ZW50KCk7CiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0
c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZSkgY29uc3Q7CisgICAgVmVjdG9yPE1h
cmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2Up
IGNvbnN0OwogCiAgICAgTWFya2VkVGV4dFN0eWxlIGNvbXB1dGVTdHlsZUZvclVubWFya2VkTWFy
a2VkVGV4dChjb25zdCBQYWludEluZm8mKSBjb25zdDsKICAgICBTdHlsZWRNYXJrZWRUZXh0IHJl
c29sdmVTdHlsZUZvck1hcmtlZFRleHQoY29uc3QgTWFya2VkVGV4dCYsIGNvbnN0IE1hcmtlZFRl
eHRTdHlsZSYgYmFzZVN0eWxlLCBjb25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9NYXJrZWRUZXh0LmNwcAppbmRleCBhNzkxOTJlMjhhZTE5OTk2ODZiNjI2NTdjODkwZjU3
YjJjODRlNTYyLi4wNDRkZWZhZDA1NmVjY2VmMTZkODFiZTA3MjhlZjIwOTkzMTY3YWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCwx
MiArNzUsMTIgQEAgVmVjdG9yPE1hcmtlZFRleHQ+IHN1YmRpdmlkZShjb25zdCBWZWN0b3I8TWFy
a2VkVGV4dD4mIG1hcmtlZFRleHRzLCBPdmVybGFwU3RyYXQKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyb250bW9zdCA9IGo7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChmcm9udG1vc3QpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRT
b0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50
eXBlLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPm1hcmtlciB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVl
LCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbKmZyb250bW9z
dF0ubWFya2VkVGV4dC0+bWFya2VyLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPmhp
Z2hsaWdodE5hbWV9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIGFwcGVuZGVkIG1hcmtlZCB0ZXh0cyBtYXkgbm90IGJlIGluIHBhaW50IG9yZGVyLiBXZSB3
aWxsIGZpeCB0aGlzIHVwIGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4KICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgaTsgKytqKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghcHJvY2Vzc2VkTWFya2VkVGV4dHMuY29udGFpbnMob2Zmc2V0c1tqXS5tYXJrZWRU
ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zh
ciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT50eXBlLCBvZmZzZXRz
W2pdLm1hcmtlZFRleHQtPm1hcmtlciB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1tqXS5tYXJr
ZWRUZXh0LT50eXBlLCBvZmZzZXRzW2pdLm1hcmtlZFRleHQtPm1hcmtlciwgb2Zmc2V0c1tqXS5t
YXJrZWRUZXh0LT5oaWdobGlnaHROYW1lIH0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG9mZnNldFNvRmFyID0gb2Zmc2V0c1tpXS52YWx1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCmluZGV4IGIyYjVhYTBmZmYwZDdlNjU0ZDE0Mzgy
MDhjYjlhYmEyYzdkYWQ4MmEuLjczYzA2MjExZmU0YWE0MzMyYTJiODI4NDAxYzljYWQxOWYwOTFk
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsNiArNDEs
NyBAQCBzdHJ1Y3QgTWFya2VkVGV4dCB7CiAgICAgICAgIFNwZWxsaW5nRXJyb3IsCiAgICAgICAg
IFRleHRNYXRjaCwKICAgICAgICAgRGljdGF0aW9uQWx0ZXJuYXRpdmVzLAorICAgICAgICBIaWdo
bGlnaHQsCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gRklYTUU6IFNlZSA8
cmRhcjovL3Byb2JsZW0vODkzMzM1Mj4uIEFsc28sIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZB
TUlMWSktZ3VhcmQuCiAgICAgICAgIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsCkBA
IC01MSwxMiArNTMsMTMgQEAgc3RydWN0IE1hcmtlZFRleHQgewogICAgIHVuc2lnbmVkIGVuZE9m
ZnNldDsKICAgICBUeXBlIHR5cGU7CiAgICAgY29uc3QgUmVuZGVyZWREb2N1bWVudE1hcmtlciog
bWFya2VyIHsgbnVsbHB0ciB9OworICAgIFN0cmluZyBoaWdobGlnaHROYW1lIHsgfTsKIAogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGVuZE9mZnNldCA8PSBzdGFydE9mZnNldDsg
fQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXJrZWRUZXh0JiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFy
a2VkVGV4dCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gc3RhcnRPZmZzZXQg
PT0gb3RoZXIuc3RhcnRPZmZzZXQgJiYgZW5kT2Zmc2V0ID09IG90aGVyLmVuZE9mZnNldCAmJiB0
eXBlID09IG90aGVyLnR5cGUgJiYgbWFya2VyID09IG90aGVyLm1hcmtlcjsKKyAgICAgICAgcmV0
dXJuIHN0YXJ0T2Zmc2V0ID09IG90aGVyLnN0YXJ0T2Zmc2V0ICYmIGVuZE9mZnNldCA9PSBvdGhl
ci5lbmRPZmZzZXQgJiYgdHlwZSA9PSBvdGhlci50eXBlICYmIG1hcmtlciA9PSBvdGhlci5tYXJr
ZXIgJiYgaGlnaGxpZ2h0TmFtZSA9PSBvdGhlci5oaWdobGlnaHROYW1lOwogICAgIH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5k
ZXggYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNmNGU4MTFjM2VhMWI5M2ZjMi4uZmYwMTQyMWIwYjkw
OGY2ZTU0ZWU3Y2Y0NDM1NzcyMmU2OWVhYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAgLTU1LDQ4ICs1NSw0MSBAQCBzdHJ1Y3Qg
U2VsZWN0aW9uRGF0YSB7CiAgICAgUmVuZGVyQmxvY2tNYXAgYmxvY2tzOwogfTsKIAotY2xhc3Mg
U2VsZWN0aW9uSXRlcmF0b3IgewotcHVibGljOgotICAgIFNlbGVjdGlvbkl0ZXJhdG9yKFJlbmRl
ck9iamVjdCogc3RhcnQpCi0gICAgICAgIDogbV9jdXJyZW50KHN0YXJ0KQotICAgIHsKLSAgICAg
ICAgY2hlY2tGb3JTcGFubmVyKCk7Ci0gICAgfQotICAgIAotICAgIFJlbmRlck9iamVjdCogY3Vy
cmVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9jdXJyZW50OwotICAgIH0KLSAg
ICAKLSAgICBSZW5kZXJPYmplY3QqIG5leHQoKQotICAgIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0
KiBjdXJyZW50U3BhbiA9IG1fc3Bhbm5lclN0YWNrLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3Nw
YW5uZXJTdGFjay5sYXN0KCktPnNwYW5uZXIoKTsKLSAgICAgICAgbV9jdXJyZW50ID0gbV9jdXJy
ZW50LT5uZXh0SW5QcmVPcmRlcihjdXJyZW50U3Bhbik7Ci0gICAgICAgIGNoZWNrRm9yU3Bhbm5l
cigpOwotICAgICAgICBpZiAoIW1fY3VycmVudCAmJiBjdXJyZW50U3BhbikgewotICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBwbGFjZWhvbGRlciA9IG1fc3Bhbm5lclN0YWNrLmxhc3QoKTsKLSAg
ICAgICAgICAgIG1fc3Bhbm5lclN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAgIG1fY3Vy
cmVudCA9IHBsYWNlaG9sZGVyLT5uZXh0SW5QcmVPcmRlcigpOwotICAgICAgICAgICAgY2hlY2tG
b3JTcGFubmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fY3VycmVudDsKLSAgICB9
Cit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotcHJpdmF0ZToKLSAgICB2b2lkIGNoZWNrRm9y
U3Bhbm5lcigpCi0gICAgewotICAgICAgICBpZiAoIWlzPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyPihtX2N1cnJlbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBh
dXRvJiBwbGFjZWhvbGRlciA9IGRvd25jYXN0PFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyPigqbV9jdXJyZW50KTsKLSAgICAgICAgbV9zcGFubmVyU3RhY2suYXBwZW5kKCZwbGFj
ZWhvbGRlcik7Ci0gICAgICAgIG1fY3VycmVudCA9IHBsYWNlaG9sZGVyLnNwYW5uZXIoKTsKLSAg
ICB9CitTZWxlY3Rpb25JdGVyYXRvcjo6U2VsZWN0aW9uSXRlcmF0b3IoUmVuZGVyT2JqZWN0KiBz
dGFydCkKKyAgICA6IG1fY3VycmVudChzdGFydCkKK3sKKyAgICBjaGVja0ZvclNwYW5uZXIoKTsK
K30KIAotICAgIFJlbmRlck9iamVjdCogbV9jdXJyZW50IHsgbnVsbHB0ciB9OwotICAgIFZlY3Rv
cjxSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcio+IG1fc3Bhbm5lclN0YWNrOwot
fTsKK1JlbmRlck9iamVjdCogU2VsZWN0aW9uSXRlcmF0b3I6OmN1cnJlbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2N1cnJlbnQ7Cit9CiAKLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorUmVu
ZGVyT2JqZWN0KiBTZWxlY3Rpb25JdGVyYXRvcjo6bmV4dCgpCit7CisgICAgUmVuZGVyT2JqZWN0
KiBjdXJyZW50U3BhbiA9IG1fc3Bhbm5lclN0YWNrLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3Nw
YW5uZXJTdGFjay5sYXN0KCktPnNwYW5uZXIoKTsKKyAgICBtX2N1cnJlbnQgPSBtX2N1cnJlbnQt
Pm5leHRJblByZU9yZGVyKGN1cnJlbnRTcGFuKTsKKyAgICBjaGVja0ZvclNwYW5uZXIoKTsKKyAg
ICBpZiAoIW1fY3VycmVudCAmJiBjdXJyZW50U3BhbikgeworICAgICAgICBSZW5kZXJPYmplY3Qq
IHBsYWNlaG9sZGVyID0gbV9zcGFubmVyU3RhY2subGFzdCgpOworICAgICAgICBtX3NwYW5uZXJT
dGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIG1fY3VycmVudCA9IHBsYWNlaG9sZGVyLT5uZXh0
SW5QcmVPcmRlcigpOworICAgICAgICBjaGVja0ZvclNwYW5uZXIoKTsKKyAgICB9CisgICAgcmV0
dXJuIG1fY3VycmVudDsKK30KKwordm9pZCBTZWxlY3Rpb25JdGVyYXRvcjo6Y2hlY2tGb3JTcGFu
bmVyKCkKK3sKKyAgICBpZiAoIWlzPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
PihtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byYgcGxhY2Vob2xkZXIgPSBk
b3duY2FzdDxSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4oKm1fY3VycmVudCk7
CisgICAgbV9zcGFubmVyU3RhY2suYXBwZW5kKCZwbGFjZWhvbGRlcik7CisgICAgbV9jdXJyZW50
ID0gcGxhY2Vob2xkZXIuc3Bhbm5lcigpOworfQogCiBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlckFmdGVyUG9zaXRpb24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zaWduZWQg
b2Zmc2V0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlv
blJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0
YS5oCmluZGV4IDg5YWViZTc0NjE4NGZlM2VmNTRkNThmYzU3MDEyZmFkMDM1OTFmYzguLmY4NDcx
YTBjNDczZTM0OTYyNjM5OTA2ZGFiMzNjZTA4YzdkMjcxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKQEAgLTM4LDYgKzM4LDIwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXI7CisKK2NsYXNzIFNlbGVjdGlvbkl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBTZWxlY3Rp
b25JdGVyYXRvcihSZW5kZXJPYmplY3QqIHN0YXJ0KTsKKyAgICBSZW5kZXJPYmplY3QqIGN1cnJl
bnQoKSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QqIG5leHQoKTsKKworcHJpdmF0ZToKKyAgICB2
b2lkIGNoZWNrRm9yU3Bhbm5lcigpOworICAgIFJlbmRlck9iamVjdCogbV9jdXJyZW50IHsgbnVs
bHB0ciB9OworICAgIFZlY3RvcjxSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcio+
IG1fc3Bhbm5lclN0YWNrOworfTsKKwogc3RydWN0IE9sZFNlbGVjdGlvbkRhdGE7CiAgICAgCiBj
bGFzcyBTZWxlY3Rpb25SYW5nZURhdGEgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwZDhlNzVkN2VlZTJkNmFjNThlMDY4ZWUxODI2NGQ0OGRh
ZjZkMTMuLjNlN2MyZDIwNjIwNGVhMTA2MzRjMTVjMzg1YTMwNjY4ZTdiMjk4NTEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxOS0xMi0xNiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFBhaW50IGhpZ2hsaWdodHMgc3BlY2lmaWVkIGluIENTUyBIaWdobGlnaHQgQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmQg
TWFya2VkVGV4dCB0byBoYW5kbGUgaGlnaGxpZ2h0IGFuZCB0aGVpciBuYW1lZCBzdHlsZXMuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKwogMjAxOS0xMi0xNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsg
Z2FyZGVuaW5nLiBNYXJrIFdlYktpdC5Gb2N1c2VkRnJhbWVBZnRlckNyYXNoIGFzIHRpbWVvdXQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcApp
bmRleCA1YTE2MmM2MGVjOTZmMGRjMmFmYTA2ODBlM2MxZDgzZDBkYmZlODBmLi4wNjgxY2FiNDM2
N2M1MjM2YTliNTY0MjhhZDZmMTA3NDViYTkxNzgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwCkBAIC01NSw2ICs1NSw4IEBAIHN0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBNYXJrZWRUZXh0OjpUeXBlIHR5
cGUpCiAgICAgICAgIHJldHVybiBvcyA8PCAiU3BlbGxpbmdFcnJvciI7CiAgICAgY2FzZSBNYXJr
ZWRUZXh0OjpUZXh0TWF0Y2g6CiAgICAgICAgIHJldHVybiBvcyA8PCAiVGV4dE1hdGNoIjsKKyAg
ICBjYXNlIE1hcmtlZFRleHQ6OkhpZ2hsaWdodDoKKyAgICAgICAgcmV0dXJuIG9zIDw8ICJIaWdo
bGlnaHQiOwogICAgIGNhc2UgTWFya2VkVGV4dDo6VW5tYXJrZWQ6CiAgICAgICAgIHJldHVybiBv
cyA8PCAiVW5tYXJrZWQiOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IDZkZGZhM2E5MmE2NDIwMDkzMzIzOTAzNDVhMTQ5ZGY4ZTVkOTdhMzcuLjViZWVlZTM1ZWYwMGE3
ZDgyZGNhNTIwMGU5NmYyYmM2M2YxMGE2NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEyLTE2ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2Fy
ZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGlnaGxpZ2h0cyBzcGVjaWZpZWQgaW4g
Q1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4
dC1hY3Jvc3MtZWxlbWVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBp
L2hpZ2hsaWdodC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDE5LTEyLTE3ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMv
cmVzb3VyY2VzIGZyb20gdXBzdHJlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10
ZXh0LWFjcm9zcy1lbGVtZW50cy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRl
eHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJmNDNhNDg2NjI4
NWRmNDIzMmJkMTNkZDQxOWIzMzUwYjFjOTIzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBp
L2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAg
I3N0eWxlMSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29s
b3I6Z3JlZW47CisgICAgfQorICAgICNzdHlsZTIgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgICNzdHlsZTMgeworICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7CisgICAgICAgIGNvbG9yOnBpbms7CisgICAgfQor
ICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8Ym9keT4KKyAgICAgICAgT25lIDxz
cGFuIGlkPSJzdHlsZTEiPnR3bzwvc3Bhbj4gdGg8c3BhbiBpZD0ic3R5bGUyIj5yZWUKKyAgICAg
ICAgZm91cjwvc3Bhbj4gZml2ZSA8c3BhbiBpZD0ic3R5bGUyIj5zaXgKKyAgICAgICAgc2V2ZW48
L3NwYW4+IGVpZ2g8c3BhbiBpZD0ic3R5bGUzIj50IG5pbmUKKyAgICAgICAgdGVuIGVsZXZlbiB0
d2VsdmUKKyAgICAgICAgdGhpcnRlZW4gZm91PC9zcGFuPnJ0ZWVuIGZpZnRlZW4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVt
ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmRmZjVhNGRiMGYwYjZhMWM0MjA2M2FhZjc3OTczYWNiZDI3MDdjYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5o
dG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorICA8dGl0bGU+Q3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8g
ZWxlbWVudHMgYWNyb3NzIGVsZW1lbnRzLjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI2NyZWF0aW5n
LWhpZ2hsaWdodHMiPgorICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJoaWdobGlnaHQtdGV4dC1l
eHBlY3RlZC5odG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJIaWdobGlnaHRz
IHNob3VsZCBiZSBhYmxlIHRvIGJlIHNwZWNpZmllZCBhY3Jvc3MgZWxlbWVudHMuIj4KKyAgICA8
c3R5bGU+CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQxKSB7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQorICAg
IDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0MikgeworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgIDo6aGlnaGxpZ2h0KGV4
YW1wbGUtaGlnaGxpZ2h0MykgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7Cisg
ICAgICAgIGNvbG9yOnBpbms7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8Ym9keT4KKyAgICAgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRocmVlPC9zcGFu
PgorICAgICAgICA8c3BhbiBpZD0idGV4dDIiPmZvdXIgZml2ZSBzaXg8L3NwYW4+CisgICAgICAg
IDxzcGFuIGlkPSJ0ZXh0MyI+c2V2ZW4gZWlnaHQgbmluZTwvc3Bhbj4KKyAgICAgICAgPHNwYW4g
aWQ9InRleHQ0Ij50ZW4gZWxldmVuIHR3ZWx2ZTwvc3Bhbj4KKyAgICAgICAgPHNwYW4gaWQ9InRl
eHQ1Ij50aGlydGVlbiBmb3VydGVlbiBmaWZ0ZWVuPC9zcGFuPgorCisgICAgPHNjcmlwdD4KKyAg
ICAgICAgbGV0IHRleHRFbGVtZW50MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0MScp
OworICAgICAgICBsZXQgdGV4dEVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
eHQyJyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGV4dDMnKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50NCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0ZXh0NCcpOworICAgICAgICBsZXQgdGV4dEVsZW1lbnQ1ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RleHQ1Jyk7CisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMSA9
IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6
IHRleHRFbGVtZW50MSwgc3RhcnRPZmZzZXQ6IDQsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQx
LCBlbmRPZmZzZXQ6IDd9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAyID0g
bmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjog
dGV4dEVsZW1lbnQxLCBzdGFydE9mZnNldDogMTAsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQy
LCBlbmRPZmZzZXQ6IDR9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAyLmFkZChuZXcg
U3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudDIsIHN0YXJ0T2Zmc2V0OiAx
MCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDMsIGVuZE9mZnNldDogNX0pKTsKKworICAgICAg
ICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDMgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcg
U3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudDMsIHN0YXJ0T2Zmc2V0OiAx
MCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDUsIGVuZE9mZnNldDogMTJ9KSk7CisKKyAgICAg
ICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDEiLCBoaWdobGlnaHRSYW5n
ZUdyb3VwMSk7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQy
IiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDIpOworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4
YW1wbGUtaGlnaGxpZ2h0MyIsIGhpZ2hsaWdodFJhbmdlR3JvdXAzKTsKKyAgICA8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1Y2QwMmM0NzU4NmEzMTQzYzA3MGNhNzMxNjY2ZDE1Y2NhNzJiMmIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+Cisg
ICAgI3N0eWxlMSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAg
Y29sb3I6Z3JlZW47CisgICAgfQorICAgICNzdHlsZTIgeworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgICNzdHlsZTMgeworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7CisgICAgICAgIGNvbG9yOnBpbms7CisgICAg
fQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8Ym9keT4KKyAgICAgICAgTzxz
cGFuIGlkPSJzdHlsZTEiPm48L3NwYW4+ZTxzcGFuIGlkPSJzdHlsZTIiPiA8L3NwYW4+dDxzcGFu
IGlkPSJzdHlsZTIiPnc8L3NwYW4+bzxzcGFuIGlkPSJzdHlsZTMiPiA8L3NwYW4+dDxzcGFuIGlk
PSJzdHlsZTMiPmg8L3NwYW4+cmU8c3BhbiBpZD0ic3R5bGUzIj5lPC9zcGFuPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYxYWQ3N2UwZDViMDdiMWU3MjI5
YWZiNDU0ZDJmYzdhNThkZTA2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdo
dC10ZXh0Lmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDx0aXRsZT5NdWx0aXBsZSBjdXN0b20g
aGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50cy48L3RpdGxlPgorICA8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtaGlnaGxpZ2h0LWFwaS0xLyNjcmVhdGlu
Zy1oaWdobGlnaHRzIj4KKyAgPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iaGlnaGxpZ2h0LXRleHQt
ZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iTXVsdGlwbGUg
aGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzcGVjaWZpZWQuIj4KKyAgICA8c3R5bGU+
CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQxKSB7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQorICAgIDo6aGln
aGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0MikgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBi
bHVlOworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUt
aGlnaGxpZ2h0MykgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7CisgICAgICAg
IGNvbG9yOnBpbms7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
Ym9keT4KKyAgICAgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRocmVlPC9zcGFuPgorCisK
KyAgICA8c2NyaXB0PgorICAgICAgICBsZXQgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGV4dDEnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAxID0gbmV3
IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4
dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiAxLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRP
ZmZzZXQ6IDJ9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAyID0gbmV3IEhp
Z2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVs
ZW1lbnQsIHN0YXJ0T2Zmc2V0OiAzLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZz
ZXQ6IDR9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAyLmFkZChuZXcgU3RhdGljUmFu
Z2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDUsIGVuZENvbnRh
aW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogNn0pKTsKKworICAgICAgICBsZXQgaGlnaGxp
Z2h0UmFuZ2VHcm91cDMgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uo
e3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDcsIGVuZENvbnRhaW5l
cjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogOH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VH
cm91cDMuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50LCBz
dGFydE9mZnNldDogOSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiAxMH0p
KTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDMuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3Rh
cnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMTIsIGVuZENvbnRhaW5lcjog
dGV4dEVsZW1lbnQsIGVuZE9mZnNldDogMTN9KSk7CisgICAgICAgIAorCisgICAgICAgIENTUy5o
aWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQxIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDEp
OworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MiIsIGhpZ2hs
aWdodFJhbmdlR3JvdXAyKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhp
Z2hsaWdodDMiLCBoaWdobGlnaHRSYW5nZUdyb3VwMyk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386032</attachid>
            <date>2019-12-18 16:49:44 -0800</date>
            <delta_ts>2019-12-19 11:43:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191218164943.patch</filename>
            <type>text/plain</type>
            <size>61192</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhNjBjNjUwZmU3NjI3
Mzg2Y2U3ZDMzZDlhZDZkYjA1MWIwOTY3Ni4uMjA3ZjgzM2U3ZTRjMjA1MzZhZDRjZDQyZTQ2MGNh
M2Q1ZmNiYWI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxOS0xMi0xOCAgTWVn
YW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBhaW50IGhp
Z2hsaWdodHMgc3BlY2lmaWVkIGluIENTUyBIaWdobGlnaHQgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXIgaGlnaGxpZ2h0cyB3aGVuIHBy
ZXNlbnQsIHNpbWlsYXIgdG8gdGhlIHdheSB3ZSByZW5kZXIgc2VsZWN0aW9uLgorCisgICAgICAg
IFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0
LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGln
aGxpZ2h0LXRleHQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0
TWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpIaWdobGlnaHRNYXA6Om1hcCBjb25zdCk6CisKKyAg
ICAgICAgQWRkIGEgZ2V0dGVyIGZvciB0aGUgaW50ZXJuYWwgSGFzaE1hcC4KKworICAgICAgICAq
IGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246OnNldE5lZWRzU2VsZWN0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
YXJldENvbnRyb2xsZXI6Om5vZGVXaWxsQmVSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpyZXNwb25kVG9Ob2RlTW9kaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50
c0ZvclNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZTo6flNjb3BlZEZyYW1lU2VsZWN0
aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UpOgor
CisgICAgICAgIFJlbmFtZSBTZWxlY3Rpb25SYW5nZURhdGEgdG8gYmUgbW9yZSBhcHByb3ByaWF0
ZSBmb3IgdXNlIGZvciBoaWdobGlnaHRzIGFzIHdlbGwuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojp1cGRh
dGVFbGxpcHNpc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnNlbGVj
dGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBzZXVkb0VsZW1l
bnRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRFbmRGb3JTdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFy
dEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpoaWdobGlnaHRT
dGFydEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpyZXNvbHZl
U3R5bGVGb3JNYXJrZWRUZXh0KToKKworICAgICAgICBVc2UgdGhlIGhpZ2hsaWdodCBuYW1lIGZy
b20gdGhlIEhpZ2hsaWdodFJhbmdlR3JvdXAgdG8gb2J0YWluIHRoZSBzdHlsZSBmcm9tIHRoZSBy
ZW5kZXJlci4KKworICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtl
ZFRleHRzRm9ySGlnaGxpZ2h0cyBjb25zdCk6CisKKyAgICAgICAgUmVuZGVyIHRoZSBoaWdobGln
aHRzIHdoZW4gcGFpbnRpbmcgdGV4dC4gRGV0ZXJtaW5lIGlmIGEgaGlnaGxpZ2h0IGlzIHByZXNl
bnQgaW4gdGhlIGN1cnJlbnQgUmVuZGVyT2JqZWN0LCBhbmQgCisgICAgICAgIGFkZCBhZGRpdGlv
bmFsIE1hcmtlZFRleHQgdG8gYmUgcmVuZGVyZWQgd2hlbiBwYWludGluZworCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvTWFya2VkVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJkaXZpZGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9NYXJrZWRUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrZWRUZXh0OjpvcGVyYXRvcj09
IGNvbnN0KToKKworICAgICAgICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtlIGEgc3R5bGUgbmFt
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFj
ZWQ6OmlzU2VsZWN0ZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0Zv
ckxpbmVCb3hlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6c2V0U2VsZWN0aW9uU3Rh
dGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVt
ZW50SXRlcmF0b3I6OlBzZXVkb0VsZW1lbnRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpp
c1ZhbGlkUmVuZGVyZXJGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudFJhbmdlRGF0YTo6UHNldWRvRWxlbWVudFJh
bmdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjpzZXRD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnRSYW5nZURhdGE6OnNlbGVj
dGlvblN0YXRlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudFJh
bmdlRGF0YTo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnRS
YW5nZURhdGE6OmNsZWFyU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1l
bnRSYW5nZURhdGE6OnJlcGFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxl
bWVudFJhbmdlRGF0YTo6Y29sbGVjdEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
c2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjphcHBseVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpTZWxlY3Rpb25SYW5nZURhdGEpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnJlcGFpbnQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6YXBwbHkp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnRSYW5nZURhdGE6OkNvbnRleHQ6OkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudFJhbmdlRGF0YTo6Q29udGV4dDo6c3Rh
cnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudFJhbmdlRGF0
YTo6Q29udGV4dDo6ZW5kT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0Vs
ZW1lbnRSYW5nZURhdGE6OkNvbnRleHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHNldWRvRWxlbWVudFJhbmdlRGF0YTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBzZXVkb0VsZW1lbnRSYW5nZURhdGE6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBzZXVkb0VsZW1lbnRSYW5nZURhdGE6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQc2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjpzdGFydE9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpQc2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjplbmRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjpDb250ZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dDo6c3RhcnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpD
b250ZXh0OjplbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
UmFuZ2VEYXRhOjpDb250ZXh0OjpzdGFydFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dDo6ZW5kUG9zaXRpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250
ZXh0OjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvblJhbmdlRGF0YTo6Z2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvblJhbmdlRGF0YTo6c3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjplbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzdGFydFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6ZW5kUG9zaXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpib3VuZHMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpi
b3VuZHNDbGlwcGVkVG9WaXNpYmxlQ29udGVudCBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAg
UmVuYW1lIFNlbGVjdGlvblJhbmdlRGF0YSB0byBiZSBtb3JlIGFwcHJvcHJpYXRlIGZvciB1c2Ug
Zm9yIGhpZ2hsaWdodHMgYXMgd2VsbC4KKwogMjAxOS0xMi0xOCAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIEFuaW1hdGlvbnMgc3RvcCBpZiBuZXcgdGFiIG9w
ZW5lZCAoYW5kIGNsb3NlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0hpZ2hsaWdodE1hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
SGlnaGxpZ2h0TWFwLmgKaW5kZXggZmY5OGNjM2JhNTMyZmUwMWRlNDA3NTY4OWEwYjkyMzY1N2Zj
ZWVmMi4uMWE0ODU3YjI1YzU4ZmU4ZmM0YTQxNTlhZjRhODk3N2VkOWZiN2FkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFN0cmluZyYpOwogICAgIAog
ICAgIFJlZlB0cjxIaWdobGlnaHRSYW5nZUdyb3VwPiBnZXRHcm91cEZvcktleShjb25zdCBTdHJp
bmcmIGtleSk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxIaWdobGlnaHRSYW5nZUdy
b3VwPj4mIG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CiAgICAgCiBwcml2YXRlOgogICAg
IEhpZ2hsaWdodE1hcCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAKaW5kZXggZjFlOWEwZDBkM2ZhMzJjYzcxMzE3YjBmYWVmYmQ1YmIyNWJhYzA5
Yi4uMmQ0MWI3MzJmMGRmYTk3NjYwMjk0ZWEwZWRlYmIxNWM5OGM2NmUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpzZXROZWVkc1NlbGVjdGlvblVwZGF0ZShSZXZlYWxTZWxlY3Rpb25B
ZnRlclVwZGF0ZSByZXZlYWxNbwogICAgICAgICBtX3NlbGVjdGlvblJldmVhbE1vZGUgPSBTZWxl
Y3Rpb25SZXZlYWxNb2RlOjpSZXZlYWw7CiAgICAgbV9wZW5kaW5nU2VsZWN0aW9uVXBkYXRlID0g
dHJ1ZTsKICAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKQotICAgICAgICB2aWV3LT5zZWxlY3Rpb24oKS5jbGVhcigpOworICAgICAgICB2aWV3LT5z
ZWxlY3Rpb24oKS5jbGVhclNlbGVjdGlvbigpOwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1
cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24oY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGlu
dGVudCkKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIERyYWdDYXJldENvbnRyb2xsZXI6Om5vZGVX
aWxsQmVSZW1vdmVkKE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChSZW5k
ZXJWaWV3KiB2aWV3ID0gbm9kZS5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSkKLSAgICAgICAgdmll
dy0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKKyAgICAgICAgdmlldy0+c2VsZWN0aW9uKCkuY2xlYXJT
ZWxlY3Rpb24oKTsKIAogICAgIGNsZWFyKCk7CiB9CkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6cmVzcG9uZFRvTm9kZU1vZGlmaWNhdGlvbihOb2RlJiBub2RlLCBib29s
IGJhc2VSZW1vdmVkLCBib28KIAogICAgIGlmIChjbGVhclJlbmRlclRyZWVTZWxlY3Rpb24pIHsK
ICAgICAgICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBub2RlLmRvY3VtZW50KCkucmVuZGVyVmll
dygpKSB7Ci0gICAgICAgICAgICByZW5kZXJWaWV3LT5zZWxlY3Rpb24oKS5jbGVhcigpOworICAg
ICAgICAgICAgcmVuZGVyVmlldy0+c2VsZWN0aW9uKCkuY2xlYXJTZWxlY3Rpb24oKTsKIAogICAg
ICAgICAgICAgLy8gVHJpZ2dlciBhIHNlbGVjdGlvbiB1cGRhdGUgc28gdGhlIHNlbGVjdGlvbiB3
aWxsIGJlIHNldCBhZ2Fpbi4KICAgICAgICAgICAgIG1fc2VsZWN0aW9uUmV2ZWFsSW50ZW50ID0g
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKTsKQEAgLTE1NzAsNyArMTU3MCw3IEBAIHZvaWQgRnJh
bWVTZWxlY3Rpb246OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiAjZW5kaWYKIAogICAgIGlmIChh
dXRvKiB2aWV3ID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHZpZXctPnNl
bGVjdGlvbigpLmNsZWFyKCk7CisgICAgICAgIHZpZXctPnNlbGVjdGlvbigpLmNsZWFyU2VsZWN0
aW9uKCk7CiAKICAgICBzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKFZpc2li
bGVTZWxlY3Rpb24oKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQWxpZ25DdXJzb3JP
blNjcm9sbElmTmVlZGVkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgbV9wcmV2aW91c0Nh
cmV0Tm9kZSA9IG51bGxwdHI7CkBAIC0yMTU0LDcgKzIxNTQsNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKICNlbmRpZgogCiAgICAgaWYgKCFzZWxlY3Rpb24uaXNS
YW5nZSgpKSB7Ci0gICAgICAgIHZpZXctPnNlbGVjdGlvbigpLmNsZWFyKCk7CisgICAgICAgIHZp
ZXctPnNlbGVjdGlvbigpLmNsZWFyU2VsZWN0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVh
cmFuY2UoKQogICAgICAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kUG9zLmRlcHJl
Y2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CiAgICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3Mu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49
IDAgJiYgZW5kT2Zmc2V0ID49IDApOwotICAgICAgICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoeyBz
dGFydFJlbmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zm
c2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZE9mZnNldCkgfSk7CisgICAgICAgIHZpZXct
PnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbih7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZW5kT2Zmc2V0KSB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCA5MjI5ZDU1ZTIyOTAxMGUyMDA2ZjgwMWQ4ZTI5MjhiZWJiYmE2Mzc0Li4wZGI2ZmY2MzNjN2Jj
MTI5MGE5MDE2YjMwNGJhZjczODZjYmQzYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC00MjQ3LDcgKzQyNDcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNu
YXBzaG90KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIGlmIChz
aG91bGRQYWludFNlbGVjdGlvbiA9PSBFeGNsdWRlU2VsZWN0aW9uKSB7CiAgICAgICAgIGZvciAo
YXV0byogZnJhbWUgPSBtX2ZyYW1lLnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dChtX2ZyYW1lLnB0cigpKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJl
bmRlclZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgcmVu
ZGVyVmlldy0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICByZW5kZXJWaWV3
LT5zZWxlY3Rpb24oKS5jbGVhclNlbGVjdGlvbigpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCAwMGFjOThmZTE2OGNkZjMzMDNjMWY5
N2JlYjgzOGM0YTFkNmZlNGI0Li5lZGYyMGY0Nzc5YmZkNGMyY2JiNWFmMzIwYTdiN2RkMjJjNTQ0
NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKQEAgLTE0NSwxMiArMTQ1
LDEyIEBAIHN0cnVjdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlIHsKICAgICB7CiAgICAgICAg
IGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChzZWxlY3Rpb24pOwotICAgICAgICAgICAgcmVuZGVyVmlldy0+c2VsZWN0
aW9uKCkuc2V0KHNlbGVjdGlvbi52YWx1ZSgpLCBTZWxlY3Rpb25SYW5nZURhdGE6OlJlcGFpbnRN
b2RlOjpOb3RoaW5nKTsKKyAgICAgICAgICAgIHJlbmRlclZpZXctPnNlbGVjdGlvbigpLnNldFNl
bGVjdGlvbihzZWxlY3Rpb24udmFsdWUoKSwgUHNldWRvRWxlbWVudFJhbmdlRGF0YTo6UmVwYWlu
dE1vZGU6Ok5vdGhpbmcpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgY29uc3QgRnJhbWUmIGZy
YW1lOwotICAgIE9wdGlvbmFsPFNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dD4gc2VsZWN0aW9u
OworICAgIE9wdGlvbmFsPFBzZXVkb0VsZW1lbnRSYW5nZURhdGE6OkNvbnRleHQ+IHNlbGVjdGlv
bjsKIH07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBSYW5nZSYg
cmFuZ2UsIGJvb2wgZm9yY2VCbGFjawogICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0LmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgaW50IGVuZE9mZnNldCA9IGVuZC5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpOwogICAgIEFTU0VSVChzdGFydE9mZnNldCA+PSAwICYmIGVuZE9mZnNl
dCA+PSAwKTsKLSAgICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoeyBzdGFydFJlbmRlcmVyLCBlbmRS
ZW5kZXJlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGVuZE9mZnNldCkgfSwgU2VsZWN0aW9uUmFuZ2VEYXRhOjpSZXBhaW50TW9kZTo6
Tm90aGluZyk7CisgICAgdmlldy0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHsgc3RhcnRSZW5k
ZXJlciwgZW5kUmVuZGVyZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpIH0sIFBzZXVkb0VsZW1lbnRSYW5nZURhdGE6
OlJlcGFpbnRNb2RlOjpOb3RoaW5nKTsKICAgICAvLyBXZSBjYXB0dXJlIHVzaW5nIHNuYXBzaG90
RnJhbWVSZWN0KCkgYmVjYXVzZSB3ZSBmYWtlIHVwIHRoZSBzZWxlY3Rpb24gdXNpbmcKICAgICAv
LyBGcmFtZVZpZXcgYnV0IHNuYXBzaG90U2VsZWN0aW9uKCkgdXNlcyB0aGUgc2VsZWN0aW9uIGZy
b20gdGhlIEZyYW1lIGl0c2VsZi4KICAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBz
aG90KHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCB2aWV3LT5zZWxlY3Rpb24oKS5ib3VuZHNDbGlw
cGVkVG9WaXNpYmxlQ29udGVudCgpLCBvcHRpb25zKSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNDMzYTA3NGY1MDI2NDc4YzczYmFl
ZWE2MTNjMzM1ODQ4OTJmNTMxYy4uODI1Zjg4YzhkMzY0NGJiODY3NmE3ZDAyNmY1NmMzMGRhMWQw
NWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAt
MjgsMTAgKzI4LDEyIEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFbGVt
ZW50UnVsZUNvbGxlY3Rvci5oIgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCiAjaW5jbHVkZSAi
RXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkhpZ2hsaWdodE1hcC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hT
dHlsZS5oIgpAQCAtNDYsNiArNDgsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIK
KyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9u
UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHREZWNvcmF0aW9u
UGFpbnRlci5oIgogI2luY2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCkBAIC0xNTAsMTMgKzE1NCwz
NiBAQCBib29sIElubGluZVRleHRCb3g6OmlzU2VsZWN0ZWQodW5zaWduZWQgc3RhcnRQb3NpdGlv
biwgdW5zaWduZWQgZW5kUG9zaXRpb24pIGNvbgogICAgIHJldHVybiBjbGFtcGVkT2Zmc2V0KHN0
YXJ0UG9zaXRpb24pIDwgY2xhbXBlZE9mZnNldChlbmRQb3NpdGlvbik7CiB9CiAKK3ZvaWQgSW5s
aW5lVGV4dEJveDo6dXBkYXRlRWxsaXBzaXNTdGF0ZShSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXRlIHN0YXRlKQoreworICAgIC8vIElmIHRoZXJlIGFyZSBlbGxpcHNpcyBmb2xsb3dpbmcsIG1h
a2Ugc3VyZSB0aGVpciBzZWxlY3Rpb24gaXMgdXBkYXRlZC4KKyAgICBpZiAobV90cnVuY2F0aW9u
ICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKKyAgICAgICAgRWxs
aXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CisgICAgICAgIGlmIChz
dGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKKyAgICAgICAgICAgIGF1dG8g
W3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmRdID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKKyAg
ICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lkZXJlZCB0byBiZSBzZWxl
Y3RlZCBpZiB0aGUgZW5kIG9mCisgICAgICAgICAgICAvLyB0aGUgc2VsZWN0aW9uIGlzIHBhc3Qg
dGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCisgICAgICAgICAgICAvLyBi
ZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiBpcyBiZWZvcmUgb3IgYXQgdGhlIGJlZ2lubmluZyBv
ZiB0aGUKKyAgICAgICAgICAgIC8vIHRydW5jYXRpb24uCisgICAgICAgICAgICBlbGxpcHNpcy0+
c2V0U2VsZWN0aW9uU3RhdGUoc2VsZWN0aW9uRW5kID49IG1fdHJ1bmNhdGlvbiAmJiBzZWxlY3Rp
b25TdGFydCA8PSBtX3RydW5jYXRpb24gPworICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdDo6
U2VsZWN0aW9uSW5zaWRlIDogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25Ob25lKTsKKyAgICB9Cit9CisKIFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
U3RhdGUgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUoKQogewotICAgIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgc3RhdGUgPSByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7Cisg
ICAgYXV0byBzdGF0ZSA9IHBzZXVkb0VsZW1lbnRTdGF0ZShyZW5kZXJlcigpLnNlbGVjdGlvblN0
YXRlKCksIHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpKTsKKyAgICB1cGRhdGVFbGxpcHNp
c1N0YXRlKHN0YXRlKTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK1JlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6cHNldWRvRWxlbWVudFN0YXRlKFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgc3RhdGUsIFBzZXVkb0VsZW1lbnRSYW5nZURhdGEmIHJhbmdlRGF0
YSkgY29uc3QKK3sKICAgICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFy
dCB8fCBzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCB8fCBzdGF0ZSA9PSBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvbkJvdGgpIHsKLSAgICAgICAgYXV0byYgc2VsZWN0aW9uID0gcmVu
ZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCk7Ci0gICAgICAgIGF1dG8gc3RhcnRQb3MgPSBzZWxl
Y3Rpb24uc3RhcnRQb3NpdGlvbigpOwotICAgICAgICBhdXRvIGVuZFBvcyA9IHNlbGVjdGlvbi5l
bmRQb3NpdGlvbigpOworICAgICAgICBhdXRvIHN0YXJ0UG9zID0gcmFuZ2VEYXRhLnN0YXJ0T2Zm
c2V0KCk7CisgICAgICAgIGF1dG8gZW5kUG9zID0gcmFuZ2VEYXRhLmVuZE9mZnNldCgpOwogICAg
ICAgICAvLyBUaGUgcG9zaXRpb24gYWZ0ZXIgYSBoYXJkIGxpbmUgYnJlYWsgaXMgY29uc2lkZXJl
ZCB0byBiZSBwYXN0IGl0cyBlbmQuCiAgICAgICAgIEFTU0VSVChzdGFydCgpICsgbGVuKCkgPj0g
KGlzTGluZUJyZWFrKCkgPyAxIDogMCkpOwogICAgICAgICB1bnNpZ25lZCBsYXN0U2VsZWN0YWJs
ZSA9IHN0YXJ0KCkgKyBsZW4oKSAtIChpc0xpbmVCcmVhaygpID8gMSA6IDApOwpAQCAtMTc2LDIx
ICsyMDMsNiBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNl
bGVjdGlvblN0YXRlKCkKICAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rp
b25Ob25lOwogICAgIH0KIAotICAgIC8vIElmIHRoZXJlIGFyZSBlbGxpcHNpcyBmb2xsb3dpbmcs
IG1ha2Ugc3VyZSB0aGVpciBzZWxlY3Rpb24gaXMgdXBkYXRlZC4KLSAgICBpZiAobV90cnVuY2F0
aW9uICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKLSAgICAgICAg
RWxsaXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7Ci0gICAgICAgIGlm
IChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIGF1
dG8gW3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmRdID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsK
LSAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lkZXJlZCB0byBiZSBz
ZWxlY3RlZCBpZiB0aGUgZW5kIG9mCi0gICAgICAgICAgICAvLyB0aGUgc2VsZWN0aW9uIGlzIHBh
c3QgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCi0gICAgICAgICAgICAv
LyBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiBpcyBiZWZvcmUgb3IgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUKLSAgICAgICAgICAgIC8vIHRydW5jYXRpb24uCi0gICAgICAgICAgICBlbGxpcHNp
cy0+c2V0U2VsZWN0aW9uU3RhdGUoc2VsZWN0aW9uRW5kID49IG1fdHJ1bmNhdGlvbiAmJiBzZWxl
Y3Rpb25TdGFydCA8PSBtX3RydW5jYXRpb24gPwotICAgICAgICAgICAgICAgIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uSW5zaWRlIDogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKLSAgICB9Ci0KICAgICByZXR1cm4gc3RhdGU7CiB9CiAK
QEAgLTUyNCw2ICs1MzYsOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICBw
YWludENvbXBvc2l0aW9uQmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbik7CiAKICAgICAg
ICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtlZFRleHRzRm9y
RG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsKKyAgICAgICAgYXV0
byBoaWdobGlnaHRNYXJrZWRUZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMo
VGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQpOworICAgICAgICBpZiAoIWhpZ2hsaWdodE1hcmtl
ZFRleHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3RvcihX
VEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAjaWYgRU5BQkxFKFRFWFRfU0VMRUNUSU9O
KQogICAgICAgICBpZiAoaGF2ZVNlbGVjdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcyAmJiAh
Y29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9u
TWFya2VkVGV4dCA9IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3goKnRoaXMpOwpA
QCAtNTU3LDYgKzU3Miw5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgbWFya2Vk
VGV4dHMuYXBwZW5kKHsgY2xhbXBlZE9mZnNldChtX3N0YXJ0KSwgY2xhbXBlZE9mZnNldChlbmQo
KSksIE1hcmtlZFRleHQ6OlVubWFya2VkIH0pOwogICAgICAgICBpZiAoIWlzUHJpbnRpbmcpIHsK
ICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3Rvcihjb2xsZWN0TWFya2VkVGV4dHNG
b3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGhpZ2hsaWdodE1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtlZFRleHRzRm9y
SGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCk7CisgICAgICAgICAgICAgICAg
aWYgKCFoaWdobGlnaHRNYXJrZWRUZXh0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAg
IG1hcmtlZFRleHRzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7
CiAKICAgICAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnREcmFnZ2VkQ29udGVudCA9ICEocGFpbnRJ
bmZvLnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlv
bikpOwogICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50RHJhZ2dlZENvbnRlbnQpIHsKQEAgLTY1
MiwyMSArNjcwLDM2IEBAIHVuc2lnbmVkIElubGluZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQodW5z
aWduZWQgeCkgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0Citz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRF
bmRGb3JTdGF0ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvblN0YXRlIHN0YXRlKSBjb25zdAogewotICAgIGF1dG8gc2VsZWN0aW9uU3RhdGUgPSBy
ZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7Ci0gICAgaWYgKHNlbGVjdGlvblN0YXRlID09IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlKQorICAgIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmpl
Y3Q6OlNlbGVjdGlvbkluc2lkZSkKICAgICAgICAgcmV0dXJuIHsgMCwgY2xhbXBlZE9mZnNldCht
X3N0YXJ0ICsgbV9sZW4pIH07CiAgICAgCi0gICAgYXV0byBzdGFydCA9IHJlbmRlcmVyKCkudmll
dygpLnNlbGVjdGlvbigpLnN0YXJ0UG9zaXRpb24oKTsKLSAgICBhdXRvIGVuZCA9IHJlbmRlcmVy
KCkudmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9uKCk7Ci0gICAgaWYgKHNlbGVjdGlvblN0
YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpCisgICAgaWYgKHN0YXRlID09IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpCiAgICAgICAgIGVuZCA9IHJlbmRlcmVyKCkudGV4
dCgpLmxlbmd0aCgpOwotICAgIGVsc2UgaWYgKHNlbGVjdGlvblN0YXRlID09IFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uRW5kKQorICAgIGVsc2UgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uRW5kKQogICAgICAgICBzdGFydCA9IDA7CiAgICAgcmV0dXJuIHsgY2xhbXBlZE9mZnNl
dChzdGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKSB9OwogfQogCitzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0Cit7Cisg
ICAgYXV0byBzZWxlY3Rpb25TdGF0ZSA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKTsKKyAg
ICAKKyAgICByZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmVuZGVyZXIoKS52aWV3KCku
c2VsZWN0aW9uKCkuc3RhcnRPZmZzZXQoKSwgcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCku
ZW5kT2Zmc2V0KCksIHNlbGVjdGlvblN0YXRlKTsKK30KKworc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoUHNldWRvRWxlbWVudFJh
bmdlRGF0YSAmcmFuZ2VEYXRhKSBjb25zdAoreworICAgIGF1dG8gc3RhdGUgPSByYW5nZURhdGEu
c2VsZWN0aW9uU3RhdGVGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKKyAgICBzdGF0ZSA9IHBzZXVk
b0VsZW1lbnRTdGF0ZShzdGF0ZSwgcmFuZ2VEYXRhKTsKKyAgICAKKyAgICBpZiAoc3RhdGUgPT0g
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKQorICAgICAgICByZXR1cm4gezAsIDB9OworICAg
IAorICAgIHJldHVybiBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZShyYW5nZURhdGEuc3RhcnRPZmZz
ZXQoKSwgcmFuZ2VEYXRhLmVuZE9mZnNldCgpLCBzdGF0ZSk7Cit9CisKIGJvb2wgSW5saW5lVGV4
dEJveDo6aGFzTWFya2VycygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbGxlY3RNYXJrZWRUZXh0
c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbikuc2l6ZSgpOwpA
QCAtNzcwLDYgKzgwMywyNiBAQCBhdXRvIElubGluZVRleHRCb3g6OnJlc29sdmVTdHlsZUZvck1h
cmtlZFRleHQoY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCwgY29ucwogICAgIGNhc2UgTWFy
a2VkVGV4dDo6U3BlbGxpbmdFcnJvcjoKICAgICBjYXNlIE1hcmtlZFRleHQ6OlVubWFya2VkOgog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE1hcmtlZFRleHQ6OkhpZ2hsaWdodDoKKyAgICAgICAg
eworICAgICAgICAgICAgYXV0byByZW5kZXJTdHlsZSA9IHBhcmVudCgpLT5yZW5kZXJlcigpLmdl
dFVuY2FjaGVkUHNldWRvU3R5bGUoeyBQc2V1ZG9JZDo6SGlnaGxpZ2h0LCBtYXJrZWRUZXh0Lmhp
Z2hsaWdodE5hbWUgfSwgJnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAocmVuZGVyU3R5bGUpIHsKKyAgICAgICAgICAgICAgICBzdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJTdHlsZS0+YmFja2dyb3VuZENvbG9yKCk7CisgICAg
ICAgICAgICAgICAgc3R5bGUudGV4dFN0eWxlcy5maWxsQ29sb3IgPSByZW5kZXJTdHlsZS0+Y29t
cHV0ZWRTdHJva2VDb2xvcigpOworICAgICAgICAgICAgICAgIHN0eWxlLnRleHRTdHlsZXMuc3Ry
b2tlQ29sb3IgPSByZW5kZXJTdHlsZS0+Y29tcHV0ZWRTdHJva2VDb2xvcigpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gY29sb3IgPSByZW5kZXJTdHlsZS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxD
b2xvcik7CisgICAgICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUgPSByZW5kZXJTdHls
ZS0+dGV4dERlY29yYXRpb25TdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8gZGVjb3JhdGlv
bnMgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKKworICAgICAgICAg
ICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWluc0FueSh7IFRleHREZWNvcmF0aW9uOjpVbmRl
cmxpbmUsIFRleHREZWNvcmF0aW9uOjpPdmVybGluZSwgVGV4dERlY29yYXRpb246Ok92ZXJsaW5l
IH0pKSB7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVu
ZGVybGluZUNvbG9yID0gY29sb3I7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNv
cmF0aW9uU3R5bGVzLnVuZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBj
YXNlIE1hcmtlZFRleHQ6OkRyYWdnZWRDb250ZW50OgogICAgICAgICBzdHlsZS5hbHBoYSA9IDAu
MjU7CiAgICAgICAgIGJyZWFrOwpAQCAtOTYzLDYgKzEwMTYsNDggQEAgVmVjdG9yPE1hcmtlZFRl
eHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhU
ZXh0UGFpbnQKICAgICByZXR1cm4gbWFya2VkVGV4dHM7CiB9CiAKKworVmVjdG9yPE1hcmtlZFRl
eHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBh
aW50UGhhc2UgcGhhc2UpIGNvbnN0Cit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmhpZ2hsaWdodEFQSUVuYWJsZWQoKSkgeworICAgICAgICByZXR1
cm4geyB9OworICAgIH07CisgICAgQVNTRVJUX0FSRyhwaGFzZSwgcGhhc2UgPT0gVGV4dFBhaW50
UGhhc2U6OkJhY2tncm91bmQgfHwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQg
fHwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkRlY29yYXRpb24pOworCisgICAgVU5VU0VEX1BB
UkFNKHBoYXNlKTsKKyAgICAKKyAgICBpZiAoIXJlbmRlcmVyKCkudGV4dE5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBtYXJrZWRUZXh0czsKKyAg
ICBmb3IgKGF1dG8mIGhpZ2hsaWdodEdyb3VwIDogcmVuZGVyZXIoKS5kb2N1bWVudCgpLmhpZ2hs
aWdodE1hcCgpLm1hcCgpKSB7CisgICAgICAgIC8vIDxNTUc+IGdldCBwZXVkb1N0eWxlIGhlcmUg
dG8gc2F2ZSBjYWxjdWxhdGlvbnMKKyAgICAgICAgYXV0byByZW5kZXJTdHlsZSA9IHBhcmVudCgp
LT5yZW5kZXJlcigpLmdldFVuY2FjaGVkUHNldWRvU3R5bGUoeyBQc2V1ZG9JZDo6SGlnaGxpZ2h0
LCBoaWdobGlnaHRHcm91cC5rZXkgfSwgJnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkpOwor
ICAgICAgICBpZiAocmVuZGVyU3R5bGUpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3RhdGlj
UmFuZ2UgOiBoaWdobGlnaHRHcm91cC52YWx1ZS0+cmFuZ2VzKCkpIHsKKyAgICAgICAgICAgICAg
ICBQb3NpdGlvbiBzdGFydFBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdGF0aWNS
YW5nZS0+c3RhcnRDb250YWluZXIoKSwgc3RhdGljUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAg
ICAgICAgICAgICAgIFBvc2l0aW9uIGVuZFBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihzdGF0aWNSYW5nZS0+ZW5kQ29udGFpbmVyKCksIHN0YXRpY1JhbmdlLT5lbmRPZmZzZXQoKSk7
CisKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnRQb3MuaXNOb3ROdWxsKCkgJiYgZW5kUG9zLmlz
Tm90TnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5k
ZXJlciA9IHN0YXJ0UG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgICAg
ICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0UG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBl
bmRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICAgICAg
aW50IGVuZE9mZnNldCA9IGVuZFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0gMCk7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50
UmFuZ2VEYXRhIGhpZ2hsaWdodERhdGEgPSBQc2V1ZG9FbGVtZW50UmFuZ2VEYXRhKHJlbmRlcmVy
KCkudmlldygpKTsKKyAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0RGF0YS5zZXRDb250ZXh0
KHtzdGFydFJlbmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0
T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZE9mZnNldCl9KTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGF1dG8gW2hpZ2hsaWdodFN0YXJ0LCBoaWdo
bGlnaHRFbmRdID0gaGlnaGxpZ2h0U3RhcnRFbmQoaGlnaGxpZ2h0RGF0YSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChoaWdobGlnaHRTdGFydCA8IGhpZ2hsaWdodEVuZCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZCh7IGhpZ2hsaWdodFN0YXJ0LCBoaWdobGln
aHRFbmQsIE1hcmtlZFRleHQ6OkhpZ2hsaWdodCwgbnVsbHB0ciwgaGlnaGxpZ2h0R3JvdXAua2V5
IH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gbWFya2VkVGV4dHM7Cit9CisKIEZsb2F0UG9pbnQgSW5saW5lVGV4dEJveDo6
dGV4dE9yaWdpbkZyb21Cb3hSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29uc3QKIHsK
ICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4geyBib3hSZWN0LngoKSwgYm94UmVjdC55KCkgKyBs
aW5lRm9udCgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDVjYTJiYzg2MTM2YjZkOTMyNjg3MjhiZGFmODcyOTJl
ODg1OGQ2NWMuLmQxN2E5ZDgwZTlmMWNlNTdhNzE0Zjg0ZWY0OWMxNTM1NjZjNWI4OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtMTIxLDYgKzEyMSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxTZWxlY3Rpb25SZWN0KHVuc2ln
bmVkIHN0YXJ0UG9zLCB1bnNpZ25lZCBlbmRQb3MpIGNvbnN0OwogICAgIGJvb2wgaXNTZWxlY3Rl
ZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikgY29uc3Q7CiAg
ICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRFbmQoKSBjb25z
dDsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBoaWdobGlnaHRTdGFydEVuZChQ
c2V1ZG9FbGVtZW50UmFuZ2VEYXRhJikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwpAQCAtMTMyLDEyICsxMzMsMTkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRlbGV0ZUxpbmUoKSBmaW5hbDsKICAgICB2b2lkIGV4dHJhY3RMaW5l
KCkgZmluYWw7CiAgICAgdm9pZCBhdHRhY2hMaW5lKCkgZmluYWw7CisgICAgCisgICAgUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSByZW5kZXJlckhpZ2hsaWdodFN0YXRlKFJlbmRlck9iamVj
dCogLCB1bnNpZ25lZCAsIFJlbmRlck9iamVjdCogLCB1bnNpZ25lZCkgY29uc3Q7CisgICAgUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBoaWdobGlnaHRTdGF0ZShSZW5kZXJPYmplY3QqLCB1
bnNpZ25lZCwgUmVuZGVyT2JqZWN0KiwgdW5zaWduZWQpIGNvbnN0OworICAgIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgcHNldWRvRWxlbWVudFN0YXRlKFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUsIFBzZXVkb0VsZW1lbnRSYW5nZURhdGEmKSBjb25zdDsKKyAgICAKKyAgICBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZSh1bnNpZ25l
ZCwgdW5zaWduZWQsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUpIGNvbnN0OwogCiBwdWJs
aWM6CiAgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIGZp
bmFsOwogCiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJUcnVuY2F0aW9uKCkgZmluYWwgeyBtX3Ry
dW5jYXRpb24gPSBjTm9UcnVuY2F0aW9uOyB9CisgICAgdm9pZCB1cGRhdGVFbGxpcHNpc1N0YXRl
KFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUpOwogICAgIGZsb2F0IHBsYWNlRWxsaXBzaXNC
b3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvYXQgdmlzaWJsZVJp
Z2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRoLCBib29s
JiBmb3VuZEJveCkgZmluYWw7CiAKIHB1YmxpYzoKQEAgLTE2OSw2ICsxNzcsNyBAQCBwcml2YXRl
OgogCiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRyYWdnZWRD
b250ZW50KCk7CiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRv
Y3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZSkgY29uc3Q7CisgICAgVmVjdG9yPE1hcmtlZFRl
eHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2UpIGNvbnN0
OwogCiAgICAgTWFya2VkVGV4dFN0eWxlIGNvbXB1dGVTdHlsZUZvclVubWFya2VkTWFya2VkVGV4
dChjb25zdCBQYWludEluZm8mKSBjb25zdDsKICAgICBTdHlsZWRNYXJrZWRUZXh0IHJlc29sdmVT
dHlsZUZvck1hcmtlZFRleHQoY29uc3QgTWFya2VkVGV4dCYsIGNvbnN0IE1hcmtlZFRleHRTdHls
ZSYgYmFzZVN0eWxlLCBjb25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9N
YXJrZWRUZXh0LmNwcAppbmRleCBhNzkxOTJlMjhhZTE5OTk2ODZiNjI2NTdjODkwZjU3YjJjODRl
NTYyLi5kYjg0OWE0ZmJjYmZlYzQ4MDgwNGU0N2NkOTJlZTdhZmNmMTJmNmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgVmVjdG9y
PE1hcmtlZFRleHQ+IHN1YmRpdmlkZShjb25zdCBWZWN0b3I8TWFya2VkVGV4dD4mIG1hcmtlZFRl
eHRzLCBPdmVybGFwU3RyYXQKICAgICAgICAgICAgICAgICAgICAgICAgIGZyb250bW9zdCA9IGo7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChmcm9udG1vc3QpCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52
YWx1ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50eXBlLCBvZmZzZXRzWypmcm9u
dG1vc3RdLm1hcmtlZFRleHQtPm1hcmtlciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzWypmcm9udG1v
c3RdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbKmZyb250bW9zdF0ubWFya2VkVGV4dC0+bWFy
a2VyLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPmhpZ2hsaWdodE5hbWUgfSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRoZSBhcHBlbmRlZCBtYXJr
ZWQgdGV4dHMgbWF5IG5vdCBiZSBpbiBwYWludCBvcmRlci4gV2Ugd2lsbCBmaXggdGhpcyB1cCBh
dCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IGk7ICsraikgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3Nl
ZE1hcmtlZFRleHRzLmNvbnRhaW5zKG9mZnNldHNbal0ubWFya2VkVGV4dCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFs
dWUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT5t
YXJrZXIgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0
U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+dHlwZSwgb2Zm
c2V0c1tqXS5tYXJrZWRUZXh0LT5tYXJrZXIsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+aGlnaGxp
Z2h0TmFtZSB9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBvZmZzZXRTb0ZhciA9IG9mZnNldHNbaV0udmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01h
cmtlZFRleHQuaAppbmRleCBiMmI1YWEwZmZmMGQ3ZTY1NGQxNDM4MjA4Y2I5YWJhMmM3ZGFkODJh
Li43M2MwNjIxMWZlNGFhNDMzMmEyYjgyODQwMWM5Y2FkMTlmMDkxZDI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDYgKzQxLDcgQEAgc3RydWN0IE1hcmtl
ZFRleHQgewogICAgICAgICBTcGVsbGluZ0Vycm9yLAogICAgICAgICBUZXh0TWF0Y2gsCiAgICAg
ICAgIERpY3RhdGlvbkFsdGVybmF0aXZlcywKKyAgICAgICAgSGlnaGxpZ2h0LAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzg5
MzMzNTI+LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgogICAg
ICAgICBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLApAQCAtNTEsMTIgKzUzLDEzIEBA
IHN0cnVjdCBNYXJrZWRUZXh0IHsKICAgICB1bnNpZ25lZCBlbmRPZmZzZXQ7CiAgICAgVHlwZSB0
eXBlOwogICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqIG1hcmtlciB7IG51bGxwdHIg
fTsKKyAgICBTdHJpbmcgaGlnaGxpZ2h0TmFtZSB7IH07CiAKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBlbmRPZmZzZXQgPD0gc3RhcnRPZmZzZXQ7IH0KICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgTWFya2VkVGV4dCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hcmtlZFRleHQmIG90aGVyKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0ID09IG90aGVyLnN0YXJ0T2Zm
c2V0ICYmIGVuZE9mZnNldCA9PSBvdGhlci5lbmRPZmZzZXQgJiYgdHlwZSA9PSBvdGhlci50eXBl
ICYmIG1hcmtlciA9PSBvdGhlci5tYXJrZXI7CisgICAgICAgIHJldHVybiBzdGFydE9mZnNldCA9
PSBvdGhlci5zdGFydE9mZnNldCAmJiBlbmRPZmZzZXQgPT0gb3RoZXIuZW5kT2Zmc2V0ICYmIHR5
cGUgPT0gb3RoZXIudHlwZSAmJiBtYXJrZXIgPT0gb3RoZXIubWFya2VyICYmIGhpZ2hsaWdodE5h
bWUgPT0gb3RoZXIuaGlnaGxpZ2h0TmFtZTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggYWU4NGFiY2YxMzA1NDBmMmEzMTVkZTMzNGM2MzJk
NmRjZjMyZmNhZS4uMGQwOGY4MjQzNThlOWE4NGM4NTY0MGVjM2M4M2JlNTQ5ZWU2ZmQ1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNjQsNyArNjQsNyBAQCBj
bGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXI7CiBjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNzIFJlbmRlclRyZWVCdWlsZGVyOwotY2xhc3Mg
U2VsZWN0aW9uUmFuZ2VEYXRhOworY2xhc3MgUHNldWRvRWxlbWVudFJhbmdlRGF0YTsKIGNsYXNz
IFRyYW5zZm9ybVN0YXRlOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBhMDlhMzhkNmRiZDJiZTA2ZjA1
ZTdlODEwNjc4MWY0MzgwMjg4YjBiLi4zMzhjMzIzY2M4M2NlOGQ1Y2JlNjZmNzk1YzlhNGIzMjEy
ZDQ4NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAK
QEAgLTY2NSw4ICs2NjUsOCBAQCBib29sIFJlbmRlclJlcGxhY2VkOjppc1NlbGVjdGVkKCkgY29u
c3QKICAgICBpZiAoc3RhdGUgPT0gU2VsZWN0aW9uSW5zaWRlKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGF1dG8gc2VsZWN0aW9uU3RhcnQgPSB2aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQ
b3NpdGlvbigpOwotICAgIGF1dG8gc2VsZWN0aW9uRW5kID0gdmlldygpLnNlbGVjdGlvbigpLmVu
ZFBvc2l0aW9uKCk7CisgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IHZpZXcoKS5zZWxlY3Rpb24o
KS5zdGFydE9mZnNldCgpOworICAgIGF1dG8gc2VsZWN0aW9uRW5kID0gdmlldygpLnNlbGVjdGlv
bigpLmVuZE9mZnNldCgpOwogICAgIGlmIChzdGF0ZSA9PSBTZWxlY3Rpb25TdGFydCkKICAgICAg
ICAgcmV0dXJuICFzZWxlY3Rpb25TdGFydDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCmluZGV4IDhkMzc4YjkxZTkxYTlmYjAzOTNmYWRlMTliYWM4YjZmNzhlMjEwN2Uu
LjY5MDc5MzVmMTUwZDMwNzk2YTJiMzRhNTIzN2U5N2JkZWYyYzkxNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE0MjksOCArMTQyOSw4IEBAIExheW91dFJl
Y3QgUmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGluZUJveGVzKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPCiAgICAgICAgIHN0YXJ0UG9zID0gMDsKICAgICAgICAgZW5kUG9zID0g
dGV4dCgpLmxlbmd0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0YXJ0UG9zID0gdmlldygp
LnNlbGVjdGlvbigpLnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgZW5kUG9zID0gdmlldygpLnNl
bGVjdGlvbigpLmVuZFBvc2l0aW9uKCk7CisgICAgICAgIHN0YXJ0UG9zID0gdmlldygpLnNlbGVj
dGlvbigpLnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIGVuZFBvcyA9IHZpZXcoKS5zZWxlY3Rpb24o
KS5lbmRPZmZzZXQoKTsKICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9u
U3RhcnQpCiAgICAgICAgICAgICBlbmRQb3MgPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGVs
c2UgaWYgKHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uRW5kKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCmluZGV4IDhkNzBmNDIzNGIx
MDljYWVhYTkzODUwNWMzM2Q2ZjU1NDlmYzJkNDQuLjdjMjJjMjhlOGJlNzQwMmViM2FkZDBjNDc1
YzI0MDgyOGE1YmM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0TGluZUJveGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dExpbmVCb3hlcy5jcHAKQEAgLTM1MCw4ICszNTAsOCBAQCB2b2lkIFJlbmRlclRleHRMaW5l
Qm94ZXM6OnNldFNlbGVjdGlvblN0YXRlKFJlbmRlclRleHQmIHJlbmRlcmVyLCBSZW5kZXJPYmpl
Y3Q6OgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzdGFydCA9IHJlbmRlcmVy
LnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydFBvc2l0aW9uKCk7Ci0gICAgYXV0byBlbmQgPSByZW5k
ZXJlci52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKKyAgICBhdXRvIHN0YXJ0ID0g
cmVuZGVyZXIudmlldygpLnNlbGVjdGlvbigpLnN0YXJ0T2Zmc2V0KCk7CisgICAgYXV0byBlbmQg
PSByZW5kZXJlci52aWV3KCkuc2VsZWN0aW9uKCkuZW5kT2Zmc2V0KCk7CiAgICAgaWYgKHN0YXRl
ID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpIHsKICAgICAgICAgZW5kID0gcmVuZGVy
ZXIudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICAvLyB0byBoYW5kbGUgc2VsZWN0aW9uIGZyb20g
ZW5kIG9mIHRleHQgdG8gZW5kIG9mIGxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCmluZGV4IDE4NDJiMzBmYTMzNGQyZmM2NmY5OTcxYWU2MTA2YzJmZWM1ZGI5MmYuLmNiODJh
MGZlMDUxYzU4N2Q1M2M4MzhmMjdjNTMxMzM5ZGQ1MTE2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJu
IHRoZSByZW5kZXJlciB3aG9zZSBiYWNrZ3JvdW5kIHN0eWxlIGlzIHVzZWQgdG8gcGFpbnQgdGhl
IHJvb3QgYmFja2dyb3VuZC4KICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlckZvclJvb3RCYWNr
Z3JvdW5kKCkgY29uc3Q7CiAKLSAgICBTZWxlY3Rpb25SYW5nZURhdGEmIHNlbGVjdGlvbigpIHsg
cmV0dXJuIG1fc2VsZWN0aW9uOyB9CisgICAgUHNldWRvRWxlbWVudFJhbmdlRGF0YSYgc2VsZWN0
aW9uKCkgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25z
dDsKIApAQCAtMjIwLDcgKzIyMCw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9yZW5kZXJl
ckNvdW50IHsgMSB9OwogCiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UmVnaW9uPiBtX2Fj
Y3VtdWxhdGVkUmVwYWludFJlZ2lvbjsKLSAgICBTZWxlY3Rpb25SYW5nZURhdGEgbV9zZWxlY3Rp
b247CisgICAgUHNldWRvRWxlbWVudFJhbmdlRGF0YSBtX3NlbGVjdGlvbjsKIAogICAgIFdlYWtQ
dHI8UmVuZGVyTGF5ZXI+IG1fc3R5bGVDaGFuZ2VMYXllck11dGF0aW9uUm9vdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAppbmRleCBiOWJh
ZDBhMDlmMjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyLi5hMTAyNGNkYmEyOTE2NzM4ZjJj
YjI4MzhhNTlmNzhkNDgxMmVmYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApAQCAtNDMsMjEgKzQzLDE5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotbmFtZXNwYWNlIHsgLy8gU2VlIGJ1ZyAjMTc3ODA4LgotCi1zdHJ1Y3QgU2Vs
ZWN0aW9uRGF0YSB7CitzdHJ1Y3QgUHNldWRvRWxlbWVudERhdGEgewogICAgIHVzaW5nIFJlbmRl
cmVyTWFwID0gSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2Vs
ZWN0aW9uSW5mbz4+OwogICAgIHVzaW5nIFJlbmRlckJsb2NrTWFwID0gSGFzaE1hcDxjb25zdCBS
ZW5kZXJCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+PjsK
IAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvc2l0aW9uOwotICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBlbmRQb3NpdGlvbjsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7
CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGVuZE9mZnNldDsKICAgICBSZW5kZXJlck1hcCByZW5k
ZXJlcnM7CiAgICAgUmVuZGVyQmxvY2tNYXAgYmxvY2tzOwogfTsKIAotY2xhc3MgU2VsZWN0aW9u
SXRlcmF0b3IgeworY2xhc3MgUHNldWRvRWxlbWVudEl0ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBT
ZWxlY3Rpb25JdGVyYXRvcihSZW5kZXJPYmplY3QqIHN0YXJ0KQorICAgIFBzZXVkb0VsZW1lbnRJ
dGVyYXRvcihSZW5kZXJPYmplY3QqIHN0YXJ0KQogICAgICAgICA6IG1fY3VycmVudChzdGFydCkK
ICAgICB7CiAgICAgICAgIGNoZWNrRm9yU3Bhbm5lcigpOwpAQCAtOTYsMTcgKzk0LDE1IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKj4g
bV9zcGFubmVyU3RhY2s7CiB9OwogCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQogc3RhdGlj
IFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIsIHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBhdXRvKiBjaGlsZCA9IHJlbmRlcmVy
LmNoaWxkQXQob2Zmc2V0KTsKICAgICByZXR1cm4gY2hpbGQgPyBjaGlsZCA6IHJlbmRlcmVyLm5l
eHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbigpOwogfQogCi1zdGF0aWMgYm9vbCBpc1ZhbGlkUmVu
ZGVyZXJGb3JTZWxlY3Rpb24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgU2Vs
ZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24pCitzdGF0aWMgYm9vbCBpc1ZhbGlk
UmVuZGVyZXJGb3JDb250ZXh0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBz
ZXVkb0VsZW1lbnRSYW5nZURhdGE6OkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIChy
ZW5kZXJlci5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCAmcmVuZGVyZXIgPT0gc2VsZWN0aW9uLnN0
YXJ0KCkgfHwgJnJlbmRlcmVyID09IHNlbGVjdGlvbi5lbmQoKSkKKyAgICByZXR1cm4gKHJlbmRl
cmVyLmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8ICZyZW5kZXJlciA9PSBjb250ZXh0LnN0YXJ0KCkg
fHwgJnJlbmRlcmVyID09IGNvbnRleHQuZW5kKCkpCiAgICAgICAgICYmIHJlbmRlcmVyLnNlbGVj
dGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lCiAgICAgICAgICYmIHJl
bmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpOwogfQpAQCAtMTE3LDI0ICsxMTMsMjQgQEAgc3RhdGlj
IFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlcikKICAgICByZXR1cm4gaXM8UmVuZGVyVmlldz4oY29udGFpbmluZ0Jsb2NrKSA/
IG51bGxwdHIgOiBjb250YWluaW5nQmxvY2s7CiB9CiAKLXN0YXRpYyBTZWxlY3Rpb25EYXRhIGNv
bGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24sIGJvb2wg
cmVwYWludERpZmZlcmVuY2UpCitzdGF0aWMgUHNldWRvRWxlbWVudERhdGEgY29sbGVjdChjb25z
dCBQc2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjpDb250ZXh0JiByYW5nZURhdGEsIGJvb2wgcmVwYWlu
dERpZmZlcmVuY2UpCiB7Ci0gICAgU2VsZWN0aW9uRGF0YSBvbGRTZWxlY3Rpb25EYXRhIHsgc2Vs
ZWN0aW9uLnN0YXJ0UG9zaXRpb24oKSwgc2VsZWN0aW9uLmVuZFBvc2l0aW9uKCksIHsgfSwgeyB9
IH07CisgICAgUHNldWRvRWxlbWVudERhdGEgb2xkUHNldWRvRWxlbWVudERhdGEgeyByYW5nZURh
dGEuc3RhcnRPZmZzZXQoKSwgcmFuZ2VEYXRhLmVuZE9mZnNldCgpLCB7IH0sIHsgfSB9OwogICAg
IC8vIEJsb2NrcyBjb250YWluIHNlbGVjdGVkIG9iamVjdHMgYW5kIGZpbGwgZ2FwcyBiZXR3ZWVu
IHRoZW0sIGVpdGhlciBvbiB0aGUgbGVmdCwgcmlnaHQsIG9yIGluIGJldHdlZW4gbGluZXMgYW5k
IGJsb2Nrcy4KICAgICAvLyBJbiBvcmRlciB0byBnZXQgdGhlIHJlcGFpbnQgcmVjdCByaWdodCwg
d2UgaGF2ZSB0byBleGFtaW5lIGxlZnQsIG1pZGRsZSwgYW5kIHJpZ2h0IHJlY3RzIGluZGl2aWR1
YWxseSwgc2luY2Ugb3RoZXJ3aXNlCiAgICAgLy8gdGhlIHVuaW9uIG9mIHRob3NlIHJlY3RzIG1p
Z2h0IHJlbWFpbiB0aGUgc2FtZSBldmVuIHdoZW4gY2hhbmdlcyBoYXZlIG9jY3VycmVkLgotICAg
IGF1dG8qIHN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0KCk7CisgICAgYXV0byogc3RhcnQgPSByYW5n
ZURhdGEuc3RhcnQoKTsKICAgICBSZW5kZXJPYmplY3QqIHN0b3AgPSBudWxscHRyOwotICAgIGlm
IChzZWxlY3Rpb24uZW5kKCkpCi0gICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24o
KnNlbGVjdGlvbi5lbmQoKSwgc2VsZWN0aW9uLmVuZFBvc2l0aW9uKCkudmFsdWUoKSk7Ci0gICAg
U2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Ioc3RhcnQpOworICAgIGlmIChyYW5n
ZURhdGEuZW5kKCkpCisgICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKnJhbmdl
RGF0YS5lbmQoKSwgcmFuZ2VEYXRhLmVuZE9mZnNldCgpLnZhbHVlKCkpOworICAgIFBzZXVkb0Vs
ZW1lbnRJdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihzdGFydCk7CiAgICAgd2hpbGUgKHN0YXJ0
ICYmIHN0YXJ0ICE9IHN0b3ApIHsKLSAgICAgICAgaWYgKGlzVmFsaWRSZW5kZXJlckZvclNlbGVj
dGlvbigqc3RhcnQsIHNlbGVjdGlvbikpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRSZW5kZXJlckZv
ckNvbnRleHQoKnN0YXJ0LCByYW5nZURhdGEpKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJl
IHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5
IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEu
cmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3Rh
cnQsIHRydWUpKTsKKyAgICAgICAgICAgIG9sZFBzZXVkb0VsZW1lbnREYXRhLnJlbmRlcmVycy5z
ZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7
CiAgICAgICAgICAgICBpZiAocmVwYWludERpZmZlcmVuY2UpIHsKICAgICAgICAgICAgICAgICBm
b3IgKGF1dG8qIGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpzdGFydCk7IGJsb2Nr
OyBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93VmlldygqYmxvY2spKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9IG9sZFNlbGVjdGlvbkRhdGEuYmxvY2tzLmFkZChi
bG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBhdXRv
JiBibG9ja0luZm8gPSBvbGRQc2V1ZG9FbGVtZW50RGF0YS5ibG9ja3MuYWRkKGJsb2NrLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8p
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgYmxv
Y2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpibG9jayk7CkBA
IC0xNDMsMTAgKzEzOSwxMCBAQCBzdGF0aWMgU2VsZWN0aW9uRGF0YSBjb2xsZWN0KGNvbnN0IFNl
bGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dCYgc2VsZWN0aW9uLCBib29sCiAgICAgICAgIH0KICAg
ICAgICAgc3RhcnQgPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCk7CiAgICAgfQotICAgIHJldHVy
biBvbGRTZWxlY3Rpb25EYXRhOworICAgIHJldHVybiBvbGRQc2V1ZG9FbGVtZW50RGF0YTsKIH0K
IAotU2VsZWN0aW9uUmFuZ2VEYXRhOjpTZWxlY3Rpb25SYW5nZURhdGEoUmVuZGVyVmlldyYgdmll
dykKK1BzZXVkb0VsZW1lbnRSYW5nZURhdGE6OlBzZXVkb0VsZW1lbnRSYW5nZURhdGEoUmVuZGVy
VmlldyYgdmlldykKICAgICA6IG1fcmVuZGVyVmlldyh2aWV3KQogI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQogICAgICwgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIodmlldykKQEAgLTE1NCwx
NSArMTUwLDQ5IEBAIFNlbGVjdGlvblJhbmdlRGF0YTo6U2VsZWN0aW9uUmFuZ2VEYXRhKFJlbmRl
clZpZXcmIHZpZXcpCiB7CiB9CiAKLXZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXQoY29uc3Qg
Q29udGV4dCYgc2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQordm9pZCBQ
c2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjpzZXRDb250ZXh0KGNvbnN0IENvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgaWYgKChjb250ZXh0LnN0YXJ0KCkgJiYgIWNvbnRleHQuZW5kKCkpIHx8IChjb250
ZXh0LmVuZCgpICYmICFjb250ZXh0LnN0YXJ0KCkpKQorICAgICAgICByZXR1cm47CisgICAgbV9j
b250ZXh0ID0gY29udGV4dDsKK30KKworUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBQc2V1
ZG9FbGVtZW50UmFuZ2VEYXRhOjpzZWxlY3Rpb25TdGF0ZUZvclJlbmRlcmVyKFJlbmRlck9iamVj
dCYgcmVuZGVyZXIpCit7CisgICAgLy8gPE1NRz4gdGhlc2Ugd2VyZSBwdWxsZWQgZnJvbSBlbHN3
aGVyZSBpbiB0aGlzIGZpbGUsIHJlZmFjdG9yIHRvIG1ha2UgdGhpcyB3b3JrLiBIb3BlZnVsbHku
CisgICAgaWYgKCZyZW5kZXJlciA9PSBtX2NvbnRleHQuc3RhcnQoKSB8fCByZW5kZXJlci5pc0Rl
c2NlbmRhbnRPZihtX2NvbnRleHQuc3RhcnQoKSkpIHsKKyAgICAgICAgaWYgKG1fY29udGV4dC5z
dGFydCgpICYmIG1fY29udGV4dC5lbmQoKSAmJiBtX2NvbnRleHQuc3RhcnQoKSA9PSBtX2NvbnRl
eHQuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3Ro
OworICAgICAgICBpZiAobV9jb250ZXh0LnN0YXJ0KCkpCisgICAgICAgICAgICByZXR1cm4gUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydDsKKyAgICB9CisgICAgaWYgKCZyZW5kZXJlciA9PSBt
X2NvbnRleHQuZW5kKCkgfHwgcmVuZGVyZXIuaXNEZXNjZW5kYW50T2YobV9jb250ZXh0LmVuZCgp
KSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kOworCisgICAgUmVu
ZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQgPSBudWxscHRyOworICAgIGF1dG8qIHNlbGVjdGlvbkRh
dGFFbmQgPSBtX2NvbnRleHQuZW5kKCk7CisgICAgaWYgKHNlbGVjdGlvbkRhdGFFbmQpCisgICAg
ICAgIHNlbGVjdGlvbkVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqc2VsZWN0aW9uRGF0YUVu
ZCwgbV9jb250ZXh0LmVuZE9mZnNldCgpLnZhbHVlKCkpOworICAgIFBzZXVkb0VsZW1lbnRJdGVy
YXRvciBzZWxlY3Rpb25JdGVyYXRvcihtX2NvbnRleHQuc3RhcnQoKSk7CisgICAgZm9yIChhdXRv
KiBjdXJyZW50UmVuZGVyZXIgPSBtX2NvbnRleHQuc3RhcnQoKTsgY3VycmVudFJlbmRlcmVyICYm
IGN1cnJlbnRSZW5kZXJlciAhPSBtX2NvbnRleHQuZW5kKCk7IGN1cnJlbnRSZW5kZXJlciA9IHNl
bGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgeworICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyID09
IG1fY29udGV4dC5zdGFydCgpIHx8IGN1cnJlbnRSZW5kZXJlciA9PSBtX2NvbnRleHQuZW5kKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFjdXJyZW50UmVuZGVyZXItPmNh
bkJlU2VsZWN0aW9uTGVhZigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgm
cmVuZGVyZXIgPT0gY3VycmVudFJlbmRlcmVyKQorICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uSW5zaWRlOworICAgIH0KKyAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25Ob25lOworICAgIAorfQorCit2b2lkIFBzZXVkb0VsZW1lbnRSYW5nZURhdGE6OnNl
dFNlbGVjdGlvbihjb25zdCBDb250ZXh0JiBjb250ZXh0LCBSZXBhaW50TW9kZSBibG9ja1JlcGFp
bnRNb2RlKQogewotICAgIC8vIE1ha2Ugc3VyZSBib3RoIG91ciBzdGFydCBhbmQgZW5kIG9iamVj
dHMgYXJlIGRlZmluZWQuCi0gICAgLy8gQ2hlY2sgd3d3Lm1zbmJjLmNvbSBhbmQgdHJ5IGNsaWNr
aW5nIGFyb3VuZCB0byBmaW5kIHRoZSBjYXNlIHdoZXJlIHRoaXMgaGFwcGVuZWQuCi0gICAgaWYg
KChzZWxlY3Rpb24uc3RhcnQoKSAmJiAhc2VsZWN0aW9uLmVuZCgpKSB8fCAoc2VsZWN0aW9uLmVu
ZCgpICYmICFzZWxlY3Rpb24uc3RhcnQoKSkpCisgICAgaWYgKChjb250ZXh0LnN0YXJ0KCkgJiYg
IWNvbnRleHQuZW5kKCkpIHx8IChjb250ZXh0LmVuZCgpICYmICFjb250ZXh0LnN0YXJ0KCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgLy8gSnVzdCByZXR1cm4gaWYgdGhlIHNlbGVjdGlvbiBoYXNu
J3QgY2hhbmdlZC4KICAgICBhdXRvIGlzQ2FyZXQgPSBtX3JlbmRlclZpZXcuZnJhbWUoKS5zZWxl
Y3Rpb24oKS5pc0NhcmV0KCk7Ci0gICAgaWYgKHNlbGVjdGlvbiA9PSBtX3NlbGVjdGlvbkNvbnRl
eHQgJiYgbV9zZWxlY3Rpb25XYXNDYXJldCA9PSBpc0NhcmV0KQorICAgIGlmIChjb250ZXh0ID09
IG1fY29udGV4dCAmJiBtX3NlbGVjdGlvbldhc0NhcmV0ID09IGlzQ2FyZXQpCiAgICAgICAgIHJl
dHVybjsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAvLyBDbGVhciB0aGUgY3Vy
cmVudCByZWN0cyBhbmQgY3JlYXRlIGEgbm90aWZpZXIgZm9yIHRoZSBuZXcgcmVjdHMgd2UgYXJl
IGFib3V0IHRvIGdhdGhlci4KQEAgLTE3MCwyNCArMjAwLDI0IEBAIHZvaWQgU2VsZWN0aW9uUmFu
Z2VEYXRhOjpzZXQoY29uc3QgQ29udGV4dCYgc2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1Jl
cGFpbnRNCiAgICAgYXV0byByZWN0Tm90aWZpZXIgPSBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5j
bGVhckFuZENyZWF0ZU5vdGlmaWVyKCk7CiAjZW5kaWYKICAgICBtX3NlbGVjdGlvbldhc0NhcmV0
ID0gaXNDYXJldDsKLSAgICBhcHBseShzZWxlY3Rpb24sIGJsb2NrUmVwYWludE1vZGUpOworICAg
IGFwcGx5U2VsZWN0aW9uKGNvbnRleHQsIGJsb2NrUmVwYWludE1vZGUpOwogfQogCi12b2lkIFNl
bGVjdGlvblJhbmdlRGF0YTo6Y2xlYXIoKQordm9pZCBQc2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjpj
bGVhclNlbGVjdGlvbigpCiB7CiAgICAgbV9yZW5kZXJWaWV3LmxheWVyKCktPnJlcGFpbnRCbG9j
a1NlbGVjdGlvbkdhcHMoKTsKLSAgICBzZXQoeyB9LCBTZWxlY3Rpb25SYW5nZURhdGE6OlJlcGFp
bnRNb2RlOjpOZXdNaW51c09sZCk7CisgICAgc2V0U2VsZWN0aW9uKHsgfSwgUHNldWRvRWxlbWVu
dFJhbmdlRGF0YTo6UmVwYWludE1vZGU6Ok5ld01pbnVzT2xkKTsKIH0KIAotdm9pZCBTZWxlY3Rp
b25SYW5nZURhdGE6OnJlcGFpbnQoKSBjb25zdAordm9pZCBQc2V1ZG9FbGVtZW50UmFuZ2VEYXRh
OjpyZXBhaW50KCkgY29uc3QKIHsKICAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4gcHJvY2Vzc2Vk
QmxvY2tzOwogICAgIFJlbmRlck9iamVjdCogZW5kID0gbnVsbHB0cjsKLSAgICBpZiAobV9zZWxl
Y3Rpb25Db250ZXh0LmVuZCgpKQotICAgICAgICBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24o
Km1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9u
KCkudmFsdWUoKSk7Ci0gICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3IobV9z
ZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkpOworICAgIGlmIChtX2NvbnRleHQuZW5kKCkpCisgICAg
ICAgIGVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqbV9jb250ZXh0LmVuZCgpLCBtX2NvbnRl
eHQuZW5kT2Zmc2V0KCkudmFsdWUoKSk7CisgICAgUHNldWRvRWxlbWVudEl0ZXJhdG9yIHNlbGVj
dGlvbkl0ZXJhdG9yKG1fY29udGV4dC5zdGFydCgpKTsKICAgICBmb3IgKGF1dG8qIHJlbmRlcmVy
ID0gc2VsZWN0aW9uSXRlcmF0b3IuY3VycmVudCgpOyByZW5kZXJlciAmJiByZW5kZXJlciAhPSBl
bmQ7IHJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7Ci0gICAgICAgIGlmICgh
cmVuZGVyZXItPmNhbkJlU2VsZWN0aW9uTGVhZigpICYmIHJlbmRlcmVyICE9IG1fc2VsZWN0aW9u
Q29udGV4dC5zdGFydCgpICYmIHJlbmRlcmVyICE9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkK
KyAgICAgICAgaWYgKCFyZW5kZXJlci0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYgcmVuZGVyZXIg
IT0gbV9jb250ZXh0LnN0YXJ0KCkgJiYgcmVuZGVyZXIgIT0gbV9jb250ZXh0LmVuZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChyZW5kZXJlci0+c2VsZWN0aW9uU3RhdGUo
KSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTIwMSwxNiArMjMxLDE2IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjpyZXBhaW50KCkg
Y29uc3QKICAgICB9CiB9CiAKLUludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91
bmRzKENsaXBUb1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAorSW50
UmVjdCBQc2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVD
b250ZW50IGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAogewotICAgIFNlbGVjdGlvbkRhdGE6
OlJlbmRlcmVyTWFwIHJlbmRlcmVyczsKLSAgICBhdXRvKiBzdGFydCA9IG1fc2VsZWN0aW9uQ29u
dGV4dC5zdGFydCgpOworICAgIFBzZXVkb0VsZW1lbnREYXRhOjpSZW5kZXJlck1hcCByZW5kZXJl
cnM7CisgICAgYXV0byogc3RhcnQgPSBtX2NvbnRleHQuc3RhcnQoKTsKICAgICBSZW5kZXJPYmpl
Y3QqIHN0b3AgPSBudWxscHRyOwotICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCi0g
ICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKm1fc2VsZWN0aW9uQ29udGV4dC5l
bmQoKSwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uKCkudmFsdWUoKSk7Ci0gICAgU2Vs
ZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Ioc3RhcnQpOworICAgIGlmIChtX2NvbnRl
eHQuZW5kKCkpCisgICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKm1fY29udGV4
dC5lbmQoKSwgbV9jb250ZXh0LmVuZE9mZnNldCgpLnZhbHVlKCkpOworICAgIFBzZXVkb0VsZW1l
bnRJdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihzdGFydCk7CiAgICAgd2hpbGUgKHN0YXJ0ICYm
IHN0YXJ0ICE9IHN0b3ApIHsKLSAgICAgICAgaWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFm
KCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9z
ZWxlY3Rpb25Db250ZXh0LmVuZCgpKQorICAgICAgICBpZiAoKHN0YXJ0LT5jYW5CZVNlbGVjdGlv
bkxlYWYoKSB8fCBzdGFydCA9PSBtX2NvbnRleHQuc3RhcnQoKSB8fCBzdGFydCA9PSBtX2NvbnRl
eHQuZW5kKCkpCiAgICAgICAgICAgICAmJiBzdGFydC0+c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVz
cG9uc2libGUgZm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVz
dCBiZSBleGFtaW5lZCBhcyB3ZWxsLgogICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwg
bWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250
ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKQEAgLTI0MCwzMSArMjcwLDMxIEBA
IEludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVD
b250ZW50IGNsaXBUb1Zpc2libGVDb250CiAgICAgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KHNlbGVj
dGlvblJlY3QpOwogfQogCi12b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6YXBwbHkoY29uc3QgQ29u
dGV4dCYgbmV3U2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQordm9pZCBQ
c2V1ZG9FbGVtZW50UmFuZ2VEYXRhOjphcHBseVNlbGVjdGlvbihjb25zdCBDb250ZXh0JiBuZXdT
ZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUpCiB7Ci0gICAgYXV0byBvbGRT
ZWxlY3Rpb25EYXRhID0gY29sbGVjdChtX3NlbGVjdGlvbkNvbnRleHQsIGJsb2NrUmVwYWludE1v
ZGUgPT0gUmVwYWludE1vZGU6Ok5ld1hPUk9sZCk7CisgICAgYXV0byBvbGRTZWxlY3Rpb25EYXRh
ID0gY29sbGVjdChtX2NvbnRleHQsIGJsb2NrUmVwYWludE1vZGUgPT0gUmVwYWludE1vZGU6Ok5l
d1hPUk9sZCk7CiAgICAgLy8gUmVtb3ZlIGN1cnJlbnQgc2VsZWN0aW9uLgogICAgIGZvciAoYXV0
byogcmVuZGVyZXIgOiBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5rZXlzKCkpCiAgICAgICAg
IHJlbmRlcmVyLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uTm9uZSk7Ci0gICAgbV9zZWxlY3Rpb25Db250ZXh0ID0gbmV3U2VsZWN0aW9uOwotICAgIGF1
dG8qIHNlbGVjdGlvblN0YXJ0ID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCk7CisgICAgbV9j
b250ZXh0ID0gbmV3U2VsZWN0aW9uOworICAgIGF1dG8qIHNlbGVjdGlvblN0YXJ0ID0gbV9jb250
ZXh0LnN0YXJ0KCk7CiAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3Rpb24gc3RhdHVzIG9mIGFsbCBv
YmplY3RzIGJldHdlZW4gc2VsZWN0aW9uU3RhcnQgYW5kIHNlbGVjdGlvbkVuZAotICAgIGlmIChz
ZWxlY3Rpb25TdGFydCAmJiBzZWxlY3Rpb25TdGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5k
KCkpCisgICAgaWYgKHNlbGVjdGlvblN0YXJ0ICYmIHNlbGVjdGlvblN0YXJ0ID09IG1fY29udGV4
dC5lbmQoKSkKICAgICAgICAgc2VsZWN0aW9uU3RhcnQtPnNldFNlbGVjdGlvblN0YXRlSWZOZWVk
ZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYg
KHNlbGVjdGlvblN0YXJ0KQogICAgICAgICAgICAgc2VsZWN0aW9uU3RhcnQtPnNldFNlbGVjdGlv
blN0YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCk7Ci0gICAgICAgIGlm
IChhdXRvKiBlbmQgPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgIGlmIChhdXRv
KiBlbmQgPSBtX2NvbnRleHQuZW5kKCkpCiAgICAgICAgICAgICBlbmQtPnNldFNlbGVjdGlvblN0
YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpOwogICAgIH0KIAogICAgIFJl
bmRlck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKLSAgICBhdXRvKiBzZWxlY3Rpb25E
YXRhRW5kID0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpOworICAgIGF1dG8qIHNlbGVjdGlvbkRh
dGFFbmQgPSBtX2NvbnRleHQuZW5kKCk7CiAgICAgaWYgKHNlbGVjdGlvbkRhdGFFbmQpCi0gICAg
ICAgIHNlbGVjdGlvbkVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqc2VsZWN0aW9uRGF0YUVu
ZCwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uKCkudmFsdWUoKSk7Ci0gICAgU2VsZWN0
aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Ioc2VsZWN0aW9uU3RhcnQpOworICAgICAgICBz
ZWxlY3Rpb25FbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKnNlbGVjdGlvbkRhdGFFbmQsIG1f
Y29udGV4dC5lbmRPZmZzZXQoKS52YWx1ZSgpKTsKKyAgICBQc2V1ZG9FbGVtZW50SXRlcmF0b3Ig
c2VsZWN0aW9uSXRlcmF0b3Ioc2VsZWN0aW9uU3RhcnQpOwogICAgIGZvciAoYXV0byogY3VycmVu
dFJlbmRlcmVyID0gc2VsZWN0aW9uU3RhcnQ7IGN1cnJlbnRSZW5kZXJlciAmJiBjdXJyZW50UmVu
ZGVyZXIgIT0gc2VsZWN0aW9uRW5kOyBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25JdGVyYXRv
ci5uZXh0KCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSBzZWxlY3Rpb25TdGFy
dCB8fCBjdXJyZW50UmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQorICAgICAg
ICBpZiAoY3VycmVudFJlbmRlcmVyID09IHNlbGVjdGlvblN0YXJ0IHx8IGN1cnJlbnRSZW5kZXJl
ciA9PSBtX2NvbnRleHQuZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYg
KCFjdXJyZW50UmVuZGVyZXItPmNhbkJlU2VsZWN0aW9uTGVhZigpKQogICAgICAgICAgICAgY29u
dGludWU7CkBAIC0yNzYsMTEgKzMwNiwxMSBAQCB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6YXBw
bHkoY29uc3QgQ29udGV4dCYgbmV3U2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcAogCiAg
ICAgLy8gTm93IHRoYXQgdGhlIHNlbGVjdGlvbiBzdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIGZvciB0
aGUgbmV3IG9iamVjdHMsIHdhbGsgdGhlbSBhZ2FpbiBhbmQKICAgICAvLyBwdXQgdGhlbSBpbiB0
aGUgbmV3IG9iamVjdHMgbGlzdC4KLSAgICBTZWxlY3Rpb25EYXRhOjpSZW5kZXJlck1hcCBuZXdT
ZWxlY3RlZFJlbmRlcmVyczsKLSAgICBTZWxlY3Rpb25EYXRhOjpSZW5kZXJCbG9ja01hcCBuZXdT
ZWxlY3RlZEJsb2NrczsKLSAgICBzZWxlY3Rpb25JdGVyYXRvciA9IFNlbGVjdGlvbkl0ZXJhdG9y
KHNlbGVjdGlvblN0YXJ0KTsKKyAgICBQc2V1ZG9FbGVtZW50RGF0YTo6UmVuZGVyZXJNYXAgbmV3
U2VsZWN0ZWRSZW5kZXJlcnM7CisgICAgUHNldWRvRWxlbWVudERhdGE6OlJlbmRlckJsb2NrTWFw
IG5ld1NlbGVjdGVkQmxvY2tzOworICAgIHNlbGVjdGlvbkl0ZXJhdG9yID0gUHNldWRvRWxlbWVu
dEl0ZXJhdG9yKHNlbGVjdGlvblN0YXJ0KTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJl
ciA9IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9
IHNlbGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgp
KSB7Ci0gICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKmN1cnJlbnRSZW5k
ZXJlciwgbV9zZWxlY3Rpb25Db250ZXh0KSkgeworICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVy
Rm9yQ29udGV4dCgqY3VycmVudFJlbmRlcmVyLCBtX2NvbnRleHQpKSB7CiAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4gc2VsZWN0aW9uSW5mbyA9IG1ha2VV
bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmN1cnJlbnRSZW5kZXJlciwgdHJ1ZSk7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlY3QgOiBz
ZWxlY3Rpb25JbmZvLT5jb2xsZWN0ZWRTZWxlY3Rpb25SZWN0cygpKQpAQCAtMzEyLDggKzM0Miw4
IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxl
Y3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgIGF1dG8qIG5ld0luZm8gPSBuZXdT
ZWxlY3RlZFJlbmRlcmVycy5nZXQocmVuZGVyZXIpOwogICAgICAgICBhdXRvKiBvbGRJbmZvID0g
c2VsZWN0ZWRSZW5kZXJlckluZm8udmFsdWUuZ2V0KCk7CiAgICAgICAgIGlmICghbmV3SW5mbyB8
fCBvbGRJbmZvLT5yZWN0KCkgIT0gbmV3SW5mby0+cmVjdCgpIHx8IG9sZEluZm8tPnN0YXRlKCkg
IT0gbmV3SW5mby0+c3RhdGUoKQotICAgICAgICAgICAgfHwgKG1fc2VsZWN0aW9uQ29udGV4dC5z
dGFydCgpID09IHJlbmRlcmVyICYmIG9sZFNlbGVjdGlvbkRhdGEuc3RhcnRQb3NpdGlvbiAhPSBt
X3NlbGVjdGlvbkNvbnRleHQuc3RhcnRQb3NpdGlvbigpKQotICAgICAgICAgICAgfHwgKG1fc2Vs
ZWN0aW9uQ29udGV4dC5lbmQoKSA9PSByZW5kZXJlciAmJiBvbGRTZWxlY3Rpb25EYXRhLmVuZFBv
c2l0aW9uICE9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbigpKSkgeworICAgICAgICAg
ICAgfHwgKG1fY29udGV4dC5zdGFydCgpID09IHJlbmRlcmVyICYmIG9sZFNlbGVjdGlvbkRhdGEu
c3RhcnRPZmZzZXQgIT0gbV9jb250ZXh0LnN0YXJ0T2Zmc2V0KCkpCisgICAgICAgICAgICB8fCAo
bV9jb250ZXh0LmVuZCgpID09IHJlbmRlcmVyICYmIG9sZFNlbGVjdGlvbkRhdGEuZW5kT2Zmc2V0
ICE9IG1fY29udGV4dC5lbmRPZmZzZXQoKSkpIHsKICAgICAgICAgICAgIG9sZEluZm8tPnJlcGFp
bnQoKTsKICAgICAgICAgICAgIGlmIChuZXdJbmZvKSB7CiAgICAgICAgICAgICAgICAgbmV3SW5m
by0+cmVwYWludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdl
RGF0YS5oCmluZGV4IDg5YWViZTc0NjE4NGZlM2VmNTRkNThmYzU3MDEyZmFkMDM1OTFmYzguLjNj
YTg2ZjJiYjdmYmZjZDQ3MzMyMjQxNTJkYWU4YzRhYzZlNWVlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKQEAgLTQwLDkgKzQwLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgT2xkU2VsZWN0aW9uRGF0YTsKICAgICAKLWNsYXNz
IFNlbGVjdGlvblJhbmdlRGF0YSB7CitjbGFzcyBQc2V1ZG9FbGVtZW50UmFuZ2VEYXRhIHsKIHB1
YmxpYzoKLSAgICBTZWxlY3Rpb25SYW5nZURhdGEoUmVuZGVyVmlldyYpOworICAgIFBzZXVkb0Vs
ZW1lbnRSYW5nZURhdGEoUmVuZGVyVmlldyYpOwogICAgIAogICAgIGNsYXNzIENvbnRleHQgewog
ICAgIHB1YmxpYzoKQEAgLTUwLDUzICs1MCw1OCBAQCBwdWJsaWM6CiAgICAgICAgIENvbnRleHQo
UmVuZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBlbmQsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCiAgICAgICAgICAgICA6IG1fc3RhcnQobWFrZVdlYWtQ
dHIoc3RhcnQpKQogICAgICAgICAgICAgLCBtX2VuZChtYWtlV2Vha1B0cihlbmQpKQotICAgICAg
ICAgICAgLCBtX3N0YXJ0UG9zaXRpb24oc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICAsIG1fZW5k
UG9zaXRpb24oZW5kT2Zmc2V0KQorICAgICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zm
c2V0KQorICAgICAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCiAgICAgICAgIFJlbmRlck9iamVjdCogc3RhcnQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0LmdldCgpOyB9CiAgICAgICAgIFJlbmRlck9iamVjdCogZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9lbmQuZ2V0KCk7IH0KLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0UG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0UG9zaXRpb247IH0KLSAgICAgICAgT3B0aW9uYWw8
dW5zaWduZWQ+IGVuZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRQb3NpdGlvbjsgfQor
ICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0T2Zmc2V0OyB9CisgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb250ZXh0JiBvdGhlcikgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG1fc3RhcnQgPT0gb3RoZXIubV9zdGFydCAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZCAmJiBtX3N0
YXJ0UG9zaXRpb24gPT0gb3RoZXIubV9zdGFydFBvc2l0aW9uICYmIG1fZW5kUG9zaXRpb24gPT0g
b3RoZXIubV9lbmRQb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBtX3N0YXJ0ID09IG90aGVy
Lm1fc3RhcnQgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQgJiYgbV9zdGFydE9mZnNldCA9PSBvdGhl
ci5tX3N0YXJ0T2Zmc2V0ICYmIG1fZW5kT2Zmc2V0ID09IG90aGVyLm1fZW5kT2Zmc2V0OwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWFrUHRyPFJlbmRlck9iamVjdD4gbV9z
dGFydDsKICAgICAgICAgV2Vha1B0cjxSZW5kZXJPYmplY3Q+IG1fZW5kOwotICAgICAgICBPcHRp
b25hbDx1bnNpZ25lZD4gbV9zdGFydFBvc2l0aW9uOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbV9lbmRQb3NpdGlvbjsKKyAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhcnRPZmZz
ZXQ7CisgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX2VuZE9mZnNldDsKICAgICB9OwotCisg
ICAgCisgICAgdm9pZCBzZXRDb250ZXh0KGNvbnN0IENvbnRleHQmKTsKKyAgICAKICAgICBlbnVt
IGNsYXNzIFJlcGFpbnRNb2RlIHsgTmV3WE9ST2xkLCBOZXdNaW51c09sZCwgTm90aGluZyB9Owot
ICAgIHZvaWQgc2V0KGNvbnN0IENvbnRleHQmLCBSZXBhaW50TW9kZSA9IFJlcGFpbnRNb2RlOjpO
ZXdYT1JPbGQpOwotICAgIGNvbnN0IENvbnRleHQmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vs
ZWN0aW9uQ29udGV4dDsgfQorICAgIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IENvbnRleHQmLCBS
ZXBhaW50TW9kZSA9IFJlcGFpbnRNb2RlOjpOZXdYT1JPbGQpOworICAgIGNvbnN0IENvbnRleHQm
IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQogCi0gICAgUmVuZGVyT2JqZWN0KiBz
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpOyB9Ci0gICAg
UmVuZGVyT2JqZWN0KiBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkNvbnRleHQuZW5k
KCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
LnN0YXJ0KCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dC5lbmQoKTsgfQogCi0gICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgQVNT
RVJUKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydFBvc2l0aW9uKCkpOyByZXR1cm4gbV9zZWxlY3Rp
b25Db250ZXh0LnN0YXJ0UG9zaXRpb24oKS52YWx1ZU9yKDApOyB9Ci0gICAgdW5zaWduZWQgZW5k
UG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVChtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24o
KSk7IHJldHVybiBtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24oKS52YWx1ZU9yKDApOyB9
CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IEFTU0VSVChtX2NvbnRleHQuc3Rh
cnRPZmZzZXQoKSk7IHJldHVybiBtX2NvbnRleHQuc3RhcnRPZmZzZXQoKS52YWx1ZU9yKDApOyB9
CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyBBU1NFUlQobV9jb250ZXh0LmVuZE9m
ZnNldCgpKTsgcmV0dXJuIG1fY29udGV4dC5lbmRPZmZzZXQoKS52YWx1ZU9yKDApOyB9CiAKLSAg
ICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBjbGVhclNlbGVjdGlvbigpOwogICAgIEludFJlY3Qg
Ym91bmRzKCkgY29uc3QgeyByZXR1cm4gY29sbGVjdEJvdW5kcyhDbGlwVG9WaXNpYmxlQ29udGVu
dDo6Tm8pOyB9CiAgICAgSW50UmVjdCBib3VuZHNDbGlwcGVkVG9WaXNpYmxlQ29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIGNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcyk7IH0K
ICAgICB2b2lkIHJlcGFpbnQoKSBjb25zdDsKKyAgICAKKyAgICBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvblN0YXRlIHNlbGVjdGlvblN0YXRlRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0Jik7CiAKIHBy
aXZhdGU6CiAgICAgZW51bSBjbGFzcyBDbGlwVG9WaXNpYmxlQ29udGVudCB7IFllcywgTm8gfTsK
ICAgICBJbnRSZWN0IGNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0Owot
ICAgIHZvaWQgYXBwbHkoY29uc3QgQ29udGV4dCYsIFJlcGFpbnRNb2RlKTsKKyAgICB2b2lkIGFw
cGx5U2VsZWN0aW9uKGNvbnN0IENvbnRleHQmLCBSZXBhaW50TW9kZSk7CiAKICAgICBjb25zdCBS
ZW5kZXJWaWV3JiBtX3JlbmRlclZpZXc7CisgICAgQ29udGV4dCBtX2NvbnRleHQ7CisgICAgCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgU2VsZWN0aW9uUmVjdEdhdGhlcmVyIG1f
c2VsZWN0aW9uUmVjdEdhdGhlcmVyOwogI2VuZGlmCi0gICAgQ29udGV4dCBtX3NlbGVjdGlvbkNv
bnRleHQ7CiAgICAgYm9vbCBtX3NlbGVjdGlvbldhc0NhcmV0IHsgZmFsc2UgfTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MDI2ZGY0
OTk3MWM4ZmY3MDYxOGViMWExMGFjNDJhMjliZGFhMGIxLi40Mzg1OGYyN2Q1YWM0M2M5ZjU2ZTRh
OGUyNTU2ZDZhZTc2M2RmZmEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTItMTggIE1lZ2FuIEdhcmRuZXIg
IDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBQYWludCBoaWdobGlnaHRzIHNw
ZWNpZmllZCBpbiBDU1MgSGlnaGxpZ2h0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXhwYW5kIE1hcmtlZFRleHQgdG8gdGFrZSBhIHN0eWxlIG5h
bWUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKwogMjAxOS0xMi0xOCAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdC1sbGRiLXdlYmtp
dDogUnVuIGluIENJIChGb2xsb3ctdXAgZml4KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwCmluZGV4IDVhMTYyYzYwZWM5NmYwZGMyYWZhMDY4
MGUzYzFkODNkMGRiZmU4MGYuLjA2ODFjYWI0MzY3YzUyMzZhOWI1NjQyOGFkNmYxMDc0NWJhOTE3
ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRU
ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4
dC5jcHAKQEAgLTU1LDYgKzU1LDggQEAgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSYgb3MsIE1hcmtlZFRleHQ6OlR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIG9zIDw8ICJT
cGVsbGluZ0Vycm9yIjsKICAgICBjYXNlIE1hcmtlZFRleHQ6OlRleHRNYXRjaDoKICAgICAgICAg
cmV0dXJuIG9zIDw8ICJUZXh0TWF0Y2giOworICAgIGNhc2UgTWFya2VkVGV4dDo6SGlnaGxpZ2h0
OgorICAgICAgICByZXR1cm4gb3MgPDwgIkhpZ2hsaWdodCI7CiAgICAgY2FzZSBNYXJrZWRUZXh0
OjpVbm1hcmtlZDoKICAgICAgICAgcmV0dXJuIG9zIDw8ICJVbm1hcmtlZCI7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggOGVmNjhkZDZlZDY5N2M0ZGI4YjcxMjdjMzVi
MzY2MGQzNGY4OTgxZi4uYjdlYzNkNWUxMWM3Zjk3MDY3YmVmNGQyMzg5NjkyYWI4ZGExNzg3NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTIt
MTggIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBQ
YWludCBoaWdobGlnaHRzIHNwZWNpZmllZCBpbiBDU1MgSGlnaGxpZ2h0IEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzE4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hp
Z2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQuaHRtbDogQWRkZWQu
CisKIDIwMTktMTItMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZWJhc2VsaW5lIGFsbCBzZXJ2aWNlIHdvcmtlcnMgdGVzdHMgYW5kIHVu
c2tpcCAyIHRoYXQgbm8gbG9uZ2VyIHRpbWUgb3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGln
aGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmQx
ZTJjYTE0NmVmMzNiN2Q0NGQ1NzhiOWNkNzA5NzVjMDVmZTY0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hs
aWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHls
ZT4KKyAgICAjc3R5bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAg
ICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0eWxlMyB7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6cGluazsK
KyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE9uZSA8c3BhbiBpZD0i
c3R5bGUxIj50d288L3NwYW4+IHRoPHNwYW4gaWQ9InN0eWxlMiI+cmVlCisgICAgZm91cjwvc3Bh
bj4gZml2ZSA8c3BhbiBpZD0ic3R5bGUyIj5zaXgKKyAgICBzZXZlbjwvc3Bhbj4gZWlnaDxzcGFu
IGlkPSJzdHlsZTMiPnQgbmluZQorICAgIHRlbiBlbGV2ZW4gdHdlbHZlCisgICAgdGhpcnRlZW4g
Zm91PC9zcGFuPnJ0ZWVuIGZpZnRlZW4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGln
aHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGln
aGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIwMmM5OTgxYmMz
YTExOTljNWI0NTVhMWQyNjczMmUzYmIzNzVmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBp
L2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICA8dGl0bGU+Q3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVudHMgYWNyb3NzIGVsZW1lbnRz
LjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI3BhaW50aW5nIj4KKyAgPGxpbmsgcmVsPSJtYXRjaCIg
aHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0iSGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzcGVjaWZpZWQgYWNy
b3NzIGVsZW1lbnRzLiI+CisgICAgPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGln
aGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNv
bG9yOmdyZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDIpIHsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAg
IH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDMpIHsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRocmVl
PC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0MiI+Zm91ciBmaXZlIHNpeDwvc3Bhbj4KKyAgICA8
c3BhbiBpZD0idGV4dDMiPnNldmVuIGVpZ2h0IG5pbmU8L3NwYW4+CisgICAgPHNwYW4gaWQ9InRl
eHQ0Ij50ZW4gZWxldmVuIHR3ZWx2ZTwvc3Bhbj4KKyAgICA8c3BhbiBpZD0idGV4dDUiPnRoaXJ0
ZWVuIGZvdXJ0ZWVuIGZpZnRlZW48L3NwYW4+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBsZXQg
dGV4dEVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAgICAg
IGxldCB0ZXh0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDInKTsKKyAg
ICAgICAgbGV0IHRleHRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0Mycp
OworICAgICAgICBsZXQgdGV4dEVsZW1lbnQ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
eHQ0Jyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGV4dDUnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAxID0gbmV3IEhpZ2hs
aWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1l
bnQxLCBzdGFydE9mZnNldDogNCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDEsIGVuZE9mZnNl
dDogN30pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGlnaGxp
Z2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVu
dDEsIHN0YXJ0T2Zmc2V0OiAxMCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDIsIGVuZE9mZnNl
dDogNH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNSYW5n
ZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Miwgc3RhcnRPZmZzZXQ6IDEwLCBlbmRDb250
YWluZXI6IHRleHRFbGVtZW50MywgZW5kT2Zmc2V0OiA1fSkpOworCisgICAgICAgIGxldCBoaWdo
bGlnaHRSYW5nZUdyb3VwMyA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5n
ZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Mywgc3RhcnRPZmZzZXQ6IDEwLCBlbmRDb250
YWluZXI6IHRleHRFbGVtZW50NSwgZW5kT2Zmc2V0OiAxMn0pKTsKKworICAgICAgICBDU1MuaGln
aGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hsaWdodFJhbmdlR3JvdXAxKTsK
KyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDIiLCBoaWdobGln
aHRSYW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdo
bGlnaHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1o
aWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJl
YTA1NDQ3NDNlNTQ3ZTBkNDM5NDI5NTM3ZDQyYjNlMzQ1MWI4YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdo
bGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAjc3R5bGUx
IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVl
bjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7
CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0eWxlMyB7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6cGluazsKKyAgICB9CisgICAgPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE88c3BhbiBpZD0ic3R5bGUxIj5uPC9zcGFuPmU8
c3BhbiBpZD0ic3R5bGUyIj4gPC9zcGFuPnQ8c3BhbiBpZD0ic3R5bGUyIj53PC9zcGFuPm88c3Bh
biBpZD0ic3R5bGUzIj4gPC9zcGFuPnQ8c3BhbiBpZD0ic3R5bGUzIj5oPC9zcGFuPnJlPHNwYW4g
aWQ9InN0eWxlMyI+ZTwvc3Bhbj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRmNWVkNTdjYmNmY2YwMDllOTNmY2VhYjQ3NWU5ZTgwZmY0YzMwZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sCkBAIC0wLDAgKzEsNDQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorICA8dGl0bGU+TXVsdGlwbGUgY3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVudHMu
PC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jY3JlYXRpbmctaGlnaGxpZ2h0cyI+CisgIDxsaW5rIHJl
bD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwiPgorICA8bWV0YSBu
YW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik11bHRpcGxlIGhpZ2hsaWdodHMgc2hvdWxkIGJlIGFibGUg
dG8gYmUgc3BlY2lmaWVkLiI+CisgICAgPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUt
aGlnaGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAg
IGNvbG9yOmdyZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDIp
IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOwor
ICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDMpIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRo
cmVlPC9zcGFuPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgbGV0IHRleHRFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAgICAgIGxldCBoaWdobGlnaHRSYW5n
ZUdyb3VwMSA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRD
b250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMSwgZW5kQ29udGFpbmVyOiB0ZXh0
RWxlbWVudCwgZW5kT2Zmc2V0OiAyfSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdy
b3VwMiA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250
YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMywgZW5kQ29udGFpbmVyOiB0ZXh0RWxl
bWVudCwgZW5kT2Zmc2V0OiA0fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMi5hZGQo
bmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0
OiA1LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDZ9KSk7CisKKyAgICAg
ICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAzID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3
IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA3
LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDh9KSk7CisgICAgICAgIGhp
Z2hsaWdodFJhbmdlR3JvdXAzLmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0
ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDksIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVu
ZE9mZnNldDogMTB9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAzLmFkZChuZXcgU3Rh
dGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDEyLCBl
bmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDEzfSkpOworICAgICAgICAKKwor
ICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hsaWdo
dFJhbmdlR3JvdXAxKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hs
aWdodDIiLCBoaWdobGlnaHRSYW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNl
dCgiZXhhbXBsZS1oaWdobGlnaHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IGQ5MTNlMTgwMzUzYmFjMmQyODAyMDRmNTg0NjQ1M2VmNDUyZTBhMTMuLmNiMzU5NmJj
MjVjMDc1NTk4ZTc5Y2E2MDg4MjEwNTliYWU2YmM0ZjUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMi0xOCAgTWVnYW4gR2FyZG5l
ciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBhaW50IGhpZ2hsaWdodHMg
c3BlY2lmaWVkIGluIENTUyBIaWdobGlnaHQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJlZGRhdGEv
eGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWU6CisKIDIwMTktMTItMTggIERpZWdvIFBpbm8g
R2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJlbmRlcml6
YXRpb24gb2YgQ29uaWMgZ3JhZGllbnRzCmRpZmYgLS1naXQgYS9XZWJLaXQueGN3b3Jrc3BhY2Uv
eGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9BbGwgU291cmNlLnhjc2NoZW1lIGIvV2ViS2l0Lnhjd29y
a3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQppbmRleCBl
MWM5NzRjYWYzYjFhZjVmNmYwY2ZlNTc3MDRhNTY3ZTI4M2M1MDlkLi5iNzVmNGJkMTk5ZDhhZTU2
ZWJmZjM3N2M4ZjIyODEzMWE4ZWIzMjdiIDEwMDY0NAotLS0gYS9XZWJLaXQueGN3b3Jrc3BhY2Uv
eGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9BbGwgU291cmNlLnhjc2NoZW1lCQorKysgYi9XZWJLaXQu
eGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9BbGwgU291cmNlLnhjc2NoZW1lCQpA
QCAtNTcsNyArNTcsNyBAQAogICAgICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQogICAgICAg
ICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgogICAgICAgICAgICAgICAg
Qmx1ZXByaW50SWRlbnRpZmllciA9ICJGQjM5RDBEMDEyMDBGMEUzMDAwODhFNjkiCi0gICAgICAg
ICAgICAgICBCdWlsZGFibGVOYW1lID0gImxpYkFOR0xFLXNoYXJlZC5keWxpYiIKKyAgICAgICAg
ICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAibGliQU5HTEUuYSIKICAgICAgICAgICAgICAgIEJsdWVw
cmludE5hbWUgPSAiQU5HTEUiCiAgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0g
ImNvbnRhaW5lcjpTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2oiPgogICAg
ICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386125</attachid>
            <date>2019-12-19 11:43:17 -0800</date>
            <delta_ts>2019-12-19 15:32:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191219114316.patch</filename>
            <type>text/plain</type>
            <size>31582</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhNjBjNjUwZmU3NjI3
Mzg2Y2U3ZDMzZDlhZDZkYjA1MWIwOTY3Ni4uMTliNTkzYjYxNDg5NGUyNTY1ZDViYjJiOTIyMmI3
ZmRmZWMyNjE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJl
c2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJlbmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAg
VGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLgorCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
dmVyaWZ5U2VsZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0
YXJ0RW5kRm9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uU3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6aGlnaGxpZ2h0U3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dCk6CisKKyAgICAgICAgVXNlIHRoZSBoaWdo
bGlnaHQgbmFtZSBmcm9tIHRoZSBIaWdobGlnaHRSYW5nZUdyb3VwIHRvIG9idGFpbiB0aGUgc3R5
bGUgZnJvbSB0aGUgcmVuZGVyZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMgY29uc3QpOgorCisgICAgICAgIFJlbmRl
ciB0aGUgaGlnaGxpZ2h0cyB3aGVuIHBhaW50aW5nIHRleHQuIERldGVybWluZSBpZiBhIGhpZ2hs
aWdodCBpcyBwcmVzZW50IGluIHRoZSBjdXJyZW50IFJlbmRlck9iamVjdCwgYW5kCisgICAgICAg
IGFkZCBhZGRpdGlvbmFsIE1hcmtlZFRleHQgdG8gYmUgcmVuZGVyZWQgd2hlbiBwYWludGluZwor
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJkaXZpZGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9NYXJrZWRUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrZWRUZXh0
OjpvcGVyYXRvcj09IGNvbnN0KToKKworICAgICAgICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtl
IGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6c2VsZWN0aW9uU3RhdGVGb3JS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnNldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorCisgICAgICAgIExldmVy
YWdlIFNlbGVjdGlvblJhbmdlRGF0YSBmb3IgaGlnaGxpZ2h0cy4KKwogMjAxOS0xMi0xOCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIEFuaW1hdGlvbnMgc3Rv
cCBpZiBuZXcgdGFiIG9wZW5lZCAoYW5kIGNsb3NlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKaW5kZXggZmY5OGNjM2JhNTMyZmUwMWRlNDA3
NTY4OWEwYjkyMzY1N2ZjZWVmMi4uMWE0ODU3YjI1YzU4ZmU4ZmM0YTQxNTlhZjRhODk3N2VkOWZi
N2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxp
Z2h0TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0
TWFwLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFN0
cmluZyYpOwogICAgIAogICAgIFJlZlB0cjxIaWdobGlnaHRSYW5nZUdyb3VwPiBnZXRHcm91cEZv
cktleShjb25zdCBTdHJpbmcmIGtleSk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxI
aWdobGlnaHRSYW5nZUdyb3VwPj4mIG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CiAgICAg
CiBwcml2YXRlOgogICAgIEhpZ2hsaWdodE1hcCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA0MzNhMDc0ZjUwMjY0NzhjNzNiYWVl
YTYxM2MzMzU4NDg5MmY1MzFjLi5kYmFiYWRlNzE0YmY1MTc4M2FhMTM4ZjBiYjM3NWRkZTNiMzA2
OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0y
OCwxMCArMjgsMTIgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVsZW1l
bnRSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiRWxsaXBzaXNCb3guaCIKICNpbmNsdWRlICJF
dmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiSGlnaGxpZ2h0TWFwLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3Vs
dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0
eWxlLmgiCkBAIC00Niw2ICs0OCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgor
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25S
YW5nZURhdGEuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dERlY29yYXRpb25Q
YWludGVyLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKQEAgLTE1Miw5ICsxNTYsMjkg
QEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojppc1NlbGVjdGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24s
IHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBjb24KIAogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0
ZSBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25TdGF0ZSBzdGF0ZSA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKTsKKyAgICBh
dXRvIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9uU3RhdGUocmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0
ZSgpLCByZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKSk7CisgICAgCisgICAgLy8gSWYgdGhl
cmUgYXJlIGVsbGlwc2lzIGZvbGxvd2luZywgbWFrZSBzdXJlIHRoZWlyIHNlbGVjdGlvbiBpcyB1
cGRhdGVkLgorICAgIGlmIChtX3RydW5jYXRpb24gIT0gY05vVHJ1bmNhdGlvbiAmJiByb290KCku
ZWxsaXBzaXNCb3goKSkgeworICAgICAgICBFbGxpcHNpc0JveCogZWxsaXBzaXMgPSByb290KCku
ZWxsaXBzaXNCb3goKTsKKyAgICAgICAgaWYgKHN0YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uTm9uZSkgeworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOworICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNo
b3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKKyAgICAgICAg
ICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0
aW9uIGFuZCB0aGUKKyAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlz
IGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgICAgICAgICAgLy8gdHJ1bmNh
dGlvbi4KKyAgICAgICAgICAgIGVsbGlwc2lzLT5zZXRTZWxlY3Rpb25TdGF0ZShzZWxlY3Rpb25F
bmQgPj0gbV90cnVuY2F0aW9uICYmIHNlbGVjdGlvblN0YXJ0IDw9IG1fdHJ1bmNhdGlvbiA/Cisg
ICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGUgOiBSZW5kZXJPYmpl
Y3Q6OlNlbGVjdGlvbk5vbmUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVsbGlwc2lz
LT5zZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK1JlbmRlck9iamVjdDo6U2VsZWN0aW9uU3Rh
dGUgSW5saW5lVGV4dEJveDo6dmVyaWZ5U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25TdGF0ZSBzdGF0ZSwgU2VsZWN0aW9uUmFuZ2VEYXRhJiBzZWxlY3Rpb24pIGNvbnN0Cit7
CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQgfHwgc3RhdGUg
PT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25Cb3RoKSB7Ci0gICAgICAgIGF1dG8mIHNlbGVjdGlvbiA9IHJlbmRlcmVyKCkudmll
dygpLnNlbGVjdGlvbigpOwogICAgICAgICBhdXRvIHN0YXJ0UG9zID0gc2VsZWN0aW9uLnN0YXJ0
UG9zaXRpb24oKTsKICAgICAgICAgYXV0byBlbmRQb3MgPSBzZWxlY3Rpb24uZW5kUG9zaXRpb24o
KTsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGFmdGVyIGEgaGFyZCBsaW5lIGJyZWFrIGlzIGNv
bnNpZGVyZWQgdG8gYmUgcGFzdCBpdHMgZW5kLgpAQCAtMTc2LDIxICsyMDAsNiBAQCBSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXRlKCkKICAg
ICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lOwogICAgIH0KIAot
ICAgIC8vIElmIHRoZXJlIGFyZSBlbGxpcHNpcyBmb2xsb3dpbmcsIG1ha2Ugc3VyZSB0aGVpciBz
ZWxlY3Rpb24gaXMgdXBkYXRlZC4KLSAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRp
b24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKLSAgICAgICAgRWxsaXBzaXNCb3gqIGVsbGlw
c2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7Ci0gICAgICAgIGlmIChzdGF0ZSAhPSBSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIGF1dG8gW3NlbGVjdGlvblN0YXJ0
LCBzZWxlY3Rpb25FbmRdID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKLSAgICAgICAgICAgIC8vIFRo
ZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lkZXJlZCB0byBiZSBzZWxlY3RlZCBpZiB0aGUgZW5k
IG9mCi0gICAgICAgICAgICAvLyB0aGUgc2VsZWN0aW9uIGlzIHBhc3QgdGhlIGJlZ2lubmluZyBv
ZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCi0gICAgICAgICAgICAvLyBiZWdpbm5pbmcgb2YgdGhl
IHNlbGVjdGlvbiBpcyBiZWZvcmUgb3IgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAgICAgICAg
ICAgIC8vIHRydW5jYXRpb24uCi0gICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3Rh
dGUoc2VsZWN0aW9uRW5kID49IG1fdHJ1bmNhdGlvbiAmJiBzZWxlY3Rpb25TdGFydCA8PSBtX3Ry
dW5jYXRpb24gPwotICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRl
IDogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25O
b25lKTsKLSAgICB9Ci0KICAgICByZXR1cm4gc3RhdGU7CiB9CiAKQEAgLTUyNCw2ICs1MzMsOSBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICBwYWludENvbXBvc2l0aW9uQmFj
a2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbik7CiAKICAgICAgICAgVmVjdG9yPE1hcmtlZFRl
eHQ+IG1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRl
eHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsKKyAgICAgICAgYXV0byBoaWdobGlnaHRNYXJrZWRU
ZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2U6OkJh
Y2tncm91bmQpOworICAgICAgICBpZiAoIWhpZ2hsaWdodE1hcmtlZFRleHRzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1h
cmtlZFRleHRzKSk7CiAjaWYgRU5BQkxFKFRFWFRfU0VMRUNUSU9OKQogICAgICAgICBpZiAoaGF2
ZVNlbGVjdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcyAmJiAhY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uTWFya2VkVGV4dCA9IGNyZWF0
ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3goKnRoaXMpOwpAQCAtNTU3LDYgKzU2OSw5IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgbWFya2VkVGV4dHMuYXBwZW5kKHsgY2xh
bXBlZE9mZnNldChtX3N0YXJ0KSwgY2xhbXBlZE9mZnNldChlbmQoKSksIE1hcmtlZFRleHQ6OlVu
bWFya2VkIH0pOwogICAgICAgICBpZiAoIWlzUHJpbnRpbmcpIHsKICAgICAgICAgICAgIG1hcmtl
ZFRleHRzLmFwcGVuZFZlY3Rvcihjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMo
VGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQpKTsKKyAgICAgICAgICAgIGF1dG8gaGlnaGxpZ2h0
TWFya2VkVGV4dHMgPSBjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBo
YXNlOjpGb3JlZ3JvdW5kKTsKKyAgICAgICAgICAgIGlmICghaGlnaGxpZ2h0TWFya2VkVGV4dHMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3RvcihXVEZN
b3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAKICAgICAgICAgICAgIGJvb2wgc2hvdWxkUGFp
bnREcmFnZ2VkQ29udGVudCA9ICEocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFp
bnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikpOwogICAgICAgICAgICAgaWYgKHNob3VsZFBh
aW50RHJhZ2dlZENvbnRlbnQpIHsKQEAgLTY1MiwxNCArNjY3LDExIEBAIHVuc2lnbmVkIElubGlu
ZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQodW5zaWduZWQgeCkgY29uc3QKICAgICByZXR1cm4gb2Zm
c2V0OwogfQogCi1zdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94Ojpz
ZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJ
bmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZSh1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKSBj
b25zdAogewotICAgIGF1dG8gc2VsZWN0aW9uU3RhdGUgPSByZW5kZXJlcigpLnNlbGVjdGlvblN0
YXRlKCk7CiAgICAgaWYgKHNlbGVjdGlvblN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
SW5zaWRlKQogICAgICAgICByZXR1cm4geyAwLCBjbGFtcGVkT2Zmc2V0KG1fc3RhcnQgKyBtX2xl
bikgfTsKICAgICAKLSAgICBhdXRvIHN0YXJ0ID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9u
KCkuc3RhcnRQb3NpdGlvbigpOwotICAgIGF1dG8gZW5kID0gcmVuZGVyZXIoKS52aWV3KCkuc2Vs
ZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKICAgICAgICAgZW5kID0gcmVuZGVyZXIoKS50ZXh0KCku
bGVuZ3RoKCk7CiAgICAgZWxzZSBpZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25FbmQpCkBAIC02NjcsNiArNjc5LDI0IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKICAgICByZXR1
cm4geyBjbGFtcGVkT2Zmc2V0KHN0YXJ0KSwgY2xhbXBlZE9mZnNldChlbmQpIH07CiB9CiAKK3N0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0
RW5kKCkgY29uc3QKK3sKKyAgICBhdXRvIHNlbGVjdGlvblN0YXRlID0gcmVuZGVyZXIoKS5zZWxl
Y3Rpb25TdGF0ZSgpOworICAgIAorICAgIHJldHVybiBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZShy
ZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydFBvc2l0aW9uKCksIHJlbmRlcmVyKCku
dmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9uKCksIHNlbGVjdGlvblN0YXRlKTsKK30KKwor
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3Rh
cnRFbmQoU2VsZWN0aW9uUmFuZ2VEYXRhICZyYW5nZURhdGEpIGNvbnN0Cit7CisgICAgYXV0byBz
dGF0ZSA9IHJhbmdlRGF0YS5zZWxlY3Rpb25TdGF0ZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOwor
ICAgIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9uU3RhdGUoc3RhdGUsIHJhbmdlRGF0YSk7CisgICAg
CisgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkKKyAgICAgICAg
cmV0dXJuIHswLCAwfTsKKyAgICAKKyAgICByZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUo
cmFuZ2VEYXRhLnN0YXJ0UG9zaXRpb24oKSwgcmFuZ2VEYXRhLmVuZFBvc2l0aW9uKCksIHN0YXRl
KTsKK30KKwogYm9vbCBJbmxpbmVUZXh0Qm94OjpoYXNNYXJrZXJzKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gY29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNl
OjpEZWNvcmF0aW9uKS5zaXplKCk7CkBAIC03NzAsNiArODAwLDI2IEBAIGF1dG8gSW5saW5lVGV4
dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dChjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRU
ZXh0LCBjb25zCiAgICAgY2FzZSBNYXJrZWRUZXh0OjpTcGVsbGluZ0Vycm9yOgogICAgIGNhc2Ug
TWFya2VkVGV4dDo6VW5tYXJrZWQ6CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWFya2VkVGV4
dDo6SGlnaGxpZ2h0OgorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHJlbmRlclN0eWxlID0g
cGFyZW50KCktPnJlbmRlcmVyKCkuZ2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSh7IFBzZXVkb0lkOjpI
aWdobGlnaHQsIG1hcmtlZFRleHQuaGlnaGxpZ2h0TmFtZSB9LCAmcGFyZW50KCktPnJlbmRlcmVy
KCkuc3R5bGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyZW5kZXJTdHlsZSkg
eworICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmRDb2xvciA9IHJlbmRlclN0eWxlLT5i
YWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0U3R5bGVzLmZpbGxD
b2xvciA9IHJlbmRlclN0eWxlLT5jb21wdXRlZFN0cm9rZUNvbG9yKCk7CisgICAgICAgICAgICAg
ICAgc3R5bGUudGV4dFN0eWxlcy5zdHJva2VDb2xvciA9IHJlbmRlclN0eWxlLT5jb21wdXRlZFN0
cm9rZUNvbG9yKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0byBjb2xv
ciA9IHJlbmRlclN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvIGRlY29y
YXRpb25TdHlsZSA9IHJlbmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvblN0eWxlKCk7CisgICAgICAg
ICAgICAgICAgYXV0byBkZWNvcmF0aW9ucyA9IHJlbmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpOworCisgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zQW55
KHsgVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgVGV4dERlY29yYXRpb246Ok92ZXJsaW5lLCBU
ZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2ggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3R5
bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKKyAgICAgICAg
ICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lU3R5bGUgPSBk
ZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWFya2VkVGV4dDo6RHJhZ2dlZENvbnRlbnQ6
CiAgICAgICAgIHN0eWxlLmFscGhhID0gMC4yNTsKICAgICAgICAgYnJlYWs7CkBAIC05NjMsNiAr
MTAxMyw0NyBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtl
ZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludAogICAgIHJldHVybiBtYXJrZWRUZXh0
czsKIH0KIAorCitWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtl
ZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZSBwaGFzZSkgY29uc3QKK3sKKyAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaGlnaGxpZ2h0QVBJ
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIAorICAgIEFTU0VSVF9BUkcocGhh
c2UsIHBoYXNlID09IFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kIHx8IHBoYXNlID09IFRleHRQ
YWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBoYXNlID09IFRleHRQYWludFBoYXNlOjpEZWNvcmF0
aW9uKTsKKworICAgIFVOVVNFRF9QQVJBTShwaGFzZSk7CisgICAgCisgICAgaWYgKCFyZW5kZXJl
cigpLnRleHROb2RlKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8TWFya2Vk
VGV4dD4gbWFya2VkVGV4dHM7CisgICAgZm9yIChhdXRvJiBoaWdobGlnaHRHcm91cCA6IHJlbmRl
cmVyKCkuZG9jdW1lbnQoKS5oaWdobGlnaHRNYXAoKS5tYXAoKSkgeworICAgICAgICBhdXRvIHJl
bmRlclN0eWxlID0gcGFyZW50KCktPnJlbmRlcmVyKCkuZ2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSh7
IFBzZXVkb0lkOjpIaWdobGlnaHQsIGhpZ2hsaWdodEdyb3VwLmtleSB9LCAmcGFyZW50KCktPnJl
bmRlcmVyKCkuc3R5bGUoKSk7CisgICAgICAgIGlmIChyZW5kZXJTdHlsZSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvJiBzdGF0aWNSYW5nZSA6IGhpZ2hsaWdodEdyb3VwLnZhbHVlLT5yYW5nZXMo
KSkgeworICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0UG9zID0gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKHN0YXRpY1JhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+
c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgUG9zaXRpb24gZW5kUG9zID0gY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRpY1JhbmdlLT5lbmRDb250YWluZXIoKSwgc3RhdGlj
UmFuZ2UtPmVuZE9mZnNldCgpKTsKKworICAgICAgICAgICAgICAgIGlmIChzdGFydFBvcy5pc05v
dE51bGwoKSAmJiBlbmRQb3MuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVu
ZGVyZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gc3RhcnRQb3Mu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBlbmRSZW5kZXJlciA9IGVuZFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwor
ICAgICAgICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA+PSAw
ICYmIGVuZE9mZnNldCA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gaGlnaGxpZ2h0RGF0YSA9IFNlbGVjdGlvblJhbmdlRGF0YShyZW5kZXJlcigp
LnZpZXcoKSk7CisgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodERhdGEuc2V0Q29udGV4dCh7
c3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9m
ZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpfSk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBhdXRvIFtoaWdobGlnaHRTdGFydCwgaGlnaGxp
Z2h0RW5kXSA9IGhpZ2hsaWdodFN0YXJ0RW5kKGhpZ2hsaWdodERhdGEpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoaGlnaGxpZ2h0U3RhcnQgPCBoaWdobGlnaHRFbmQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmQoeyBoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0
RW5kLCBNYXJrZWRUZXh0OjpIaWdobGlnaHQsIG51bGxwdHIsIGhpZ2hsaWdodEdyb3VwLmtleSB9
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIG1hcmtlZFRleHRzOworfQorCiBGbG9hdFBvaW50IElubGluZVRleHRCb3g6OnRl
eHRPcmlnaW5Gcm9tQm94UmVjdChjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CiB7CiAg
ICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgYm94UmVjdC54KCksIGJveFJlY3QueSgpICsgbGlu
ZUZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guaAppbmRleCA1Y2EyYmM4NjEzNmI2ZDkzMjY4NzI4YmRhZjg3MjkyZTg4
NThkNjVjLi45ODUwNWQ4Mzg0NmEyZDJkYmY4YmQ0ZTdjMTU4ZGJmYjI0NjM4YzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTEyMSw2ICsxMjEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25l
ZCBzdGFydFBvcywgdW5zaWduZWQgZW5kUG9zKSBjb25zdDsKICAgICBib29sIGlzU2VsZWN0ZWQo
dW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24pIGNvbnN0OwogICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3Q7
CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gaGlnaGxpZ2h0U3RhcnRFbmQoU2Vs
ZWN0aW9uUmFuZ2VEYXRhJikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwpAQCAtMTMyLDEyICsxMzMsMTkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlbGV0ZUxpbmUoKSBmaW5hbDsKICAgICB2b2lkIGV4dHJhY3RMaW5lKCkgZmlu
YWw7CiAgICAgdm9pZCBhdHRhY2hMaW5lKCkgZmluYWw7CisgICAgCisgICAgUmVuZGVyT2JqZWN0
OjpTZWxlY3Rpb25TdGF0ZSByZW5kZXJlckhpZ2hsaWdodFN0YXRlKFJlbmRlck9iamVjdCogLCB1
bnNpZ25lZCAsIFJlbmRlck9iamVjdCogLCB1bnNpZ25lZCkgY29uc3Q7CisgICAgUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25TdGF0ZSBoaWdobGlnaHRTdGF0ZShSZW5kZXJPYmplY3QqLCB1bnNpZ25l
ZCwgUmVuZGVyT2JqZWN0KiwgdW5zaWduZWQpIGNvbnN0OworICAgIFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhdGUgdmVyaWZ5U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25T
dGF0ZSwgU2VsZWN0aW9uUmFuZ2VEYXRhJikgY29uc3Q7CisgICAgCisgICAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUodW5zaWduZWQsIHVuc2ln
bmVkLCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlKSBjb25zdDsKIAogcHVibGljOgogICAg
IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBmaW5hbDsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGNsZWFyVHJ1bmNhdGlvbigpIGZpbmFsIHsgbV90cnVuY2F0aW9u
ID0gY05vVHJ1bmNhdGlvbjsgfQorICAgIHZvaWQgdXBkYXRlRWxsaXBzaXNTdGF0ZShSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvblN0YXRlKTsKICAgICBmbG9hdCBwbGFjZUVsbGlwc2lzQm94KGJvb2wg
Zmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2UsIGZsb2F0IHZpc2libGVSaWdodEVkZ2Us
IGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0aCwgYm9vbCYgZm91bmRC
b3gpIGZpbmFsOwogCiBwdWJsaWM6CkBAIC0xNjksNiArMTc3LDcgQEAgcHJpdmF0ZToKIAogICAg
IFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xsZWN0TWFya2VkVGV4dHNGb3JEcmFnZ2VkQ29udGVudCgp
OwogICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1h
cmtlcnMoVGV4dFBhaW50UGhhc2UpIGNvbnN0OworICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xs
ZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlKSBjb25zdDsKIAogICAg
IE1hcmtlZFRleHRTdHlsZSBjb21wdXRlU3R5bGVGb3JVbm1hcmtlZE1hcmtlZFRleHQoY29uc3Qg
UGFpbnRJbmZvJikgY29uc3Q7CiAgICAgU3R5bGVkTWFya2VkVGV4dCByZXNvbHZlU3R5bGVGb3JN
YXJrZWRUZXh0KGNvbnN0IE1hcmtlZFRleHQmLCBjb25zdCBNYXJrZWRUZXh0U3R5bGUmIGJhc2VT
dHlsZSwgY29uc3QgUGFpbnRJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTWFya2VkVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4
dC5jcHAKaW5kZXggYTc5MTkyZTI4YWUxOTk5Njg2YjYyNjU3Yzg5MGY1N2IyYzg0ZTU2Mi4uZGI4
NDlhNGZiY2JmZWM0ODA4MDRlNDdjZDkyZWU3YWZjZjEyZjZmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9NYXJrZWRUZXh0LmNwcApAQCAtNzQsMTIgKzc0LDEyIEBAIFZlY3RvcjxNYXJrZWRU
ZXh0PiBzdWJkaXZpZGUoY29uc3QgVmVjdG9yPE1hcmtlZFRleHQ+JiBtYXJrZWRUZXh0cywgT3Zl
cmxhcFN0cmF0CiAgICAgICAgICAgICAgICAgICAgICAgICBmcm9udG1vc3QgPSBqOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZnJvbnRtb3N0KQotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9m
ZnNldHNbKmZyb250bW9zdF0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5t
YXJrZWRUZXh0LT5tYXJrZXIgfSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
eyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJr
ZWRUZXh0LT50eXBlLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPm1hcmtlciwgb2Zm
c2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT5oaWdobGlnaHROYW1lIH0pOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYXBwZW5kZWQgbWFya2VkIHRleHRz
IG1heSBub3QgYmUgaW4gcGFpbnQgb3JkZXIuIFdlIHdpbGwgZml4IHRoaXMgdXAgYXQgdGhlIGVu
ZCBvZiB0aGlzIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBpOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9jZXNzZWRNYXJrZWRU
ZXh0cy5jb250YWlucyhvZmZzZXRzW2pdLm1hcmtlZFRleHQpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBvZmZz
ZXRzW2pdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+bWFya2VyIH0p
OworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBv
ZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzW2pdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbal0u
bWFya2VkVGV4dC0+bWFya2VyLCBvZmZzZXRzW2pdLm1hcmtlZFRleHQtPmhpZ2hsaWdodE5hbWUg
fSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgb2Zmc2V0
U29GYXIgPSBvZmZzZXRzW2ldLnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL01hcmtlZFRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0
LmgKaW5kZXggYjJiNWFhMGZmZjBkN2U2NTRkMTQzODIwOGNiOWFiYTJjN2RhZDgyYS4uNzNjMDYy
MTFmZTRhYTQzMzJhMmI4Mjg0MDFjOWNhZDE5ZjA5MWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTWFya2VkVGV4dC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw2ICs0MSw3IEBAIHN0cnVjdCBNYXJrZWRUZXh0IHsK
ICAgICAgICAgU3BlbGxpbmdFcnJvciwKICAgICAgICAgVGV4dE1hdGNoLAogICAgICAgICBEaWN0
YXRpb25BbHRlcm5hdGl2ZXMsCisgICAgICAgIEhpZ2hsaWdodCwKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84OTMzMzUyPi4g
QWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KICAgICAgICAgRGlj
dGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTUxLDEyICs1MywxMyBAQCBzdHJ1Y3Qg
TWFya2VkVGV4dCB7CiAgICAgdW5zaWduZWQgZW5kT2Zmc2V0OwogICAgIFR5cGUgdHlwZTsKICAg
ICBjb25zdCBSZW5kZXJlZERvY3VtZW50TWFya2VyKiBtYXJrZXIgeyBudWxscHRyIH07CisgICAg
U3RyaW5nIGhpZ2hsaWdodE5hbWUgeyB9OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gZW5kT2Zmc2V0IDw9IHN0YXJ0T2Zmc2V0OyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IE1hcmtlZFRleHQmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXJrZWRUZXh0JiBvdGhlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGFydE9mZnNldCA9PSBvdGhlci5zdGFydE9mZnNldCAmJiBl
bmRPZmZzZXQgPT0gb3RoZXIuZW5kT2Zmc2V0ICYmIHR5cGUgPT0gb3RoZXIudHlwZSAmJiBtYXJr
ZXIgPT0gb3RoZXIubWFya2VyOworICAgICAgICByZXR1cm4gc3RhcnRPZmZzZXQgPT0gb3RoZXIu
c3RhcnRPZmZzZXQgJiYgZW5kT2Zmc2V0ID09IG90aGVyLmVuZE9mZnNldCAmJiB0eXBlID09IG90
aGVyLnR5cGUgJiYgbWFya2VyID09IG90aGVyLm1hcmtlciAmJiBoaWdobGlnaHROYW1lID09IG90
aGVyLmhpZ2hsaWdodE5hbWU7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAppbmRleCBiOWJhZDBhMDlmMjliZjdhZGM5ZDMz
M2Y0ZTgxMWMzZWExYjkzZmMyLi5lY2IyM2ZlMGExZTgwMGE3ZWU0YmZlNjZhZjFmZjNhYzg4MTQ0
YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRh
LmNwcApAQCAtMTU0LDEwICsxNTQsNDMgQEAgU2VsZWN0aW9uUmFuZ2VEYXRhOjpTZWxlY3Rpb25S
YW5nZURhdGEoUmVuZGVyVmlldyYgdmlldykKIHsKIH0KIAordm9pZCBTZWxlY3Rpb25SYW5nZURh
dGE6OnNldENvbnRleHQoY29uc3QgQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoKGNvbnRl
eHQuc3RhcnQoKSAmJiAhY29udGV4dC5lbmQoKSkgfHwgKGNvbnRleHQuZW5kKCkgJiYgIWNvbnRl
eHQuc3RhcnQoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NlbGVjdGlvbkNvbnRleHQgPSBj
b250ZXh0OworfQorCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIFNlbGVjdGlvblJhbmdl
RGF0YTo6c2VsZWN0aW9uU3RhdGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQor
eworICAgIGlmICgmcmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgcmVu
ZGVyZXIuaXNEZXNjZW5kYW50T2YobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkpKSB7CisgICAg
ICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSAmJiBtX3NlbGVjdGlvbkNvbnRleHQu
ZW5kKCkgJiYgbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgPT0gbV9zZWxlY3Rpb25Db250ZXh0
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uQm90aDsK
KyAgICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpKQorICAgICAgICAgICAgcmV0
dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQ7CisgICAgfQorICAgIGlmICgmcmVuZGVy
ZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpIHx8IHJlbmRlcmVyLmlzRGVzY2VuZGFudE9m
KG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkpCisgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvbkVuZDsKKworICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0
cjsKKyAgICBhdXRvKiBzZWxlY3Rpb25EYXRhRW5kID0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgp
OworICAgIGlmIChzZWxlY3Rpb25EYXRhRW5kKQorICAgICAgICBzZWxlY3Rpb25FbmQgPSByZW5k
ZXJlckFmdGVyUG9zaXRpb24oKnNlbGVjdGlvbkRhdGFFbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5l
bmRQb3NpdGlvbigpLnZhbHVlKCkpOworICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0
ZXJhdG9yKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpKTsKKyAgICBmb3IgKGF1dG8qIGN1cnJl
bnRSZW5kZXJlciA9IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpOyBjdXJyZW50UmVuZGVyZXIg
JiYgY3VycmVudFJlbmRlcmVyICE9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKTsgY3VycmVudFJl
bmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50
UmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgY3VycmVudFJlbmRlcmVy
ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWN1cnJlbnRSZW5kZXJlci0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCZyZW5kZXJlciA9PSBjdXJyZW50UmVuZGVyZXIp
CisgICAgICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGU7CisgICAg
fQorICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmU7CisgICAgCit9CisKIHZv
aWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXQoY29uc3QgQ29udGV4dCYgc2VsZWN0aW9uLCBSZXBh
aW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQogewotICAgIC8vIE1ha2Ugc3VyZSBib3RoIG91ciBz
dGFydCBhbmQgZW5kIG9iamVjdHMgYXJlIGRlZmluZWQuCi0gICAgLy8gQ2hlY2sgd3d3Lm1zbmJj
LmNvbSBhbmQgdHJ5IGNsaWNraW5nIGFyb3VuZCB0byBmaW5kIHRoZSBjYXNlIHdoZXJlIHRoaXMg
aGFwcGVuZWQuCiAgICAgaWYgKChzZWxlY3Rpb24uc3RhcnQoKSAmJiAhc2VsZWN0aW9uLmVuZCgp
KSB8fCAoc2VsZWN0aW9uLmVuZCgpICYmICFzZWxlY3Rpb24uc3RhcnQoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBKdXN0IHJldHVybiBpZiB0aGUgc2VsZWN0aW9uIGhhc24ndCBjaGFuZ2Vk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCmluZGV4
IDg5YWViZTc0NjE4NGZlM2VmNTRkNThmYzU3MDEyZmFkMDM1OTFmYzguLjQ0ZjkxY2NiYzYzYzM4
ODkyYjJjYjIxZDljZDcwYjNhNWI2MWQ5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKQEAgLTcxLDcgKzcxLDkgQEAgcHVibGljOgogICAgICAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zdGFydFBvc2l0aW9uOwogICAgICAgICBPcHRpb25hbDx1
bnNpZ25lZD4gbV9lbmRQb3NpdGlvbjsKICAgICB9OwotCisgICAgCisgICAgdm9pZCBzZXRDb250
ZXh0KGNvbnN0IENvbnRleHQmKTsKKyAgICAKICAgICBlbnVtIGNsYXNzIFJlcGFpbnRNb2RlIHsg
TmV3WE9ST2xkLCBOZXdNaW51c09sZCwgTm90aGluZyB9OwogICAgIHZvaWQgc2V0KGNvbnN0IENv
bnRleHQmLCBSZXBhaW50TW9kZSA9IFJlcGFpbnRNb2RlOjpOZXdYT1JPbGQpOwogICAgIGNvbnN0
IENvbnRleHQmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dDsgfQpAQCAt
ODYsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVy
biBjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50OjpObyk7IH0KICAgICBJbnRSZWN0
IGJvdW5kc0NsaXBwZWRUb1Zpc2libGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gY29sbGVjdEJv
dW5kcyhDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsgfQogICAgIHZvaWQgcmVwYWludCgpIGNv
bnN0OworICAgIAorICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3Rh
dGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNz
IENsaXBUb1Zpc2libGVDb250ZW50IHsgWWVzLCBObyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkwMjZkZjQ5OTcxYzhmZjcwNjE4ZWIxYTEw
YWM0MmEyOWJkYWEwYjEuLjllYzhjN2NkYzM0MzdkYTkxNmU4OGNlMzBmYjc1OGZlM2IxNjMwZWEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0xMi0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFBhaW50IGhpZ2hsaWdodHMgc3BlY2lmaWVkIGluIENTUyBIaWdo
bGlnaHQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDUzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtlIGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorCiAyMDE5LTEyLTE4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LWxsZGItd2Via2l0OiBSdW4gaW4gQ0kgKEZvbGxv
dy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
TWFya2VkVGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2Vk
VGV4dC5jcHAKaW5kZXggNWExNjJjNjBlYzk2ZjBkYzJhZmEwNjgwZTNjMWQ4M2QwZGJmZTgwZi4u
MDY4MWNhYjQzNjdjNTIzNmE5YjU2NDI4YWQ2ZjEwNzQ1YmE5MTc4MSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcApAQCAtNTUsNiArNTUs
OCBAQCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgTWFya2VkVGV4
dDo6VHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gb3MgPDwgIlNwZWxsaW5nRXJyb3IiOwogICAg
IGNhc2UgTWFya2VkVGV4dDo6VGV4dE1hdGNoOgogICAgICAgICByZXR1cm4gb3MgPDwgIlRleHRN
YXRjaCI7CisgICAgY2FzZSBNYXJrZWRUZXh0OjpIaWdobGlnaHQ6CisgICAgICAgIHJldHVybiBv
cyA8PCAiSGlnaGxpZ2h0IjsKICAgICBjYXNlIE1hcmtlZFRleHQ6OlVubWFya2VkOgogICAgICAg
ICByZXR1cm4gb3MgPDwgIlVubWFya2VkIjsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCA4ZWY2OGRkNmVkNjk3YzRkYjhiNzEyN2MzNWIzNjYwZDM0Zjg5ODFmLi45ZGYx
NWRlZmZjNzcyMmViZDE4ZDhhOWE5YTU5NjdhYTk3MDkxMDNkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMi0xOSAgTWVnYW4gR2FyZG5lciAg
PG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBhaW50IGhpZ2hsaWdodHMgc3Bl
Y2lmaWVkIGluIENTUyBIaWdobGlnaHQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdo
dC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGln
aGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGln
aGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxOS0xMi0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlYmFz
ZWxpbmUgYWxsIHNlcnZpY2Ugd29ya2VycyB0ZXN0cyBhbmQgdW5za2lwIDIgdGhhdCBubyBsb25n
ZXIgdGltZSBvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3Mt
ZWxlbWVudHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1l
bGVtZW50cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDFlMmNhMTQ2ZWYzM2I3ZDQ0ZDU3
OGI5Y2Q3MDk3NWMwNWZlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQt
dGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICNzdHlsZTEgewor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOwor
ICAgIH0KKyAgICAjc3R5bGUyIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAg
ICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICAjc3R5bGUzIHsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgICAgT25lIDxzcGFuIGlkPSJzdHlsZTEiPnR3bzwvc3Bhbj4g
dGg8c3BhbiBpZD0ic3R5bGUyIj5yZWUKKyAgICBmb3VyPC9zcGFuPiBmaXZlIDxzcGFuIGlkPSJz
dHlsZTIiPnNpeAorICAgIHNldmVuPC9zcGFuPiBlaWdoPHNwYW4gaWQ9InN0eWxlMyI+dCBuaW5l
CisgICAgdGVuIGVsZXZlbiB0d2VsdmUKKyAgICB0aGlydGVlbiBmb3U8L3NwYW4+cnRlZW4gZmlm
dGVlbgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRl
eHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3Mt
ZWxlbWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjAyYzk5ODFiYzNhMTE5OWM1YjQ1NWExZDI2NzMy
ZTNiYjM3NWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNy
b3NzLWVsZW1lbnRzLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDx0aXRsZT5DdXN0b20gaGln
aGxpZ2h0IHBzZXVkbyBlbGVtZW50cyBhY3Jvc3MgZWxlbWVudHMuPC90aXRsZT4KKyAgPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWhpZ2hsaWdodC1h
cGktMS8jcGFpbnRpbmciPgorICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJoaWdobGlnaHQtdGV4
dC1leHBlY3RlZC5odG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJIaWdobGln
aHRzIHNob3VsZCBiZSBhYmxlIHRvIGJlIHNwZWNpZmllZCBhY3Jvc3MgZWxlbWVudHMuIj4KKyAg
ICA8c3R5bGU+CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQxKSB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQor
ICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0MikgeworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgIDo6aGlnaGxpZ2h0
KGV4YW1wbGUtaGlnaGxpZ2h0MykgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7
CisgICAgICAgIGNvbG9yOnBpbms7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgICA8c3BhbiBpZD0idGV4dDEiPk9uZSB0d28gdGhyZWU8L3NwYW4+CisgICAgPHNwYW4g
aWQ9InRleHQyIj5mb3VyIGZpdmUgc2l4PC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0MyI+c2V2
ZW4gZWlnaHQgbmluZTwvc3Bhbj4KKyAgICA8c3BhbiBpZD0idGV4dDQiPnRlbiBlbGV2ZW4gdHdl
bHZlPC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0NSI+dGhpcnRlZW4gZm91cnRlZW4gZmlmdGVl
bjwvc3Bhbj4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDEnKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50MiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0MicpOworICAgICAgICBsZXQgdGV4dEVsZW1l
bnQzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQzJyk7CisgICAgICAgIGxldCB0ZXh0
RWxlbWVudDQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDQnKTsKKyAgICAgICAgbGV0
IHRleHRFbGVtZW50NSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0NScpOworICAgICAg
ICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDEgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcg
U3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudDEsIHN0YXJ0T2Zmc2V0OiA0
LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50MSwgZW5kT2Zmc2V0OiA3fSkpOworCisgICAgICAg
IGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMiA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBT
dGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50MSwgc3RhcnRPZmZzZXQ6IDEw
LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50MiwgZW5kT2Zmc2V0OiA0fSkpOworICAgICAgICBo
aWdobGlnaHRSYW5nZUdyb3VwMi5hZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjog
dGV4dEVsZW1lbnQyLCBzdGFydE9mZnNldDogMTAsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQz
LCBlbmRPZmZzZXQ6IDV9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAzID0g
bmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjog
dGV4dEVsZW1lbnQzLCBzdGFydE9mZnNldDogMTAsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQ1
LCBlbmRPZmZzZXQ6IDEyfSkpOworCisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBs
ZS1oaWdobGlnaHQxIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDEpOworICAgICAgICBDU1MuaGlnaGxp
Z2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MiIsIGhpZ2hsaWdodFJhbmdlR3JvdXAyKTsKKyAg
ICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDMiLCBoaWdobGlnaHRS
YW5nZUdyb3VwMyk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGln
aGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxp
Z2h0LXRleHQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmVhMDU0NDc0M2U1NDdlMGQ0Mzk0
Mjk1MzdkNDJiM2UzNDUxYjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0
LXRleHQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICNzdHlsZTEgeworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICAjc3R5
bGUyIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVk
OworICAgIH0KKyAgICAjc3R5bGUzIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxl
OworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgTzxzcGFuIGlkPSJzdHlsZTEiPm48L3NwYW4+ZTxzcGFuIGlkPSJzdHlsZTIiPiA8
L3NwYW4+dDxzcGFuIGlkPSJzdHlsZTIiPnc8L3NwYW4+bzxzcGFuIGlkPSJzdHlsZTMiPiA8L3Nw
YW4+dDxzcGFuIGlkPSJzdHlsZTMiPmg8L3NwYW4+cmU8c3BhbiBpZD0ic3R5bGUzIj5lPC9zcGFu
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1ZWQ1N2Ni
Y2ZjZjAwOWU5M2ZjZWFiNDc1ZTllODBmZjRjMzBlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDx0aXRsZT5NdWx0
aXBsZSBjdXN0b20gaGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50cy48L3RpdGxlPgorICA8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtaGlnaGxpZ2h0LWFw
aS0xLyNjcmVhdGluZy1oaWdobGlnaHRzIj4KKyAgPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iaGln
aGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVu
dD0iTXVsdGlwbGUgaGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzcGVjaWZpZWQuIj4K
KyAgICA8c3R5bGU+CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQxKSB7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAg
fQorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0MikgeworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgIDo6aGlnaGxp
Z2h0KGV4YW1wbGUtaGlnaGxpZ2h0MykgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJw
bGU7CisgICAgICAgIGNvbG9yOnBpbms7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8c3BhbiBpZD0idGV4dDEiPk9uZSB0d28gdGhyZWU8L3NwYW4+CisKKyAgICA8
c2NyaXB0PgorICAgICAgICBsZXQgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGV4dDEnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAxID0gbmV3IEhpZ2hs
aWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1l
bnQsIHN0YXJ0T2Zmc2V0OiAxLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6
IDJ9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAyID0gbmV3IEhpZ2hsaWdo
dFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQs
IHN0YXJ0T2Zmc2V0OiAzLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDR9
KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAyLmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0
YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDUsIGVuZENvbnRhaW5lcjog
dGV4dEVsZW1lbnQsIGVuZE9mZnNldDogNn0pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFu
Z2VHcm91cDMgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0
Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDcsIGVuZENvbnRhaW5lcjogdGV4
dEVsZW1lbnQsIGVuZE9mZnNldDogOH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDMu
YWRkKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9m
ZnNldDogOSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiAxMH0pKTsKKyAg
ICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDMuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250
YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMTIsIGVuZENvbnRhaW5lcjogdGV4dEVs
ZW1lbnQsIGVuZE9mZnNldDogMTN9KSk7CisgICAgICAgIAorCisgICAgICAgIENTUy5oaWdobGln
aHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQxIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDEpOworICAg
ICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MiIsIGhpZ2hsaWdodFJh
bmdlR3JvdXAyKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdo
dDMiLCBoaWdobGlnaHRSYW5nZUdyb3VwMyk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386157</attachid>
            <date>2019-12-19 15:32:24 -0800</date>
            <delta_ts>2019-12-19 17:32:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191219153223.patch</filename>
            <type>text/plain</type>
            <size>34454</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhNjBjNjUwZmU3NjI3
Mzg2Y2U3ZDMzZDlhZDZkYjA1MWIwOTY3Ni4uMTliNTkzYjYxNDg5NGUyNTY1ZDViYjJiOTIyMmI3
ZmRmZWMyNjE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJl
c2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJlbmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAg
VGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLgorCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
dmVyaWZ5U2VsZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0
YXJ0RW5kRm9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uU3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6aGlnaGxpZ2h0U3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dCk6CisKKyAgICAgICAgVXNlIHRoZSBoaWdo
bGlnaHQgbmFtZSBmcm9tIHRoZSBIaWdobGlnaHRSYW5nZUdyb3VwIHRvIG9idGFpbiB0aGUgc3R5
bGUgZnJvbSB0aGUgcmVuZGVyZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMgY29uc3QpOgorCisgICAgICAgIFJlbmRl
ciB0aGUgaGlnaGxpZ2h0cyB3aGVuIHBhaW50aW5nIHRleHQuIERldGVybWluZSBpZiBhIGhpZ2hs
aWdodCBpcyBwcmVzZW50IGluIHRoZSBjdXJyZW50IFJlbmRlck9iamVjdCwgYW5kCisgICAgICAg
IGFkZCBhZGRpdGlvbmFsIE1hcmtlZFRleHQgdG8gYmUgcmVuZGVyZWQgd2hlbiBwYWludGluZwor
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJkaXZpZGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9NYXJrZWRUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrZWRUZXh0
OjpvcGVyYXRvcj09IGNvbnN0KToKKworICAgICAgICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtl
IGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6c2VsZWN0aW9uU3RhdGVGb3JS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnNldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorCisgICAgICAgIExldmVy
YWdlIFNlbGVjdGlvblJhbmdlRGF0YSBmb3IgaGlnaGxpZ2h0cy4KKwogMjAxOS0xMi0xOCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIEFuaW1hdGlvbnMgc3Rv
cCBpZiBuZXcgdGFiIG9wZW5lZCAoYW5kIGNsb3NlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKaW5kZXggZmY5OGNjM2JhNTMyZmUwMWRlNDA3
NTY4OWEwYjkyMzY1N2ZjZWVmMi4uMWE0ODU3YjI1YzU4ZmU4ZmM0YTQxNTlhZjRhODk3N2VkOWZi
N2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxp
Z2h0TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0
TWFwLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFN0
cmluZyYpOwogICAgIAogICAgIFJlZlB0cjxIaWdobGlnaHRSYW5nZUdyb3VwPiBnZXRHcm91cEZv
cktleShjb25zdCBTdHJpbmcmIGtleSk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxI
aWdobGlnaHRSYW5nZUdyb3VwPj4mIG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CiAgICAg
CiBwcml2YXRlOgogICAgIEhpZ2hsaWdodE1hcCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDZjNzVlMDVmMmNjNGEzNTNiYWI0OGZmOGE3NjFlYzZlMzI1MTJjM2MuLmY1
N2QyODVjNDhlYTNiOWFkYmRiNzViOGQyYzU0ODUzNDAzYTI4YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNzc5LDYgKzc3OSw4IEBAIHZvaWQgRG9jdW1lbnQ6OmNvbW1vblRlYXJkb3du
KCkKICAgICAgICAgYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnBhdXNlQW5pbWF0aW9ucygpOwogCiAg
ICAgY2xlYXJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKKyAgICAKKyAgICBoaWdobGln
aHRNYXAoKS5jbGVhcigpOwogCiAgICAgbV9wZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXRMaXN0ID0g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA0MzNhMDc0ZjUwMjY0NzhjNzNiYWVlYTYxM2MzMzU4NDg5MmY1MzFjLi4wYzJlY2I0OThl
NmYyMGRkYTdkNmZmYmFjYWNkYzc4MDJlYjFhZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0yOCwxMCArMjgsMTIgQEAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAi
RWxsaXBzaXNCb3guaCIKICNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSGlnaGxpZ2h0TWFw
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCkBAIC00Niw2ICs0OCw4IEBACiAjaW5j
bHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAi
UmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25SYW5nZURhdGEuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CiAjaW5jbHVkZSAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50
U3R5bGUuaCIKQEAgLTE1Miw5ICsxNTYsMjkgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojppc1NlbGVj
dGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBjb24KIAog
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGF0
ZSgpCiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSA9IHJlbmRlcmVy
KCkuc2VsZWN0aW9uU3RhdGUoKTsKKyAgICBhdXRvIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9uU3Rh
dGUocmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpLCByZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rp
b24oKSk7CisgICAgCisgICAgLy8gSWYgdGhlcmUgYXJlIGVsbGlwc2lzIGZvbGxvd2luZywgbWFr
ZSBzdXJlIHRoZWlyIHNlbGVjdGlvbiBpcyB1cGRhdGVkLgorICAgIGlmIChtX3RydW5jYXRpb24g
IT0gY05vVHJ1bmNhdGlvbiAmJiByb290KCkuZWxsaXBzaXNCb3goKSkgeworICAgICAgICBFbGxp
cHNpc0JveCogZWxsaXBzaXMgPSByb290KCkuZWxsaXBzaXNCb3goKTsKKyAgICAgICAgaWYgKHN0
YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgeworICAgICAgICAgICAgYXV0byBb
c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOworICAg
ICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNob3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVj
dGVkIGlmIHRoZSBlbmQgb2YKKyAgICAgICAgICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0
aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgIC8vIGJl
Z2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9m
IHRoZQorICAgICAgICAgICAgLy8gdHJ1bmNhdGlvbi4KKyAgICAgICAgICAgIGVsbGlwc2lzLT5z
ZXRTZWxlY3Rpb25TdGF0ZShzZWxlY3Rpb25FbmQgPj0gbV90cnVuY2F0aW9uICYmIHNlbGVjdGlv
blN0YXJ0IDw9IG1fdHJ1bmNhdGlvbiA/CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25JbnNpZGUgOiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGVsbGlwc2lzLT5zZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJPYmpl
Y3Q6OlNlbGVjdGlvbk5vbmUpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gc3RhdGU7Cit9CisK
K1JlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6dmVyaWZ5U2VsZWN0
aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSwgU2VsZWN0aW9uUmFu
Z2VEYXRhJiBzZWxlY3Rpb24pIGNvbnN0Cit7CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhcnQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQg
fHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKSB7Ci0gICAgICAgIGF1dG8m
IHNlbGVjdGlvbiA9IHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpOwogICAgICAgICBhdXRv
IHN0YXJ0UG9zID0gc2VsZWN0aW9uLnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgYXV0byBlbmRQ
b3MgPSBzZWxlY3Rpb24uZW5kUG9zaXRpb24oKTsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGFm
dGVyIGEgaGFyZCBsaW5lIGJyZWFrIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFzdCBpdHMgZW5kLgpA
QCAtMTc2LDIxICsyMDAsNiBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRl
eHRCb3g6OnNlbGVjdGlvblN0YXRlKCkKICAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0
OjpTZWxlY3Rpb25Ob25lOwogICAgIH0KIAotICAgIC8vIElmIHRoZXJlIGFyZSBlbGxpcHNpcyBm
b2xsb3dpbmcsIG1ha2Ugc3VyZSB0aGVpciBzZWxlY3Rpb24gaXMgdXBkYXRlZC4KLSAgICBpZiAo
bV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsK
LSAgICAgICAgRWxsaXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7Ci0g
ICAgICAgIGlmIChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAg
ICAgICAgIGF1dG8gW3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmRdID0gc2VsZWN0aW9uU3Rh
cnRFbmQoKTsKLSAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lkZXJl
ZCB0byBiZSBzZWxlY3RlZCBpZiB0aGUgZW5kIG9mCi0gICAgICAgICAgICAvLyB0aGUgc2VsZWN0
aW9uIGlzIHBhc3QgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCi0gICAg
ICAgICAgICAvLyBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiBpcyBiZWZvcmUgb3IgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUKLSAgICAgICAgICAgIC8vIHRydW5jYXRpb24uCi0gICAgICAgICAg
ICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoc2VsZWN0aW9uRW5kID49IG1fdHJ1bmNhdGlv
biAmJiBzZWxlY3Rpb25TdGFydCA8PSBtX3RydW5jYXRpb24gPwotICAgICAgICAgICAgICAgIFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlIDogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25l
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3Rh
dGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKLSAgICB9Ci0KICAgICByZXR1cm4gc3Rh
dGU7CiB9CiAKQEAgLTUyNCw2ICs1MzMsOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAg
ICAgICAgICBwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbik7
CiAKICAgICAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtl
ZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsKKyAg
ICAgICAgYXV0byBoaWdobGlnaHRNYXJrZWRUZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0Zvckhp
Z2hsaWdodHMoVGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQpOworICAgICAgICBpZiAoIWhpZ2hs
aWdodE1hcmtlZFRleHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVu
ZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAjaWYgRU5BQkxFKFRFWFRf
U0VMRUNUSU9OKQogICAgICAgICBpZiAoaGF2ZVNlbGVjdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJs
aW5lcyAmJiAhY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8g
c2VsZWN0aW9uTWFya2VkVGV4dCA9IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3go
KnRoaXMpOwpAQCAtNTU3LDYgKzU2OSw5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAg
ICAgbWFya2VkVGV4dHMuYXBwZW5kKHsgY2xhbXBlZE9mZnNldChtX3N0YXJ0KSwgY2xhbXBlZE9m
ZnNldChlbmQoKSksIE1hcmtlZFRleHQ6OlVubWFya2VkIH0pOwogICAgICAgICBpZiAoIWlzUHJp
bnRpbmcpIHsKICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3Rvcihjb2xsZWN0TWFy
a2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQpKTsK
KyAgICAgICAgICAgIGF1dG8gaGlnaGxpZ2h0TWFya2VkVGV4dHMgPSBjb2xsZWN0TWFya2VkVGV4
dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kKTsKKyAgICAgICAgICAg
IGlmICghaGlnaGxpZ2h0TWFya2VkVGV4dHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1h
cmtlZFRleHRzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAK
ICAgICAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnREcmFnZ2VkQ29udGVudCA9ICEocGFpbnRJbmZv
LnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikp
OwogICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50RHJhZ2dlZENvbnRlbnQpIHsKQEAgLTY1Miwx
NCArNjY3LDExIEBAIHVuc2lnbmVkIElubGluZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQodW5zaWdu
ZWQgeCkgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CitzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRFbmRG
b3JTdGF0ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKSBjb25zdAogewotICAgIGF1dG8gc2VsZWN0aW9uU3Rh
dGUgPSByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7CiAgICAgaWYgKHNlbGVjdGlvblN0YXRl
ID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlKQogICAgICAgICByZXR1cm4geyAwLCBj
bGFtcGVkT2Zmc2V0KG1fc3RhcnQgKyBtX2xlbikgfTsKICAgICAKLSAgICBhdXRvIHN0YXJ0ID0g
cmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwotICAgIGF1dG8g
ZW5kID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICBp
ZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKICAgICAg
ICAgZW5kID0gcmVuZGVyZXIoKS50ZXh0KCkubGVuZ3RoKCk7CiAgICAgZWxzZSBpZiAoc2VsZWN0
aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpCkBAIC02NjcsNiArNjc5LDI0
IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVjdGlv
blN0YXJ0RW5kKCkgY29uc3QKICAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0YXJ0KSwgY2xh
bXBlZE9mZnNldChlbmQpIH07CiB9CiAKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElu
bGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKK3sKKyAgICBhdXRvIHNlbGVj
dGlvblN0YXRlID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpOworICAgIAorICAgIHJldHVy
biBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZShyZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5z
dGFydFBvc2l0aW9uKCksIHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9u
KCksIHNlbGVjdGlvblN0YXRlKTsKK30KKworc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
SW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoU2VsZWN0aW9uUmFuZ2VEYXRhICZyYW5n
ZURhdGEpIGNvbnN0Cit7CisgICAgYXV0byBzdGF0ZSA9IHJhbmdlRGF0YS5zZWxlY3Rpb25TdGF0
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOworICAgIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9uU3Rh
dGUoc3RhdGUsIHJhbmdlRGF0YSk7CisgICAgCisgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uTm9uZSkKKyAgICAgICAgcmV0dXJuIHswLCAwfTsKKyAgICAKKyAgICByZXR1
cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmFuZ2VEYXRhLnN0YXJ0UG9zaXRpb24oKSwgcmFu
Z2VEYXRhLmVuZFBvc2l0aW9uKCksIHN0YXRlKTsKK30KKwogYm9vbCBJbmxpbmVUZXh0Qm94Ojpo
YXNNYXJrZXJzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sbGVjdE1hcmtlZFRleHRzRm9yRG9j
dW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKS5zaXplKCk7CkBAIC03NzAs
NiArODAwLDI2IEBAIGF1dG8gSW5saW5lVGV4dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4
dChjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zCiAgICAgY2FzZSBNYXJrZWRUZXh0
OjpTcGVsbGluZ0Vycm9yOgogICAgIGNhc2UgTWFya2VkVGV4dDo6VW5tYXJrZWQ6CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWFya2VkVGV4dDo6SGlnaGxpZ2h0OgorICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHJlbmRlclN0eWxlID0gcGFyZW50KCktPnJlbmRlcmVyKCkuZ2V0VW5jYWNo
ZWRQc2V1ZG9TdHlsZSh7IFBzZXVkb0lkOjpIaWdobGlnaHQsIG1hcmtlZFRleHQuaGlnaGxpZ2h0
TmFtZSB9LCAmcGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChyZW5kZXJTdHlsZSkgeworICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tn
cm91bmRDb2xvciA9IHJlbmRlclN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgICAg
ICAgICBzdHlsZS50ZXh0U3R5bGVzLmZpbGxDb2xvciA9IHJlbmRlclN0eWxlLT5jb21wdXRlZFN0
cm9rZUNvbG9yKCk7CisgICAgICAgICAgICAgICAgc3R5bGUudGV4dFN0eWxlcy5zdHJva2VDb2xv
ciA9IHJlbmRlclN0eWxlLT5jb21wdXRlZFN0cm9rZUNvbG9yKCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgYXV0byBjb2xvciA9IHJlbmRlclN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHJlbmRlclN0eWxlLT50ZXh0
RGVjb3JhdGlvblN0eWxlKCk7CisgICAgICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9ucyA9IHJl
bmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOworCisgICAgICAgICAgICAgICAg
aWYgKGRlY29yYXRpb25zLmNvbnRhaW5zQW55KHsgVGV4dERlY29yYXRpb246OlVuZGVybGluZSwg
VGV4dERlY29yYXRpb246Ok92ZXJsaW5lLCBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2ggfSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJs
aW5lQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRp
b25TdHlsZXMudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TWFya2VkVGV4dDo6RHJhZ2dlZENvbnRlbnQ6CiAgICAgICAgIHN0eWxlLmFscGhhID0gMC4yNTsK
ICAgICAgICAgYnJlYWs7CkBAIC05NjMsNiArMTAxMyw0OSBAQCBWZWN0b3I8TWFya2VkVGV4dD4g
SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQ
YWludAogICAgIHJldHVybiBtYXJrZWRUZXh0czsKIH0KIAorCitWZWN0b3I8TWFya2VkVGV4dD4g
SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQ
aGFzZSBwaGFzZSkgY29uc3QKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuaGlnaGxpZ2h0QVBJRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4geyB9
OworICAgIAorICAgIEFTU0VSVF9BUkcocGhhc2UsIHBoYXNlID09IFRleHRQYWludFBoYXNlOjpC
YWNrZ3JvdW5kIHx8IHBoYXNlID09IFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBoYXNl
ID09IFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKTsKKworICAgIFVOVVNFRF9QQVJBTShwaGFz
ZSk7CisgICAgCisgICAgaWYgKCFyZW5kZXJlcigpLnRleHROb2RlKCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBWZWN0b3I8TWFya2VkVGV4dD4gbWFya2VkVGV4dHM7CisgICAgYXV0byYg
cGFyZW50UmVuZGVyZXIgPSBwYXJlbnQoKS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvJiBwYXJlbnRT
dHlsZSA9IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CisgICAgZm9yIChhdXRvJiBbaGlnaGxpZ2h0
S2V5LCBoaWdobGlnaHRHcm91cF0gOiByZW5kZXJlcigpLmRvY3VtZW50KCkuaGlnaGxpZ2h0TWFw
KCkubWFwKCkpIHsKKyAgICAgICAgYXV0byByZW5kZXJTdHlsZSA9IHBhcmVudFJlbmRlcmVyLmdl
dFVuY2FjaGVkUHNldWRvU3R5bGUoeyBQc2V1ZG9JZDo6SGlnaGxpZ2h0LCBoaWdobGlnaHRLZXkg
fSwgJnBhcmVudFN0eWxlKTsKKyAgICAgICAgaWYgKHJlbmRlclN0eWxlKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIHN0YXRpY1JhbmdlIDogaGlnaGxpZ2h0R3JvdXAtPnJhbmdlcygpKSB7Cisg
ICAgICAgICAgICAgICAgUG9zaXRpb24gc3RhcnRQb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24oc3RhdGljUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXRpY1JhbmdlLT5zdGFydE9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICBQb3NpdGlvbiBlbmRQb3MgPSBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2UtPmVuZENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+
ZW5kT2Zmc2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgp
ICYmIGVuZFBvcy5pc05vdE51bGwoKSkgeworICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmpl
Y3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
OworICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydFBvcy5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpOworICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIGVu
ZFJlbmRlcmVyID0gZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAg
ICAgICAgICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5k
T2Zmc2V0ID49IDApOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBoaWdobGlnaHREYXRhID0gU2VsZWN0aW9uUmFuZ2VEYXRhKHJlbmRlcmVyKCkudmlldygp
KTsKKyAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0RGF0YS5zZXRDb250ZXh0KHtzdGFydFJl
bmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZE9mZnNldCl9KTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gW2hpZ2hsaWdodFN0YXJ0LCBoaWdobGlnaHRFbmRd
ID0gaGlnaGxpZ2h0U3RhcnRFbmQoaGlnaGxpZ2h0RGF0YSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChoaWdobGlnaHRTdGFydCA8IGhpZ2hsaWdodEVuZCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1hcmtlZFRleHRzLmFwcGVuZCh7IGhpZ2hsaWdodFN0YXJ0LCBoaWdobGlnaHRFbmQsIE1h
cmtlZFRleHQ6OkhpZ2hsaWdodCwgbnVsbHB0ciwgaGlnaGxpZ2h0S2V5IH0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWFy
a2VkVGV4dHM7Cit9CisKIEZsb2F0UG9pbnQgSW5saW5lVGV4dEJveDo6dGV4dE9yaWdpbkZyb21C
b3hSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29uc3QKIHsKICAgICBGbG9hdFBvaW50
IHRleHRPcmlnaW4geyBib3hSZWN0LngoKSwgYm94UmVjdC55KCkgKyBsaW5lRm9udCgpLmZvbnRN
ZXRyaWNzKCkuYXNjZW50KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5oCmluZGV4IDVjYTJiYzg2MTM2YjZkOTMyNjg3MjhiZGFmODcyOTJlODg1OGQ2NWMuLmQ4ZDE4
N2E0NmExNjc0YjY2ZDBiYTg3NjM5NzA1YmVmNDY1MzdlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtMTIxLDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIExheW91dFJlY3QgbG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zLCB1
bnNpZ25lZCBlbmRQb3MpIGNvbnN0OwogICAgIGJvb2wgaXNTZWxlY3RlZCh1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikgY29uc3Q7CiAgICAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRFbmQoKSBjb25zdDsKKyAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBoaWdobGlnaHRTdGFydEVuZChTZWxlY3Rpb25SYW5nZURh
dGEmKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRv
bSkgb3ZlcnJpZGU7CkBAIC0xMzIsNiArMTMzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxl
dGVMaW5lKCkgZmluYWw7CiAgICAgdm9pZCBleHRyYWN0TGluZSgpIGZpbmFsOwogICAgIHZvaWQg
YXR0YWNoTGluZSgpIGZpbmFsOworICAgIAorICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3Rh
dGUgdmVyaWZ5U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSwgU2Vs
ZWN0aW9uUmFuZ2VEYXRhJikgY29uc3Q7CisgICAgCisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUodW5zaWduZWQsIHVuc2lnbmVkLCBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlKSBjb25zdDsKIAogcHVibGljOgogICAgIFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBmaW5hbDsKQEAgLTE2OSw2ICsx
NzQsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRU
ZXh0c0ZvckRyYWdnZWRDb250ZW50KCk7CiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RN
YXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZSkgY29uc3Q7CisgICAg
VmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBh
aW50UGhhc2UpIGNvbnN0OwogCiAgICAgTWFya2VkVGV4dFN0eWxlIGNvbXB1dGVTdHlsZUZvclVu
bWFya2VkTWFya2VkVGV4dChjb25zdCBQYWludEluZm8mKSBjb25zdDsKICAgICBTdHlsZWRNYXJr
ZWRUZXh0IHJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQoY29uc3QgTWFya2VkVGV4dCYsIGNvbnN0
IE1hcmtlZFRleHRTdHlsZSYgYmFzZVN0eWxlLCBjb25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcAppbmRleCBhNzkxOTJlMjhhZTE5OTk2ODZiNjI2
NTdjODkwZjU3YjJjODRlNTYyLi5kYjg0OWE0ZmJjYmZlYzQ4MDgwNGU0N2NkOTJlZTdhZmNmMTJm
NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCkBAIC03NCwxMiAr
NzQsMTIgQEAgVmVjdG9yPE1hcmtlZFRleHQ+IHN1YmRpdmlkZShjb25zdCBWZWN0b3I8TWFya2Vk
VGV4dD4mIG1hcmtlZFRleHRzLCBPdmVybGFwU3RyYXQKICAgICAgICAgICAgICAgICAgICAgICAg
IGZyb250bW9zdCA9IGo7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChm
cm9udG1vc3QpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zh
ciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50eXBl
LCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPm1hcmtlciB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBv
ZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbKmZyb250bW9zdF0u
bWFya2VkVGV4dC0+bWFya2VyLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPmhpZ2hs
aWdodE5hbWUgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRo
ZSBhcHBlbmRlZCBtYXJrZWQgdGV4dHMgbWF5IG5vdCBiZSBpbiBwYWludCBvcmRlci4gV2Ugd2ls
bCBmaXggdGhpcyB1cCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGk7ICsraikgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIXByb2Nlc3NlZE1hcmtlZFRleHRzLmNvbnRhaW5zKG9mZnNldHNbal0ubWFya2VkVGV4
dCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIs
IG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1tq
XS5tYXJrZWRUZXh0LT5tYXJrZXIgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbal0ubWFya2Vk
VGV4dC0+dHlwZSwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT5tYXJrZXIsIG9mZnNldHNbal0ubWFy
a2VkVGV4dC0+aGlnaGxpZ2h0TmFtZSB9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBvZmZzZXRTb0ZhciA9IG9mZnNldHNbaV0udmFsdWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAppbmRleCBiMmI1YWEwZmZmMGQ3ZTY1NGQxNDM4MjA4
Y2I5YWJhMmM3ZGFkODJhLi43M2MwNjIxMWZlNGFhNDMzMmEyYjgyODQwMWM5Y2FkMTlmMDkxZDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDYgKzQxLDcg
QEAgc3RydWN0IE1hcmtlZFRleHQgewogICAgICAgICBTcGVsbGluZ0Vycm9yLAogICAgICAgICBU
ZXh0TWF0Y2gsCiAgICAgICAgIERpY3RhdGlvbkFsdGVybmF0aXZlcywKKyAgICAgICAgSGlnaGxp
Z2h0LAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1J
TFkpLWd1YXJkLgogICAgICAgICBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLApAQCAt
NTEsMTIgKzUzLDEzIEBAIHN0cnVjdCBNYXJrZWRUZXh0IHsKICAgICB1bnNpZ25lZCBlbmRPZmZz
ZXQ7CiAgICAgVHlwZSB0eXBlOwogICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqIG1h
cmtlciB7IG51bGxwdHIgfTsKKyAgICBTdHJpbmcgaGlnaGxpZ2h0TmFtZSB7IH07CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBlbmRPZmZzZXQgPD0gc3RhcnRPZmZzZXQ7IH0K
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWFya2VkVGV4dCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hcmtl
ZFRleHQmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0ID09
IG90aGVyLnN0YXJ0T2Zmc2V0ICYmIGVuZE9mZnNldCA9PSBvdGhlci5lbmRPZmZzZXQgJiYgdHlw
ZSA9PSBvdGhlci50eXBlICYmIG1hcmtlciA9PSBvdGhlci5tYXJrZXI7CisgICAgICAgIHJldHVy
biBzdGFydE9mZnNldCA9PSBvdGhlci5zdGFydE9mZnNldCAmJiBlbmRPZmZzZXQgPT0gb3RoZXIu
ZW5kT2Zmc2V0ICYmIHR5cGUgPT0gb3RoZXIudHlwZSAmJiBtYXJrZXIgPT0gb3RoZXIubWFya2Vy
ICYmIGhpZ2hsaWdodE5hbWUgPT0gb3RoZXIuaGlnaGxpZ2h0TmFtZTsKICAgICB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCmluZGV4
IGI5YmFkMGEwOWYyOWJmN2FkYzlkMzMzZjRlODExYzNlYTFiOTNmYzIuLmVjYjIzZmUwYTFlODAw
YTdlZTRiZmU2NmFmMWZmM2FjODgxNDRhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCkBAIC0xNTQsMTAgKzE1NCw0MyBAQCBTZWxlY3Rp
b25SYW5nZURhdGE6OlNlbGVjdGlvblJhbmdlRGF0YShSZW5kZXJWaWV3JiB2aWV3KQogewogfQog
Cit2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6c2V0Q29udGV4dChjb25zdCBDb250ZXh0JiBjb250
ZXh0KQoreworICAgIGlmICgoY29udGV4dC5zdGFydCgpICYmICFjb250ZXh0LmVuZCgpKSB8fCAo
Y29udGV4dC5lbmQoKSAmJiAhY29udGV4dC5zdGFydCgpKSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fc2VsZWN0aW9uQ29udGV4dCA9IGNvbnRleHQ7Cit9CisKK1JlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUgU2VsZWN0aW9uUmFuZ2VEYXRhOjpzZWxlY3Rpb25TdGF0ZUZvclJlbmRlcmVyKFJl
bmRlck9iamVjdCYgcmVuZGVyZXIpCit7CisgICAgaWYgKCZyZW5kZXJlciA9PSBtX3NlbGVjdGlv
bkNvbnRleHQuc3RhcnQoKSB8fCByZW5kZXJlci5pc0Rlc2NlbmRhbnRPZihtX3NlbGVjdGlvbkNv
bnRleHQuc3RhcnQoKSkpIHsKKyAgICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgp
ICYmIG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSAmJiBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQo
KSA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25Cb3RoOworICAgICAgICBpZiAobV9zZWxlY3Rpb25Db250ZXh0LnN0
YXJ0KCkpCisgICAgICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydDsK
KyAgICB9CisgICAgaWYgKCZyZW5kZXJlciA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkgfHwg
cmVuZGVyZXIuaXNEZXNjZW5kYW50T2YobV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKSkKKyAgICAg
ICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kOworCisgICAgUmVuZGVyT2JqZWN0
KiBzZWxlY3Rpb25FbmQgPSBudWxscHRyOworICAgIGF1dG8qIHNlbGVjdGlvbkRhdGFFbmQgPSBt
X3NlbGVjdGlvbkNvbnRleHQuZW5kKCk7CisgICAgaWYgKHNlbGVjdGlvbkRhdGFFbmQpCisgICAg
ICAgIHNlbGVjdGlvbkVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqc2VsZWN0aW9uRGF0YUVu
ZCwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uKCkudmFsdWUoKSk7CisgICAgU2VsZWN0
aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3IobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkp
OworICAgIGZvciAoYXV0byogY3VycmVudFJlbmRlcmVyID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0
YXJ0KCk7IGN1cnJlbnRSZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gbV9zZWxlY3Rpb25D
b250ZXh0LmVuZCgpOyBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkp
IHsKKyAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSBtX3NlbGVjdGlvbkNvbnRleHQuc3Rh
cnQoKSB8fCBjdXJyZW50UmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5jYW5CZVNl
bGVjdGlvbkxlYWYoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnJlbmRl
cmVyID09IGN1cnJlbnRSZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvbkluc2lkZTsKKyAgICB9CisgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uTm9uZTsKKyAgICAKK30KKwogdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnNldChjb25zdCBD
b250ZXh0JiBzZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUpCiB7Ci0gICAg
Ly8gTWFrZSBzdXJlIGJvdGggb3VyIHN0YXJ0IGFuZCBlbmQgb2JqZWN0cyBhcmUgZGVmaW5lZC4K
LSAgICAvLyBDaGVjayB3d3cubXNuYmMuY29tIGFuZCB0cnkgY2xpY2tpbmcgYXJvdW5kIHRvIGZp
bmQgdGhlIGNhc2Ugd2hlcmUgdGhpcyBoYXBwZW5lZC4KICAgICBpZiAoKHNlbGVjdGlvbi5zdGFy
dCgpICYmICFzZWxlY3Rpb24uZW5kKCkpIHx8IChzZWxlY3Rpb24uZW5kKCkgJiYgIXNlbGVjdGlv
bi5zdGFydCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEp1c3QgcmV0dXJuIGlmIHRoZSBz
ZWxlY3Rpb24gaGFzbid0IGNoYW5nZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmgKaW5kZXggODlhZWJlNzQ2MTg0ZmUzZWY1NGQ1OGZjNTcwMTJmYWQw
MzU5MWZjOC4uNDRmOTFjY2JjNjNjMzg4OTJiMmNiMjFkOWNkNzBiM2E1YjYxZDkyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaApAQCAtNzEsNyAr
NzEsOSBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3N0YXJ0UG9zaXRp
b247CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX2VuZFBvc2l0aW9uOwogICAgIH07Ci0K
KyAgICAKKyAgICB2b2lkIHNldENvbnRleHQoY29uc3QgQ29udGV4dCYpOworICAgIAogICAgIGVu
dW0gY2xhc3MgUmVwYWludE1vZGUgeyBOZXdYT1JPbGQsIE5ld01pbnVzT2xkLCBOb3RoaW5nIH07
CiAgICAgdm9pZCBzZXQoY29uc3QgQ29udGV4dCYsIFJlcGFpbnRNb2RlID0gUmVwYWludE1vZGU6
Ok5ld1hPUk9sZCk7CiAgICAgY29uc3QgQ29udGV4dCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rpb25Db250ZXh0OyB9CkBAIC04Niw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0
IGJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIGNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRl
bnQ6Ok5vKTsgfQogICAgIEludFJlY3QgYm91bmRzQ2xpcHBlZFRvVmlzaWJsZUNvbnRlbnQoKSBj
b25zdCB7IHJldHVybiBjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOyB9
CiAgICAgdm9pZCByZXBhaW50KCkgY29uc3Q7CisgICAgCisgICAgUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCYpOwogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgQ2xpcFRvVmlzaWJsZUNvbnRlbnQgeyBZZXMsIE5vIH07
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTAy
NmRmNDk5NzFjOGZmNzA2MThlYjFhMTBhYzQyYTI5YmRhYTBiMS4uOWVjOGM3Y2RjMzQzN2RhOTE2
ZTg4Y2UzMGZiNzU4ZmUzYjE2MzBlYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEyLTE5ICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGlnaGxpZ2h0
cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZCBNYXJrZWRUZXh0IHRvIHRha2UgYSBzdHls
ZSBuYW1lLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisKIDIwMTktMTItMTggIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3QtbGxkYi13
ZWJraXQ6IFJ1biBpbiBDSSAoRm9sbG93LXVwIGZpeCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcAppbmRleCA1YTE2MmM2MGVjOTZmMGRjMmFm
YTA2ODBlM2MxZDgzZDBkYmZlODBmLi4wNjgxY2FiNDM2N2M1MjM2YTliNTY0MjhhZDZmMTA3NDVi
YTkxNzgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFy
a2VkVGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtl
ZFRleHQuY3BwCkBAIC01NSw2ICs1NSw4IEBAIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0mIG9zLCBNYXJrZWRUZXh0OjpUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBvcyA8
PCAiU3BlbGxpbmdFcnJvciI7CiAgICAgY2FzZSBNYXJrZWRUZXh0OjpUZXh0TWF0Y2g6CiAgICAg
ICAgIHJldHVybiBvcyA8PCAiVGV4dE1hdGNoIjsKKyAgICBjYXNlIE1hcmtlZFRleHQ6OkhpZ2hs
aWdodDoKKyAgICAgICAgcmV0dXJuIG9zIDw8ICJIaWdobGlnaHQiOwogICAgIGNhc2UgTWFya2Vk
VGV4dDo6VW5tYXJrZWQ6CiAgICAgICAgIHJldHVybiBvcyA8PCAiVW5tYXJrZWQiOwogICAgIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDhlZjY4ZGQ2ZWQ2OTdjNGRiOGI3MTI3
YzM1YjM2NjBkMzRmODk4MWYuLjlkZjE1ZGVmZmM3NzIyZWJkMThkOGE5YTlhNTk2N2FhOTcwOTEw
M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5
LTEyLTE5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUGFpbnQgaGlnaGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVu
dHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFw
aS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWw6IEFk
ZGVkLgorCiAyMDE5LTEyLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmViYXNlbGluZSBhbGwgc2VydmljZSB3b3JrZXJzIHRlc3RzIGFu
ZCB1bnNraXAgMiB0aGF0IG5vIGxvbmdlciB0aW1lIG91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzM2Q5MWQ3OTBlM2QzZGI2ZWU3NGRmMjM5ZGI1ZWM5NDc1OGM2YjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWstZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgdXNpbmcgSGlnaGxpZ2h0IGRvZXMg
bm90IGNhdXNlIHRoZSBkb2N1bWVudCB0byBnZXQgbGVha2VkLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBEb2N1bWVudCBkaWQgbm90IGxlYWsKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWsuaHRtbCBiL0xheW91dFRlc3RzL2hp
Z2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YWRlYmEwM2Jj
YzJmOWE5MmRkZGMwNGZkYjA1MDBhN2JiYTIxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWsuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBp
ZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNlcy9oaWdobGlnaHQtZnJhbWUuaHRtbCI+PC9pZnJh
bWU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgSGlnaGxpZ2h0IGRv
ZXMgbm90IGNhdXNlIHRoZSBkb2N1bWVudCB0byBnZXQgbGVha2VkLiIpOword2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBkb2N1bWVudFNob3VsZERpZShkb2N1bWVudElk
ZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJl
amVjdCkgeworICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGdjKCk7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzICYmICFpbnRlcm5hbHMuaXNE
b2N1bWVudEFsaXZlKGRvY3VtZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGhhbmRsZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9LCAxMCk7CisgICAgfSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVu
Y3Rpb24oKSB7CisgICAgbGV0IGZyYW1lRG9jdW1lbnRJZGVudGlmaWVyID0gaW50ZXJuYWxzLmRv
Y3VtZW50SWRlbnRpZmllcih0ZXN0RnJhbWUuY29udGVudERvY3VtZW50KTsKKyAgICB0ZXN0RnJh
bWUucmVtb3ZlKCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZG9jdW1l
bnRTaG91bGREaWUoZnJhbWVEb2N1bWVudElkZW50aWZpZXIpLnRoZW4oZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJEb2N1bWVudCBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9KTsKK307Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2hpZ2hsaWdodC9yZXNvdXJj
ZXMvaGlnaGxpZ2h0LWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvcmVzb3VyY2Vz
L2hpZ2hsaWdodC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyN2RhZjQzMGUyYWE3ZjI1YjNjYTkz
YWJkOWRjYWM1YWE2Zjk4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9oaWdobGln
aHQvcmVzb3VyY2VzL2hpZ2hsaWdodC1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGhlYWQ+CisJPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUpIHsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsK
KyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGRpdiBpZD0idGFyZ2V0Ij4KKwk8c3BhbiBpZD0i
aGlnaGxpZ2h0Ij5oaWdobGlnaHQ8L3NwYW4+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2xldCBoaWdo
bGlnaHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlnaGxpZ2h0Jyk7CitsZXQgaGlnaGxp
Z2h0UmFuZ2VHcm91cCA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7
c3RhcnRDb250YWluZXI6IGhpZ2hsaWdodCwgc3RhcnRPZmZzZXQ6IDAsIGVuZENvbnRhaW5lcjog
aGlnaGxpZ2h0LCBlbmRPZmZzZXQ6IDR9KSk7CitDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUi
LCBoaWdobGlnaHRSYW5nZUdyb3VwKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkv
aGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9o
aWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NmQxZTJjYTE0NmVmMzNiN2Q0NGQ1NzhiOWNkNzA5NzVjMDVmZTY0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhp
Z2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
dHlsZT4KKyAgICAjc3R5bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Owor
ICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0eWxl
MyB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6cGlu
azsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE9uZSA8c3BhbiBp
ZD0ic3R5bGUxIj50d288L3NwYW4+IHRoPHNwYW4gaWQ9InN0eWxlMiI+cmVlCisgICAgZm91cjwv
c3Bhbj4gZml2ZSA8c3BhbiBpZD0ic3R5bGUyIj5zaXgKKyAgICBzZXZlbjwvc3Bhbj4gZWlnaDxz
cGFuIGlkPSJzdHlsZTMiPnQgbmluZQorICAgIHRlbiBlbGV2ZW4gdHdlbHZlCisgICAgdGhpcnRl
ZW4gZm91PC9zcGFuPnJ0ZWVuIGZpZnRlZW4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdo
bGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkv
aGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIwMmM5OTgx
YmMzYTExOTljNWI0NTVhMWQyNjczMmUzYmIzNzVmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCkBAIC0wLDAgKzEsNDkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorICA8dGl0bGU+Q3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVudHMgYWNyb3NzIGVsZW1l
bnRzLjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI3BhaW50aW5nIj4KKyAgPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFz
c2VydCIgY29udGVudD0iSGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzcGVjaWZpZWQg
YWNyb3NzIGVsZW1lbnRzLiI+CisgICAgPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUt
aGlnaGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAg
IGNvbG9yOmdyZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDIp
IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOwor
ICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDMpIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRo
cmVlPC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0MiI+Zm91ciBmaXZlIHNpeDwvc3Bhbj4KKyAg
ICA8c3BhbiBpZD0idGV4dDMiPnNldmVuIGVpZ2h0IG5pbmU8L3NwYW4+CisgICAgPHNwYW4gaWQ9
InRleHQ0Ij50ZW4gZWxldmVuIHR3ZWx2ZTwvc3Bhbj4KKyAgICA8c3BhbiBpZD0idGV4dDUiPnRo
aXJ0ZWVuIGZvdXJ0ZWVuIGZpZnRlZW48L3NwYW4+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBs
ZXQgdGV4dEVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAg
ICAgIGxldCB0ZXh0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDInKTsK
KyAgICAgICAgbGV0IHRleHRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0
MycpOworICAgICAgICBsZXQgdGV4dEVsZW1lbnQ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RleHQ0Jyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGV4dDUnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAxID0gbmV3IEhp
Z2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVs
ZW1lbnQxLCBzdGFydE9mZnNldDogNCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDEsIGVuZE9m
ZnNldDogN30pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGln
aGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxl
bWVudDEsIHN0YXJ0T2Zmc2V0OiAxMCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDIsIGVuZE9m
ZnNldDogNH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNS
YW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Miwgc3RhcnRPZmZzZXQ6IDEwLCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50MywgZW5kT2Zmc2V0OiA1fSkpOworCisgICAgICAgIGxldCBo
aWdobGlnaHRSYW5nZUdyb3VwMyA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNS
YW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Mywgc3RhcnRPZmZzZXQ6IDEwLCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50NSwgZW5kT2Zmc2V0OiAxMn0pKTsKKworICAgICAgICBDU1Mu
aGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hsaWdodFJhbmdlR3JvdXAx
KTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDIiLCBoaWdo
bGlnaHRSYW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1o
aWdobGlnaHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGJlYTA1NDQ3NDNlNTQ3ZTBkNDM5NDI5NTM3ZDQyYjNlMzQ1MWI4YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1o
aWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAjc3R5
bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpn
cmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJs
dWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0eWxlMyB7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6cGluazsKKyAgICB9CisgICAg
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE88c3BhbiBpZD0ic3R5bGUxIj5uPC9zcGFu
PmU8c3BhbiBpZD0ic3R5bGUyIj4gPC9zcGFuPnQ8c3BhbiBpZD0ic3R5bGUyIj53PC9zcGFuPm88
c3BhbiBpZD0ic3R5bGUzIj4gPC9zcGFuPnQ8c3BhbiBpZD0ic3R5bGUzIj5oPC9zcGFuPnJlPHNw
YW4gaWQ9InN0eWxlMyI+ZTwvc3Bhbj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGln
aHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRmNWVkNTdjYmNmY2YwMDllOTNmY2VhYjQ3NWU5ZTgwZmY0YzMwZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sCkBAIC0wLDAgKzEs
NDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorICA8dGl0bGU+TXVsdGlwbGUgY3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVu
dHMuPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jY3JlYXRpbmctaGlnaGxpZ2h0cyI+CisgIDxsaW5r
IHJlbD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwiPgorICA8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik11bHRpcGxlIGhpZ2hsaWdodHMgc2hvdWxkIGJlIGFi
bGUgdG8gYmUgc3BlY2lmaWVkLiI+CisgICAgPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1w
bGUtaGlnaGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAg
ICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdo
dDIpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVk
OworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDMpIHsKKyAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAg
ICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdv
IHRocmVlPC9zcGFuPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgbGV0IHRleHRFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAgICAgIGxldCBoaWdobGlnaHRS
YW5nZUdyb3VwMSA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3Rh
cnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMSwgZW5kQ29udGFpbmVyOiB0
ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiAyfSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5n
ZUdyb3VwMiA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRD
b250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMywgZW5kQ29udGFpbmVyOiB0ZXh0
RWxlbWVudCwgZW5kT2Zmc2V0OiA0fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMi5h
ZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zm
c2V0OiA1LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDZ9KSk7CisKKyAg
ICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAzID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAo
bmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0
OiA3LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDh9KSk7CisgICAgICAg
IGhpZ2hsaWdodFJhbmdlR3JvdXAzLmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVy
OiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDksIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQs
IGVuZE9mZnNldDogMTB9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAzLmFkZChuZXcg
U3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDEy
LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDEzfSkpOworICAgICAgICAK
KworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hs
aWdodFJhbmdlR3JvdXAxKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhp
Z2hsaWdodDIiLCBoaWdobGlnaHRSYW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRz
LnNldCgiZXhhbXBsZS1oaWdobGlnaHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386168</attachid>
            <date>2019-12-19 17:32:55 -0800</date>
            <delta_ts>2019-12-19 17:58:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191219173254.patch</filename>
            <type>text/plain</type>
            <size>39777</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhNjBjNjUwZmU3NjI3
Mzg2Y2U3ZDMzZDlhZDZkYjA1MWIwOTY3Ni4uMTliNTkzYjYxNDg5NGUyNTY1ZDViYjJiOTIyMmI3
ZmRmZWMyNjE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJl
c2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJlbmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAg
VGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLgorCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
dmVyaWZ5U2VsZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0
YXJ0RW5kRm9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uU3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6aGlnaGxpZ2h0U3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dCk6CisKKyAgICAgICAgVXNlIHRoZSBoaWdo
bGlnaHQgbmFtZSBmcm9tIHRoZSBIaWdobGlnaHRSYW5nZUdyb3VwIHRvIG9idGFpbiB0aGUgc3R5
bGUgZnJvbSB0aGUgcmVuZGVyZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMgY29uc3QpOgorCisgICAgICAgIFJlbmRl
ciB0aGUgaGlnaGxpZ2h0cyB3aGVuIHBhaW50aW5nIHRleHQuIERldGVybWluZSBpZiBhIGhpZ2hs
aWdodCBpcyBwcmVzZW50IGluIHRoZSBjdXJyZW50IFJlbmRlck9iamVjdCwgYW5kCisgICAgICAg
IGFkZCBhZGRpdGlvbmFsIE1hcmtlZFRleHQgdG8gYmUgcmVuZGVyZWQgd2hlbiBwYWludGluZwor
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJkaXZpZGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9NYXJrZWRUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrZWRUZXh0
OjpvcGVyYXRvcj09IGNvbnN0KToKKworICAgICAgICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtl
IGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6c2VsZWN0aW9uU3RhdGVGb3JS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnNldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorCisgICAgICAgIExldmVy
YWdlIFNlbGVjdGlvblJhbmdlRGF0YSBmb3IgaGlnaGxpZ2h0cy4KKwogMjAxOS0xMi0xOCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIEFuaW1hdGlvbnMgc3Rv
cCBpZiBuZXcgdGFiIG9wZW5lZCAoYW5kIGNsb3NlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKaW5kZXggZmY5OGNjM2JhNTMyZmUwMWRlNDA3
NTY4OWEwYjkyMzY1N2ZjZWVmMi4uMWE0ODU3YjI1YzU4ZmU4ZmM0YTQxNTlhZjRhODk3N2VkOWZi
N2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxp
Z2h0TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0
TWFwLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFN0
cmluZyYpOwogICAgIAogICAgIFJlZlB0cjxIaWdobGlnaHRSYW5nZUdyb3VwPiBnZXRHcm91cEZv
cktleShjb25zdCBTdHJpbmcmIGtleSk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxI
aWdobGlnaHRSYW5nZUdyb3VwPj4mIG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CiAgICAg
CiBwcml2YXRlOgogICAgIEhpZ2hsaWdodE1hcCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDZjNzVlMDVmMmNjNGEzNTNiYWI0OGZmOGE3NjFlYzZlMzI1MTJjM2MuLmY1
N2QyODVjNDhlYTNiOWFkYmRiNzViOGQyYzU0ODUzNDAzYTI4YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNzc5LDYgKzc3OSw4IEBAIHZvaWQgRG9jdW1lbnQ6OmNvbW1vblRlYXJkb3du
KCkKICAgICAgICAgYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnBhdXNlQW5pbWF0aW9ucygpOwogCiAg
ICAgY2xlYXJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKKyAgICAKKyAgICBoaWdobGln
aHRNYXAoKS5jbGVhcigpOwogCiAgICAgbV9wZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXRMaXN0ID0g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA0MzNhMDc0ZjUwMjY0NzhjNzNiYWVlYTYxM2MzMzU4NDg5MmY1MzFjLi4wYzJlY2I0OThl
NmYyMGRkYTdkNmZmYmFjYWNkYzc4MDJlYjFhZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0yOCwxMCArMjgsMTIgQEAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAi
RWxsaXBzaXNCb3guaCIKICNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSGlnaGxpZ2h0TWFw
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCkBAIC00Niw2ICs0OCw4IEBACiAjaW5j
bHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAi
UmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25SYW5nZURhdGEuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CiAjaW5jbHVkZSAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50
U3R5bGUuaCIKQEAgLTE1Miw5ICsxNTYsMjkgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojppc1NlbGVj
dGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBjb24KIAog
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGF0
ZSgpCiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSA9IHJlbmRlcmVy
KCkuc2VsZWN0aW9uU3RhdGUoKTsKKyAgICBhdXRvIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9uU3Rh
dGUocmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpLCByZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rp
b24oKSk7CisgICAgCisgICAgLy8gSWYgdGhlcmUgYXJlIGVsbGlwc2lzIGZvbGxvd2luZywgbWFr
ZSBzdXJlIHRoZWlyIHNlbGVjdGlvbiBpcyB1cGRhdGVkLgorICAgIGlmIChtX3RydW5jYXRpb24g
IT0gY05vVHJ1bmNhdGlvbiAmJiByb290KCkuZWxsaXBzaXNCb3goKSkgeworICAgICAgICBFbGxp
cHNpc0JveCogZWxsaXBzaXMgPSByb290KCkuZWxsaXBzaXNCb3goKTsKKyAgICAgICAgaWYgKHN0
YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgeworICAgICAgICAgICAgYXV0byBb
c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOworICAg
ICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNob3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVj
dGVkIGlmIHRoZSBlbmQgb2YKKyAgICAgICAgICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0
aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgIC8vIGJl
Z2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9m
IHRoZQorICAgICAgICAgICAgLy8gdHJ1bmNhdGlvbi4KKyAgICAgICAgICAgIGVsbGlwc2lzLT5z
ZXRTZWxlY3Rpb25TdGF0ZShzZWxlY3Rpb25FbmQgPj0gbV90cnVuY2F0aW9uICYmIHNlbGVjdGlv
blN0YXJ0IDw9IG1fdHJ1bmNhdGlvbiA/CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25JbnNpZGUgOiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGVsbGlwc2lzLT5zZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJPYmpl
Y3Q6OlNlbGVjdGlvbk5vbmUpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gc3RhdGU7Cit9CisK
K1JlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6dmVyaWZ5U2VsZWN0
aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSwgU2VsZWN0aW9uUmFu
Z2VEYXRhJiBzZWxlY3Rpb24pIGNvbnN0Cit7CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhcnQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQg
fHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKSB7Ci0gICAgICAgIGF1dG8m
IHNlbGVjdGlvbiA9IHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpOwogICAgICAgICBhdXRv
IHN0YXJ0UG9zID0gc2VsZWN0aW9uLnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgYXV0byBlbmRQ
b3MgPSBzZWxlY3Rpb24uZW5kUG9zaXRpb24oKTsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGFm
dGVyIGEgaGFyZCBsaW5lIGJyZWFrIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFzdCBpdHMgZW5kLgpA
QCAtMTc2LDIxICsyMDAsNiBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRl
eHRCb3g6OnNlbGVjdGlvblN0YXRlKCkKICAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0
OjpTZWxlY3Rpb25Ob25lOwogICAgIH0KIAotICAgIC8vIElmIHRoZXJlIGFyZSBlbGxpcHNpcyBm
b2xsb3dpbmcsIG1ha2Ugc3VyZSB0aGVpciBzZWxlY3Rpb24gaXMgdXBkYXRlZC4KLSAgICBpZiAo
bV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsK
LSAgICAgICAgRWxsaXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7Ci0g
ICAgICAgIGlmIChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAg
ICAgICAgIGF1dG8gW3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmRdID0gc2VsZWN0aW9uU3Rh
cnRFbmQoKTsKLSAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lkZXJl
ZCB0byBiZSBzZWxlY3RlZCBpZiB0aGUgZW5kIG9mCi0gICAgICAgICAgICAvLyB0aGUgc2VsZWN0
aW9uIGlzIHBhc3QgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCi0gICAg
ICAgICAgICAvLyBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiBpcyBiZWZvcmUgb3IgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUKLSAgICAgICAgICAgIC8vIHRydW5jYXRpb24uCi0gICAgICAgICAg
ICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoc2VsZWN0aW9uRW5kID49IG1fdHJ1bmNhdGlv
biAmJiBzZWxlY3Rpb25TdGFydCA8PSBtX3RydW5jYXRpb24gPwotICAgICAgICAgICAgICAgIFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlIDogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25l
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3Rh
dGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKLSAgICB9Ci0KICAgICByZXR1cm4gc3Rh
dGU7CiB9CiAKQEAgLTUyNCw2ICs1MzMsOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAg
ICAgICAgICBwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbik7
CiAKICAgICAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtl
ZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsKKyAg
ICAgICAgYXV0byBoaWdobGlnaHRNYXJrZWRUZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0Zvckhp
Z2hsaWdodHMoVGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQpOworICAgICAgICBpZiAoIWhpZ2hs
aWdodE1hcmtlZFRleHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVu
ZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAjaWYgRU5BQkxFKFRFWFRf
U0VMRUNUSU9OKQogICAgICAgICBpZiAoaGF2ZVNlbGVjdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJs
aW5lcyAmJiAhY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8g
c2VsZWN0aW9uTWFya2VkVGV4dCA9IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3go
KnRoaXMpOwpAQCAtNTU3LDYgKzU2OSw5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAg
ICAgbWFya2VkVGV4dHMuYXBwZW5kKHsgY2xhbXBlZE9mZnNldChtX3N0YXJ0KSwgY2xhbXBlZE9m
ZnNldChlbmQoKSksIE1hcmtlZFRleHQ6OlVubWFya2VkIH0pOwogICAgICAgICBpZiAoIWlzUHJp
bnRpbmcpIHsKICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3Rvcihjb2xsZWN0TWFy
a2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQpKTsK
KyAgICAgICAgICAgIGF1dG8gaGlnaGxpZ2h0TWFya2VkVGV4dHMgPSBjb2xsZWN0TWFya2VkVGV4
dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kKTsKKyAgICAgICAgICAg
IGlmICghaGlnaGxpZ2h0TWFya2VkVGV4dHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1h
cmtlZFRleHRzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAK
ICAgICAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnREcmFnZ2VkQ29udGVudCA9ICEocGFpbnRJbmZv
LnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikp
OwogICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50RHJhZ2dlZENvbnRlbnQpIHsKQEAgLTY1Miwx
NCArNjY3LDExIEBAIHVuc2lnbmVkIElubGluZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQodW5zaWdu
ZWQgeCkgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CitzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRFbmRG
b3JTdGF0ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKSBjb25zdAogewotICAgIGF1dG8gc2VsZWN0aW9uU3Rh
dGUgPSByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7CiAgICAgaWYgKHNlbGVjdGlvblN0YXRl
ID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlKQogICAgICAgICByZXR1cm4geyAwLCBj
bGFtcGVkT2Zmc2V0KG1fc3RhcnQgKyBtX2xlbikgfTsKICAgICAKLSAgICBhdXRvIHN0YXJ0ID0g
cmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwotICAgIGF1dG8g
ZW5kID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICBp
ZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKICAgICAg
ICAgZW5kID0gcmVuZGVyZXIoKS50ZXh0KCkubGVuZ3RoKCk7CiAgICAgZWxzZSBpZiAoc2VsZWN0
aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpCkBAIC02NjcsNiArNjc5LDI0
IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVjdGlv
blN0YXJ0RW5kKCkgY29uc3QKICAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0YXJ0KSwgY2xh
bXBlZE9mZnNldChlbmQpIH07CiB9CiAKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElu
bGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKK3sKKyAgICBhdXRvIHNlbGVj
dGlvblN0YXRlID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpOworICAgIAorICAgIHJldHVy
biBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZShyZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5z
dGFydFBvc2l0aW9uKCksIHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9u
KCksIHNlbGVjdGlvblN0YXRlKTsKK30KKworc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
SW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoU2VsZWN0aW9uUmFuZ2VEYXRhICZyYW5n
ZURhdGEpIGNvbnN0Cit7CisgICAgYXV0byBzdGF0ZSA9IHJhbmdlRGF0YS5zZWxlY3Rpb25TdGF0
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOworICAgIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9uU3Rh
dGUoc3RhdGUsIHJhbmdlRGF0YSk7CisgICAgCisgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uTm9uZSkKKyAgICAgICAgcmV0dXJuIHswLCAwfTsKKyAgICAKKyAgICByZXR1
cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmFuZ2VEYXRhLnN0YXJ0UG9zaXRpb24oKSwgcmFu
Z2VEYXRhLmVuZFBvc2l0aW9uKCksIHN0YXRlKTsKK30KKwogYm9vbCBJbmxpbmVUZXh0Qm94Ojpo
YXNNYXJrZXJzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sbGVjdE1hcmtlZFRleHRzRm9yRG9j
dW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKS5zaXplKCk7CkBAIC03NzAs
NiArODAwLDI2IEBAIGF1dG8gSW5saW5lVGV4dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4
dChjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zCiAgICAgY2FzZSBNYXJrZWRUZXh0
OjpTcGVsbGluZ0Vycm9yOgogICAgIGNhc2UgTWFya2VkVGV4dDo6VW5tYXJrZWQ6CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWFya2VkVGV4dDo6SGlnaGxpZ2h0OgorICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHJlbmRlclN0eWxlID0gcGFyZW50KCktPnJlbmRlcmVyKCkuZ2V0VW5jYWNo
ZWRQc2V1ZG9TdHlsZSh7IFBzZXVkb0lkOjpIaWdobGlnaHQsIG1hcmtlZFRleHQuaGlnaGxpZ2h0
TmFtZSB9LCAmcGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChyZW5kZXJTdHlsZSkgeworICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tn
cm91bmRDb2xvciA9IHJlbmRlclN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgICAg
ICAgICBzdHlsZS50ZXh0U3R5bGVzLmZpbGxDb2xvciA9IHJlbmRlclN0eWxlLT5jb21wdXRlZFN0
cm9rZUNvbG9yKCk7CisgICAgICAgICAgICAgICAgc3R5bGUudGV4dFN0eWxlcy5zdHJva2VDb2xv
ciA9IHJlbmRlclN0eWxlLT5jb21wdXRlZFN0cm9rZUNvbG9yKCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgYXV0byBjb2xvciA9IHJlbmRlclN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHJlbmRlclN0eWxlLT50ZXh0
RGVjb3JhdGlvblN0eWxlKCk7CisgICAgICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9ucyA9IHJl
bmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOworCisgICAgICAgICAgICAgICAg
aWYgKGRlY29yYXRpb25zLmNvbnRhaW5zQW55KHsgVGV4dERlY29yYXRpb246OlVuZGVybGluZSwg
VGV4dERlY29yYXRpb246Ok92ZXJsaW5lLCBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2ggfSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJs
aW5lQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRp
b25TdHlsZXMudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TWFya2VkVGV4dDo6RHJhZ2dlZENvbnRlbnQ6CiAgICAgICAgIHN0eWxlLmFscGhhID0gMC4yNTsK
ICAgICAgICAgYnJlYWs7CkBAIC05NjMsNiArMTAxMyw0OSBAQCBWZWN0b3I8TWFya2VkVGV4dD4g
SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQ
YWludAogICAgIHJldHVybiBtYXJrZWRUZXh0czsKIH0KIAorCitWZWN0b3I8TWFya2VkVGV4dD4g
SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQ
aGFzZSBwaGFzZSkgY29uc3QKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuaGlnaGxpZ2h0QVBJRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4geyB9
OworICAgIAorICAgIEFTU0VSVF9BUkcocGhhc2UsIHBoYXNlID09IFRleHRQYWludFBoYXNlOjpC
YWNrZ3JvdW5kIHx8IHBoYXNlID09IFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBoYXNl
ID09IFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKTsKKworICAgIFVOVVNFRF9QQVJBTShwaGFz
ZSk7CisgICAgCisgICAgaWYgKCFyZW5kZXJlcigpLnRleHROb2RlKCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBWZWN0b3I8TWFya2VkVGV4dD4gbWFya2VkVGV4dHM7CisgICAgYXV0byYg
cGFyZW50UmVuZGVyZXIgPSBwYXJlbnQoKS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvJiBwYXJlbnRT
dHlsZSA9IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CisgICAgZm9yIChhdXRvJiBbaGlnaGxpZ2h0
S2V5LCBoaWdobGlnaHRHcm91cF0gOiByZW5kZXJlcigpLmRvY3VtZW50KCkuaGlnaGxpZ2h0TWFw
KCkubWFwKCkpIHsKKyAgICAgICAgYXV0byByZW5kZXJTdHlsZSA9IHBhcmVudFJlbmRlcmVyLmdl
dFVuY2FjaGVkUHNldWRvU3R5bGUoeyBQc2V1ZG9JZDo6SGlnaGxpZ2h0LCBoaWdobGlnaHRLZXkg
fSwgJnBhcmVudFN0eWxlKTsKKyAgICAgICAgaWYgKHJlbmRlclN0eWxlKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIHN0YXRpY1JhbmdlIDogaGlnaGxpZ2h0R3JvdXAtPnJhbmdlcygpKSB7Cisg
ICAgICAgICAgICAgICAgUG9zaXRpb24gc3RhcnRQb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24oc3RhdGljUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXRpY1JhbmdlLT5zdGFydE9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICBQb3NpdGlvbiBlbmRQb3MgPSBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2UtPmVuZENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+
ZW5kT2Zmc2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgp
ICYmIGVuZFBvcy5pc05vdE51bGwoKSkgeworICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmpl
Y3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
OworICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydFBvcy5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpOworICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIGVu
ZFJlbmRlcmVyID0gZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAg
ICAgICAgICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5k
T2Zmc2V0ID49IDApOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBoaWdobGlnaHREYXRhID0gU2VsZWN0aW9uUmFuZ2VEYXRhKHJlbmRlcmVyKCkudmlldygp
KTsKKyAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0RGF0YS5zZXRDb250ZXh0KHtzdGFydFJl
bmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZE9mZnNldCl9KTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gW2hpZ2hsaWdodFN0YXJ0LCBoaWdobGlnaHRFbmRd
ID0gaGlnaGxpZ2h0U3RhcnRFbmQoaGlnaGxpZ2h0RGF0YSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChoaWdobGlnaHRTdGFydCA8IGhpZ2hsaWdodEVuZCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1hcmtlZFRleHRzLmFwcGVuZCh7IGhpZ2hsaWdodFN0YXJ0LCBoaWdobGlnaHRFbmQsIE1h
cmtlZFRleHQ6OkhpZ2hsaWdodCwgbnVsbHB0ciwgaGlnaGxpZ2h0S2V5IH0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWFy
a2VkVGV4dHM7Cit9CisKIEZsb2F0UG9pbnQgSW5saW5lVGV4dEJveDo6dGV4dE9yaWdpbkZyb21C
b3hSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29uc3QKIHsKICAgICBGbG9hdFBvaW50
IHRleHRPcmlnaW4geyBib3hSZWN0LngoKSwgYm94UmVjdC55KCkgKyBsaW5lRm9udCgpLmZvbnRN
ZXRyaWNzKCkuYXNjZW50KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5oCmluZGV4IDVjYTJiYzg2MTM2YjZkOTMyNjg3MjhiZGFmODcyOTJlODg1OGQ2NWMuLmQ4ZDE4
N2E0NmExNjc0YjY2ZDBiYTg3NjM5NzA1YmVmNDY1MzdlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtMTIxLDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIExheW91dFJlY3QgbG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zLCB1
bnNpZ25lZCBlbmRQb3MpIGNvbnN0OwogICAgIGJvb2wgaXNTZWxlY3RlZCh1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikgY29uc3Q7CiAgICAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRFbmQoKSBjb25zdDsKKyAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBoaWdobGlnaHRTdGFydEVuZChTZWxlY3Rpb25SYW5nZURh
dGEmKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRv
bSkgb3ZlcnJpZGU7CkBAIC0xMzIsNiArMTMzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxl
dGVMaW5lKCkgZmluYWw7CiAgICAgdm9pZCBleHRyYWN0TGluZSgpIGZpbmFsOwogICAgIHZvaWQg
YXR0YWNoTGluZSgpIGZpbmFsOworICAgIAorICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3Rh
dGUgdmVyaWZ5U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSwgU2Vs
ZWN0aW9uUmFuZ2VEYXRhJikgY29uc3Q7CisgICAgCisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUodW5zaWduZWQsIHVuc2lnbmVkLCBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlKSBjb25zdDsKIAogcHVibGljOgogICAgIFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBmaW5hbDsKQEAgLTE2OSw2ICsx
NzQsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRU
ZXh0c0ZvckRyYWdnZWRDb250ZW50KCk7CiAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RN
YXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZSkgY29uc3Q7CisgICAg
VmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBh
aW50UGhhc2UpIGNvbnN0OwogCiAgICAgTWFya2VkVGV4dFN0eWxlIGNvbXB1dGVTdHlsZUZvclVu
bWFya2VkTWFya2VkVGV4dChjb25zdCBQYWludEluZm8mKSBjb25zdDsKICAgICBTdHlsZWRNYXJr
ZWRUZXh0IHJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQoY29uc3QgTWFya2VkVGV4dCYsIGNvbnN0
IE1hcmtlZFRleHRTdHlsZSYgYmFzZVN0eWxlLCBjb25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcAppbmRleCBhNzkxOTJlMjhhZTE5OTk2ODZiNjI2
NTdjODkwZjU3YjJjODRlNTYyLi5kYjg0OWE0ZmJjYmZlYzQ4MDgwNGU0N2NkOTJlZTdhZmNmMTJm
NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCkBAIC03NCwxMiAr
NzQsMTIgQEAgVmVjdG9yPE1hcmtlZFRleHQ+IHN1YmRpdmlkZShjb25zdCBWZWN0b3I8TWFya2Vk
VGV4dD4mIG1hcmtlZFRleHRzLCBPdmVybGFwU3RyYXQKICAgICAgICAgICAgICAgICAgICAgICAg
IGZyb250bW9zdCA9IGo7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChm
cm9udG1vc3QpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zh
ciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50eXBl
LCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPm1hcmtlciB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBv
ZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbKmZyb250bW9zdF0u
bWFya2VkVGV4dC0+bWFya2VyLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPmhpZ2hs
aWdodE5hbWUgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRo
ZSBhcHBlbmRlZCBtYXJrZWQgdGV4dHMgbWF5IG5vdCBiZSBpbiBwYWludCBvcmRlci4gV2Ugd2ls
bCBmaXggdGhpcyB1cCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGk7ICsraikgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIXByb2Nlc3NlZE1hcmtlZFRleHRzLmNvbnRhaW5zKG9mZnNldHNbal0ubWFya2VkVGV4
dCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIs
IG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1tq
XS5tYXJrZWRUZXh0LT5tYXJrZXIgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbal0ubWFya2Vk
VGV4dC0+dHlwZSwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT5tYXJrZXIsIG9mZnNldHNbal0ubWFy
a2VkVGV4dC0+aGlnaGxpZ2h0TmFtZSB9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBvZmZzZXRTb0ZhciA9IG9mZnNldHNbaV0udmFsdWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAppbmRleCBiMmI1YWEwZmZmMGQ3ZTY1NGQxNDM4MjA4
Y2I5YWJhMmM3ZGFkODJhLi43M2MwNjIxMWZlNGFhNDMzMmEyYjgyODQwMWM5Y2FkMTlmMDkxZDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDYgKzQxLDcg
QEAgc3RydWN0IE1hcmtlZFRleHQgewogICAgICAgICBTcGVsbGluZ0Vycm9yLAogICAgICAgICBU
ZXh0TWF0Y2gsCiAgICAgICAgIERpY3RhdGlvbkFsdGVybmF0aXZlcywKKyAgICAgICAgSGlnaGxp
Z2h0LAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1J
TFkpLWd1YXJkLgogICAgICAgICBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLApAQCAt
NTEsMTIgKzUzLDEzIEBAIHN0cnVjdCBNYXJrZWRUZXh0IHsKICAgICB1bnNpZ25lZCBlbmRPZmZz
ZXQ7CiAgICAgVHlwZSB0eXBlOwogICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqIG1h
cmtlciB7IG51bGxwdHIgfTsKKyAgICBTdHJpbmcgaGlnaGxpZ2h0TmFtZSB7IH07CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBlbmRPZmZzZXQgPD0gc3RhcnRPZmZzZXQ7IH0K
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWFya2VkVGV4dCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hcmtl
ZFRleHQmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0ID09
IG90aGVyLnN0YXJ0T2Zmc2V0ICYmIGVuZE9mZnNldCA9PSBvdGhlci5lbmRPZmZzZXQgJiYgdHlw
ZSA9PSBvdGhlci50eXBlICYmIG1hcmtlciA9PSBvdGhlci5tYXJrZXI7CisgICAgICAgIHJldHVy
biBzdGFydE9mZnNldCA9PSBvdGhlci5zdGFydE9mZnNldCAmJiBlbmRPZmZzZXQgPT0gb3RoZXIu
ZW5kT2Zmc2V0ICYmIHR5cGUgPT0gb3RoZXIudHlwZSAmJiBtYXJrZXIgPT0gb3RoZXIubWFya2Vy
ICYmIGhpZ2hsaWdodE5hbWUgPT0gb3RoZXIuaGlnaGxpZ2h0TmFtZTsKICAgICB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCmluZGV4
IGI5YmFkMGEwOWYyOWJmN2FkYzlkMzMzZjRlODExYzNlYTFiOTNmYzIuLmVjYjIzZmUwYTFlODAw
YTdlZTRiZmU2NmFmMWZmM2FjODgxNDRhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCkBAIC0xNTQsMTAgKzE1NCw0MyBAQCBTZWxlY3Rp
b25SYW5nZURhdGE6OlNlbGVjdGlvblJhbmdlRGF0YShSZW5kZXJWaWV3JiB2aWV3KQogewogfQog
Cit2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6c2V0Q29udGV4dChjb25zdCBDb250ZXh0JiBjb250
ZXh0KQoreworICAgIGlmICgoY29udGV4dC5zdGFydCgpICYmICFjb250ZXh0LmVuZCgpKSB8fCAo
Y29udGV4dC5lbmQoKSAmJiAhY29udGV4dC5zdGFydCgpKSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fc2VsZWN0aW9uQ29udGV4dCA9IGNvbnRleHQ7Cit9CisKK1JlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUgU2VsZWN0aW9uUmFuZ2VEYXRhOjpzZWxlY3Rpb25TdGF0ZUZvclJlbmRlcmVyKFJl
bmRlck9iamVjdCYgcmVuZGVyZXIpCit7CisgICAgaWYgKCZyZW5kZXJlciA9PSBtX3NlbGVjdGlv
bkNvbnRleHQuc3RhcnQoKSB8fCByZW5kZXJlci5pc0Rlc2NlbmRhbnRPZihtX3NlbGVjdGlvbkNv
bnRleHQuc3RhcnQoKSkpIHsKKyAgICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgp
ICYmIG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSAmJiBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQo
KSA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25Cb3RoOworICAgICAgICBpZiAobV9zZWxlY3Rpb25Db250ZXh0LnN0
YXJ0KCkpCisgICAgICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydDsK
KyAgICB9CisgICAgaWYgKCZyZW5kZXJlciA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkgfHwg
cmVuZGVyZXIuaXNEZXNjZW5kYW50T2YobV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKSkKKyAgICAg
ICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kOworCisgICAgUmVuZGVyT2JqZWN0
KiBzZWxlY3Rpb25FbmQgPSBudWxscHRyOworICAgIGF1dG8qIHNlbGVjdGlvbkRhdGFFbmQgPSBt
X3NlbGVjdGlvbkNvbnRleHQuZW5kKCk7CisgICAgaWYgKHNlbGVjdGlvbkRhdGFFbmQpCisgICAg
ICAgIHNlbGVjdGlvbkVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqc2VsZWN0aW9uRGF0YUVu
ZCwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uKCkudmFsdWUoKSk7CisgICAgU2VsZWN0
aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3IobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkp
OworICAgIGZvciAoYXV0byogY3VycmVudFJlbmRlcmVyID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0
YXJ0KCk7IGN1cnJlbnRSZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gbV9zZWxlY3Rpb25D
b250ZXh0LmVuZCgpOyBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkp
IHsKKyAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSBtX3NlbGVjdGlvbkNvbnRleHQuc3Rh
cnQoKSB8fCBjdXJyZW50UmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5jYW5CZVNl
bGVjdGlvbkxlYWYoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnJlbmRl
cmVyID09IGN1cnJlbnRSZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvbkluc2lkZTsKKyAgICB9CisgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uTm9uZTsKKyAgICAKK30KKwogdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnNldChjb25zdCBD
b250ZXh0JiBzZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUpCiB7Ci0gICAg
Ly8gTWFrZSBzdXJlIGJvdGggb3VyIHN0YXJ0IGFuZCBlbmQgb2JqZWN0cyBhcmUgZGVmaW5lZC4K
LSAgICAvLyBDaGVjayB3d3cubXNuYmMuY29tIGFuZCB0cnkgY2xpY2tpbmcgYXJvdW5kIHRvIGZp
bmQgdGhlIGNhc2Ugd2hlcmUgdGhpcyBoYXBwZW5lZC4KICAgICBpZiAoKHNlbGVjdGlvbi5zdGFy
dCgpICYmICFzZWxlY3Rpb24uZW5kKCkpIHx8IChzZWxlY3Rpb24uZW5kKCkgJiYgIXNlbGVjdGlv
bi5zdGFydCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEp1c3QgcmV0dXJuIGlmIHRoZSBz
ZWxlY3Rpb24gaGFzbid0IGNoYW5nZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmgKaW5kZXggODlhZWJlNzQ2MTg0ZmUzZWY1NGQ1OGZjNTcwMTJmYWQw
MzU5MWZjOC4uNDRmOTFjY2JjNjNjMzg4OTJiMmNiMjFkOWNkNzBiM2E1YjYxZDkyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaApAQCAtNzEsNyAr
NzEsOSBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3N0YXJ0UG9zaXRp
b247CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX2VuZFBvc2l0aW9uOwogICAgIH07Ci0K
KyAgICAKKyAgICB2b2lkIHNldENvbnRleHQoY29uc3QgQ29udGV4dCYpOworICAgIAogICAgIGVu
dW0gY2xhc3MgUmVwYWludE1vZGUgeyBOZXdYT1JPbGQsIE5ld01pbnVzT2xkLCBOb3RoaW5nIH07
CiAgICAgdm9pZCBzZXQoY29uc3QgQ29udGV4dCYsIFJlcGFpbnRNb2RlID0gUmVwYWludE1vZGU6
Ok5ld1hPUk9sZCk7CiAgICAgY29uc3QgQ29udGV4dCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rpb25Db250ZXh0OyB9CkBAIC04Niw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0
IGJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIGNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRl
bnQ6Ok5vKTsgfQogICAgIEludFJlY3QgYm91bmRzQ2xpcHBlZFRvVmlzaWJsZUNvbnRlbnQoKSBj
b25zdCB7IHJldHVybiBjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOyB9
CiAgICAgdm9pZCByZXBhaW50KCkgY29uc3Q7CisgICAgCisgICAgUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCYpOwogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgQ2xpcFRvVmlzaWJsZUNvbnRlbnQgeyBZZXMsIE5vIH07
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTAy
NmRmNDk5NzFjOGZmNzA2MThlYjFhMTBhYzQyYTI5YmRhYTBiMS4uOWVjOGM3Y2RjMzQzN2RhOTE2
ZTg4Y2UzMGZiNzU4ZmUzYjE2MzBlYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEyLTE5ICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGlnaGxpZ2h0
cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZCBNYXJrZWRUZXh0IHRvIHRha2UgYSBzdHls
ZSBuYW1lLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisKIDIwMTktMTItMTggIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3QtbGxkYi13
ZWJraXQ6IFJ1biBpbiBDSSAoRm9sbG93LXVwIGZpeCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcAppbmRleCA1YTE2MmM2MGVjOTZmMGRjMmFm
YTA2ODBlM2MxZDgzZDBkYmZlODBmLi4wNjgxY2FiNDM2N2M1MjM2YTliNTY0MjhhZDZmMTA3NDVi
YTkxNzgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFy
a2VkVGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtl
ZFRleHQuY3BwCkBAIC01NSw2ICs1NSw4IEBAIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0mIG9zLCBNYXJrZWRUZXh0OjpUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBvcyA8
PCAiU3BlbGxpbmdFcnJvciI7CiAgICAgY2FzZSBNYXJrZWRUZXh0OjpUZXh0TWF0Y2g6CiAgICAg
ICAgIHJldHVybiBvcyA8PCAiVGV4dE1hdGNoIjsKKyAgICBjYXNlIE1hcmtlZFRleHQ6OkhpZ2hs
aWdodDoKKyAgICAgICAgcmV0dXJuIG9zIDw8ICJIaWdobGlnaHQiOwogICAgIGNhc2UgTWFya2Vk
VGV4dDo6VW5tYXJrZWQ6CiAgICAgICAgIHJldHVybiBvcyA8PCAiVW5tYXJrZWQiOwogICAgIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDhlZjY4ZGQ2ZWQ2OTdjNGRiOGI3MTI3
YzM1YjM2NjBkMzRmODk4MWYuLjlkZjE1ZGVmZmM3NzIyZWJkMThkOGE5YTlhNTk2N2FhOTcwOTEw
M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5
LTEyLTE5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUGFpbnQgaGlnaGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVu
dHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFw
aS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWw6IEFk
ZGVkLgorCiAyMDE5LTEyLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmViYXNlbGluZSBhbGwgc2VydmljZSB3b3JrZXJzIHRlc3RzIGFu
ZCB1bnNraXAgMiB0aGF0IG5vIGxvbmdlciB0aW1lIG91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzM2Q5MWQ3OTBlM2QzZGI2ZWU3NGRmMjM5ZGI1ZWM5NDc1OGM2YjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWstZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgdXNpbmcgSGlnaGxpZ2h0IGRvZXMg
bm90IGNhdXNlIHRoZSBkb2N1bWVudCB0byBnZXQgbGVha2VkLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBEb2N1bWVudCBkaWQgbm90IGxlYWsKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWsuaHRtbCBiL0xheW91dFRlc3RzL2hp
Z2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YWRlYmEwM2Jj
YzJmOWE5MmRkZGMwNGZkYjA1MDBhN2JiYTIxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWsuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBp
ZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNlcy9oaWdobGlnaHQtZnJhbWUuaHRtbCI+PC9pZnJh
bWU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgSGlnaGxpZ2h0IGRv
ZXMgbm90IGNhdXNlIHRoZSBkb2N1bWVudCB0byBnZXQgbGVha2VkLiIpOword2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBkb2N1bWVudFNob3VsZERpZShkb2N1bWVudElk
ZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJl
amVjdCkgeworICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGdjKCk7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzICYmICFpbnRlcm5hbHMuaXNE
b2N1bWVudEFsaXZlKGRvY3VtZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGhhbmRsZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9LCAxMCk7CisgICAgfSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVu
Y3Rpb24oKSB7CisgICAgbGV0IGZyYW1lRG9jdW1lbnRJZGVudGlmaWVyID0gaW50ZXJuYWxzLmRv
Y3VtZW50SWRlbnRpZmllcih0ZXN0RnJhbWUuY29udGVudERvY3VtZW50KTsKKyAgICB0ZXN0RnJh
bWUucmVtb3ZlKCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZG9jdW1l
bnRTaG91bGREaWUoZnJhbWVEb2N1bWVudElkZW50aWZpZXIpLnRoZW4oZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJEb2N1bWVudCBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9KTsKK307Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2hpZ2hsaWdodC9yZXNvdXJj
ZXMvaGlnaGxpZ2h0LWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvcmVzb3VyY2Vz
L2hpZ2hsaWdodC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyN2RhZjQzMGUyYWE3ZjI1YjNjYTkz
YWJkOWRjYWM1YWE2Zjk4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9oaWdobGln
aHQvcmVzb3VyY2VzL2hpZ2hsaWdodC1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGhlYWQ+CisJPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUpIHsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsK
KyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGRpdiBpZD0idGFyZ2V0Ij4KKwk8c3BhbiBpZD0i
aGlnaGxpZ2h0Ij5oaWdobGlnaHQ8L3NwYW4+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2xldCBoaWdo
bGlnaHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlnaGxpZ2h0Jyk7CitsZXQgaGlnaGxp
Z2h0UmFuZ2VHcm91cCA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7
c3RhcnRDb250YWluZXI6IGhpZ2hsaWdodCwgc3RhcnRPZmZzZXQ6IDAsIGVuZENvbnRhaW5lcjog
aGlnaGxpZ2h0LCBlbmRPZmZzZXQ6IDR9KSk7CitDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUi
LCBoaWdobGlnaHRSYW5nZUdyb3VwKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkv
aGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9o
aWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NmQxZTJjYTE0NmVmMzNiN2Q0NGQ1NzhiOWNkNzA5NzVjMDVmZTY0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhp
Z2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
dHlsZT4KKyAgICAjc3R5bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Owor
ICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0eWxl
MyB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6cGlu
azsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE9uZSA8c3BhbiBp
ZD0ic3R5bGUxIj50d288L3NwYW4+IHRoPHNwYW4gaWQ9InN0eWxlMiI+cmVlCisgICAgZm91cjwv
c3Bhbj4gZml2ZSA8c3BhbiBpZD0ic3R5bGUyIj5zaXgKKyAgICBzZXZlbjwvc3Bhbj4gZWlnaDxz
cGFuIGlkPSJzdHlsZTMiPnQgbmluZQorICAgIHRlbiBlbGV2ZW4gdHdlbHZlCisgICAgdGhpcnRl
ZW4gZm91PC9zcGFuPnJ0ZWVuIGZpZnRlZW4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdo
bGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkv
aGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIwMmM5OTgx
YmMzYTExOTljNWI0NTVhMWQyNjczMmUzYmIzNzVmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCkBAIC0wLDAgKzEsNDkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorICA8dGl0bGU+Q3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVudHMgYWNyb3NzIGVsZW1l
bnRzLjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI3BhaW50aW5nIj4KKyAgPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFz
c2VydCIgY29udGVudD0iSGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzcGVjaWZpZWQg
YWNyb3NzIGVsZW1lbnRzLiI+CisgICAgPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUt
aGlnaGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAg
IGNvbG9yOmdyZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDIp
IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOwor
ICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDMpIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRo
cmVlPC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0MiI+Zm91ciBmaXZlIHNpeDwvc3Bhbj4KKyAg
ICA8c3BhbiBpZD0idGV4dDMiPnNldmVuIGVpZ2h0IG5pbmU8L3NwYW4+CisgICAgPHNwYW4gaWQ9
InRleHQ0Ij50ZW4gZWxldmVuIHR3ZWx2ZTwvc3Bhbj4KKyAgICA8c3BhbiBpZD0idGV4dDUiPnRo
aXJ0ZWVuIGZvdXJ0ZWVuIGZpZnRlZW48L3NwYW4+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBs
ZXQgdGV4dEVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAg
ICAgIGxldCB0ZXh0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDInKTsK
KyAgICAgICAgbGV0IHRleHRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0
MycpOworICAgICAgICBsZXQgdGV4dEVsZW1lbnQ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RleHQ0Jyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGV4dDUnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAxID0gbmV3IEhp
Z2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVs
ZW1lbnQxLCBzdGFydE9mZnNldDogNCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDEsIGVuZE9m
ZnNldDogN30pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGln
aGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxl
bWVudDEsIHN0YXJ0T2Zmc2V0OiAxMCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDIsIGVuZE9m
ZnNldDogNH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNS
YW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Miwgc3RhcnRPZmZzZXQ6IDEwLCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50MywgZW5kT2Zmc2V0OiA1fSkpOworCisgICAgICAgIGxldCBo
aWdobGlnaHRSYW5nZUdyb3VwMyA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNS
YW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Mywgc3RhcnRPZmZzZXQ6IDEwLCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50NSwgZW5kT2Zmc2V0OiAxMn0pKTsKKworICAgICAgICBDU1Mu
aGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hsaWdodFJhbmdlR3JvdXAx
KTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDIiLCBoaWdo
bGlnaHRSYW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1o
aWdobGlnaHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQxNDI3YTI4MGI4OGQ4MjY4MWVkMzk5OWY3NDE4YTRjM2M5YjQ1OTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzdHlsZT4KKyAgICAjc3R5bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
eWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9Cisg
ICAgI3N0eWxlMyB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAg
Y29sb3I6cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxk
aXYgaWQ9Im91dCI+PHNwYW4gaWQ9InRleHQxIj48c3BhbiBpZD0ic3R5bGUxIj5PbmU8L3NwYW4+
IHR3byB0aHJlZTwvc3Bhbj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJzY29wZWQiPjxzcGFuIGlkPSJ0
ZXh0MiI+Zm91ciA8c3BhbiBpZD0ic3R5bGUyIj5maXZlPC9zcGFuPiBzaXg8L3NwYW4+PC9kaXY+
CisgICAgPHNwYW4gaWQ9InRleHQzIj5zZXZlbiBlaWdodCBuaW5lPC9zcGFuPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhp
Z2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1ZDJl
ODhmY2Y0OWFiZDg5YjRkODU5MmNmZTg2NTNkNDg1MDk3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxp
Z2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
IDx0aXRsZT5NdWx0aXBsZSBjdXN0b20gaGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50cy48L3RpdGxl
PgorICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
aGlnaGxpZ2h0LWFwaS0xLyNjcmVhdGluZy1oaWdobGlnaHRzIj4KKyAgPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFz
c2VydCIgY29udGVudD0iTXVsdGlwbGUgaGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBz
cGVjaWZpZWQuIj4KKyAgICA8c3R5bGU+CisgICAgI291dDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGln
aGxpZ2h0KSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29s
b3I6Z3JlZW47CisgICAgfQorICAgICNzY29wZWQ6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdo
dCkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7
CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJvdXQi
PjxzcGFuIGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwvc3Bhbj48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJzY29wZWQiPjxzcGFuIGlkPSJ0ZXh0MiI+Zm91ciBmaXZlIHNpeDwvc3Bhbj48L2Rpdj4KKyAg
ICA8c3BhbiBpZD0idGV4dDMiPnNldmVuIGVpZ2h0IG5pbmU8L3NwYW4+CisKKyAgICA8c2NyaXB0
PgorICAgICAgICBsZXQgdGV4dEVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
eHQxJyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGV4dDInKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0ZXh0MycpOworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cCA9IG5ldyBI
aWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRF
bGVtZW50MSwgc3RhcnRPZmZzZXQ6IDAsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQxLCBlbmRP
ZmZzZXQ6IDN9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAuYWRkKG5ldyBTdGF0aWNS
YW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Miwgc3RhcnRPZmZzZXQ6IDUsIGVuZENv
bnRhaW5lcjogdGV4dEVsZW1lbnQyLCBlbmRPZmZzZXQ6IDl9KSk7CisKKyAgICAgICAgQ1NTLmhp
Z2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodCIsIGhpZ2hsaWdodFJhbmdlR3JvdXApOwor
ICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGln
aGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlYTA1NDQ3NDNlNTQ3ZTBkNDM5NDI5NTM3ZDQyYjNlMzQ1
MWI4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzdHlsZT4KKyAgICAjc3R5bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVs
bG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAg
I3N0eWxlMyB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29s
b3I6cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE88c3Bh
biBpZD0ic3R5bGUxIj5uPC9zcGFuPmU8c3BhbiBpZD0ic3R5bGUyIj4gPC9zcGFuPnQ8c3BhbiBp
ZD0ic3R5bGUyIj53PC9zcGFuPm88c3BhbiBpZD0ic3R5bGUzIj4gPC9zcGFuPnQ8c3BhbiBpZD0i
c3R5bGUzIj5oPC9zcGFuPnJlPHNwYW4gaWQ9InN0eWxlMyI+ZTwvc3Bhbj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2UtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2UtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNTUwM2YzMGI5ZTM1OGZiOTdkNmI0MTBhMTI4NjQzNjg0OWNhZGU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtcmVwbGFjZS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c3R5bGU+CisgICAgI2hpZ2hsaWdodCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHll
bGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICBPbmU8c3BhbiBpZD0iaGlnaGxpZ2h0Ij4gPC9zcGFuPnQ8c3BhbiBpZD0i
aGlnaGxpZ2h0Ij53PC9zcGFuPm8gdGhyZWUKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdo
bGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2UuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdo
dC10ZXh0LXJlcGxhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjg5NTFiODIxMWI1OTlmN2JiMTBkMmQ2
MzA2MmVjNzdjMTdjNmUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRl
eHQtcmVwbGFjZS5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICA8dGl0bGU+TXVsdGlwbGUgY3Vz
dG9tIGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVudHMuPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jY3Jl
YXRpbmctaGlnaGxpZ2h0cyI+CisgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10
ZXh0LWV4cGVjdGVkLmh0bWwiPgorICA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik11bHRp
cGxlIGhpZ2hsaWdodHMgc2hvdWxkIGJlIGFibGUgdG8gYmUgc3BlY2lmaWVkLiI+CisgICAgPHN0
eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0KSB7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQorICAgIDwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3BhbiBpZD0idGV4dDEiPk9uZSB0d28gdGhy
ZWU8L3NwYW4+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBsZXQgdGV4dEVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDEnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdl
R3JvdXAxID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENv
bnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiAxLCBlbmRDb250YWluZXI6IHRleHRF
bGVtZW50LCBlbmRPZmZzZXQ6IDJ9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3Jv
dXAyID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRh
aW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiAzLCBlbmRDb250YWluZXI6IHRleHRFbGVt
ZW50LCBlbmRPZmZzZXQ6IDR9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAyLmFkZChu
ZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6
IDUsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogNn0pKTsgICAgICAgIAor
CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQiLCBoaWdobGln
aHRSYW5nZUdyb3VwMSk7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdo
bGlnaHQiLCBoaWdobGlnaHRSYW5nZUdyb3VwMik7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1h
cGkvaGlnaGxpZ2h0LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjVlZDU3Y2JjZmNmMDA5ZTkzZmNl
YWI0NzVlOWU4MGZmNGMzMGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0
LXRleHQuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPHRpdGxlPk11bHRpcGxlIGN1c3RvbSBo
aWdobGlnaHQgcHNldWRvIGVsZW1lbnRzLjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI2NyZWF0aW5n
LWhpZ2hsaWdodHMiPgorICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJoaWdobGlnaHQtdGV4dC1l
eHBlY3RlZC5odG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJNdWx0aXBsZSBo
aWdobGlnaHRzIHNob3VsZCBiZSBhYmxlIHRvIGJlIHNwZWNpZmllZC4iPgorICAgIDxzdHlsZT4K
KyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDEpIHsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgOjpoaWdo
bGlnaHQoZXhhbXBsZS1oaWdobGlnaHQyKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJs
dWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1o
aWdobGlnaHQzKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAg
Y29sb3I6cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxz
cGFuIGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwvc3Bhbj4KKworICAgIDxzY3JpcHQ+CisgICAg
ICAgIGxldCB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0MScpOwor
ICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDEgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91
cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZz
ZXQ6IDEsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogMn0pKTsKKworICAg
ICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChu
ZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6
IDMsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogNH0pKTsKKyAgICAgICAg
aGlnaGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6
IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogNSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwg
ZW5kT2Zmc2V0OiA2fSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMyA9IG5l
dyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRl
eHRFbGVtZW50LCBzdGFydE9mZnNldDogNywgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5k
T2Zmc2V0OiA4fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMy5hZGQobmV3IFN0YXRp
Y1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA5LCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDEwfSkpOworICAgICAgICBoaWdobGln
aHRSYW5nZUdyb3VwMy5hZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVs
ZW1lbnQsIHN0YXJ0T2Zmc2V0OiAxMiwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zm
c2V0OiAxM30pKTsKKyAgICAgICAgCisKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFt
cGxlLWhpZ2hsaWdodDEiLCBoaWdobGlnaHRSYW5nZUdyb3VwMSk7CisgICAgICAgIENTUy5oaWdo
bGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQyIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDIpOwor
ICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MyIsIGhpZ2hsaWdo
dFJhbmdlR3JvdXAzKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386171</attachid>
            <date>2019-12-19 17:58:15 -0800</date>
            <delta_ts>2019-12-20 13:27:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191219175815.patch</filename>
            <type>text/plain</type>
            <size>39914</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU4NzMxMDg1OTgxYWVi
MzI2M2MyMmM4ZWM4YTU5MWIyNTJiYmEzOS4uMDMwNTdkNTk4MWM0YTNkYWJjMTBjOGJlMTcxNjcx
ZDFlZjQ0YmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJl
c2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJlbmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAg
VGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLgorCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
dmVyaWZ5U2VsZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0
YXJ0RW5kRm9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uU3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6aGlnaGxpZ2h0U3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dCk6CisKKyAgICAgICAgVXNlIHRoZSBoaWdo
bGlnaHQgbmFtZSBmcm9tIHRoZSBIaWdobGlnaHRSYW5nZUdyb3VwIHRvIG9idGFpbiB0aGUgc3R5
bGUgZnJvbSB0aGUgcmVuZGVyZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMgY29uc3QpOgorCisgICAgICAgIFJlbmRl
ciB0aGUgaGlnaGxpZ2h0cyB3aGVuIHBhaW50aW5nIHRleHQuIERldGVybWluZSBpZiBhIGhpZ2hs
aWdodCBpcyBwcmVzZW50IGluIHRoZSBjdXJyZW50IFJlbmRlck9iamVjdCwgYW5kCisgICAgICAg
IGFkZCBhZGRpdGlvbmFsIE1hcmtlZFRleHQgdG8gYmUgcmVuZGVyZWQgd2hlbiBwYWludGluZwor
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJkaXZpZGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9NYXJrZWRUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrZWRUZXh0
OjpvcGVyYXRvcj09IGNvbnN0KToKKworICAgICAgICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtl
IGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6c2VsZWN0aW9uU3RhdGVGb3JS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnNldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorCisgICAgICAgIExldmVy
YWdlIFNlbGVjdGlvblJhbmdlRGF0YSBmb3IgaGlnaGxpZ2h0cy4KKwogMjAxOS0xMi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IChyMjUx
Njc3KSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1z
L2Zvcm0tc3VibWlzc2lvbi0wL2Zvcm0tZG91YmxlLXN1Ym1pdC0zLmh0bWwgaXMgYSBmbGFreSBm
YWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdo
bGlnaHRNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1h
cC5oCmluZGV4IGZmOThjYzNiYTUzMmZlMDFkZTQwNzU2ODlhMGI5MjM2NTdmY2VlZjIuLjFhNDg1
N2IyNWM1OGZlOGZjNGE0MTU5YWY0YTg5NzdlZDlmYjdhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oCkBAIC00NSw2ICs0NSw3IEBAIHB1
YmxpYzoKICAgICBib29sIHJlbW92ZShjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICBSZWZQdHI8
SGlnaGxpZ2h0UmFuZ2VHcm91cD4gZ2V0R3JvdXBGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpOwor
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBSZWY8SGlnaGxpZ2h0UmFuZ2VHcm91cD4+JiBtYXAo
KSBjb25zdCB7IHJldHVybiBtX21hcDsgfQogICAgIAogcHJpdmF0ZToKICAgICBIaWdobGlnaHRN
YXAoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2Yzc1ZTA1ZjJjYzRh
MzUzYmFiNDhmZjhhNzYxZWM2ZTMyNTEyYzNjLi5mNTdkMjg1YzQ4ZWEzYjlhZGJkYjc1YjhkMmM1
NDg1MzQwM2EyOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3OSw2ICs3NzksOCBA
QCB2b2lkIERvY3VtZW50Ojpjb21tb25UZWFyZG93bigpCiAgICAgICAgIGFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKIAogICAgIGNsZWFyU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyKCk7CisgICAgCisgICAgaGlnaGxpZ2h0TWFwKCkuY2xlYXIoKTsKIAogICAgIG1f
cGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0TGlzdCA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNDMzYTA3NGY1MDI2NDc4YzczYmFl
ZWE2MTNjMzM1ODQ4OTJmNTMxYy4uMGMyZWNiNDk4ZTZmMjBkZGE3ZDZmZmJhY2FjZGM3ODAyZWIx
YWRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAt
MjgsMTAgKzI4LDEyIEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFbGVt
ZW50UnVsZUNvbGxlY3Rvci5oIgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCiAjaW5jbHVkZSAi
RXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkhpZ2hsaWdodE1hcC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hT
dHlsZS5oIgpAQCAtNDYsNiArNDgsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIK
KyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9u
UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHREZWNvcmF0aW9u
UGFpbnRlci5oIgogI2luY2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCkBAIC0xNTIsOSArMTU2LDI5
IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6aXNTZWxlY3RlZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9u
LCB1bnNpZ25lZCBlbmRQb3NpdGlvbikgY29uCiAKIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3Rh
dGUgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUoKQogewotICAgIFJlbmRlck9iamVjdDo6
U2VsZWN0aW9uU3RhdGUgc3RhdGUgPSByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7CisgICAg
YXV0byBzdGF0ZSA9IHZlcmlmeVNlbGVjdGlvblN0YXRlKHJlbmRlcmVyKCkuc2VsZWN0aW9uU3Rh
dGUoKSwgcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkpOworICAgIAorICAgIC8vIElmIHRo
ZXJlIGFyZSBlbGxpcHNpcyBmb2xsb3dpbmcsIG1ha2Ugc3VyZSB0aGVpciBzZWxlY3Rpb24gaXMg
dXBkYXRlZC4KKyAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgp
LmVsbGlwc2lzQm94KCkpIHsKKyAgICAgICAgRWxsaXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgp
LmVsbGlwc2lzQm94KCk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvbk5vbmUpIHsKKyAgICAgICAgICAgIGF1dG8gW3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25F
bmRdID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKKyAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBz
aG91bGQgYmUgY29uc2lkZXJlZCB0byBiZSBzZWxlY3RlZCBpZiB0aGUgZW5kIG9mCisgICAgICAg
ICAgICAvLyB0aGUgc2VsZWN0aW9uIGlzIHBhc3QgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNh
dGlvbiBhbmQgdGhlCisgICAgICAgICAgICAvLyBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiBp
cyBiZWZvcmUgb3IgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgICAgICAgICAgIC8vIHRydW5j
YXRpb24uCisgICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoc2VsZWN0aW9u
RW5kID49IG1fdHJ1bmNhdGlvbiAmJiBzZWxlY3Rpb25TdGFydCA8PSBtX3RydW5jYXRpb24gPwor
ICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlIDogUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25Ob25lKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBlbGxpcHNp
cy0+c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHN0YXRlOworfQorCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXRlIElubGluZVRleHRCb3g6OnZlcmlmeVNlbGVjdGlvblN0YXRlKFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhdGUgc3RhdGUsIFNlbGVjdGlvblJhbmdlRGF0YSYgc2VsZWN0aW9uKSBjb25zdAor
ewogICAgIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0IHx8IHN0YXRl
ID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kIHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6
U2VsZWN0aW9uQm90aCkgewotICAgICAgICBhdXRvJiBzZWxlY3Rpb24gPSByZW5kZXJlcigpLnZp
ZXcoKS5zZWxlY3Rpb24oKTsKICAgICAgICAgYXV0byBzdGFydFBvcyA9IHNlbGVjdGlvbi5zdGFy
dFBvc2l0aW9uKCk7CiAgICAgICAgIGF1dG8gZW5kUG9zID0gc2VsZWN0aW9uLmVuZFBvc2l0aW9u
KCk7CiAgICAgICAgIC8vIFRoZSBwb3NpdGlvbiBhZnRlciBhIGhhcmQgbGluZSBicmVhayBpcyBj
b25zaWRlcmVkIHRvIGJlIHBhc3QgaXRzIGVuZC4KQEAgLTE3NiwyMSArMjAwLDYgQEAgUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiAg
ICAgICAgICAgICBzdGF0ZSA9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZTsKICAgICB9CiAK
LSAgICAvLyBJZiB0aGVyZSBhcmUgZWxsaXBzaXMgZm9sbG93aW5nLCBtYWtlIHN1cmUgdGhlaXIg
c2VsZWN0aW9uIGlzIHVwZGF0ZWQuCi0gICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0
aW9uICYmIHJvb3QoKS5lbGxpcHNpc0JveCgpKSB7Ci0gICAgICAgIEVsbGlwc2lzQm94KiBlbGxp
cHNpcyA9IHJvb3QoKS5lbGxpcHNpc0JveCgpOwotICAgICAgICBpZiAoc3RhdGUgIT0gUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7Ci0gICAgICAgICAgICBhdXRvIFtzZWxlY3Rpb25TdGFy
dCwgc2VsZWN0aW9uRW5kXSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7Ci0gICAgICAgICAgICAvLyBU
aGUgZWxsaXBzaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gYmUgc2VsZWN0ZWQgaWYgdGhlIGVu
ZCBvZgotICAgICAgICAgICAgLy8gdGhlIHNlbGVjdGlvbiBpcyBwYXN0IHRoZSBiZWdpbm5pbmcg
b2YgdGhlIHRydW5jYXRpb24gYW5kIHRoZQotICAgICAgICAgICAgLy8gYmVnaW5uaW5nIG9mIHRo
ZSBzZWxlY3Rpb24gaXMgYmVmb3JlIG9yIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCi0gICAgICAg
ICAgICAvLyB0cnVuY2F0aW9uLgotICAgICAgICAgICAgZWxsaXBzaXMtPnNldFNlbGVjdGlvblN0
YXRlKHNlbGVjdGlvbkVuZCA+PSBtX3RydW5jYXRpb24gJiYgc2VsZWN0aW9uU3RhcnQgPD0gbV90
cnVuY2F0aW9uID8KLSAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkluc2lk
ZSA6IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgZWxsaXBzaXMtPnNldFNlbGVjdGlvblN0YXRlKFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
Tm9uZSk7Ci0gICAgfQotCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCkBAIC01MjQsNiArNTMzLDkg
QEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICAgICAgcGFpbnRDb21wb3NpdGlvbkJh
Y2tncm91bmQocGFpbnRJbmZvLCBib3hPcmlnaW4pOwogCiAgICAgICAgIFZlY3RvcjxNYXJrZWRU
ZXh0PiBtYXJrZWRUZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhU
ZXh0UGFpbnRQaGFzZTo6QmFja2dyb3VuZCk7CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0TWFya2Vk
VGV4dHMgPSBjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlOjpC
YWNrZ3JvdW5kKTsKKyAgICAgICAgaWYgKCFoaWdobGlnaHRNYXJrZWRUZXh0cy5pc0VtcHR5KCkp
CisgICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoV1RGTW92ZShoaWdobGlnaHRN
YXJrZWRUZXh0cykpOwogI2lmIEVOQUJMRShURVhUX1NFTEVDVElPTikKICAgICAgICAgaWYgKGhh
dmVTZWxlY3Rpb24gJiYgIXVzZUN1c3RvbVVuZGVybGluZXMgJiYgIWNvbnRleHQucGFpbnRpbmdE
aXNhYmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRvIHNlbGVjdGlvbk1hcmtlZFRleHQgPSBjcmVh
dGVNYXJrZWRUZXh0RnJvbVNlbGVjdGlvbkluQm94KCp0aGlzKTsKQEAgLTU1Nyw2ICs1NjksOSBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZCh7IGNs
YW1wZWRPZmZzZXQobV9zdGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKCkpLCBNYXJrZWRUZXh0OjpV
bm1hcmtlZCB9KTsKICAgICAgICAgaWYgKCFpc1ByaW50aW5nKSB7CiAgICAgICAgICAgICBtYXJr
ZWRUZXh0cy5hcHBlbmRWZWN0b3IoY29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJz
KFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kKSk7CisgICAgICAgICAgICBhdXRvIGhpZ2hsaWdo
dE1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQ
aGFzZTo6Rm9yZWdyb3VuZCk7CisgICAgICAgICAgICBpZiAoIWhpZ2hsaWdodE1hcmtlZFRleHRz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoV1RG
TW92ZShoaWdobGlnaHRNYXJrZWRUZXh0cykpOwogCiAgICAgICAgICAgICBib29sIHNob3VsZFBh
aW50RHJhZ2dlZENvbnRlbnQgPSAhKHBhaW50SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBh
aW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pKTsKICAgICAgICAgICAgIGlmIChzaG91bGRQ
YWludERyYWdnZWRDb250ZW50KSB7CkBAIC02NTIsMTQgKzY2NywxMSBAQCB1bnNpZ25lZCBJbmxp
bmVUZXh0Qm94OjpjbGFtcGVkT2Zmc2V0KHVuc2lnbmVkIHgpIGNvbnN0CiAgICAgcmV0dXJuIG9m
ZnNldDsKIH0KIAotc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uU3RhcnRFbmQoKSBjb25zdAorc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUodW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSkg
Y29uc3QKIHsKLSAgICBhdXRvIHNlbGVjdGlvblN0YXRlID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25T
dGF0ZSgpOwogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlv
bkluc2lkZSkKICAgICAgICAgcmV0dXJuIHsgMCwgY2xhbXBlZE9mZnNldChtX3N0YXJ0ICsgbV9s
ZW4pIH07CiAgICAgCi0gICAgYXV0byBzdGFydCA9IHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlv
bigpLnN0YXJ0UG9zaXRpb24oKTsKLSAgICBhdXRvIGVuZCA9IHJlbmRlcmVyKCkudmlldygpLnNl
bGVjdGlvbigpLmVuZFBvc2l0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvblN0YXRlID09IFJlbmRl
ck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpCiAgICAgICAgIGVuZCA9IHJlbmRlcmVyKCkudGV4dCgp
Lmxlbmd0aCgpOwogICAgIGVsc2UgaWYgKHNlbGVjdGlvblN0YXRlID09IFJlbmRlck9iamVjdDo6
U2VsZWN0aW9uRW5kKQpAQCAtNjY3LDYgKzY3OSwyNCBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CiAgICAgcmV0
dXJuIHsgY2xhbXBlZE9mZnNldChzdGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKSB9OwogfQogCitz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFy
dEVuZCgpIGNvbnN0Cit7CisgICAgYXV0byBzZWxlY3Rpb25TdGF0ZSA9IHJlbmRlcmVyKCkuc2Vs
ZWN0aW9uU3RhdGUoKTsKKyAgICAKKyAgICByZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUo
cmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpLCByZW5kZXJlcigp
LnZpZXcoKS5zZWxlY3Rpb24oKS5lbmRQb3NpdGlvbigpLCBzZWxlY3Rpb25TdGF0ZSk7Cit9CisK
K3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OmhpZ2hsaWdodFN0
YXJ0RW5kKFNlbGVjdGlvblJhbmdlRGF0YSAmcmFuZ2VEYXRhKSBjb25zdAoreworICAgIGF1dG8g
c3RhdGUgPSByYW5nZURhdGEuc2VsZWN0aW9uU3RhdGVGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsK
KyAgICBzdGF0ZSA9IHZlcmlmeVNlbGVjdGlvblN0YXRlKHN0YXRlLCByYW5nZURhdGEpOworICAg
IAorICAgIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpCisgICAgICAg
IHJldHVybiB7MCwgMH07CisgICAgCisgICAgcmV0dXJuIGNsYW1wZWRTdGFydEVuZEZvclN0YXRl
KHJhbmdlRGF0YS5zdGFydFBvc2l0aW9uKCksIHJhbmdlRGF0YS5lbmRQb3NpdGlvbigpLCBzdGF0
ZSk7Cit9CisKIGJvb2wgSW5saW5lVGV4dEJveDo6aGFzTWFya2VycygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFz
ZTo6RGVjb3JhdGlvbikuc2l6ZSgpOwpAQCAtNzcwLDYgKzgwMCwyNiBAQCBhdXRvIElubGluZVRl
eHRCb3g6OnJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQoY29uc3QgTWFya2VkVGV4dCYgbWFya2Vk
VGV4dCwgY29ucwogICAgIGNhc2UgTWFya2VkVGV4dDo6U3BlbGxpbmdFcnJvcjoKICAgICBjYXNl
IE1hcmtlZFRleHQ6OlVubWFya2VkOgogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1hcmtlZFRl
eHQ6OkhpZ2hsaWdodDoKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byByZW5kZXJTdHlsZSA9
IHBhcmVudCgpLT5yZW5kZXJlcigpLmdldFVuY2FjaGVkUHNldWRvU3R5bGUoeyBQc2V1ZG9JZDo6
SGlnaGxpZ2h0LCBtYXJrZWRUZXh0LmhpZ2hsaWdodE5hbWUgfSwgJnBhcmVudCgpLT5yZW5kZXJl
cigpLnN0eWxlKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocmVuZGVyU3R5bGUp
IHsKKyAgICAgICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJTdHlsZS0+
YmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgICAgICAgICAgc3R5bGUudGV4dFN0eWxlcy5maWxs
Q29sb3IgPSByZW5kZXJTdHlsZS0+Y29tcHV0ZWRTdHJva2VDb2xvcigpOworICAgICAgICAgICAg
ICAgIHN0eWxlLnRleHRTdHlsZXMuc3Ryb2tlQ29sb3IgPSByZW5kZXJTdHlsZS0+Y29tcHV0ZWRT
dHJva2VDb2xvcigpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gY29s
b3IgPSByZW5kZXJTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENT
U1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7CisgICAgICAgICAgICAgICAgYXV0byBkZWNv
cmF0aW9uU3R5bGUgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25TdHlsZSgpOworICAgICAg
ICAgICAgICAgIGF1dG8gZGVjb3JhdGlvbnMgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25z
SW5FZmZlY3QoKTsKKworICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWluc0Fu
eSh7IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUsIFRleHREZWNvcmF0aW9uOjpPdmVybGluZSwg
VGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoIH0pKSB7CisgICAgICAgICAgICAgICAgICAgIHN0
eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNvbG9yID0gY29sb3I7CisgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZVN0eWxlID0g
ZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKICAgICBjYXNlIE1hcmtlZFRleHQ6OkRyYWdnZWRDb250ZW50
OgogICAgICAgICBzdHlsZS5hbHBoYSA9IDAuMjU7CiAgICAgICAgIGJyZWFrOwpAQCAtOTYzLDYg
KzEwMTMsNDkgQEAgVmVjdG9yPE1hcmtlZFRleHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJr
ZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnQKICAgICByZXR1cm4gbWFya2VkVGV4
dHM7CiB9CiAKKworVmVjdG9yPE1hcmtlZFRleHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJr
ZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0Cit7CisgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmhpZ2hsaWdodEFQ
SUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAKKyAgICBBU1NFUlRfQVJHKHBo
YXNlLCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6QmFja2dyb3VuZCB8fCBwaGFzZSA9PSBUZXh0
UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCB8fCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6RGVjb3Jh
dGlvbik7CisKKyAgICBVTlVTRURfUEFSQU0ocGhhc2UpOworICAgIAorICAgIGlmICghcmVuZGVy
ZXIoKS50ZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1hcmtl
ZFRleHQ+IG1hcmtlZFRleHRzOworICAgIGF1dG8mIHBhcmVudFJlbmRlcmVyID0gcGFyZW50KCkt
PnJlbmRlcmVyKCk7CisgICAgYXV0byYgcGFyZW50U3R5bGUgPSBwYXJlbnRSZW5kZXJlci5zdHls
ZSgpOworICAgIGZvciAoYXV0byYgW2hpZ2hsaWdodEtleSwgaGlnaGxpZ2h0R3JvdXBdIDogcmVu
ZGVyZXIoKS5kb2N1bWVudCgpLmhpZ2hsaWdodE1hcCgpLm1hcCgpKSB7CisgICAgICAgIGF1dG8g
cmVuZGVyU3R5bGUgPSBwYXJlbnRSZW5kZXJlci5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHsgUHNl
dWRvSWQ6OkhpZ2hsaWdodCwgaGlnaGxpZ2h0S2V5IH0sICZwYXJlbnRTdHlsZSk7CisgICAgICAg
IGlmIChyZW5kZXJTdHlsZSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBzdGF0aWNSYW5nZSA6
IGhpZ2hsaWdodEdyb3VwLT5yYW5nZXMoKSkgeworICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN0
YXJ0UG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRpY1JhbmdlLT5zdGFydENv
bnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAg
UG9zaXRpb24gZW5kUG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRpY1Jhbmdl
LT5lbmRDb250YWluZXIoKSwgc3RhdGljUmFuZ2UtPmVuZE9mZnNldCgpKTsKKworICAgICAgICAg
ICAgICAgIGlmIChzdGFydFBvcy5pc05vdE51bGwoKSAmJiBlbmRQb3MuaXNOb3ROdWxsKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnRQ
b3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50
IHN0YXJ0T2Zmc2V0ID0gc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVuZFBvcy5kZXByZWNh
dGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0
ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChzdGFydE9mZnNldCA+PSAwICYmIGVuZE9mZnNldCA+PSAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGF1dG8gaGlnaGxpZ2h0RGF0YSA9IFNlbGVj
dGlvblJhbmdlRGF0YShyZW5kZXJlcigpLnZpZXcoKSk7CisgICAgICAgICAgICAgICAgICAgIGhp
Z2hsaWdodERhdGEuc2V0Q29udGV4dCh7c3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRP
ZmZzZXQpfSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBhdXRv
IFtoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0RW5kXSA9IGhpZ2hsaWdodFN0YXJ0RW5kKGhpZ2hs
aWdodERhdGEpOworICAgICAgICAgICAgICAgICAgICBpZiAoaGlnaGxpZ2h0U3RhcnQgPCBoaWdo
bGlnaHRFbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmQoeyBo
aWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0RW5kLCBNYXJrZWRUZXh0OjpIaWdobGlnaHQsIG51bGxw
dHIsIGhpZ2hsaWdodEtleSB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1hcmtlZFRleHRzOworfQorCiBGbG9hdFBvaW50
IElubGluZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVjdChjb25zdCBGbG9hdFJlY3QmIGJv
eFJlY3QpIGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgYm94UmVjdC54KCks
IGJveFJlY3QueSgpICsgbGluZUZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCA1Y2EyYmM4NjEzNmI2ZDkz
MjY4NzI4YmRhZjg3MjkyZTg4NThkNjVjLi5kOGQxODdhNDZhMTY3NGI2NmQwYmE4NzYzOTcwNWJl
ZjQ2NTM3ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAg
LTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsU2Vs
ZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZWQgZW5kUG9zKSBjb25zdDsKICAg
ICBib29sIGlzU2VsZWN0ZWQodW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9z
aXRpb24pIGNvbnN0OwogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHNlbGVjdGlv
blN0YXJ0RW5kKCkgY29uc3Q7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gaGln
aGxpZ2h0U3RhcnRFbmQoU2VsZWN0aW9uUmFuZ2VEYXRhJikgY29uc3Q7CiAKIHByb3RlY3RlZDoK
ICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5p
dCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwpAQCAtMTMyLDYgKzEz
MywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlTGluZSgpIGZpbmFsOwogICAgIHZvaWQg
ZXh0cmFjdExpbmUoKSBmaW5hbDsKICAgICB2b2lkIGF0dGFjaExpbmUoKSBmaW5hbDsKKyAgICAK
KyAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHZlcmlmeVNlbGVjdGlvblN0YXRlKFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUsIFNlbGVjdGlvblJhbmdlRGF0YSYpIGNvbnN0Owor
ICAgIAorICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNsYW1wZWRTdGFydEVuZEZv
clN0YXRlKHVuc2lnbmVkLCB1bnNpZ25lZCwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSkg
Y29uc3Q7CiAKIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVj
dGlvblN0YXRlKCkgZmluYWw7CkBAIC0xNjksNiArMTc0LDcgQEAgcHJpdmF0ZToKIAogICAgIFZl
Y3RvcjxNYXJrZWRUZXh0PiBjb2xsZWN0TWFya2VkVGV4dHNGb3JEcmFnZ2VkQ29udGVudCgpOwog
ICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtl
cnMoVGV4dFBhaW50UGhhc2UpIGNvbnN0OworICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xsZWN0
TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlKSBjb25zdDsKIAogICAgIE1h
cmtlZFRleHRTdHlsZSBjb21wdXRlU3R5bGVGb3JVbm1hcmtlZE1hcmtlZFRleHQoY29uc3QgUGFp
bnRJbmZvJikgY29uc3Q7CiAgICAgU3R5bGVkTWFya2VkVGV4dCByZXNvbHZlU3R5bGVGb3JNYXJr
ZWRUZXh0KGNvbnN0IE1hcmtlZFRleHQmLCBjb25zdCBNYXJrZWRUZXh0U3R5bGUmIGJhc2VTdHls
ZSwgY29uc3QgUGFpbnRJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTWFya2VkVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5j
cHAKaW5kZXggYTc5MTkyZTI4YWUxOTk5Njg2YjYyNjU3Yzg5MGY1N2IyYzg0ZTU2Mi4uZGI4NDlh
NGZiY2JmZWM0ODA4MDRlNDdjZDkyZWU3YWZjZjEyZjZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9NYXJrZWRUZXh0LmNwcApAQCAtNzQsMTIgKzc0LDEyIEBAIFZlY3RvcjxNYXJrZWRUZXh0
PiBzdWJkaXZpZGUoY29uc3QgVmVjdG9yPE1hcmtlZFRleHQ+JiBtYXJrZWRUZXh0cywgT3Zlcmxh
cFN0cmF0CiAgICAgICAgICAgICAgICAgICAgICAgICBmcm9udG1vc3QgPSBqOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZnJvbnRtb3N0KQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNl
dHNbKmZyb250bW9zdF0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJr
ZWRUZXh0LT5tYXJrZXIgfSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBv
ZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRU
ZXh0LT50eXBlLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQtPm1hcmtlciwgb2Zmc2V0
c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT5oaWdobGlnaHROYW1lIH0pOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYXBwZW5kZWQgbWFya2VkIHRleHRzIG1h
eSBub3QgYmUgaW4gcGFpbnQgb3JkZXIuIFdlIHdpbGwgZml4IHRoaXMgdXAgYXQgdGhlIGVuZCBv
ZiB0aGlzIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGog
PCBpOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9jZXNzZWRNYXJrZWRUZXh0
cy5jb250YWlucyhvZmZzZXRzW2pdLm1hcmtlZFRleHQpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRz
W2pdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+bWFya2VyIH0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZz
ZXRzW2ldLnZhbHVlLCBvZmZzZXRzW2pdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbal0ubWFy
a2VkVGV4dC0+bWFya2VyLCBvZmZzZXRzW2pdLm1hcmtlZFRleHQtPmhpZ2hsaWdodE5hbWUgfSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgb2Zmc2V0U29G
YXIgPSBvZmZzZXRzW2ldLnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL01hcmtlZFRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgK
aW5kZXggYjJiNWFhMGZmZjBkN2U2NTRkMTQzODIwOGNiOWFiYTJjN2RhZDgyYS4uNzNjMDYyMTFm
ZTRhYTQzMzJhMmI4Mjg0MDFjOWNhZDE5ZjA5MWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TWFya2VkVGV4dC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00MCw2ICs0MSw3IEBAIHN0cnVjdCBNYXJrZWRUZXh0IHsKICAg
ICAgICAgU3BlbGxpbmdFcnJvciwKICAgICAgICAgVGV4dE1hdGNoLAogICAgICAgICBEaWN0YXRp
b25BbHRlcm5hdGl2ZXMsCisgICAgICAgIEhpZ2hsaWdodCwKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84OTMzMzUyPi4gQWxz
bywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KICAgICAgICAgRGljdGF0
aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTUxLDEyICs1MywxMyBAQCBzdHJ1Y3QgTWFy
a2VkVGV4dCB7CiAgICAgdW5zaWduZWQgZW5kT2Zmc2V0OwogICAgIFR5cGUgdHlwZTsKICAgICBj
b25zdCBSZW5kZXJlZERvY3VtZW50TWFya2VyKiBtYXJrZXIgeyBudWxscHRyIH07CisgICAgU3Ry
aW5nIGhpZ2hsaWdodE5hbWUgeyB9OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gZW5kT2Zmc2V0IDw9IHN0YXJ0T2Zmc2V0OyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IE1hcmtlZFRleHQmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXJrZWRUZXh0JiBvdGhlcikgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGFydE9mZnNldCA9PSBvdGhlci5zdGFydE9mZnNldCAmJiBlbmRP
ZmZzZXQgPT0gb3RoZXIuZW5kT2Zmc2V0ICYmIHR5cGUgPT0gb3RoZXIudHlwZSAmJiBtYXJrZXIg
PT0gb3RoZXIubWFya2VyOworICAgICAgICByZXR1cm4gc3RhcnRPZmZzZXQgPT0gb3RoZXIuc3Rh
cnRPZmZzZXQgJiYgZW5kT2Zmc2V0ID09IG90aGVyLmVuZE9mZnNldCAmJiB0eXBlID09IG90aGVy
LnR5cGUgJiYgbWFya2VyID09IG90aGVyLm1hcmtlciAmJiBoaWdobGlnaHROYW1lID09IG90aGVy
LmhpZ2hsaWdodE5hbWU7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAppbmRleCBiOWJhZDBhMDlmMjliZjdhZGM5ZDMzM2Y0
ZTgxMWMzZWExYjkzZmMyLi5lY2IyM2ZlMGExZTgwMGE3ZWU0YmZlNjZhZjFmZjNhYzg4MTQ0YWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNw
cApAQCAtMTU0LDEwICsxNTQsNDMgQEAgU2VsZWN0aW9uUmFuZ2VEYXRhOjpTZWxlY3Rpb25SYW5n
ZURhdGEoUmVuZGVyVmlldyYgdmlldykKIHsKIH0KIAordm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6
OnNldENvbnRleHQoY29uc3QgQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoKGNvbnRleHQu
c3RhcnQoKSAmJiAhY29udGV4dC5lbmQoKSkgfHwgKGNvbnRleHQuZW5kKCkgJiYgIWNvbnRleHQu
c3RhcnQoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NlbGVjdGlvbkNvbnRleHQgPSBjb250
ZXh0OworfQorCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIFNlbGVjdGlvblJhbmdlRGF0
YTo6c2VsZWN0aW9uU3RhdGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQorewor
ICAgIGlmICgmcmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgcmVuZGVy
ZXIuaXNEZXNjZW5kYW50T2YobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkpKSB7CisgICAgICAg
IGlmIChtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSAmJiBtX3NlbGVjdGlvbkNvbnRleHQuZW5k
KCkgJiYgbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uQm90aDsKKyAg
ICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpKQorICAgICAgICAgICAgcmV0dXJu
IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQ7CisgICAgfQorICAgIGlmICgmcmVuZGVyZXIg
PT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpIHx8IHJlbmRlcmVyLmlzRGVzY2VuZGFudE9mKG1f
c2VsZWN0aW9uQ29udGV4dC5lbmQoKSkpCisgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvbkVuZDsKKworICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsK
KyAgICBhdXRvKiBzZWxlY3Rpb25EYXRhRW5kID0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpOwor
ICAgIGlmIChzZWxlY3Rpb25EYXRhRW5kKQorICAgICAgICBzZWxlY3Rpb25FbmQgPSByZW5kZXJl
ckFmdGVyUG9zaXRpb24oKnNlbGVjdGlvbkRhdGFFbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQ
b3NpdGlvbigpLnZhbHVlKCkpOworICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJh
dG9yKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpKTsKKyAgICBmb3IgKGF1dG8qIGN1cnJlbnRS
ZW5kZXJlciA9IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpOyBjdXJyZW50UmVuZGVyZXIgJiYg
Y3VycmVudFJlbmRlcmVyICE9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKTsgY3VycmVudFJlbmRl
cmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50UmVu
ZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgY3VycmVudFJlbmRlcmVyID09
IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAoIWN1cnJlbnRSZW5kZXJlci0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgaWYgKCZyZW5kZXJlciA9PSBjdXJyZW50UmVuZGVyZXIpCisg
ICAgICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGU7CisgICAgfQor
ICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmU7CisgICAgCit9CisKIHZvaWQg
U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXQoY29uc3QgQ29udGV4dCYgc2VsZWN0aW9uLCBSZXBhaW50
TW9kZSBibG9ja1JlcGFpbnRNb2RlKQogewotICAgIC8vIE1ha2Ugc3VyZSBib3RoIG91ciBzdGFy
dCBhbmQgZW5kIG9iamVjdHMgYXJlIGRlZmluZWQuCi0gICAgLy8gQ2hlY2sgd3d3Lm1zbmJjLmNv
bSBhbmQgdHJ5IGNsaWNraW5nIGFyb3VuZCB0byBmaW5kIHRoZSBjYXNlIHdoZXJlIHRoaXMgaGFw
cGVuZWQuCiAgICAgaWYgKChzZWxlY3Rpb24uc3RhcnQoKSAmJiAhc2VsZWN0aW9uLmVuZCgpKSB8
fCAoc2VsZWN0aW9uLmVuZCgpICYmICFzZWxlY3Rpb24uc3RhcnQoKSkpCiAgICAgICAgIHJldHVy
bjsKICAgICAvLyBKdXN0IHJldHVybiBpZiB0aGUgc2VsZWN0aW9uIGhhc24ndCBjaGFuZ2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCmluZGV4IDg5
YWViZTc0NjE4NGZlM2VmNTRkNThmYzU3MDEyZmFkMDM1OTFmYzguLjQ0ZjkxY2NiYzYzYzM4ODky
YjJjYjIxZDljZDcwYjNhNWI2MWQ5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2VsZWN0aW9uUmFuZ2VEYXRhLmgKQEAgLTcxLDcgKzcxLDkgQEAgcHVibGljOgogICAgICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbV9zdGFydFBvc2l0aW9uOwogICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZD4gbV9lbmRQb3NpdGlvbjsKICAgICB9OwotCisgICAgCisgICAgdm9pZCBzZXRDb250ZXh0
KGNvbnN0IENvbnRleHQmKTsKKyAgICAKICAgICBlbnVtIGNsYXNzIFJlcGFpbnRNb2RlIHsgTmV3
WE9ST2xkLCBOZXdNaW51c09sZCwgTm90aGluZyB9OwogICAgIHZvaWQgc2V0KGNvbnN0IENvbnRl
eHQmLCBSZXBhaW50TW9kZSA9IFJlcGFpbnRNb2RlOjpOZXdYT1JPbGQpOwogICAgIGNvbnN0IENv
bnRleHQmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dDsgfQpAQCAtODYs
NiArODgsOCBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBj
b2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50OjpObyk7IH0KICAgICBJbnRSZWN0IGJv
dW5kc0NsaXBwZWRUb1Zpc2libGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gY29sbGVjdEJvdW5k
cyhDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsgfQogICAgIHZvaWQgcmVwYWludCgpIGNvbnN0
OworICAgIAorICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGVG
b3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIENs
aXBUb1Zpc2libGVDb250ZW50IHsgWWVzLCBObyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE2NmU3MGQwZTQ5N2M3MTAwODc4YmY4Yjg4N2U5
MTMwZTUwMzk5MjUuLjlmZTc4MjFiMTYwM2UwY2Q0NDM1MmY2OWRjNzU1MmJiMWVmYzRjNWQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOS0xMi0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFBhaW50IGhpZ2hsaWdodHMgc3BlY2lmaWVkIGluIENTUyBIaWdobGln
aHQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDUzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHBhbmQgTWFya2VkVGV4dCB0byB0YWtlIGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorCiAyMDE5LTEyLTE5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFw
cGxlLmNvbT4KIAogICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgdG8gcnVuLXdlYmtpdC10
ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtl
ZFRleHQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQu
Y3BwCmluZGV4IDVhMTYyYzYwZWM5NmYwZGMyYWZhMDY4MGUzYzFkODNkMGRiZmU4MGYuLjA2ODFj
YWI0MzY3YzUyMzZhOWI1NjQyOGFkNmYxMDc0NWJhOTE3ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5jcHAKQEAgLTU1LDYgKzU1LDggQEAg
c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIE1hcmtlZFRleHQ6OlR5
cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIG9zIDw8ICJTcGVsbGluZ0Vycm9yIjsKICAgICBjYXNl
IE1hcmtlZFRleHQ6OlRleHRNYXRjaDoKICAgICAgICAgcmV0dXJuIG9zIDw8ICJUZXh0TWF0Y2gi
OworICAgIGNhc2UgTWFya2VkVGV4dDo6SGlnaGxpZ2h0OgorICAgICAgICByZXR1cm4gb3MgPDwg
IkhpZ2hsaWdodCI7CiAgICAgY2FzZSBNYXJrZWRUZXh0OjpVbm1hcmtlZDoKICAgICAgICAgcmV0
dXJuIG9zIDw8ICJVbm1hcmtlZCI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
aW5kZXggMmFmYmU0YzNiNzBlNTc1OWFmZTNiY2Y4ZTIxYjQ5ZjUyMTEwMzkwZi4uM2JiNWEyM2I2
OTAwYWRhZDhhMTljNTg1NDllZTViMThmNzlkYTkwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTItMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBQYWludCBoaWdobGlnaHRzIHNwZWNpZmll
ZCBpbiBDU1MgSGlnaGxpZ2h0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA1MzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBp
L2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdo
dC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdo
dC1hcGkvaGlnaGxpZ2h0LXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTktMTItMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiAocjI1MTY3Nykg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy9mb3Jt
LXN1Ym1pc3Npb24tMC9mb3JtLWRvdWJsZS1zdWJtaXQtMy5odG1sIGlzIGEgZmxha3kgZmFpbHVy
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaGlnaGxpZ2h0L2hpZ2hsaWdodC13b3JsZC1sZWFr
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVh
ay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMzZDkxZDc5MGUzZDNkYjZlZTc0ZGYyMzlkYjVl
Yzk0NzU4YzZiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2hpZ2hsaWdodC9oaWdo
bGlnaHQtd29ybGQtbGVhay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhh
dCB1c2luZyBIaWdobGlnaHQgZG9lcyBub3QgY2F1c2UgdGhlIGRvY3VtZW50IHRvIGdldCBsZWFr
ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvY3VtZW50IGRpZCBu
b3QgbGVhaworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVh
ay5odG1sIGIvTGF5b3V0VGVzdHMvaGlnaGxpZ2h0L2hpZ2hsaWdodC13b3JsZC1sZWFrLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTdhZGViYTAzYmNjMmY5YTkyZGRkYzA0ZmRiMDUwMGE3YmJhMjFkOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVh
ay5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2hpZ2hs
aWdodC1mcmFtZS5odG1sIj48L2lmcmFtZT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCB1c2luZyBIaWdobGlnaHQgZG9lcyBub3QgY2F1c2UgdGhlIGRvY3VtZW50IHRvIGdldCBs
ZWFrZWQuIik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGRvY3Vt
ZW50U2hvdWxkRGllKGRvY3VtZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgIGhhbmRsZSA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgICAgIGlmIChpbnRl
cm5hbHMgJiYgIWludGVybmFscy5pc0RvY3VtZW50QWxpdmUoZG9jdW1lbnRJZGVudGlmaWVyKSkg
eworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaGFuZGxlKTsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIDEwKTsKKyAgICB9KTsKK30K
KwordmFyIHRlc3RGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKTsK
K3Rlc3RGcmFtZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgZnJhbWVEb2N1bWVudElk
ZW50aWZpZXIgPSBpbnRlcm5hbHMuZG9jdW1lbnRJZGVudGlmaWVyKHRlc3RGcmFtZS5jb250ZW50
RG9jdW1lbnQpOworICAgIHRlc3RGcmFtZS5yZW1vdmUoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgICAgICBkb2N1bWVudFNob3VsZERpZShmcmFtZURvY3VtZW50SWRlbnRpZmll
cikudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvY3VtZW50IGRp
ZCBub3QgbGVhayIpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOwor
ICAgIH0pOworfTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaGlnaGxpZ2h0L3Jlc291cmNlcy9oaWdobGlnaHQtZnJhbWUuaHRtbCBiL0xheW91dFRl
c3RzL2hpZ2hsaWdodC9yZXNvdXJjZXMvaGlnaGxpZ2h0LWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDI3ZGFmNDMwZTJhYTdmMjViM2NhOTNhYmQ5ZGNhYzVhYTZmOTg5OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2hpZ2hsaWdodC9yZXNvdXJjZXMvaGlnaGxpZ2h0LWZyYW1lLmh0bWwK
QEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4KKwk8c3R5bGU+CisgICAg
OjpoaWdobGlnaHQoZXhhbXBsZSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7
CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8ZGl2IGlk
PSJ0YXJnZXQiPgorCTxzcGFuIGlkPSJoaWdobGlnaHQiPmhpZ2hsaWdodDwvc3Bhbj4KKzwvZGl2
PgorCis8c2NyaXB0PgorbGV0IGhpZ2hsaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdo
aWdobGlnaHQnKTsKK2xldCBoaWdobGlnaHRSYW5nZUdyb3VwID0gbmV3IEhpZ2hsaWdodFJhbmdl
R3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogaGlnaGxpZ2h0LCBzdGFydE9m
ZnNldDogMCwgZW5kQ29udGFpbmVyOiBoaWdobGlnaHQsIGVuZE9mZnNldDogNH0pKTsKK0NTUy5o
aWdobGlnaHRzLnNldCgiZXhhbXBsZSIsIGhpZ2hsaWdodFJhbmdlR3JvdXApOworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDFlMmNhMTQ2ZWYzM2I3ZDQ0ZDU3OGI5Y2Q3MDk3NWMw
NWZlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3Mt
ZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICNzdHlsZTEgeworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICAj
c3R5bGUyIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6
cmVkOworICAgIH0KKyAgICAjc3R5bGUzIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcHVy
cGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CisgICAgT25lIDxzcGFuIGlkPSJzdHlsZTEiPnR3bzwvc3Bhbj4gdGg8c3BhbiBpZD0i
c3R5bGUyIj5yZWUKKyAgICBmb3VyPC9zcGFuPiBmaXZlIDxzcGFuIGlkPSJzdHlsZTIiPnNpeAor
ICAgIHNldmVuPC9zcGFuPiBlaWdoPHNwYW4gaWQ9InN0eWxlMyI+dCBuaW5lCisgICAgdGVuIGVs
ZXZlbiB0d2VsdmUKKyAgICB0aGlydGVlbiBmb3U8L3NwYW4+cnRlZW4gZmlmdGVlbgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVs
ZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMjAyYzk5ODFiYzNhMTE5OWM1YjQ1NWExZDI2NzMyZTNiYjM3NWY5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRz
Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDx0aXRsZT5DdXN0b20gaGlnaGxpZ2h0IHBzZXVk
byBlbGVtZW50cyBhY3Jvc3MgZWxlbWVudHMuPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jcGFpbnRp
bmciPgorICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJoaWdobGlnaHQtdGV4dC1leHBlY3RlZC5o
dG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJIaWdobGlnaHRzIHNob3VsZCBi
ZSBhYmxlIHRvIGJlIHNwZWNpZmllZCBhY3Jvc3MgZWxlbWVudHMuIj4KKyAgICA8c3R5bGU+Cisg
ICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQxKSB7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQorICAgIDo6aGlnaGxp
Z2h0KGV4YW1wbGUtaGlnaGxpZ2h0MikgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGln
aGxpZ2h0MykgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7CisgICAgICAgIGNv
bG9yOnBpbms7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3Bh
biBpZD0idGV4dDEiPk9uZSB0d28gdGhyZWU8L3NwYW4+CisgICAgPHNwYW4gaWQ9InRleHQyIj5m
b3VyIGZpdmUgc2l4PC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0MyI+c2V2ZW4gZWlnaHQgbmlu
ZTwvc3Bhbj4KKyAgICA8c3BhbiBpZD0idGV4dDQiPnRlbiBlbGV2ZW4gdHdlbHZlPC9zcGFuPgor
ICAgIDxzcGFuIGlkPSJ0ZXh0NSI+dGhpcnRlZW4gZm91cnRlZW4gZmlmdGVlbjwvc3Bhbj4KKwor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGV4dDEnKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50MiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0ZXh0MicpOworICAgICAgICBsZXQgdGV4dEVsZW1lbnQzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQzJyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDQnKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50
NSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0NScpOworICAgICAgICBsZXQgaGlnaGxp
Z2h0UmFuZ2VHcm91cDEgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uo
e3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudDEsIHN0YXJ0T2Zmc2V0OiA0LCBlbmRDb250YWlu
ZXI6IHRleHRFbGVtZW50MSwgZW5kT2Zmc2V0OiA3fSkpOworCisgICAgICAgIGxldCBoaWdobGln
aHRSYW5nZUdyb3VwMiA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7
c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50MSwgc3RhcnRPZmZzZXQ6IDEwLCBlbmRDb250YWlu
ZXI6IHRleHRFbGVtZW50MiwgZW5kT2Zmc2V0OiA0fSkpOworICAgICAgICBoaWdobGlnaHRSYW5n
ZUdyb3VwMi5hZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQy
LCBzdGFydE9mZnNldDogMTAsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQzLCBlbmRPZmZzZXQ6
IDV9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAzID0gbmV3IEhpZ2hsaWdo
dFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQz
LCBzdGFydE9mZnNldDogMTAsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQ1LCBlbmRPZmZzZXQ6
IDEyfSkpOworCisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQx
IiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDEpOworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4
YW1wbGUtaGlnaGxpZ2h0MiIsIGhpZ2hsaWdodFJhbmdlR3JvdXAyKTsKKyAgICAgICAgQ1NTLmhp
Z2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDMiLCBoaWdobGlnaHRSYW5nZUdyb3VwMyk7
CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9o
aWdobGlnaHQtdGV4dC1jYXNjYWRlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQt
dGV4dC1jYXNjYWRlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE0MjdhMjgwYjg4ZDgyNjgx
ZWQzOTk5Zjc0MThhNGMzYzliNDU5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hs
aWdodC10ZXh0LWNhc2NhZGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICNzdHlsZTEgeworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAg
IH0KKyAgICAjc3R5bGUyIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAg
ICAgY29sb3I6cmVkOworICAgIH0KKyAgICAjc3R5bGUzIHsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0ib3V0Ij48c3BhbiBpZD0idGV4dDEiPjxzcGFu
IGlkPSJzdHlsZTEiPk9uZTwvc3Bhbj4gdHdvIHRocmVlPC9zcGFuPjwvZGl2PgorICAgIDxkaXYg
aWQ9InNjb3BlZCI+PHNwYW4gaWQ9InRleHQyIj5mb3VyIDxzcGFuIGlkPSJzdHlsZTIiPmZpdmU8
L3NwYW4+IHNpeDwvc3Bhbj48L2Rpdj4KKyAgICA8c3BhbiBpZD0idGV4dDMiPnNldmVuIGVpZ2h0
IG5pbmU8L3NwYW4+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC1jYXNjYWRlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjVkMmU4OGZjZjQ5YWJkODliNGQ4NTkyY2ZlODY1M2Q0ODUwOTdk
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWNhc2NhZGUuaHRt
bApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPHRpdGxlPk11bHRpcGxlIGN1c3RvbSBoaWdobGlnaHQg
cHNldWRvIGVsZW1lbnRzLjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI2NyZWF0aW5nLWhpZ2hsaWdo
dHMiPgorICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJoaWdobGlnaHQtdGV4dC1leHBlY3RlZC5o
dG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJNdWx0aXBsZSBoaWdobGlnaHRz
IHNob3VsZCBiZSBhYmxlIHRvIGJlIHNwZWNpZmllZC4iPgorICAgIDxzdHlsZT4KKyAgICAjb3V0
OjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3Njb3BlZDo6aGln
aGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0KSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJs
dWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIDxkaXYgaWQ9Im91dCI+PHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRocmVlPC9z
cGFuPjwvZGl2PgorICAgIDxkaXYgaWQ9InNjb3BlZCI+PHNwYW4gaWQ9InRleHQyIj5mb3VyIGZp
dmUgc2l4PC9zcGFuPjwvZGl2PgorICAgIDxzcGFuIGlkPSJ0ZXh0MyI+c2V2ZW4gZWlnaHQgbmlu
ZTwvc3Bhbj4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDEnKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50MiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0MicpOworICAgICAgICBsZXQgdGV4dEVsZW1l
bnQzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQzJyk7CisgICAgICAgIGxldCBoaWdo
bGlnaHRSYW5nZUdyb3VwID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1Jhbmdl
KHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQxLCBzdGFydE9mZnNldDogMCwgZW5kQ29udGFp
bmVyOiB0ZXh0RWxlbWVudDEsIGVuZE9mZnNldDogM30pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFu
Z2VHcm91cC5hZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQy
LCBzdGFydE9mZnNldDogNSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDIsIGVuZE9mZnNldDog
OX0pKTsKKworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0Iiwg
aGlnaGxpZ2h0UmFuZ2VHcm91cCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1h
cGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmVhMDU0NDc0M2U1
NDdlMGQ0Mzk0Mjk1MzdkNDJiM2UzNDUxYjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkv
aGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICNzdHlsZTEgeworICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0K
KyAgICAjc3R5bGUyIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAg
Y29sb3I6cmVkOworICAgIH0KKyAgICAjc3R5bGUzIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+CisgICAgTzxzcGFuIGlkPSJzdHlsZTEiPm48L3NwYW4+ZTxzcGFuIGlkPSJz
dHlsZTIiPiA8L3NwYW4+dDxzcGFuIGlkPSJzdHlsZTIiPnc8L3NwYW4+bzxzcGFuIGlkPSJzdHls
ZTMiPiA8L3NwYW4+dDxzcGFuIGlkPSJzdHlsZTMiPmg8L3NwYW4+cmU8c3BhbiBpZD0ic3R5bGUz
Ij5lPC9zcGFuPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxp
Z2h0LXRleHQtcmVwbGFjZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQt
cmVwbGFjZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NTAzZjMwYjllMzU4ZmI5N2Q2YjQx
MGExMjg2NDM2ODQ5Y2FkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQt
dGV4dC1yZXBsYWNlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAjaGlnaGxpZ2h0IHsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9
CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE9uZTxzcGFuIGlkPSJoaWdobGln
aHQiPiA8L3NwYW4+dDxzcGFuIGlkPSJoaWdobGlnaHQiPnc8L3NwYW4+byB0aHJlZQorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtcmVwbGFjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtcmVwbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNi
ODk1MWI4MjExYjU5OWY3YmIxMGQyZDYzMDYyZWM3N2MxN2M2ZTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGln
aGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1yZXBsYWNlLmh0bWwKQEAgLTAsMCArMSwzMCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
CisgIDx0aXRsZT5NdWx0aXBsZSBjdXN0b20gaGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50cy48L3Rp
dGxlPgorICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtaGlnaGxpZ2h0LWFwaS0xLyNjcmVhdGluZy1oaWdobGlnaHRzIj4KKyAgPGxpbmsgcmVsPSJt
YXRjaCIgaHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9
ImFzc2VydCIgY29udGVudD0iTXVsdGlwbGUgaGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBi
ZSBzcGVjaWZpZWQuIj4KKyAgICA8c3R5bGU+CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdo
bGlnaHQpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xv
cjpncmVlbjsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzcGFu
IGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwvc3Bhbj4KKworICAgIDxzY3JpcHQ+CisgICAgICAg
IGxldCB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0MScpOworICAg
ICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDEgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChu
ZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6
IDEsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogMn0pKTsKKworICAgICAg
ICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcg
U3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDMs
IGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogNH0pKTsKKyAgICAgICAgaGln
aGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRl
eHRFbGVtZW50LCBzdGFydE9mZnNldDogNSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5k
T2Zmc2V0OiA2fSkpOyAgICAgICAgCisKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFt
cGxlLWhpZ2hsaWdodCIsIGhpZ2hsaWdodFJhbmdlR3JvdXAxKTsKKyAgICAgICAgQ1NTLmhpZ2hs
aWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodCIsIGhpZ2hsaWdodFJhbmdlR3JvdXAyKTsKKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hs
aWdodC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRmNWVkNTdjYmNmY2YwMDllOTNmY2VhYjQ3NWU5ZTgwZmY0YzMwZWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
aGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICA8
dGl0bGU+TXVsdGlwbGUgY3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVudHMuPC90aXRsZT4K
KyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWhp
Z2hsaWdodC1hcGktMS8jY3JlYXRpbmctaGlnaGxpZ2h0cyI+CisgIDxsaW5rIHJlbD0ibWF0Y2gi
IGhyZWY9ImhpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwiPgorICA8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9Ik11bHRpcGxlIGhpZ2hsaWdodHMgc2hvdWxkIGJlIGFibGUgdG8gYmUgc3Bl
Y2lmaWVkLiI+CisgICAgPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0
MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdy
ZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDIpIHsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAg
ICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDMpIHsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRocmVlPC9zcGFu
PgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgbGV0IHRleHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMSA9
IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6
IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwg
ZW5kT2Zmc2V0OiAyfSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMiA9IG5l
dyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRl
eHRFbGVtZW50LCBzdGFydE9mZnNldDogMywgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5k
T2Zmc2V0OiA0fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMi5hZGQobmV3IFN0YXRp
Y1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA1LCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDZ9KSk7CisKKyAgICAgICAgbGV0IGhp
Z2hsaWdodFJhbmdlR3JvdXAzID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1Jh
bmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA3LCBlbmRDb250
YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDh9KSk7CisgICAgICAgIGhpZ2hsaWdodFJh
bmdlR3JvdXAzLmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVu
dCwgc3RhcnRPZmZzZXQ6IDksIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDog
MTB9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAzLmFkZChuZXcgU3RhdGljUmFuZ2Uo
e3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDEyLCBlbmRDb250YWlu
ZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDEzfSkpOworICAgICAgICAKKworICAgICAgICBD
U1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hsaWdodFJhbmdlR3Jv
dXAxKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDIiLCBo
aWdobGlnaHRSYW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBs
ZS1oaWdobGlnaHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386244</attachid>
            <date>2019-12-20 13:27:19 -0800</date>
            <delta_ts>2019-12-20 15:30:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191220132718.patch</filename>
            <type>text/plain</type>
            <size>39944</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU4NzMxMDg1OTgxYWVi
MzI2M2MyMmM4ZWM4YTU5MWIyNTJiYmEzOS4uMDMwNTdkNTk4MWM0YTNkYWJjMTBjOGJlMTcxNjcx
ZDFlZjQ0YmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJl
c2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJlbmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAg
VGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLgorCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
dmVyaWZ5U2VsZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0
YXJ0RW5kRm9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uU3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6aGlnaGxpZ2h0U3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dCk6CisKKyAgICAgICAgVXNlIHRoZSBoaWdo
bGlnaHQgbmFtZSBmcm9tIHRoZSBIaWdobGlnaHRSYW5nZUdyb3VwIHRvIG9idGFpbiB0aGUgc3R5
bGUgZnJvbSB0aGUgcmVuZGVyZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMgY29uc3QpOgorCisgICAgICAgIFJlbmRl
ciB0aGUgaGlnaGxpZ2h0cyB3aGVuIHBhaW50aW5nIHRleHQuIERldGVybWluZSBpZiBhIGhpZ2hs
aWdodCBpcyBwcmVzZW50IGluIHRoZSBjdXJyZW50IFJlbmRlck9iamVjdCwgYW5kCisgICAgICAg
IGFkZCBhZGRpdGlvbmFsIE1hcmtlZFRleHQgdG8gYmUgcmVuZGVyZWQgd2hlbiBwYWludGluZwor
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJkaXZpZGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9NYXJrZWRUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrZWRUZXh0
OjpvcGVyYXRvcj09IGNvbnN0KToKKworICAgICAgICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtl
IGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6c2VsZWN0aW9uU3RhdGVGb3JS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnNldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorCisgICAgICAgIExldmVy
YWdlIFNlbGVjdGlvblJhbmdlRGF0YSBmb3IgaGlnaGxpZ2h0cy4KKwogMjAxOS0xMi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IChyMjUx
Njc3KSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1z
L2Zvcm0tc3VibWlzc2lvbi0wL2Zvcm0tZG91YmxlLXN1Ym1pdC0zLmh0bWwgaXMgYSBmbGFreSBm
YWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdo
bGlnaHRNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1h
cC5oCmluZGV4IGZmOThjYzNiYTUzMmZlMDFkZTQwNzU2ODlhMGI5MjM2NTdmY2VlZjIuLjFhNDg1
N2IyNWM1OGZlOGZjNGE0MTU5YWY0YTg5NzdlZDlmYjdhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oCkBAIC00NSw2ICs0NSw3IEBAIHB1
YmxpYzoKICAgICBib29sIHJlbW92ZShjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICBSZWZQdHI8
SGlnaGxpZ2h0UmFuZ2VHcm91cD4gZ2V0R3JvdXBGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpOwor
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBSZWY8SGlnaGxpZ2h0UmFuZ2VHcm91cD4+JiBtYXAo
KSBjb25zdCB7IHJldHVybiBtX21hcDsgfQogICAgIAogcHJpdmF0ZToKICAgICBIaWdobGlnaHRN
YXAoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2Yzc1ZTA1ZjJjYzRh
MzUzYmFiNDhmZjhhNzYxZWM2ZTMyNTEyYzNjLi4zNDE2ZDU4NzNiMzM3OWMyMmYxMGNiMWVmYjQ2
ODJjMjUzZDA5YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3OSw2ICs3NzksOSBA
QCB2b2lkIERvY3VtZW50Ojpjb21tb25UZWFyZG93bigpCiAgICAgICAgIGFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKIAogICAgIGNsZWFyU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyKCk7CisgICAgCisgICAgaWYgKG1faGlnaGxpZ2h0TWFwKQorICAgICAgICBtX2hp
Z2hsaWdodE1hcC0+Y2xlYXIoKTsKIAogICAgIG1fcGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0TGlz
dCA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKaW5kZXggNDMzYTA3NGY1MDI2NDc4YzczYmFlZWE2MTNjMzM1ODQ4OTJmNTMxYy4uMGMyZWNi
NDk4ZTZmMjBkZGE3ZDZmZmJhY2FjZGM3ODAyZWIxYWRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMjgsMTAgKzI4LDEyIEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50UnVsZUNvbGxlY3Rvci5oIgogI2luY2x1
ZGUgIkVsbGlwc2lzQm94LmgiCiAjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhpZ2hsaWdo
dE1hcC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgpAQCAtNDYsNiArNDgsOCBAQAog
I2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uUmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiVGV4
dC5oIgogI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5oIgogI2luY2x1ZGUgIlRleHRQ
YWludFN0eWxlLmgiCkBAIC0xNTIsOSArMTU2LDI5IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6aXNT
ZWxlY3RlZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikgY29u
CiAKIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9u
U3RhdGUoKQogewotICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc3RhdGUgPSByZW5k
ZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7CisgICAgYXV0byBzdGF0ZSA9IHZlcmlmeVNlbGVjdGlv
blN0YXRlKHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKSwgcmVuZGVyZXIoKS52aWV3KCkuc2Vs
ZWN0aW9uKCkpOworICAgIAorICAgIC8vIElmIHRoZXJlIGFyZSBlbGxpcHNpcyBmb2xsb3dpbmcs
IG1ha2Ugc3VyZSB0aGVpciBzZWxlY3Rpb24gaXMgdXBkYXRlZC4KKyAgICBpZiAobV90cnVuY2F0
aW9uICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKKyAgICAgICAg
RWxsaXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CisgICAgICAgIGlm
IChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKKyAgICAgICAgICAgIGF1
dG8gW3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmRdID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsK
KyAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lkZXJlZCB0byBiZSBz
ZWxlY3RlZCBpZiB0aGUgZW5kIG9mCisgICAgICAgICAgICAvLyB0aGUgc2VsZWN0aW9uIGlzIHBh
c3QgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCisgICAgICAgICAgICAv
LyBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiBpcyBiZWZvcmUgb3IgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUKKyAgICAgICAgICAgIC8vIHRydW5jYXRpb24uCisgICAgICAgICAgICBlbGxpcHNp
cy0+c2V0U2VsZWN0aW9uU3RhdGUoc2VsZWN0aW9uRW5kID49IG1fdHJ1bmNhdGlvbiAmJiBzZWxl
Y3Rpb25TdGFydCA8PSBtX3RydW5jYXRpb24gPworICAgICAgICAgICAgICAgIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uSW5zaWRlIDogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHN0YXRlOwor
fQorCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnZlcmlmeVNl
bGVjdGlvblN0YXRlKFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc3RhdGUsIFNlbGVjdGlv
blJhbmdlRGF0YSYgc2VsZWN0aW9uKSBjb25zdAorewogICAgIGlmIChzdGF0ZSA9PSBSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvblN0YXJ0IHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
RW5kIHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uQm90aCkgewotICAgICAgICBh
dXRvJiBzZWxlY3Rpb24gPSByZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKTsKICAgICAgICAg
YXV0byBzdGFydFBvcyA9IHNlbGVjdGlvbi5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGF1dG8g
ZW5kUG9zID0gc2VsZWN0aW9uLmVuZFBvc2l0aW9uKCk7CiAgICAgICAgIC8vIFRoZSBwb3NpdGlv
biBhZnRlciBhIGhhcmQgbGluZSBicmVhayBpcyBjb25zaWRlcmVkIHRvIGJlIHBhc3QgaXRzIGVu
ZC4KQEAgLTE3NiwyMSArMjAwLDYgQEAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxp
bmVUZXh0Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiAgICAgICAgICAgICBzdGF0ZSA9IFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uTm9uZTsKICAgICB9CiAKLSAgICAvLyBJZiB0aGVyZSBhcmUgZWxsaXBz
aXMgZm9sbG93aW5nLCBtYWtlIHN1cmUgdGhlaXIgc2VsZWN0aW9uIGlzIHVwZGF0ZWQuCi0gICAg
aWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uICYmIHJvb3QoKS5lbGxpcHNpc0JveCgp
KSB7Ci0gICAgICAgIEVsbGlwc2lzQm94KiBlbGxpcHNpcyA9IHJvb3QoKS5lbGxpcHNpc0JveCgp
OwotICAgICAgICBpZiAoc3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7Ci0g
ICAgICAgICAgICBhdXRvIFtzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kXSA9IHNlbGVjdGlv
blN0YXJ0RW5kKCk7Ci0gICAgICAgICAgICAvLyBUaGUgZWxsaXBzaXMgc2hvdWxkIGJlIGNvbnNp
ZGVyZWQgdG8gYmUgc2VsZWN0ZWQgaWYgdGhlIGVuZCBvZgotICAgICAgICAgICAgLy8gdGhlIHNl
bGVjdGlvbiBpcyBwYXN0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRydW5jYXRpb24gYW5kIHRoZQot
ICAgICAgICAgICAgLy8gYmVnaW5uaW5nIG9mIHRoZSBzZWxlY3Rpb24gaXMgYmVmb3JlIG9yIGF0
IHRoZSBiZWdpbm5pbmcgb2YgdGhlCi0gICAgICAgICAgICAvLyB0cnVuY2F0aW9uLgotICAgICAg
ICAgICAgZWxsaXBzaXMtPnNldFNlbGVjdGlvblN0YXRlKHNlbGVjdGlvbkVuZCA+PSBtX3RydW5j
YXRpb24gJiYgc2VsZWN0aW9uU3RhcnQgPD0gbV90cnVuY2F0aW9uID8KLSAgICAgICAgICAgICAg
ICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkluc2lkZSA6IFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
Tm9uZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZWxsaXBzaXMtPnNldFNlbGVjdGlv
blN0YXRlKFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSk7Ci0gICAgfQotCiAgICAgcmV0dXJu
IHN0YXRlOwogfQogCkBAIC01MjQsNiArNTMzLDkgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAog
ICAgICAgICAgICAgcGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQocGFpbnRJbmZvLCBib3hPcmln
aW4pOwogCiAgICAgICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBtYXJrZWRUZXh0cyA9IGNvbGxlY3RN
YXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZTo6QmFja2dyb3VuZCk7
CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0TWFya2VkVGV4dHMgPSBjb2xsZWN0TWFya2VkVGV4dHNG
b3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsKKyAgICAgICAgaWYgKCFo
aWdobGlnaHRNYXJrZWRUZXh0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtYXJrZWRUZXh0cy5h
cHBlbmRWZWN0b3IoV1RGTW92ZShoaWdobGlnaHRNYXJrZWRUZXh0cykpOwogI2lmIEVOQUJMRShU
RVhUX1NFTEVDVElPTikKICAgICAgICAgaWYgKGhhdmVTZWxlY3Rpb24gJiYgIXVzZUN1c3RvbVVu
ZGVybGluZXMgJiYgIWNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKSB7CiAgICAgICAgICAgICBh
dXRvIHNlbGVjdGlvbk1hcmtlZFRleHQgPSBjcmVhdGVNYXJrZWRUZXh0RnJvbVNlbGVjdGlvbklu
Qm94KCp0aGlzKTsKQEAgLTU1Nyw2ICs1NjksOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAg
ICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZCh7IGNsYW1wZWRPZmZzZXQobV9zdGFydCksIGNsYW1w
ZWRPZmZzZXQoZW5kKCkpLCBNYXJrZWRUZXh0OjpVbm1hcmtlZCB9KTsKICAgICAgICAgaWYgKCFp
c1ByaW50aW5nKSB7CiAgICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoY29sbGVj
dE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5k
KSk7CisgICAgICAgICAgICBhdXRvIGhpZ2hsaWdodE1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtl
ZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCk7CisgICAgICAg
ICAgICBpZiAoIWhpZ2hsaWdodE1hcmtlZFRleHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICBtYXJrZWRUZXh0cy5hcHBlbmRWZWN0b3IoV1RGTW92ZShoaWdobGlnaHRNYXJrZWRUZXh0cykp
OwogCiAgICAgICAgICAgICBib29sIHNob3VsZFBhaW50RHJhZ2dlZENvbnRlbnQgPSAhKHBhaW50
SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rp
b24pKTsKICAgICAgICAgICAgIGlmIChzaG91bGRQYWludERyYWdnZWRDb250ZW50KSB7CkBAIC02
NTIsMTQgKzY2NywxMSBAQCB1bnNpZ25lZCBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkT2Zmc2V0KHVu
c2lnbmVkIHgpIGNvbnN0CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhcnRFbmQoKSBjb25zdAor
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0YXJ0
RW5kRm9yU3RhdGUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSkgY29uc3QKIHsKLSAgICBhdXRvIHNlbGVjdGlv
blN0YXRlID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpOwogICAgIGlmIChzZWxlY3Rpb25T
dGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkluc2lkZSkKICAgICAgICAgcmV0dXJuIHsg
MCwgY2xhbXBlZE9mZnNldChtX3N0YXJ0ICsgbV9sZW4pIH07CiAgICAgCi0gICAgYXV0byBzdGFy
dCA9IHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpLnN0YXJ0UG9zaXRpb24oKTsKLSAgICBh
dXRvIGVuZCA9IHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9uKCk7CiAg
ICAgaWYgKHNlbGVjdGlvblN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpCiAg
ICAgICAgIGVuZCA9IHJlbmRlcmVyKCkudGV4dCgpLmxlbmd0aCgpOwogICAgIGVsc2UgaWYgKHNl
bGVjdGlvblN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kKQpAQCAtNjY3LDYgKzY3
OSwyNCBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxl
Y3Rpb25TdGFydEVuZCgpIGNvbnN0CiAgICAgcmV0dXJuIHsgY2xhbXBlZE9mZnNldChzdGFydCks
IGNsYW1wZWRPZmZzZXQoZW5kKSB9OwogfQogCitzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0Cit7CisgICAgYXV0byBz
ZWxlY3Rpb25TdGF0ZSA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKTsKKyAgICAKKyAgICBy
ZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9u
KCkuc3RhcnRQb3NpdGlvbigpLCByZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5lbmRQb3Np
dGlvbigpLCBzZWxlY3Rpb25TdGF0ZSk7Cit9CisKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IElubGluZVRleHRCb3g6OmhpZ2hsaWdodFN0YXJ0RW5kKFNlbGVjdGlvblJhbmdlRGF0YSAm
cmFuZ2VEYXRhKSBjb25zdAoreworICAgIGF1dG8gc3RhdGUgPSByYW5nZURhdGEuc2VsZWN0aW9u
U3RhdGVGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKKyAgICBzdGF0ZSA9IHZlcmlmeVNlbGVjdGlv
blN0YXRlKHN0YXRlLCByYW5nZURhdGEpOworICAgIAorICAgIGlmIChzdGF0ZSA9PSBSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvbk5vbmUpCisgICAgICAgIHJldHVybiB7MCwgMH07CisgICAgCisgICAg
cmV0dXJuIGNsYW1wZWRTdGFydEVuZEZvclN0YXRlKHJhbmdlRGF0YS5zdGFydFBvc2l0aW9uKCks
IHJhbmdlRGF0YS5lbmRQb3NpdGlvbigpLCBzdGF0ZSk7Cit9CisKIGJvb2wgSW5saW5lVGV4dEJv
eDo6aGFzTWFya2VycygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbGxlY3RNYXJrZWRUZXh0c0Zv
ckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbikuc2l6ZSgpOwpAQCAt
NzcwLDYgKzgwMCwyNiBAQCBhdXRvIElubGluZVRleHRCb3g6OnJlc29sdmVTdHlsZUZvck1hcmtl
ZFRleHQoY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCwgY29ucwogICAgIGNhc2UgTWFya2Vk
VGV4dDo6U3BlbGxpbmdFcnJvcjoKICAgICBjYXNlIE1hcmtlZFRleHQ6OlVubWFya2VkOgogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE1hcmtlZFRleHQ6OkhpZ2hsaWdodDoKKyAgICAgICAgewor
ICAgICAgICAgICAgYXV0byByZW5kZXJTdHlsZSA9IHBhcmVudCgpLT5yZW5kZXJlcigpLmdldFVu
Y2FjaGVkUHNldWRvU3R5bGUoeyBQc2V1ZG9JZDo6SGlnaGxpZ2h0LCBtYXJrZWRUZXh0LmhpZ2hs
aWdodE5hbWUgfSwgJnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAocmVuZGVyU3R5bGUpIHsKKyAgICAgICAgICAgICAgICBzdHlsZS5i
YWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJTdHlsZS0+YmFja2dyb3VuZENvbG9yKCk7CisgICAgICAg
ICAgICAgICAgc3R5bGUudGV4dFN0eWxlcy5maWxsQ29sb3IgPSByZW5kZXJTdHlsZS0+Y29tcHV0
ZWRTdHJva2VDb2xvcigpOworICAgICAgICAgICAgICAgIHN0eWxlLnRleHRTdHlsZXMuc3Ryb2tl
Q29sb3IgPSByZW5kZXJTdHlsZS0+Y29tcHV0ZWRTdHJva2VDb2xvcigpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGF1dG8gY29sb3IgPSByZW5kZXJTdHlsZS0+dmlzaXRlZERl
cGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xv
cik7CisgICAgICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUgPSByZW5kZXJTdHlsZS0+
dGV4dERlY29yYXRpb25TdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8gZGVjb3JhdGlvbnMg
PSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKKworICAgICAgICAgICAg
ICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWluc0FueSh7IFRleHREZWNvcmF0aW9uOjpVbmRlcmxp
bmUsIFRleHREZWNvcmF0aW9uOjpPdmVybGluZSwgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdo
IH0pKSB7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVu
ZGVybGluZUNvbG9yID0gY29sb3I7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNv
cmF0aW9uU3R5bGVzLnVuZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBj
YXNlIE1hcmtlZFRleHQ6OkRyYWdnZWRDb250ZW50OgogICAgICAgICBzdHlsZS5hbHBoYSA9IDAu
MjU7CiAgICAgICAgIGJyZWFrOwpAQCAtOTYzLDYgKzEwMTMsNDkgQEAgVmVjdG9yPE1hcmtlZFRl
eHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhU
ZXh0UGFpbnQKICAgICByZXR1cm4gbWFya2VkVGV4dHM7CiB9CiAKKworVmVjdG9yPE1hcmtlZFRl
eHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBh
aW50UGhhc2UgcGhhc2UpIGNvbnN0Cit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmhpZ2hsaWdodEFQSUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAKKyAgICBBU1NFUlRfQVJHKHBoYXNlLCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFz
ZTo6QmFja2dyb3VuZCB8fCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCB8fCBw
aGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbik7CisKKyAgICBVTlVTRURfUEFSQU0o
cGhhc2UpOworICAgIAorICAgIGlmICghcmVuZGVyZXIoKS50ZXh0Tm9kZSgpKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzOworICAgIGF1
dG8mIHBhcmVudFJlbmRlcmVyID0gcGFyZW50KCktPnJlbmRlcmVyKCk7CisgICAgYXV0byYgcGFy
ZW50U3R5bGUgPSBwYXJlbnRSZW5kZXJlci5zdHlsZSgpOworICAgIGZvciAoYXV0byYgW2hpZ2hs
aWdodEtleSwgaGlnaGxpZ2h0R3JvdXBdIDogcmVuZGVyZXIoKS5kb2N1bWVudCgpLmhpZ2hsaWdo
dE1hcCgpLm1hcCgpKSB7CisgICAgICAgIGF1dG8gcmVuZGVyU3R5bGUgPSBwYXJlbnRSZW5kZXJl
ci5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHsgUHNldWRvSWQ6OkhpZ2hsaWdodCwgaGlnaGxpZ2h0
S2V5IH0sICZwYXJlbnRTdHlsZSk7CisgICAgICAgIGlmIChyZW5kZXJTdHlsZSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvJiBzdGF0aWNSYW5nZSA6IGhpZ2hsaWdodEdyb3VwLT5yYW5nZXMoKSkg
eworICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0UG9zID0gY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKHN0YXRpY1JhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+c3Rh
cnRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgUG9zaXRpb24gZW5kUG9zID0gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRpY1JhbmdlLT5lbmRDb250YWluZXIoKSwgc3RhdGljUmFu
Z2UtPmVuZE9mZnNldCgpKTsKKworICAgICAgICAgICAgICAgIGlmIChzdGFydFBvcy5pc05vdE51
bGwoKSAmJiBlbmRQb3MuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVy
T2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVy
ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gc3RhcnRQb3MuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiBlbmRSZW5kZXJlciA9IGVuZFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAg
ICAgICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA+PSAwICYm
IGVuZE9mZnNldCA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gaGlnaGxpZ2h0RGF0YSA9IFNlbGVjdGlvblJhbmdlRGF0YShyZW5kZXJlcigpLnZp
ZXcoKSk7CisgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodERhdGEuc2V0Q29udGV4dCh7c3Rh
cnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNl
dCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpfSk7CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBhdXRvIFtoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0
RW5kXSA9IGhpZ2hsaWdodFN0YXJ0RW5kKGhpZ2hsaWdodERhdGEpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoaGlnaGxpZ2h0U3RhcnQgPCBoaWdobGlnaHRFbmQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmQoeyBoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0RW5k
LCBNYXJrZWRUZXh0OjpIaWdobGlnaHQsIG51bGxwdHIsIGhpZ2hsaWdodEtleSB9KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IG1hcmtlZFRleHRzOworfQorCiBGbG9hdFBvaW50IElubGluZVRleHRCb3g6OnRleHRPcmlnaW5G
cm9tQm94UmVjdChjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CiB7CiAgICAgRmxvYXRQ
b2ludCB0ZXh0T3JpZ2luIHsgYm94UmVjdC54KCksIGJveFJlY3QueSgpICsgbGluZUZvbnQoKS5m
b250TWV0cmljcygpLmFzY2VudCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guaAppbmRleCA1Y2EyYmM4NjEzNmI2ZDkzMjY4NzI4YmRhZjg3MjkyZTg4NThkNjVjLi5k
OGQxODdhNDZhMTY3NGI2NmQwYmE4NzYzOTcwNWJlZjQ2NTM3ZWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBv
cywgdW5zaWduZWQgZW5kUG9zKSBjb25zdDsKICAgICBib29sIGlzU2VsZWN0ZWQodW5zaWduZWQg
c3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24pIGNvbnN0OwogICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3Q7CisgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gaGlnaGxpZ2h0U3RhcnRFbmQoU2VsZWN0aW9uUmFu
Z2VEYXRhJikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20pIG92ZXJyaWRlOwpAQCAtMTMyLDYgKzEzMywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGVsZXRlTGluZSgpIGZpbmFsOwogICAgIHZvaWQgZXh0cmFjdExpbmUoKSBmaW5hbDsKICAgICB2
b2lkIGF0dGFjaExpbmUoKSBmaW5hbDsKKyAgICAKKyAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlv
blN0YXRlIHZlcmlmeVNlbGVjdGlvblN0YXRlKFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUs
IFNlbGVjdGlvblJhbmdlRGF0YSYpIGNvbnN0OworICAgIAorICAgIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGNsYW1wZWRTdGFydEVuZEZvclN0YXRlKHVuc2lnbmVkLCB1bnNpZ25lZCwg
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSkgY29uc3Q7CiAKIHB1YmxpYzoKICAgICBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgZmluYWw7CkBAIC0xNjks
NiArMTc0LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xsZWN0TWFy
a2VkVGV4dHNGb3JEcmFnZ2VkQ29udGVudCgpOwogICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xs
ZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2UpIGNvbnN0Owor
ICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRl
eHRQYWludFBoYXNlKSBjb25zdDsKIAogICAgIE1hcmtlZFRleHRTdHlsZSBjb21wdXRlU3R5bGVG
b3JVbm1hcmtlZE1hcmtlZFRleHQoY29uc3QgUGFpbnRJbmZvJikgY29uc3Q7CiAgICAgU3R5bGVk
TWFya2VkVGV4dCByZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KGNvbnN0IE1hcmtlZFRleHQmLCBj
b25zdCBNYXJrZWRUZXh0U3R5bGUmIGJhc2VTdHlsZSwgY29uc3QgUGFpbnRJbmZvJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAKaW5kZXggYTc5MTkyZTI4YWUxOTk5Njg2
YjYyNjU3Yzg5MGY1N2IyYzg0ZTU2Mi4uZGI4NDlhNGZiY2JmZWM0ODA4MDRlNDdjZDkyZWU3YWZj
ZjEyZjZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcApAQCAtNzQs
MTIgKzc0LDEyIEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBzdWJkaXZpZGUoY29uc3QgVmVjdG9yPE1h
cmtlZFRleHQ+JiBtYXJrZWRUZXh0cywgT3ZlcmxhcFN0cmF0CiAgICAgICAgICAgICAgICAgICAg
ICAgICBmcm9udG1vc3QgPSBqOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBp
ZiAoZnJvbnRtb3N0KQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0
U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbKmZyb250bW9zdF0ubWFya2VkVGV4dC0+
dHlwZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT5tYXJrZXIgfSk7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1
ZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50eXBlLCBvZmZzZXRzWypmcm9udG1v
c3RdLm1hcmtlZFRleHQtPm1hcmtlciwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT5o
aWdobGlnaHROYW1lIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgYXBwZW5kZWQgbWFya2VkIHRleHRzIG1heSBub3QgYmUgaW4gcGFpbnQgb3JkZXIuIFdl
IHdpbGwgZml4IHRoaXMgdXAgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLgogICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpOyArK2opIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwcm9jZXNzZWRNYXJrZWRUZXh0cy5jb250YWlucyhvZmZzZXRzW2pdLm1hcmtl
ZFRleHQpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNv
RmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzW2pdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNl
dHNbal0ubWFya2VkVGV4dC0+bWFya2VyIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzW2pdLm1h
cmtlZFRleHQtPnR5cGUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+bWFya2VyLCBvZmZzZXRzW2pd
Lm1hcmtlZFRleHQtPmhpZ2hsaWdodE5hbWUgfSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgb2Zmc2V0U29GYXIgPSBvZmZzZXRzW2ldLnZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKaW5kZXggYjJiNWFhMGZmZjBkN2U2NTRkMTQz
ODIwOGNiOWFiYTJjN2RhZDgyYS4uNzNjMDYyMTFmZTRhYTQzMzJhMmI4Mjg0MDFjOWNhZDE5ZjA5
MWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw2ICs0
MSw3IEBAIHN0cnVjdCBNYXJrZWRUZXh0IHsKICAgICAgICAgU3BlbGxpbmdFcnJvciwKICAgICAg
ICAgVGV4dE1hdGNoLAogICAgICAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZXMsCisgICAgICAgIEhp
Z2hsaWdodCwKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBGSVhNRTogU2Vl
IDxyZGFyOi8vcHJvYmxlbS84OTMzMzUyPi4gQWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1Nf
RkFNSUxZKS1ndWFyZC4KICAgICAgICAgRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywK
QEAgLTUxLDEyICs1MywxMyBAQCBzdHJ1Y3QgTWFya2VkVGV4dCB7CiAgICAgdW5zaWduZWQgZW5k
T2Zmc2V0OwogICAgIFR5cGUgdHlwZTsKICAgICBjb25zdCBSZW5kZXJlZERvY3VtZW50TWFya2Vy
KiBtYXJrZXIgeyBudWxscHRyIH07CisgICAgU3RyaW5nIGhpZ2hsaWdodE5hbWUgeyB9OwogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gZW5kT2Zmc2V0IDw9IHN0YXJ0T2Zmc2V0
OyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1hcmtlZFRleHQmIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBN
YXJrZWRUZXh0JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGFydE9mZnNl
dCA9PSBvdGhlci5zdGFydE9mZnNldCAmJiBlbmRPZmZzZXQgPT0gb3RoZXIuZW5kT2Zmc2V0ICYm
IHR5cGUgPT0gb3RoZXIudHlwZSAmJiBtYXJrZXIgPT0gb3RoZXIubWFya2VyOworICAgICAgICBy
ZXR1cm4gc3RhcnRPZmZzZXQgPT0gb3RoZXIuc3RhcnRPZmZzZXQgJiYgZW5kT2Zmc2V0ID09IG90
aGVyLmVuZE9mZnNldCAmJiB0eXBlID09IG90aGVyLnR5cGUgJiYgbWFya2VyID09IG90aGVyLm1h
cmtlciAmJiBoaWdobGlnaHROYW1lID09IG90aGVyLmhpZ2hsaWdodE5hbWU7CiAgICAgfQogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApp
bmRleCBiOWJhZDBhMDlmMjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyLi5lY2IyM2ZlMGEx
ZTgwMGE3ZWU0YmZlNjZhZjFmZjNhYzg4MTQ0YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApAQCAtMTU0LDEwICsxNTQsNDMgQEAgU2Vs
ZWN0aW9uUmFuZ2VEYXRhOjpTZWxlY3Rpb25SYW5nZURhdGEoUmVuZGVyVmlldyYgdmlldykKIHsK
IH0KIAordm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnNldENvbnRleHQoY29uc3QgQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBpZiAoKGNvbnRleHQuc3RhcnQoKSAmJiAhY29udGV4dC5lbmQoKSkg
fHwgKGNvbnRleHQuZW5kKCkgJiYgIWNvbnRleHQuc3RhcnQoKSkpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3NlbGVjdGlvbkNvbnRleHQgPSBjb250ZXh0OworfQorCitSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvblN0YXRlIFNlbGVjdGlvblJhbmdlRGF0YTo6c2VsZWN0aW9uU3RhdGVGb3JSZW5kZXJl
cihSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQoreworICAgIGlmICgmcmVuZGVyZXIgPT0gbV9zZWxl
Y3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgcmVuZGVyZXIuaXNEZXNjZW5kYW50T2YobV9zZWxlY3Rp
b25Db250ZXh0LnN0YXJ0KCkpKSB7CisgICAgICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQuc3Rh
cnQoKSAmJiBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkgJiYgbV9zZWxlY3Rpb25Db250ZXh0LnN0
YXJ0KCkgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uQm90aDsKKyAgICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4
dC5zdGFydCgpKQorICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3Rh
cnQ7CisgICAgfQorICAgIGlmICgmcmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgp
IHx8IHJlbmRlcmVyLmlzRGVzY2VuZGFudE9mKG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkpCisg
ICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZDsKKworICAgIFJlbmRlck9i
amVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKKyAgICBhdXRvKiBzZWxlY3Rpb25EYXRhRW5k
ID0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpOworICAgIGlmIChzZWxlY3Rpb25EYXRhRW5kKQor
ICAgICAgICBzZWxlY3Rpb25FbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKnNlbGVjdGlvbkRh
dGFFbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbigpLnZhbHVlKCkpOworICAgIFNl
bGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFy
dCgpKTsKKyAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJlciA9IG1fc2VsZWN0aW9uQ29udGV4
dC5zdGFydCgpOyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9IG1fc2VsZWN0
aW9uQ29udGV4dC5lbmQoKTsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4
dCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50UmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0
LnN0YXJ0KCkgfHwgY3VycmVudFJlbmRlcmVyID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWN1cnJlbnRSZW5kZXJlci0+Y2Fu
QmVTZWxlY3Rpb25MZWFmKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCZy
ZW5kZXJlciA9PSBjdXJyZW50UmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25JbnNpZGU7CisgICAgfQorICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvbk5vbmU7CisgICAgCit9CisKIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXQoY29u
c3QgQ29udGV4dCYgc2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQogewot
ICAgIC8vIE1ha2Ugc3VyZSBib3RoIG91ciBzdGFydCBhbmQgZW5kIG9iamVjdHMgYXJlIGRlZmlu
ZWQuCi0gICAgLy8gQ2hlY2sgd3d3Lm1zbmJjLmNvbSBhbmQgdHJ5IGNsaWNraW5nIGFyb3VuZCB0
byBmaW5kIHRoZSBjYXNlIHdoZXJlIHRoaXMgaGFwcGVuZWQuCiAgICAgaWYgKChzZWxlY3Rpb24u
c3RhcnQoKSAmJiAhc2VsZWN0aW9uLmVuZCgpKSB8fCAoc2VsZWN0aW9uLmVuZCgpICYmICFzZWxl
Y3Rpb24uc3RhcnQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBKdXN0IHJldHVybiBpZiB0
aGUgc2VsZWN0aW9uIGhhc24ndCBjaGFuZ2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NlbGVjdGlvblJhbmdlRGF0YS5oCmluZGV4IDg5YWViZTc0NjE4NGZlM2VmNTRkNThmYzU3MDEy
ZmFkMDM1OTFmYzguLjQ0ZjkxY2NiYzYzYzM4ODkyYjJjYjIxZDljZDcwYjNhNWI2MWQ5MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKQEAgLTcx
LDcgKzcxLDkgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zdGFydFBv
c2l0aW9uOwogICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9lbmRQb3NpdGlvbjsKICAgICB9
OwotCisgICAgCisgICAgdm9pZCBzZXRDb250ZXh0KGNvbnN0IENvbnRleHQmKTsKKyAgICAKICAg
ICBlbnVtIGNsYXNzIFJlcGFpbnRNb2RlIHsgTmV3WE9ST2xkLCBOZXdNaW51c09sZCwgTm90aGlu
ZyB9OwogICAgIHZvaWQgc2V0KGNvbnN0IENvbnRleHQmLCBSZXBhaW50TW9kZSA9IFJlcGFpbnRN
b2RlOjpOZXdYT1JPbGQpOwogICAgIGNvbnN0IENvbnRleHQmIGdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VsZWN0aW9uQ29udGV4dDsgfQpAQCAtODYsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgSW50
UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVD
b250ZW50OjpObyk7IH0KICAgICBJbnRSZWN0IGJvdW5kc0NsaXBwZWRUb1Zpc2libGVDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gY29sbGVjdEJvdW5kcyhDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVz
KTsgfQogICAgIHZvaWQgcmVwYWludCgpIGNvbnN0OworICAgIAorICAgIFJlbmRlck9iamVjdDo6
U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsK
IAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIENsaXBUb1Zpc2libGVDb250ZW50IHsgWWVzLCBO
byB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDE2NmU3MGQwZTQ5N2M3MTAwODc4YmY4Yjg4N2U5MTMwZTUwMzk5MjUuLjlmZTc4MjFiMTYwM2Uw
Y2Q0NDM1MmY2OWRjNzU1MmJiMWVmYzRjNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMi0xOSAgTWVnYW4g
R2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBhaW50IGhpZ2hs
aWdodHMgc3BlY2lmaWVkIGluIENTUyBIaWdobGlnaHQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtlIGEg
c3R5bGUgbmFtZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9NYXJr
ZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorCiAyMDE5LTEyLTE5
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBQeXRob24g
MzogQWRkIHN1cHBvcnQgdG8gcnVuLXdlYmtpdC10ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwCmluZGV4IDVhMTYyYzYwZWM5NmYwZGMy
YWZhMDY4MGUzYzFkODNkMGRiZmU4MGYuLjA2ODFjYWI0MzY3YzUyMzZhOWI1NjQyOGFkNmYxMDc0
NWJhOTE3ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9N
YXJrZWRUZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFy
a2VkVGV4dC5jcHAKQEAgLTU1LDYgKzU1LDggQEAgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0
ZDo6b3N0cmVhbSYgb3MsIE1hcmtlZFRleHQ6OlR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIG9z
IDw8ICJTcGVsbGluZ0Vycm9yIjsKICAgICBjYXNlIE1hcmtlZFRleHQ6OlRleHRNYXRjaDoKICAg
ICAgICAgcmV0dXJuIG9zIDw8ICJUZXh0TWF0Y2giOworICAgIGNhc2UgTWFya2VkVGV4dDo6SGln
aGxpZ2h0OgorICAgICAgICByZXR1cm4gb3MgPDwgIkhpZ2hsaWdodCI7CiAgICAgY2FzZSBNYXJr
ZWRUZXh0OjpVbm1hcmtlZDoKICAgICAgICAgcmV0dXJuIG9zIDw8ICJVbm1hcmtlZCI7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMmFmYmU0YzNiNzBlNTc1OWFmZTNi
Y2Y4ZTIxYjQ5ZjUyMTEwMzkwZi4uM2JiNWEyM2I2OTAwYWRhZDhhMTljNTg1NDllZTViMThmNzlk
YTkwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTktMTItMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBQYWludCBoaWdobGlnaHRzIHNwZWNpZmllZCBpbiBDU1MgSGlnaGxpZ2h0IEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzE4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVt
ZW50cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQuaHRtbDog
QWRkZWQuCisKIDIwMTktMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OOiAocjI1MTY3NykgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy9mb3JtLXN1Ym1pc3Npb24tMC9mb3JtLWRvdWJsZS1z
dWJtaXQtMy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aGlnaGxpZ2h0L2hpZ2hsaWdodC13b3JsZC1sZWFrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTMzZDkxZDc5MGUzZDNkYjZlZTc0ZGYyMzlkYjVlYzk0NzU4YzZiMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCB1c2luZyBIaWdobGlnaHQgZG9lcyBub3Qg
Y2F1c2UgdGhlIGRvY3VtZW50IHRvIGdldCBsZWFrZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIERvY3VtZW50IGRpZCBub3QgbGVhaworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay5odG1sIGIvTGF5b3V0VGVzdHMvaGlnaGxp
Z2h0L2hpZ2hsaWdodC13b3JsZC1sZWFrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdhZGViYTAzYmNjMmY5
YTkyZGRkYzA0ZmRiMDUwMGE3YmJhMjFkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0
ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2hpZ2hsaWdodC1mcmFtZS5odG1sIj48L2lmcmFtZT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB1c2luZyBIaWdobGlnaHQgZG9lcyBu
b3QgY2F1c2UgdGhlIGRvY3VtZW50IHRvIGdldCBsZWFrZWQuIik7Cit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGRvY3VtZW50U2hvdWxkRGllKGRvY3VtZW50SWRlbnRp
ZmllcikKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0
KSB7CisgICAgICAgIGhhbmRsZSA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZ2MoKTsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMgJiYgIWludGVybmFscy5pc0RvY3Vt
ZW50QWxpdmUoZG9jdW1lbnRJZGVudGlmaWVyKSkgeworICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoaGFuZGxlKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0sIDEwKTsKKyAgICB9KTsKK30KKwordmFyIHRlc3RGcmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKTsKK3Rlc3RGcmFtZS5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKKyAgICBsZXQgZnJhbWVEb2N1bWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuZG9jdW1l
bnRJZGVudGlmaWVyKHRlc3RGcmFtZS5jb250ZW50RG9jdW1lbnQpOworICAgIHRlc3RGcmFtZS5y
ZW1vdmUoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkb2N1bWVudFNo
b3VsZERpZShmcmFtZURvY3VtZW50SWRlbnRpZmllcikudGhlbihmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIkRvY3VtZW50IGRpZCBub3QgbGVhayIpOworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0pOworfTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaGlnaGxpZ2h0L3Jlc291cmNlcy9o
aWdobGlnaHQtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2hpZ2hsaWdodC9yZXNvdXJjZXMvaGln
aGxpZ2h0LWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI3ZGFmNDMwZTJhYTdmMjViM2NhOTNhYmQ5
ZGNhYzVhYTZmOTg5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2hpZ2hsaWdodC9y
ZXNvdXJjZXMvaGlnaGxpZ2h0LWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aGVhZD4KKwk8c3R5bGU+CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZSkgeworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAg
IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8ZGl2IGlkPSJ0YXJnZXQiPgorCTxzcGFuIGlkPSJoaWdo
bGlnaHQiPmhpZ2hsaWdodDwvc3Bhbj4KKzwvZGl2PgorCis8c2NyaXB0PgorbGV0IGhpZ2hsaWdo
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaWdobGlnaHQnKTsKK2xldCBoaWdobGlnaHRS
YW5nZUdyb3VwID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFy
dENvbnRhaW5lcjogaGlnaGxpZ2h0LCBzdGFydE9mZnNldDogMCwgZW5kQ29udGFpbmVyOiBoaWdo
bGlnaHQsIGVuZE9mZnNldDogNH0pKTsKK0NTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZSIsIGhp
Z2hsaWdodFJhbmdlR3JvdXApOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hs
aWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDFl
MmNhMTQ2ZWYzM2I3ZDQ0ZDU3OGI5Y2Q3MDk3NWMwNWZlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxp
Z2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxl
PgorICAgICNzdHlsZTEgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAg
ICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICAjc3R5bGUyIHsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICAjc3R5bGUzIHsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOwor
ICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgT25lIDxzcGFuIGlkPSJz
dHlsZTEiPnR3bzwvc3Bhbj4gdGg8c3BhbiBpZD0ic3R5bGUyIj5yZWUKKyAgICBmb3VyPC9zcGFu
PiBmaXZlIDxzcGFuIGlkPSJzdHlsZTIiPnNpeAorICAgIHNldmVuPC9zcGFuPiBlaWdoPHNwYW4g
aWQ9InN0eWxlMyI+dCBuaW5lCisgICAgdGVuIGVsZXZlbiB0d2VsdmUKKyAgICB0aGlydGVlbiBm
b3U8L3NwYW4+cnRlZW4gZmlmdGVlbgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdo
dC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjAyYzk5ODFiYzNh
MTE5OWM1YjQ1NWExZDI2NzMyZTNiYjM3NWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkv
aGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
IDx0aXRsZT5DdXN0b20gaGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50cyBhY3Jvc3MgZWxlbWVudHMu
PC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jcGFpbnRpbmciPgorICA8bGluayByZWw9Im1hdGNoIiBo
cmVmPSJoaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJIaWdobGlnaHRzIHNob3VsZCBiZSBhYmxlIHRvIGJlIHNwZWNpZmllZCBhY3Jv
c3MgZWxlbWVudHMuIj4KKyAgICA8c3R5bGU+CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdo
bGlnaHQxKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29s
b3I6Z3JlZW47CisgICAgfQorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0Mikgewor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7CisgICAg
fQorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0MykgeworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBwdXJwbGU7CisgICAgICAgIGNvbG9yOnBpbms7CisgICAgfQorICAgIDwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3BhbiBpZD0idGV4dDEiPk9uZSB0d28gdGhyZWU8
L3NwYW4+CisgICAgPHNwYW4gaWQ9InRleHQyIj5mb3VyIGZpdmUgc2l4PC9zcGFuPgorICAgIDxz
cGFuIGlkPSJ0ZXh0MyI+c2V2ZW4gZWlnaHQgbmluZTwvc3Bhbj4KKyAgICA8c3BhbiBpZD0idGV4
dDQiPnRlbiBlbGV2ZW4gdHdlbHZlPC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0NSI+dGhpcnRl
ZW4gZm91cnRlZW4gZmlmdGVlbjwvc3Bhbj4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCB0
ZXh0RWxlbWVudDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDEnKTsKKyAgICAgICAg
bGV0IHRleHRFbGVtZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0MicpOworICAg
ICAgICBsZXQgdGV4dEVsZW1lbnQzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQzJyk7
CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4
dDQnKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50NSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0ZXh0NScpOworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDEgPSBuZXcgSGlnaGxp
Z2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVu
dDEsIHN0YXJ0T2Zmc2V0OiA0LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50MSwgZW5kT2Zmc2V0
OiA3fSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMiA9IG5ldyBIaWdobGln
aHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50
MSwgc3RhcnRPZmZzZXQ6IDEwLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50MiwgZW5kT2Zmc2V0
OiA0fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMi5hZGQobmV3IFN0YXRpY1Jhbmdl
KHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQyLCBzdGFydE9mZnNldDogMTAsIGVuZENvbnRh
aW5lcjogdGV4dEVsZW1lbnQzLCBlbmRPZmZzZXQ6IDV9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hs
aWdodFJhbmdlR3JvdXAzID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1Jhbmdl
KHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQzLCBzdGFydE9mZnNldDogMTAsIGVuZENvbnRh
aW5lcjogdGV4dEVsZW1lbnQ1LCBlbmRPZmZzZXQ6IDEyfSkpOworCisgICAgICAgIENTUy5oaWdo
bGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQxIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDEpOwor
ICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MiIsIGhpZ2hsaWdo
dFJhbmdlR3JvdXAyKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hs
aWdodDMiLCBoaWdobGlnaHRSYW5nZUdyb3VwMyk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDE0MjdhMjgwYjg4ZDgyNjgxZWQzOTk5Zjc0MThhNGMzYzliNDU5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWNhc2NhZGUtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHN0eWxlPgorICAgICNzdHlsZTEgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICAjc3R5bGUyIHsKKyAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICAj
c3R5bGUzIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xv
cjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBp
ZD0ib3V0Ij48c3BhbiBpZD0idGV4dDEiPjxzcGFuIGlkPSJzdHlsZTEiPk9uZTwvc3Bhbj4gdHdv
IHRocmVlPC9zcGFuPjwvZGl2PgorICAgIDxkaXYgaWQ9InNjb3BlZCI+PHNwYW4gaWQ9InRleHQy
Ij5mb3VyIDxzcGFuIGlkPSJzdHlsZTIiPmZpdmU8L3NwYW4+IHNpeDwvc3Bhbj48L2Rpdj4KKyAg
ICA8c3BhbiBpZD0idGV4dDMiPnNldmVuIGVpZ2h0IG5pbmU8L3NwYW4+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxp
Z2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVkMmU4OGZj
ZjQ5YWJkODliNGQ4NTkyY2ZlODY1M2Q0ODUwOTdkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWNhc2NhZGUuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPHRp
dGxlPk11bHRpcGxlIGN1c3RvbSBoaWdobGlnaHQgcHNldWRvIGVsZW1lbnRzLjwvdGl0bGU+Cisg
IDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1oaWdo
bGlnaHQtYXBpLTEvI2NyZWF0aW5nLWhpZ2hsaWdodHMiPgorICA8bGluayByZWw9Im1hdGNoIiBo
cmVmPSJoaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJNdWx0aXBsZSBoaWdobGlnaHRzIHNob3VsZCBiZSBhYmxlIHRvIGJlIHNwZWNp
ZmllZC4iPgorICAgIDxzdHlsZT4KKyAgICAjb3V0OjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGln
aHQpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpn
cmVlbjsKKyAgICB9CisgICAgI3Njb3BlZDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0KSB7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAg
ICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9Im91dCI+PHNw
YW4gaWQ9InRleHQxIj5PbmUgdHdvIHRocmVlPC9zcGFuPjwvZGl2PgorICAgIDxkaXYgaWQ9InNj
b3BlZCI+PHNwYW4gaWQ9InRleHQyIj5mb3VyIGZpdmUgc2l4PC9zcGFuPjwvZGl2PgorICAgIDxz
cGFuIGlkPSJ0ZXh0MyI+c2V2ZW4gZWlnaHQgbmluZTwvc3Bhbj4KKworICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGxldCB0ZXh0RWxlbWVudDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDEn
KTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXh0MicpOworICAgICAgICBsZXQgdGV4dEVsZW1lbnQzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RleHQzJyk7CisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwID0gbmV3IEhpZ2hs
aWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1l
bnQxLCBzdGFydE9mZnNldDogMCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDEsIGVuZE9mZnNl
dDogM30pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cC5hZGQobmV3IFN0YXRpY1Jhbmdl
KHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQyLCBzdGFydE9mZnNldDogNSwgZW5kQ29udGFp
bmVyOiB0ZXh0RWxlbWVudDIsIGVuZE9mZnNldDogOX0pKTsKKworICAgICAgICBDU1MuaGlnaGxp
Z2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0IiwgaGlnaGxpZ2h0UmFuZ2VHcm91cCk7CisgICAg
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGln
aHQtdGV4dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYmVhMDU0NDc0M2U1NDdlMGQ0Mzk0Mjk1MzdkNDJiM2UzNDUxYjhj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHN0eWxlPgorICAgICNzdHlsZTEgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7
CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICAjc3R5bGUyIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICAjc3R5
bGUzIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpw
aW5rOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgTzxzcGFuIGlk
PSJzdHlsZTEiPm48L3NwYW4+ZTxzcGFuIGlkPSJzdHlsZTIiPiA8L3NwYW4+dDxzcGFuIGlkPSJz
dHlsZTIiPnc8L3NwYW4+bzxzcGFuIGlkPSJzdHlsZTMiPiA8L3NwYW4+dDxzcGFuIGlkPSJzdHls
ZTMiPmg8L3NwYW4+cmU8c3BhbiBpZD0ic3R5bGUzIj5lPC9zcGFuPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtcmVwbGFjZS1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtcmVwbGFjZS1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ1NTAzZjMwYjllMzU4ZmI5N2Q2YjQxMGExMjg2NDM2ODQ5Y2FkZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1yZXBsYWNlLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
dHlsZT4KKyAgICAjaGlnaGxpZ2h0IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93
OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIE9uZTxzcGFuIGlkPSJoaWdobGlnaHQiPiA8L3NwYW4+dDxzcGFuIGlkPSJoaWdo
bGlnaHQiPnc8L3NwYW4+byB0aHJlZQorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdo
dC1hcGkvaGlnaGxpZ2h0LXRleHQtcmVwbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRl
eHQtcmVwbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiODk1MWI4MjExYjU5OWY3YmIxMGQyZDYzMDYy
ZWM3N2MxN2M2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1y
ZXBsYWNlLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDx0aXRsZT5NdWx0aXBsZSBjdXN0b20g
aGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50cy48L3RpdGxlPgorICA8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtaGlnaGxpZ2h0LWFwaS0xLyNjcmVhdGlu
Zy1oaWdobGlnaHRzIj4KKyAgPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iaGlnaGxpZ2h0LXRleHQt
ZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iTXVsdGlwbGUg
aGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzcGVjaWZpZWQuIj4KKyAgICA8c3R5bGU+
CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQpIHsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzcGFuIGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwv
c3Bhbj4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCB0ZXh0RWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXh0MScpOworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91
cDEgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFp
bmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDEsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1l
bnQsIGVuZE9mZnNldDogMn0pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIg
PSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVy
OiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDMsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQs
IGVuZE9mZnNldDogNH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBT
dGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogNSwg
ZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiA2fSkpOyAgICAgICAgCisKKyAg
ICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodCIsIGhpZ2hsaWdodFJh
bmdlR3JvdXAxKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdo
dCIsIGhpZ2hsaWdodFJhbmdlR3JvdXAyKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9o
aWdobGlnaHQtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmNWVkNTdjYmNmY2YwMDllOTNmY2VhYjQ3
NWU5ZTgwZmY0YzMwZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4
dC5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICA8dGl0bGU+TXVsdGlwbGUgY3VzdG9tIGhpZ2hs
aWdodCBwc2V1ZG8gZWxlbWVudHMuPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jY3JlYXRpbmctaGln
aGxpZ2h0cyI+CisgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10ZXh0LWV4cGVj
dGVkLmh0bWwiPgorICA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik11bHRpcGxlIGhpZ2hs
aWdodHMgc2hvdWxkIGJlIGFibGUgdG8gYmUgc3BlY2lmaWVkLiI+CisgICAgPHN0eWxlPgorICAg
IDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdo
dChleGFtcGxlLWhpZ2hsaWdodDIpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsK
KyAgICAgICAgY29sb3I6cmVkOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hs
aWdodDMpIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xv
cjpwaW5rOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4g
aWQ9InRleHQxIj5PbmUgdHdvIHRocmVlPC9zcGFuPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAg
bGV0IHRleHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAg
ICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMSA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5l
dyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDog
MSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiAyfSkpOworCisgICAgICAg
IGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMiA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBT
dGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMywg
ZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiA0fSkpOworICAgICAgICBoaWdo
bGlnaHRSYW5nZUdyb3VwMi5hZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4
dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA1LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRP
ZmZzZXQ6IDZ9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAzID0gbmV3IEhp
Z2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVs
ZW1lbnQsIHN0YXJ0T2Zmc2V0OiA3LCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZz
ZXQ6IDh9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAzLmFkZChuZXcgU3RhdGljUmFu
Z2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDksIGVuZENvbnRh
aW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogMTB9KSk7CisgICAgICAgIGhpZ2hsaWdodFJh
bmdlR3JvdXAzLmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVu
dCwgc3RhcnRPZmZzZXQ6IDEyLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6
IDEzfSkpOworICAgICAgICAKKworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUt
aGlnaGxpZ2h0MSIsIGhpZ2hsaWdodFJhbmdlR3JvdXAxKTsKKyAgICAgICAgQ1NTLmhpZ2hsaWdo
dHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDIiLCBoaWdobGlnaHRSYW5nZUdyb3VwMik7CisgICAg
ICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQzIiwgaGlnaGxpZ2h0UmFu
Z2VHcm91cDMpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386270</attachid>
            <date>2019-12-20 15:30:36 -0800</date>
            <delta_ts>2019-12-20 17:00:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205318-20191220153036.patch</filename>
            <type>text/plain</type>
            <size>40059</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc5Yjg1N2Q1ZjAyNDI0
MTcxMzgzMTAwYWUwMTk0M2IxMmRlYzdiYy4uNDZkMDQzODUwN2M0ZjI4MjM1NTlkMGEzNzgyN2Fi
MDQyNWJkNTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciBoaWdobGlnaHRzIHdoZW4gcHJl
c2VudCwgc2ltaWxhciB0byB0aGUgd2F5IHdlIHJlbmRlciBzZWxlY3Rpb24uCisKKyAgICAgICAg
VGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQt
YXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRN
YXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZ2hsaWdodE1hcDo6bWFwIGNvbnN0KToKKworICAg
ICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBpbnRlcm5hbCBIYXNoTWFwLgorCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
dmVyaWZ5U2VsZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0
YXJ0RW5kRm9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uU3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6aGlnaGxpZ2h0U3RhcnRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dCk6CisKKyAgICAgICAgVXNlIHRoZSBoaWdo
bGlnaHQgbmFtZSBmcm9tIHRoZSBIaWdobGlnaHRSYW5nZUdyb3VwIHRvIG9idGFpbiB0aGUgc3R5
bGUgZnJvbSB0aGUgcmVuZGVyZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMgY29uc3QpOgorCisgICAgICAgIFJlbmRl
ciB0aGUgaGlnaGxpZ2h0cyB3aGVuIHBhaW50aW5nIHRleHQuIERldGVybWluZSBpZiBhIGhpZ2hs
aWdodCBpcyBwcmVzZW50IGluIHRoZSBjdXJyZW50IFJlbmRlck9iamVjdCwgYW5kCisgICAgICAg
IGFkZCBhZGRpdGlvbmFsIE1hcmtlZFRleHQgdG8gYmUgcmVuZGVyZWQgd2hlbiBwYWludGluZwor
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJkaXZpZGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9NYXJrZWRUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrZWRUZXh0
OjpvcGVyYXRvcj09IGNvbnN0KToKKworICAgICAgICBFeHBhbmQgTWFya2VkVGV4dCB0byB0YWtl
IGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6c2VsZWN0aW9uU3RhdGVGb3JS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnNldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorCisgICAgICAgIExldmVy
YWdlIFNlbGVjdGlvblJhbmdlRGF0YSBmb3IgaGlnaGxpZ2h0cy4KKwogMjAxOS0xMi0yMCAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU1dTZXJ2ZXIgY2FuIGJl
IGNyZWF0ZWQgd2l0aG91dCBhbnkgcGF0aCB0byBzdG9yZSByZWdpc3RyYXRpb25zIGluIG5vbiBl
cGhlbWVyYWwgc2Vzc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0hpZ2hsaWdodE1hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
SGlnaGxpZ2h0TWFwLmgKaW5kZXggZmY5OGNjM2JhNTMyZmUwMWRlNDA3NTY4OWEwYjkyMzY1N2Zj
ZWVmMi4uMWE0ODU3YjI1YzU4ZmU4ZmM0YTQxNTlhZjRhODk3N2VkOWZiN2FkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFwLmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFN0cmluZyYpOwogICAgIAog
ICAgIFJlZlB0cjxIaWdobGlnaHRSYW5nZUdyb3VwPiBnZXRHcm91cEZvcktleShjb25zdCBTdHJp
bmcmIGtleSk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxIaWdobGlnaHRSYW5nZUdy
b3VwPj4mIG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CiAgICAgCiBwcml2YXRlOgogICAg
IEhpZ2hsaWdodE1hcCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZj
NzVlMDVmMmNjNGEzNTNiYWI0OGZmOGE3NjFlYzZlMzI1MTJjM2MuLjM0MTZkNTg3M2IzMzc5YzIy
ZjEwY2IxZWZiNDY4MmMyNTNkMDljNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzc5
LDYgKzc3OSw5IEBAIHZvaWQgRG9jdW1lbnQ6OmNvbW1vblRlYXJkb3duKCkKICAgICAgICAgYWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpLnBhdXNlQW5pbWF0aW9ucygpOwogCiAgICAgY2xlYXJTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKKyAgICAKKyAgICBpZiAobV9oaWdobGlnaHRNYXApCisg
ICAgICAgIG1faGlnaGxpZ2h0TWFwLT5jbGVhcigpOwogCiAgICAgbV9wZW5kaW5nU2Nyb2xsRXZl
bnRUYXJnZXRMaXN0ID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcAppbmRleCA0MzNhMDc0ZjUwMjY0NzhjNzNiYWVlYTYxM2MzMzU4NDg5MmY1
MzFjLi41OTE4NjcxNTUxMDQwYjI4MjRmNDI0NGJjOTU0MTM4Mjc2Y2MwYjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0yOCwxMCArMjgsMTIgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRSdWxlQ29sbGVjdG9y
LmgiCiAjaW5jbHVkZSAiRWxsaXBzaXNCb3guaCIKICNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVk
ZSAiSGlnaGxpZ2h0TWFwLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCkBAIC00Niw2
ICs0OCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25SYW5nZURhdGEuaCIKICNp
bmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCiAjaW5j
bHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKQEAgLTE1Miw5ICsxNTYsMzAgQEAgYm9vbCBJbmxpbmVU
ZXh0Qm94Ojppc1NlbGVjdGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBv
c2l0aW9uKSBjb24KIAogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxpbmVUZXh0Qm94
OjpzZWxlY3Rpb25TdGF0ZSgpCiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBz
dGF0ZSA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKTsKKyAgICBhdXRvIHN0YXRlID0gdmVy
aWZ5U2VsZWN0aW9uU3RhdGUocmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpLCByZW5kZXJlcigp
LnZpZXcoKS5zZWxlY3Rpb24oKSk7CisgICAgCisgICAgLy8gRklYTUU6IHRoaXMgY29kZSBtdXRh
dGVzIHNlbGVjdGlvbiBzdGF0ZSwgYnV0IGl0J3MgdXNlZCBhdCBhIHNpbXBsZSBnZXR0ZXIgZWxz
ZXdoZXJlIGluIHRoaXMgZmlsZS4gVGhpcyBjb2RlIHNob3VsZCBsaWtlbHkgbGl2ZSBpbiBTZWxl
Y3Rpb25SYW5nZURhdGEsIG9yIHNvbWV3aGVyZSBlbHNlLiA8cmRhcjovL3Byb2JsZW0vNTgxMjU5
Nzg+CisgICAgLy8gSWYgdGhlcmUgYXJlIGVsbGlwc2lzIGZvbGxvd2luZywgbWFrZSBzdXJlIHRo
ZWlyIHNlbGVjdGlvbiBpcyB1cGRhdGVkLgorICAgIGlmIChtX3RydW5jYXRpb24gIT0gY05vVHJ1
bmNhdGlvbiAmJiByb290KCkuZWxsaXBzaXNCb3goKSkgeworICAgICAgICBFbGxpcHNpc0JveCog
ZWxsaXBzaXMgPSByb290KCkuZWxsaXBzaXNCb3goKTsKKyAgICAgICAgaWYgKHN0YXRlICE9IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgeworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9u
U3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOworICAgICAgICAgICAg
Ly8gVGhlIGVsbGlwc2lzIHNob3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRo
ZSBlbmQgb2YKKyAgICAgICAgICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5u
aW5nIG9mIHRoZSB0cnVuY2F0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgIC8vIGJlZ2lubmluZyBv
ZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAg
ICAgICAgICAgLy8gdHJ1bmNhdGlvbi4KKyAgICAgICAgICAgIGVsbGlwc2lzLT5zZXRTZWxlY3Rp
b25TdGF0ZShzZWxlY3Rpb25FbmQgPj0gbV90cnVuY2F0aW9uICYmIHNlbGVjdGlvblN0YXJ0IDw9
IG1fdHJ1bmNhdGlvbiA/CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25J
bnNpZGUgOiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGVsbGlwc2lzLT5zZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvbk5vbmUpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK1JlbmRlck9i
amVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6dmVyaWZ5U2VsZWN0aW9uU3RhdGUo
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSwgU2VsZWN0aW9uUmFuZ2VEYXRhJiBz
ZWxlY3Rpb24pIGNvbnN0Cit7CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhcnQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQgfHwgc3RhdGUg
PT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKSB7Ci0gICAgICAgIGF1dG8mIHNlbGVjdGlv
biA9IHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpOwogICAgICAgICBhdXRvIHN0YXJ0UG9z
ID0gc2VsZWN0aW9uLnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgYXV0byBlbmRQb3MgPSBzZWxl
Y3Rpb24uZW5kUG9zaXRpb24oKTsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGFmdGVyIGEgaGFy
ZCBsaW5lIGJyZWFrIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFzdCBpdHMgZW5kLgpAQCAtMTc2LDIx
ICsyMDEsNiBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNl
bGVjdGlvblN0YXRlKCkKICAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rp
b25Ob25lOwogICAgIH0KIAotICAgIC8vIElmIHRoZXJlIGFyZSBlbGxpcHNpcyBmb2xsb3dpbmcs
IG1ha2Ugc3VyZSB0aGVpciBzZWxlY3Rpb24gaXMgdXBkYXRlZC4KLSAgICBpZiAobV90cnVuY2F0
aW9uICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKLSAgICAgICAg
RWxsaXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7Ci0gICAgICAgIGlm
IChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIGF1
dG8gW3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmRdID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsK
LSAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lkZXJlZCB0byBiZSBz
ZWxlY3RlZCBpZiB0aGUgZW5kIG9mCi0gICAgICAgICAgICAvLyB0aGUgc2VsZWN0aW9uIGlzIHBh
c3QgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCi0gICAgICAgICAgICAv
LyBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiBpcyBiZWZvcmUgb3IgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUKLSAgICAgICAgICAgIC8vIHRydW5jYXRpb24uCi0gICAgICAgICAgICBlbGxpcHNp
cy0+c2V0U2VsZWN0aW9uU3RhdGUoc2VsZWN0aW9uRW5kID49IG1fdHJ1bmNhdGlvbiAmJiBzZWxl
Y3Rpb25TdGFydCA8PSBtX3RydW5jYXRpb24gPwotICAgICAgICAgICAgICAgIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uSW5zaWRlIDogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKLSAgICB9Ci0KICAgICByZXR1cm4gc3RhdGU7CiB9CiAK
QEAgLTUyNCw2ICs1MzQsOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICBw
YWludENvbXBvc2l0aW9uQmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbik7CiAKICAgICAg
ICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzID0gY29sbGVjdE1hcmtlZFRleHRzRm9y
RG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsKKyAgICAgICAgYXV0
byBoaWdobGlnaHRNYXJrZWRUZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMo
VGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQpOworICAgICAgICBpZiAoIWhpZ2hsaWdodE1hcmtl
ZFRleHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3RvcihX
VEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAjaWYgRU5BQkxFKFRFWFRfU0VMRUNUSU9O
KQogICAgICAgICBpZiAoaGF2ZVNlbGVjdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcyAmJiAh
Y29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9u
TWFya2VkVGV4dCA9IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3goKnRoaXMpOwpA
QCAtNTU3LDYgKzU3MCw5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgbWFya2Vk
VGV4dHMuYXBwZW5kKHsgY2xhbXBlZE9mZnNldChtX3N0YXJ0KSwgY2xhbXBlZE9mZnNldChlbmQo
KSksIE1hcmtlZFRleHQ6OlVubWFya2VkIH0pOwogICAgICAgICBpZiAoIWlzUHJpbnRpbmcpIHsK
ICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3Rvcihjb2xsZWN0TWFya2VkVGV4dHNG
b3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQpKTsKKyAgICAgICAg
ICAgIGF1dG8gaGlnaGxpZ2h0TWFya2VkVGV4dHMgPSBjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdo
bGlnaHRzKFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kKTsKKyAgICAgICAgICAgIGlmICghaGln
aGxpZ2h0TWFya2VkVGV4dHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1hcmtlZFRleHRz
LmFwcGVuZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAKICAgICAgICAg
ICAgIGJvb2wgc2hvdWxkUGFpbnREcmFnZ2VkQ29udGVudCA9ICEocGFpbnRJbmZvLnBhaW50QmVo
YXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikpOwogICAgICAg
ICAgICAgaWYgKHNob3VsZFBhaW50RHJhZ2dlZENvbnRlbnQpIHsKQEAgLTY1MiwxNCArNjY4LDEx
IEBAIHVuc2lnbmVkIElubGluZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQodW5zaWduZWQgeCkgY29u
c3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CitzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZSh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRl
IHNlbGVjdGlvblN0YXRlKSBjb25zdAogewotICAgIGF1dG8gc2VsZWN0aW9uU3RhdGUgPSByZW5k
ZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7CiAgICAgaWYgKHNlbGVjdGlvblN0YXRlID09IFJlbmRl
ck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlKQogICAgICAgICByZXR1cm4geyAwLCBjbGFtcGVkT2Zm
c2V0KG1fc3RhcnQgKyBtX2xlbikgfTsKICAgICAKLSAgICBhdXRvIHN0YXJ0ID0gcmVuZGVyZXIo
KS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwotICAgIGF1dG8gZW5kID0gcmVu
ZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICBpZiAoc2VsZWN0
aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKICAgICAgICAgZW5kID0g
cmVuZGVyZXIoKS50ZXh0KCkubGVuZ3RoKCk7CiAgICAgZWxzZSBpZiAoc2VsZWN0aW9uU3RhdGUg
PT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpCkBAIC02NjcsNiArNjgwLDI0IEBAIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5k
KCkgY29uc3QKICAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0YXJ0KSwgY2xhbXBlZE9mZnNl
dChlbmQpIH07CiB9CiAKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRC
b3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKK3sKKyAgICBhdXRvIHNlbGVjdGlvblN0YXRl
ID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpOworICAgIAorICAgIHJldHVybiBjbGFtcGVk
U3RhcnRFbmRGb3JTdGF0ZShyZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydFBvc2l0
aW9uKCksIHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9uKCksIHNlbGVj
dGlvblN0YXRlKTsKK30KKworc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4
dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoU2VsZWN0aW9uUmFuZ2VEYXRhICZyYW5nZURhdGEpIGNv
bnN0Cit7CisgICAgYXV0byBzdGF0ZSA9IHJhbmdlRGF0YS5zZWxlY3Rpb25TdGF0ZUZvclJlbmRl
cmVyKHJlbmRlcmVyKCkpOworICAgIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9uU3RhdGUoc3RhdGUs
IHJhbmdlRGF0YSk7CisgICAgCisgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uTm9uZSkKKyAgICAgICAgcmV0dXJuIHswLCAwfTsKKyAgICAKKyAgICByZXR1cm4gY2xhbXBl
ZFN0YXJ0RW5kRm9yU3RhdGUocmFuZ2VEYXRhLnN0YXJ0UG9zaXRpb24oKSwgcmFuZ2VEYXRhLmVu
ZFBvc2l0aW9uKCksIHN0YXRlKTsKK30KKwogYm9vbCBJbmxpbmVUZXh0Qm94OjpoYXNNYXJrZXJz
KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJr
ZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKS5zaXplKCk7CkBAIC03NzAsNiArODAxLDIz
IEBAIGF1dG8gSW5saW5lVGV4dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dChjb25zdCBN
YXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zCiAgICAgY2FzZSBNYXJrZWRUZXh0OjpTcGVsbGlu
Z0Vycm9yOgogICAgIGNhc2UgTWFya2VkVGV4dDo6VW5tYXJrZWQ6CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTWFya2VkVGV4dDo6SGlnaGxpZ2h0OiB7CisgICAgICAgIGlmIChhdXRvIHJlbmRl
clN0eWxlID0gcGFyZW50KCktPnJlbmRlcmVyKCkuZ2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSh7IFBz
ZXVkb0lkOjpIaWdobGlnaHQsIG1hcmtlZFRleHQuaGlnaGxpZ2h0TmFtZSB9LCAmcGFyZW50KCkt
PnJlbmRlcmVyKCkuc3R5bGUoKSkpIHsKKyAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmRDb2xv
ciA9IHJlbmRlclN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgICAgIHN0eWxlLnRl
eHRTdHlsZXMuZmlsbENvbG9yID0gcmVuZGVyU3R5bGUtPmNvbXB1dGVkU3Ryb2tlQ29sb3IoKTsK
KyAgICAgICAgICAgIHN0eWxlLnRleHRTdHlsZXMuc3Ryb2tlQ29sb3IgPSByZW5kZXJTdHlsZS0+
Y29tcHV0ZWRTdHJva2VDb2xvcigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBhdXRvIGNv
bG9yID0gcmVuZGVyU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihD
U1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOworICAgICAgICAgICAgYXV0byBkZWNvcmF0
aW9uU3R5bGUgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25TdHlsZSgpOworICAgICAgICAg
ICAgYXV0byBkZWNvcmF0aW9ucyA9IHJlbmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpOworCisgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnNBbnkoeyBUZXh0RGVj
b3JhdGlvbjo6VW5kZXJsaW5lLCBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUsIFRleHREZWNvcmF0
aW9uOjpMaW5lVGhyb3VnaCB9KSkgeworICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0
aW9uU3R5bGVzLnVuZGVybGluZUNvbG9yID0gY29sb3I7CisgICAgICAgICAgICAgICAgc3R5bGUu
dGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBj
YXNlIE1hcmtlZFRleHQ6OkRyYWdnZWRDb250ZW50OgogICAgICAgICBzdHlsZS5hbHBoYSA9IDAu
MjU7CiAgICAgICAgIGJyZWFrOwpAQCAtOTYzLDYgKzEwMTEsNDYgQEAgVmVjdG9yPE1hcmtlZFRl
eHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhU
ZXh0UGFpbnQKICAgICByZXR1cm4gbWFya2VkVGV4dHM7CiB9CiAKKworVmVjdG9yPE1hcmtlZFRl
eHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBh
aW50UGhhc2UgcGhhc2UpIGNvbnN0Cit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmhpZ2hsaWdodEFQSUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICBBU1NFUlRfQVJHKHBoYXNlLCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6QmFj
a2dyb3VuZCB8fCBwaGFzZSA9PSBUZXh0UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCB8fCBwaGFzZSA9
PSBUZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHBoYXNlKTsK
KyAgICBpZiAoIXJlbmRlcmVyKCkudGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIFZlY3RvcjxNYXJrZWRUZXh0PiBtYXJrZWRUZXh0czsKKyAgICBhdXRvJiBwYXJlbnRSZW5k
ZXJlciA9IHBhcmVudCgpLT5yZW5kZXJlcigpOworICAgIGF1dG8mIHBhcmVudFN0eWxlID0gcGFy
ZW50UmVuZGVyZXIuc3R5bGUoKTsKKyAgICBmb3IgKGF1dG8mIFtoaWdobGlnaHRLZXksIGhpZ2hs
aWdodEdyb3VwXSA6IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5oaWdobGlnaHRNYXAoKS5tYXAoKSkg
eworICAgICAgICBhdXRvIHJlbmRlclN0eWxlID0gcGFyZW50UmVuZGVyZXIuZ2V0VW5jYWNoZWRQ
c2V1ZG9TdHlsZSh7IFBzZXVkb0lkOjpIaWdobGlnaHQsIGhpZ2hsaWdodEtleSB9LCAmcGFyZW50
U3R5bGUpOworICAgICAgICBpZiAoIXJlbmRlclN0eWxlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGZvciAoYXV0byYgc3RhdGljUmFuZ2UgOiBoaWdobGlnaHRHcm91cC0+cmFuZ2Vz
KCkpIHsKKyAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0UG9zID0gY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKHN0YXRpY1JhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+c3Rh
cnRPZmZzZXQoKSk7CisgICAgICAgICAgICBQb3NpdGlvbiBlbmRQb3MgPSBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2UtPmVuZENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS0+
ZW5kT2Zmc2V0KCkpOworCisgICAgICAgICAgICBpZiAoc3RhcnRQb3MuaXNOb3ROdWxsKCkgJiYg
ZW5kUG9zLmlzTm90TnVsbCgpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBzdGFy
dFJlbmRlcmVyID0gc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICAg
ICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpOworICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmRQ
b3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICBpbnQgZW5k
T2Zmc2V0ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5kT2Zmc2V0ID49IDApOworICAgICAgICAg
ICAgICAgIGlmICghc3RhcnRSZW5kZXJlciB8fCAhZW5kUmVuZGVyZXIpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGF1dG8gaGlnaGxpZ2h0RGF0YSA9IFNl
bGVjdGlvblJhbmdlRGF0YShyZW5kZXJlcigpLnZpZXcoKSk7CisgICAgICAgICAgICAgICAgaGln
aGxpZ2h0RGF0YS5zZXRDb250ZXh0KHtzdGFydFJlbmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZE9m
ZnNldCl9KTsKKyAgICAgICAgICAgICAgICBhdXRvIFtoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0
RW5kXSA9IGhpZ2hsaWdodFN0YXJ0RW5kKGhpZ2hsaWdodERhdGEpOworICAgICAgICAgICAgICAg
IGlmIChoaWdobGlnaHRTdGFydCA8IGhpZ2hsaWdodEVuZCkKKyAgICAgICAgICAgICAgICAgICAg
bWFya2VkVGV4dHMuYXBwZW5kKHsgaGlnaGxpZ2h0U3RhcnQsIGhpZ2hsaWdodEVuZCwgTWFya2Vk
VGV4dDo6SGlnaGxpZ2h0LCBudWxscHRyLCBoaWdobGlnaHRLZXkgfSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1hcmtlZFRleHRzOworfQorCiBGbG9hdFBv
aW50IElubGluZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVjdChjb25zdCBGbG9hdFJlY3Qm
IGJveFJlY3QpIGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgYm94UmVjdC54
KCksIGJveFJlY3QueSgpICsgbGluZUZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCA1Y2EyYmM4NjEzNmI2
ZDkzMjY4NzI4YmRhZjg3MjkyZTg4NThkNjVjLi5mMDdmZjU2NWFkMjNlNDZiNmMwZWU0MGVlMDAw
Y2VjZTgyN2NhMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgK
QEAgLTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2Fs
U2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZWQgZW5kUG9zKSBjb25zdDsK
ICAgICBib29sIGlzU2VsZWN0ZWQodW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5k
UG9zaXRpb24pIGNvbnN0OwogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHNlbGVj
dGlvblN0YXJ0RW5kKCkgY29uc3Q7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
aGlnaGxpZ2h0U3RhcnRFbmQoU2VsZWN0aW9uUmFuZ2VEYXRhJikgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0
VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwpAQCAtMTMyLDYg
KzEzMyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVMaW5lKCkgZmluYWw7CiAgICAgdm9p
ZCBleHRyYWN0TGluZSgpIGZpbmFsOwogICAgIHZvaWQgYXR0YWNoTGluZSgpIGZpbmFsOworICAg
IAorICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgdmVyaWZ5U2VsZWN0aW9uU3RhdGUo
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSwgU2VsZWN0aW9uUmFuZ2VEYXRhJikgY29uc3Q7
CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY2xhbXBlZFN0YXJ0RW5kRm9yU3Rh
dGUodW5zaWduZWQsIHVuc2lnbmVkLCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlKSBjb25z
dDsKIAogcHVibGljOgogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9u
U3RhdGUoKSBmaW5hbDsKQEAgLTE2OSw2ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9y
PE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRyYWdnZWRDb250ZW50KCk7CiAgICAg
VmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhU
ZXh0UGFpbnRQaGFzZSkgY29uc3Q7CisgICAgVmVjdG9yPE1hcmtlZFRleHQ+IGNvbGxlY3RNYXJr
ZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2UpIGNvbnN0OwogCiAgICAgTWFya2Vk
VGV4dFN0eWxlIGNvbXB1dGVTdHlsZUZvclVubWFya2VkTWFya2VkVGV4dChjb25zdCBQYWludElu
Zm8mKSBjb25zdDsKICAgICBTdHlsZWRNYXJrZWRUZXh0IHJlc29sdmVTdHlsZUZvck1hcmtlZFRl
eHQoY29uc3QgTWFya2VkVGV4dCYsIGNvbnN0IE1hcmtlZFRleHRTdHlsZSYgYmFzZVN0eWxlLCBj
b25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9N
YXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcApp
bmRleCBhNzkxOTJlMjhhZTE5OTk2ODZiNjI2NTdjODkwZjU3YjJjODRlNTYyLi5kYjg0OWE0ZmJj
YmZlYzQ4MDgwNGU0N2NkOTJlZTdhZmNmMTJmNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L01hcmtlZFRleHQuY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgVmVjdG9yPE1hcmtlZFRleHQ+IHN1
YmRpdmlkZShjb25zdCBWZWN0b3I8TWFya2VkVGV4dD4mIG1hcmtlZFRleHRzLCBPdmVybGFwU3Ry
YXQKICAgICAgICAgICAgICAgICAgICAgICAgIGZyb250bW9zdCA9IGo7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmIChmcm9udG1vc3QpCi0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1sq
ZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50eXBlLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRl
eHQtPm1hcmtlciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNl
dFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzWypmcm9udG1vc3RdLm1hcmtlZFRleHQt
PnR5cGUsIG9mZnNldHNbKmZyb250bW9zdF0ubWFya2VkVGV4dC0+bWFya2VyLCBvZmZzZXRzWypm
cm9udG1vc3RdLm1hcmtlZFRleHQtPmhpZ2hsaWdodE5hbWUgfSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIC8vIFRoZSBhcHBlbmRlZCBtYXJrZWQgdGV4dHMgbWF5IG5v
dCBiZSBpbiBwYWludCBvcmRlci4gV2Ugd2lsbCBmaXggdGhpcyB1cCBhdCB0aGUgZW5kIG9mIHRo
aXMgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGk7
ICsraikgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3NlZE1hcmtlZFRleHRzLmNv
bnRhaW5zKG9mZnNldHNbal0ubWFya2VkVGV4dCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbal0u
bWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT5tYXJrZXIgfSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNb
aV0udmFsdWUsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+dHlwZSwgb2Zmc2V0c1tqXS5tYXJrZWRU
ZXh0LT5tYXJrZXIsIG9mZnNldHNbal0ubWFya2VkVGV4dC0+aGlnaGxpZ2h0TmFtZSB9KTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvZmZzZXRTb0ZhciA9
IG9mZnNldHNbaV0udmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TWFya2VkVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAppbmRl
eCBiMmI1YWEwZmZmMGQ3ZTY1NGQxNDM4MjA4Y2I5YWJhMmM3ZGFkODJhLi43M2MwNjIxMWZlNGFh
NDMzMmEyYjgyODQwMWM5Y2FkMTlmMDkxZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTWFya2VkVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJr
ZWRUZXh0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQwLDYgKzQxLDcgQEAgc3RydWN0IE1hcmtlZFRleHQgewogICAgICAg
ICBTcGVsbGluZ0Vycm9yLAogICAgICAgICBUZXh0TWF0Y2gsCiAgICAgICAgIERpY3RhdGlvbkFs
dGVybmF0aXZlcywKKyAgICAgICAgSGlnaGxpZ2h0LAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNvLCBy
ZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgogICAgICAgICBEaWN0YXRpb25Q
aHJhc2VXaXRoQWx0ZXJuYXRpdmVzLApAQCAtNTEsMTIgKzUzLDEzIEBAIHN0cnVjdCBNYXJrZWRU
ZXh0IHsKICAgICB1bnNpZ25lZCBlbmRPZmZzZXQ7CiAgICAgVHlwZSB0eXBlOwogICAgIGNvbnN0
IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqIG1hcmtlciB7IG51bGxwdHIgfTsKKyAgICBTdHJpbmcg
aGlnaGxpZ2h0TmFtZSB7IH07CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBl
bmRPZmZzZXQgPD0gc3RhcnRPZmZzZXQ7IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWFy
a2VkVGV4dCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE1hcmtlZFRleHQmIG90aGVyKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0ID09IG90aGVyLnN0YXJ0T2Zmc2V0ICYmIGVuZE9mZnNl
dCA9PSBvdGhlci5lbmRPZmZzZXQgJiYgdHlwZSA9PSBvdGhlci50eXBlICYmIG1hcmtlciA9PSBv
dGhlci5tYXJrZXI7CisgICAgICAgIHJldHVybiBzdGFydE9mZnNldCA9PSBvdGhlci5zdGFydE9m
ZnNldCAmJiBlbmRPZmZzZXQgPT0gb3RoZXIuZW5kT2Zmc2V0ICYmIHR5cGUgPT0gb3RoZXIudHlw
ZSAmJiBtYXJrZXIgPT0gb3RoZXIubWFya2VyICYmIGhpZ2hsaWdodE5hbWUgPT0gb3RoZXIuaGln
aGxpZ2h0TmFtZTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
ZWxlY3Rpb25SYW5nZURhdGEuY3BwCmluZGV4IGI5YmFkMGEwOWYyOWJmN2FkYzlkMzMzZjRlODEx
YzNlYTFiOTNmYzIuLmU3OTczNDY2OTkwYjUzMTk0MDlmYTY0Mjg1NWMzZGEyNDg2ZTM1ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCkBA
IC0xNTQsMTAgKzE1NCw0MyBAQCBTZWxlY3Rpb25SYW5nZURhdGE6OlNlbGVjdGlvblJhbmdlRGF0
YShSZW5kZXJWaWV3JiB2aWV3KQogewogfQogCit2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6c2V0
Q29udGV4dChjb25zdCBDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LnN0
YXJ0KCkgJiYgY29udGV4dC5lbmQoKSk7CisgICAgbV9zZWxlY3Rpb25Db250ZXh0ID0gY29udGV4
dDsKK30KKworUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBTZWxlY3Rpb25SYW5nZURhdGE6
OnNlbGVjdGlvblN0YXRlRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAg
ICAvLyBGSVhNRTogd2Ugc2hvdWxkbG4ndCBoYXZlIHRvIGNoZWNrIHRoYXQgYSByZW5kZXJlciBp
cyBhIGRlc2NlbmRhbnQgb2YgdGhlIHJlbmRlciBub2RlIGZyb20gdGhlIHJhbmdlLiBUaGlzIGlz
IGxpa2VseSBiZWNhdXNlIHdlIGFyZW4ndCB1c2luZyBWaXNpYmxlUG9zaXRpb25zIHlldC4gUGxh
bm5lZCBmaXggaW4gYSBmb2xsb3d1cDogPHJkYXI6Ly9wcm9ibGVtLzU4MDk1OTIzPgorICAgIGlm
ICgmcmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgcmVuZGVyZXIuaXNE
ZXNjZW5kYW50T2YobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkpKSB7CisgICAgICAgIGlmICht
X3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSAmJiBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkgJiYg
bV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uQm90aDsKKyAgICAgICAg
aWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpKQorICAgICAgICAgICAgcmV0dXJuIFJlbmRl
ck9iamVjdDo6U2VsZWN0aW9uU3RhcnQ7CisgICAgfQorICAgIGlmICgmcmVuZGVyZXIgPT0gbV9z
ZWxlY3Rpb25Db250ZXh0LmVuZCgpIHx8IHJlbmRlcmVyLmlzRGVzY2VuZGFudE9mKG1fc2VsZWN0
aW9uQ29udGV4dC5lbmQoKSkpCisgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlv
bkVuZDsKKworICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKKyAgICBh
dXRvKiBzZWxlY3Rpb25EYXRhRW5kID0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpOworICAgIGlm
IChzZWxlY3Rpb25EYXRhRW5kKQorICAgICAgICBzZWxlY3Rpb25FbmQgPSByZW5kZXJlckFmdGVy
UG9zaXRpb24oKnNlbGVjdGlvbkRhdGFFbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlv
bigpLnZhbHVlKCkpOworICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKG1f
c2VsZWN0aW9uQ29udGV4dC5zdGFydCgpKTsKKyAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJl
ciA9IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpOyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVu
dFJlbmRlcmVyICE9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKTsgY3VycmVudFJlbmRlcmVyID0g
c2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50UmVuZGVyZXIg
PT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgY3VycmVudFJlbmRlcmVyID09IG1fc2Vs
ZWN0aW9uQ29udGV4dC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
IWN1cnJlbnRSZW5kZXJlci0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgaWYgKCZyZW5kZXJlciA9PSBjdXJyZW50UmVuZGVyZXIpCisgICAgICAg
ICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGU7CisgICAgfQorICAgIHJl
dHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmU7CisgICAgCit9CisKIHZvaWQgU2VsZWN0
aW9uUmFuZ2VEYXRhOjpzZXQoY29uc3QgQ29udGV4dCYgc2VsZWN0aW9uLCBSZXBhaW50TW9kZSBi
bG9ja1JlcGFpbnRNb2RlKQogewotICAgIC8vIE1ha2Ugc3VyZSBib3RoIG91ciBzdGFydCBhbmQg
ZW5kIG9iamVjdHMgYXJlIGRlZmluZWQuCi0gICAgLy8gQ2hlY2sgd3d3Lm1zbmJjLmNvbSBhbmQg
dHJ5IGNsaWNraW5nIGFyb3VuZCB0byBmaW5kIHRoZSBjYXNlIHdoZXJlIHRoaXMgaGFwcGVuZWQu
CiAgICAgaWYgKChzZWxlY3Rpb24uc3RhcnQoKSAmJiAhc2VsZWN0aW9uLmVuZCgpKSB8fCAoc2Vs
ZWN0aW9uLmVuZCgpICYmICFzZWxlY3Rpb24uc3RhcnQoKSkpCiAgICAgICAgIHJldHVybjsKICAg
ICAvLyBKdXN0IHJldHVybiBpZiB0aGUgc2VsZWN0aW9uIGhhc24ndCBjaGFuZ2VkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCmluZGV4IDg5YWViZTc0
NjE4NGZlM2VmNTRkNThmYzU3MDEyZmFkMDM1OTFmYzguLjQ0ZjkxY2NiYzYzYzM4ODkyYjJjYjIx
ZDljZDcwYjNhNWI2MWQ5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
ZWxlY3Rpb25SYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0
aW9uUmFuZ2VEYXRhLmgKQEAgLTcxLDcgKzcxLDkgQEAgcHVibGljOgogICAgICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gbV9zdGFydFBvc2l0aW9uOwogICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bV9lbmRQb3NpdGlvbjsKICAgICB9OwotCisgICAgCisgICAgdm9pZCBzZXRDb250ZXh0KGNvbnN0
IENvbnRleHQmKTsKKyAgICAKICAgICBlbnVtIGNsYXNzIFJlcGFpbnRNb2RlIHsgTmV3WE9ST2xk
LCBOZXdNaW51c09sZCwgTm90aGluZyB9OwogICAgIHZvaWQgc2V0KGNvbnN0IENvbnRleHQmLCBS
ZXBhaW50TW9kZSA9IFJlcGFpbnRNb2RlOjpOZXdYT1JPbGQpOwogICAgIGNvbnN0IENvbnRleHQm
IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dDsgfQpAQCAtODYsNiArODgs
OCBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBjb2xsZWN0
Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50OjpObyk7IH0KICAgICBJbnRSZWN0IGJvdW5kc0Ns
aXBwZWRUb1Zpc2libGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gY29sbGVjdEJvdW5kcyhDbGlw
VG9WaXNpYmxlQ29udGVudDo6WWVzKTsgfQogICAgIHZvaWQgcmVwYWludCgpIGNvbnN0OworICAg
IAorICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGVGb3JSZW5k
ZXJlcihSZW5kZXJPYmplY3QmKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIENsaXBUb1Zp
c2libGVDb250ZW50IHsgWWVzLCBObyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM1YTE4ZTQ3ZTU4MjBmODcxMzdiYjkzMDJjMWQ5ZjE1MDVm
NGI1NGYuLmVhNTg4ODU5MzcxYWZhYjQyM2FlNjhiNjM5M2FiMjU4YTY0YTc2NWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxOS0xMi0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFBhaW50IGhpZ2hsaWdodHMgc3BlY2lmaWVkIGluIENTUyBIaWdobGlnaHQgQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmQg
TWFya2VkVGV4dCB0byB0YWtlIGEgc3R5bGUgbmFtZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPDwpOgorCiAyMDE5LTEyLTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBhIEN1c3RvbSBVc2VyIEFnZW50IG1lbnUgdG8gTWluaUJyb3dz
ZXIsIGFuZCByZWxhdGVkIGNsZWFudXAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9NYXJrZWRUZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9NYXJrZWRUZXh0LmNwcAppbmRleCA1YTE2MmM2MGVjOTZmMGRjMmFmYTA2ODBlM2Mx
ZDgzZDBkYmZlODBmLi4wNjgxY2FiNDM2N2M1MjM2YTliNTY0MjhhZDZmMTA3NDViYTkxNzgxIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3Bw
CkBAIC01NSw2ICs1NSw4IEBAIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0m
IG9zLCBNYXJrZWRUZXh0OjpUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBvcyA8PCAiU3BlbGxp
bmdFcnJvciI7CiAgICAgY2FzZSBNYXJrZWRUZXh0OjpUZXh0TWF0Y2g6CiAgICAgICAgIHJldHVy
biBvcyA8PCAiVGV4dE1hdGNoIjsKKyAgICBjYXNlIE1hcmtlZFRleHQ6OkhpZ2hsaWdodDoKKyAg
ICAgICAgcmV0dXJuIG9zIDw8ICJIaWdobGlnaHQiOwogICAgIGNhc2UgTWFya2VkVGV4dDo6VW5t
YXJrZWQ6CiAgICAgICAgIHJldHVybiBvcyA8PCAiVW5tYXJrZWQiOwogICAgIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGM0YzA3MTFlZmI1ZTRkZTNhMzI0ZGRmNjI3N2Y4NDAx
MGVmZGRiMGYuLmI4OGU5ZTIzZmM2YTk3MGU5Nzg1MTcwNjdhMWI1NTM5YWU3NTFlMDggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEyLTE5ICBN
ZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQg
aGlnaGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGln
aGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGln
aHQtdGV4dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAy
MDE5LTEyLTIwICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MzgzMS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUzM2Q5MWQ3OTBlM2QzZGI2ZWU3NGRmMjM5ZGI1ZWM5NDc1OGM2YjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWstZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgdXNpbmcgSGlnaGxpZ2h0IGRvZXMgbm90
IGNhdXNlIHRoZSBkb2N1bWVudCB0byBnZXQgbGVha2VkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBEb2N1bWVudCBkaWQgbm90IGxlYWsKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWsuaHRtbCBiL0xheW91dFRlc3RzL2hpZ2hs
aWdodC9oaWdobGlnaHQtd29ybGQtbGVhay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YWRlYmEwM2JjYzJm
OWE5MmRkZGMwNGZkYjA1MDBhN2JiYTIxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWsuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBpZD0i
dGVzdEZyYW1lIiBzcmM9InJlc291cmNlcy9oaWdobGlnaHQtZnJhbWUuaHRtbCI+PC9pZnJhbWU+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgSGlnaGxpZ2h0IGRvZXMg
bm90IGNhdXNlIHRoZSBkb2N1bWVudCB0byBnZXQgbGVha2VkLiIpOword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBkb2N1bWVudFNob3VsZERpZShkb2N1bWVudElkZW50
aWZpZXIpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGdjKCk7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzICYmICFpbnRlcm5hbHMuaXNEb2N1
bWVudEFsaXZlKGRvY3VtZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgICAgICBjbGVhcklu
dGVydmFsKGhhbmRsZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAg
fQorICAgICAgICB9LCAxMCk7CisgICAgfSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVuY3Rp
b24oKSB7CisgICAgbGV0IGZyYW1lRG9jdW1lbnRJZGVudGlmaWVyID0gaW50ZXJuYWxzLmRvY3Vt
ZW50SWRlbnRpZmllcih0ZXN0RnJhbWUuY29udGVudERvY3VtZW50KTsKKyAgICB0ZXN0RnJhbWUu
cmVtb3ZlKCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZG9jdW1lbnRT
aG91bGREaWUoZnJhbWVEb2N1bWVudElkZW50aWZpZXIpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJEb2N1bWVudCBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9KTsKK307Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2hpZ2hsaWdodC9yZXNvdXJjZXMv
aGlnaGxpZ2h0LWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvcmVzb3VyY2VzL2hp
Z2hsaWdodC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyN2RhZjQzMGUyYWE3ZjI1YjNjYTkzYWJk
OWRjYWM1YWE2Zjk4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQv
cmVzb3VyY2VzL2hpZ2hsaWdodC1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGhlYWQ+CisJPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUpIHsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAg
ICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGRpdiBpZD0idGFyZ2V0Ij4KKwk8c3BhbiBpZD0iaGln
aGxpZ2h0Ij5oaWdobGlnaHQ8L3NwYW4+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2xldCBoaWdobGln
aHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlnaGxpZ2h0Jyk7CitsZXQgaGlnaGxpZ2h0
UmFuZ2VHcm91cCA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3Rh
cnRDb250YWluZXI6IGhpZ2hsaWdodCwgc3RhcnRPZmZzZXQ6IDAsIGVuZENvbnRhaW5lcjogaGln
aGxpZ2h0LCBlbmRPZmZzZXQ6IDR9KSk7CitDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUiLCBo
aWdobGlnaHRSYW5nZUdyb3VwKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGln
aGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdo
bGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmQx
ZTJjYTE0NmVmMzNiN2Q0NGQ1NzhiOWNkNzA5NzVjMDVmZTY0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hs
aWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHls
ZT4KKyAgICAjc3R5bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAg
ICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0eWxlMyB7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6cGluazsK
KyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE9uZSA8c3BhbiBpZD0i
c3R5bGUxIj50d288L3NwYW4+IHRoPHNwYW4gaWQ9InN0eWxlMiI+cmVlCisgICAgZm91cjwvc3Bh
bj4gZml2ZSA8c3BhbiBpZD0ic3R5bGUyIj5zaXgKKyAgICBzZXZlbjwvc3Bhbj4gZWlnaDxzcGFu
IGlkPSJzdHlsZTMiPnQgbmluZQorICAgIHRlbiBlbGV2ZW4gdHdlbHZlCisgICAgdGhpcnRlZW4g
Zm91PC9zcGFuPnJ0ZWVuIGZpZnRlZW4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGln
aHQtYXBpL2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGln
aGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIwMmM5OTgxYmMz
YTExOTljNWI0NTVhMWQyNjczMmUzYmIzNzVmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBp
L2hpZ2hsaWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICA8dGl0bGU+Q3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVudHMgYWNyb3NzIGVsZW1lbnRz
LjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI3BhaW50aW5nIj4KKyAgPGxpbmsgcmVsPSJtYXRjaCIg
aHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0iSGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzcGVjaWZpZWQgYWNy
b3NzIGVsZW1lbnRzLiI+CisgICAgPHN0eWxlPgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGln
aGxpZ2h0MSkgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNv
bG9yOmdyZWVuOworICAgIH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDIpIHsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgY29sb3I6cmVkOworICAg
IH0KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDMpIHsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcHVycGxlOworICAgICAgICBjb2xvcjpwaW5rOworICAgIH0KKyAgICA8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRocmVl
PC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0MiI+Zm91ciBmaXZlIHNpeDwvc3Bhbj4KKyAgICA8
c3BhbiBpZD0idGV4dDMiPnNldmVuIGVpZ2h0IG5pbmU8L3NwYW4+CisgICAgPHNwYW4gaWQ9InRl
eHQ0Ij50ZW4gZWxldmVuIHR3ZWx2ZTwvc3Bhbj4KKyAgICA8c3BhbiBpZD0idGV4dDUiPnRoaXJ0
ZWVuIGZvdXJ0ZWVuIGZpZnRlZW48L3NwYW4+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBsZXQg
dGV4dEVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAgICAg
IGxldCB0ZXh0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDInKTsKKyAg
ICAgICAgbGV0IHRleHRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0Mycp
OworICAgICAgICBsZXQgdGV4dEVsZW1lbnQ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
eHQ0Jyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGV4dDUnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAxID0gbmV3IEhpZ2hs
aWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1l
bnQxLCBzdGFydE9mZnNldDogNCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDEsIGVuZE9mZnNl
dDogN30pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGlnaGxp
Z2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVu
dDEsIHN0YXJ0T2Zmc2V0OiAxMCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDIsIGVuZE9mZnNl
dDogNH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNSYW5n
ZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Miwgc3RhcnRPZmZzZXQ6IDEwLCBlbmRDb250
YWluZXI6IHRleHRFbGVtZW50MywgZW5kT2Zmc2V0OiA1fSkpOworCisgICAgICAgIGxldCBoaWdo
bGlnaHRSYW5nZUdyb3VwMyA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5n
ZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Mywgc3RhcnRPZmZzZXQ6IDEwLCBlbmRDb250
YWluZXI6IHRleHRFbGVtZW50NSwgZW5kT2Zmc2V0OiAxMn0pKTsKKworICAgICAgICBDU1MuaGln
aGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MSIsIGhpZ2hsaWdodFJhbmdlR3JvdXAxKTsK
KyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDIiLCBoaWdobGln
aHRSYW5nZUdyb3VwMik7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdo
bGlnaHQzIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDMpOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQxNDI3YTI4MGI4OGQ4MjY4MWVkMzk5OWY3NDE4YTRjM2M5YjQ1OTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzdHlsZT4KKyAgICAjc3R5bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVs
bG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAg
I3N0eWxlMyB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29s
b3I6cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYg
aWQ9Im91dCI+PHNwYW4gaWQ9InRleHQxIj48c3BhbiBpZD0ic3R5bGUxIj5PbmU8L3NwYW4+IHR3
byB0aHJlZTwvc3Bhbj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJzY29wZWQiPjxzcGFuIGlkPSJ0ZXh0
MiI+Zm91ciA8c3BhbiBpZD0ic3R5bGUyIj5maXZlPC9zcGFuPiBzaXg8L3NwYW4+PC9kaXY+Cisg
ICAgPHNwYW4gaWQ9InRleHQzIj5zZXZlbiBlaWdodCBuaW5lPC9zcGFuPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hs
aWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1ZDJlODhm
Y2Y0OWFiZDg5YjRkODU5MmNmZTg2NTNkNDg1MDk3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0
LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDx0
aXRsZT5NdWx0aXBsZSBjdXN0b20gaGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50cy48L3RpdGxlPgor
ICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtaGln
aGxpZ2h0LWFwaS0xLyNjcmVhdGluZy1oaWdobGlnaHRzIj4KKyAgPGxpbmsgcmVsPSJtYXRjaCIg
aHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgIDxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0iTXVsdGlwbGUgaGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJsZSB0byBiZSBzcGVj
aWZpZWQuIj4KKyAgICA8c3R5bGU+CisgICAgI291dDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxp
Z2h0KSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6
Z3JlZW47CisgICAgfQorICAgICNzY29wZWQ6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodCkg
eworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7Cisg
ICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJvdXQiPjxz
cGFuIGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwvc3Bhbj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJz
Y29wZWQiPjxzcGFuIGlkPSJ0ZXh0MiI+Zm91ciBmaXZlIHNpeDwvc3Bhbj48L2Rpdj4KKyAgICA8
c3BhbiBpZD0idGV4dDMiPnNldmVuIGVpZ2h0IG5pbmU8L3NwYW4+CisKKyAgICA8c2NyaXB0Pgor
ICAgICAgICBsZXQgdGV4dEVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQx
Jyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGV4dDInKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0ZXh0MycpOworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cCA9IG5ldyBIaWdo
bGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVt
ZW50MSwgc3RhcnRPZmZzZXQ6IDAsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQxLCBlbmRPZmZz
ZXQ6IDN9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAuYWRkKG5ldyBTdGF0aWNSYW5n
ZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50Miwgc3RhcnRPZmZzZXQ6IDUsIGVuZENvbnRh
aW5lcjogdGV4dEVsZW1lbnQyLCBlbmRPZmZzZXQ6IDl9KSk7CisKKyAgICAgICAgQ1NTLmhpZ2hs
aWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodCIsIGhpZ2hsaWdodFJhbmdlR3JvdXApOworICAg
IDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxp
Z2h0LXRleHQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGJlYTA1NDQ3NDNlNTQ3ZTBkNDM5NDI5NTM3ZDQyYjNlMzQ1MWI4
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxzdHlsZT4KKyAgICAjc3R5bGUxIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93
OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgI3N0eWxlMiB7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgI3N0
eWxlMyB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29sb3I6
cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIE88c3BhbiBp
ZD0ic3R5bGUxIj5uPC9zcGFuPmU8c3BhbiBpZD0ic3R5bGUyIj4gPC9zcGFuPnQ8c3BhbiBpZD0i
c3R5bGUyIj53PC9zcGFuPm88c3BhbiBpZD0ic3R5bGUzIj4gPC9zcGFuPnQ8c3BhbiBpZD0ic3R5
bGUzIj5oPC9zcGFuPnJlPHNwYW4gaWQ9InN0eWxlMyI+ZTwvc3Bhbj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2UtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2UtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNTUwM2YzMGI5ZTM1OGZiOTdkNmI0MTBhMTI4NjQzNjg0OWNhZGU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtcmVwbGFjZS1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
c3R5bGU+CisgICAgI2hpZ2hsaWdodCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxv
dzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICBPbmU8c3BhbiBpZD0iaGlnaGxpZ2h0Ij4gPC9zcGFuPnQ8c3BhbiBpZD0iaGln
aGxpZ2h0Ij53PC9zcGFuPm8gdGhyZWUKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGln
aHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2UuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10
ZXh0LXJlcGxhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjg5NTFiODIxMWI1OTlmN2JiMTBkMmQ2MzA2
MmVjNzdjMTdjNmUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQt
cmVwbGFjZS5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICA8dGl0bGU+TXVsdGlwbGUgY3VzdG9t
IGhpZ2hsaWdodCBwc2V1ZG8gZWxlbWVudHMuPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jY3JlYXRp
bmctaGlnaGxpZ2h0cyI+CisgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10ZXh0
LWV4cGVjdGVkLmh0bWwiPgorICA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik11bHRpcGxl
IGhpZ2hsaWdodHMgc2hvdWxkIGJlIGFibGUgdG8gYmUgc3BlY2lmaWVkLiI+CisgICAgPHN0eWxl
PgorICAgIDo6aGlnaGxpZ2h0KGV4YW1wbGUtaGlnaGxpZ2h0KSB7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQorICAgIDwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3BhbiBpZD0idGV4dDEiPk9uZSB0d28gdGhyZWU8
L3NwYW4+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBsZXQgdGV4dEVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGV4dDEnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3Jv
dXAxID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRh
aW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiAxLCBlbmRDb250YWluZXI6IHRleHRFbGVt
ZW50LCBlbmRPZmZzZXQ6IDJ9KSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAy
ID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5l
cjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiAzLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50
LCBlbmRPZmZzZXQ6IDR9KSk7CisgICAgICAgIGhpZ2hsaWdodFJhbmdlR3JvdXAyLmFkZChuZXcg
U3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDUs
IGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogNn0pKTsgICAgICAgIAorCisg
ICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQiLCBoaWdobGlnaHRS
YW5nZUdyb3VwMSk7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGln
aHQiLCBoaWdobGlnaHRSYW5nZUdyb3VwMik7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkv
aGlnaGxpZ2h0LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjVlZDU3Y2JjZmNmMDA5ZTkzZmNlYWI0
NzVlOWU4MGZmNGMzMGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRl
eHQuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPHRpdGxlPk11bHRpcGxlIGN1c3RvbSBoaWdo
bGlnaHQgcHNldWRvIGVsZW1lbnRzLjwvdGl0bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0i
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1oaWdobGlnaHQtYXBpLTEvI2NyZWF0aW5nLWhp
Z2hsaWdodHMiPgorICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJoaWdobGlnaHQtdGV4dC1leHBl
Y3RlZC5odG1sIj4KKyAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJNdWx0aXBsZSBoaWdo
bGlnaHRzIHNob3VsZCBiZSBhYmxlIHRvIGJlIHNwZWNpZmllZC4iPgorICAgIDxzdHlsZT4KKyAg
ICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDEpIHsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgOjpoaWdobGln
aHQoZXhhbXBsZS1oaWdobGlnaHQyKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7
CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdo
bGlnaHQzKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAgICAgY29s
b3I6cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzcGFu
IGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwvc3Bhbj4KKworICAgIDxzY3JpcHQ+CisgICAgICAg
IGxldCB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0MScpOworICAg
ICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDEgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChu
ZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6
IDEsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogMn0pKTsKKworICAgICAg
ICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDIgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcg
U3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwgc3RhcnRPZmZzZXQ6IDMs
IGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogNH0pKTsKKyAgICAgICAgaGln
aGxpZ2h0UmFuZ2VHcm91cDIuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRl
eHRFbGVtZW50LCBzdGFydE9mZnNldDogNSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5k
T2Zmc2V0OiA2fSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMyA9IG5ldyBI
aWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRF
bGVtZW50LCBzdGFydE9mZnNldDogNywgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zm
c2V0OiA4fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMy5hZGQobmV3IFN0YXRpY1Jh
bmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA5LCBlbmRDb250
YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDEwfSkpOworICAgICAgICBoaWdobGlnaHRS
YW5nZUdyb3VwMy5hZGQobmV3IFN0YXRpY1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1l
bnQsIHN0YXJ0T2Zmc2V0OiAxMiwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5kT2Zmc2V0
OiAxM30pKTsKKyAgICAgICAgCisKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxl
LWhpZ2hsaWdodDEiLCBoaWdobGlnaHRSYW5nZUdyb3VwMSk7CisgICAgICAgIENTUy5oaWdobGln
aHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQyIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDIpOworICAg
ICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MyIsIGhpZ2hsaWdodFJh
bmdlR3JvdXAzKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386279</attachid>
            <date>2019-12-20 17:00:12 -0800</date>
            <delta_ts>2019-12-20 17:33:18 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205318-20191220170011.patch</filename>
            <type>text/plain</type>
            <size>39766</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc5Yjg1N2Q1ZjAyNDI0
MTcxMzgzMTAwYWUwMTk0M2IxMmRlYzdiYy4uNTcxOTlkMTZjZjdjZWM5OTlmMDNlMTYyMjlhNjYw
MTY5YTU3ODQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUGFpbnQgaGln
aGxpZ2h0cyBzcGVjaWZpZWQgaW4gQ1NTIEhpZ2hsaWdodCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBSZW5kZXIgaGlnaGxpZ2h0cyB3aGVuIHByZXNl
bnQsIHNpbWlsYXIgdG8gdGhlIHdheSB3ZSByZW5kZXIgc2VsZWN0aW9uLgorCisgICAgICAgIFRl
c3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFw
aS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxp
Z2h0LXRleHQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0TWFw
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaWdobGlnaHRNYXA6Om1hcCBjb25zdCk6CisKKyAgICAg
ICAgQWRkIGEgZ2V0dGVyIGZvciB0aGUgaW50ZXJuYWwgSGFzaE1hcC4KKworICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6OnNlbGVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnZl
cmlmeVNlbGVjdGlvblN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmNsYW1wZWRTdGFy
dEVuZEZvclN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnNl
bGVjdGlvblN0YXJ0RW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OmhpZ2hsaWdodFN0YXJ0RW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6OnJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQpOgorCisgICAgICAgIFVzZSB0aGUgaGlnaGxp
Z2h0IG5hbWUgZnJvbSB0aGUgSGlnaGxpZ2h0UmFuZ2VHcm91cCB0byBvYnRhaW4gdGhlIHN0eWxl
IGZyb20gdGhlIHJlbmRlcmVyLgorCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpj
b2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzIGNvbnN0KToKKworICAgICAgICBSZW5kZXIg
dGhlIGhpZ2hsaWdodHMgd2hlbiBwYWludGluZyB0ZXh0LiBEZXRlcm1pbmUgaWYgYSBoaWdobGln
aHQgaXMgcHJlc2VudCBpbiB0aGUgY3VycmVudCBSZW5kZXJPYmplY3QsIGFuZAorICAgICAgICBh
ZGQgYWRkaXRpb25hbCBNYXJrZWRUZXh0IHRvIGJlIHJlbmRlcmVkIHdoZW4gcGFpbnRpbmcKKwor
ICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L01hcmtlZFRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ViZGl2aWRlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvTWFya2VkVGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6TWFya2VkVGV4dDo6
b3BlcmF0b3I9PSBjb25zdCk6CisKKyAgICAgICAgRXhwYW5kIE1hcmtlZFRleHQgdG8gdGFrZSBh
IHN0eWxlIG5hbWUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6c2V0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnNlbGVjdGlvblN0YXRlRm9yUmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaDoKKworICAgICAgICBMZXZlcmFn
ZSBTZWxlY3Rpb25SYW5nZURhdGEgZm9yIGhpZ2hsaWdodHMuCisKIDIwMTktMTItMjAgIHlvdWVu
biBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNXU2VydmVyIGNhbiBiZSBj
cmVhdGVkIHdpdGhvdXQgYW55IHBhdGggdG8gc3RvcmUgcmVnaXN0cmF0aW9ucyBpbiBub24gZXBo
ZW1lcmFsIHNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9IaWdobGlnaHRNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hp
Z2hsaWdodE1hcC5oCmluZGV4IGZmOThjYzNiYTUzMmZlMDFkZTQwNzU2ODlhMGI5MjM2NTdmY2Vl
ZjIuLjFhNDg1N2IyNWM1OGZlOGZjNGE0MTU5YWY0YTg5NzdlZDlmYjdhZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodE1hcC5oCkBAIC00NSw2ICs0
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92ZShjb25zdCBTdHJpbmcmKTsKICAgICAKICAg
ICBSZWZQdHI8SGlnaGxpZ2h0UmFuZ2VHcm91cD4gZ2V0R3JvdXBGb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXkpOworICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBSZWY8SGlnaGxpZ2h0UmFuZ2VHcm91
cD4+JiBtYXAoKSBjb25zdCB7IHJldHVybiBtX21hcDsgfQogICAgIAogcHJpdmF0ZToKICAgICBI
aWdobGlnaHRNYXAoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2Yzc1
ZTA1ZjJjYzRhMzUzYmFiNDhmZjhhNzYxZWM2ZTMyNTEyYzNjLi4zNDE2ZDU4NzNiMzM3OWMyMmYx
MGNiMWVmYjQ2ODJjMjUzZDA5YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3OSw2
ICs3NzksOSBAQCB2b2lkIERvY3VtZW50Ojpjb21tb25UZWFyZG93bigpCiAgICAgICAgIGFjY2Vz
c1NWR0V4dGVuc2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKIAogICAgIGNsZWFyU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyKCk7CisgICAgCisgICAgaWYgKG1faGlnaGxpZ2h0TWFwKQorICAg
ICAgICBtX2hpZ2hsaWdodE1hcC0+Y2xlYXIoKTsKIAogICAgIG1fcGVuZGluZ1Njcm9sbEV2ZW50
VGFyZ2V0TGlzdCA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKaW5kZXggNDMzYTA3NGY1MDI2NDc4YzczYmFlZWE2MTNjMzM1ODQ4OTJmNTMx
Yy4uMmU4NTg4NTQzM2QxMmJkOTY1MWJkMjE5NmM0NGJlYzlmZjE5Y2MzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMjgsMTAgKzI4LDEyIEBACiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50UnVsZUNvbGxlY3Rvci5o
IgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCiAjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkhpZ2hsaWdodE1hcC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgpAQCAtNDYsNiAr
NDgsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uUmFuZ2VEYXRhLmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5oIgogI2luY2x1
ZGUgIlRleHRQYWludFN0eWxlLmgiCkBAIC0xNTIsOSArMTU2LDMzIEBAIGJvb2wgSW5saW5lVGV4
dEJveDo6aXNTZWxlY3RlZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3Np
dGlvbikgY29uCiAKIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uU3RhdGUoKQogewotICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc3Rh
dGUgPSByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7CisgICAgYXV0byBzdGF0ZSA9IHZlcmlm
eVNlbGVjdGlvblN0YXRlKHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKSwgcmVuZGVyZXIoKS52
aWV3KCkuc2VsZWN0aW9uKCkpOworICAgIAorICAgIC8vIEZJWE1FOiB0aGlzIGNvZGUgbXV0YXRl
cyBzZWxlY3Rpb24gc3RhdGUsIGJ1dCBpdCdzIHVzZWQgYXQgYSBzaW1wbGUgZ2V0dGVyIGVsc2V3
aGVyZQorICAgIC8vIGluIHRoaXMgZmlsZS4gVGhpcyBjb2RlIHNob3VsZCBsaWtlbHkgbGl2ZSBp
biBTZWxlY3Rpb25SYW5nZURhdGEsIG9yIHNvbWV3aGVyZSBlbHNlLgorICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS81ODEyNTk3OD4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NTI4CisgICAgLy8gSWYgdGhlcmUgYXJlIGVsbGlwc2lzIGZvbGxvd2luZywg
bWFrZSBzdXJlIHRoZWlyIHNlbGVjdGlvbiBpcyB1cGRhdGVkLgorICAgIGlmIChtX3RydW5jYXRp
b24gIT0gY05vVHJ1bmNhdGlvbiAmJiByb290KCkuZWxsaXBzaXNCb3goKSkgeworICAgICAgICBF
bGxpcHNpc0JveCogZWxsaXBzaXMgPSByb290KCkuZWxsaXBzaXNCb3goKTsKKyAgICAgICAgaWYg
KHN0YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgeworICAgICAgICAgICAgYXV0
byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOwor
ICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNob3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNl
bGVjdGVkIGlmIHRoZSBlbmQgb2YKKyAgICAgICAgICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFz
dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgIC8v
IGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZQorICAgICAgICAgICAgLy8gdHJ1bmNhdGlvbi4KKyAgICAgICAgICAgIGVsbGlwc2lz
LT5zZXRTZWxlY3Rpb25TdGF0ZShzZWxlY3Rpb25FbmQgPj0gbV90cnVuY2F0aW9uICYmIHNlbGVj
dGlvblN0YXJ0IDw9IG1fdHJ1bmNhdGlvbiA/CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0
OjpTZWxlY3Rpb25JbnNpZGUgOiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGVsbGlwc2lzLT5zZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvbk5vbmUpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gc3RhdGU7Cit9
CisKK1JlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6dmVyaWZ5U2Vs
ZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSwgU2VsZWN0aW9u
UmFuZ2VEYXRhJiBzZWxlY3Rpb24pIGNvbnN0Cit7CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uU3RhcnQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25F
bmQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKSB7Ci0gICAgICAgIGF1
dG8mIHNlbGVjdGlvbiA9IHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpOwogICAgICAgICBh
dXRvIHN0YXJ0UG9zID0gc2VsZWN0aW9uLnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgYXV0byBl
bmRQb3MgPSBzZWxlY3Rpb24uZW5kUG9zaXRpb24oKTsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9u
IGFmdGVyIGEgaGFyZCBsaW5lIGJyZWFrIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFzdCBpdHMgZW5k
LgpAQCAtMTc2LDIxICsyMDQsNiBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGlu
ZVRleHRCb3g6OnNlbGVjdGlvblN0YXRlKCkKICAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25Ob25lOwogICAgIH0KIAotICAgIC8vIElmIHRoZXJlIGFyZSBlbGxpcHNp
cyBmb2xsb3dpbmcsIG1ha2Ugc3VyZSB0aGVpciBzZWxlY3Rpb24gaXMgdXBkYXRlZC4KLSAgICBp
ZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkp
IHsKLSAgICAgICAgRWxsaXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7
Ci0gICAgICAgIGlmIChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAg
ICAgICAgICAgIGF1dG8gW3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmRdID0gc2VsZWN0aW9u
U3RhcnRFbmQoKTsKLSAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lk
ZXJlZCB0byBiZSBzZWxlY3RlZCBpZiB0aGUgZW5kIG9mCi0gICAgICAgICAgICAvLyB0aGUgc2Vs
ZWN0aW9uIGlzIHBhc3QgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCi0g
ICAgICAgICAgICAvLyBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiBpcyBiZWZvcmUgb3IgYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUKLSAgICAgICAgICAgIC8vIHRydW5jYXRpb24uCi0gICAgICAg
ICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9uU3RhdGUoc2VsZWN0aW9uRW5kID49IG1fdHJ1bmNh
dGlvbiAmJiBzZWxlY3Rpb25TdGFydCA8PSBtX3RydW5jYXRpb24gPwotICAgICAgICAgICAgICAg
IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlIDogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25O
b25lKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBlbGxpcHNpcy0+c2V0U2VsZWN0aW9u
U3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKLSAgICB9Ci0KICAgICByZXR1cm4g
c3RhdGU7CiB9CiAKQEAgLTUyNCw2ICs1MzcsOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAg
ICAgICAgICAgICBwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdp
bik7CiAKICAgICAgICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzID0gY29sbGVjdE1h
cmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kKTsK
KyAgICAgICAgYXV0byBoaWdobGlnaHRNYXJrZWRUZXh0cyA9IGNvbGxlY3RNYXJrZWRUZXh0c0Zv
ckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQpOworICAgICAgICBpZiAoIWhp
Z2hsaWdodE1hcmtlZFRleHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1hcmtlZFRleHRzLmFw
cGVuZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7CiAjaWYgRU5BQkxFKFRF
WFRfU0VMRUNUSU9OKQogICAgICAgICBpZiAoaGF2ZVNlbGVjdGlvbiAmJiAhdXNlQ3VzdG9tVW5k
ZXJsaW5lcyAmJiAhY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgICAgIGF1
dG8gc2VsZWN0aW9uTWFya2VkVGV4dCA9IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5C
b3goKnRoaXMpOwpAQCAtNTU3LDYgKzU3Myw5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAg
ICAgICAgbWFya2VkVGV4dHMuYXBwZW5kKHsgY2xhbXBlZE9mZnNldChtX3N0YXJ0KSwgY2xhbXBl
ZE9mZnNldChlbmQoKSksIE1hcmtlZFRleHQ6OlVubWFya2VkIH0pOwogICAgICAgICBpZiAoIWlz
UHJpbnRpbmcpIHsKICAgICAgICAgICAgIG1hcmtlZFRleHRzLmFwcGVuZFZlY3Rvcihjb2xsZWN0
TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQp
KTsKKyAgICAgICAgICAgIGF1dG8gaGlnaGxpZ2h0TWFya2VkVGV4dHMgPSBjb2xsZWN0TWFya2Vk
VGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kKTsKKyAgICAgICAg
ICAgIGlmICghaGlnaGxpZ2h0TWFya2VkVGV4dHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
IG1hcmtlZFRleHRzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGhpZ2hsaWdodE1hcmtlZFRleHRzKSk7
CiAKICAgICAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnREcmFnZ2VkQ29udGVudCA9ICEocGFpbnRJ
bmZvLnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlv
bikpOwogICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50RHJhZ2dlZENvbnRlbnQpIHsKQEAgLTY1
MiwxNCArNjcxLDExIEBAIHVuc2lnbmVkIElubGluZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQodW5z
aWduZWQgeCkgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0Citz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRF
bmRGb3JTdGF0ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKSBjb25zdAogewotICAgIGF1dG8gc2VsZWN0aW9u
U3RhdGUgPSByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7CiAgICAgaWYgKHNlbGVjdGlvblN0
YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlKQogICAgICAgICByZXR1cm4geyAw
LCBjbGFtcGVkT2Zmc2V0KG1fc3RhcnQgKyBtX2xlbikgfTsKICAgICAKLSAgICBhdXRvIHN0YXJ0
ID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwotICAgIGF1
dG8gZW5kID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAg
ICBpZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKICAg
ICAgICAgZW5kID0gcmVuZGVyZXIoKS50ZXh0KCkubGVuZ3RoKCk7CiAgICAgZWxzZSBpZiAoc2Vs
ZWN0aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpCkBAIC02NjcsNiArNjgz
LDI0IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVj
dGlvblN0YXJ0RW5kKCkgY29uc3QKICAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0YXJ0KSwg
Y2xhbXBlZE9mZnNldChlbmQpIH07CiB9CiAKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKK3sKKyAgICBhdXRvIHNl
bGVjdGlvblN0YXRlID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpOworICAgIAorICAgIHJl
dHVybiBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZShyZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24o
KS5zdGFydFBvc2l0aW9uKCksIHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0
aW9uKCksIHNlbGVjdGlvblN0YXRlKTsKK30KKworc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoU2VsZWN0aW9uUmFuZ2VEYXRhICZy
YW5nZURhdGEpIGNvbnN0Cit7CisgICAgYXV0byBzdGF0ZSA9IHJhbmdlRGF0YS5zZWxlY3Rpb25T
dGF0ZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOworICAgIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9u
U3RhdGUoc3RhdGUsIHJhbmdlRGF0YSk7CisgICAgCisgICAgaWYgKHN0YXRlID09IFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uTm9uZSkKKyAgICAgICAgcmV0dXJuIHswLCAwfTsKKyAgICAKKyAgICBy
ZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmFuZ2VEYXRhLnN0YXJ0UG9zaXRpb24oKSwg
cmFuZ2VEYXRhLmVuZFBvc2l0aW9uKCksIHN0YXRlKTsKK30KKwogYm9vbCBJbmxpbmVUZXh0Qm94
OjpoYXNNYXJrZXJzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sbGVjdE1hcmtlZFRleHRzRm9y
RG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKS5zaXplKCk7CkBAIC03
NzAsNiArODA0LDIyIEBAIGF1dG8gSW5saW5lVGV4dEJveDo6cmVzb2x2ZVN0eWxlRm9yTWFya2Vk
VGV4dChjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zCiAgICAgY2FzZSBNYXJrZWRU
ZXh0OjpTcGVsbGluZ0Vycm9yOgogICAgIGNhc2UgTWFya2VkVGV4dDo6VW5tYXJrZWQ6CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTWFya2VkVGV4dDo6SGlnaGxpZ2h0OgorICAgICAgICBpZiAo
YXV0byByZW5kZXJTdHlsZSA9IHBhcmVudCgpLT5yZW5kZXJlcigpLmdldFVuY2FjaGVkUHNldWRv
U3R5bGUoeyBQc2V1ZG9JZDo6SGlnaGxpZ2h0LCBtYXJrZWRUZXh0LmhpZ2hsaWdodE5hbWUgfSwg
JnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkpKSB7CisgICAgICAgICAgICBzdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSByZW5kZXJTdHlsZS0+YmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgICAg
ICBzdHlsZS50ZXh0U3R5bGVzLmZpbGxDb2xvciA9IHJlbmRlclN0eWxlLT5jb21wdXRlZFN0cm9r
ZUNvbG9yKCk7CisgICAgICAgICAgICBzdHlsZS50ZXh0U3R5bGVzLnN0cm9rZUNvbG9yID0gcmVu
ZGVyU3R5bGUtPmNvbXB1dGVkU3Ryb2tlQ29sb3IoKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgYXV0byBjb2xvciA9IHJlbmRlclN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29s
b3JGaWx0ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKKyAgICAgICAgICAgIGF1
dG8gZGVjb3JhdGlvblN0eWxlID0gcmVuZGVyU3R5bGUtPnRleHREZWNvcmF0aW9uU3R5bGUoKTsK
KyAgICAgICAgICAgIGF1dG8gZGVjb3JhdGlvbnMgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRp
b25zSW5FZmZlY3QoKTsKKworICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zQW55
KHsgVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgVGV4dERlY29yYXRpb246Ok92ZXJsaW5lLCBU
ZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2ggfSkpIHsKKyAgICAgICAgICAgICAgICBzdHlsZS50
ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmVDb2xvciA9IGNvbG9yOworICAgICAgICAgICAg
ICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZVN0eWxlID0gZGVjb3JhdGlv
blN0eWxlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTWFya2VkVGV4dDo6RHJhZ2dlZENvbnRlbnQ6CiAgICAgICAgIHN0eWxlLmFscGhhID0gMC4y
NTsKICAgICAgICAgYnJlYWs7CkBAIC05NjMsNiArMTAxMyw0NiBAQCBWZWN0b3I8TWFya2VkVGV4
dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRl
eHRQYWludAogICAgIHJldHVybiBtYXJrZWRUZXh0czsKIH0KIAorCitWZWN0b3I8TWFya2VkVGV4
dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFp
bnRQaGFzZSBwaGFzZSkgY29uc3QKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuaGlnaGxpZ2h0QVBJRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
eyB9OworICAgIEFTU0VSVF9BUkcocGhhc2UsIHBoYXNlID09IFRleHRQYWludFBoYXNlOjpCYWNr
Z3JvdW5kIHx8IHBoYXNlID09IFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBoYXNlID09
IFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0ocGhhc2UpOwor
ICAgIGlmICghcmVuZGVyZXIoKS50ZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgVmVjdG9yPE1hcmtlZFRleHQ+IG1hcmtlZFRleHRzOworICAgIGF1dG8mIHBhcmVudFJlbmRl
cmVyID0gcGFyZW50KCktPnJlbmRlcmVyKCk7CisgICAgYXV0byYgcGFyZW50U3R5bGUgPSBwYXJl
bnRSZW5kZXJlci5zdHlsZSgpOworICAgIGZvciAoYXV0byYgW2hpZ2hsaWdodEtleSwgaGlnaGxp
Z2h0R3JvdXBdIDogcmVuZGVyZXIoKS5kb2N1bWVudCgpLmhpZ2hsaWdodE1hcCgpLm1hcCgpKSB7
CisgICAgICAgIGF1dG8gcmVuZGVyU3R5bGUgPSBwYXJlbnRSZW5kZXJlci5nZXRVbmNhY2hlZFBz
ZXVkb1N0eWxlKHsgUHNldWRvSWQ6OkhpZ2hsaWdodCwgaGlnaGxpZ2h0S2V5IH0sICZwYXJlbnRT
dHlsZSk7CisgICAgICAgIGlmICghcmVuZGVyU3R5bGUpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgZm9yIChhdXRvJiBzdGF0aWNSYW5nZSA6IGhpZ2hsaWdodEdyb3VwLT5yYW5nZXMo
KSkgeworICAgICAgICAgICAgUG9zaXRpb24gc3RhcnRQb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24oc3RhdGljUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXRpY1JhbmdlLT5zdGFy
dE9mZnNldCgpKTsKKyAgICAgICAgICAgIFBvc2l0aW9uIGVuZFBvcyA9IGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihzdGF0aWNSYW5nZS0+ZW5kQ29udGFpbmVyKCksIHN0YXRpY1JhbmdlLT5l
bmRPZmZzZXQoKSk7CisKKyAgICAgICAgICAgIGlmIChzdGFydFBvcy5pc05vdE51bGwoKSAmJiBl
bmRQb3MuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0
UmVuZGVyZXIgPSBzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgICAg
ICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0UG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7CisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVuZFBv
cy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgIGludCBlbmRP
ZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0gMCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFzdGFydFJlbmRlcmVyIHx8ICFlbmRSZW5kZXJlcikKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYXV0byBoaWdobGlnaHREYXRhID0gU2Vs
ZWN0aW9uUmFuZ2VEYXRhKHJlbmRlcmVyKCkudmlldygpKTsKKyAgICAgICAgICAgICAgICBoaWdo
bGlnaHREYXRhLnNldENvbnRleHQoe3N0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zm
c2V0KX0pOworICAgICAgICAgICAgICAgIGF1dG8gW2hpZ2hsaWdodFN0YXJ0LCBoaWdobGlnaHRF
bmRdID0gaGlnaGxpZ2h0U3RhcnRFbmQoaGlnaGxpZ2h0RGF0YSk7CisgICAgICAgICAgICAgICAg
aWYgKGhpZ2hsaWdodFN0YXJ0IDwgaGlnaGxpZ2h0RW5kKQorICAgICAgICAgICAgICAgICAgICBt
YXJrZWRUZXh0cy5hcHBlbmQoeyBoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0RW5kLCBNYXJrZWRU
ZXh0OjpIaWdobGlnaHQsIG51bGxwdHIsIGhpZ2hsaWdodEtleSB9KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWFya2VkVGV4dHM7Cit9CisKIEZsb2F0UG9p
bnQgSW5saW5lVGV4dEJveDo6dGV4dE9yaWdpbkZyb21Cb3hSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
Ym94UmVjdCkgY29uc3QKIHsKICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4geyBib3hSZWN0Lngo
KSwgYm94UmVjdC55KCkgKyBsaW5lRm9udCgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDVjYTJiYzg2MTM2YjZk
OTMyNjg3MjhiZGFmODcyOTJlODg1OGQ2NWMuLmYwN2ZmNTY1YWQyM2U0NmI2YzBlZTQwZWUwMDBj
ZWNlODI3Y2EzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApA
QCAtMTIxLDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxT
ZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zLCB1bnNpZ25lZCBlbmRQb3MpIGNvbnN0Owog
ICAgIGJvb2wgaXNTZWxlY3RlZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQ
b3NpdGlvbikgY29uc3Q7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gc2VsZWN0
aW9uU3RhcnRFbmQoKSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBo
aWdobGlnaHRTdGFydEVuZChTZWxlY3Rpb25SYW5nZURhdGEmKSBjb25zdDsKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CkBAIC0xMzIsNiAr
MTMzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZUxpbmUoKSBmaW5hbDsKICAgICB2b2lk
IGV4dHJhY3RMaW5lKCkgZmluYWw7CiAgICAgdm9pZCBhdHRhY2hMaW5lKCkgZmluYWw7CisgICAg
CisgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSB2ZXJpZnlTZWxlY3Rpb25TdGF0ZShS
ZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlLCBTZWxlY3Rpb25SYW5nZURhdGEmKSBjb25zdDsK
KyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0
ZSh1bnNpZ25lZCwgdW5zaWduZWQsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUpIGNvbnN0
OwogCiBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25T
dGF0ZSgpIGZpbmFsOwpAQCAtMTY5LDYgKzE3Myw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8
TWFya2VkVGV4dD4gY29sbGVjdE1hcmtlZFRleHRzRm9yRHJhZ2dlZENvbnRlbnQoKTsKICAgICBW
ZWN0b3I8TWFya2VkVGV4dD4gY29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRl
eHRQYWludFBoYXNlKSBjb25zdDsKKyAgICBWZWN0b3I8TWFya2VkVGV4dD4gY29sbGVjdE1hcmtl
ZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZSkgY29uc3Q7CiAKICAgICBNYXJrZWRU
ZXh0U3R5bGUgY29tcHV0ZVN0eWxlRm9yVW5tYXJrZWRNYXJrZWRUZXh0KGNvbnN0IFBhaW50SW5m
byYpIGNvbnN0OwogICAgIFN0eWxlZE1hcmtlZFRleHQgcmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4
dChjb25zdCBNYXJrZWRUZXh0JiwgY29uc3QgTWFya2VkVGV4dFN0eWxlJiBiYXNlU3R5bGUsIGNv
bnN0IFBhaW50SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01h
cmtlZFRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCmlu
ZGV4IGE3OTE5MmUyOGFlMTk5OTY4NmI2MjY1N2M4OTBmNTdiMmM4NGU1NjIuLmRiODQ5YTRmYmNi
ZmVjNDgwODA0ZTQ3Y2Q5MmVlN2FmY2YxMmY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TWFya2VkVGV4dC5jcHAKQEAgLTc0LDEyICs3NCwxMiBAQCBWZWN0b3I8TWFya2VkVGV4dD4gc3Vi
ZGl2aWRlKGNvbnN0IFZlY3RvcjxNYXJrZWRUZXh0PiYgbWFya2VkVGV4dHMsIE92ZXJsYXBTdHJh
dAogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbnRtb3N0ID0gajsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgaWYgKGZyb250bW9zdCkKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzWypm
cm9udG1vc3RdLm1hcmtlZFRleHQtPnR5cGUsIG9mZnNldHNbKmZyb250bW9zdF0ubWFya2VkVGV4
dC0+bWFya2VyIH0pOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgb2Zmc2V0
U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbKmZyb250bW9zdF0ubWFya2VkVGV4dC0+
dHlwZSwgb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT5tYXJrZXIsIG9mZnNldHNbKmZy
b250bW9zdF0ubWFya2VkVGV4dC0+aGlnaGxpZ2h0TmFtZSB9KTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGFwcGVuZGVkIG1hcmtlZCB0ZXh0cyBtYXkgbm90
IGJlIGluIHBhaW50IG9yZGVyLiBXZSB3aWxsIGZpeCB0aGlzIHVwIGF0IHRoZSBlbmQgb2YgdGhp
cyBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgaTsg
KytqKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvY2Vzc2VkTWFya2VkVGV4dHMuY29u
dGFpbnMob2Zmc2V0c1tqXS5tYXJrZWRUZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1tqXS5t
YXJrZWRUZXh0LT50eXBlLCBvZmZzZXRzW2pdLm1hcmtlZFRleHQtPm1hcmtlciB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tp
XS52YWx1ZSwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT50eXBlLCBvZmZzZXRzW2pdLm1hcmtlZFRl
eHQtPm1hcmtlciwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT5oaWdobGlnaHROYW1lIH0pOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9mZnNldFNvRmFyID0g
b2Zmc2V0c1tpXS52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9N
YXJrZWRUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCmluZGV4
IGIyYjVhYTBmZmYwZDdlNjU0ZDE0MzgyMDhjYjlhYmEyYzdkYWQ4MmEuLjczYzA2MjExZmU0YWE0
MzMyYTJiODI4NDAxYzljYWQxOWYwOTFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9NYXJrZWRUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtl
ZFRleHQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDAsNiArNDEsNyBAQCBzdHJ1Y3QgTWFya2VkVGV4dCB7CiAgICAgICAg
IFNwZWxsaW5nRXJyb3IsCiAgICAgICAgIFRleHRNYXRjaCwKICAgICAgICAgRGljdGF0aW9uQWx0
ZXJuYXRpdmVzLAorICAgICAgICBIaWdobGlnaHQsCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgLy8gRklYTUU6IFNlZSA8cmRhcjovL3Byb2JsZW0vODkzMzM1Mj4uIEFsc28sIHJl
bW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3VhcmQuCiAgICAgICAgIERpY3RhdGlvblBo
cmFzZVdpdGhBbHRlcm5hdGl2ZXMsCkBAIC01MSwxMiArNTMsMTMgQEAgc3RydWN0IE1hcmtlZFRl
eHQgewogICAgIHVuc2lnbmVkIGVuZE9mZnNldDsKICAgICBUeXBlIHR5cGU7CiAgICAgY29uc3Qg
UmVuZGVyZWREb2N1bWVudE1hcmtlciogbWFya2VyIHsgbnVsbHB0ciB9OworICAgIFN0cmluZyBo
aWdobGlnaHROYW1lIHsgfTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGVu
ZE9mZnNldCA8PSBzdGFydE9mZnNldDsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXJr
ZWRUZXh0JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTWFya2VkVGV4dCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gc3RhcnRPZmZzZXQgPT0gb3RoZXIuc3RhcnRPZmZzZXQgJiYgZW5kT2Zmc2V0
ID09IG90aGVyLmVuZE9mZnNldCAmJiB0eXBlID09IG90aGVyLnR5cGUgJiYgbWFya2VyID09IG90
aGVyLm1hcmtlcjsKKyAgICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0ID09IG90aGVyLnN0YXJ0T2Zm
c2V0ICYmIGVuZE9mZnNldCA9PSBvdGhlci5lbmRPZmZzZXQgJiYgdHlwZSA9PSBvdGhlci50eXBl
ICYmIG1hcmtlciA9PSBvdGhlci5tYXJrZXIgJiYgaGlnaGxpZ2h0TmFtZSA9PSBvdGhlci5oaWdo
bGlnaHROYW1lOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Nl
bGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXggYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNmNGU4MTFj
M2VhMWI5M2ZjMi4uZDc5NTE3OTkzYmQ2MDA0Y2I2NGRlZWQ2NzdkN2NkNWYzY2M5ZWI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAg
LTE1NCwxMCArMTU0LDQ3IEBAIFNlbGVjdGlvblJhbmdlRGF0YTo6U2VsZWN0aW9uUmFuZ2VEYXRh
KFJlbmRlclZpZXcmIHZpZXcpCiB7CiB9CiAKK3ZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjpzZXRD
b250ZXh0KGNvbnN0IENvbnRleHQmIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQuc3Rh
cnQoKSAmJiBjb250ZXh0LmVuZCgpKTsKKyAgICBtX3NlbGVjdGlvbkNvbnRleHQgPSBjb250ZXh0
OworfQorCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIFNlbGVjdGlvblJhbmdlRGF0YTo6
c2VsZWN0aW9uU3RhdGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQoreworICAg
IC8vIEZJWE1FOiB3ZSBzaG91bGRsbid0IGhhdmUgdG8gY2hlY2sgdGhhdCBhIHJlbmRlcmVyIGlz
IGEgZGVzY2VuZGFudCBvZiB0aGUgcmVuZGVyIG5vZGUKKyAgICAvLyBmcm9tIHRoZSByYW5nZS4g
VGhpcyBpcyBsaWtlbHkgYmVjYXVzZSB3ZSBhcmVuJ3QgdXNpbmcgVmlzaWJsZVBvc2l0aW9ucyB5
ZXQuCisgICAgLy8gUGxhbm5lZCBmaXggaW4gYSBmb2xsb3d1cDogPHJkYXI6Ly9wcm9ibGVtLzU4
MDk1OTIzPgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU1MjkKKyAgICAKKyAgICBpZiAoJnJlbmRlcmVyID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFy
dCgpIHx8IHJlbmRlcmVyLmlzRGVzY2VuZGFudE9mKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgp
KSkgeworICAgICAgICBpZiAobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgJiYgbV9zZWxlY3Rp
b25Db250ZXh0LmVuZCgpICYmIG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpID09IG1fc2VsZWN0
aW9uQ29udGV4dC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvbkJvdGg7CisgICAgICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0OworICAgIH0KKyAgICBp
ZiAoJnJlbmRlcmVyID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSB8fCByZW5kZXJlci5pc0Rl
c2NlbmRhbnRPZihtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpKQorICAgICAgICByZXR1cm4gUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQ7CisKKyAgICBSZW5kZXJPYmplY3QqIHNlbGVjdGlvbkVu
ZCA9IG51bGxwdHI7CisgICAgYXV0byogc2VsZWN0aW9uRGF0YUVuZCA9IG1fc2VsZWN0aW9uQ29u
dGV4dC5lbmQoKTsKKyAgICBpZiAoc2VsZWN0aW9uRGF0YUVuZCkKKyAgICAgICAgc2VsZWN0aW9u
RW5kID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKCpzZWxlY3Rpb25EYXRhRW5kLCBtX3NlbGVjdGlv
bkNvbnRleHQuZW5kUG9zaXRpb24oKS52YWx1ZSgpKTsKKyAgICBTZWxlY3Rpb25JdGVyYXRvciBz
ZWxlY3Rpb25JdGVyYXRvcihtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSk7CisgICAgZm9yIChh
dXRvKiBjdXJyZW50UmVuZGVyZXIgPSBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKTsgY3VycmVu
dFJlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCk7
IGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgeworICAgICAgICBp
ZiAoY3VycmVudFJlbmRlcmVyID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpIHx8IGN1cnJl
bnRSZW5kZXJlciA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgaWYgKCFjdXJyZW50UmVuZGVyZXItPmNhbkJlU2VsZWN0aW9uTGVhZigp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgmcmVuZGVyZXIgPT0gY3VycmVu
dFJlbmRlcmVyKQorICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5z
aWRlOworICAgIH0KKyAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lOworICAg
IAorfQorCiB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6c2V0KGNvbnN0IENvbnRleHQmIHNlbGVj
dGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKIHsKLSAgICAvLyBNYWtlIHN1cmUg
Ym90aCBvdXIgc3RhcnQgYW5kIGVuZCBvYmplY3RzIGFyZSBkZWZpbmVkLgotICAgIC8vIENoZWNr
IHd3dy5tc25iYy5jb20gYW5kIHRyeSBjbGlja2luZyBhcm91bmQgdG8gZmluZCB0aGUgY2FzZSB3
aGVyZSB0aGlzIGhhcHBlbmVkLgogICAgIGlmICgoc2VsZWN0aW9uLnN0YXJ0KCkgJiYgIXNlbGVj
dGlvbi5lbmQoKSkgfHwgKHNlbGVjdGlvbi5lbmQoKSAmJiAhc2VsZWN0aW9uLnN0YXJ0KCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgLy8gSnVzdCByZXR1cm4gaWYgdGhlIHNlbGVjdGlvbiBoYXNu
J3QgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rp
b25SYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURh
dGEuaAppbmRleCA4OWFlYmU3NDYxODRmZTNlZjU0ZDU4ZmM1NzAxMmZhZDAzNTkxZmM4Li40NGY5
MWNjYmM2M2MzODg5MmIyY2IyMWQ5Y2Q3MGIzYTViNjFkOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCkBAIC03MSw3ICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhcnRQb3NpdGlvbjsKICAgICAgICAg
T3B0aW9uYWw8dW5zaWduZWQ+IG1fZW5kUG9zaXRpb247CiAgICAgfTsKLQorICAgIAorICAgIHZv
aWQgc2V0Q29udGV4dChjb25zdCBDb250ZXh0Jik7CisgICAgCiAgICAgZW51bSBjbGFzcyBSZXBh
aW50TW9kZSB7IE5ld1hPUk9sZCwgTmV3TWludXNPbGQsIE5vdGhpbmcgfTsKICAgICB2b2lkIHNl
dChjb25zdCBDb250ZXh0JiwgUmVwYWludE1vZGUgPSBSZXBhaW50TW9kZTo6TmV3WE9ST2xkKTsK
ICAgICBjb25zdCBDb250ZXh0JiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkNvbnRl
eHQ7IH0KQEAgLTg2LDYgKzg4LDggQEAgcHVibGljOgogICAgIEludFJlY3QgYm91bmRzKCkgY29u
c3QgeyByZXR1cm4gY29sbGVjdEJvdW5kcyhDbGlwVG9WaXNpYmxlQ29udGVudDo6Tm8pOyB9CiAg
ICAgSW50UmVjdCBib3VuZHNDbGlwcGVkVG9WaXNpYmxlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IGNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcyk7IH0KICAgICB2b2lkIHJl
cGFpbnQoKSBjb25zdDsKKyAgICAKKyAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNl
bGVjdGlvblN0YXRlRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0Jik7CiAKIHByaXZhdGU6CiAgICAg
ZW51bSBjbGFzcyBDbGlwVG9WaXNpYmxlQ29udGVudCB7IFllcywgTm8gfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNWExOGU0N2U1ODIwZjg3
MTM3YmI5MzAyYzFkOWYxNTA1ZjRiNTRmLi5lMTQwNTQxZmMwMDg4OGMyOTliNThjYzYxZmZhYTQw
NWU2ZGFlNzMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTItMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9n
YXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBQYWludCBoaWdobGlnaHRzIHNwZWNpZmllZCBp
biBDU1MgSGlnaGxpZ2h0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1MzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgIEV4cGFuZCBNYXJrZWRUZXh0IHRvIHRha2UgYSBzdHlsZSBuYW1lLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisKIDIwMTktMTItMjAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgQ3VzdG9tIFVzZXIgQWdlbnQg
bWVudSB0byBNaW5pQnJvd3NlciwgYW5kIHJlbGF0ZWQgY2xlYW51cApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwCmluZGV4IDVhMTYyYzYwZWM5
NmYwZGMyYWZhMDY4MGUzYzFkODNkMGRiZmU4MGYuLjA2ODFjYWI0MzY3YzUyMzZhOWI1NjQyOGFk
NmYxMDc0NWJhOTE3ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9NYXJrZWRUZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvTWFya2VkVGV4dC5jcHAKQEAgLTU1LDYgKzU1LDggQEAgc3RkOjpvc3RyZWFtJiBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYgb3MsIE1hcmtlZFRleHQ6OlR5cGUgdHlwZSkKICAgICAgICAgcmV0
dXJuIG9zIDw8ICJTcGVsbGluZ0Vycm9yIjsKICAgICBjYXNlIE1hcmtlZFRleHQ6OlRleHRNYXRj
aDoKICAgICAgICAgcmV0dXJuIG9zIDw8ICJUZXh0TWF0Y2giOworICAgIGNhc2UgTWFya2VkVGV4
dDo6SGlnaGxpZ2h0OgorICAgICAgICByZXR1cm4gb3MgPDwgIkhpZ2hsaWdodCI7CiAgICAgY2Fz
ZSBNYXJrZWRUZXh0OjpVbm1hcmtlZDoKICAgICAgICAgcmV0dXJuIG9zIDw8ICJVbm1hcmtlZCI7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYzRjMDcxMWVmYjVlNGRl
M2EzMjRkZGY2Mjc3Zjg0MDEwZWZkZGIwZi4uMTM1ODRmZWUyNjYxZDNmMjIzNTczNTU1NTU2M2M2
OTk1MmY3ZDQ5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTktMTItMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBQYWludCBoaWdobGlnaHRzIHNwZWNpZmllZCBpbiBDU1MgSGlnaGxpZ2h0IEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzE4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3Mt
ZWxlbWVudHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaGlnaGxp
Z2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0
bWw6IEFkZGVkLgorCiAyMDE5LTEyLTIwICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MzgzMS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWstZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUzM2Q5MWQ3OTBlM2QzZGI2ZWU3NGRmMjM5ZGI1ZWM5NDc1OGM2YjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxk
LWxlYWstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgdXNpbmcgSGln
aGxpZ2h0IGRvZXMgbm90IGNhdXNlIHRoZSBkb2N1bWVudCB0byBnZXQgbGVha2VkLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBEb2N1bWVudCBkaWQgbm90IGxlYWsKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWsuaHRtbCBiL0xh
eW91dFRlc3RzL2hpZ2hsaWdodC9oaWdobGlnaHQtd29ybGQtbGVhay5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU0ZTQ0NjI5NGMzMWRkOTkwNzM0NmMwZWFjMTVlNDM3ODliZjdmYjcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9oaWdobGlnaHQvaGlnaGxpZ2h0LXdvcmxkLWxlYWsuaHRtbApAQCAt
MCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIGlk
PSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2hpZ2hsaWdodC1mcmFtZS5odG1sIj48L2lmcmFt
ZT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHVzaW5nIEhpZ2hsaWdodCBkb2VzIG5v
dCBjYXVzZSB0aGUgZG9jdW1lbnQgdG8gZ2V0IGxlYWtlZC4iKTsKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gZG9jdW1lbnRTaG91bGREaWUoZG9jdW1lbnRJZGVudGlm
aWVyKQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3Qp
IHsKKyAgICAgICAgaGFuZGxlID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBnYygpOworICAgICAgICAgICAgaWYgKGludGVybmFscyAmJiAhaW50ZXJuYWxzLmlzRG9jdW1l
bnRBbGl2ZShkb2N1bWVudElkZW50aWZpZXIpKSB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChoYW5kbGUpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwgMTApOworICAgIH0pOworfQorCit2YXIgdGVzdEZyYW1lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOwordGVzdEZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9u
KCkgeworICAgIGxldCBmcmFtZURvY3VtZW50SWRlbnRpZmllciA9IGludGVybmFscy5kb2N1bWVu
dElkZW50aWZpZXIodGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudCk7CisgICAgdGVzdEZyYW1lLnJl
bW92ZSgpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGRvY3VtZW50U2hv
dWxkRGllKGZyYW1lRG9jdW1lbnRJZGVudGlmaWVyKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiRG9jdW1lbnQgZGlkIG5vdCBsZWFrIik7CisgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9OworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9oaWdobGlnaHQvcmVzb3VyY2VzL2hp
Z2hsaWdodC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaGlnaGxpZ2h0L3Jlc291cmNlcy9oaWdo
bGlnaHQtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjdkYWY0MzBlMmFhN2YyNWIzY2E5M2FiZDlk
Y2FjNWFhNmY5ODk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaGlnaGxpZ2h0L3Jl
c291cmNlcy9oaWdobGlnaHQtZnJhbWUuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxoZWFkPgorCTxzdHlsZT4KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlKSB7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAg
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxkaXYgaWQ9InRhcmdldCI+CisJPHNwYW4gaWQ9ImhpZ2hs
aWdodCI+aGlnaGxpZ2h0PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQ+CitsZXQgaGlnaGxpZ2h0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZ2hsaWdodCcpOworbGV0IGhpZ2hsaWdodFJh
bmdlR3JvdXAgPSBuZXcgSGlnaGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0
Q29udGFpbmVyOiBoaWdobGlnaHQsIHN0YXJ0T2Zmc2V0OiAwLCBlbmRDb250YWluZXI6IGhpZ2hs
aWdodCwgZW5kT2Zmc2V0OiA0fSkpOworQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlIiwgaGln
aGxpZ2h0UmFuZ2VHcm91cCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVu
dHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nzcy9jc3MtaGlnaGxpZ2h0
LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NmQxZTJjYTE0NmVmMzNiN2Q0NGQ1NzhiOWNkNzA5NzVjMDVmZTY0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hs
aWdodC10ZXh0LWFjcm9zcy1lbGVtZW50cy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgI3N0eWxl
MSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3Jl
ZW47CisgICAgfQorICAgICNzdHlsZTIgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgICNzdHlsZTMgeworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBwdXJwbGU7CisgICAgICAgIGNvbG9yOnBpbms7CisgICAgfQorICAgIDwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICBPbmUgPHNwYW4gaWQ9InN0eWxlMSI+dHdvPC9z
cGFuPiB0aDxzcGFuIGlkPSJzdHlsZTIiPnJlZQorICAgIGZvdXI8L3NwYW4+IGZpdmUgPHNwYW4g
aWQ9InN0eWxlMiI+c2l4CisgICAgc2V2ZW48L3NwYW4+IGVpZ2g8c3BhbiBpZD0ic3R5bGUzIj50
IG5pbmUKKyAgICB0ZW4gZWxldmVuIHR3ZWx2ZQorICAgIHRoaXJ0ZWVuIGZvdTwvc3Bhbj5ydGVl
biBmaWZ0ZWVuCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtYWNyb3NzLWVsZW1lbnRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxp
Z2h0LXRleHQtYWNyb3NzLWVsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIwMmM5OTgxYmMzYTEx
OTljNWI0NTVhMWQyNjczMmUzYmIzNzVmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1hY3Jvc3MtZWxl
bWVudHMuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPHRpdGxlPkN1c3RvbSBoaWdobGlnaHQg
cHNldWRvIGVsZW1lbnRzIGFjcm9zcyBlbGVtZW50cy48L3RpdGxlPgorICA8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtaGlnaGxpZ2h0LWFwaS0xLyNw
YWludGluZyI+CisgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10ZXh0LWV4cGVj
dGVkLmh0bWwiPgorICA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkhpZ2hsaWdodHMgc2hv
dWxkIGJlIGFibGUgdG8gYmUgc3BlY2lmaWVkIGFjcm9zcyBlbGVtZW50cy4iPgorICAgIDxzdHls
ZT4KKyAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDEpIHsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICBjb2xvcjpncmVlbjsKKyAgICB9CisgICAgOjpo
aWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQyKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6
IGJsdWU7CisgICAgICAgIGNvbG9yOnJlZDsKKyAgICB9CisgICAgOjpoaWdobGlnaHQoZXhhbXBs
ZS1oaWdobGlnaHQzKSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsKKyAgICAg
ICAgY29sb3I6cGluazsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAg
IDxzcGFuIGlkPSJ0ZXh0MSI+T25lIHR3byB0aHJlZTwvc3Bhbj4KKyAgICA8c3BhbiBpZD0idGV4
dDIiPmZvdXIgZml2ZSBzaXg8L3NwYW4+CisgICAgPHNwYW4gaWQ9InRleHQzIj5zZXZlbiBlaWdo
dCBuaW5lPC9zcGFuPgorICAgIDxzcGFuIGlkPSJ0ZXh0NCI+dGVuIGVsZXZlbiB0d2VsdmU8L3Nw
YW4+CisgICAgPHNwYW4gaWQ9InRleHQ1Ij50aGlydGVlbiBmb3VydGVlbiBmaWZ0ZWVuPC9zcGFu
PgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgbGV0IHRleHRFbGVtZW50MSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0ZXh0MScpOworICAgICAgICBsZXQgdGV4dEVsZW1lbnQyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQyJyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDMnKTsKKyAgICAgICAgbGV0IHRleHRFbGVtZW50
NCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0NCcpOworICAgICAgICBsZXQgdGV4dEVs
ZW1lbnQ1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQ1Jyk7CisgICAgICAgIGxldCBo
aWdobGlnaHRSYW5nZUdyb3VwMSA9IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNS
YW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50MSwgc3RhcnRPZmZzZXQ6IDQsIGVuZENv
bnRhaW5lcjogdGV4dEVsZW1lbnQxLCBlbmRPZmZzZXQ6IDd9KSk7CisKKyAgICAgICAgbGV0IGhp
Z2hsaWdodFJhbmdlR3JvdXAyID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1Jh
bmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQxLCBzdGFydE9mZnNldDogMTAsIGVuZENv
bnRhaW5lcjogdGV4dEVsZW1lbnQyLCBlbmRPZmZzZXQ6IDR9KSk7CisgICAgICAgIGhpZ2hsaWdo
dFJhbmdlR3JvdXAyLmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxl
bWVudDIsIHN0YXJ0T2Zmc2V0OiAxMCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDMsIGVuZE9m
ZnNldDogNX0pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDMgPSBuZXcgSGln
aGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxl
bWVudDMsIHN0YXJ0T2Zmc2V0OiAxMCwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudDUsIGVuZE9m
ZnNldDogMTJ9KSk7CisKKyAgICAgICAgQ1NTLmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hs
aWdodDEiLCBoaWdobGlnaHRSYW5nZUdyb3VwMSk7CisgICAgICAgIENTUy5oaWdobGlnaHRzLnNl
dCgiZXhhbXBsZS1oaWdobGlnaHQyIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDIpOworICAgICAgICBD
U1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0MyIsIGhpZ2hsaWdodFJhbmdlR3Jv
dXAzKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNj
YWRlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3NzLWhpZ2hsaWdo
dC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQx
NDI3YTI4MGI4OGQ4MjY4MWVkMzk5OWY3NDE4YTRjM2M5YjQ1OTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRl
eHQtY2FzY2FkZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgI3N0eWxlMSB7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgY29sb3I6Z3JlZW47CisgICAgfQorICAg
ICNzdHlsZTIgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBjb2xv
cjpyZWQ7CisgICAgfQorICAgICNzdHlsZTMgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBw
dXJwbGU7CisgICAgICAgIGNvbG9yOnBpbms7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJvdXQiPjxzcGFuIGlkPSJ0ZXh0MSI+PHNwYW4gaWQ9InN0
eWxlMSI+T25lPC9zcGFuPiB0d28gdGhyZWU8L3NwYW4+PC9kaXY+CisgICAgPGRpdiBpZD0ic2Nv
cGVkIj48c3BhbiBpZD0idGV4dDIiPmZvdXIgPHNwYW4gaWQ9InN0eWxlMiI+Zml2ZTwvc3Bhbj4g
c2l4PC9zcGFuPjwvZGl2PgorICAgIDxzcGFuIGlkPSJ0ZXh0MyI+c2V2ZW4gZWlnaHQgbmluZTwv
c3Bhbj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1jYXNjYWRlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2Fz
Y2FkZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MzRhYjUzMTM3NzhmYTM0NjkzNWYwNmQ4NThkMmUzM2Vi
MGRkMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3NzLWhp
Z2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtY2FzY2FkZS5odG1sCkBAIC0wLDAgKzEsMzUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+CisgICAgPHRpdGxlPk11bHRpcGxlIGN1c3RvbSBoaWdobGlnaHQgcHNldWRvIGVsZW1lbnRz
LjwvdGl0bGU+CisgICAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLWhpZ2hsaWdodC1hcGktMS8jY3JlYXRpbmctaGlnaGxpZ2h0cyI+CisgICAgPGxp
bmsgcmVsPSJtYXRjaCIgaHJlZj0iaGlnaGxpZ2h0LXRleHQtZXhwZWN0ZWQuaHRtbCI+CisgICAg
PG1ldGFkIG5hbWU9ImFzc2VydCIgY29udGVudD0iTXVsdGlwbGUgaGlnaGxpZ2h0cyBzaG91bGQg
YmUgYWJsZSB0byBiZSBzcGVjaWZpZWQuIj4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAjb3V0
OjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQpIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IHllbGxvdzsKKyAgICAgICAgICAgIGNvbG9yOmdyZWVuOworICAgICAgICB9CisgICAg
ICAgICNzY29wZWQ6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodCkgeworICAgICAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgICAgIGNvbG9yOnJlZDsKKyAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0ib3V0Ij48
c3BhbiBpZD0idGV4dDEiPk9uZSB0d28gdGhyZWU8L3NwYW4+PC9kaXY+CisgICAgPGRpdiBpZD0i
c2NvcGVkIj48c3BhbiBpZD0idGV4dDIiPmZvdXIgZml2ZSBzaXg8L3NwYW4+PC9kaXY+CisgICAg
PHNwYW4gaWQ9InRleHQzIj5zZXZlbiBlaWdodCBuaW5lPC9zcGFuPgorCisgICAgPHNjcmlwdD4K
KyAgICAgICAgbGV0IHRleHRFbGVtZW50MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0
MScpOworICAgICAgICBsZXQgdGV4dEVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RleHQyJyk7CisgICAgICAgIGxldCB0ZXh0RWxlbWVudDMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGV4dDMnKTsKKyAgICAgICAgbGV0IGhpZ2hsaWdodFJhbmdlR3JvdXAgPSBuZXcgSGln
aGxpZ2h0UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxl
bWVudDEsIHN0YXJ0T2Zmc2V0OiAwLCBlbmRDb250YWluZXI6IHRleHRFbGVtZW50MSwgZW5kT2Zm
c2V0OiAzfSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwLmFkZChuZXcgU3RhdGljUmFu
Z2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudDIsIHN0YXJ0T2Zmc2V0OiA1LCBlbmRDb250
YWluZXI6IHRleHRFbGVtZW50MiwgZW5kT2Zmc2V0OiA5fSkpOworCisgICAgICAgIENTUy5oaWdo
bGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGlnaHQiLCBoaWdobGlnaHRSYW5nZUdyb3VwKTsKKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10
ZXh0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlYTA1NDQ3NDNlNTQ3ZTBkNDM5NDI5NTM3
ZDQyYjNlMzQ1MWI4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nz
cy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+Cisg
ICAgI3N0eWxlMSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAg
Y29sb3I6Z3JlZW47CisgICAgfQorICAgICNzdHlsZTIgeworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOworICAgICAgICBjb2xvcjpyZWQ7CisgICAgfQorICAgICNzdHlsZTMgeworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7CisgICAgICAgIGNvbG9yOnBpbms7CisgICAg
fQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICBPPHNwYW4gaWQ9InN0eWxlMSI+
bjwvc3Bhbj5lPHNwYW4gaWQ9InN0eWxlMiI+IDwvc3Bhbj50PHNwYW4gaWQ9InN0eWxlMiI+dzwv
c3Bhbj5vPHNwYW4gaWQ9InN0eWxlMyI+IDwvc3Bhbj50PHNwYW4gaWQ9InN0eWxlMyI+aDwvc3Bh
bj5yZTxzcGFuIGlkPSJzdHlsZTMiPmU8L3NwYW4+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0
LXRleHQtcmVwbGFjZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nz
cy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2UtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNTUwM2YzMGI5ZTM1OGZiOTdkNmI0MTBhMTI4NjQzNjg0OWNhZGU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hp
Z2hsaWdodC10ZXh0LXJlcGxhY2UtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICNoaWdobGlnaHQg
eworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIGNvbG9yOmdyZWVu
OworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgT25lPHNwYW4gaWQ9
ImhpZ2hsaWdodCI+IDwvc3Bhbj50PHNwYW4gaWQ9ImhpZ2hsaWdodCI+dzwvc3Bhbj5vIHRocmVl
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3Mv
Y3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtcmVwbGFjZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2Uu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xN2FjMWQ2ZGQwMmY5YzVjYTlkOTI0OTBmNzdmNGNhYTA2NWZkZTQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzcy1oaWdobGln
aHQtYXBpL2hpZ2hsaWdodC10ZXh0LXJlcGxhY2UuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICAgIDx0aXRsZT5NdWx0aXBsZSBjdXN0b20gaGlnaGxpZ2h0IHBzZXVkbyBlbGVtZW50cy48L3Rp
dGxlPgorICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1oaWdobGlnaHQtYXBpLTEvI2NyZWF0aW5nLWhpZ2hsaWdodHMiPgorICAgIDxsaW5rIHJl
bD0ibWF0Y2giIGhyZWY9ImhpZ2hsaWdodC10ZXh0LWV4cGVjdGVkLmh0bWwiPgorICAgIDxtZXRh
IG5hbWU9ImFzc2VydCIgY29udGVudD0iTXVsdGlwbGUgaGlnaGxpZ2h0cyBzaG91bGQgYmUgYWJs
ZSB0byBiZSBzcGVjaWZpZWQuIj4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICA6OmhpZ2hsaWdo
dChleGFtcGxlLWhpZ2hsaWdodCkgeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVs
bG93OworICAgICAgICAgICAgY29sb3I6Z3JlZW47CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgICAgPHNwYW4gaWQ9InRleHQxIj5PbmUgdHdvIHRocmVlPC9zcGFu
PgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgbGV0IHRleHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RleHQxJyk7CisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMSA9
IG5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6
IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogMSwgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwg
ZW5kT2Zmc2V0OiAyfSkpOworCisgICAgICAgIGxldCBoaWdobGlnaHRSYW5nZUdyb3VwMiA9IG5l
dyBIaWdobGlnaHRSYW5nZUdyb3VwKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRl
eHRFbGVtZW50LCBzdGFydE9mZnNldDogMywgZW5kQ29udGFpbmVyOiB0ZXh0RWxlbWVudCwgZW5k
T2Zmc2V0OiA0fSkpOworICAgICAgICBoaWdobGlnaHRSYW5nZUdyb3VwMi5hZGQobmV3IFN0YXRp
Y1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiA1LCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDZ9KSk7ICAgICAgICAKKworICAgICAg
ICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0IiwgaGlnaGxpZ2h0UmFuZ2VH
cm91cDEpOworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQoImV4YW1wbGUtaGlnaGxpZ2h0Iiwg
aGlnaGxpZ2h0UmFuZ2VHcm91cDIpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hp
Z2hsaWdodC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3NzLWhpZ2hsaWdo
dC1hcGkvaGlnaGxpZ2h0LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmE1YTdhNzQxODFkZGE2ZTMw
YjdhMjMzNGEwZTFjNWZlMThkZTFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hsaWdodC10ZXh0Lmh0bWwKQEAgLTAsMCAr
MSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+TXVsdGlwbGUgY3VzdG9tIGhpZ2hsaWdodCBwc2V1ZG8g
ZWxlbWVudHMuPC90aXRsZT4KKyAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3MtaGlnaGxpZ2h0LWFwaS0xLyNjcmVhdGluZy1oaWdobGlnaHRzIj4K
KyAgICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJoaWdobGlnaHQtdGV4dC1leHBlY3RlZC5odG1s
Ij4KKyAgICA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik11bHRpcGxlIGhpZ2hsaWdodHMg
c2hvdWxkIGJlIGFibGUgdG8gYmUgc3BlY2lmaWVkLiI+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQxKSB7CisgICAgICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgICAgICBjb2xvcjpncmVlbjsKKyAgICAgICAgfQor
ICAgICAgICA6OmhpZ2hsaWdodChleGFtcGxlLWhpZ2hsaWdodDIpIHsKKyAgICAgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgICAgICBjb2xvcjpyZWQ7CisgICAgICAgIH0K
KyAgICAgICAgOjpoaWdobGlnaHQoZXhhbXBsZS1oaWdobGlnaHQzKSB7CisgICAgICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7CisgICAgICAgICAgICBjb2xvcjpwaW5rOworICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3BhbiBpZD0idGV4
dDEiPk9uZSB0d28gdGhyZWU8L3NwYW4+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBsZXQgdGV4
dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDEnKTsKKyAgICAgICAgbGV0
IGhpZ2hsaWdodFJhbmdlR3JvdXAxID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRp
Y1JhbmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiAxLCBlbmRD
b250YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDJ9KSk7CisKKyAgICAgICAgbGV0IGhp
Z2hsaWdodFJhbmdlR3JvdXAyID0gbmV3IEhpZ2hsaWdodFJhbmdlR3JvdXAobmV3IFN0YXRpY1Jh
bmdlKHtzdGFydENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIHN0YXJ0T2Zmc2V0OiAzLCBlbmRDb250
YWluZXI6IHRleHRFbGVtZW50LCBlbmRPZmZzZXQ6IDR9KSk7CisgICAgICAgIGhpZ2hsaWdodFJh
bmdlR3JvdXAyLmFkZChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVu
dCwgc3RhcnRPZmZzZXQ6IDUsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDog
Nn0pKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0UmFuZ2VHcm91cDMgPSBuZXcgSGlnaGxpZ2h0
UmFuZ2VHcm91cChuZXcgU3RhdGljUmFuZ2Uoe3N0YXJ0Q29udGFpbmVyOiB0ZXh0RWxlbWVudCwg
c3RhcnRPZmZzZXQ6IDcsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogOH0p
KTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91cDMuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3Rh
cnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFydE9mZnNldDogOSwgZW5kQ29udGFpbmVyOiB0
ZXh0RWxlbWVudCwgZW5kT2Zmc2V0OiAxMH0pKTsKKyAgICAgICAgaGlnaGxpZ2h0UmFuZ2VHcm91
cDMuYWRkKG5ldyBTdGF0aWNSYW5nZSh7c3RhcnRDb250YWluZXI6IHRleHRFbGVtZW50LCBzdGFy
dE9mZnNldDogMTIsIGVuZENvbnRhaW5lcjogdGV4dEVsZW1lbnQsIGVuZE9mZnNldDogMTN9KSk7
CisgICAgICAgIAorCisgICAgICAgIENTUy5oaWdobGlnaHRzLnNldCgiZXhhbXBsZS1oaWdobGln
aHQxIiwgaGlnaGxpZ2h0UmFuZ2VHcm91cDEpOworICAgICAgICBDU1MuaGlnaGxpZ2h0cy5zZXQo
ImV4YW1wbGUtaGlnaGxpZ2h0MiIsIGhpZ2hsaWdodFJhbmdlR3JvdXAyKTsKKyAgICAgICAgQ1NT
LmhpZ2hsaWdodHMuc2V0KCJleGFtcGxlLWhpZ2hsaWdodDMiLCBoaWdobGlnaHRSYW5nZUdyb3Vw
Myk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>