<?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>231914</bug_id>
          
          <creation_ts>2021-10-18 15:51:12 -0700</creation_ts>
          <short_desc>AX: Any addition of children should funnel through AccessibilityObject::addChild</short_desc>
          <delta_ts>2021-10-24 10:14:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>ayumi_kojima</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1805747</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-18 15:51:12 -0700</bug_when>
    <thetext>Centralizing this logic in one place unlocks the ability to reliably set child state based on parent state (e.g. &quot;Do I have any ancestors with a subrole of document?&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805748</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-18 15:51:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/84391370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805822</commentid>
    <comment_count>2</comment_count>
      <attachid>441670</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-18 18:38:58 -0700</bug_when>
    <thetext>Created attachment 441670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805834</commentid>
    <comment_count>3</comment_count>
      <attachid>441675</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-18 19:18:50 -0700</bug_when>
    <thetext>Created attachment 441675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805999</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-19 07:56:18 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #3)
&gt; Created attachment 441675 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityObject.cpp
+++ a/Source/WebCore/accessibility/AccessibilityObject.cpp

-        ASSERT(child-&gt;parentObject() == this);
+#ifndef NDEBUG
+        // Autofill buttons are dynamically created elements by WebKit, and aren&apos;t assigned as a child
+        // to their proper DOM parent (see TextFieldInputType::createAutoFillButton), so exclude them from this ASSERT.
+        // Table component child-parent relationships also often doesn&apos;t line up properly, hence the need for methods
+        // like parentTable() and parentRow(). Exclude them from this ASSERT too.
+        if (!isAutofillButton(*this) &amp;&amp; !isTableComponent(*child) &amp;&amp; !isTableComponent(*this))
+            ASSERT(child-&gt;parentObject() == this);
+#endif

I&apos;m not convinced we should special case this sanity check. The child-parent relationship of the corresponding DOM elements may not match the AX hierarchy, but the AX hierarchy should be consistent with itself in all cases. I.e., if we expose child as a child of parent, then child-&gt;parentObject() should be parent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806001</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-19 07:58:32 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #4)
&gt; (In reply to Tyler Wilcock from comment #3)
&gt; &gt; Created attachment 441675 [details]
&gt; &gt; Patch
&gt; 
&gt; --- a/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt; +++ a/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt; 
&gt; -        ASSERT(child-&gt;parentObject() == this);
&gt; +#ifndef NDEBUG
&gt; +        // Autofill buttons are dynamically created elements by WebKit, and
&gt; aren&apos;t assigned as a child
&gt; +        // to their proper DOM parent (see
&gt; TextFieldInputType::createAutoFillButton), so exclude them from this ASSERT.
&gt; +        // Table component child-parent relationships also often doesn&apos;t
&gt; line up properly, hence the need for methods
&gt; +        // like parentTable() and parentRow(). Exclude them from this
&gt; ASSERT too.
&gt; +        if (!isAutofillButton(*this) &amp;&amp; !isTableComponent(*child) &amp;&amp;
&gt; !isTableComponent(*this))
&gt; +            ASSERT(child-&gt;parentObject() == this);
&gt; +#endif
&gt; 
&gt; I&apos;m not convinced we should special case this sanity check. The child-parent
&gt; relationship of the corresponding DOM elements may not match the AX
&gt; hierarchy, but the AX hierarchy should be consistent with itself in all
&gt; cases. I.e., if we expose child as a child of parent, then
&gt; child-&gt;parentObject() should be parent.

Perhaps part of the problem is that parentObject() is returning the parent based on the DOM hierarchy and not on the AX hierarchy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806006</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-19 08:07:53 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #3)
&gt; Created attachment 441675 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

-    if (HTMLElement* autoFillElement = input.autoFillButtonElement()) {
-        if (AccessibilityObject* axAutoFill = axObjectCache()-&gt;getOrCreate(autoFillElement))
-            m_children.append(axAutoFill);
-    }
+    if (HTMLElement* autoFillElement = input.autoFillButtonElement())

if (auto* autoFillElement = input.autoFillButtonElement())

+        addChild(axObjectCache()-&gt;getOrCreate(autoFillElement));

We were checking for nullity of axObjectCache() before. I wouldn&apos;t remove that check yet, until we solidify the life times of the objects respect to the cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806009</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-19 08:14:02 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #3)
&gt; Created attachment 441675 [details]
&gt; Patch

@@ -3381,12 +3379,7 @@ void AccessibilityRenderObject::addRemoteSVGChildren()
     // In order to connect the AX hierarchy from the SVG root element from the loaded resource
     // the parent must be set, because there&apos;s no other way to get back to who created the image.
     root-&gt;setParent(this);
-
-    if (root-&gt;accessibilityIsIgnored()) {
-        for (const auto&amp; child : root-&gt;children())
-            m_children.append(child);
-    } else
-        m_children.append(root);
+    addChild(root);

addChild would need to do the same type of deep append, i.e., if the root is ignored, try to add its children.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806014</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-19 08:22:24 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #3)
&gt; Created attachment 441675 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityTable.cpp
+++ a/Source/WebCore/accessibility/AccessibilityTable.cpp

+            // While `addChild` won&apos;t insert ignored children, we still need this accessibilityIsIgnored
+            // check so that `addChild` doesn&apos;t try to add the caption&apos;s children in its stead. Basically,
+            // explicitly checking accessibilityIsIgnored() ignores the caption and any of its children.
             if (axCaption &amp;&amp; !axCaption-&gt;accessibilityIsIgnored())
-                m_children.append(axCaption);
+                addChild(axCaption);

Considering this and the SVG case, perhaps it is cleaner to add a bool recursive param to addChild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806021</commentid>
    <comment_count>9</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-19 08:29:05 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #5)
&gt; (In reply to Andres Gonzalez from comment #4)
&gt; &gt; (In reply to Tyler Wilcock from comment #3)
&gt; &gt; &gt; Created attachment 441675 [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; --- a/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt; &gt; +++ a/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt; &gt; 
&gt; &gt; -        ASSERT(child-&gt;parentObject() == this);
&gt; &gt; +#ifndef NDEBUG
&gt; &gt; +        // Autofill buttons are dynamically created elements by WebKit, and
&gt; &gt; aren&apos;t assigned as a child
&gt; &gt; +        // to their proper DOM parent (see
&gt; &gt; TextFieldInputType::createAutoFillButton), so exclude them from this ASSERT.
&gt; &gt; +        // Table component child-parent relationships also often doesn&apos;t
&gt; &gt; line up properly, hence the need for methods
&gt; &gt; +        // like parentTable() and parentRow(). Exclude them from this
&gt; &gt; ASSERT too.
&gt; &gt; +        if (!isAutofillButton(*this) &amp;&amp; !isTableComponent(*child) &amp;&amp;
&gt; &gt; !isTableComponent(*this))
&gt; &gt; +            ASSERT(child-&gt;parentObject() == this);
&gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; I&apos;m not convinced we should special case this sanity check. The child-parent
&gt; &gt; relationship of the corresponding DOM elements may not match the AX
&gt; &gt; hierarchy, but the AX hierarchy should be consistent with itself in all
&gt; &gt; cases. I.e., if we expose child as a child of parent, then
&gt; &gt; child-&gt;parentObject() should be parent.
&gt; 
&gt; Perhaps part of the problem is that parentObject() is returning the parent
&gt; based on the DOM hierarchy and not on the AX hierarchy?

Yes, that&apos;s exactly the problem. This patch doesn&apos;t change any of these &quot;faulty&quot; relationships with autofill buttons and tables, just documents them more clearly in this assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806022</commentid>
    <comment_count>10</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-19 08:29:40 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #7)
&gt; (In reply to Tyler Wilcock from comment #3)
&gt; &gt; Created attachment 441675 [details]
&gt; &gt; Patch
&gt; 
&gt; @@ -3381,12 +3379,7 @@ void AccessibilityRenderObject::addRemoteSVGChildren()
&gt;      // In order to connect the AX hierarchy from the SVG root element from
&gt; the loaded resource
&gt;      // the parent must be set, because there&apos;s no other way to get back to
&gt; who created the image.
&gt;      root-&gt;setParent(this);
&gt; -
&gt; -    if (root-&gt;accessibilityIsIgnored()) {
&gt; -        for (const auto&amp; child : root-&gt;children())
&gt; -            m_children.append(child);
&gt; -    } else
&gt; -        m_children.append(root);
&gt; +    addChild(root);
&gt; 
&gt; addChild would need to do the same type of deep append, i.e., if the root is
&gt; ignored, try to add its children.

`AccessibilityObject::addChild` calls `AccessibilityObject::insertChild`, which does exactly this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806025</commentid>
    <comment_count>11</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-19 08:37:38 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #6)
&gt; (In reply to Tyler Wilcock from comment #3)
&gt; &gt; Created attachment 441675 [details]
&gt; &gt; Patch
&gt; 
&gt; --- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; +++ a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; 
&gt; -    if (HTMLElement* autoFillElement = input.autoFillButtonElement()) {
&gt; -        if (AccessibilityObject* axAutoFill =
&gt; axObjectCache()-&gt;getOrCreate(autoFillElement))
&gt; -            m_children.append(axAutoFill);
&gt; -    }
&gt; +    if (HTMLElement* autoFillElement = input.autoFillButtonElement())
&gt; 
&gt; if (auto* autoFillElement = input.autoFillButtonElement())
&gt; 
&gt; +        addChild(axObjectCache()-&gt;getOrCreate(autoFillElement));
&gt; 
&gt; We were checking for nullity of axObjectCache() before. I wouldn&apos;t remove
&gt; that check yet, until we solidify the life times of the objects respect to
&gt; the cache.

I might be mis-reading it, but I don&apos;t think the code before checked the nullity of the cache before dereferencing it.

Old:

if (HTMLElement* autoFillElement = input.autoFillButtonElement()) {
    if (AccessibilityObject* axAutoFill = axObjectCache()-&gt;getOrCreate(autoFillElement))
        m_children.append(axAutoFill);
}

New:

if (HTMLElement* autoFillElement = input.autoFillButtonElement())
    addChild(axObjectCache()-&gt;getOrCreate(autoFillElement));

If the new object the cache returns is null, `addChild` does nothing.

I can add a null check of the cache, though. Can also use an auto* here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806035</commentid>
    <comment_count>12</comment_count>
      <attachid>441675</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-10-19 08:54:26 -0700</bug_when>
    <thetext>Comment on attachment 441675
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:-518
&gt; -        ASSERT(child-&gt;parentObject() == this);

do we still want this parent object assert too?

&gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:155
&gt; +    if (ariaOwnedElements.size()) {

this size check seems unnecessary now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806111</commentid>
    <comment_count>13</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-19 10:08:29 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #12)
&gt; Comment on attachment 441675 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=441675&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:-518
&gt; &gt; -        ASSERT(child-&gt;parentObject() == this);
&gt; 
&gt; do we still want this parent object assert too?
Yeah, spoke to Andres and we think this ASSERT might not be that useful in its current form, since it is often verifying DOM parent-child relationship rather than AX tree parent-child relationships. There are several cases where DOM parent-child relationships are validly not how the AX tree is structured (i.e. aria-owns, tables, autofill buttons). I&apos;m just going to remove it.

&gt; &gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:155
&gt; &gt; +    if (ariaOwnedElements.size()) {
&gt; 
&gt; this size check seems unnecessary now
That would be a change in behavior from the current:

Either add &quot;aria-owns&quot; elements as m_children, _or_ AccessibilityRenderObject::addChildren() (aka DOM children) as m_children.

Your suggestion would be unconditionally adding both aria-owns children and DOM children to m_children.

Based on the definition of aria-owns (https://www.w3.org/TR/2017/REC-wai-aria-1.1-20171214/#aria-owns), your suggestion seems right.

&gt; If an element has both aria-owns and DOM children then the order of the child elements with respect to the parent/child relationship is the DOM children first, then the elements referenced in aria-owns.
But I think I&apos;d rather make that behavior change in a separate patch, since other classes do the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806126</commentid>
    <comment_count>14</comment_count>
      <attachid>441675</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-10-19 10:18:54 -0700</bug_when>
    <thetext>Comment on attachment 441675
Patch

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

&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:-518
&gt;&gt;&gt; -        ASSERT(child-&gt;parentObject() == this);
&gt;&gt; 
&gt;&gt; do we still want this parent object assert too?
&gt; 
&gt; Yeah, spoke to Andres and we think this ASSERT might not be that useful in its current form, since it is often verifying DOM parent-child relationship rather than AX tree parent-child relationships. There are several cases where DOM parent-child relationships are validly not how the AX tree is structured (i.e. aria-owns, tables, autofill buttons). I&apos;m just going to remove it.

I’ve seen this assert to be useful in the past when we mess up the parent child hierarchy for mock elements or other kinds of custom sub classes
Is it asserting now in your tests?

&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:155
&gt;&gt;&gt; +    if (ariaOwnedElements.size()) {
&gt;&gt; 
&gt;&gt; this size check seems unnecessary now
&gt; 
&gt; That would be a change in behavior from the current:
&gt; 
&gt; Either add &quot;aria-owns&quot; elements as m_children, _or_ AccessibilityRenderObject::addChildren() (aka DOM children) as m_children.
&gt; 
&gt; Your suggestion would be unconditionally adding both aria-owns children and DOM children to m_children.
&gt; 
&gt; Based on the definition of aria-owns (https://www.w3.org/TR/2017/REC-wai-aria-1.1-20171214/#aria-owns), your suggestion seems right.

Agreed based on that reading. We need to make that change. And we’ll need a test for it. Could be separate patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806131</commentid>
    <comment_count>15</comment_count>
      <attachid>441752</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-19 10:27:12 -0700</bug_when>
    <thetext>Created attachment 441752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806143</commentid>
    <comment_count>16</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-19 10:40:45 -0700</bug_when>
    <thetext>&gt; I’ve seen this assert to be useful in the past when we mess up the parent
&gt; child hierarchy for mock elements or other kinds of custom sub classes
&gt; Is it asserting now in your tests?

It is, yeah — specifically for anything table related (parent or child), and for autofill buttons. If it&apos;s been useful in the context of mock objects, maybe we can keep it, but would need the conditionals around the ASSERT I added in https://bugs.webkit.org/attachment.cgi?id=441675&amp;action=diff.

It seems we&apos;ve experienced issues in the past with table parent-child relationships — see AccessibiltyTableRow::parentTable():

AccessibilityTable* AccessibilityTableRow::parentTable() const
{
    // The parent table might not be the direct ancestor of the row unfortunately. ARIA states that role=&quot;grid&quot; should
    // only have &quot;row&quot; elements, but if not, we still should handle it gracefully by finding the right table.
    for (AccessibilityObject* parent = parentObject(); parent; parent = parent-&gt;parentObject()) {
    ...truncated...
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806156</commentid>
    <comment_count>17</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-10-19 10:56:29 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #16)
&gt; &gt; I’ve seen this assert to be useful in the past when we mess up the parent
&gt; &gt; child hierarchy for mock elements or other kinds of custom sub classes
&gt; &gt; Is it asserting now in your tests?
&gt; 
&gt; It is, yeah — specifically for anything table related (parent or child), and
&gt; for autofill buttons. If it&apos;s been useful in the context of mock objects,
&gt; maybe we can keep it, but would need the conditionals around the ASSERT I
&gt; added in https://bugs.webkit.org/attachment.cgi?id=441675&amp;action=diff.
&gt; 

It worries me in those cases. it sounds like auto fill buttons parent/child hierarchy might be broken actually

&gt; It seems we&apos;ve experienced issues in the past with table parent-child
&gt; relationships — see AccessibiltyTableRow::parentTable():
&gt; 
&gt; AccessibilityTable* AccessibilityTableRow::parentTable() const
&gt; {
&gt;     // The parent table might not be the direct ancestor of the row
&gt; unfortunately. ARIA states that role=&quot;grid&quot; should
&gt;     // only have &quot;row&quot; elements, but if not, we still should handle it
&gt; gracefully by finding the right table.
&gt;     for (AccessibilityObject* parent = parentObject(); parent; parent =
&gt; parent-&gt;parentObject()) {
&gt;     ...truncated...
&gt; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806194</commentid>
    <comment_count>18</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-19 11:38:20 -0700</bug_when>
    <thetext>I tested it out with a login form at discover.com and the autofill button is focusable and clickable via VoiceOver. Though navigation to the autofill button is not easy — required a lot of VO-right, VO-left, VO-Shift-Down into the text field, and VO-Shift-Right to get to. Activating the button isn&apos;t overly useful, either — it just re-opened the autofill menu that was already open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806827</commentid>
    <comment_count>19</comment_count>
      <attachid>441933</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-20 14:16:35 -0700</bug_when>
    <thetext>Created attachment 441933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806852</commentid>
    <comment_count>20</comment_count>
      <attachid>441940</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-20 14:38:32 -0700</bug_when>
    <thetext>Created attachment 441940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807206</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-21 09:27:36 -0700</bug_when>
    <thetext>Committed r284606 (243335@main): &lt;https://commits.webkit.org/243335@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441940.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807706</commentid>
    <comment_count>22</comment_count>
    <who name="">ayumi_kojima</who>
    <bug_when>2021-10-22 09:23:32 -0700</bug_when>
    <thetext>Reverted r284606 for reason:

Reverting because this commit caused accessibility/ios-simulator/accessibility-aria-table-children.html to fail

Committed r284687 (243407@main): &lt;https://commits.webkit.org/243407@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808167</commentid>
    <comment_count>23</comment_count>
      <attachid>442292</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-23 21:07:27 -0700</bug_when>
    <thetext>Created attachment 442292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808178</commentid>
    <comment_count>24</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-23 22:58:56 -0700</bug_when>
    <thetext>The previous patch was reverted because it caused a failure in three iOS tests.

The first two (accessibility/ios-simulator/disabled-states.html and accessibility/ios-simulator/popup-button-value-label.html) triggered ASSERT(child-&gt;parentObject() == this) in insertChild. This was because AccessibilityMenuListOption didn’t have a parentObject() method (therefore falling back to the default AccessibilityObject::parentObject implementation, which returns nullptr). I fixed this.

The other failing test was accessibility/ios-simulator/accessibility-aria-table-children.html. This test exposed a bug which indicates that some of our classes rely on addChild not descending into the child’s children when said child is ignored. As suggested by Andres above, I added a parameter to addChild and insertChild to control this behavior on a case-by-case basis.

Link showing failed test results: https://build.webkit.org/results/Apple-iOS-15-Simulator-Debug-WK2-Tests/r284606%20(253)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808226</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-24 10:14:06 -0700</bug_when>
    <thetext>Committed r284760 (243469@main): &lt;https://commits.webkit.org/243469@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442292.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441670</attachid>
            <date>2021-10-18 18:38:58 -0700</date>
            <delta_ts>2021-10-18 19:24:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231914-20211018203857.patch</filename>
            <type>text/plain</type>
            <size>18428</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwY2U1Yjg5OGJiMzc1
NzVjOTlmMTU4YTljYjk2N2JiZDYxNmNmZS4uNzA1MDk2NWNkMjQ1NGQ5Njc4OTQ2NzcyMjdkNmE2
ZDM1YTI4YzI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEwLTE4ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFueSBhZGRpdGlv
biBvZiBjaGlsZHJlbiBzaG91bGQgZnVubmVsIHRocm91Z2ggQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWRkQ2hpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbCBhZGRpdGlvbiBvZiBjaGlsZHJlbiBub3cgZ29lcyB0aHJvdWdoCisgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFkZENoaWxkLiBUaGlzIGlzIGdvb2QgZm9yIHR3byByZWFzb25zOgor
CisgICAgICAgIDEuIEl0IGVuc3VyZXMgd2UgYXJlbid0IGluc2VydGluZyBpZ25vcmVkIGVsZW1l
bnRzIGludG8gdGhlIHRyZWUuCisgICAgICAgIGBpbnNlcnRDaGlsZGAgKGRvd25zdHJlYW0gb2Yg
YGFkZENoaWxkYCkgY2hlY2tzIHRoaXMuIFByaW9yIHRvIHRoaXMKKyAgICAgICAgcGF0Y2gsIHRo
ZXJlIHdlcmUgY2FzZXMgd2hlcmUgd2UgY291bGQgaW5zZXJ0IGlnbm9yZWQgY2hpbGRyZW4gaW50
byB0aGUKKyAgICAgICAgdHJlZSBiZWNhdXNlIG5vIGNoZWNrIHdhcyBtYWRlLgorCisgICAgICAg
IDIuIFdlIGNhbiByZWxpYWJseSBzZXQgc3RhdGUgb24gdGhlIGNoaWxkIGJhc2VkIG9uIHRoZSBz
dGF0ZSBvZiB0aGUKKyAgICAgICAgcGFyZW50IGF0IGluc2VydGlvbiB0aW1lLiBGb3IgZXhhbXBs
ZSwgY2hpbGRyZW4gY2FuIHNldCBhIGZsYWcgaWYKKyAgICAgICAgYW55IG9mIHRoZWlyIGFuY2Vz
dG9ycyBoYXZlIGFuIGFwcGxpY2F0aW9uIG9yIGRvY3VtZW50IHJvbGUsIHdoaWNoIGNhbgorICAg
ICAgICBiZSB1c2VmdWwgZm9yIHNvbWUgQVggY2xpZW50cy4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlN
ZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNBdXRvZmlsbEJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVT
VkdDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRk
Q2hpbGRTY3JvbGxiYXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRy
ZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbik6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjph
ZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisKIDIwMjEtMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgYSBjYWxsYmFjayB0byBrbm93IHdoZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGxv
YWRzIHZpYSAtW1dLV2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6XQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4
IDRlZmJmNGUyNmJjYzU0YTQ2MmRmNjhhMGUxZTlkNGU4MTZjMDAzNGUuLjg3YjNiMTJjZDcwNWJh
ZjdmYTllNjkxOTZhYjFiZjJhZjczZTRkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTY3LDE0ICs2Nyw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZChBWENvcmVP
YmplY3QqIGNoaWxkLCBIYXNoU2V0PEFjY2VzCiAgICAgCiAgICAgcm93LnNldFJvd0luZGV4KChp
bnQpbV9yb3dzLnNpemUoKSk7CiAgICAgbV9yb3dzLmFwcGVuZCgmcm93KTsKLQotICAgIC8vIFRy
eSBhZGRpbmcgdGhlIHJvdyBpZiBpdCdzIG5vdCBpZ25vcmluZyBhY2Nlc3NpYmlsaXR5LAotICAg
IC8vIG90aGVyd2lzZSBhZGQgaXRzIGNoaWxkcmVuICh0aGUgY2VsbHMpIGFzIHRoZSBncmlkJ3Mg
Y2hpbGRyZW4uCi0gICAgaWYgKCFyb3cuYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAg
ICBtX2NoaWxkcmVuLmFwcGVuZCgmcm93KTsKLSAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW4u
YXBwZW5kVmVjdG9yKHJvdy5jaGlsZHJlbigpKTsKLQorICAgIGFkZENoaWxkKCZyb3cpOwogICAg
IGFwcGVuZGVkUm93cy5hZGQoJnJvdyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNDIsMTMg
KzEzNSwxMCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4oKQogICAg
ICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAgICAgICAgIGNvbHVtbi5zZXRQYXJlbnQo
dGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7Ci0gICAgICAgIGlmICgh
Y29sdW1uLmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgICAgIG1fY2hpbGRyZW4u
YXBwZW5kKCZjb2x1bW4pOworICAgICAgICBhZGRDaGlsZCgmY29sdW1uKTsKICAgICB9CiAKLSAg
ICBhdXRvKiBoZWFkZXJDb250YWluZXJPYmplY3QgPSBoZWFkZXJDb250YWluZXIoKTsKLSAgICBp
ZiAoaGVhZGVyQ29udGFpbmVyT2JqZWN0ICYmICFoZWFkZXJDb250YWluZXJPYmplY3QtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoaGVhZGVyQ29u
dGFpbmVyT2JqZWN0KTsKKyAgICBhZGRDaGlsZChoZWFkZXJDb250YWluZXIoKSk7CiB9CiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCmluZGV4IDcyMjg5NGQ4OWQ1NjM5M2Fl
MTAwNTczMmNlNzg3OTYyZTY3MTBkNzEuLjc5ZjM2MDk1ZTc0MzM5YTJiODU3ZjU0NDQ1YzQxYWEz
YzYwMzAyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guY3BwCkBAIC03MywxMSArNzMsOCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlMaXN0Qm94OjphZGRDaGlsZHJlbigpCiAKICAgICBtX2hhdmVDaGlsZHJlbiA9IHRydWU7CiAK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGxpc3RJdGVtIDogZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1l
bnQ+KCpzZWxlY3ROb2RlKS5saXN0SXRlbXMoKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBsaXN0T3B0aW9uID0gbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QobGlzdEl0
ZW0pOwotICAgICAgICBpZiAobGlzdE9wdGlvbiAmJiAhbGlzdE9wdGlvbi0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQobGlzdE9wdGlvbik7
Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2Vs
ZWN0RWxlbWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJdGVtcygpKQorICAgICAgICBhZGRDaGlsZChs
aXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChsaXN0SXRlbSkpOwogfQogCiB2b2lkIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94OjpzZXRTZWxlY3RlZENoaWxkcmVuKGNvbnN0IEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKaW5kZXggMjc2ZGM4ZWJmNmI0
NWQ0YzMzODQ1YzE0MzY5NTYxNjIzMDdkODNjYy4uOGU2NWY4ZTVlN2E4MjVlMzUxY2RlMzk4YzNm
YjVjMmQzYWQ1ZDYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApAQCAtODIsOCArODIsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4oKQogICAgIH0KIAogICAgIG1faGF2ZUNoaWxk
cmVuID0gdHJ1ZTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZChsaXN0KTsKLQorICAgIGFkZENoaWxk
KGxpc3QpOwogICAgIGxpc3QtPmFkZENoaWxkcmVuKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5j
cHAKaW5kZXggNjU3MjlhZTlkYjE2MTM0OTc3ZWFiZGFhMWU0YTZhMWRlNDlmNzUxMC4uN2M0NTFh
Zjc5NDc2MWFlYWYzMjFiMDczNDA3NmJlY2FiZjAyNWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5j
cHAKQEAgLTk2LDExICs5Niw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFk
ZENoaWxkcmVuKCkKIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKIAotICAgIGZvciAoY29u
c3QgYXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdE5v
ZGUpLmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaHkgZG9lcyBBY2Nlc3NpYmls
aXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4gY2hlY2sgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBidXQg
dGhpcyBkb2VzIG5vdD8KLSAgICAgICAgaWYgKGF1dG8gb3B0aW9uID0gbWVudUxpc3RPcHRpb25B
Y2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKSkKLSAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKG9wdGlvbik7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBkb3du
Y2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJdGVtcygpKQorICAgICAg
ICBhZGRDaGlsZChtZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QobGlzdEl0ZW0pKTsK
IH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6Y2hpbGRyZW5DaGFuZ2VkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCmluZGV4IGUxNzRiMmZiNGQ1MzZmOTIyNzBjNzRkYTQ3N2VlYTdlZDEwMTgwNjAuLjFj
NzZkNTI5ZmUzYzA0OTFjODNhNzMyMzAzNWQ1YWMyYTQyOTg1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNDgy
LDYgKzQ4MiwyMSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0KEFYQ29y
ZU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OgogICAgIGlmIChvYmplY3QpCiAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9CisKK3N0YXRpYyBib29sIGlzQXV0b2Zp
bGxCdXR0b24oQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKK3sKKyAgICBOb2RlKiBub2RlID0gYXhP
YmplY3Qubm9kZSgpOworICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOworICAgIHJldHVybiBpbnB1dC5hdXRvRmlsbEJ1
dHRvbkVsZW1lbnQoKTsKK30KKworc3RhdGljIGJvb2wgaXNUYWJsZUNvbXBvbmVudChBWENvcmVP
YmplY3QmIGF4T2JqZWN0KQoreworICAgIHJldHVybiBheE9iamVjdC5pc1RhYmxlKCkgfHwgYXhP
YmplY3QuaXNUYWJsZUNvbHVtbigpIHx8IGF4T2JqZWN0LmlzVGFibGVSb3coKSB8fCBheE9iamVj
dC5pc1RhYmxlQ2VsbCgpOworfQogICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnNl
cnRDaGlsZChBWENvcmVPYmplY3QqIGNoaWxkLCB1bnNpZ25lZCBpbmRleCkKIHsKQEAgLTUxNSw3
ICs1MzAsMTQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnNlcnRDaGlsZChBWENvcmVP
YmplY3QqIGNoaWxkLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgICAgIG1fY2hpbGRyZW4uaW5zZXJ0KGluZGV4ICsg
aSwgY2hpbGRyZW5baV0pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjaGlsZC0+cGFy
ZW50T2JqZWN0KCkgPT0gdGhpcyk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAvLyBBdXRvZmls
bCBidXR0b25zIGFyZSBkeW5hbWljYWxseSBjcmVhdGVkIGVsZW1lbnRzIGJ5IFdlYktpdCwgYW5k
IGFyZW4ndCBhc3NpZ25lZCBhcyBhIGNoaWxkCisgICAgICAgIC8vIHRvIHRoZWlyIHByb3BlciBE
T00gcGFyZW50IChzZWUgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVBdXRvRmlsbEJ1dHRvbiks
IHNvIGV4Y2x1ZGUgdGhlbSBmcm9tIHRoaXMgQVNTRVJULgorICAgICAgICAvLyBUYWJsZSBjb21w
b25lbnQgY2hpbGQtcGFyZW50IHJlbGF0aW9uc2hpcHMgYWxzbyBvZnRlbiBkb2Vzbid0IGxpbmUg
dXAgcHJvcGVybHksIGhlbmNlIHRoZSBuZWVkIGZvciBtZXRob2RzCisgICAgICAgIC8vIGxpa2Ug
cGFyZW50VGFibGUoKSBhbmQgcGFyZW50Um93KCkuIEV4Y2x1ZGUgdGhlbSBmcm9tIHRoaXMgQVNT
RVJUIHRvby4KKyAgICAgICAgaWYgKCFpc0F1dG9maWxsQnV0dG9uKCp0aGlzKSAmJiAhaXNUYWJs
ZUNvbXBvbmVudCgqY2hpbGQpICYmICFpc1RhYmxlQ29tcG9uZW50KCp0aGlzKSkKKyAgICAgICAg
ICAgIEFTU0VSVChjaGlsZC0+cGFyZW50T2JqZWN0KCkgPT0gdGhpcyk7CisjZW5kaWYKICAgICAg
ICAgbV9jaGlsZHJlbi5pbnNlcnQoaW5kZXgsIGNoaWxkKTsKICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAppbmRleCA5OTFjYWRlOWIyMzIzZDFhZmJjNzU4N2JjMjIwOTdkNTI3Y2Y5N2Q5
Li42Y2QzM2VlN2ZkNGUyYjI3MWE1YzA5YjE2MTEyNzE4Y2RhYWNlMGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKQEAgLTMyODQsNyArMzI4NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTE1h
cEVsZW1lbnQobWFwKTsKICAgICAgICAgYXJlYU9iamVjdC5zZXRQYXJlbnQodGhpcyk7CiAgICAg
ICAgIGlmICghYXJlYU9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAg
ICBtX2NoaWxkcmVuLmFwcGVuZCgmYXJlYU9iamVjdCk7CisgICAgICAgICAgICBhZGRDaGlsZCgm
YXJlYU9iamVjdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+
cmVtb3ZlKGFyZWFPYmplY3Qub2JqZWN0SUQoKSk7CiAgICAgfQpAQCAtMzMwNSwxMCArMzMwNSw4
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkVGV4dEZpZWxkQ2hpbGRyZW4o
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7Ci0gICAgaWYgKEhUTUxFbGVtZW50KiBh
dXRvRmlsbEVsZW1lbnQgPSBpbnB1dC5hdXRvRmlsbEJ1dHRvbkVsZW1lbnQoKSkgewotICAgICAg
ICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhBdXRvRmlsbCA9IGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUoYXV0b0ZpbGxFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKGF4QXV0b0ZpbGwpOwotICAgIH0KKyAgICBpZiAoSFRNTEVsZW1lbnQqIGF1dG9GaWxsRWxl
bWVudCA9IGlucHV0LmF1dG9GaWxsQnV0dG9uRWxlbWVudCgpKQorICAgICAgICBhZGRDaGlsZChh
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGF1dG9GaWxsRWxlbWVudCkpOwogICAgIAogICAg
IEhUTUxFbGVtZW50KiBzcGluQnV0dG9uRWxlbWVudCA9IGlucHV0LmlubmVyU3BpbkJ1dHRvbkVs
ZW1lbnQoKTsKICAgICBpZiAoIWlzPFNwaW5CdXR0b25FbGVtZW50PihzcGluQnV0dG9uRWxlbWVu
dCkpCkBAIC0zMzE3LDcgKzMzMTUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFkZFRleHRGaWVsZENoaWxkcmVuKCkKICAgICBhdXRvJiBheFNwaW5CdXR0b24gPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbj4oKmF4T2JqZWN0Q2FjaGUoKS0+Y3JlYXRlKEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGluQnV0dG9uKSk7CiAgICAgYXhTcGluQnV0dG9uLnNldFNwaW5CdXR0
b25FbGVtZW50KGRvd25jYXN0PFNwaW5CdXR0b25FbGVtZW50PihzcGluQnV0dG9uRWxlbWVudCkp
OwogICAgIGF4U3BpbkJ1dHRvbi5zZXRQYXJlbnQodGhpcyk7Ci0gICAgbV9jaGlsZHJlbi5hcHBl
bmQoJmF4U3BpbkJ1dHRvbik7CisgICAgYWRkQ2hpbGQoJmF4U3BpbkJ1dHRvbik7CiB9CiAgICAg
CiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzU1ZHSW1hZ2UoKSBjb25zdApAQCAt
MzM4MSwxMiArMzM3OSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmVt
b3RlU1ZHQ2hpbGRyZW4oKQogICAgIC8vIEluIG9yZGVyIHRvIGNvbm5lY3QgdGhlIEFYIGhpZXJh
cmNoeSBmcm9tIHRoZSBTVkcgcm9vdCBlbGVtZW50IGZyb20gdGhlIGxvYWRlZCByZXNvdXJjZQog
ICAgIC8vIHRoZSBwYXJlbnQgbXVzdCBiZSBzZXQsIGJlY2F1c2UgdGhlcmUncyBubyBvdGhlciB3
YXkgdG8gZ2V0IGJhY2sgdG8gd2hvIGNyZWF0ZWQgdGhlIGltYWdlLgogICAgIHJvb3QtPnNldFBh
cmVudCh0aGlzKTsKLSAgICAKLSAgICBpZiAocm9vdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
KSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiByb290LT5jaGlsZHJlbigpKQot
ICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwotICAgIH0gZWxzZQotICAgICAg
ICBtX2NoaWxkcmVuLmFwcGVuZChyb290KTsKKyAgICBhZGRDaGlsZChyb290KTsKIH0KIAogdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDYW52YXNDaGlsZHJlbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwCmluZGV4IDIwMDg5Yzk1ODlhYmNiMTQ1Y2IzNDk4YmJkY2QxOTFkODIxODlmOTIuLjZi
YjQyNmI3MTQxODllOTk1ZWY2MjE2ZWNjMWUxMzQ3MGQxNjVkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmFkZENoaWxkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2MKIAogICAgIGF1dG8m
IHNjcm9sbEJhck9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI+KCpjYWNo
ZS0+Z2V0T3JDcmVhdGUoc2Nyb2xsYmFyKSk7CiAgICAgc2Nyb2xsQmFyT2JqZWN0LnNldFBhcmVu
dCh0aGlzKTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZCgmc2Nyb2xsQmFyT2JqZWN0KTsKKyAgICBh
ZGRDaGlsZCgmc2Nyb2xsQmFyT2JqZWN0KTsKICAgICByZXR1cm4gJnNjcm9sbEJhck9iamVjdDsK
IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCA3ZDA3M2JkNmE4OGQxYTY0YmZmYThlZGFmYTcwOTVm
Y2M1ZTViZGVjLi5lZTExOGQ1NTI2MmY2MjA0ZTFjYTU0MjczNTEwODJhN2ZlOTUzNzg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRl
ci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENo
aWxkcmVuKCkKICAgICBpZiAodGh1bWIuYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAgICAg
ICBjYWNoZS0+cmVtb3ZlKHRodW1iLm9iamVjdElEKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9j
aGlsZHJlbi5hcHBlbmQoJnRodW1iKTsKKyAgICAgICAgYWRkQ2hpbGQoJnRodW1iKTsKIH0KIAog
Y29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eVNsaWRlcjo6Z2V0QXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKaW5kZXggOTI5
ZjYxMzVjMjJlZDBhOThkNmVjNTcxNDQ4NjFmZmRkNGQwNzliZS4uZjg5MmIyZTlkM2E3MjViMWEx
ZTQyNzIwN2QzN2M1MzJkYjE1ZGMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKQEAgLTkxLDEyICs5MSwx
MiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjphZGRDaGlsZHJlbigpCiAgICAgYXV0
byYgaW5jcmVtZW50b3IgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpj
YWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOwogICAgIGlu
Y3JlbWVudG9yLnNldElzSW5jcmVtZW50b3IodHJ1ZSk7CiAgICAgaW5jcmVtZW50b3Iuc2V0UGFy
ZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZpbmNyZW1lbnRvcik7CisgICAgYWRk
Q2hpbGQoJmluY3JlbWVudG9yKTsKIAogICAgIGF1dG8mIGRlY3JlbWVudG9yID0gZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBkZWNyZW1lbnRvci5zZXRJc0luY3JlbWVudG9y
KGZhbHNlKTsKICAgICBkZWNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7Ci0gICAgbV9jaGlsZHJl
bi5hcHBlbmQoJmRlY3JlbWVudG9yKTsKKyAgICBhZGRDaGlsZCgmZGVjcmVtZW50b3IpOwogfQog
ICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6c3RlcChpbnQgYW1vdW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
CmluZGV4IGY2NzJmNGExYWYwNTM1NWU2ZTczMDUwNTkzODZkMDQxOTc5ZGRiMmQuLjgzMjBkNzVl
NmUzOTQ2MzA0NTZlYjMzMDNlNGVhYTViZTYwYmY0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTM5NCw4ICszOTQs
MTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICBpZiAoSFRN
TFRhYmxlRWxlbWVudCogdGFibGVFbGVtZW50ID0gdGhpcy0+dGFibGVFbGVtZW50KCkpIHsKICAg
ICAgICAgaWYgKGF1dG8gY2FwdGlvbiA9IHRhYmxlRWxlbWVudC0+Y2FwdGlvbigpKSB7CiAgICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheENhcHRpb24gPSBheE9iamVjdENhY2hlKCkt
PmdldE9yQ3JlYXRlKGNhcHRpb24uZ2V0KCkpOworICAgICAgICAgICAgLy8gV2hpbGUgYGFkZENo
aWxkYCB3b24ndCBpbnNlcnQgaWdub3JlZCBjaGlsZHJlbiwgd2Ugc3RpbGwgbmVlZCB0aGlzIGFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQKKyAgICAgICAgICAgIC8vIGNoZWNrIHNvIHRoYXQgYGFkZENo
aWxkYCBkb2Vzbid0IHRyeSB0byBhZGQgdGhlIGNhcHRpb24ncyBjaGlsZHJlbiBpbiBpdHMgc3Rl
YWQuIEJhc2ljYWxseSwKKyAgICAgICAgICAgIC8vIGV4cGxpY2l0bHkgY2hlY2tpbmcgYWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpIGlnbm9yZXMgdGhlIGNhcHRpb24gYW5kIGFueSBvZiBpdHMgY2hp
bGRyZW4uCiAgICAgICAgICAgICBpZiAoYXhDYXB0aW9uICYmICFheENhcHRpb24tPmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChheENh
cHRpb24pOworICAgICAgICAgICAgICAgIGFkZENoaWxkKGF4Q2FwdGlvbik7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTQyMCwxMyArNDIzLDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFk
ZENoaWxkcmVuKCkKICAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KGkpOwogICAgICAgICBj
b2x1bW4uc2V0UGFyZW50KHRoaXMpOwogICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4p
OwotICAgICAgICBpZiAoIWNvbHVtbi5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmY29sdW1uKTsKKyAgICAgICAgYWRkQ2hpbGQoJmNvbHVt
bik7CiAgICAgfQotCi0gICAgYXV0byogaGVhZGVyQ29udGFpbmVyT2JqZWN0ID0gaGVhZGVyQ29u
dGFpbmVyKCk7Ci0gICAgaWYgKGhlYWRlckNvbnRhaW5lck9iamVjdCAmJiAhaGVhZGVyQ29udGFp
bmVyT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIG1fY2hpbGRyZW4u
YXBwZW5kKGhlYWRlckNvbnRhaW5lck9iamVjdCk7CisgICAgYWRkQ2hpbGQoaGVhZGVyQ29udGFp
bmVyKCkpOwogCiAgICAgLy8gU29tZXRpbWVzIHRoZSBjZWxsIGdldHMgdGhlIHdyb25nIHJvbGUg
aW5pdGlhbGx5IGJlY2F1c2UgaXQgaXMgY3JlYXRlZCBiZWZvcmUgdGhlIHBhcmVudAogICAgIC8v
IGRldGVybWluZXMgd2hldGhlciBpdCBpcyBhbiBhY2Nlc3NpYmlsaXR5IHRhYmxlLiBJdGVyYXRl
IGFsbCB0aGUgY2VsbHMgYW5kIGFsbG93IHRoZW0gdG8KQEAgLTQ1MSw4ICs0NTAsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkVGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVj
dCogcm93T2JqZWN0LCBIYXNoUwogICAgIAogICAgIHJvdy5zZXRSb3dJbmRleChzdGF0aWNfY2Fz
dDxpbnQ+KG1fcm93cy5zaXplKCkpKTsKICAgICBtX3Jvd3MuYXBwZW5kKCZyb3cpOwotICAgIGlm
ICghcm93LmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBl
bmQoJnJvdyk7CisgICAgYWRkQ2hpbGQoJnJvdyk7CiAgICAgYXBwZW5kZWRSb3dzLmFkZCgmcm93
KTsKICAgICAgICAgCiAgICAgLy8gc3RvcmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uLmNwcAppbmRleCA0NDQwNGY2ZmQ2OTc4MzU4NmQ1ODljNDMyNTYyNDE5YzQ2
NTMxY2JkLi41MGFkYzI2M2QxMjExMzJjN2Y0MzVjYWIzYzJiMWY3MjM4M2IxNDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW46OmFkZENoaWxkcmVuKCkKICAgICAgICAgaWYgKG1fY2hpbGRyZW4uc2l6ZSgpID4gMCAm
JiBtX2NoaWxkcmVuLmxhc3QoKSA9PSBjZWxsKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2VsbCk7CisgICAgICAgIGFkZENo
aWxkKGNlbGwpOwogICAgIH0KIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVy
LmNwcAppbmRleCA3MjU4MTE2ZjVkMWJlZDk4MTkzZjMxNWJkMzI1OGJkY2JlNWU2OWFiLi5kNGEx
MGVkZjdiNDc4M2I3ZTg3OTcyOWRlN2UwNjg4ODBiZjI4ZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuY3BwCkBAIC03Myw3ICs3Myw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyOjphZGRDaGlsZHJlbigpCiAgICAgaWYgKCFwYXJlbnRUYWJsZS5p
c0V4cG9zYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NoaWxkcmVuID0gcGFyZW50
VGFibGUuY29sdW1uSGVhZGVycygpOworICAgIGZvciAoYXV0byYgY29sdW1uSGVhZGVyIDogcGFy
ZW50VGFibGUuY29sdW1uSGVhZGVycygpKQorICAgICAgICBhZGRDaGlsZChjb2x1bW5IZWFkZXIu
Z2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCiAgICAg
ICAgIG1faGVhZGVyUmVjdC51bml0ZShjaGlsZC0+ZWxlbWVudFJlY3QoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAK
aW5kZXggZWQwZmIwYjJjYTRkNWE2ODU1YjI5MzMxYWY5OGViYTQ1MjJmNjlmZi4uY2E2NDdiNjRh
ODRmMjg3OTM2N2NhMDBiMjFmZWExODJlZjhjYTQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpwYXJl
bnRUYWJsZSgpIGNvbnN0CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Ci0gICAgCisKIEFY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogewogICAg
IGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZVJvdygpKQpAQCAtMTUwLDEw
ICsxNTAsMTIgQEAgQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9i
amVjdCgpCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YWRkQ2hpbGRyZW4oKQogewogICAg
IC8vIElmIHRoZSBlbGVtZW50IHNwZWNpZmllcyBpdHMgY2VsbHMgdGhyb3VnaCBhcmlhLW93bnMs
IHJldHVybiB0aGF0IGZpcnN0LgotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlh
T3duczsKLSAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25zKTsKLSAgICBpZiAoYXJpYU93bnMu
c2l6ZSgpKQotICAgICAgICBtX2NoaWxkcmVuID0gV1RGTW92ZShhcmlhT3ducyk7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25lZEVsZW1lbnRzOworICAgIGFyaWFPd25z
RWxlbWVudHMoYXJpYU93bmVkRWxlbWVudHMpOworICAgIGlmIChhcmlhT3duZWRFbGVtZW50cy5z
aXplKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBhcmlhT3duZWRFbGVtZW50IDogYXJpYU93bmVk
RWxlbWVudHMpCisgICAgICAgICAgICBhZGRDaGlsZChhcmlhT3duZWRFbGVtZW50LmdldCgpKTsK
KyAgICB9CiAgICAgZWxzZQogICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRD
aGlsZHJlbigpOwogICAgIAo=
</data>
<flag name="commit-queue"
          id="466004"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441675</attachid>
            <date>2021-10-18 19:18:50 -0700</date>
            <delta_ts>2021-10-19 10:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231914-20211018211849.patch</filename>
            <type>text/plain</type>
            <size>18436</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVlMWIxY2JlOTY0ZDcw
Mzc0ZWZkY2QxYzQ5Yjk4YmYxNDYwNWExZS4uN2U5ZWYyMmQ0NzBjN2JhM2RlMTRkZjYzMGE4NDBm
NDk4NTgyN2U5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEwLTE4ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFueSBhZGRpdGlv
biBvZiBjaGlsZHJlbiBzaG91bGQgZnVubmVsIHRocm91Z2ggQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWRkQ2hpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbCBhZGRpdGlvbiBvZiBjaGlsZHJlbiBub3cgZ29lcyB0aHJvdWdoCisgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFkZENoaWxkLiBUaGlzIGlzIGdvb2QgZm9yIHR3byByZWFzb25zOgor
CisgICAgICAgIDEuIEl0IGVuc3VyZXMgd2UgYXJlbid0IGluc2VydGluZyBpZ25vcmVkIGVsZW1l
bnRzIGludG8gdGhlIHRyZWUuCisgICAgICAgIGBpbnNlcnRDaGlsZGAgKGRvd25zdHJlYW0gb2Yg
YGFkZENoaWxkYCkgY2hlY2tzIHRoaXMuIFByaW9yIHRvIHRoaXMKKyAgICAgICAgcGF0Y2gsIHRo
ZXJlIHdlcmUgY2FzZXMgd2hlcmUgd2UgY291bGQgaW5zZXJ0IGlnbm9yZWQgY2hpbGRyZW4gaW50
byB0aGUKKyAgICAgICAgdHJlZSBiZWNhdXNlIG5vIGNoZWNrIHdhcyBtYWRlLgorCisgICAgICAg
IDIuIFdlIGNhbiByZWxpYWJseSBzZXQgc3RhdGUgb24gdGhlIGNoaWxkIGJhc2VkIG9uIHRoZSBz
dGF0ZSBvZiB0aGUKKyAgICAgICAgcGFyZW50IGF0IGluc2VydGlvbiB0aW1lLiBGb3IgZXhhbXBs
ZSwgY2hpbGRyZW4gY2FuIHNldCBhIGZsYWcgaWYKKyAgICAgICAgYW55IG9mIHRoZWlyIGFuY2Vz
dG9ycyBoYXZlIGFuIGFwcGxpY2F0aW9uIG9yIGRvY3VtZW50IHJvbGUsIHdoaWNoIGNhbgorICAg
ICAgICBiZSB1c2VmdWwgZm9yIHNvbWUgQVggY2xpZW50cy4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlN
ZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNBdXRvZmlsbEJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVT
VkdDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRk
Q2hpbGRTY3JvbGxiYXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRy
ZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbik6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjph
ZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisKIDIwMjEtMTAtMTggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW21hY09TXSBSZWZhY3RvciBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291
cmNlOjpjcmVhdGVEaXNwbGF5U3RyZWFtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKaW5kZXggNGVmYmY0ZTI2YmNjNTRh
NDYyZGY2OGEwZTFlOWQ0ZTgxNmMwMDM0ZS4uODdiM2IxMmNkNzA1YmFmN2ZhOWU2OTE5NmFiMWJm
MmFmNzNlNGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApAQCAtNjcsMTQgKzY3LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIEhh
c2hTZXQ8QWNjZXMKICAgICAKICAgICByb3cuc2V0Um93SW5kZXgoKGludCltX3Jvd3Muc2l6ZSgp
KTsKICAgICBtX3Jvd3MuYXBwZW5kKCZyb3cpOwotCi0gICAgLy8gVHJ5IGFkZGluZyB0aGUgcm93
IGlmIGl0J3Mgbm90IGlnbm9yaW5nIGFjY2Vzc2liaWxpdHksCi0gICAgLy8gb3RoZXJ3aXNlIGFk
ZCBpdHMgY2hpbGRyZW4gKHRoZSBjZWxscykgYXMgdGhlIGdyaWQncyBjaGlsZHJlbi4KLSAgICBp
ZiAoIXJvdy5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKCZyb3cpOwotICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmRWZWN0b3Iocm93
LmNoaWxkcmVuKCkpOwotCisgICAgYWRkQ2hpbGQoJnJvdyk7CiAgICAgYXBwZW5kZWRSb3dzLmFk
ZCgmcm93KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE0MiwxMyArMTM1LDEwIEBAIHZvaWQg
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbigpCiAgICAgICAgIGNvbHVtbi5zZXRD
b2x1bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsKICAgICAgICAg
bV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKLSAgICAgICAgaWYgKCFjb2x1bW4uYWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoJmNvbHVtbik7
CisgICAgICAgIGFkZENoaWxkKCZjb2x1bW4pOwogICAgIH0KIAotICAgIGF1dG8qIGhlYWRlckNv
bnRhaW5lck9iamVjdCA9IGhlYWRlckNvbnRhaW5lcigpOwotICAgIGlmIChoZWFkZXJDb250YWlu
ZXJPYmplY3QgJiYgIWhlYWRlckNvbnRhaW5lck9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpKQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwor
ICAgIGFkZENoaWxkKGhlYWRlckNvbnRhaW5lcigpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveC5jcHAKaW5kZXggNzIyODk0ZDg5ZDU2MzkzYWUxMDA1NzMyY2U3ODc5NjJl
NjcxMGQ3MS4uNzlmMzYwOTVlNzQzMzlhMmI4NTdmNTQ0NDVjNDFhYTNjNjAzMDI1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJv
eC5jcHAKQEAgLTczLDExICs3Myw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFkZENo
aWxkcmVuKCkKIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKIAotICAgIGZvciAoY29uc3Qg
YXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdE5vZGUp
Lmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RPcHRpb24g
PSBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChsaXN0SXRlbSk7Ci0gICAgICAgIGlm
IChsaXN0T3B0aW9uICYmICFsaXN0T3B0aW9uLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0g
ICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChsaXN0T3B0aW9uKTsKLSAgICB9CisgICAgZm9y
IChjb25zdCBhdXRvJiBsaXN0SXRlbSA6IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqc2Vs
ZWN0Tm9kZSkubGlzdEl0ZW1zKCkpCisgICAgICAgIGFkZENoaWxkKGxpc3RCb3hPcHRpb25BY2Nl
c3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RC
b3g6OnNldFNlbGVjdGVkQ2hpbGRyZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjaGlsZHJlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAppbmRleCAyNzZkYzhlYmY2YjQ1ZDRjMzM4NDVjMTQzNjk1
NjE2MjMwN2Q4M2NjLi44ZTY1ZjhlNWU3YTgyNWUzNTFjZGUzOThjM2ZiNWMyZDNhZDVkNjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwCkBAIC04Miw4ICs4Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0
OjphZGRDaGlsZHJlbigpCiAgICAgfQogCiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwotICAg
IG1fY2hpbGRyZW4uYXBwZW5kKGxpc3QpOwotCisgICAgYWRkQ2hpbGQobGlzdCk7CiAgICAgbGlz
dC0+YWRkQ2hpbGRyZW4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAppbmRleCA2NTcyOWFl
OWRiMTYxMzQ5NzdlYWJkYWExZTRhNmExZGU0OWY3NTEwLi43YzQ1MWFmNzk0NzYxYWVhZjMyMWIw
NzM0MDc2YmVjYWJmMDI1ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcApAQCAtOTYsMTEgKzk2
LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6YWRkQ2hpbGRyZW4oKQogCiAg
ICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBsaXN0SXRl
bSA6IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0Tm9kZSkubGlzdEl0ZW1zKCkp
IHsKLSAgICAgICAgLy8gRklYTUU6IFdoeSBkb2VzIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjphZGRD
aGlsZHJlbiBjaGVjayBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGJ1dCB0aGlzIGRvZXMgbm90Pwot
ICAgICAgICBpZiAoYXV0byBvcHRpb24gPSBtZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QobGlzdEl0ZW0pKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQob3B0aW9uKTsKLSAg
ICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBsaXN0SXRlbSA6IGRvd25jYXN0PEhUTUxTZWxlY3RF
bGVtZW50Pigqc2VsZWN0Tm9kZSkubGlzdEl0ZW1zKCkpCisgICAgICAgIGFkZENoaWxkKG1lbnVM
aXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChsaXN0SXRlbSkpOwogfQogCiB2b2lkIEFjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTE3
NGIyZmI0ZDUzNmY5MjI3MGM3NGRhNDc3ZWVhN2VkMTAxODA2MC4uMTA1MGEyOGQzMTQxMjdhZGFm
YjM1MGMyOGE3M2I1ZjE3ZmQxNjlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC00ODIsNiArNDgyLDIzIEBAIHN0
YXRpYyB2b2lkIGFwcGVuZEFjY2Vzc2liaWxpdHlPYmplY3QoQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IEFjY2Vzc2liaWxpdHlPYmplY3Q6CiAgICAgaWYgKG9iamVjdCkKICAgICAgICAgcmVzdWx0cy5h
cHBlbmQob2JqZWN0KTsKIH0KKworI2lmbmRlZiBOREVCVUcKK3N0YXRpYyBib29sIGlzQXV0b2Zp
bGxCdXR0b24oQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKK3sKKyAgICBOb2RlKiBub2RlID0gYXhP
YmplY3Qubm9kZSgpOworICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOworICAgIHJldHVybiBpbnB1dC5hdXRvRmlsbEJ1
dHRvbkVsZW1lbnQoKTsKK30KKworc3RhdGljIGJvb2wgaXNUYWJsZUNvbXBvbmVudChBWENvcmVP
YmplY3QmIGF4T2JqZWN0KQoreworICAgIHJldHVybiBheE9iamVjdC5pc1RhYmxlKCkgfHwgYXhP
YmplY3QuaXNUYWJsZUNvbHVtbigpIHx8IGF4T2JqZWN0LmlzVGFibGVSb3coKSB8fCBheE9iamVj
dC5pc1RhYmxlQ2VsbCgpOworfQorI2VuZGlmCiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIHVuc2lnbmVkIGluZGV4KQogewpA
QCAtNTE1LDcgKzUzMiwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxk
KEFYQ29yZU9iamVjdCogY2hpbGQsIHVuc2lnbmVkIGluZGV4KQogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgbV9jaGlsZHJlbi5pbnNlcnQo
aW5kZXggKyBpLCBjaGlsZHJlbltpXSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNo
aWxkLT5wYXJlbnRPYmplY3QoKSA9PSB0aGlzKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8v
IEF1dG9maWxsIGJ1dHRvbnMgYXJlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgZWxlbWVudHMgYnkgV2Vi
S2l0LCBhbmQgYXJlbid0IGFzc2lnbmVkIGFzIGEgY2hpbGQKKyAgICAgICAgLy8gdG8gdGhlaXIg
cHJvcGVyIERPTSBwYXJlbnQgKHNlZSBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZUF1dG9GaWxs
QnV0dG9uKSwgc28gZXhjbHVkZSB0aGVtIGZyb20gdGhpcyBBU1NFUlQuCisgICAgICAgIC8vIFRh
YmxlIGNvbXBvbmVudCBjaGlsZC1wYXJlbnQgcmVsYXRpb25zaGlwcyBhbHNvIG9mdGVuIGRvZXNu
J3QgbGluZSB1cCBwcm9wZXJseSwgaGVuY2UgdGhlIG5lZWQgZm9yIG1ldGhvZHMKKyAgICAgICAg
Ly8gbGlrZSBwYXJlbnRUYWJsZSgpIGFuZCBwYXJlbnRSb3coKS4gRXhjbHVkZSB0aGVtIGZyb20g
dGhpcyBBU1NFUlQgdG9vLgorICAgICAgICBpZiAoIWlzQXV0b2ZpbGxCdXR0b24oKnRoaXMpICYm
ICFpc1RhYmxlQ29tcG9uZW50KCpjaGlsZCkgJiYgIWlzVGFibGVDb21wb25lbnQoKnRoaXMpKQor
ICAgICAgICAgICAgQVNTRVJUKGNoaWxkLT5wYXJlbnRPYmplY3QoKSA9PSB0aGlzKTsKKyNlbmRp
ZgogICAgICAgICBtX2NoaWxkcmVuLmluc2VydChpbmRleCwgY2hpbGQpOwogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDk5MWNhZGU5YjIzMjNkMWFmYmM3NTg3YmMyMjA5N2Q1
MjdjZjk3ZDkuLjZjZDMzZWU3ZmQ0ZTJiMjcxYTVjMDliMTYxMTI3MThjZGFhY2UwZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcApAQCAtMzI4NCw3ICszMjg0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKCkKICAgICAgICAgYXJlYU9iamVjdC5z
ZXRIVE1MTWFwRWxlbWVudChtYXApOwogICAgICAgICBhcmVhT2JqZWN0LnNldFBhcmVudCh0aGlz
KTsKICAgICAgICAgaWYgKCFhcmVhT2JqZWN0LmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAg
ICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZhcmVhT2JqZWN0KTsKKyAgICAgICAgICAgIGFk
ZENoaWxkKCZhcmVhT2JqZWN0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXhPYmplY3RD
YWNoZSgpLT5yZW1vdmUoYXJlYU9iamVjdC5vYmplY3RJRCgpKTsKICAgICB9CkBAIC0zMzA1LDEw
ICszMzA1LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRD
aGlsZHJlbigpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBp
bnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKLSAgICBpZiAoSFRNTEVs
ZW1lbnQqIGF1dG9GaWxsRWxlbWVudCA9IGlucHV0LmF1dG9GaWxsQnV0dG9uRWxlbWVudCgpKSB7
Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheEF1dG9GaWxsID0gYXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShhdXRvRmlsbEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jaGls
ZHJlbi5hcHBlbmQoYXhBdXRvRmlsbCk7Ci0gICAgfQorICAgIGlmIChIVE1MRWxlbWVudCogYXV0
b0ZpbGxFbGVtZW50ID0gaW5wdXQuYXV0b0ZpbGxCdXR0b25FbGVtZW50KCkpCisgICAgICAgIGFk
ZENoaWxkKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoYXV0b0ZpbGxFbGVtZW50KSk7CiAg
ICAgCiAgICAgSFRNTEVsZW1lbnQqIHNwaW5CdXR0b25FbGVtZW50ID0gaW5wdXQuaW5uZXJTcGlu
QnV0dG9uRWxlbWVudCgpOwogICAgIGlmICghaXM8U3BpbkJ1dHRvbkVsZW1lbnQ+KHNwaW5CdXR0
b25FbGVtZW50KSkKQEAgLTMzMTcsNyArMzMxNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWRkVGV4dEZpZWxkQ2hpbGRyZW4oKQogICAgIGF1dG8mIGF4U3BpbkJ1dHRvbiA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgpLT5jcmVh
dGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b24pKTsKICAgICBheFNwaW5CdXR0b24uc2V0
U3BpbkJ1dHRvbkVsZW1lbnQoZG93bmNhc3Q8U3BpbkJ1dHRvbkVsZW1lbnQ+KHNwaW5CdXR0b25F
bGVtZW50KSk7CiAgICAgYXhTcGluQnV0dG9uLnNldFBhcmVudCh0aGlzKTsKLSAgICBtX2NoaWxk
cmVuLmFwcGVuZCgmYXhTcGluQnV0dG9uKTsKKyAgICBhZGRDaGlsZCgmYXhTcGluQnV0dG9uKTsK
IH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNTVkdJbWFnZSgpIGNv
bnN0CkBAIC0zMzgxLDEyICszMzc5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRSZW1vdGVTVkdDaGlsZHJlbigpCiAgICAgLy8gSW4gb3JkZXIgdG8gY29ubmVjdCB0aGUg
QVggaGllcmFyY2h5IGZyb20gdGhlIFNWRyByb290IGVsZW1lbnQgZnJvbSB0aGUgbG9hZGVkIHJl
c291cmNlCiAgICAgLy8gdGhlIHBhcmVudCBtdXN0IGJlIHNldCwgYmVjYXVzZSB0aGVyZSdzIG5v
IG90aGVyIHdheSB0byBnZXQgYmFjayB0byB3aG8gY3JlYXRlZCB0aGUgaW1hZ2UuCiAgICAgcm9v
dC0+c2V0UGFyZW50KHRoaXMpOwotICAgIAotICAgIGlmIChyb290LT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHJvb3QtPmNoaWxk
cmVuKCkpCi0gICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZCk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvb3QpOworICAgIGFkZENoaWxkKHJvb3QpOwog
fQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENhbnZhc0NoaWxkcmVuKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAKaW5kZXggMjAwODljOTU4OWFiY2IxNDVjYjM0OThiYmRjZDE5MWQ4MjE4
OWY5Mi4uNmJiNDI2YjcxNDE4OWU5OTVlZjYyMTZlY2MxZTEzNDcwZDE2NWQwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzYwogCiAg
ICAgYXV0byYgc2Nyb2xsQmFyT2JqZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNjcm9sbGJh
cj4oKmNhY2hlLT5nZXRPckNyZWF0ZShzY3JvbGxiYXIpKTsKICAgICBzY3JvbGxCYXJPYmplY3Qu
c2V0UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZzY3JvbGxCYXJPYmplY3Qp
OworICAgIGFkZENoaWxkKCZzY3JvbGxCYXJPYmplY3QpOwogICAgIHJldHVybiAmc2Nyb2xsQmFy
T2JqZWN0OwogfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCmluZGV4IDdkMDczYmQ2YTg4ZDFhNjRiZmZhOGVk
YWZhNzA5NWZjYzVlNWJkZWMuLmVlMTE4ZDU1MjYyZjYyMDRlMWNhNTQyNzM1MTA4MmE3ZmU5NTM3
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNsaWRl
cjo6YWRkQ2hpbGRyZW4oKQogICAgIGlmICh0aHVtYi5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkp
CiAgICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIub2JqZWN0SUQoKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmdGh1bWIpOworICAgICAgICBhZGRDaGlsZCgmdGh1bWIp
OwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpnZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcApp
bmRleCA5MjlmNjEzNWMyMmVkMGE5OGQ2ZWM1NzE0NDg2MWZmZGQ0ZDA3OWJlLi5mODkyYjJlOWQz
YTcyNWIxYTFlNDI3MjA3ZDM3YzUzMmRiMTVkYzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcApAQCAtOTEs
MTIgKzkxLDEyIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmFkZENoaWxkcmVuKCkK
ICAgICBhdXRvJiBpbmNyZW1lbnRvciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9u
UGFydD4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0KSk7
CiAgICAgaW5jcmVtZW50b3Iuc2V0SXNJbmNyZW1lbnRvcih0cnVlKTsKICAgICBpbmNyZW1lbnRv
ci5zZXRQYXJlbnQodGhpcyk7Ci0gICAgbV9jaGlsZHJlbi5hcHBlbmQoJmluY3JlbWVudG9yKTsK
KyAgICBhZGRDaGlsZCgmaW5jcmVtZW50b3IpOwogCiAgICAgYXV0byYgZGVjcmVtZW50b3IgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Y3JlYXRlKEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOwogICAgIGRlY3JlbWVudG9yLnNldElzSW5j
cmVtZW50b3IoZmFsc2UpOwogICAgIGRlY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKLSAgICBt
X2NoaWxkcmVuLmFwcGVuZCgmZGVjcmVtZW50b3IpOworICAgIGFkZENoaWxkKCZkZWNyZW1lbnRv
cik7CiB9CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpzdGVwKGludCBhbW91
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5jcHAKaW5kZXggZjY3MmY0YTFhZjA1MzU1ZTZlNzMwNTA1OTM4NmQwNDE5NzlkZGIyZC4u
ODMyMGQ3NWU2ZTM5NDYzMDQ1NmViMzMwM2U0ZWFhNWJlNjBiZjQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtMzk0
LDggKzM5NCwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAg
IGlmIChIVE1MVGFibGVFbGVtZW50KiB0YWJsZUVsZW1lbnQgPSB0aGlzLT50YWJsZUVsZW1lbnQo
KSkgewogICAgICAgICBpZiAoYXV0byBjYXB0aW9uID0gdGFibGVFbGVtZW50LT5jYXB0aW9uKCkp
IHsKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q2FwdGlvbiA9IGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY2FwdGlvbi5nZXQoKSk7CisgICAgICAgICAgICAvLyBXaGls
ZSBgYWRkQ2hpbGRgIHdvbid0IGluc2VydCBpZ25vcmVkIGNoaWxkcmVuLCB3ZSBzdGlsbCBuZWVk
IHRoaXMgYWNjZXNzaWJpbGl0eUlzSWdub3JlZAorICAgICAgICAgICAgLy8gY2hlY2sgc28gdGhh
dCBgYWRkQ2hpbGRgIGRvZXNuJ3QgdHJ5IHRvIGFkZCB0aGUgY2FwdGlvbidzIGNoaWxkcmVuIGlu
IGl0cyBzdGVhZC4gQmFzaWNhbGx5LAorICAgICAgICAgICAgLy8gZXhwbGljaXRseSBjaGVja2lu
ZyBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgaWdub3JlcyB0aGUgY2FwdGlvbiBhbmQgYW55IG9m
IGl0cyBjaGlsZHJlbi4KICAgICAgICAgICAgIGlmIChheENhcHRpb24gJiYgIWF4Q2FwdGlvbi0+
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKGF4Q2FwdGlvbik7CisgICAgICAgICAgICAgICAgYWRkQ2hpbGQoYXhDYXB0aW9uKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtNDIwLDEzICs0MjMsOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlU
YWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAg
ICAgICAgIGNvbHVtbi5zZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQo
JmNvbHVtbik7Ci0gICAgICAgIGlmICghY29sdW1uLmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkK
LSAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZjb2x1bW4pOworICAgICAgICBhZGRDaGls
ZCgmY29sdW1uKTsKICAgICB9Ci0KLSAgICBhdXRvKiBoZWFkZXJDb250YWluZXJPYmplY3QgPSBo
ZWFkZXJDb250YWluZXIoKTsKLSAgICBpZiAoaGVhZGVyQ29udGFpbmVyT2JqZWN0ICYmICFoZWFk
ZXJDb250YWluZXJPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgbV9j
aGlsZHJlbi5hcHBlbmQoaGVhZGVyQ29udGFpbmVyT2JqZWN0KTsKKyAgICBhZGRDaGlsZChoZWFk
ZXJDb250YWluZXIoKSk7CiAKICAgICAvLyBTb21ldGltZXMgdGhlIGNlbGwgZ2V0cyB0aGUgd3Jv
bmcgcm9sZSBpbml0aWFsbHkgYmVjYXVzZSBpdCBpcyBjcmVhdGVkIGJlZm9yZSB0aGUgcGFyZW50
CiAgICAgLy8gZGV0ZXJtaW5lcyB3aGV0aGVyIGl0IGlzIGFuIGFjY2Vzc2liaWxpdHkgdGFibGUu
IEl0ZXJhdGUgYWxsIHRoZSBjZWxscyBhbmQgYWxsb3cgdGhlbSB0bwpAQCAtNDUxLDggKzQ1MCw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmls
aXR5T2JqZWN0KiByb3dPYmplY3QsIEhhc2hTCiAgICAgCiAgICAgcm93LnNldFJvd0luZGV4KHN0
YXRpY19jYXN0PGludD4obV9yb3dzLnNpemUoKSkpOwogICAgIG1fcm93cy5hcHBlbmQoJnJvdyk7
Ci0gICAgaWYgKCFyb3cuYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZCgmcm93KTsKKyAgICBhZGRDaGlsZCgmcm93KTsKICAgICBhcHBlbmRlZFJvd3Mu
YWRkKCZyb3cpOwogICAgICAgICAKICAgICAvLyBzdG9yZSB0aGUgbWF4aW11bSBudW1iZXIgb2Yg
Y29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCmluZGV4IDQ0NDA0ZjZmZDY5NzgzNTg2ZDU4OWM0MzI1
NjI0MTljNDY1MzFjYmQuLjUwYWRjMjYzZDEyMTEzMmM3ZjQzNWNhYjNjMmIxZjcyMzgzYjE0NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbi5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBpZiAobV9jaGlsZHJlbi5zaXpl
KCkgPiAwICYmIG1fY2hpbGRyZW4ubGFzdCgpID09IGNlbGwpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIAotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChjZWxsKTsKKyAgICAg
ICAgYWRkQ2hpbGQoY2VsbCk7CiAgICAgfQogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJD
b250YWluZXIuY3BwCmluZGV4IDcyNTgxMTZmNWQxYmVkOTgxOTNmMzE1YmQzMjU4YmRjYmU1ZTY5
YWIuLmQ0YTEwZWRmN2I0NzgzYjdlODc5NzI5ZGU3ZTA2ODg4MGJmMjhmYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKQEAgLTczLDcgKzczLDggQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OmFkZENoaWxkcmVuKCkKICAgICBpZiAoIXBhcmVu
dFRhYmxlLmlzRXhwb3NhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2hpbGRyZW4g
PSBwYXJlbnRUYWJsZS5jb2x1bW5IZWFkZXJzKCk7CisgICAgZm9yIChhdXRvJiBjb2x1bW5IZWFk
ZXIgOiBwYXJlbnRUYWJsZS5jb2x1bW5IZWFkZXJzKCkpCisgICAgICAgIGFkZENoaWxkKGNvbHVt
bkhlYWRlci5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogbV9jaGlsZHJl
bikKICAgICAgICAgbV9oZWFkZXJSZWN0LnVuaXRlKGNoaWxkLT5lbGVtZW50UmVjdCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmNwcAppbmRleCBlZDBmYjBiMmNhNGQ1YTY4NTViMjkzMzFhZjk4ZWJhNDUyMmY2OWZmLi5j
YTY0N2I2NGE4NGYyODc5MzY3Y2EwMGIyMWZlYTE4MmVmOGNhNDk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCkBA
IC0xMDksNyArMTA5LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVS
b3c6OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KLSAg
ICAKKwogQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgp
CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlUm93KCkpCkBA
IC0xNTAsMTAgKzE1MCwxMiBAQCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
aGVhZGVyT2JqZWN0KCkKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGlsZHJlbigp
CiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgc3BlY2lmaWVzIGl0cyBjZWxscyB0aHJvdWdoIGFy
aWEtb3ducywgcmV0dXJuIHRoYXQgZmlyc3QuCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGFyaWFPd25zOwotICAgIGFyaWFPd25zRWxlbWVudHMoYXJpYU93bnMpOwotICAgIGlmIChh
cmlhT3ducy5zaXplKCkpCi0gICAgICAgIG1fY2hpbGRyZW4gPSBXVEZNb3ZlKGFyaWFPd25zKTsK
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bmVkRWxlbWVudHM7CisgICAg
YXJpYU93bnNFbGVtZW50cyhhcmlhT3duZWRFbGVtZW50cyk7CisgICAgaWYgKGFyaWFPd25lZEVs
ZW1lbnRzLnNpemUoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGFyaWFPd25lZEVsZW1lbnQgOiBh
cmlhT3duZWRFbGVtZW50cykKKyAgICAgICAgICAgIGFkZENoaWxkKGFyaWFPd25lZEVsZW1lbnQu
Z2V0KCkpOworICAgIH0KICAgICBlbHNlCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZENoaWxkcmVuKCk7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441752</attachid>
            <date>2021-10-19 10:27:12 -0700</date>
            <delta_ts>2021-10-20 14:16:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231914-20211019122711.patch</filename>
            <type>text/plain</type>
            <size>17496</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk2MDkwOTlhN2Q4NDVm
YmVmYzljYTEwZGE5YTgzZTAyMGE2YzE3ZS4uNDdkYjVmN2MzNjVjZjFiMTllNTA1YzYxNDFmMzE2
ZWM1NDJkN2ZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEwLTE4ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFueSBhZGRpdGlv
biBvZiBjaGlsZHJlbiBzaG91bGQgZnVubmVsIHRocm91Z2ggQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWRkQ2hpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbCBhZGRpdGlvbiBvZiBjaGlsZHJlbiBub3cgZ29lcyB0aHJvdWdoCisgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFkZENoaWxkLiBUaGlzIGlzIGdvb2QgZm9yIHR3byByZWFzb25zOgor
CisgICAgICAgIDEuIEl0IGVuc3VyZXMgd2UgYXJlbid0IGluc2VydGluZyBpZ25vcmVkIGVsZW1l
bnRzIGludG8gdGhlIHRyZWUuCisgICAgICAgIGBpbnNlcnRDaGlsZGAgKGRvd25zdHJlYW0gb2Yg
YGFkZENoaWxkYCkgY2hlY2tzIHRoaXMuIFByaW9yIHRvIHRoaXMKKyAgICAgICAgcGF0Y2gsIHRo
ZXJlIHdlcmUgY2FzZXMgd2hlcmUgd2UgY291bGQgaW5zZXJ0IGlnbm9yZWQgY2hpbGRyZW4gaW50
byB0aGUKKyAgICAgICAgdHJlZSBiZWNhdXNlIG5vIGNoZWNrIHdhcyBtYWRlLgorCisgICAgICAg
IDIuIFdlIGNhbiByZWxpYWJseSBzZXQgc3RhdGUgb24gdGhlIGNoaWxkIGJhc2VkIG9uIHRoZSBz
dGF0ZSBvZiB0aGUKKyAgICAgICAgcGFyZW50IGF0IGluc2VydGlvbiB0aW1lLiBGb3IgZXhhbXBs
ZSwgY2hpbGRyZW4gY2FuIHNldCBhIGZsYWcgaWYKKyAgICAgICAgYW55IG9mIHRoZWlyIGFuY2Vz
dG9ycyBoYXZlIGFuIGFwcGxpY2F0aW9uIG9yIGRvY3VtZW50IHJvbGUsIHdoaWNoIGNhbgorICAg
ICAgICBiZSB1c2VmdWwgZm9yIHNvbWUgQVggY2xpZW50cy4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlN
ZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNBdXRvZmlsbEJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVT
VkdDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRk
Q2hpbGRTY3JvbGxiYXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRy
ZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbik6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjph
ZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisKIDIwMjEtMTAtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIEV4cG9zZSBNZWRpYUNhcGFiaWxpdGllcyB0byBXb3JrZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAK
aW5kZXggNGVmYmY0ZTI2YmNjNTRhNDYyZGY2OGEwZTFlOWQ0ZTgxNmMwMDM0ZS4uODdiM2IxMmNk
NzA1YmFmN2ZhOWU2OTE5NmFiMWJmMmFmNzNlNGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApAQCAtNjcsMTQg
KzY3LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFY
Q29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXMKICAgICAKICAgICByb3cuc2V0Um93SW5k
ZXgoKGludCltX3Jvd3Muc2l6ZSgpKTsKICAgICBtX3Jvd3MuYXBwZW5kKCZyb3cpOwotCi0gICAg
Ly8gVHJ5IGFkZGluZyB0aGUgcm93IGlmIGl0J3Mgbm90IGlnbm9yaW5nIGFjY2Vzc2liaWxpdHks
Ci0gICAgLy8gb3RoZXJ3aXNlIGFkZCBpdHMgY2hpbGRyZW4gKHRoZSBjZWxscykgYXMgdGhlIGdy
aWQncyBjaGlsZHJlbi4KLSAgICBpZiAoIXJvdy5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0g
ICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZyb3cpOwotICAgIGVsc2UKLSAgICAgICAgbV9jaGls
ZHJlbi5hcHBlbmRWZWN0b3Iocm93LmNoaWxkcmVuKCkpOwotCisgICAgYWRkQ2hpbGQoJnJvdyk7
CiAgICAgYXBwZW5kZWRSb3dzLmFkZCgmcm93KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE0
MiwxMyArMTM1LDEwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbigp
CiAgICAgICAgIGNvbHVtbi5zZXRDb2x1bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBh
cmVudCh0aGlzKTsKICAgICAgICAgbV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKLSAgICAgICAg
aWYgKCFjb2x1bW4uYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgbV9jaGls
ZHJlbi5hcHBlbmQoJmNvbHVtbik7CisgICAgICAgIGFkZENoaWxkKCZjb2x1bW4pOwogICAgIH0K
IAotICAgIGF1dG8qIGhlYWRlckNvbnRhaW5lck9iamVjdCA9IGhlYWRlckNvbnRhaW5lcigpOwot
ICAgIGlmIChoZWFkZXJDb250YWluZXJPYmplY3QgJiYgIWhlYWRlckNvbnRhaW5lck9iamVjdC0+
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFk
ZXJDb250YWluZXJPYmplY3QpOworICAgIGFkZENoaWxkKGhlYWRlckNvbnRhaW5lcigpKTsKIH0K
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggNzIyODk0ZDg5ZDU2
MzkzYWUxMDA1NzMyY2U3ODc5NjJlNjcxMGQ3MS4uNzlmMzYwOTVlNzQzMzlhMmI4NTdmNTQ0NDVj
NDFhYTNjNjAzMDI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTczLDExICs3Myw4IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eUxpc3RCb3g6OmFkZENoaWxkcmVuKCkKIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1
ZTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0
RWxlbWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGxpc3RPcHRpb24gPSBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChs
aXN0SXRlbSk7Ci0gICAgICAgIGlmIChsaXN0T3B0aW9uICYmICFsaXN0T3B0aW9uLT5hY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChsaXN0T3B0
aW9uKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBsaXN0SXRlbSA6IGRvd25jYXN0PEhU
TUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0Tm9kZSkubGlzdEl0ZW1zKCkpCisgICAgICAgIGFkZENo
aWxkKGxpc3RCb3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKSk7CiB9CiAKIHZv
aWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OnNldFNlbGVjdGVkQ2hpbGRyZW4oY29uc3QgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAppbmRleCAyNzZkYzhl
YmY2YjQ1ZDRjMzM4NDVjMTQzNjk1NjE2MjMwN2Q4M2NjLi44ZTY1ZjhlNWU3YTgyNWUzNTFjZGUz
OThjM2ZiNWMyZDNhZDVkNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCkBAIC04Miw4ICs4Miw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGlsZHJlbigpCiAgICAgfQogCiAgICAgbV9oYXZl
Q2hpbGRyZW4gPSB0cnVlOwotICAgIG1fY2hpbGRyZW4uYXBwZW5kKGxpc3QpOwotCisgICAgYWRk
Q2hpbGQobGlzdCk7CiAgICAgbGlzdC0+YWRkQ2hpbGRyZW4oKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwLmNwcAppbmRleCA2NTcyOWFlOWRiMTYxMzQ5NzdlYWJkYWExZTRhNmExZGU0OWY3NTEwLi43
YzQ1MWFmNzk0NzYxYWVhZjMyMWIwNzM0MDc2YmVjYWJmMDI1ZjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwLmNwcApAQCAtOTYsMTEgKzk2LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cDo6YWRkQ2hpbGRyZW4oKQogCiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogCi0gICAgZm9y
IChjb25zdCBhdXRvJiBsaXN0SXRlbSA6IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqc2Vs
ZWN0Tm9kZSkubGlzdEl0ZW1zKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdoeSBkb2VzIEFjY2Vz
c2liaWxpdHlMaXN0Qm94OjphZGRDaGlsZHJlbiBjaGVjayBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
IGJ1dCB0aGlzIGRvZXMgbm90PwotICAgICAgICBpZiAoYXV0byBvcHRpb24gPSBtZW51TGlzdE9w
dGlvbkFjY2Vzc2liaWxpdHlPYmplY3QobGlzdEl0ZW0pKQotICAgICAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQob3B0aW9uKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBsaXN0SXRlbSA6
IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0Tm9kZSkubGlzdEl0ZW1zKCkpCisg
ICAgICAgIGFkZENoaWxkKG1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChsaXN0SXRl
bSkpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5n
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKaW5kZXggZTE3NGIyZmI0ZDUzNmY5MjI3MGM3NGRhNDc3ZWVhN2VkMTAxODA2
MC4uOTY2MjJjODVkN2IyNWNhNTFmZDNiNTZmYzNkMTZkZWQ1MDkzZDBmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBA
IC00ODIsNyArNDgyLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQWNjZXNzaWJpbGl0eU9iamVjdChB
WENvcmVPYmplY3QqIG9iamVjdCwgQWNjZXNzaWJpbGl0eU9iamVjdDoKICAgICBpZiAob2JqZWN0
KQogICAgICAgICByZXN1bHRzLmFwcGVuZChvYmplY3QpOwogfQotICAgIAorCiB2b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIHVuc2lnbmVk
IGluZGV4KQogewogICAgIGlmICghY2hpbGQpCkBAIC01MTQsMTAgKzUxNCw4IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgdW5zaWdu
ZWQgaW5kZXgpCiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBjaGlsZHJlbi5zaXplKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBtX2No
aWxkcmVuLmluc2VydChpbmRleCArIGksIGNoaWxkcmVuW2ldKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBBU1NFUlQoY2hpbGQtPnBhcmVudE9iamVjdCgpID09IHRoaXMpOworICAgIH0gZWxzZQog
ICAgICAgICBtX2NoaWxkcmVuLmluc2VydChpbmRleCwgY2hpbGQpOwotICAgIH0KICAgICAKICAg
ICAvLyBSZXNldCB0aGUgY2hpbGQncyBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhIHNpbmNlIHdl
IGFyZSBkb25lIGFkZGluZyB0aGF0IGNoaWxkIGFuZCBpdHMgY2hpbGRyZW4uCiAgICAgY2hpbGQt
PmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDk5MWNhZGU5YjIzMjNkMWFmYmM3NTg3YmMyMjA5N2Q1MjdjZjk3ZDkuLmNiZjQzOWRiOTE2MDg0
MjhjY2U5OTcwYjFjMTkxZTQ2NmRiN2Y1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzI4
NCw3ICszMjg0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1h
cENoaWxkcmVuKCkKICAgICAgICAgYXJlYU9iamVjdC5zZXRIVE1MTWFwRWxlbWVudChtYXApOwog
ICAgICAgICBhcmVhT2JqZWN0LnNldFBhcmVudCh0aGlzKTsKICAgICAgICAgaWYgKCFhcmVhT2Jq
ZWN0LmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKCZhcmVhT2JqZWN0KTsKKyAgICAgICAgICAgIGFkZENoaWxkKCZhcmVhT2JqZWN0KTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5yZW1vdmUoYXJlYU9iamVj
dC5vYmplY3RJRCgpKTsKICAgICB9CkBAIC0zMzA1LDEwICszMzA1LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbigpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKTsKLSAgICBpZiAoSFRNTEVsZW1lbnQqIGF1dG9GaWxsRWxlbWVudCA9
IGlucHV0LmF1dG9GaWxsQnV0dG9uRWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheEF1dG9GaWxsID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShhdXRv
RmlsbEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhBdXRvRmlsbCk7
Ci0gICAgfQorICAgIGFkZENoaWxkKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoaW5wdXQu
YXV0b0ZpbGxCdXR0b25FbGVtZW50KCkpKTsKICAgICAKICAgICBIVE1MRWxlbWVudCogc3BpbkJ1
dHRvbkVsZW1lbnQgPSBpbnB1dC5pbm5lclNwaW5CdXR0b25FbGVtZW50KCk7CiAgICAgaWYgKCFp
czxTcGluQnV0dG9uRWxlbWVudD4oc3BpbkJ1dHRvbkVsZW1lbnQpKQpAQCAtMzMxNyw3ICszMzE0
LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJl
bigpCiAgICAgYXV0byYgYXhTcGluQnV0dG9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5C
dXR0b24+KCpheE9iamVjdENhY2hlKCktPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1
dHRvbikpOwogICAgIGF4U3BpbkJ1dHRvbi5zZXRTcGluQnV0dG9uRWxlbWVudChkb3duY2FzdDxT
cGluQnV0dG9uRWxlbWVudD4oc3BpbkJ1dHRvbkVsZW1lbnQpKTsKICAgICBheFNwaW5CdXR0b24u
c2V0UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZheFNwaW5CdXR0b24pOwor
ICAgIGFkZENoaWxkKCZheFNwaW5CdXR0b24pOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKCkgY29uc3QKQEAgLTMzODEsMTIgKzMzNzgsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJlbW90ZVNWR0NoaWxkcmVuKCkKICAg
ICAvLyBJbiBvcmRlciB0byBjb25uZWN0IHRoZSBBWCBoaWVyYXJjaHkgZnJvbSB0aGUgU1ZHIHJv
b3QgZWxlbWVudCBmcm9tIHRoZSBsb2FkZWQgcmVzb3VyY2UKICAgICAvLyB0aGUgcGFyZW50IG11
c3QgYmUgc2V0LCBiZWNhdXNlIHRoZXJlJ3Mgbm8gb3RoZXIgd2F5IHRvIGdldCBiYWNrIHRvIHdo
byBjcmVhdGVkIHRoZSBpbWFnZS4KICAgICByb290LT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgCi0g
ICAgaWYgKHJvb3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewotICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGNoaWxkIDogcm9vdC0+Y2hpbGRyZW4oKSkKLSAgICAgICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKGNoaWxkKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQo
cm9vdCk7CisgICAgYWRkQ2hpbGQocm9vdCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWRkQ2FudmFzQ2hpbGRyZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAppbmRleCAyMDA4OWM5
NTg5YWJjYjE0NWNiMzQ5OGJiZGNkMTkxZDgyMTg5ZjkyLi42YmI0MjZiNzE0MTg5ZTk5NWVmNjIx
NmVjYzFlMTM0NzBkMTY1ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBA
IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGls
ZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjCiAKICAgICBhdXRvJiBzY3JvbGxCYXJPYmplY3QgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyPigqY2FjaGUtPmdldE9yQ3JlYXRlKHNjcm9s
bGJhcikpOwogICAgIHNjcm9sbEJhck9iamVjdC5zZXRQYXJlbnQodGhpcyk7Ci0gICAgbV9jaGls
ZHJlbi5hcHBlbmQoJnNjcm9sbEJhck9iamVjdCk7CisgICAgYWRkQ2hpbGQoJnNjcm9sbEJhck9i
amVjdCk7CiAgICAgcmV0dXJuICZzY3JvbGxCYXJPYmplY3Q7CiB9CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAK
aW5kZXggN2QwNzNiZDZhODhkMWE2NGJmZmE4ZWRhZmE3MDk1ZmNjNWU1YmRlYy4uZWUxMThkNTUy
NjJmNjIwNGUxY2E1NDI3MzUxMDgyYTdmZTk1Mzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCkBAIC0xMDAsNyArMTAw
LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGlsZHJlbigpCiAgICAgaWYgKHRo
dW1iLmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAgICAgY2FjaGUtPnJlbW92ZSh0aHVt
Yi5vYmplY3RJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZ0aHVt
Yik7CisgICAgICAgIGFkZENoaWxkKCZ0aHVtYik7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIEFj
Y2Vzc2liaWxpdHlTbGlkZXI6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCmluZGV4IDkyOWY2MTM1YzIyZWQwYTk4ZDZlYzU3
MTQ0ODYxZmZkZDRkMDc5YmUuLmY4OTJiMmU5ZDNhNzI1YjFhMWU0MjcyMDdkMzdjNTMyZGIxNWRj
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNwaW5CdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b24uY3BwCkBAIC05MSwxMiArOTEsMTIgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRyZW4oKQogICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBpbmNyZW1lbnRvci5zZXRJc0luY3Jl
bWVudG9yKHRydWUpOwogICAgIGluY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKLSAgICBtX2No
aWxkcmVuLmFwcGVuZCgmaW5jcmVtZW50b3IpOworICAgIGFkZENoaWxkKCZpbmNyZW1lbnRvcik7
CiAKICAgICBhdXRvJiBkZWNyZW1lbnRvciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uUGFydD4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0
KSk7CiAgICAgZGVjcmVtZW50b3Iuc2V0SXNJbmNyZW1lbnRvcihmYWxzZSk7CiAgICAgZGVjcmVt
ZW50b3Iuc2V0UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZkZWNyZW1lbnRv
cik7CisgICAgYWRkQ2hpbGQoJmRlY3JlbWVudG9yKTsKIH0KICAgICAKIHZvaWQgQWNjZXNzaWJp
bGl0eVNwaW5CdXR0b246OnN0ZXAoaW50IGFtb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBmNjcyZjRhMWFmMDUz
NTVlNmU3MzA1MDU5Mzg2ZDA0MTk3OWRkYjJkLi44MzIwZDc1ZTZlMzk0NjMwNDU2ZWIzMzAzZTRl
YWE1YmU2MGJmNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0zOTQsOCArMzk0LDExIEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxl
RWxlbWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvIGNhcHRp
b24gPSB0YWJsZUVsZW1lbnQtPmNhcHRpb24oKSkgewogICAgICAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogYXhDYXB0aW9uID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjYXB0aW9u
LmdldCgpKTsKKyAgICAgICAgICAgIC8vIFdoaWxlIGBhZGRDaGlsZGAgd29uJ3QgaW5zZXJ0IGln
bm9yZWQgY2hpbGRyZW4sIHdlIHN0aWxsIG5lZWQgdGhpcyBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
CisgICAgICAgICAgICAvLyBjaGVjayBzbyB0aGF0IGBhZGRDaGlsZGAgZG9lc24ndCB0cnkgdG8g
YWRkIHRoZSBjYXB0aW9uJ3MgY2hpbGRyZW4gaW4gaXRzIHN0ZWFkLiBCYXNpY2FsbHksCisgICAg
ICAgICAgICAvLyBleHBsaWNpdGx5IGNoZWNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBp
Z25vcmVzIHRoZSBjYXB0aW9uIGFuZCBhbnkgb2YgaXRzIGNoaWxkcmVuLgogICAgICAgICAgICAg
aWYgKGF4Q2FwdGlvbiAmJiAhYXhDYXB0aW9uLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0g
ICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhDYXB0aW9uKTsKKyAgICAgICAgICAg
ICAgICBhZGRDaGlsZChheENhcHRpb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MjAsMTMg
KzQyMyw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgICAg
IGNvbHVtbi5zZXRDb2x1bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlz
KTsKICAgICAgICAgbV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKLSAgICAgICAgaWYgKCFjb2x1
bW4uYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBl
bmQoJmNvbHVtbik7CisgICAgICAgIGFkZENoaWxkKCZjb2x1bW4pOwogICAgIH0KLQotICAgIGF1
dG8qIGhlYWRlckNvbnRhaW5lck9iamVjdCA9IGhlYWRlckNvbnRhaW5lcigpOwotICAgIGlmICho
ZWFkZXJDb250YWluZXJPYmplY3QgJiYgIWhlYWRlckNvbnRhaW5lck9iamVjdC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWlu
ZXJPYmplY3QpOworICAgIGFkZENoaWxkKGhlYWRlckNvbnRhaW5lcigpKTsKIAogICAgIC8vIFNv
bWV0aW1lcyB0aGUgY2VsbCBnZXRzIHRoZSB3cm9uZyByb2xlIGluaXRpYWxseSBiZWNhdXNlIGl0
IGlzIGNyZWF0ZWQgYmVmb3JlIHRoZSBwYXJlbnQKICAgICAvLyBkZXRlcm1pbmVzIHdoZXRoZXIg
aXQgaXMgYW4gYWNjZXNzaWJpbGl0eSB0YWJsZS4gSXRlcmF0ZSBhbGwgdGhlIGNlbGxzIGFuZCBh
bGxvdyB0aGVtIHRvCkBAIC00NTEsOCArNDUwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6
OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvd09iamVjdCwgSGFzaFMK
ICAgICAKICAgICByb3cuc2V0Um93SW5kZXgoc3RhdGljX2Nhc3Q8aW50PihtX3Jvd3Muc2l6ZSgp
KSk7CiAgICAgbV9yb3dzLmFwcGVuZCgmcm93KTsKLSAgICBpZiAoIXJvdy5hY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkpCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZyb3cpOworICAgIGFkZENo
aWxkKCZyb3cpOwogICAgIGFwcGVuZGVkUm93cy5hZGQoJnJvdyk7CiAgICAgICAgIAogICAgIC8v
IHN0b3JlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5k
ZXggNDQ0MDRmNmZkNjk3ODM1ODZkNTg5YzQzMjU2MjQxOWM0NjUzMWNiZC4uNTBhZGMyNjNkMTIx
MTMyYzdmNDM1Y2FiM2MyYjFmNzIzODNiMTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMjAy
LDcgKzIwMiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbigp
CiAgICAgICAgIGlmIChtX2NoaWxkcmVuLnNpemUoKSA+IDAgJiYgbV9jaGlsZHJlbi5sYXN0KCkg
PT0gY2VsbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKGNlbGwpOworICAgICAgICBhZGRDaGlsZChjZWxsKTsKICAgICB9CiB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggNzI1ODExNmY1
ZDFiZWQ5ODE5M2YzMTViZDMyNThiZGNiZTVlNjlhYi4uZDRhMTBlZGY3YjQ3ODNiN2U4Nzk3Mjlk
ZTdlMDY4ODgwYmYyOGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcApA
QCAtNzMsNyArNzMsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6
YWRkQ2hpbGRyZW4oKQogICAgIGlmICghcGFyZW50VGFibGUuaXNFeHBvc2FibGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jaGlsZHJlbiA9IHBhcmVudFRhYmxlLmNvbHVtbkhlYWRlcnMo
KTsKKyAgICBmb3IgKGF1dG8mIGNvbHVtbkhlYWRlciA6IHBhcmVudFRhYmxlLmNvbHVtbkhlYWRl
cnMoKSkKKyAgICAgICAgYWRkQ2hpbGQoY29sdW1uSGVhZGVyLmdldCgpKTsKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQogICAgICAgICBtX2hlYWRlclJlY3QudW5p
dGUoY2hpbGQtPmVsZW1lbnRSZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IGVkMGZiMGIyY2E0ZDVh
Njg1NWIyOTMzMWFmOThlYmE0NTIyZjY5ZmYuLmNhNjQ3YjY0YTg0ZjI4NzkzNjdjYTAwYjIxZmVh
MTgyZWY4Y2E0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBBY2Nlc3NpYmls
aXR5VGFibGUqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6cGFyZW50VGFibGUoKSBjb25zdAogICAg
IAogICAgIHJldHVybiBudWxscHRyOwogfQotICAgIAorCiBBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwg
IW1fcmVuZGVyZXItPmlzVGFibGVSb3coKSkKQEAgLTE1MCwxMCArMTUwLDEyIEBAIEFYQ29yZU9i
amVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogdm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGVSb3c6OmFkZENoaWxkcmVuKCkKIHsKICAgICAvLyBJZiB0aGUgZWxlbWVudCBz
cGVjaWZpZXMgaXRzIGNlbGxzIHRocm91Z2ggYXJpYS1vd25zLCByZXR1cm4gdGhhdCBmaXJzdC4K
LSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7Ci0gICAgYXJpYU93bnNF
bGVtZW50cyhhcmlhT3ducyk7Ci0gICAgaWYgKGFyaWFPd25zLnNpemUoKSkKLSAgICAgICAgbV9j
aGlsZHJlbiA9IFdURk1vdmUoYXJpYU93bnMpOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBhcmlhT3duZWRFbGVtZW50czsKKyAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25lZEVs
ZW1lbnRzKTsKKyAgICBpZiAoYXJpYU93bmVkRWxlbWVudHMuc2l6ZSgpKSB7CisgICAgICAgIGZv
ciAoYXV0byYgYXJpYU93bmVkRWxlbWVudCA6IGFyaWFPd25lZEVsZW1lbnRzKQorICAgICAgICAg
ICAgYWRkQ2hpbGQoYXJpYU93bmVkRWxlbWVudC5nZXQoKSk7CisgICAgfQogICAgIGVsc2UKICAg
ICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441933</attachid>
            <date>2021-10-20 14:16:35 -0700</date>
            <delta_ts>2021-10-20 14:39:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231914-20211020161634.patch</filename>
            <type>text/plain</type>
            <size>17190</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZhNTA2YmQzY2EyZTU4
OGNhNTJjYjA2M2VlODQzMWRiZjNhNGQyNy4uZDE3YjVlZTMxMjRlZmJlMDI4N2I4YzcxMTNlMTgz
MGVkZGZjNGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEwLTIwICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFueSBhZGRpdGlv
biBvZiBjaGlsZHJlbiBzaG91bGQgZnVubmVsIHRocm91Z2ggQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWRkQ2hpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbCBhZGRpdGlvbiBvZiBjaGlsZHJlbiBub3cgZ29lcyB0aHJvdWdoCisgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFkZENoaWxkLiBUaGlzIGlzIGdvb2QgZm9yIHR3byByZWFzb25zOgor
CisgICAgICAgIDEuIEl0IGVuc3VyZXMgd2UgYXJlbid0IGluc2VydGluZyBpZ25vcmVkIGVsZW1l
bnRzIGludG8gdGhlIHRyZWUuCisgICAgICAgIGBpbnNlcnRDaGlsZGAgKGRvd25zdHJlYW0gb2Yg
YGFkZENoaWxkYCkgY2hlY2tzIHRoaXMuIFByaW9yIHRvIHRoaXMKKyAgICAgICAgcGF0Y2gsIHRo
ZXJlIHdlcmUgY2FzZXMgd2hlcmUgd2UgY291bGQgaW5zZXJ0IGlnbm9yZWQgY2hpbGRyZW4gaW50
byB0aGUKKyAgICAgICAgdHJlZSBiZWNhdXNlIG5vIGNoZWNrIHdhcyBtYWRlLgorCisgICAgICAg
IDIuIFdlIGNhbiByZWxpYWJseSBzZXQgc3RhdGUgb24gdGhlIGNoaWxkIGJhc2VkIG9uIHRoZSBz
dGF0ZSBvZiB0aGUKKyAgICAgICAgcGFyZW50IGF0IGluc2VydGlvbiB0aW1lLiBGb3IgZXhhbXBs
ZSwgY2hpbGRyZW4gY2FuIHNldCBhIGZsYWcgaWYKKyAgICAgICAgYW55IG9mIHRoZWlyIGFuY2Vz
dG9ycyBoYXZlIGFuIGFwcGxpY2F0aW9uIG9yIGRvY3VtZW50IHJvbGUsIHdoaWNoIGNhbgorICAg
ICAgICBiZSB1c2VmdWwgZm9yIHNvbWUgQVggY2xpZW50cy4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlN
ZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNBdXRvZmlsbEJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVT
VkdDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRk
Q2hpbGRTY3JvbGxiYXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRy
ZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbik6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjph
ZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisKIDIwMjEtMTAtMjAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHVzZWxlc3MgZGVmaW5pdGlvbiBmcm9tIElEQkRhdGFiYXNlLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwCmluZGV4IDRlZmJmNGUyNmJjYzU0YTQ2MmRmNjhhMGUxZTlkNGU4MTZjMDAzNGUu
Ljg3YjNiMTJjZDcwNWJhZjdmYTllNjkxOTZhYjFiZjJhZjczZTRkNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAK
QEAgLTY3LDE0ICs2Nyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNl
bGxDaGlsZChBWENvcmVPYmplY3QqIGNoaWxkLCBIYXNoU2V0PEFjY2VzCiAgICAgCiAgICAgcm93
LnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7CiAgICAgbV9yb3dzLmFwcGVuZCgmcm93
KTsKLQotICAgIC8vIFRyeSBhZGRpbmcgdGhlIHJvdyBpZiBpdCdzIG5vdCBpZ25vcmluZyBhY2Nl
c3NpYmlsaXR5LAotICAgIC8vIG90aGVyd2lzZSBhZGQgaXRzIGNoaWxkcmVuICh0aGUgY2VsbHMp
IGFzIHRoZSBncmlkJ3MgY2hpbGRyZW4uCi0gICAgaWYgKCFyb3cuYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmcm93KTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fY2hpbGRyZW4uYXBwZW5kVmVjdG9yKHJvdy5jaGlsZHJlbigpKTsKLQorICAgIGFkZENo
aWxkKCZyb3cpOwogICAgIGFwcGVuZGVkUm93cy5hZGQoJnJvdyk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNDIsMTMgKzEzNSwxMCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRk
Q2hpbGRyZW4oKQogICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAgICAgICAgIGNv
bHVtbi5zZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7
Ci0gICAgICAgIGlmICghY29sdW1uLmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAg
ICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZjb2x1bW4pOworICAgICAgICBhZGRDaGlsZCgmY29sdW1u
KTsKICAgICB9CiAKLSAgICBhdXRvKiBoZWFkZXJDb250YWluZXJPYmplY3QgPSBoZWFkZXJDb250
YWluZXIoKTsKLSAgICBpZiAoaGVhZGVyQ29udGFpbmVyT2JqZWN0ICYmICFoZWFkZXJDb250YWlu
ZXJPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgbV9jaGlsZHJlbi5h
cHBlbmQoaGVhZGVyQ29udGFpbmVyT2JqZWN0KTsKKyAgICBhZGRDaGlsZChoZWFkZXJDb250YWlu
ZXIoKSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCmluZGV4IDcy
Mjg5NGQ4OWQ1NjM5M2FlMTAwNTczMmNlNzg3OTYyZTY3MTBkNzEuLjc5ZjM2MDk1ZTc0MzM5YTJi
ODU3ZjU0NDQ1YzQxYWEzYzYwMzAyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCkBAIC03MywxMSArNzMsOCBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjphZGRDaGlsZHJlbigpCiAKICAgICBtX2hhdmVDaGls
ZHJlbiA9IHRydWU7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGxpc3RJdGVtIDogZG93bmNhc3Q8
SFRNTFNlbGVjdEVsZW1lbnQ+KCpzZWxlY3ROb2RlKS5saXN0SXRlbXMoKSkgewotICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0T3B0aW9uID0gbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxp
dHlPYmplY3QobGlzdEl0ZW0pOwotICAgICAgICBpZiAobGlzdE9wdGlvbiAmJiAhbGlzdE9wdGlv
bi0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBl
bmQobGlzdE9wdGlvbik7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBk
b3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJdGVtcygpKQorICAg
ICAgICBhZGRDaGlsZChsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChsaXN0SXRlbSkp
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpzZXRTZWxlY3RlZENoaWxkcmVuKGNv
bnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKaW5k
ZXggMjc2ZGM4ZWJmNmI0NWQ0YzMzODQ1YzE0MzY5NTYxNjIzMDdkODNjYy4uOGU2NWY4ZTVlN2E4
MjVlMzUxY2RlMzk4YzNmYjVjMmQzYWQ1ZDYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApAQCAtODIsOCArODIs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4oKQogICAgIH0KIAog
ICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZChsaXN0KTsK
LQorICAgIGFkZENoaWxkKGxpc3QpOwogICAgIGxpc3QtPmFkZENoaWxkcmVuKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHAKaW5kZXggNjU3MjlhZTlkYjE2MTM0OTc3ZWFiZGFhMWU0YTZhMWRl
NDlmNzUxMC4uN2M0NTFhZjc5NDc2MWFlYWYzMjFiMDczNDA3NmJlY2FiZjAyNWYyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQ
b3B1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHAKQEAgLTk2LDExICs5Niw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKCkKIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsK
IAotICAgIGZvciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxl
bWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaHkg
ZG9lcyBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4gY2hlY2sgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCBidXQgdGhpcyBkb2VzIG5vdD8KLSAgICAgICAgaWYgKGF1dG8gb3B0aW9uID0g
bWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKSkKLSAgICAgICAgICAg
IG1fY2hpbGRyZW4uYXBwZW5kKG9wdGlvbik7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYg
bGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJ
dGVtcygpKQorICAgICAgICBhZGRDaGlsZChtZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QobGlzdEl0ZW0pKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6Y2hp
bGRyZW5DaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDFhNzBiMmVmZDYyMWUxMWNiNjYyZTkyNTAxNWUw
MjhmMzRkNjQ1NDIuLjNmYmVlMGNhYzk3NTUxMDczNWUzNGQ2ZmM2MjUxMTI1YWExYjQ4MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcApAQCAtNDgzLDcgKzQ4MywxMiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBY2Nlc3NpYmls
aXR5T2JqZWN0KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OgogICAg
IGlmIChvYmplY3QpCiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9Ci0gICAgCisK
K3N0YXRpYyBib29sIGlzVGFibGVDb21wb25lbnQoQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKK3sK
KyAgICByZXR1cm4gYXhPYmplY3QuaXNUYWJsZSgpIHx8IGF4T2JqZWN0LmlzVGFibGVDb2x1bW4o
KSB8fCBheE9iamVjdC5pc1RhYmxlUm93KCkgfHwgYXhPYmplY3QuaXNUYWJsZUNlbGwoKTsKK30K
Kwogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnNlcnRDaGlsZChBWENvcmVPYmplY3QqIGNo
aWxkLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWNoaWxkKQpAQCAtNTE2LDcgKzUyMSw5
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiBj
aGlsZCwgdW5zaWduZWQgaW5kZXgpCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpCiAgICAgICAgICAgICBtX2NoaWxkcmVuLmluc2VydChpbmRleCArIGksIGNoaWxk
cmVuW2ldKTsKICAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoY2hpbGQtPnBhcmVudE9iamVj
dCgpID09IHRoaXMpOworICAgICAgICAvLyBUYWJsZSBjb21wb25lbnQgY2hpbGQtcGFyZW50IHJl
bGF0aW9uc2hpcHMgb2Z0ZW4gZG9uJ3QgbGluZSB1cCBwcm9wZXJseSwgaGVuY2UgdGhlIG5lZWQg
Zm9yIG1ldGhvZHMKKyAgICAgICAgLy8gbGlrZSBwYXJlbnRUYWJsZSgpIGFuZCBwYXJlbnRSb3co
KS4gRXhjbHVkZSB0aGVtIGZyb20gdGhpcyBBU1NFUlQuCisgICAgICAgIEFTU0VSVCgoIWlzVGFi
bGVDb21wb25lbnQoKmNoaWxkKSAmJiAhaXNUYWJsZUNvbXBvbmVudCgqdGhpcykpID8gY2hpbGQt
PnBhcmVudE9iamVjdCgpID09IHRoaXMgOiB0cnVlKTsKICAgICAgICAgbV9jaGlsZHJlbi5pbnNl
cnQoaW5kZXgsIGNoaWxkKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBl
Mjg5NTQ5ZjAwNmQxNGVjMjQ1ZTQ4NzI4ZGJiN2E5ZjYwMmQ2ZTg0Li44YTVlYjJmNTU0ZTlkYTc2
ZWQ3ZTM4ZWRjMDFmOTRmNzVhNTRkYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTMyODMs
NyArMzI4Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBD
aGlsZHJlbigpCiAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTE1hcEVsZW1lbnQobWFwKTsKICAg
ICAgICAgYXJlYU9iamVjdC5zZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIGlmICghYXJlYU9iamVj
dC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVu
ZCgmYXJlYU9iamVjdCk7CisgICAgICAgICAgICBhZGRDaGlsZCgmYXJlYU9iamVjdCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3Qu
b2JqZWN0SUQoKSk7CiAgICAgfQpAQCAtMzMxNiw3ICszMzE2LDcgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbigpCiAgICAgYXV0byYgYXhTcGlu
QnV0dG9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24+KCpheE9iamVjdENhY2hl
KCktPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbikpOwogICAgIGF4U3BpbkJ1
dHRvbi5zZXRTcGluQnV0dG9uRWxlbWVudChkb3duY2FzdDxTcGluQnV0dG9uRWxlbWVudD4oc3Bp
bkJ1dHRvbkVsZW1lbnQpKTsKICAgICBheFNwaW5CdXR0b24uc2V0UGFyZW50KHRoaXMpOwotICAg
IG1fY2hpbGRyZW4uYXBwZW5kKCZheFNwaW5CdXR0b24pOworICAgIGFkZENoaWxkKCZheFNwaW5C
dXR0b24pOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0lt
YWdlKCkgY29uc3QKQEAgLTMzODAsMTIgKzMzODAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFkZFJlbW90ZVNWR0NoaWxkcmVuKCkKICAgICAvLyBJbiBvcmRlciB0byBjb25u
ZWN0IHRoZSBBWCBoaWVyYXJjaHkgZnJvbSB0aGUgU1ZHIHJvb3QgZWxlbWVudCBmcm9tIHRoZSBs
b2FkZWQgcmVzb3VyY2UKICAgICAvLyB0aGUgcGFyZW50IG11c3QgYmUgc2V0LCBiZWNhdXNlIHRo
ZXJlJ3Mgbm8gb3RoZXIgd2F5IHRvIGdldCBiYWNrIHRvIHdobyBjcmVhdGVkIHRoZSBpbWFnZS4K
ICAgICByb290LT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgCi0gICAgaWYgKHJvb3QtPmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm9v
dC0+Y2hpbGRyZW4oKSkKLSAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm9vdCk7CisgICAgYWRkQ2hpbGQo
cm9vdCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2FudmFzQ2hp
bGRyZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmNwcAppbmRleCAyMDA4OWM5NTg5YWJjYjE0NWNiMzQ5OGJiZGNk
MTkxZDgyMTg5ZjkyLi42YmI0MjZiNzE0MTg5ZTk5NWVmNjIxNmVjYzFlMTM0NzBkMTY1ZDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxi
YXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZFNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjCiAKICAgICBhdXRvJiBzY3JvbGxCYXJPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyPigqY2FjaGUtPmdldE9yQ3JlYXRlKHNjcm9sbGJhcikpOwogICAgIHNjcm9sbEJh
ck9iamVjdC5zZXRQYXJlbnQodGhpcyk7Ci0gICAgbV9jaGlsZHJlbi5hcHBlbmQoJnNjcm9sbEJh
ck9iamVjdCk7CisgICAgYWRkQ2hpbGQoJnNjcm9sbEJhck9iamVjdCk7CiAgICAgcmV0dXJuICZz
Y3JvbGxCYXJPYmplY3Q7CiB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKaW5kZXggN2QwNzNiZDZhODhkMWE2
NGJmZmE4ZWRhZmE3MDk1ZmNjNWU1YmRlYy4uZWUxMThkNTUyNjJmNjIwNGUxY2E1NDI3MzUxMDgy
YTdmZTk1Mzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5U2xpZGVyOjphZGRDaGlsZHJlbigpCiAgICAgaWYgKHRodW1iLmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKICAgICAgICAgY2FjaGUtPnJlbW92ZSh0aHVtYi5vYmplY3RJRCgpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZ0aHVtYik7CisgICAgICAgIGFkZENoaWxk
KCZ0aHVtYik7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlTbGlkZXI6Omdl
dEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uY3BwCmluZGV4IDkyOWY2MTM1YzIyZWQwYTk4ZDZlYzU3MTQ0ODYxZmZkZDRkMDc5YmUuLmY4
OTJiMmU5ZDNhNzI1YjFhMWU0MjcyMDdkMzdjNTMyZGIxNWRjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3Bw
CkBAIC05MSwxMiArOTEsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hp
bGRyZW4oKQogICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNw
aW5CdXR0b25QYXJ0PigqY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRv
blBhcnQpKTsKICAgICBpbmNyZW1lbnRvci5zZXRJc0luY3JlbWVudG9yKHRydWUpOwogICAgIGlu
Y3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZCgmaW5jcmVt
ZW50b3IpOworICAgIGFkZENoaWxkKCZpbmNyZW1lbnRvcik7CiAKICAgICBhdXRvJiBkZWNyZW1l
bnRvciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5jcmVh
dGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0KSk7CiAgICAgZGVjcmVtZW50b3Iu
c2V0SXNJbmNyZW1lbnRvcihmYWxzZSk7CiAgICAgZGVjcmVtZW50b3Iuc2V0UGFyZW50KHRoaXMp
OwotICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZkZWNyZW1lbnRvcik7CisgICAgYWRkQ2hpbGQoJmRl
Y3JlbWVudG9yKTsKIH0KICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OnN0ZXAo
aW50IGFtb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAppbmRleCBmNjcyZjRhMWFmMDUzNTVlNmU3MzA1MDU5Mzg2ZDA0MTk3
OWRkYjJkLi44MzIwZDc1ZTZlMzk0NjMwNDU2ZWIzMzAzZTRlYWE1YmU2MGJmNDllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
CkBAIC0zOTQsOCArMzk0LDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJl
bigpCiAgICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlRWxlbWVudCA9IHRoaXMtPnRhYmxl
RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvIGNhcHRpb24gPSB0YWJsZUVsZW1lbnQtPmNh
cHRpb24oKSkgewogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhDYXB0aW9uID0g
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjYXB0aW9uLmdldCgpKTsKKyAgICAgICAgICAg
IC8vIFdoaWxlIGBhZGRDaGlsZGAgd29uJ3QgaW5zZXJ0IGlnbm9yZWQgY2hpbGRyZW4sIHdlIHN0
aWxsIG5lZWQgdGhpcyBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkCisgICAgICAgICAgICAvLyBjaGVj
ayBzbyB0aGF0IGBhZGRDaGlsZGAgZG9lc24ndCB0cnkgdG8gYWRkIHRoZSBjYXB0aW9uJ3MgY2hp
bGRyZW4gaW4gaXRzIHN0ZWFkLiBCYXNpY2FsbHksCisgICAgICAgICAgICAvLyBleHBsaWNpdGx5
IGNoZWNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBpZ25vcmVzIHRoZSBjYXB0aW9uIGFu
ZCBhbnkgb2YgaXRzIGNoaWxkcmVuLgogICAgICAgICAgICAgaWYgKGF4Q2FwdGlvbiAmJiAhYXhD
YXB0aW9uLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICAgICAgbV9jaGls
ZHJlbi5hcHBlbmQoYXhDYXB0aW9uKTsKKyAgICAgICAgICAgICAgICBhZGRDaGlsZChheENhcHRp
b24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MjAsMTMgKzQyMyw5IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgICAgIGNvbHVtbi5zZXRDb2x1bW5JbmRl
eChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsKICAgICAgICAgbV9jb2x1bW5z
LmFwcGVuZCgmY29sdW1uKTsKLSAgICAgICAgaWYgKCFjb2x1bW4uYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoJmNvbHVtbik7CisgICAgICAg
IGFkZENoaWxkKCZjb2x1bW4pOwogICAgIH0KLQotICAgIGF1dG8qIGhlYWRlckNvbnRhaW5lck9i
amVjdCA9IGhlYWRlckNvbnRhaW5lcigpOwotICAgIGlmIChoZWFkZXJDb250YWluZXJPYmplY3Qg
JiYgIWhlYWRlckNvbnRhaW5lck9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOworICAgIGFkZENo
aWxkKGhlYWRlckNvbnRhaW5lcigpKTsKIAogICAgIC8vIFNvbWV0aW1lcyB0aGUgY2VsbCBnZXRz
IHRoZSB3cm9uZyByb2xlIGluaXRpYWxseSBiZWNhdXNlIGl0IGlzIGNyZWF0ZWQgYmVmb3JlIHRo
ZSBwYXJlbnQKICAgICAvLyBkZXRlcm1pbmVzIHdoZXRoZXIgaXQgaXMgYW4gYWNjZXNzaWJpbGl0
eSB0YWJsZS4gSXRlcmF0ZSBhbGwgdGhlIGNlbGxzIGFuZCBhbGxvdyB0aGVtIHRvCkBAIC00NTEs
OCArNDUwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZFRhYmxlQ2VsbENoaWxkKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHJvd09iamVjdCwgSGFzaFMKICAgICAKICAgICByb3cuc2V0Um93
SW5kZXgoc3RhdGljX2Nhc3Q8aW50PihtX3Jvd3Muc2l6ZSgpKSk7CiAgICAgbV9yb3dzLmFwcGVu
ZCgmcm93KTsKLSAgICBpZiAoIXJvdy5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAg
IG1fY2hpbGRyZW4uYXBwZW5kKCZyb3cpOworICAgIGFkZENoaWxkKCZyb3cpOwogICAgIGFwcGVu
ZGVkUm93cy5hZGQoJnJvdyk7CiAgICAgICAgIAogICAgIC8vIHN0b3JlIHRoZSBtYXhpbXVtIG51
bWJlciBvZiBjb2x1bW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggNDQ0MDRmNmZkNjk3ODM1ODZk
NTg5YzQzMjU2MjQxOWM0NjUzMWNiZC4uNTBhZGMyNjNkMTIxMTMyYzdmNDM1Y2FiM2MyYjFmNzIz
ODNiMTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbigpCiAgICAgICAgIGlmIChtX2NoaWxk
cmVuLnNpemUoKSA+IDAgJiYgbV9jaGlsZHJlbi5sYXN0KCkgPT0gY2VsbCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNlbGwp
OworICAgICAgICBhZGRDaGlsZChjZWxsKTsKICAgICB9CiB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggNzI1ODExNmY1ZDFiZWQ5ODE5M2YzMTViZDMyNThi
ZGNiZTVlNjlhYi4uZDRhMTBlZGY3YjQ3ODNiN2U4Nzk3MjlkZTdlMDY4ODgwYmYyOGZhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcApAQCAtNzMsNyArNzMsOCBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4oKQogICAgIGlm
ICghcGFyZW50VGFibGUuaXNFeHBvc2FibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
aGlsZHJlbiA9IHBhcmVudFRhYmxlLmNvbHVtbkhlYWRlcnMoKTsKKyAgICBmb3IgKGF1dG8mIGNv
bHVtbkhlYWRlciA6IHBhcmVudFRhYmxlLmNvbHVtbkhlYWRlcnMoKSkKKyAgICAgICAgYWRkQ2hp
bGQoY29sdW1uSGVhZGVyLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBt
X2NoaWxkcmVuKQogICAgICAgICBtX2hlYWRlclJlY3QudW5pdGUoY2hpbGQtPmVsZW1lbnRSZWN0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCmluZGV4IGVkMGZiMGIyY2E0ZDVhNjg1NWIyOTMzMWFmOThlYmE0NTIy
ZjY5ZmYuLmNhNjQ3YjY0YTg0ZjI4NzkzNjdjYTAwYjIxZmVhMTgyZWY4Y2E0OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxp
dHlUYWJsZVJvdzo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIAogICAgIHJldHVybiBudWxscHRy
OwogfQotICAgIAorCiBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVy
T2JqZWN0KCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVS
b3coKSkKQEAgLTE1MCwxMCArMTUwLDEyIEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRh
YmxlUm93OjpoZWFkZXJPYmplY3QoKQogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmFkZENo
aWxkcmVuKCkKIHsKICAgICAvLyBJZiB0aGUgZWxlbWVudCBzcGVjaWZpZXMgaXRzIGNlbGxzIHRo
cm91Z2ggYXJpYS1vd25zLCByZXR1cm4gdGhhdCBmaXJzdC4KLSAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgYXJpYU93bnM7Ci0gICAgYXJpYU93bnNFbGVtZW50cyhhcmlhT3ducyk7Ci0g
ICAgaWYgKGFyaWFPd25zLnNpemUoKSkKLSAgICAgICAgbV9jaGlsZHJlbiA9IFdURk1vdmUoYXJp
YU93bnMpOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhT3duZWRFbGVtZW50
czsKKyAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25lZEVsZW1lbnRzKTsKKyAgICBpZiAoYXJp
YU93bmVkRWxlbWVudHMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgYXJpYU93bmVkRWxl
bWVudCA6IGFyaWFPd25lZEVsZW1lbnRzKQorICAgICAgICAgICAgYWRkQ2hpbGQoYXJpYU93bmVk
RWxlbWVudC5nZXQoKSk7CisgICAgfQogICAgIGVsc2UKICAgICAgICAgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAK
</data>
<flag name="commit-queue"
          id="466330"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441940</attachid>
            <date>2021-10-20 14:38:32 -0700</date>
            <delta_ts>2021-10-23 21:07:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231914-20211020163831.patch</filename>
            <type>text/plain</type>
            <size>17214</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZhNTA2YmQzY2EyZTU4
OGNhNTJjYjA2M2VlODQzMWRiZjNhNGQyNy4uZDE3YjVlZTMxMjRlZmJlMDI4N2I4YzcxMTNlMTgz
MGVkZGZjNGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEwLTIwICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFueSBhZGRpdGlv
biBvZiBjaGlsZHJlbiBzaG91bGQgZnVubmVsIHRocm91Z2ggQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWRkQ2hpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbCBhZGRpdGlvbiBvZiBjaGlsZHJlbiBub3cgZ29lcyB0aHJvdWdoCisgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFkZENoaWxkLiBUaGlzIGlzIGdvb2QgZm9yIHR3byByZWFzb25zOgor
CisgICAgICAgIDEuIEl0IGVuc3VyZXMgd2UgYXJlbid0IGluc2VydGluZyBpZ25vcmVkIGVsZW1l
bnRzIGludG8gdGhlIHRyZWUuCisgICAgICAgIGBpbnNlcnRDaGlsZGAgKGRvd25zdHJlYW0gb2Yg
YGFkZENoaWxkYCkgY2hlY2tzIHRoaXMuIFByaW9yIHRvIHRoaXMKKyAgICAgICAgcGF0Y2gsIHRo
ZXJlIHdlcmUgY2FzZXMgd2hlcmUgd2UgY291bGQgaW5zZXJ0IGlnbm9yZWQgY2hpbGRyZW4gaW50
byB0aGUKKyAgICAgICAgdHJlZSBiZWNhdXNlIG5vIGNoZWNrIHdhcyBtYWRlLgorCisgICAgICAg
IDIuIFdlIGNhbiByZWxpYWJseSBzZXQgc3RhdGUgb24gdGhlIGNoaWxkIGJhc2VkIG9uIHRoZSBz
dGF0ZSBvZiB0aGUKKyAgICAgICAgcGFyZW50IGF0IGluc2VydGlvbiB0aW1lLiBGb3IgZXhhbXBs
ZSwgY2hpbGRyZW4gY2FuIHNldCBhIGZsYWcgaWYKKyAgICAgICAgYW55IG9mIHRoZWlyIGFuY2Vz
dG9ycyBoYXZlIGFuIGFwcGxpY2F0aW9uIG9yIGRvY3VtZW50IHJvbGUsIHdoaWNoIGNhbgorICAg
ICAgICBiZSB1c2VmdWwgZm9yIHNvbWUgQVggY2xpZW50cy4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlN
ZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNBdXRvZmlsbEJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVT
VkdDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRk
Q2hpbGRTY3JvbGxiYXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRy
ZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbik6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjph
ZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisKIDIwMjEtMTAtMjAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHVzZWxlc3MgZGVmaW5pdGlvbiBmcm9tIElEQkRhdGFiYXNlLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwCmluZGV4IDRlZmJmNGUyNmJjYzU0YTQ2MmRmNjhhMGUxZTlkNGU4MTZjMDAzNGUu
Ljg3YjNiMTJjZDcwNWJhZjdmYTllNjkxOTZhYjFiZjJhZjczZTRkNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAK
QEAgLTY3LDE0ICs2Nyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNl
bGxDaGlsZChBWENvcmVPYmplY3QqIGNoaWxkLCBIYXNoU2V0PEFjY2VzCiAgICAgCiAgICAgcm93
LnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7CiAgICAgbV9yb3dzLmFwcGVuZCgmcm93
KTsKLQotICAgIC8vIFRyeSBhZGRpbmcgdGhlIHJvdyBpZiBpdCdzIG5vdCBpZ25vcmluZyBhY2Nl
c3NpYmlsaXR5LAotICAgIC8vIG90aGVyd2lzZSBhZGQgaXRzIGNoaWxkcmVuICh0aGUgY2VsbHMp
IGFzIHRoZSBncmlkJ3MgY2hpbGRyZW4uCi0gICAgaWYgKCFyb3cuYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmcm93KTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fY2hpbGRyZW4uYXBwZW5kVmVjdG9yKHJvdy5jaGlsZHJlbigpKTsKLQorICAgIGFkZENo
aWxkKCZyb3cpOwogICAgIGFwcGVuZGVkUm93cy5hZGQoJnJvdyk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNDIsMTMgKzEzNSwxMCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRk
Q2hpbGRyZW4oKQogICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAgICAgICAgIGNv
bHVtbi5zZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7
Ci0gICAgICAgIGlmICghY29sdW1uLmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAg
ICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZjb2x1bW4pOworICAgICAgICBhZGRDaGlsZCgmY29sdW1u
KTsKICAgICB9CiAKLSAgICBhdXRvKiBoZWFkZXJDb250YWluZXJPYmplY3QgPSBoZWFkZXJDb250
YWluZXIoKTsKLSAgICBpZiAoaGVhZGVyQ29udGFpbmVyT2JqZWN0ICYmICFoZWFkZXJDb250YWlu
ZXJPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgbV9jaGlsZHJlbi5h
cHBlbmQoaGVhZGVyQ29udGFpbmVyT2JqZWN0KTsKKyAgICBhZGRDaGlsZChoZWFkZXJDb250YWlu
ZXIoKSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCmluZGV4IDcy
Mjg5NGQ4OWQ1NjM5M2FlMTAwNTczMmNlNzg3OTYyZTY3MTBkNzEuLjc5ZjM2MDk1ZTc0MzM5YTJi
ODU3ZjU0NDQ1YzQxYWEzYzYwMzAyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCkBAIC03MywxMSArNzMsOCBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjphZGRDaGlsZHJlbigpCiAKICAgICBtX2hhdmVDaGls
ZHJlbiA9IHRydWU7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGxpc3RJdGVtIDogZG93bmNhc3Q8
SFRNTFNlbGVjdEVsZW1lbnQ+KCpzZWxlY3ROb2RlKS5saXN0SXRlbXMoKSkgewotICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0T3B0aW9uID0gbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxp
dHlPYmplY3QobGlzdEl0ZW0pOwotICAgICAgICBpZiAobGlzdE9wdGlvbiAmJiAhbGlzdE9wdGlv
bi0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBl
bmQobGlzdE9wdGlvbik7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBk
b3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJdGVtcygpKQorICAg
ICAgICBhZGRDaGlsZChsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChsaXN0SXRlbSkp
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpzZXRTZWxlY3RlZENoaWxkcmVuKGNv
bnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKaW5k
ZXggMjc2ZGM4ZWJmNmI0NWQ0YzMzODQ1YzE0MzY5NTYxNjIzMDdkODNjYy4uOGU2NWY4ZTVlN2E4
MjVlMzUxY2RlMzk4YzNmYjVjMmQzYWQ1ZDYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApAQCAtODIsOCArODIs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4oKQogICAgIH0KIAog
ICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZChsaXN0KTsK
LQorICAgIGFkZENoaWxkKGxpc3QpOwogICAgIGxpc3QtPmFkZENoaWxkcmVuKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHAKaW5kZXggNjU3MjlhZTlkYjE2MTM0OTc3ZWFiZGFhMWU0YTZhMWRl
NDlmNzUxMC4uN2M0NTFhZjc5NDc2MWFlYWYzMjFiMDczNDA3NmJlY2FiZjAyNWYyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQ
b3B1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHAKQEAgLTk2LDExICs5Niw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKCkKIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsK
IAotICAgIGZvciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxl
bWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaHkg
ZG9lcyBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4gY2hlY2sgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCBidXQgdGhpcyBkb2VzIG5vdD8KLSAgICAgICAgaWYgKGF1dG8gb3B0aW9uID0g
bWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKSkKLSAgICAgICAgICAg
IG1fY2hpbGRyZW4uYXBwZW5kKG9wdGlvbik7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYg
bGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJ
dGVtcygpKQorICAgICAgICBhZGRDaGlsZChtZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QobGlzdEl0ZW0pKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6Y2hp
bGRyZW5DaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDFhNzBiMmVmZDYyMWUxMWNiNjYyZTkyNTAxNWUw
MjhmMzRkNjQ1NDIuLmVhZWM0MzE3MTY4M2NhY2YxZjAxNThmYmI0ZTI0OTJhOTljNWVlYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcApAQCAtNDgzLDcgKzQ4MywxNCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBY2Nlc3NpYmls
aXR5T2JqZWN0KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OgogICAg
IGlmIChvYmplY3QpCiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9Ci0gICAgCisK
KyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgYm9vbCBpc1RhYmxlQ29tcG9uZW50KEFYQ29yZU9iamVj
dCYgYXhPYmplY3QpCit7CisgICAgcmV0dXJuIGF4T2JqZWN0LmlzVGFibGUoKSB8fCBheE9iamVj
dC5pc1RhYmxlQ29sdW1uKCkgfHwgYXhPYmplY3QuaXNUYWJsZVJvdygpIHx8IGF4T2JqZWN0Lmlz
VGFibGVDZWxsKCk7Cit9CisjZW5kaWYKKwogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnNl
cnRDaGlsZChBWENvcmVPYmplY3QqIGNoaWxkLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAo
IWNoaWxkKQpAQCAtNTE2LDcgKzUyMyw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6aW5z
ZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgdW5zaWduZWQgaW5kZXgpCiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBtX2NoaWxkcmVu
Lmluc2VydChpbmRleCArIGksIGNoaWxkcmVuW2ldKTsKICAgICB9IGVsc2UgewotICAgICAgICBB
U1NFUlQoY2hpbGQtPnBhcmVudE9iamVjdCgpID09IHRoaXMpOworICAgICAgICAvLyBUYWJsZSBj
b21wb25lbnQgY2hpbGQtcGFyZW50IHJlbGF0aW9uc2hpcHMgb2Z0ZW4gZG9uJ3QgbGluZSB1cCBw
cm9wZXJseSwgaGVuY2UgdGhlIG5lZWQgZm9yIG1ldGhvZHMKKyAgICAgICAgLy8gbGlrZSBwYXJl
bnRUYWJsZSgpIGFuZCBwYXJlbnRSb3coKS4gRXhjbHVkZSB0aGVtIGZyb20gdGhpcyBBU1NFUlQu
CisgICAgICAgIEFTU0VSVCgoIWlzVGFibGVDb21wb25lbnQoKmNoaWxkKSAmJiAhaXNUYWJsZUNv
bXBvbmVudCgqdGhpcykpID8gY2hpbGQtPnBhcmVudE9iamVjdCgpID09IHRoaXMgOiB0cnVlKTsK
ICAgICAgICAgbV9jaGlsZHJlbi5pbnNlcnQoaW5kZXgsIGNoaWxkKTsKICAgICB9CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAppbmRleCBlMjg5NTQ5ZjAwNmQxNGVjMjQ1ZTQ4NzI4ZGJiN2E5ZjYw
MmQ2ZTg0Li44YTVlYjJmNTU0ZTlkYTc2ZWQ3ZTM4ZWRjMDFmOTRmNzVhNTRkYmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKQEAgLTMyODMsNyArMzI4Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiAgICAgICAgIGFyZWFPYmplY3Quc2V0
SFRNTE1hcEVsZW1lbnQobWFwKTsKICAgICAgICAgYXJlYU9iamVjdC5zZXRQYXJlbnQodGhpcyk7
CiAgICAgICAgIGlmICghYXJlYU9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAg
ICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmYXJlYU9iamVjdCk7CisgICAgICAgICAgICBhZGRD
aGlsZCgmYXJlYU9iamVjdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF4T2JqZWN0Q2Fj
aGUoKS0+cmVtb3ZlKGFyZWFPYmplY3Qub2JqZWN0SUQoKSk7CiAgICAgfQpAQCAtMzMxNiw3ICsz
MzE2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGls
ZHJlbigpCiAgICAgYXV0byYgYXhTcGluQnV0dG9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24+KCpheE9iamVjdENhY2hlKCktPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvbikpOwogICAgIGF4U3BpbkJ1dHRvbi5zZXRTcGluQnV0dG9uRWxlbWVudChkb3duY2Fz
dDxTcGluQnV0dG9uRWxlbWVudD4oc3BpbkJ1dHRvbkVsZW1lbnQpKTsKICAgICBheFNwaW5CdXR0
b24uc2V0UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZheFNwaW5CdXR0b24p
OworICAgIGFkZENoaWxkKCZheFNwaW5CdXR0b24pOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKCkgY29uc3QKQEAgLTMzODAsMTIgKzMzODAsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJlbW90ZVNWR0NoaWxkcmVuKCkK
ICAgICAvLyBJbiBvcmRlciB0byBjb25uZWN0IHRoZSBBWCBoaWVyYXJjaHkgZnJvbSB0aGUgU1ZH
IHJvb3QgZWxlbWVudCBmcm9tIHRoZSBsb2FkZWQgcmVzb3VyY2UKICAgICAvLyB0aGUgcGFyZW50
IG11c3QgYmUgc2V0LCBiZWNhdXNlIHRoZXJlJ3Mgbm8gb3RoZXIgd2F5IHRvIGdldCBiYWNrIHRv
IHdobyBjcmVhdGVkIHRoZSBpbWFnZS4KICAgICByb290LT5zZXRQYXJlbnQodGhpcyk7Ci0gICAg
Ci0gICAgaWYgKHJvb3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewotICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNoaWxkIDogcm9vdC0+Y2hpbGRyZW4oKSkKLSAgICAgICAgICAgIG1fY2hp
bGRyZW4uYXBwZW5kKGNoaWxkKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBl
bmQocm9vdCk7CisgICAgYWRkQ2hpbGQocm9vdCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkQ2FudmFzQ2hpbGRyZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAppbmRleCAyMDA4
OWM5NTg5YWJjYjE0NWNiMzQ5OGJiZGNkMTkxZDgyMTg5ZjkyLi42YmI0MjZiNzE0MTg5ZTk5NWVm
NjIxNmVjYzFlMTM0NzBkMTY1ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMTYzLDcgKzE2Myw3
IEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRD
aGlsZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjCiAKICAgICBhdXRvJiBzY3JvbGxCYXJPYmplY3Qg
PSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyPigqY2FjaGUtPmdldE9yQ3JlYXRlKHNj
cm9sbGJhcikpOwogICAgIHNjcm9sbEJhck9iamVjdC5zZXRQYXJlbnQodGhpcyk7Ci0gICAgbV9j
aGlsZHJlbi5hcHBlbmQoJnNjcm9sbEJhck9iamVjdCk7CisgICAgYWRkQ2hpbGQoJnNjcm9sbEJh
ck9iamVjdCk7CiAgICAgcmV0dXJuICZzY3JvbGxCYXJPYmplY3Q7CiB9CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5j
cHAKaW5kZXggN2QwNzNiZDZhODhkMWE2NGJmZmE4ZWRhZmE3MDk1ZmNjNWU1YmRlYy4uZWUxMThk
NTUyNjJmNjIwNGUxY2E1NDI3MzUxMDgyYTdmZTk1Mzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCkBAIC0xMDAsNyAr
MTAwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGlsZHJlbigpCiAgICAgaWYg
KHRodW1iLmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAgICAgY2FjaGUtPnJlbW92ZSh0
aHVtYi5vYmplY3RJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZ0
aHVtYik7CisgICAgICAgIGFkZENoaWxkKCZ0aHVtYik7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcm
IEFjY2Vzc2liaWxpdHlTbGlkZXI6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCmluZGV4IDkyOWY2MTM1YzIyZWQwYTk4ZDZl
YzU3MTQ0ODYxZmZkZDRkMDc5YmUuLmY4OTJiMmU5ZDNhNzI1YjFhMWU0MjcyMDdkMzdjNTMyZGIx
NWRjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNwaW5CdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCkBAIC05MSwxMiArOTEsMTIgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRyZW4oKQogICAgIGF1dG8mIGluY3JlbWVudG9yID0g
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBpbmNyZW1lbnRvci5zZXRJc0lu
Y3JlbWVudG9yKHRydWUpOwogICAgIGluY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKLSAgICBt
X2NoaWxkcmVuLmFwcGVuZCgmaW5jcmVtZW50b3IpOworICAgIGFkZENoaWxkKCZpbmNyZW1lbnRv
cik7CiAKICAgICBhdXRvJiBkZWNyZW1lbnRvciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uUGFydD4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25Q
YXJ0KSk7CiAgICAgZGVjcmVtZW50b3Iuc2V0SXNJbmNyZW1lbnRvcihmYWxzZSk7CiAgICAgZGVj
cmVtZW50b3Iuc2V0UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZkZWNyZW1l
bnRvcik7CisgICAgYWRkQ2hpbGQoJmRlY3JlbWVudG9yKTsKIH0KICAgICAKIHZvaWQgQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b246OnN0ZXAoaW50IGFtb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBmNjcyZjRhMWFm
MDUzNTVlNmU3MzA1MDU5Mzg2ZDA0MTk3OWRkYjJkLi44MzIwZDc1ZTZlMzk0NjMwNDU2ZWIzMzAz
ZTRlYWE1YmU2MGJmNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0zOTQsOCArMzk0LDExIEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQqIHRh
YmxlRWxlbWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvIGNh
cHRpb24gPSB0YWJsZUVsZW1lbnQtPmNhcHRpb24oKSkgewogICAgICAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogYXhDYXB0aW9uID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjYXB0
aW9uLmdldCgpKTsKKyAgICAgICAgICAgIC8vIFdoaWxlIGBhZGRDaGlsZGAgd29uJ3QgaW5zZXJ0
IGlnbm9yZWQgY2hpbGRyZW4sIHdlIHN0aWxsIG5lZWQgdGhpcyBhY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkCisgICAgICAgICAgICAvLyBjaGVjayBzbyB0aGF0IGBhZGRDaGlsZGAgZG9lc24ndCB0cnkg
dG8gYWRkIHRoZSBjYXB0aW9uJ3MgY2hpbGRyZW4gaW4gaXRzIHN0ZWFkLiBCYXNpY2FsbHksCisg
ICAgICAgICAgICAvLyBleHBsaWNpdGx5IGNoZWNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBpZ25vcmVzIHRoZSBjYXB0aW9uIGFuZCBhbnkgb2YgaXRzIGNoaWxkcmVuLgogICAgICAgICAg
ICAgaWYgKGF4Q2FwdGlvbiAmJiAhYXhDYXB0aW9uLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkp
Ci0gICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhDYXB0aW9uKTsKKyAgICAgICAg
ICAgICAgICBhZGRDaGlsZChheENhcHRpb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MjAs
MTMgKzQyMyw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAg
ICAgIGNvbHVtbi5zZXRDb2x1bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0
aGlzKTsKICAgICAgICAgbV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKLSAgICAgICAgaWYgKCFj
b2x1bW4uYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5h
cHBlbmQoJmNvbHVtbik7CisgICAgICAgIGFkZENoaWxkKCZjb2x1bW4pOwogICAgIH0KLQotICAg
IGF1dG8qIGhlYWRlckNvbnRhaW5lck9iamVjdCA9IGhlYWRlckNvbnRhaW5lcigpOwotICAgIGlm
IChoZWFkZXJDb250YWluZXJPYmplY3QgJiYgIWhlYWRlckNvbnRhaW5lck9iamVjdC0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250
YWluZXJPYmplY3QpOworICAgIGFkZENoaWxkKGhlYWRlckNvbnRhaW5lcigpKTsKIAogICAgIC8v
IFNvbWV0aW1lcyB0aGUgY2VsbCBnZXRzIHRoZSB3cm9uZyByb2xlIGluaXRpYWxseSBiZWNhdXNl
IGl0IGlzIGNyZWF0ZWQgYmVmb3JlIHRoZSBwYXJlbnQKICAgICAvLyBkZXRlcm1pbmVzIHdoZXRo
ZXIgaXQgaXMgYW4gYWNjZXNzaWJpbGl0eSB0YWJsZS4gSXRlcmF0ZSBhbGwgdGhlIGNlbGxzIGFu
ZCBhbGxvdyB0aGVtIHRvCkBAIC00NTEsOCArNDUwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvd09iamVjdCwgSGFz
aFMKICAgICAKICAgICByb3cuc2V0Um93SW5kZXgoc3RhdGljX2Nhc3Q8aW50PihtX3Jvd3Muc2l6
ZSgpKSk7CiAgICAgbV9yb3dzLmFwcGVuZCgmcm93KTsKLSAgICBpZiAoIXJvdy5hY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZyb3cpOworICAgIGFk
ZENoaWxkKCZyb3cpOwogICAgIGFwcGVuZGVkUm93cy5hZGQoJnJvdyk7CiAgICAgICAgIAogICAg
IC8vIHN0b3JlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAK
aW5kZXggNDQ0MDRmNmZkNjk3ODM1ODZkNTg5YzQzMjU2MjQxOWM0NjUzMWNiZC4uNTBhZGMyNjNk
MTIxMTMyYzdmNDM1Y2FiM2MyYjFmNzIzODNiMTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAt
MjAyLDcgKzIwMiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJl
bigpCiAgICAgICAgIGlmIChtX2NoaWxkcmVuLnNpemUoKSA+IDAgJiYgbV9jaGlsZHJlbi5sYXN0
KCkgPT0gY2VsbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAg
IG1fY2hpbGRyZW4uYXBwZW5kKGNlbGwpOworICAgICAgICBhZGRDaGlsZChjZWxsKTsKICAgICB9
CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggNzI1ODEx
NmY1ZDFiZWQ5ODE5M2YzMTViZDMyNThiZGNiZTVlNjlhYi4uZDRhMTBlZGY3YjQ3ODNiN2U4Nzk3
MjlkZTdlMDY4ODgwYmYyOGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNw
cApAQCAtNzMsNyArNzMsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5l
cjo6YWRkQ2hpbGRyZW4oKQogICAgIGlmICghcGFyZW50VGFibGUuaXNFeHBvc2FibGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jaGlsZHJlbiA9IHBhcmVudFRhYmxlLmNvbHVtbkhlYWRl
cnMoKTsKKyAgICBmb3IgKGF1dG8mIGNvbHVtbkhlYWRlciA6IHBhcmVudFRhYmxlLmNvbHVtbkhl
YWRlcnMoKSkKKyAgICAgICAgYWRkQ2hpbGQoY29sdW1uSGVhZGVyLmdldCgpKTsKIAogICAgIGZv
ciAoY29uc3QgYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQogICAgICAgICBtX2hlYWRlclJlY3Qu
dW5pdGUoY2hpbGQtPmVsZW1lbnRSZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IGVkMGZiMGIyY2E0
ZDVhNjg1NWIyOTMzMWFmOThlYmE0NTIyZjY5ZmYuLmNhNjQ3YjY0YTg0ZjI4NzkzNjdjYTAwYjIx
ZmVhMTgyZWY4Y2E0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBBY2Nlc3Np
YmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6cGFyZW50VGFibGUoKSBjb25zdAog
ICAgIAogICAgIHJldHVybiBudWxscHRyOwogfQotICAgIAorCiBBWENvcmVPYmplY3QqIEFjY2Vz
c2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIg
fHwgIW1fcmVuZGVyZXItPmlzVGFibGVSb3coKSkKQEAgLTE1MCwxMCArMTUwLDEyIEBAIEFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogdm9pZCBBY2Nl
c3NpYmlsaXR5VGFibGVSb3c6OmFkZENoaWxkcmVuKCkKIHsKICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBzcGVjaWZpZXMgaXRzIGNlbGxzIHRocm91Z2ggYXJpYS1vd25zLCByZXR1cm4gdGhhdCBmaXJz
dC4KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7Ci0gICAgYXJpYU93
bnNFbGVtZW50cyhhcmlhT3ducyk7Ci0gICAgaWYgKGFyaWFPd25zLnNpemUoKSkKLSAgICAgICAg
bV9jaGlsZHJlbiA9IFdURk1vdmUoYXJpYU93bnMpOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBhcmlhT3duZWRFbGVtZW50czsKKyAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25l
ZEVsZW1lbnRzKTsKKyAgICBpZiAoYXJpYU93bmVkRWxlbWVudHMuc2l6ZSgpKSB7CisgICAgICAg
IGZvciAoYXV0byYgYXJpYU93bmVkRWxlbWVudCA6IGFyaWFPd25lZEVsZW1lbnRzKQorICAgICAg
ICAgICAgYWRkQ2hpbGQoYXJpYU93bmVkRWxlbWVudC5nZXQoKSk7CisgICAgfQogICAgIGVsc2UK
ICAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442292</attachid>
            <date>2021-10-23 21:07:27 -0700</date>
            <delta_ts>2021-10-24 10:14:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231914-20211023230726.patch</filename>
            <type>text/plain</type>
            <size>27894</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI3MTkwYmVlNGU2YmE0
MjY5NDdkNDVhYTAzMjdkOGQyYzYyZmFjZi4uZjhlNDQ1ZmY0MGE4YzI0OTExNTIwYmE0N2E4MDAw
MTY2MTU3OGVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTEwLTIzICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFueSBhZGRpdGlv
biBvZiBjaGlsZHJlbiBzaG91bGQgZnVubmVsIHRocm91Z2ggQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWRkQ2hpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbCBhZGRpdGlvbiBvZiBjaGlsZHJlbiBub3cgZ29lcyB0aHJvdWdoCisgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFkZENoaWxkLiBUaGlzIGlzIGdvb2QgZm9yIHR3byByZWFzb25zOgor
CisgICAgICAgIDEuIEl0IGVuc3VyZXMgd2UgYXJlbid0IGluc2VydGluZyBpZ25vcmVkIGVsZW1l
bnRzIGludG8gdGhlIHRyZWUuCisgICAgICAgIGBpbnNlcnRDaGlsZGAgKGRvd25zdHJlYW0gb2Yg
YGFkZENoaWxkYCkgY2hlY2tzIHRoaXMuIFByaW9yIHRvIHRoaXMKKyAgICAgICAgcGF0Y2gsIHRo
ZXJlIHdlcmUgY2FzZXMgd2hlcmUgd2UgY291bGQgaW5zZXJ0IGlnbm9yZWQgY2hpbGRyZW4gaW50
byB0aGUKKyAgICAgICAgdHJlZSBiZWNhdXNlIG5vIGNoZWNrIHdhcyBtYWRlLgorCisgICAgICAg
IDIuIFdlIGNhbiByZWxpYWJseSBzZXQgc3RhdGUgb24gdGhlIGNoaWxkIGJhc2VkIG9uIHRoZSBz
dGF0ZSBvZiB0aGUKKyAgICAgICAgcGFyZW50IGF0IGluc2VydGlvbiB0aW1lLiBGb3IgZXhhbXBs
ZSwgY2hpbGRyZW4gY2FuIHNldCBhIGZsYWcgaWYKKyAgICAgICAgYW55IG9mIHRoZWlyIGFuY2Vz
dG9ycyBoYXZlIGFuIGFwcGxpY2F0aW9uIG9yIGRvY3VtZW50IHJvbGUsIHdoaWNoIGNhbgorICAg
ICAgICBiZSB1c2VmdWwgZm9yIHNvbWUgQVggY2xpZW50cy4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxhYmVsOjppbnNlcnRDaGlsZCk6CisgICAgICAgIEFkZCBEZXNjZW5kSWZJZ25vcmVkIHBh
cmFtZXRlci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmg6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4pOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6
aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbjo6ZWxlbWVudFJlY3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb246OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb246OnBhcmVudE9iamVjdCBjb25zdCk6CisgICAgICAgIEFkZCBt
aXNzaW5nIGBwYXJlbnRPYmplY3RgIChhbmQgY29ycmVzcG9uZGluZyBgc2V0UGFyZW50YCkgbWV0
aG9kcy4KKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCwgdGhlc2Ugb2JqZWN0cyBhbHdheXMg
cmV0dXJuZWQgYG51bGxwdHJgIGZyb20KKyAgICAgICAgdGhlIGBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpwYXJlbnRPYmplY3QoKWAuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cDo6YWRkQ2hpbGRyZW4pOgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVGFibGVDb21wb25lbnQpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFkZENoaWxkKToKKyAg
ICAgICAgQWRkIERlc2NlbmRJZklnbm9yZWQ6OntZZXMsIE5vfSB0byBjb250cm9sIHdoZXRoZXIg
b3Igbm90CisgICAgICAgIHRoZXNlIGZ1bmN0aW9ucyBkZXNjZW5kIHRvIGFuZCBhZGQgdGhlIGNo
aWxkJ3MgY2hpbGRyZW4gaWYgdGhlIGdpdmVuCisgICAgICAgIGNoaWxkIGlzIGlnbm9yZWQuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0Rmll
bGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRSZW1vdGVTVkdDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6YWRkQ2hpbGRTY3JvbGxiYXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xp
ZGVyOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxD
aGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJD
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVy
Q29udGFpbmVyOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Um93OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjppbnNlcnRD
aGlsZCk6CisgICAgICAgIEFkZCBEZXNjZW5kSWZJZ25vcmVkIHBhcmFtZXRlci4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKwogMjAy
MS0xMC0yMyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11b
SUZDXSBCcmVha2luZyBiZWZvcmUgaHlwaGVuIGlzIG9ubHkgYWxsb3dlZCB3aGVuIGxpbmUtYnJl
YWsgaXMgbG9vc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAppbmRleCA0ZWZiZjRlMjZiY2M1NGE0NjJkZjY4YTBlMWU5
ZDRlODE2YzAwMzRlLi4zYjQwODQ5ZDE1MGI0MTBmN2I0MGVkOWE4MDM0NzljZWI2MGQ0ZWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
QVJJQUdyaWQuY3BwCkBAIC02NywxNCArNjcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZDo6YWRkVGFibGVDZWxsQ2hpbGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgSGFzaFNldDxBY2Nlcwog
ICAgIAogICAgIHJvdy5zZXRSb3dJbmRleCgoaW50KW1fcm93cy5zaXplKCkpOwogICAgIG1fcm93
cy5hcHBlbmQoJnJvdyk7Ci0KLSAgICAvLyBUcnkgYWRkaW5nIHRoZSByb3cgaWYgaXQncyBub3Qg
aWdub3JpbmcgYWNjZXNzaWJpbGl0eSwKLSAgICAvLyBvdGhlcndpc2UgYWRkIGl0cyBjaGlsZHJl
biAodGhlIGNlbGxzKSBhcyB0aGUgZ3JpZCdzIGNoaWxkcmVuLgotICAgIGlmICghcm93LmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoJnJvdyk7Ci0g
ICAgZWxzZQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZFZlY3Rvcihyb3cuY2hpbGRyZW4oKSk7
Ci0KKyAgICBhZGRDaGlsZCgmcm93KTsKICAgICBhcHBlbmRlZFJvd3MuYWRkKCZyb3cpOwogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMTQyLDEzICsxMzUsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWQ6OmFkZENoaWxkcmVuKCkKICAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KGkp
OwogICAgICAgICBjb2x1bW4uc2V0UGFyZW50KHRoaXMpOwogICAgICAgICBtX2NvbHVtbnMuYXBw
ZW5kKCZjb2x1bW4pOwotICAgICAgICBpZiAoIWNvbHVtbi5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkpCi0gICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmY29sdW1uKTsKKyAgICAgICAgYWRk
Q2hpbGQoJmNvbHVtbiwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOwogICAgIH0KIAotICAgIGF1dG8q
IGhlYWRlckNvbnRhaW5lck9iamVjdCA9IGhlYWRlckNvbnRhaW5lcigpOwotICAgIGlmIChoZWFk
ZXJDb250YWluZXJPYmplY3QgJiYgIWhlYWRlckNvbnRhaW5lck9iamVjdC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJP
YmplY3QpOworICAgIGFkZENoaWxkKGhlYWRlckNvbnRhaW5lcigpLCBEZXNjZW5kSWZJZ25vcmVk
OjpObyk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHAKaW5kZXggNjM0NWYz
Y2Q4ZjM4NWEwNTBmOWNhYzliOTM3OGEwODUzMmU3NTEyYy4uNjIyNWZlMDQ0NDU1ZGYwZTFmMzI2
NWMxMzQ5MmJjNWY2MjFhOTk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmNwcApAQCAtMTI1LDkgKzEyNSw5IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eUxhYmVsOjpjbGVhckNoaWxkcmVuKCkKICAgICBtX2NvbnRhaW5zT25seVN0YXRp
Y1RleHREaXJ0eSA9IGZhbHNlOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlMYWJlbDo6aW5zZXJ0
Q2hpbGQoQVhDb3JlT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIGluZGV4KQordm9pZCBBY2Nlc3Np
YmlsaXR5TGFiZWw6Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBp
bmRleCwgRGVzY2VuZElmSWdub3JlZCBkZXNjZW5kSWZJZ25vcmVkKQogewotICAgIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Omluc2VydENoaWxkKG9iamVjdCwgaW5kZXgpOworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKG9iamVjdCwgaW5kZXgsIGRlc2NlbmRJZklnbm9y
ZWQpOwogICAgIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5ID0gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgKaW5k
ZXggYjZhNDFiOWFmZjBmODU2ZWI5ZTk0ODYzZGM3ZjViZTZkZDgwNWM5Yi4uNjI1YTI3ZjJhZTgw
YTE4NTQ0OTUyZDJmMjJhZjk1M2MwMWVmNmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB1cGRh
dGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgZmluYWw7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCkg
ZmluYWw7Ci0gICAgdm9pZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgZmlu
YWw7CisgICAgdm9pZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCwgRGVzY2Vu
ZElmSWdub3JlZCA9IERlc2NlbmRJZklnbm9yZWQ6OlllcykgZmluYWw7CiAgICAgYm9vbCBtX2Nv
bnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA6IDE7CiAgICAgYm9vbCBtX2NvbnRhaW5zT25seVN0
YXRpY1RleHQgOiAxOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggNzIyODk0ZDg5ZDU2MzkzYWUxMDA1NzMy
Y2U3ODc5NjJlNjcxMGQ3MS4uNWZhNGI4ZGZkNzQ0YTYyYjYwZTE0NTIzNGNjZWNkZWRhODVjYjZm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveC5jcHAKQEAgLTczLDExICs3Myw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RC
b3g6OmFkZENoaWxkcmVuKCkKIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKIAotICAgIGZv
ciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNl
bGVjdE5vZGUpLmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxp
c3RPcHRpb24gPSBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChsaXN0SXRlbSk7Ci0g
ICAgICAgIGlmIChsaXN0T3B0aW9uICYmICFsaXN0T3B0aW9uLT5hY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkpCi0gICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChsaXN0T3B0aW9uKTsKLSAgICB9
CisgICAgZm9yIChjb25zdCBhdXRvJiBsaXN0SXRlbSA6IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVt
ZW50Pigqc2VsZWN0Tm9kZSkubGlzdEl0ZW1zKCkpCisgICAgICAgIGFkZENoaWxkKGxpc3RCb3hP
cHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKSwgRGVzY2VuZElmSWdub3JlZDo6Tm8p
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpzZXRTZWxlY3RlZENoaWxkcmVuKGNv
bnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKaW5k
ZXggMjc2ZGM4ZWJmNmI0NWQ0YzMzODQ1YzE0MzY5NTYxNjIzMDdkODNjYy4uOGU2NWY4ZTVlN2E4
MjVlMzUxY2RlMzk4YzNmYjVjMmQzYWQ1ZDYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApAQCAtODIsOCArODIs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4oKQogICAgIH0KIAog
ICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZChsaXN0KTsK
LQorICAgIGFkZENoaWxkKGxpc3QpOwogICAgIGxpc3QtPmFkZENoaWxkcmVuKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uLmNwcAppbmRleCAyZDZhNDg2YzA4NmI5NDU1NTRlOWFjOTE0NWE0MDFj
NzA5ZTcyNWEyLi43ZDFhODQyNzEyYThiNWMzMTc5OTU1ZjA1MzA3ODM0NzRlYzI1YjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uY3BwCkBAIC0zOSw2ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0eU1l
bnVMaXN0T3B0aW9uKEhUTUxPcHRpb25FbGVtZW50JiBlbGVtZW50KQogICAgIDogbV9lbGVtZW50
KGVsZW1lbnQpCisgICAgLCBtX3BhcmVudChudWxscHRyKQogewogfQogCkBAIC02OCw4ICs2OSw4
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc1Zpc2libGUoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJbiBhIHNpbmdsZS1vcHRpb24gc2VsZWN0
IHdpdGggdGhlIHBvcHVwIGNvbGxhcHNlZCwgb25seSB0aGUgc2VsZWN0ZWQgaXRlbSBpcyBjb25z
aWRlcmVkIHZpc2libGUuCi0gICAgYXV0byBwYXJlbnQgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCku
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtX2VsZW1lbnQtPm93bmVyU2VsZWN0RWxlbWVu
dCgpKTsKLSAgICByZXR1cm4gcGFyZW50ICYmICghcGFyZW50LT5pc09mZlNjcmVlbigpIHx8IGlz
U2VsZWN0ZWQoKSk7CisgICAgYXV0byBvd25lclNlbGVjdEVsZW1lbnQgPSBtX2VsZW1lbnQtPmRv
Y3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtX2VsZW1lbnQtPm93bmVyU2Vs
ZWN0RWxlbWVudCgpKTsKKyAgICByZXR1cm4gb3duZXJTZWxlY3RFbGVtZW50ICYmICghb3duZXJT
ZWxlY3RFbGVtZW50LT5pc09mZlNjcmVlbigpIHx8IGlzU2VsZWN0ZWQoKSk7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc09mZlNjcmVlbigpIGNvbnN0CkBAIC0xMDks
OSArMTEwLDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpjb21wdXRlQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbjo6ZWxlbWVudFJlY3QoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIC8vIE91ciBwYXJlbnQgc2hvdWxkJ3Zl
IGJlZW4gc2V0IHRvIGJlIGEgbWVudS1saXN0IHBvcHVwIGJlZm9yZSB0aGlzIG1ldGhvZCBpcyBj
YWxsZWQuCisgICAgQVNTRVJUKHBhcmVudCAmJiBwYXJlbnQtPmlzTWVudUxpc3RQb3B1cCgpKTsK
ICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGJvdW5kaW5nQm94UmVjdCgpOwotICAg
IEFTU0VSVChwYXJlbnQtPmlzTWVudUxpc3RQb3B1cCgpKTsKIAogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGdyYW5kcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKTsKICAgICBpZiAoIWdy
YW5kcGFyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgKaW5kZXggYjJiZmMzMzdmODk4ZTAwMDkxOGZm
NmMzMjYwNjIyM2Q3OGYyNTZlZC4uNDAxYTdkMGYyMzRlZTE4OGRlMjkwMzViMWNhZWY5NDljN2Rk
ZGVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIEhUTUxP
cHRpb25FbGVtZW50OwogY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uIGZpbmFsIDog
cHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uPiBjcmVhdGUoSFRNTE9wdGlvbkVsZW1lbnQmKTsKKyAg
ICB2b2lkIHNldFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQpIHsgbV9wYXJlbnQg
PSBwYXJlbnQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVudUxp
c3RPcHRpb24oSFRNTE9wdGlvbkVsZW1lbnQmKTsKQEAgLTQyLDYgKzQzLDcgQEAgcHJpdmF0ZToK
IAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbjsgfQogICAgIGJvb2wgY2FuSGF2ZUNo
aWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhcmVudDsgfQog
CiAgICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIE5vZGUqIG5v
ZGUoKSBjb25zdCBmaW5hbDsKQEAgLTU3LDYgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgZmluYWw7CiAKICAgICBXZWFrUHRy
PEhUTUxPcHRpb25FbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
bV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
Y3BwCmluZGV4IDY1NzI5YWU5ZGIxNjEzNDk3N2VhYmRhYTFlNGE2YTFkZTQ5Zjc1MTAuLjY4NTgz
MjkzMDk0MjM2YTJiYmE0ODA5MWQ3Njc5NTY2ZWVhNjFjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
Y3BwCkBAIC05Nyw5ICs5NywxMCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjph
ZGRDaGlsZHJlbigpCiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogCiAgICAgZm9yIChjb25z
dCBhdXRvJiBsaXN0SXRlbSA6IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0Tm9k
ZSkubGlzdEl0ZW1zKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdoeSBkb2VzIEFjY2Vzc2liaWxp
dHlMaXN0Qm94OjphZGRDaGlsZHJlbiBjaGVjayBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGJ1dCB0
aGlzIGRvZXMgbm90PwotICAgICAgICBpZiAoYXV0byBvcHRpb24gPSBtZW51TGlzdE9wdGlvbkFj
Y2Vzc2liaWxpdHlPYmplY3QobGlzdEl0ZW0pKQotICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBl
bmQob3B0aW9uKTsKKyAgICAgICAgaWYgKGF1dG8qIG1lbnVMaXN0T3B0aW9uT2JqZWN0ID0gbWVu
dUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKSkgeworICAgICAgICAgICAg
bWVudUxpc3RPcHRpb25PYmplY3QtPnNldFBhcmVudCh0aGlzKTsKKyAgICAgICAgICAgIGFkZENo
aWxkKG1lbnVMaXN0T3B0aW9uT2JqZWN0LCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7CisgICAgICAg
IH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGNhOGJmNjAxZTE0MzhiYTUyYzBkMGMyMzA3MmE2
ZDZmY2ZjZGYzYTEuLmNmODY0ZTM3OGJlZDlhMDJmODdlYTU4MWEyNjJjNmEwYjBlYWMwNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcApAQCAtNDgzLDggKzQ4MywxNSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBY2Nlc3NpYmls
aXR5T2JqZWN0KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OgogICAg
IGlmIChvYmplY3QpCiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9Ci0gICAgCi12
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCogY2hpbGQs
IHVuc2lnbmVkIGluZGV4KQorCisjaWZuZGVmIE5ERUJVRworc3RhdGljIGJvb2wgaXNUYWJsZUNv
bXBvbmVudChBWENvcmVPYmplY3QmIGF4T2JqZWN0KQoreworICAgIHJldHVybiBheE9iamVjdC5p
c1RhYmxlKCkgfHwgYXhPYmplY3QuaXNUYWJsZUNvbHVtbigpIHx8IGF4T2JqZWN0LmlzVGFibGVS
b3coKSB8fCBheE9iamVjdC5pc1RhYmxlQ2VsbCgpOworfQorI2VuZGlmCisKK3ZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgdW5zaWduZWQg
aW5kZXgsIERlc2NlbmRJZklnbm9yZWQgZGVzY2VuZElmSWdub3JlZCkKIHsKICAgICBpZiAoIWNo
aWxkKQogICAgICAgICByZXR1cm47CkBAIC01MTEsMTIgKzUxOCwxNiBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIHVuc2lnbmVkIGlu
ZGV4KQogICAgIAogICAgIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoY2hpbGQp
OwogICAgIGlmIChjaGlsZC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7Ci0gICAgICAgIGNv
bnN0IGF1dG8mIGNoaWxkcmVuID0gY2hpbGQtPmNoaWxkcmVuKCk7Ci0gICAgICAgIHNpemVfdCBs
ZW5ndGggPSBjaGlsZHJlbi5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBtX2NoaWxkcmVuLmluc2VydChpbmRleCArIGksIGNo
aWxkcmVuW2ldKTsKKyAgICAgICAgaWYgKGRlc2NlbmRJZklnbm9yZWQgPT0gRGVzY2VuZElmSWdu
b3JlZDo6WWVzKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGNoaWxkLT5j
aGlsZHJlbigpOworICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGNoaWxkcmVuLnNpemUoKTsK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICAgICAgbV9jaGlsZHJlbi5pbnNlcnQoaW5kZXggKyBpLCBjaGlsZHJlbltpXSk7CisgICAg
ICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoY2hpbGQtPnBhcmVudE9iamVjdCgp
ID09IHRoaXMpOworICAgICAgICAvLyBUYWJsZSBjb21wb25lbnQgY2hpbGQtcGFyZW50IHJlbGF0
aW9uc2hpcHMgb2Z0ZW4gZG9uJ3QgbGluZSB1cCBwcm9wZXJseSwgaGVuY2UgdGhlIG5lZWQgZm9y
IG1ldGhvZHMKKyAgICAgICAgLy8gbGlrZSBwYXJlbnRUYWJsZSgpIGFuZCBwYXJlbnRSb3coKS4g
RXhjbHVkZSB0aGVtIGZyb20gdGhpcyBBU1NFUlQuCisgICAgICAgIEFTU0VSVCgoIWlzVGFibGVD
b21wb25lbnQoKmNoaWxkKSAmJiAhaXNUYWJsZUNvbXBvbmVudCgqdGhpcykpID8gY2hpbGQtPnBh
cmVudE9iamVjdCgpID09IHRoaXMgOiB0cnVlKTsKICAgICAgICAgbV9jaGlsZHJlbi5pbnNlcnQo
aW5kZXgsIGNoaWxkKTsKICAgICB9CiAgICAgCkBAIC01MjQsOSArNTM1LDkgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjppbnNlcnRDaGlsZChBWENvcmVPYmplY3QqIGNoaWxkLCB1bnNpZ25l
ZCBpbmRleCkKICAgICBjaGlsZC0+Y2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOwogfQog
ICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBWENvcmVPYmplY3QqIGNo
aWxkKQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBWENvcmVPYmplY3QqIGNo
aWxkLCBEZXNjZW5kSWZJZ25vcmVkIGRlc2NlbmRJZklnbm9yZWQpCiB7Ci0gICAgaW5zZXJ0Q2hp
bGQoY2hpbGQsIG1fY2hpbGRyZW4uc2l6ZSgpKTsKKyAgICBpbnNlcnRDaGlsZChjaGlsZCwgbV9j
aGlsZHJlbi5zaXplKCksIGRlc2NlbmRJZklnbm9yZWQpOwogfQogICAgIAogdm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0
ZXJpYSogY3JpdGVyaWEsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
aW5kZXggZjk4OGZiYzFjNDE5MThjMzNkZTY4ZjI3ZjQ3ZTdkMmEwZjk3OTVhYS4uNzBmYWM5YWYz
YTFmZjIwZDg3Y2IyNTM2ODZjYTRjZDBmMjNhNTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQ5MSw4ICs0OTEsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlIHsg
fQogICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oYm9vbCB1
cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRDaGls
ZHJlbigpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2JqZWN0Kikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3QqLCBEZXNjZW5kSWZJZ25vcmVk
ID0gRGVzY2VuZElmSWdub3JlZDo6WWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIGluc2VydENoaWxk
KEFYQ29yZU9iamVjdCosIHVuc2lnbmVkLCBEZXNjZW5kSWZJZ25vcmVkID0gRGVzY2VuZElmSWdu
b3JlZDo6WWVzKSBvdmVycmlkZTsKIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2hhdmVDaGlsZHJlbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApp
bmRleCA5ZmMxZmY1ZjNmOTEwYTJiZmQ1Y2IzMDQ5YTExMTY1YzI2NDRmMTU4Li4wZjE4NzBhMDQ2
ODJkNzIwMTkwYzA1MzYxNWNkYmU1ZWNhZGY0ZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApA
QCAtMTIzOCw5ICsxMjM4LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNj
ZXNzaWJpbGl0eVJvbGUoKSA9IDA7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgY2hpbGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1
ZSkgPSAwOworCisgICAgZW51bSBjbGFzcyBEZXNjZW5kSWZJZ25vcmVkIDogdWludDhfdCB7Cisg
ICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZHJlbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2JqZWN0KikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3QqLCBEZXNjZW5kSWZJ
Z25vcmVkID0gRGVzY2VuZElmSWdub3JlZDo6WWVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGlu
c2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkLCBEZXNjZW5kSWZJZ25vcmVkID0gRGVz
Y2VuZElmSWdub3JlZDo6WWVzKSA9IDA7CiAgICAgVmVjdG9yPEFYSUQ+IGNoaWxkcmVuSURzKCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKaW5kZXggNWFkYThjZjg1OGU4OTUzY2NhNGMzNzkwM2U1NzkxM2RhZjI1NzQx
Yi4uMmM5MDNjNzA2Zjg4YmQyZWM1OGVjMTg0ZTA5NzY4YzdlODEwOTc5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCkBAIC0zMjgzLDcgKzMyODMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZEltYWdlTWFwQ2hpbGRyZW4oKQogICAgICAgICBhcmVhT2JqZWN0LnNldEhUTUxN
YXBFbGVtZW50KG1hcCk7CiAgICAgICAgIGFyZWFPYmplY3Quc2V0UGFyZW50KHRoaXMpOwogICAg
ICAgICBpZiAoIWFyZWFPYmplY3QuYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAg
ICAgbV9jaGlsZHJlbi5hcHBlbmQoJmFyZWFPYmplY3QpOworICAgICAgICAgICAgYWRkQ2hpbGQo
JmFyZWFPYmplY3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBheE9iamVjdENhY2hlKCkt
PnJlbW92ZShhcmVhT2JqZWN0Lm9iamVjdElEKCkpOwogICAgIH0KQEAgLTMzMTAsNyArMzMxMCw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkVGV4dEZpZWxkQ2hpbGRyZW4o
KQogICAgIGF1dG8mIGF4U3BpbkJ1dHRvbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uPigqYXhPYmplY3RDYWNoZSgpLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0
b24pKTsKICAgICBheFNwaW5CdXR0b24uc2V0U3BpbkJ1dHRvbkVsZW1lbnQoZG93bmNhc3Q8U3Bp
bkJ1dHRvbkVsZW1lbnQ+KHNwaW5CdXR0b25FbGVtZW50KSk7CiAgICAgYXhTcGluQnV0dG9uLnNl
dFBhcmVudCh0aGlzKTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZCgmYXhTcGluQnV0dG9uKTsKKyAg
ICBhZGRDaGlsZCgmYXhTcGluQnV0dG9uKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNTVkdJbWFnZSgpIGNvbnN0CkBAIC0zMzc0LDEyICszMzc0LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJlbigpCiAgICAg
Ly8gSW4gb3JkZXIgdG8gY29ubmVjdCB0aGUgQVggaGllcmFyY2h5IGZyb20gdGhlIFNWRyByb290
IGVsZW1lbnQgZnJvbSB0aGUgbG9hZGVkIHJlc291cmNlCiAgICAgLy8gdGhlIHBhcmVudCBtdXN0
IGJlIHNldCwgYmVjYXVzZSB0aGVyZSdzIG5vIG90aGVyIHdheSB0byBnZXQgYmFjayB0byB3aG8g
Y3JlYXRlZCB0aGUgaW1hZ2UuCiAgICAgcm9vdC0+c2V0UGFyZW50KHRoaXMpOwotICAgIAotICAg
IGlmIChyb290LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKLSAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBjaGlsZCA6IHJvb3QtPmNoaWxkcmVuKCkpCi0gICAgICAgICAgICBtX2NoaWxkcmVu
LmFwcGVuZChjaGlsZCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJv
b3QpOworICAgIGFkZENoaWxkKHJvb3QpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZENhbnZhc0NoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggMjAwODljOTU4
OWFiY2IxNDVjYjM0OThiYmRjZDE5MWQ4MjE4OWY5Mi4uNmJiNDI2YjcxNDE4OWU5OTVlZjYyMTZl
Y2MxZTEzNDcwZDE2NWQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiBzYwogCiAgICAgYXV0byYgc2Nyb2xsQmFyT2JqZWN0ID0gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVNjcm9sbGJhcj4oKmNhY2hlLT5nZXRPckNyZWF0ZShzY3JvbGxi
YXIpKTsKICAgICBzY3JvbGxCYXJPYmplY3Quc2V0UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKCZzY3JvbGxCYXJPYmplY3QpOworICAgIGFkZENoaWxkKCZzY3JvbGxCYXJPYmpl
Y3QpOwogICAgIHJldHVybiAmc2Nyb2xsQmFyT2JqZWN0OwogfQogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCmlu
ZGV4IDdkMDczYmQ2YTg4ZDFhNjRiZmZhOGVkYWZhNzA5NWZjYzVlNWJkZWMuLmVlMTE4ZDU1MjYy
ZjYyMDRlMWNhNTQyNzM1MTA4MmE3ZmU5NTM3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4oKQogICAgIGlmICh0aHVt
Yi5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIu
b2JqZWN0SUQoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmdGh1bWIp
OworICAgICAgICBhZGRDaGlsZCgmdGh1bWIpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBBY2Nl
c3NpYmlsaXR5U2xpZGVyOjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAppbmRleCA5MjlmNjEzNWMyMmVkMGE5OGQ2ZWM1NzE0
NDg2MWZmZGQ0ZDA3OWJlLi5mODkyYjJlOWQzYTcyNWIxYTFlNDI3MjA3ZDM3YzUzMmRiMTVkYzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
cGluQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTcGluQnV0dG9uLmNwcApAQCAtOTEsMTIgKzkxLDEyIEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVNwaW5CdXR0b246OmFkZENoaWxkcmVuKCkKICAgICBhdXRvJiBpbmNyZW1lbnRvciA9IGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJp
bGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0KSk7CiAgICAgaW5jcmVtZW50b3Iuc2V0SXNJbmNyZW1l
bnRvcih0cnVlKTsKICAgICBpbmNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7Ci0gICAgbV9jaGls
ZHJlbi5hcHBlbmQoJmluY3JlbWVudG9yKTsKKyAgICBhZGRDaGlsZCgmaW5jcmVtZW50b3IpOwog
CiAgICAgYXV0byYgZGVjcmVtZW50b3IgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
blBhcnQ+KCpjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkp
OwogICAgIGRlY3JlbWVudG9yLnNldElzSW5jcmVtZW50b3IoZmFsc2UpOwogICAgIGRlY3JlbWVu
dG9yLnNldFBhcmVudCh0aGlzKTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZCgmZGVjcmVtZW50b3Ip
OworICAgIGFkZENoaWxkKCZkZWNyZW1lbnRvcik7CiB9CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxp
dHlTcGluQnV0dG9uOjpzdGVwKGludCBhbW91bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggZjY3MmY0YTFhZjA1MzU1
ZTZlNzMwNTA1OTM4NmQwNDE5NzlkZGIyZC4uYzUxZDE3MTdlOGVhNTkxY2E1YzRhOGIyYWU1Y2Zl
NGZkYTZlMzM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtMzk0LDggKzM5NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlRWxl
bWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvIGNhcHRpb24g
PSB0YWJsZUVsZW1lbnQtPmNhcHRpb24oKSkgewogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogYXhDYXB0aW9uID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjYXB0aW9uLmdl
dCgpKTsKLSAgICAgICAgICAgIGlmIChheENhcHRpb24gJiYgIWF4Q2FwdGlvbi0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGF4Q2Fw
dGlvbik7CisgICAgICAgICAgICBhZGRDaGlsZChheENhcHRpb24sIERlc2NlbmRJZklnbm9yZWQ6
Ok5vKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDIwLDEzICs0MTksOSBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5k
ZXgoaSk7CiAgICAgICAgIGNvbHVtbi5zZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1u
cy5hcHBlbmQoJmNvbHVtbik7Ci0gICAgICAgIGlmICghY29sdW1uLmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKLSAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZjb2x1bW4pOworICAgICAg
ICBhZGRDaGlsZCgmY29sdW1uLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7CiAgICAgfQotCi0gICAg
YXV0byogaGVhZGVyQ29udGFpbmVyT2JqZWN0ID0gaGVhZGVyQ29udGFpbmVyKCk7Ci0gICAgaWYg
KGhlYWRlckNvbnRhaW5lck9iamVjdCAmJiAhaGVhZGVyQ29udGFpbmVyT2JqZWN0LT5hY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGhlYWRlckNvbnRh
aW5lck9iamVjdCk7CisgICAgYWRkQ2hpbGQoaGVhZGVyQ29udGFpbmVyKCksIERlc2NlbmRJZkln
bm9yZWQ6Ok5vKTsKIAogICAgIC8vIFNvbWV0aW1lcyB0aGUgY2VsbCBnZXRzIHRoZSB3cm9uZyBy
b2xlIGluaXRpYWxseSBiZWNhdXNlIGl0IGlzIGNyZWF0ZWQgYmVmb3JlIHRoZSBwYXJlbnQKICAg
ICAvLyBkZXRlcm1pbmVzIHdoZXRoZXIgaXQgaXMgYW4gYWNjZXNzaWJpbGl0eSB0YWJsZS4gSXRl
cmF0ZSBhbGwgdGhlIGNlbGxzIGFuZCBhbGxvdyB0aGVtIHRvCkBAIC00NTEsOCArNDQ2LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqIHJvd09iamVjdCwgSGFzaFMKICAgICAKICAgICByb3cuc2V0Um93SW5kZXgoc3RhdGlj
X2Nhc3Q8aW50PihtX3Jvd3Muc2l6ZSgpKSk7CiAgICAgbV9yb3dzLmFwcGVuZCgmcm93KTsKLSAg
ICBpZiAoIXJvdy5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIG1fY2hpbGRyZW4u
YXBwZW5kKCZyb3cpOworICAgIGFkZENoaWxkKCZyb3csIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsK
ICAgICBhcHBlbmRlZFJvd3MuYWRkKCZyb3cpOwogICAgICAgICAKICAgICAvLyBzdG9yZSB0aGUg
bWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCmluZGV4IDQ0NDA0ZjZm
ZDY5NzgzNTg2ZDU4OWM0MzI1NjI0MTljNDY1MzFjYmQuLjUwYWRjMjYzZDEyMTEzMmM3ZjQzNWNh
YjNjMmIxZjcyMzgzYjE0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKQEAgLTIwMiw3ICsyMDIsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBp
ZiAobV9jaGlsZHJlbi5zaXplKCkgPiAwICYmIG1fY2hpbGRyZW4ubGFzdCgpID09IGNlbGwpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICBtX2NoaWxkcmVuLmFw
cGVuZChjZWxsKTsKKyAgICAgICAgYWRkQ2hpbGQoY2VsbCk7CiAgICAgfQogfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCmluZGV4IDcyNTgxMTZmNWQxYmVkOTgxOTNm
MzE1YmQzMjU4YmRjYmU1ZTY5YWIuLmQ0YTEwZWRmN2I0NzgzYjdlODc5NzI5ZGU3ZTA2ODg4MGJm
MjhmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKQEAgLTczLDcgKzcz
LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OmFkZENoaWxkcmVu
KCkKICAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhwb3NhYmxlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY2hpbGRyZW4gPSBwYXJlbnRUYWJsZS5jb2x1bW5IZWFkZXJzKCk7CisgICAgZm9y
IChhdXRvJiBjb2x1bW5IZWFkZXIgOiBwYXJlbnRUYWJsZS5jb2x1bW5IZWFkZXJzKCkpCisgICAg
ICAgIGFkZENoaWxkKGNvbHVtbkhlYWRlci5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNoaWxkIDogbV9jaGlsZHJlbikKICAgICAgICAgbV9oZWFkZXJSZWN0LnVuaXRlKGNoaWxkLT5l
bGVtZW50UmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAppbmRleCBlZDBmYjBiMmNhNGQ1YTY4NTViMjkzMzFh
Zjk4ZWJhNDUyMmY2OWZmLi4xZGY5OGM4ZDYxOWNkZTBmODMzMWRhZjU4ZWFmYWViZjlkY2U2ZDRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KLSAgICAKKwogQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVS
b3c6OmhlYWRlck9iamVjdCgpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVy
LT5pc1RhYmxlUm93KCkpCkBAIC0xNTAsMTAgKzE1MCwxMiBAQCBBWENvcmVPYmplY3QqIEFjY2Vz
c2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
Um93OjphZGRDaGlsZHJlbigpCiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgc3BlY2lmaWVzIGl0
cyBjZWxscyB0aHJvdWdoIGFyaWEtb3ducywgcmV0dXJuIHRoYXQgZmlyc3QuCi0gICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25zOwotICAgIGFyaWFPd25zRWxlbWVudHMoYXJp
YU93bnMpOwotICAgIGlmIChhcmlhT3ducy5zaXplKCkpCi0gICAgICAgIG1fY2hpbGRyZW4gPSBX
VEZNb3ZlKGFyaWFPd25zKTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93
bmVkRWxlbWVudHM7CisgICAgYXJpYU93bnNFbGVtZW50cyhhcmlhT3duZWRFbGVtZW50cyk7Cisg
ICAgaWYgKGFyaWFPd25lZEVsZW1lbnRzLnNpemUoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGFy
aWFPd25lZEVsZW1lbnQgOiBhcmlhT3duZWRFbGVtZW50cykKKyAgICAgICAgICAgIGFkZENoaWxk
KGFyaWFPd25lZEVsZW1lbnQuZ2V0KCksIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKKyAgICB9CiAg
ICAgZWxzZQogICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCA4ODA5ZjNlODMxYjYyOTk2
NTdiZTYyNTYzY2U5MDA2Yzk4ZmUzYzM0Li5kYzlkMzJkNjdkNzA2ZmRmMGY1YWE2OGZjZjIzNThh
MzdlYWRjNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMjE0MywxMiArMjE0
MywxMiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFkZENoaWxkcmVuKCkKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZChBWENv
cmVPYmplY3QqKQordm9pZCBBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZChBWENvcmVPYmplY3Qq
LCBEZXNjZW5kSWZJZ25vcmVkKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIEFYSXNvbGF0ZWRPYmplY3Q6Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVk
KQordm9pZCBBWElzb2xhdGVkT2JqZWN0OjppbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNp
Z25lZCwgRGVzY2VuZElmSWdub3JlZCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCAxZjFlM2NiNGYyMTdjM2QxZGFmZTkxNzU0OTdm
YzEwZTI4NDFjODZhLi5iYmRkOWRkMGNjNDFjOTcyYjYzZjFmMDA0YzQ2OTQzYjc0ZDFlNWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC02MDcsOCArNjA3LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQWNjZXNz
aWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIGlu
c2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGFk
ZENoaWxkKEFYQ29yZU9iamVjdCosIERlc2NlbmRJZklnbm9yZWQgPSBEZXNjZW5kSWZJZ25vcmVk
OjpZZXMpIG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5z
aWduZWQsIERlc2NlbmRJZklnbm9yZWQgPSBEZXNjZW5kSWZJZ25vcmVkOjpZZXMpIG92ZXJyaWRl
OwogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBo
YXNDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SGFzQ2hpbGRyZW4pOyB9CiAgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRl
Q2hpbGRyZW4oKSBvdmVycmlkZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>