<?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>192681</bug_id>
          
          <creation_ts>2018-12-13 14:23:29 -0800</creation_ts>
          <short_desc>Web Inspector: Elements tab: multiple selection lost after navigating to another tab</short_desc>
          <delta_ts>2019-04-10 15:44:19 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487707</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-13 14:23:29 -0800</bug_when>
    <thetext>Summary:
Multiple selection lost after navigating to another tab.

Steps to Reproduce:
1. Open Inspector &gt; Elements tab
2. Select more than one DOM node
3. Select another tab
4. Return to Elements tab
  =&gt; Multiple selection is changed to single selection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487708</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-13 14:23:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/46709392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508234</commentid>
    <comment_count>2</comment_count>
      <attachid>362538</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-02-20 14:06:21 -0800</bug_when>
    <thetext>Created attachment 362538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508320</commentid>
    <comment_count>3</comment_count>
      <attachid>362538</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-02-20 15:48:18 -0800</bug_when>
    <thetext>Comment on attachment 362538
Patch

Looks good to me. However, I&apos;m not very familiar with intricacies of SelectionController. Even if I was a reviewer, I&apos;d suggest somebody else to review as well.

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

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:195
&gt; +        let iterator = this.values();
&gt; +        let result = iterator.next().value;
&gt; +        for (let value of iterator)

I was going to suggest to convert it to an array before iterating to make it faster, but it doesn&apos;t really matter any longer. Iterators are pretty fast nowadays.

https://jsperf.com/set-iterator-vs-foreach/4

&gt; Source/WebInspectorUI/UserInterface/Controllers/SelectionController.js:106
&gt; +    selectItems(items, extendSelection = false)

Is `extendSelection` currently always false? If so, I&apos;d prefer to remove it until we use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508332</commentid>
    <comment_count>4</comment_count>
      <attachid>362538</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-02-20 16:09:13 -0800</bug_when>
    <thetext>Comment on attachment 362538
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/SelectionController.js:106
&gt;&gt; +    selectItems(items, extendSelection = false)
&gt; 
&gt; Is `extendSelection` currently always false? If so, I&apos;d prefer to remove it until we use it.

Initially I included this parameter in TreeOutline.prototype.selectTreeElements(), but then removed it to limit the scope of this patch since it wasn&apos;t used. Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508339</commentid>
    <comment_count>5</comment_count>
      <attachid>362563</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-02-20 16:13:36 -0800</bug_when>
    <thetext>Created attachment 362563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509862</commentid>
    <comment_count>6</comment_count>
      <attachid>362563</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-25 17:22:40 -0800</bug_when>
    <thetext>Comment on attachment 362563
Patch

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

&gt; Source/WebInspectorUI/ChangeLog:11
&gt; +        (value.defaultComparator):
&gt; +        (value):

These ChangeLog function entires are quite useless :|
Either remove them or replace them with `Set.prototype.maxValue` and `Set.prototype.union` entries.

&gt; Source/WebInspectorUI/ChangeLog:27
&gt; +        * UserInterface/Test.html:
&gt; +        New files for testing.

NIT: I&apos;d put this at the end of the ChangeLog, as it&apos;s not very related to the main functionality of this patch/fix.

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:195
&gt; +        for (let value of iterator)

Style: missing braces.

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:207
&gt; +        let result = new Set(other);

Why use `other` and not `this`?

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:212
&gt; +

Style: unnecessary newline.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:192
&gt; +                let domNode = oldTreeElement.representedObject;

NIT: you could inline this.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:195
&gt; +                    treeElement = treeElement.children.lastValue;

This is a scary assumption to make.  Why don&apos;t we pass the actual `WI.DOMTreeElement` as `elementCloseTag` instead of just a true/false?  That way, we can retrieve it directly here (e.g. `treeElement.associatedCloseTagTreeElement`).

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:199
&gt; +            this.selectTreeElements(selectedTreeElements);

Will this interfere with the selection set by `_revealAndSelectNode` above?  Should we reverse the order of the two, and maybe filter out `selectedNode` from the list of `selectedTreeElements`?

&gt; LayoutTests/inspector/unit-tests/set-utilities.html:142
&gt; +        name: &quot;Set.prototype.maxValue&quot;,

We should also test `Set.prototype.union`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510052</commentid>
    <comment_count>7</comment_count>
      <attachid>362563</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-02-26 09:33:12 -0800</bug_when>
    <thetext>Comment on attachment 362563
Patch

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:11
&gt;&gt; +        (value):
&gt; 
&gt; These ChangeLog function entires are quite useless :|
&gt; Either remove them or replace them with `Set.prototype.maxValue` and `Set.prototype.union` entries.

I agree, but am not interested in playing games with our changelog generator,

&gt;&gt; Source/WebInspectorUI/ChangeLog:27
&gt;&gt; +        New files for testing.
&gt; 
&gt; NIT: I&apos;d put this at the end of the ChangeLog, as it&apos;s not very related to the main functionality of this patch/fix.

Reordering change log entries isn&apos;t a good use of time. Inevitably people will disagree over what the most appropriate order is, and pretty soon we&apos;ll be peppering these entries with nits requesting they be reordered. I really don&apos;t want to go there. I&apos;ll just drop the comment.

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:195
&gt;&gt; +        for (let value of iterator)
&gt; 
&gt; Style: missing braces.

Oops!

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:207
&gt;&gt; +        let result = new Set(other);
&gt; 
&gt; Why use `other` and not `this`?

Why use `this` and not `other`?

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:195
&gt;&gt; +                    treeElement = treeElement.children.lastValue;
&gt; 
&gt; This is a scary assumption to make.  Why don&apos;t we pass the actual `WI.DOMTreeElement` as `elementCloseTag` instead of just a true/false?  That way, we can retrieve it directly here (e.g. `treeElement.associatedCloseTagTreeElement`).

Nice idea. Will change.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:199
&gt;&gt; +            this.selectTreeElements(selectedTreeElements);
&gt; 
&gt; Will this interfere with the selection set by `_revealAndSelectNode` above?  Should we reverse the order of the two, and maybe filter out `selectedNode` from the list of `selectedTreeElements`?

Actually reversing the order will cause it to break:

1. Shift select some nodes, in a bottom-to-top direction. For example:

&lt;div&gt;
    &lt;p&gt;&lt;/p&gt;    &lt;-- Then shift-click to extend the selection to this node (2)
    &lt;p&gt;&lt;/p&gt;
    &lt;p&gt;&lt;/p&gt;    &lt;-- Click to select this node first (1)
&lt;/div&gt;

2. The topmost (2) selected item&apos;s WI.DOMNode is shown in the details sidebar
3. Change to a different tab, then back to Elements
=&gt; Selection restored, but the WI.DOMNode for the bottommost selected item (1) is now shown in the sidebar

I&apos;ll add a comment, or find a way to rewrite it to not depend on this subtlety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510055</commentid>
    <comment_count>8</comment_count>
      <attachid>362563</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-02-26 09:54:06 -0800</bug_when>
    <thetext>Comment on attachment 362563
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:212
&gt;&gt; +
&gt; 
&gt; Style: unnecessary newline.

I wanted to be consistent with the surrounding code. I wish we had better guidelines for these cases. For example, why should return be on its own line in `maxValue` above, but not here? It feels very arbitrary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510056</commentid>
    <comment_count>9</comment_count>
      <attachid>362563</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-26 09:59:31 -0800</bug_when>
    <thetext>Comment on attachment 362563
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:207
&gt;&gt;&gt; +        let result = new Set(other);
&gt;&gt; 
&gt;&gt; Why use `other` and not `this`?
&gt; 
&gt; Why use `this` and not `other`?

Touche.  The other `Set.prototype` functions follow that pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511660</commentid>
    <comment_count>10</comment_count>
      <attachid>362563</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-01 15:53:40 -0800</bug_when>
    <thetext>Comment on attachment 362563
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:195
&gt;&gt;&gt; +                    treeElement = treeElement.children.lastValue;
&gt;&gt; 
&gt;&gt; This is a scary assumption to make.  Why don&apos;t we pass the actual `WI.DOMTreeElement` as `elementCloseTag` instead of just a true/false?  That way, we can retrieve it directly here (e.g. `treeElement.associatedCloseTagTreeElement`).
&gt; 
&gt; Nice idea. Will change.

r-, as it seems like you&apos;re going to make some changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513274</commentid>
    <comment_count>11</comment_count>
      <attachid>363813</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-03-06 16:23:23 -0800</bug_when>
    <thetext>Created attachment 363813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513321</commentid>
    <comment_count>12</comment_count>
      <attachid>363813</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-06 17:42:13 -0800</bug_when>
    <thetext>Comment on attachment 363813
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:195
&gt; +        for (let value of iterator)

Style: missing braces.

&gt; Source/WebInspectorUI/UserInterface/Controllers/SelectionController.js:120
&gt; +        this._shiftAnchorItem = null;

Looking at it more, I think this may introduce unexpected behavior, as it would change the `_shiftAnchorItem`.  If I select item 1, shift-click to item 4, the `_lastSelectedItem` would be item 1 and the `_shiftAnchorItem` would be also be item 1.  This could would clear `_shiftAnchorItem`, even though it would keep `_lastSelectedItem` the same.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:535
&gt; +            this._closeTagTreeElement = this.insertChildElement(this.representedObject, this.children.length, true);

While you&apos;re making this change, we could also introduce an `openTagTreeElement` and have a link in both directions (it would involve passing `this` instead of `true` as the last argument).

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:202
&gt; +            this.selectTreeElements(selectedTreeElements);

You said you were going to add a comment explaining why this must be called in this particular order?

&gt; LayoutTests/inspector/unit-tests/set-utilities.html:125
&gt; +            return true;

NIT: in a sync test suite, the return is unnecessary (unless you want to fail the test case and stop running the other test cases).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521147</commentid>
    <comment_count>13</comment_count>
      <attachid>363813</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-03-25 17:56:33 -0700</bug_when>
    <thetext>Comment on attachment 363813
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/SelectionController.js:120
&gt;&gt; +        this._shiftAnchorItem = null;
&gt; 
&gt; Looking at it more, I think this may introduce unexpected behavior, as it would change the `_shiftAnchorItem`.  If I select item 1, shift-click to item 4, the `_lastSelectedItem` would be item 1 and the `_shiftAnchorItem` would be also be item 1.  This could would clear `_shiftAnchorItem`, even though it would keep `_lastSelectedItem` the same.

This method isn&apos;t called when shift-clicking. That&apos;s done by handleItemMouseDown, which calls _updateSelection directly when selecting multiple items. In the future we might want to retain the anchor when programmatically selecting items, but let&apos;s wait until the need arises.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:202
&gt;&gt; +            this.selectTreeElements(selectedTreeElements);
&gt; 
&gt; You said you were going to add a comment explaining why this must be called in this particular order?

I&apos;m going to try refactoring this slightly to eliminate the need for a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521195</commentid>
    <comment_count>14</comment_count>
      <attachid>365941</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-03-25 21:37:26 -0700</bug_when>
    <thetext>Created attachment 365941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521205</commentid>
    <comment_count>15</comment_count>
      <attachid>365945</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-03-25 21:48:24 -0700</bug_when>
    <thetext>Created attachment 365945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521206</commentid>
    <comment_count>16</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-03-25 21:49:35 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #15)
&gt; Created attachment 365945 [details]
&gt; Patch

I simplified SelectionController.selectItem, but need to make another change for this to work correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521643</commentid>
    <comment_count>17</comment_count>
      <attachid>366063</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-03-27 01:12:01 -0700</bug_when>
    <thetext>Created attachment 366063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521735</commentid>
    <comment_count>18</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-03-27 10:43:40 -0700</bug_when>
    <thetext>A few notes on the latest patch:

- Removed Set utility methods maxValue and union. No longer used.
- Added Set utility method lastValue.
- SelectionController.prototype.selectItems will set _lastSelectedItem to the last item being selected. SelectionController tracks its selected items in the order in which they are selected:

    let sc = new SelectionController(...);
    let items = sc.selectedItems;
    let lastSelectedItem = sc.lastSelectedItem;

    console.assert(items.lastValue === lastSelectedItem);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522584</commentid>
    <comment_count>19</comment_count>
      <attachid>363813</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-29 13:52:06 -0700</bug_when>
    <thetext>Comment on attachment 363813
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/SelectionController.js:120
&gt;&gt;&gt; +        this._shiftAnchorItem = null;
&gt;&gt; 
&gt;&gt; Looking at it more, I think this may introduce unexpected behavior, as it would change the `_shiftAnchorItem`.  If I select item 1, shift-click to item 4, the `_lastSelectedItem` would be item 1 and the `_shiftAnchorItem` would be also be item 1.  This could would clear `_shiftAnchorItem`, even though it would keep `_lastSelectedItem` the same.
&gt; 
&gt; This method isn&apos;t called when shift-clicking. That&apos;s done by handleItemMouseDown, which calls _updateSelection directly when selecting multiple items. In the future we might want to retain the anchor when programmatically selecting items, but let&apos;s wait until the need arises.

I understand that this path isn&apos;t called by shift-clicking, but it may be called after `_shiftAnchorItem` was set by a previous shift-click.  As an example, if I shift-click a few nodes, delete one of them via JavaScript (e.g. `node.remove()`), and then try to shift-click again, I&apos;d experience unexpected behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522590</commentid>
    <comment_count>20</comment_count>
      <attachid>366063</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-29 14:12:03 -0700</bug_when>
    <thetext>Comment on attachment 366063
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:176
&gt; +        let iterator = this.values();
&gt; +        for (let i = 0; i &lt; this.size - 1; ++i)
&gt; +            iterator.next();
&gt; +        return iterator.next().value;

I think it would be &quot;cleaner&quot; to just use `return Array.from(this).lastValue`.  It effectively does the same logic, albeit in a slightly different way (it&apos;s also much simpler).

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:540
&gt; +            this._closeTagTreeElement = this.insertChildElement(this.representedObject, this.children.length, true);

We should clear this at the beginning of this function.  If we change node type (e.g. Edit &gt; Tag), we&apos;d want to make sure that this isn&apos;t incorrect (or keeping some other object alive).

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:24
&gt; +                addObject(treeElement, child);

`appendObject`?

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:35
&gt; +        InspectorTest.expectEqual(treeOutline.selectedTreeElement, treeElement, `TreeOutline should have selected TreeElement &quot;${treeElement.title}&quot;.`);

We  should also `assert`/`expectEqual` that the size of `selectedTreeElements` (or even the actual values) matches what we&apos;d expect.

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:50
&gt; +        name: &quot;TreeOutline.FindTreeElement&quot;,

What about a negative case?  Where a `representedObject` doesn&apos;t exist?

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:51
&gt; +        description: &quot;Find TreeElement for given represented object.&quot;,

This isn&apos;t a very good description :(

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:69
&gt; +        description: &quot;Select a tree element, then select a different tree element.&quot;,

Ditto (&gt;51).

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:76
&gt; +                InspectorTest.expectThat(treeElement.selected, `TreeElement &quot;${treeElement.title}&quot; should have selected = true.`);

Rather than use &quot;selected = false&quot;, how about just &quot;should be selected&quot;?

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:79
&gt; +                InspectorTest.expectThat(otherTreeElementsAreDeselected, &quot;Other TreeElements should have selected = false.&quot;);

Ditto (&gt;76).

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:95
&gt; +        name: &quot;TreeOutline.AllowsMultipleSelection&quot;,

What about a test for what happens when we have a selection and change `allowsMultipleSelection` (e.g. turning it off should &quot;clamp&quot; the selection to just one item).

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:107
&gt; +    function triggerSelectTreeElements(treeOutline, treeElements) {

Please put this before any test cases, as otherwise it&apos;s harder to find/distinguish.

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:108
&gt; +        let displayText = `${treeElements.map((x) =&gt; `&quot;${x.title}&quot;`)}`;

This is an odd way of getting a stringified array.  Please use `JSON.stringify` instead.

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:110
&gt; +        InspectorTest.log(`Selecting TreeElements [${displayText}].`);

NIT: we normally put &quot;...&quot; at the end of any log before an action.

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:115
&gt; +        let treeElementsSelected = treeElements.every((x) =&gt; x.selected);

I&apos;d inline this.

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:116
&gt; +        InspectorTest.expectThat(treeElementsSelected, `TreeElements [${displayText}] should have selected = true.`);

Ditto (&gt;76).

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:118
&gt; +        let otherTreeElementsNotSelected = treeOutline.children.every((x) =&gt; !x.selected || treeElements.includes(x));

Ditto (&gt;115).

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:119
&gt; +        InspectorTest.expectThat(otherTreeElementsNotSelected, &quot;All other TreeElements should have selected = false.&quot;);

Ditto (&gt;76).

&gt; LayoutTests/inspector/tree-outline/tree-outline-selection.html:124
&gt; +        description: &quot;Select two tree elements, then select two different tree elements.&quot;,

Ditto (&gt;51).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524921</commentid>
    <comment_count>21</comment_count>
      <attachid>366864</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-04-05 17:55:38 -0700</bug_when>
    <thetext>Created attachment 366864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526135</commentid>
    <comment_count>22</comment_count>
      <attachid>367164</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-04-10 14:44:53 -0700</bug_when>
    <thetext>Created attachment 367164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526163</commentid>
    <comment_count>23</comment_count>
      <attachid>367164</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-10 15:44:17 -0700</bug_when>
    <thetext>Comment on attachment 367164
Patch

Clearing flags on attachment: 367164

Committed r244154: &lt;https://trac.webkit.org/changeset/244154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526164</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-10 15:44:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362538</attachid>
            <date>2019-02-20 14:06:21 -0800</date>
            <delta_ts>2019-02-20 16:13:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192681-20190220140621.patch</filename>
            <type>text/plain</type>
            <size>20799</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAy
NzZhNDliZTBkMTM4NTc5NTQxYmMxNGZkZjJkODE4MDRmYjVjMDFiLi41ZmI2ZjFiZGJiNzA0N2Rl
MDMwMzNhYTdhYmVkZjdlN2U1MTNhNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxOS0wMi0yMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rp
b24gbG9zdCBhZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAgKHZh
bHVlLmRlZmF1bHRDb21wYXJhdG9yKToKKyAgICAgICAgKHZhbHVlKToKKyAgICAgICAgQWRkIGEg
ZGVkaWNhdGVkIFNldC5wcm90b3R5cGUubWF4VmFsdWUsIHdoaWNoIGNhbiBiZSBtb3JlIGVmZmlj
aWVudAorICAgICAgICB0aGFuIGVxdWl2YWxlbnQgY29kZSB1c2luZyBBcnJheS5mcm9tIGFuZCBB
cnJheS5zb3J0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rp
b25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuU2VsZWN0aW9uQ29udHJvbGxlci5wcm90b3R5
cGUuc2VsZWN0SXRlbXMpOgorICAgICAgICBQcm92aWRlIGEgbWVhbnMgdG8gc2VsZWN0IG11bHRp
cGxlIGl0ZW1zIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4KKyAgICAgICAgVGhlIGV4aXN0aW5nIGBz
ZWxlY3RJdGVtYCBtZXRob2Qgd2FzIG5vdCByZWltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoaXMK
KyAgICAgICAgbmV3IG1ldGhvZCwgaW4gb3JkZXIgdG8gcmV0YWluIGEgZGVkaWNhdGVkIGVmZmlj
aWVudCBwYXRoIGZvciB0aGUgbW9yZQorICAgICAgICBjb21tb24gc2luZ2xlLXNlbGVjdGlvbiBv
cGVyYXRpb24uCisKKyAgICAgICAgKFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLl9k
ZXNlbGVjdEFsbEFuZFNlbGVjdCk6CisgICAgICAgIERyaXZlLWJ5IGZpeDogY29ycmVjdCBhIGxv
Z2ljIGVycm9yLiBJZiBubyBpdGVtcyBhcmUgc2VsZWN0ZWQsIHRoZSBpdGVtCisgICAgICAgIHBh
c3NlZCBhcyBhbiBhcmd1bWVudCBzaG91bGQgc3RpbGwgYmVjb21lIHNlbGVjdGVkLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisgICAgICAgIE5ldyBmaWxlcyBmb3IgdGVz
dGluZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanM6
CisgICAgICAgIChXSS5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAg
UmVzdG9yZSBzZWxlY3RlZCBUcmVlRWxlbWVudHMgYWZ0ZXIgdXBkYXRpbmcuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuVHJlZU91
dGxpbmUucHJvdG90eXBlLnNlbGVjdFRyZWVFbGVtZW50cyk6CisKIDIwMTktMDItMTkgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBJbXByb3ZlIEVTNiBDbGFzcyBpbnN0YW5jZXMgaW4gSGVhcCBTbmFwc2hvdCBpbnN0YW5jZXMg
dmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1V0aWxpdGllcy5qcwppbmRleCA0ZjI4ZGNjZGIzOGQ0NGU4MDgyZWFmMmFlY2U5NzNjNDk0OWYy
NTdlLi5kMjYxYTMwNjM0ZjYyNDJlY2QxNTNmMDFkNmI0OTM5MzE5NDQ1ZDExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5q
cwpAQCAtMTgwLDYgKzE4MCw0MCBAQCBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0LnByb3RvdHlw
ZSwgImlzU3Vic2V0T2YiLAogICAgIH0KIH0pOwogCitPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0
LnByb3RvdHlwZSwgIm1heFZhbHVlIiwKK3sKKyAgICB2YWx1ZShjb21wYXJhdG9yKQorICAgIHsK
KyAgICAgICAgZnVuY3Rpb24gZGVmYXVsdENvbXBhcmF0b3IoYSwgYikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGEgLSBiOworICAgICAgICB9CisgICAgICAgIGNvbXBhcmF0b3IgPSBj
b21wYXJhdG9yIHx8IGRlZmF1bHRDb21wYXJhdG9yOworCisgICAgICAgIGxldCBpdGVyYXRvciA9
IHRoaXMudmFsdWVzKCk7CisgICAgICAgIGxldCByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCkudmFs
dWU7CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGl0ZXJhdG9yKQorICAgICAgICAgICAgaWYg
KGNvbXBhcmF0b3IocmVzdWx0LCB2YWx1ZSkgPCAwKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IHZhbHVlOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfSk7CisKK09iamVjdC5k
ZWZpbmVQcm9wZXJ0eShTZXQucHJvdG90eXBlLCAidW5pb24iLAoreworICAgIHZhbHVlKG90aGVy
KQorICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBTZXQob3RoZXIpOworICAgICAgICBp
ZiAob3RoZXIgIT09IHRoaXMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcykK
KyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9KTsKKwogT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUu
cHJvdG90eXBlLCAiZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyIsCiB7CiAgICAgdmFsdWUo
Y2xhc3NOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKaW5k
ZXggOGIzMjE5ZDhmM2E5ODkwMTBhYjZiM2FkOGNlZmQ2YTYwNjM0M2UyZC4uNDQyMjJlNzBhNWNh
MzJjZmJkZjFmODM5NTNmYzE2YmUyOTRlMWFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxl
Y3Rpb25Db250cm9sbGVyLmpzCkBAIC0xMDMsNiArMTAzLDI2IEBAIFdJLlNlbGVjdGlvbkNvbnRy
b2xsZXIgPSBjbGFzcyBTZWxlY3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkSXRlbXMobmV3SXRlbXMpOwogICAgIH0KIAorICAgIHNl
bGVjdEl0ZW1zKGl0ZW1zLCBleHRlbmRTZWxlY3Rpb24gPSBmYWxzZSkKKyAgICB7CisgICAgICAg
IGlmIChpdGVtcy5zaXplID09PSAxKSB7CisgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oaXRl
bXMuZmlyc3RWYWx1ZSwgZXh0ZW5kU2VsZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbG93c011bHRpcGxlU2Vs
ZWN0aW9uLCAiQ2Fubm90IGV4dGVuZCBzZWxlY3Rpb24gd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb24g
ZGlzYWJsZWQuIik7CisgICAgICAgIGlmICghdGhpcy5fYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24p
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IG5ld0l0ZW1zID0gZXh0ZW5kU2Vs
ZWN0aW9uID8gdGhpcy5fc2VsZWN0ZWRJdGVtcy51bmlvbihpdGVtcykgOiBpdGVtczsKKyAgICAg
ICAgaWYgKCF0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtIHx8ICFuZXdJdGVtcy5oYXModGhpcy5fbGFz
dFNlbGVjdGVkSXRlbSkpCisgICAgICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtID0gbmV3
SXRlbXMubWF4VmFsdWUodGhpcy5fY29tcGFyYXRvcik7CisKKyAgICAgICAgdGhpcy5fc2hpZnRB
bmNob3JJdGVtID0gbnVsbDsKKworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEl0ZW1zKG5l
d0l0ZW1zKTsKKyAgICB9CisKICAgICBkZXNlbGVjdEl0ZW0oaXRlbSkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGl0ZW0sICJJbnZhbGlkIGl0ZW0gZm9yIHNlbGVjdGlvbi4iKTsKQEAg
LTI5Nyw3ICszMTcsNyBAQCBXSS5TZWxlY3Rpb25Db250cm9sbGVyID0gY2xhc3MgU2VsZWN0aW9u
Q29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2Rlc2VsZWN0QWxsQW5kU2VsZWN0
KGl0ZW0pCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkSXRlbXMuc2l6ZSkKKyAg
ICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZEl0ZW1zLnNpemUgJiYgIWl0ZW0pCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRlbXMuc2l6ZSA9PT0gMSAm
JiB0aGlzLmhhc1NlbGVjdGVkSXRlbShpdGVtKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAzYzQ3NGM1NGFlZDBkMTg4ZWNlNTY1NGVkNjYx
ZjUxZGVjMmIyZTE4Li5iMWNiMTEyOWZiZTAyMzk4Njc1MjM4ZTU0ZWNhOTY1ZDFiM2Q1MjUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0y
NTUsNiArMjU1LDggQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzaXplci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RhYmxlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvVGFibGVDb2x1bW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9UcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1RyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KICAgICAgICAgV0kuc2hhcmVkQXBwID0gbmV3IFdJLlRlc3RBcHBDb250cm9sbGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlT3V0bGluZS5qcwppbmRleCBmNTQ0ZWI3MmU5YTljZTVjNjY3ZDJjNzRhZDhi
NWMyYjhjMzc2NDAyLi41YTJhMmI3Y2M4YjkyZDZjMjEyODJkM2FmMjZiYmQzMTEwNTBiNjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01U
cmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlT3V0bGluZS5qcwpAQCAtMTU4LDYgKzE1OCw3IEBAIFdJLkRPTVRyZWVPdXRs
aW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5UcmVlT3V0bGluZQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCBzZWxlY3RlZE5vZGUgPSB0aGlzLnNlbGVjdGVk
VHJlZUVsZW1lbnQgPyB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Qg
OiBudWxsOworICAgICAgICBsZXQgc2VsZWN0ZWRUcmVlRWxlbWVudHMgPSB0aGlzLnNlbGVjdGVk
VHJlZUVsZW1lbnRzOwogCiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTgy
LDYgKzE4MywyMSBAQCBXSS5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4
dGVuZHMgV0kuVHJlZU91dGxpbmUKIAogICAgICAgICBpZiAoc2VsZWN0ZWROb2RlKQogICAgICAg
ICAgICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZShzZWxlY3RlZE5vZGUsIHRydWUpOworCisg
ICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50cykgeworICAgICAgICAgICAgLy8gVGhlIHNl
bGVjdGlvbiBjYW5ub3QgYmUgcmVzdG9yZWQgZnJvbSByZXByZXNlbnRlZCBvYmplY3RzIGFsb25l
LAorICAgICAgICAgICAgLy8gc2luY2UgYSBjbG9zaW5nIHRhZyBET01UcmVlRWxlbWVudCBoYXMg
dGhlIHNhbWUgcmVwcmVzZW50ZWQgb2JqZWN0CisgICAgICAgICAgICAvLyBhcyBpdHMgcGFyZW50
LgorICAgICAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudHMgPSBzZWxlY3RlZFRyZWVFbGVtZW50
cy5tYXAoKG9sZFRyZWVFbGVtZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUg
PSBvbGRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgICAgICAgICBsZXQg
dHJlZUVsZW1lbnQgPSB0aGlzLmZpbmRUcmVlRWxlbWVudChkb21Ob2RlKTsKKyAgICAgICAgICAg
ICAgICBpZiAodHJlZUVsZW1lbnQgJiYgb2xkVHJlZUVsZW1lbnQuaXNDbG9zZVRhZygpKQorICAg
ICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50LmNoaWxkcmVuLmxhc3RW
YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgdGhpcy5zZWxlY3RUcmVlRWxlbWVudHMoc2VsZWN0ZWRUcmVlRWxl
bWVudHMpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdXBkYXRlU2VsZWN0aW9uQXJlYSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
T3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Ry
ZWVPdXRsaW5lLmpzCmluZGV4IDk4MTU5ZTc5Y2M5NzcyZTIyMmIwZjVkODhlMTJiZmYxNjVlYmFj
MzAuLmFhN2MzMDBiN2ZhZThiMjdiZDBjN2ExNmM4MGViOWVjODFhNDgwMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lLmpzCkBAIC03MDMsNiArNzAzLDI0IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91
dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8g
bm90aGluZwogICAgIH0KIAorICAgIHNlbGVjdFRyZWVFbGVtZW50cyh0cmVlRWxlbWVudHMpCisg
ICAgeworICAgICAgICBpZiAoIXRyZWVFbGVtZW50cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50cy5sZW5ndGggPT09IDEpIHsKKyAgICAgICAg
ICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50c1swXTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24sICJDYW5ub3Qgc2VsZWN0IFRyZWVFbGVtZW50cyB3aXRoIG11
bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iKTsKKyAgICAgICAgaWYgKCF0aGlzLmFsbG93c011
bHRpcGxlU2VsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBzZWxl
Y3RhYmxlT2JqZWN0cyA9IHRyZWVFbGVtZW50cy5tYXAoKHgpID0+IHRoaXMub2JqZWN0Rm9yU2Vs
ZWN0aW9uKHgpKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5zZWxlY3RJdGVt
cyhuZXcgU2V0KHNlbGVjdGFibGVPYmplY3RzKSk7CisgICAgfQorCiAgICAgZ2V0IHNlbGVjdGVk
VHJlZUVsZW1lbnRJbmRleCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4g
fHwgIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMTEwMGU4MmY0OWVjODk3MGE0
ZjNmYzZkZjQ3ZmM2N2NmZTk0YzFjLi45YzAxNzNiMDY1MDdmYWZjNTdjZWM5MGU0MDJmNDA3ZWYz
NDZkNDk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDItMjAgIE1hdHQgQmFrZXIgIDxt
YXR0YmFrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVsZW1lbnRzIHRh
YjogbXVsdGlwbGUgc2VsZWN0aW9uIGxvc3QgYWZ0ZXIgbmF2aWdhdGluZyB0byBhbm90aGVyIHRh
YgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjgx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NjcwOTM5Mj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci90cmVlLW91dGxpbmUvdHJl
ZS1vdXRsaW5lLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgQWRkIFRyZWVPdXRsaW5lIHRlc3RzIGZvciBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVj
dGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMu
aHRtbDoKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgU2V0IG1ldGhvZC4KKwogMjAxOS0wMi0xOSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OIChyMjM4MDkwKTogVG9nZ2xpbmcgdmlzaWJpbGl0eSBvbiB0aGUgPGh0bWw+IGVsZW1lbnQg
Y2FuIHJlc3VsdCBpbiBhIGJsYW5rIHdlYiB2aWV3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjJiYjFjZTI5YWE1OWM3YzQ0MjhjYzlhMGU0
YjI5ZTY0ZTkzNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Ry
ZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQzIEBACitUZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2VsZWN0aW9uLgorCisKKz09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogVHJlZU91dGxpbmUuU2VsZWN0aW9uCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogVHJlZU91dGxpbmUuY29uc3RydWN0b3IKK1BBU1M6IHNlbGVjdGVkVHJlZUVsZW1lbnQgc2hv
dWxkIGJlIG51bGwuCitQQVNTOiBzZWxlY3RlZFRyZWVFbGVtZW50cyBzaG91bGQgYmUgZW1wdHku
CitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBzaG91bGQgYmUgZmFsc2UuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGluZS5GaW5kVHJlZUVsZW1lbnQKK1BBU1M6IFNob3Vs
ZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRlZCBvYmplY3QuCitQQVNTOiBUcmVlRWxl
bWVudCBzaG91bGQgaGF2ZSBjb3JyZWN0IHJlcHJlc2VudGVkIG9iamVjdC4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdGVkVHJlZUVsZW1lbnQKK1NlbGVjdGluZyBU
cmVlRWxlbWVudCAiSXRlbSAxIi4KK1BBU1M6IFRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIHNlbGVj
dGVkIFRyZWVFbGVtZW50ICJJdGVtIDEiLgorUEFTUzogVHJlZUVsZW1lbnQgIkl0ZW0gMSIgc2hv
dWxkIGhhdmUgc2VsZWN0ZWQgPSB0cnVlLgorUEFTUzogT3RoZXIgVHJlZUVsZW1lbnRzIHNob3Vs
ZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitTZWxlY3RpbmcgVHJlZUVsZW1lbnQgIkl0ZW0gMiIu
CitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRl
bSAyIi4KK1BBU1M6IFRyZWVFbGVtZW50ICJJdGVtIDIiIHNob3VsZCBoYXZlIHNlbGVjdGVkID0g
dHJ1ZS4KK1BBU1M6IE90aGVyIFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IGZh
bHNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVHJlZU91dGxpbmUuQWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb24KK1BBU1M6IGFsbG93c011bHRpcGxlU2VsZWN0aW9uIGVuYWJsZWQuCitQQVNTOiBh
bGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBkaXNhYmxlZC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cworU2VsZWN0aW5nIFRyZWVFbGVtZW50cyBb
Ikl0ZW0gMSIsIkl0ZW0gMiJdLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgY29ycmVj
dCBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCitQQVNTOiBUcmVlRWxlbWVudHMgWyJJdGVtIDEiLCJJ
dGVtIDIiXSBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBBbGwgb3RoZXIgVHJl
ZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitQQVNTOiBUcmVlT3V0bGlu
ZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSAyIi4KKworU2VsZWN0aW5n
IFRyZWVFbGVtZW50cyBbIkl0ZW0gMyIsIkl0ZW0gNCJdLgorUEFTUzogVHJlZU91dGxpbmUgc2hv
dWxkIGhhdmUgY29ycmVjdCBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCitQQVNTOiBUcmVlRWxlbWVu
dHMgWyJJdGVtIDMiLCJJdGVtIDQiXSBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNT
OiBBbGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitQ
QVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSA0
Ii4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50
cy5NdWx0aXBsZVNlbGVjdGlvbkRpc2FibGVkCitQQVNTOiBTaG91bGQgaGF2ZSBubyBzZWxlY3Rl
ZCBUcmVlRWxlbWVudHMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVl
LW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGI5ZjBhYjc0YjdjYTVhMjMxYTk3OTY1NTg1Mzg1MTRkMjQ0NmNmMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVj
dGlvbi5odG1sCkBAIC0wLDAgKzEsMTg0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBJbnNwZWN0b3JUZXN0LnJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CisKKyAg
ICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiVHJlZU91dGxpbmUu
U2VsZWN0aW9uIik7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVUcmVlT3V0bGluZShvYmplY3RzID0g
W10pIHsKKyAgICAgICAgZnVuY3Rpb24gYXBwZW5kT2JqZWN0KHBhcmVudCwgb2JqZWN0KSB7Cisg
ICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHt9OworICAgICAgICAgICAgaWYgKG9iamVjdC5jaGls
ZHJlbikKKyAgICAgICAgICAgICAgICBvcHRpb25zLmhhc0NoaWxkcmVuID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGxldCB0cmVlRWxlbWVudCA9IG5ldyBXSS5UcmVlRWxlbWVudChvYmplY3QudGl0bGUs
IG9iamVjdCwgb3B0aW9ucyk7CisgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodHJlZUVs
ZW1lbnQpOworCisgICAgICAgICAgICBpZiAoIW9iamVjdC5jaGlsZHJlbikKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG9iamVjdC5jaGls
ZHJlbikKKyAgICAgICAgICAgICAgICBhZGRPYmplY3QodHJlZUVsZW1lbnQsIGNoaWxkKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IG5ldyBXSS5UcmVlT3V0bGluZTsK
KyAgICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iamVjdHMpCisgICAgICAgICAgICBhcHBlbmRP
YmplY3QodHJlZU91dGxpbmUsIG9iamVjdCk7CisKKyAgICAgICAgcmV0dXJuIHRyZWVPdXRsaW5l
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQodHJlZU91
dGxpbmUsIHRyZWVFbGVtZW50KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
dHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCwgdHJlZUVsZW1lbnQsIGBUcmVlT3V0bGlu
ZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiJHt0cmVlRWxlbWVudC50aXRsZX0i
LmApOworICAgIH0KKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRy
ZWVPdXRsaW5lLmNvbnN0cnVjdG9yIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxl
dCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0TnVsbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LCAic2Vs
ZWN0ZWRUcmVlRWxlbWVudCBzaG91bGQgYmUgbnVsbC4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3Ro
LCAwLCAic2VsZWN0ZWRUcmVlRWxlbWVudHMgc2hvdWxkIGJlIGVtcHR5LiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh0cmVlT3V0bGluZS5hbGxvd3NNdWx0aXBsZVNl
bGVjdGlvbiwgImFsbG93c011bHRpcGxlU2VsZWN0aW9uIHNob3VsZCBiZSBmYWxzZS4iKTsKKwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLkZpbmRUcmVlRWxlbWVu
dCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiRmluZCBUcmVlRWxlbWVudCBmb3IgZ2l2ZW4gcmVw
cmVzZW50ZWQgb2JqZWN0LiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBjb25zdCBy
ZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAxIn0s
CisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICAgICAge3Rp
dGxlOiAiSXRlbSAzIn0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91
dGxpbmUgPSBjcmVhdGVUcmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAg
ICAgbGV0IHRyZWVFbGVtZW50ID0gdHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KHJlcHJlc2Vu
dGVkT2JqZWN0c1swXSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0
cmVlRWxlbWVudCwgIlNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRlZCBvYmpl
Y3QuIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZUVsZW1lbnQu
cmVwcmVzZW50ZWRPYmplY3QsIHJlcHJlc2VudGVkT2JqZWN0c1swXSwgIlRyZWVFbGVtZW50IHNo
b3VsZCBoYXZlIGNvcnJlY3QgcmVwcmVzZW50ZWQgb2JqZWN0LiIpCisKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RlZFRyZWVFbGVtZW50IiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJTZWxlY3QgYSB0cmVlIGVsZW1lbnQsIHRoZW4gc2VsZWN0IGEgZGlm
ZmVyZW50IHRyZWUgZWxlbWVudC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgZnVu
Y3Rpb24gdHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50KHRyZWVFbGVtZW50KSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYFNlbGVjdGluZyBUcmVlRWxlbWVudCAiJHt0cmVlRWxl
bWVudC50aXRsZX0iLmApOworICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJl
ZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKKworICAgICAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVk
VHJlZUVsZW1lbnQodHJlZU91dGxpbmUsIHRyZWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodHJlZUVsZW1lbnQuc2VsZWN0ZWQsIGBUcmVlRWxlbWVu
dCAiJHt0cmVlRWxlbWVudC50aXRsZX0iIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1ZS5gKTsK
KworICAgICAgICAgICAgICAgIGxldCBvdGhlclRyZWVFbGVtZW50c0FyZURlc2VsZWN0ZWQgPSB0
cmVlT3V0bGluZS5jaGlsZHJlbi5ldmVyeSgoeCkgPT4geCA9PT0gdHJlZUVsZW1lbnQgfHwgIXgu
c2VsZWN0ZWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChvdGhl
clRyZWVFbGVtZW50c0FyZURlc2VsZWN0ZWQsICJPdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIGhh
dmUgc2VsZWN0ZWQgPSBmYWxzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29u
c3QgcmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0g
MSJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAgICAgICAgICAgXTsK
KworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91dGxpbmUocmVwcmVz
ZW50ZWRPYmplY3RzKTsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50KHRy
ZWVPdXRsaW5lLmNoaWxkcmVuWzBdKTsKKyAgICAgICAgICAgIHRyaWdnZXJTZWxlY3RUcmVlRWxl
bWVudCh0cmVlT3V0bGluZS5jaGlsZHJlblsxXSk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJUcmVlT3V0bGluZS5BbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gZW5hYmxlIG11bHRpcGxlIHNlbGVjdGlvbi4i
LAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRl
VHJlZU91dGxpbmUoKTsKKworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHRy
ZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVTZWxlY3Rp
b24gZW5hYmxlZC4iKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2Vs
ZWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHRy
ZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVTZWxlY3Rp
b24gZGlzYWJsZWQuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBmdW5jdGlvbiB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVPdXRs
aW5lLCB0cmVlRWxlbWVudHMpIHsKKyAgICAgICAgbGV0IGRpc3BsYXlUZXh0ID0gYCR7dHJlZUVs
ZW1lbnRzLm1hcCgoeCkgPT4gYCIke3gudGl0bGV9ImApfWA7CisKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coYFNlbGVjdGluZyBUcmVlRWxlbWVudHMgWyR7ZGlzcGxheVRleHR9XS5gKTsKKyAg
ICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVFbGVtZW50cyk7CisKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0
ZWRUcmVlRWxlbWVudHMsIHRyZWVFbGVtZW50cywgIlRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIGNv
cnJlY3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLiIpOworCisgICAgICAgIGxldCB0cmVlRWxlbWVu
dHNTZWxlY3RlZCA9IHRyZWVFbGVtZW50cy5ldmVyeSgoeCkgPT4geC5zZWxlY3RlZCk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0cmVlRWxlbWVudHNTZWxlY3RlZCwgYFRyZWVF
bGVtZW50cyBbJHtkaXNwbGF5VGV4dH1dIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1ZS5gKTsK
KworICAgICAgICBsZXQgb3RoZXJUcmVlRWxlbWVudHNOb3RTZWxlY3RlZCA9IHRyZWVPdXRsaW5l
LmNoaWxkcmVuLmV2ZXJ5KCh4KSA9PiAheC5zZWxlY3RlZCB8fCB0cmVlRWxlbWVudHMuaW5jbHVk
ZXMoeCkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQob3RoZXJUcmVlRWxlbWVu
dHNOb3RTZWxlY3RlZCwgIkFsbCBvdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIGhhdmUgc2VsZWN0
ZWQgPSBmYWxzZS4iKTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlNlbGVjdCB0d28gdHJlZSBlbGVtZW50cywgdGhlbiBzZWxlY3QgdHdvIGRpZmZlcmVu
dCB0cmVlIGVsZW1lbnRzLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBjb25zdCBy
ZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAxIn0s
CisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICAgICAge3Rp
dGxlOiAiSXRlbSAzIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSA0In0sCisgICAg
ICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVUcmVlT3V0
bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dz
TXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlOworCisgICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSB0
cmVlT3V0bGluZS5jaGlsZHJlbjsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRyZWVFbGVt
ZW50cyh0cmVlT3V0bGluZSwgW2NoaWxkcmVuWzBdLCBjaGlsZHJlblsxXV0pOworICAgICAgICAg
ICAgZXhwZWN0U2VsZWN0ZWRUcmVlRWxlbWVudCh0cmVlT3V0bGluZSwgY2hpbGRyZW5bMV0pOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAgICAgICAgIHRyaWdn
ZXJTZWxlY3RUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIFtjaGlsZHJlblsyXSwgY2hpbGRyZW5b
M11dKTsKKyAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQodHJlZU91dGxpbmUs
IGNoaWxkcmVuWzNdKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRs
aW5lLlNlbGVjdFRyZWVFbGVtZW50cy5NdWx0aXBsZVNlbGVjdGlvbkRpc2FibGVkIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJTZWxlY3QgbXVsdGlwbGUgdHJlZSBlbGVtZW50cyB3aXRoIG11bHRp
cGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAg
Y29uc3QgcmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0
ZW0gMSJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAgICAgICAgICAg
XTsKKworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91dGxpbmUocmVw
cmVzZW50ZWRPYmplY3RzKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxl
U2VsZWN0aW9uID0gZmFsc2U7CisKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLnNlbGVjdFRyZWVF
bGVtZW50cyh0cmVlT3V0bGluZS5jaGlsZHJlbik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnRzLmxlbmd0aCwgMCwg
IlNob3VsZCBoYXZlIG5vIHNlbGVjdGVkIFRyZWVFbGVtZW50cy4iKQorCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2Vz
QW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVz
dCgpIj4KKyAgICA8cD5UZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2VsZWN0aW9uLjwvcD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRl
c3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXggYjhkYTkxMGJiZWFiM2Rh
YTQ1YzU3OGJjN2ZlZWIwM2I1Yjc3ZTlkYi4uYjJiMzUwMmJiOTRmMDAyNTFjZjQ2NTI4NGZlZmU3
MWFmMmIzZjdmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMv
c2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKQEAgLTQxLDMgKzQxLDkgQEAgUEFT
UzogU2V0IGRpZmZlcmVuY2Ugc2hvdWxkIGJlIFsxXS4KIFBBU1M6IFNldCB3aXRoIHZhbHVlcyBb
XSBzaG91bGQgaGF2ZSBmaXJzdFZhbHVlIGVxdWFsIHRvIHVuZGVmaW5lZC4KIFBBU1M6IFNldCB3
aXRoIHZhbHVlcyBbMSwyLDNdIHNob3VsZCBoYXZlIGZpcnN0VmFsdWUgZXF1YWwgdG8gMS4KIAor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IFNldC5wcm90b3R5cGUubWF4VmFsdWUKK1BBU1M6IFNldCB3
aXRoIHZhbHVlcyBbXSBzaG91bGQgaGF2ZSBtYXhpbXVtIHZhbHVlIHVuZGVmaW5lZC4KK1BBU1M6
IFNldCB3aXRoIHZhbHVlcyBbMV0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSAxLgorUEFTUzog
U2V0IHdpdGggdmFsdWVzIFsxLDIsMF0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSAyLgorUEFT
UzogU2V0IHdpdGggdmFsdWVzIFtiLGMsYV0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSBjLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0
aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVz
Lmh0bWwKaW5kZXggZGI3MTQwYzEyYTQyM2I2NjYzZTY3M2U1YTM3YWM0ZmY5YWNjY2Q2Zi4uZDYx
ZGUxOTZjYWE3NjhlNDM1ZWJmZGQxYjVjN2RiMGE5MGIxZWQ3YSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMuaHRtbApAQCAtMTM4LDYg
KzEzOCwyMiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwogCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiU2V0LnByb3RvdHlwZS5tYXhWYWx1ZSIs
CisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0TWF4VmFsdWUodmFs
dWVzLCBjb21wYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQodmFs
dWVzKTsKKyAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZE1heCA9IHZhbHVlcy5zb3J0KGNv
bXBhcmF0b3IpLmxhc3RWYWx1ZTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHNldC5tYXhWYWx1ZShjb21wYXJhdG9yKSwgZXhwZWN0ZWRNYXgsIGBTZXQgd2l0aCB2
YWx1ZXMgWyR7QXJyYXkuZnJvbShzZXQpfV0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSAke2V4
cGVjdGVkTWF4fS5gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdE1heFZhbHVl
KFtdKTsKKyAgICAgICAgICAgIHRlc3RNYXhWYWx1ZShbMV0pOworICAgICAgICAgICAgdGVzdE1h
eFZhbHVlKFsxLCAyLCAwXSk7CisgICAgICAgICAgICB0ZXN0TWF4VmFsdWUoWyJiIiwgImMiLCAi
YSJdLCAoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTsKKyAgICAgICAgfQorICAgIH0pOwor
CiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362563</attachid>
            <date>2019-02-20 16:13:36 -0800</date>
            <delta_ts>2019-03-06 16:23:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192681-20190220161335.patch</filename>
            <type>text/plain</type>
            <size>20679</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBk
YWU3OTMzNzAzOWY5YzA4YWVjZWU3MWMzMGRjNDA4YjgyYTJkNTg3Li44NGM0YTNlNzM3NTY5N2Q1
ZjMzYzJiOGJhOTkwNjIwYWIwYzUwYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxOS0wMi0yMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rp
b24gbG9zdCBhZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAgKHZh
bHVlLmRlZmF1bHRDb21wYXJhdG9yKToKKyAgICAgICAgKHZhbHVlKToKKyAgICAgICAgQWRkIGEg
ZGVkaWNhdGVkIFNldC5wcm90b3R5cGUubWF4VmFsdWUsIHdoaWNoIGNhbiBiZSBtb3JlIGVmZmlj
aWVudAorICAgICAgICB0aGFuIGVxdWl2YWxlbnQgY29kZSB1c2luZyBBcnJheS5mcm9tIGFuZCBB
cnJheS5zb3J0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rp
b25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuU2VsZWN0aW9uQ29udHJvbGxlci5wcm90b3R5
cGUuc2VsZWN0SXRlbXMpOgorICAgICAgICBQcm92aWRlIGEgbWVhbnMgdG8gc2VsZWN0IG11bHRp
cGxlIGl0ZW1zIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4KKyAgICAgICAgVGhlIGV4aXN0aW5nIGBz
ZWxlY3RJdGVtYCBtZXRob2Qgd2FzIG5vdCByZWltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoaXMK
KyAgICAgICAgbmV3IG1ldGhvZCwgaW4gb3JkZXIgdG8gcmV0YWluIGEgZGVkaWNhdGVkIGVmZmlj
aWVudCBwYXRoIGZvciB0aGUgbW9yZQorICAgICAgICBjb21tb24gc2luZ2xlLXNlbGVjdGlvbiBv
cGVyYXRpb24uCisKKyAgICAgICAgKFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLl9k
ZXNlbGVjdEFsbEFuZFNlbGVjdCk6CisgICAgICAgIERyaXZlLWJ5IGZpeDogY29ycmVjdCBhIGxv
Z2ljIGVycm9yLiBJZiBubyBpdGVtcyBhcmUgc2VsZWN0ZWQsIHRoZSBpdGVtCisgICAgICAgIHBh
c3NlZCBhcyBhbiBhcmd1bWVudCBzaG91bGQgc3RpbGwgYmVjb21lIHNlbGVjdGVkLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisgICAgICAgIE5ldyBmaWxlcyBmb3IgdGVz
dGluZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanM6
CisgICAgICAgIChXSS5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAg
UmVzdG9yZSBzZWxlY3RlZCBUcmVlRWxlbWVudHMgYWZ0ZXIgdXBkYXRpbmcuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuVHJlZU91
dGxpbmUucHJvdG90eXBlLnNlbGVjdFRyZWVFbGVtZW50cyk6CisKIDIwMTktMDItMjAgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gQWRkIFNES1Zhcmlh
bnQueGNjb25maWcgdG8gdmFyaW91cyBYY29kZSBwcm9qZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwppbmRleCA0ZjI4
ZGNjZGIzOGQ0NGU4MDgyZWFmMmFlY2U5NzNjNDk0OWYyNTdlLi5kMjYxYTMwNjM0ZjYyNDJlY2Qx
NTNmMDFkNmI0OTM5MzE5NDQ1ZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwpAQCAtMTgwLDYgKzE4MCw0MCBAQCBP
YmplY3QuZGVmaW5lUHJvcGVydHkoU2V0LnByb3RvdHlwZSwgImlzU3Vic2V0T2YiLAogICAgIH0K
IH0pOwogCitPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0LnByb3RvdHlwZSwgIm1heFZhbHVlIiwK
K3sKKyAgICB2YWx1ZShjb21wYXJhdG9yKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZGVmYXVs
dENvbXBhcmF0b3IoYSwgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgLSBiOwor
ICAgICAgICB9CisgICAgICAgIGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHx8IGRlZmF1bHRDb21w
YXJhdG9yOworCisgICAgICAgIGxldCBpdGVyYXRvciA9IHRoaXMudmFsdWVzKCk7CisgICAgICAg
IGxldCByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCkudmFsdWU7CisgICAgICAgIGZvciAobGV0IHZh
bHVlIG9mIGl0ZXJhdG9yKQorICAgICAgICAgICAgaWYgKGNvbXBhcmF0b3IocmVzdWx0LCB2YWx1
ZSkgPCAwKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorfSk7CisKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXQucHJvdG90
eXBlLCAidW5pb24iLAoreworICAgIHZhbHVlKG90aGVyKQorICAgIHsKKyAgICAgICAgbGV0IHJl
c3VsdCA9IG5ldyBTZXQob3RoZXIpOworICAgICAgICBpZiAob3RoZXIgIT09IHRoaXMpIHsKKyAg
ICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcykKKyAgICAgICAgICAgICAgICByZXN1bHQu
YWRkKGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9
KTsKKwogT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAiZW5jbG9zaW5nTm9k
ZU9yU2VsZldpdGhDbGFzcyIsCiB7CiAgICAgdmFsdWUoY2xhc3NOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9u
Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKaW5kZXggOGIzMjE5ZDhmM2E5ODkwMTBhYjZi
M2FkOGNlZmQ2YTYwNjM0M2UyZC4uZThjODc0ZGQ2ZGEyZDU4NDkyM2U5N2Y5NzRmYmVkODVhN2Qx
YmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCkBAIC0x
MDMsNiArMTAzLDI1IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxlY3Rpb25D
b250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVk
SXRlbXMobmV3SXRlbXMpOwogICAgIH0KIAorICAgIHNlbGVjdEl0ZW1zKGl0ZW1zKQorICAgIHsK
KyAgICAgICAgaWYgKGl0ZW1zLnNpemUgPT09IDEpIHsKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0
SXRlbShpdGVtcy5maXJzdFZhbHVlLCBleHRlbmRTZWxlY3Rpb24pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb24sICJDYW5ub3QgZXh0ZW5kIHNlbGVjdGlvbiB3aXRoIG11bHRpcGxlIHNl
bGVjdGlvbiBkaXNhYmxlZC4iKTsKKyAgICAgICAgaWYgKCF0aGlzLl9hbGxvd3NNdWx0aXBsZVNl
bGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMuX2xhc3RT
ZWxlY3RlZEl0ZW0gfHwgIWl0ZW1zLmhhcyh0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtKSkKKyAgICAg
ICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0gPSBpdGVtcy5tYXhWYWx1ZSh0aGlzLl9jb21w
YXJhdG9yKTsKKworICAgICAgICB0aGlzLl9zaGlmdEFuY2hvckl0ZW0gPSBudWxsOworCisgICAg
ICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkSXRlbXMoaXRlbXMpOworICAgIH0KKwogICAgIGRlc2Vs
ZWN0SXRlbShpdGVtKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaXRlbSwgIkludmFs
aWQgaXRlbSBmb3Igc2VsZWN0aW9uLiIpOwpAQCAtMjk3LDcgKzMxNiw3IEBAIFdJLlNlbGVjdGlv
bkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxlY3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICBfZGVzZWxlY3RBbGxBbmRTZWxlY3QoaXRlbSkKICAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fc2VsZWN0ZWRJdGVtcy5zaXplKQorICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkSXRl
bXMuc2l6ZSAmJiAhaXRlbSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhp
cy5fc2VsZWN0ZWRJdGVtcy5zaXplID09PSAxICYmIHRoaXMuaGFzU2VsZWN0ZWRJdGVtKGl0ZW0p
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4
IDNjNDc0YzU0YWVkMGQxODhlY2U1NjU0ZWQ2NjFmNTFkZWMyYjJlMTguLmIxY2IxMTI5ZmJlMDIz
OTg2NzUyMzhlNTRlY2E5NjVkMWIzZDUyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTI1NSw2ICsyNTUsOCBAQAogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9SZXNpemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
VGFibGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UYWJsZUNvbHVtbi5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RyZWVFbGVtZW50LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0Pgog
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICBXSS5zaGFyZWRB
cHAgPSBuZXcgV0kuVGVzdEFwcENvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCmluZGV4
IGY1NDRlYjcyZTlhOWNlNWM2NjdkMmM3NGFkOGI1YzJiOGMzNzY0MDIuLjVhMmEyYjdjYzhiOTJk
NmMyMTI4MmQzYWYyNmJiZDMxMTA1MGI2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCkBAIC0x
NTgsNiArMTU4LDcgQEAgV0kuRE9NVHJlZU91dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBl
eHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbGV0
IHNlbGVjdGVkTm9kZSA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA/IHRoaXMuc2VsZWN0ZWRU
cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA6IG51bGw7CisgICAgICAgIGxldCBzZWxlY3Rl
ZFRyZWVFbGVtZW50cyA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudHM7CiAKICAgICAgICAgdGhp
cy5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0xODIsNiArMTgzLDIxIEBAIFdJLkRPTVRyZWVPdXRs
aW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5UcmVlT3V0bGluZQogCiAgICAg
ICAgIGlmIChzZWxlY3RlZE5vZGUpCiAgICAgICAgICAgICB0aGlzLl9yZXZlYWxBbmRTZWxlY3RO
b2RlKHNlbGVjdGVkTm9kZSwgdHJ1ZSk7CisKKyAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1l
bnRzKSB7CisgICAgICAgICAgICAvLyBUaGUgc2VsZWN0aW9uIGNhbm5vdCBiZSByZXN0b3JlZCBm
cm9tIHJlcHJlc2VudGVkIG9iamVjdHMgYWxvbmUsCisgICAgICAgICAgICAvLyBzaW5jZSBhIGNs
b3NpbmcgdGFnIERPTVRyZWVFbGVtZW50IGhhcyB0aGUgc2FtZSByZXByZXNlbnRlZCBvYmplY3QK
KyAgICAgICAgICAgIC8vIGFzIGl0cyBwYXJlbnQuCisgICAgICAgICAgICBzZWxlY3RlZFRyZWVF
bGVtZW50cyA9IHNlbGVjdGVkVHJlZUVsZW1lbnRzLm1hcCgob2xkVHJlZUVsZW1lbnQpID0+IHsK
KyAgICAgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IG9sZFRyZWVFbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0OworICAgICAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuZmluZFRyZWVF
bGVtZW50KGRvbU5vZGUpOworICAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCAmJiBvbGRU
cmVlRWxlbWVudC5pc0Nsb3NlVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50
ID0gdHJlZUVsZW1lbnQuY2hpbGRyZW4ubGFzdFZhbHVlOworICAgICAgICAgICAgICAgIHJldHVy
biB0cmVlRWxlbWVudDsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0aGlzLnNlbGVj
dFRyZWVFbGVtZW50cyhzZWxlY3RlZFRyZWVFbGVtZW50cyk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICB1cGRhdGVTZWxlY3Rpb25BcmVhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKaW5kZXggOTgxNTllNzlj
Yzk3NzJlMjIyYjBmNWQ4OGUxMmJmZjE2NWViYWMzMC4uYWE3YzMwMGI3ZmFlOGIyN2JkMGM3YTE2
YzgwZWI5ZWM4MWE0ODAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTcwMyw2ICs3MDMsMjQgQEAg
V0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCiAgICAgfQogCisgICAgc2VsZWN0
VHJlZUVsZW1lbnRzKHRyZWVFbGVtZW50cykKKyAgICB7CisgICAgICAgIGlmICghdHJlZUVsZW1l
bnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJlZUVsZW1l
bnRzLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
ID0gdHJlZUVsZW1lbnRzWzBdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgIkNhbm5v
dCBzZWxlY3QgVHJlZUVsZW1lbnRzIHdpdGggbXVsdGlwbGUgc2VsZWN0aW9uIGRpc2FibGVkLiIp
OworICAgICAgICBpZiAoIXRoaXMuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24pCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbGV0IHNlbGVjdGFibGVPYmplY3RzID0gdHJlZUVsZW1lbnRz
Lm1hcCgoeCkgPT4gdGhpcy5vYmplY3RGb3JTZWxlY3Rpb24oeCkpOworICAgICAgICB0aGlzLl9z
ZWxlY3Rpb25Db250cm9sbGVyLnNlbGVjdEl0ZW1zKG5ldyBTZXQoc2VsZWN0YWJsZU9iamVjdHMp
KTsKKyAgICB9CisKICAgICBnZXQgc2VsZWN0ZWRUcmVlRWxlbWVudEluZGV4KCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbiB8fCAhdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGQ4OTRlNzhhNGIyMDRkMjIxOTQ2NWRiYmU1NTkyMDQ3NzI4ZjgyYjAuLmNkMDVk
NDA2M2Y3MzM3MjI4ZTliOGUxYjIwODQxODhkYTI2MGE0YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxOS0wMi0yMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rpb24gbG9zdCBh
ZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2
NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxp
bmUtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgVHJlZU91dGxpbmUgdGVzdHMg
Zm9yIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2VsZWN0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9y
L3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sOgorICAgICAgICBBZGQgdGVzdHMgZm9y
IG5ldyBTZXQgdXRpbGl0eSBtZXRob2QuCisKIDIwMTktMDItMjAgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBkcmF3SW1hZ2UoKSBjbGVhcnMg
dGhlIGNhbnZhcyBpZiBpdCdzIHRoZSBzb3VyY2Ugb2YgdGhlIGltYWdlIGFuZCBnbG9iYWxDb21w
b3NpdGVPcGVyYXRpb24gaXMgImNvcHkiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjJiYjFjZTI5YWE1OWM3YzQ0MjhjYzlhMGU0YjI5ZTY0
ZTkzNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0
bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQzIEBA
CitUZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2VsZWN0aW9uLgorCisKKz09IFJ1bm5pbmcgdGVz
dCBzdWl0ZTogVHJlZU91dGxpbmUuU2VsZWN0aW9uCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVHJl
ZU91dGxpbmUuY29uc3RydWN0b3IKK1BBU1M6IHNlbGVjdGVkVHJlZUVsZW1lbnQgc2hvdWxkIGJl
IG51bGwuCitQQVNTOiBzZWxlY3RlZFRyZWVFbGVtZW50cyBzaG91bGQgYmUgZW1wdHkuCitQQVNT
OiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBzaG91bGQgYmUgZmFsc2UuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBUcmVlT3V0bGluZS5GaW5kVHJlZUVsZW1lbnQKK1BBU1M6IFNob3VsZCBmaW5k
IFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRlZCBvYmplY3QuCitQQVNTOiBUcmVlRWxlbWVudCBz
aG91bGQgaGF2ZSBjb3JyZWN0IHJlcHJlc2VudGVkIG9iamVjdC4KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdGVkVHJlZUVsZW1lbnQKK1NlbGVjdGluZyBUcmVlRWxl
bWVudCAiSXRlbSAxIi4KK1BBU1M6IFRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIHNlbGVjdGVkIFRy
ZWVFbGVtZW50ICJJdGVtIDEiLgorUEFTUzogVHJlZUVsZW1lbnQgIkl0ZW0gMSIgc2hvdWxkIGhh
dmUgc2VsZWN0ZWQgPSB0cnVlLgorUEFTUzogT3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZl
IHNlbGVjdGVkID0gZmFsc2UuCitTZWxlY3RpbmcgVHJlZUVsZW1lbnQgIkl0ZW0gMiIuCitQQVNT
OiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSAyIi4K
K1BBU1M6IFRyZWVFbGVtZW50ICJJdGVtIDIiIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1ZS4K
K1BBU1M6IE90aGVyIFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IGZhbHNlLgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogVHJlZU91dGxpbmUuQWxsb3dzTXVsdGlwbGVTZWxlY3Rp
b24KK1BBU1M6IGFsbG93c011bHRpcGxlU2VsZWN0aW9uIGVuYWJsZWQuCitQQVNTOiBhbGxvd3NN
dWx0aXBsZVNlbGVjdGlvbiBkaXNhYmxlZC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVP
dXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cworU2VsZWN0aW5nIFRyZWVFbGVtZW50cyBbIkl0ZW0g
MSIsIkl0ZW0gMiJdLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgY29ycmVjdCBzZWxl
Y3RlZCBUcmVlRWxlbWVudHMuCitQQVNTOiBUcmVlRWxlbWVudHMgWyJJdGVtIDEiLCJJdGVtIDIi
XSBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBBbGwgb3RoZXIgVHJlZUVsZW1l
bnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91
bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSAyIi4KKworU2VsZWN0aW5nIFRyZWVF
bGVtZW50cyBbIkl0ZW0gMyIsIkl0ZW0gNCJdLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhh
dmUgY29ycmVjdCBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCitQQVNTOiBUcmVlRWxlbWVudHMgWyJJ
dGVtIDMiLCJJdGVtIDQiXSBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBBbGwg
b3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitQQVNTOiBU
cmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSA0Ii4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cy5NdWx0
aXBsZVNlbGVjdGlvbkRpc2FibGVkCitQQVNTOiBTaG91bGQgaGF2ZSBubyBzZWxlY3RlZCBUcmVl
RWxlbWVudHMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxp
bmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Ry
ZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI5ZjBh
Yjc0YjdjYTVhMjMxYTk3OTY1NTg1Mzg1MTRkMjQ0NmNmMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5o
dG1sCkBAIC0wLDAgKzEsMTg0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJ
bnNwZWN0b3JUZXN0LnJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CisKKyAgICBsZXQg
c3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiVHJlZU91dGxpbmUuU2VsZWN0
aW9uIik7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVUcmVlT3V0bGluZShvYmplY3RzID0gW10pIHsK
KyAgICAgICAgZnVuY3Rpb24gYXBwZW5kT2JqZWN0KHBhcmVudCwgb2JqZWN0KSB7CisgICAgICAg
ICAgICBsZXQgb3B0aW9ucyA9IHt9OworICAgICAgICAgICAgaWYgKG9iamVjdC5jaGlsZHJlbikK
KyAgICAgICAgICAgICAgICBvcHRpb25zLmhhc0NoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICAgICAg
IGxldCB0cmVlRWxlbWVudCA9IG5ldyBXSS5UcmVlRWxlbWVudChvYmplY3QudGl0bGUsIG9iamVj
dCwgb3B0aW9ucyk7CisgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQp
OworCisgICAgICAgICAgICBpZiAoIW9iamVjdC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG9iamVjdC5jaGlsZHJlbikK
KyAgICAgICAgICAgICAgICBhZGRPYmplY3QodHJlZUVsZW1lbnQsIGNoaWxkKTsKKyAgICAgICAg
fQorCisgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IG5ldyBXSS5UcmVlT3V0bGluZTsKKyAgICAg
ICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iamVjdHMpCisgICAgICAgICAgICBhcHBlbmRPYmplY3Qo
dHJlZU91dGxpbmUsIG9iamVjdCk7CisKKyAgICAgICAgcmV0dXJuIHRyZWVPdXRsaW5lOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQodHJlZU91dGxpbmUs
IHRyZWVFbGVtZW50KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91
dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCwgdHJlZUVsZW1lbnQsIGBUcmVlT3V0bGluZSBzaG91
bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiJHt0cmVlRWxlbWVudC50aXRsZX0iLmApOwor
ICAgIH0KKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRs
aW5lLmNvbnN0cnVjdG9yIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0cmVl
T3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0TnVsbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LCAic2VsZWN0ZWRU
cmVlRWxlbWVudCBzaG91bGQgYmUgbnVsbC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3RoLCAwLCAi
c2VsZWN0ZWRUcmVlRWxlbWVudHMgc2hvdWxkIGJlIGVtcHR5LiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RGYWxzZSh0cmVlT3V0bGluZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlv
biwgImFsbG93c011bHRpcGxlU2VsZWN0aW9uIHNob3VsZCBiZSBmYWxzZS4iKTsKKworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLkZpbmRUcmVlRWxlbWVudCIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiRmluZCBUcmVlRWxlbWVudCBmb3IgZ2l2ZW4gcmVwcmVzZW50
ZWQgb2JqZWN0LiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBjb25zdCByZXByZXNl
bnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAxIn0sCisgICAg
ICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAi
SXRlbSAzIn0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUg
PSBjcmVhdGVUcmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgbGV0
IHRyZWVFbGVtZW50ID0gdHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2Jq
ZWN0c1swXSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0cmVlRWxl
bWVudCwgIlNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRlZCBvYmplY3QuIikK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZUVsZW1lbnQucmVwcmVz
ZW50ZWRPYmplY3QsIHJlcHJlc2VudGVkT2JqZWN0c1swXSwgIlRyZWVFbGVtZW50IHNob3VsZCBo
YXZlIGNvcnJlY3QgcmVwcmVzZW50ZWQgb2JqZWN0LiIpCisKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RlZFRyZWVFbGVtZW50IiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJTZWxlY3QgYSB0cmVlIGVsZW1lbnQsIHRoZW4gc2VsZWN0IGEgZGlmZmVyZW50
IHRyZWUgZWxlbWVudC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgZnVuY3Rpb24g
dHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50KHRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coYFNlbGVjdGluZyBUcmVlRWxlbWVudCAiJHt0cmVlRWxlbWVudC50
aXRsZX0iLmApOworICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1l
bnQgPSB0cmVlRWxlbWVudDsKKworICAgICAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJlZUVs
ZW1lbnQodHJlZU91dGxpbmUsIHRyZWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQodHJlZUVsZW1lbnQuc2VsZWN0ZWQsIGBUcmVlRWxlbWVudCAiJHt0
cmVlRWxlbWVudC50aXRsZX0iIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1ZS5gKTsKKworICAg
ICAgICAgICAgICAgIGxldCBvdGhlclRyZWVFbGVtZW50c0FyZURlc2VsZWN0ZWQgPSB0cmVlT3V0
bGluZS5jaGlsZHJlbi5ldmVyeSgoeCkgPT4geCA9PT0gdHJlZUVsZW1lbnQgfHwgIXguc2VsZWN0
ZWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChvdGhlclRyZWVF
bGVtZW50c0FyZURlc2VsZWN0ZWQsICJPdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIGhhdmUgc2Vs
ZWN0ZWQgPSBmYWxzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgcmVw
cmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMSJ9LAor
ICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAgICAgICAgICAgXTsKKworICAg
ICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91dGxpbmUocmVwcmVzZW50ZWRP
YmplY3RzKTsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50KHRyZWVPdXRs
aW5lLmNoaWxkcmVuWzBdKTsKKyAgICAgICAgICAgIHRyaWdnZXJTZWxlY3RUcmVlRWxlbWVudCh0
cmVlT3V0bGluZS5jaGlsZHJlblsxXSk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJUcmVlT3V0bGluZS5BbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gZW5hYmxlIG11bHRpcGxlIHNlbGVjdGlvbi4iLAorICAg
ICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91
dGxpbmUoKTsKKworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dzTXVsdGlwbGVTZWxlY3Rp
b24gPSB0cnVlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHRyZWVPdXRs
aW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gZW5h
YmxlZC4iKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9u
ID0gZmFsc2U7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHRyZWVPdXRs
aW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gZGlz
YWJsZWQuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBmdW5jdGlvbiB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVPdXRsaW5lLCB0
cmVlRWxlbWVudHMpIHsKKyAgICAgICAgbGV0IGRpc3BsYXlUZXh0ID0gYCR7dHJlZUVsZW1lbnRz
Lm1hcCgoeCkgPT4gYCIke3gudGl0bGV9ImApfWA7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coYFNlbGVjdGluZyBUcmVlRWxlbWVudHMgWyR7ZGlzcGxheVRleHR9XS5gKTsKKyAgICAgICAg
dHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVFbGVtZW50cyk7CisKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVl
RWxlbWVudHMsIHRyZWVFbGVtZW50cywgIlRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIGNvcnJlY3Qg
c2VsZWN0ZWQgVHJlZUVsZW1lbnRzLiIpOworCisgICAgICAgIGxldCB0cmVlRWxlbWVudHNTZWxl
Y3RlZCA9IHRyZWVFbGVtZW50cy5ldmVyeSgoeCkgPT4geC5zZWxlY3RlZCk7CisgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0cmVlRWxlbWVudHNTZWxlY3RlZCwgYFRyZWVFbGVtZW50
cyBbJHtkaXNwbGF5VGV4dH1dIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1ZS5gKTsKKworICAg
ICAgICBsZXQgb3RoZXJUcmVlRWxlbWVudHNOb3RTZWxlY3RlZCA9IHRyZWVPdXRsaW5lLmNoaWxk
cmVuLmV2ZXJ5KCh4KSA9PiAheC5zZWxlY3RlZCB8fCB0cmVlRWxlbWVudHMuaW5jbHVkZXMoeCkp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQob3RoZXJUcmVlRWxlbWVudHNOb3RT
ZWxlY3RlZCwgIkFsbCBvdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSBm
YWxzZS4iKTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJUcmVlT3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlNlbGVjdCB0d28gdHJlZSBlbGVtZW50cywgdGhlbiBzZWxlY3QgdHdvIGRpZmZlcmVudCB0cmVl
IGVsZW1lbnRzLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBjb25zdCByZXByZXNl
bnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAxIn0sCisgICAg
ICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAi
SXRlbSAzIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSA0In0sCisgICAgICAgICAg
ICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVUcmVlT3V0bGluZShy
ZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dzTXVsdGlw
bGVTZWxlY3Rpb24gPSB0cnVlOworCisgICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSB0cmVlT3V0
bGluZS5jaGlsZHJlbjsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50cyh0
cmVlT3V0bGluZSwgW2NoaWxkcmVuWzBdLCBjaGlsZHJlblsxXV0pOworICAgICAgICAgICAgZXhw
ZWN0U2VsZWN0ZWRUcmVlRWxlbWVudCh0cmVlT3V0bGluZSwgY2hpbGRyZW5bMV0pOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAgICAgICAgIHRyaWdnZXJTZWxl
Y3RUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIFtjaGlsZHJlblsyXSwgY2hpbGRyZW5bM11dKTsK
KyAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQodHJlZU91dGxpbmUsIGNoaWxk
cmVuWzNdKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLlNl
bGVjdFRyZWVFbGVtZW50cy5NdWx0aXBsZVNlbGVjdGlvbkRpc2FibGVkIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJTZWxlY3QgbXVsdGlwbGUgdHJlZSBlbGVtZW50cyB3aXRoIG11bHRpcGxlIHNl
bGVjdGlvbiBkaXNhYmxlZC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgY29uc3Qg
cmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMSJ9
LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAgICAgICAgICAgXTsKKwor
ICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91dGxpbmUocmVwcmVzZW50
ZWRPYmplY3RzKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0
aW9uID0gZmFsc2U7CisKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLnNlbGVjdFRyZWVFbGVtZW50
cyh0cmVlT3V0bGluZS5jaGlsZHJlbik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnRzLmxlbmd0aCwgMCwgIlNob3Vs
ZCBoYXZlIG5vIHNlbGVjdGVkIFRyZWVFbGVtZW50cy4iKQorCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8cD5UZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2VsZWN0aW9uLjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3Nl
dC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVz
dHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXggYjhkYTkxMGJiZWFiM2RhYTQ1YzU3
OGJjN2ZlZWIwM2I1Yjc3ZTlkYi4uYjJiMzUwMmJiOTRmMDAyNTFjZjQ2NTI4NGZlZmU3MWFmMmIz
ZjdmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0
aWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVz
dHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKQEAgLTQxLDMgKzQxLDkgQEAgUEFTUzogU2V0
IGRpZmZlcmVuY2Ugc2hvdWxkIGJlIFsxXS4KIFBBU1M6IFNldCB3aXRoIHZhbHVlcyBbXSBzaG91
bGQgaGF2ZSBmaXJzdFZhbHVlIGVxdWFsIHRvIHVuZGVmaW5lZC4KIFBBU1M6IFNldCB3aXRoIHZh
bHVlcyBbMSwyLDNdIHNob3VsZCBoYXZlIGZpcnN0VmFsdWUgZXF1YWwgdG8gMS4KIAorLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IFNldC5wcm90b3R5cGUubWF4VmFsdWUKK1BBU1M6IFNldCB3aXRoIHZh
bHVlcyBbXSBzaG91bGQgaGF2ZSBtYXhpbXVtIHZhbHVlIHVuZGVmaW5lZC4KK1BBU1M6IFNldCB3
aXRoIHZhbHVlcyBbMV0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSAxLgorUEFTUzogU2V0IHdp
dGggdmFsdWVzIFsxLDIsMF0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSAyLgorUEFTUzogU2V0
IHdpdGggdmFsdWVzIFtiLGMsYV0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSBjLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwK
aW5kZXggZGI3MTQwYzEyYTQyM2I2NjYzZTY3M2U1YTM3YWM0ZmY5YWNjY2Q2Zi4uZDYxZGUxOTZj
YWE3NjhlNDM1ZWJmZGQxYjVjN2RiMGE5MGIxZWQ3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMuaHRtbApAQCAtMTM4LDYgKzEzOCwy
MiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwogCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiU2V0LnByb3RvdHlwZS5tYXhWYWx1ZSIsCisgICAg
ICAgIHRlc3QoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0TWF4VmFsdWUodmFsdWVzLCBj
b21wYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQodmFsdWVzKTsK
KyAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZE1heCA9IHZhbHVlcy5zb3J0KGNvbXBhcmF0
b3IpLmxhc3RWYWx1ZTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KHNldC5tYXhWYWx1ZShjb21wYXJhdG9yKSwgZXhwZWN0ZWRNYXgsIGBTZXQgd2l0aCB2YWx1ZXMg
WyR7QXJyYXkuZnJvbShzZXQpfV0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSAke2V4cGVjdGVk
TWF4fS5gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdE1heFZhbHVlKFtdKTsK
KyAgICAgICAgICAgIHRlc3RNYXhWYWx1ZShbMV0pOworICAgICAgICAgICAgdGVzdE1heFZhbHVl
KFsxLCAyLCAwXSk7CisgICAgICAgICAgICB0ZXN0TWF4VmFsdWUoWyJiIiwgImMiLCAiYSJdLCAo
YSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTsKKyAgICAgICAgfQorICAgIH0pOworCiAgICAg
c3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363813</attachid>
            <date>2019-03-06 16:23:23 -0800</date>
            <delta_ts>2019-03-25 21:37:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192681-20190306162322.patch</filename>
            <type>text/plain</type>
            <size>26852</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
NGI4YjM4NTMzOGVlMWNjZTUyMzM4N2VmMDNjMTQ1YzIyM2YwYWE3Li44YzhmNTY2NDkyOWJhZGNh
N2JkODZlZWNkMGM4ZGM3OWQ3ZTk4MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOS0wMy0wNiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rp
b24gbG9zdCBhZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAgKHZh
bHVlLmRlZmF1bHRDb21wYXJhdG9yKToKKyAgICAgICAgKHZhbHVlKToKKyAgICAgICAgQWRkIFNl
dC5wcm90b3R5cGUubWF4VmFsdWUsIHdoaWNoIGNhbiBiZSBtb3JlIGVmZmljaWVudCB0aGFuIHRo
ZQorICAgICAgICBlcXVpdmFsZW50IGNvZGUgdXNpbmcgQXJyYXkuZnJvbSBhbmQgQXJyYXkuc29y
dC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJv
bGxlci5qczoKKyAgICAgICAgKFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLnNlbGVj
dEl0ZW1zKToKKyAgICAgICAgUHJvdmlkZSBhIG1lYW5zIHRvIHNlbGVjdCBtdWx0aXBsZSBpdGVt
cyBpbiBhIHNpbmdsZSBvcGVyYXRpb24uCisgICAgICAgIFRoZSBleGlzdGluZyBgc2VsZWN0SXRl
bWAgbWV0aG9kIHdhcyBub3QgcmVpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiB0aGlzCisgICAgICAg
IG5ldyBtZXRob2QsIGluIG9yZGVyIHRvIHJldGFpbiBhIGRlZGljYXRlZCBlZmZpY2llbnQgcGF0
aCBmb3IgdGhlIG1vcmUKKyAgICAgICAgY29tbW9uIHNpbmdsZS1zZWxlY3Rpb24gb3BlcmF0aW9u
LgorCisgICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVyLnByb3RvdHlwZS5fZGVzZWxlY3RB
bGxBbmRTZWxlY3QpOgorICAgICAgICBEcml2ZS1ieSBmaXg6IGNvcnJlY3QgYSBsb2dpYyBlcnJv
ci4gSWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVkLCB0aGUgaXRlbQorICAgICAgICBwYXNzZWQgYXMg
YW4gYXJndW1lbnQgc2hvdWxkIHN0aWxsIGJlY29tZSBzZWxlY3RlZC4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50KToKKyAgICAgICAg
KFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgY2xvc2VUYWdUcmVlRWxlbWVudCk6Cisg
ICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUNoaWxkcmVuKToKKyAg
ICAgICAgTWFrZSB0aGUgY2xvc2UgdGFnIFRyZWVFbGVtZW50IGF2YWlsYWJsZSBmcm9tIHRoZSBv
cGVuIHRhZyBUcmVlRWxlbWVudC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZU91dGxpbmUuanM6CisgICAgICAgIChXSS5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUudXBk
YXRlKToKKyAgICAgICAgUmVzdG9yZSBzZWxlY3RlZCBUcmVlRWxlbWVudHMgYWZ0ZXIgdXBkYXRp
bmcuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzOgorICAg
ICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnNlbGVjdFRyZWVFbGVtZW50cyk6CisKIDIw
MTktMDMtMDYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBTaW1wbGlmeSBjaGFydCA8cmVjdD5zIHdpdGggeC95IGF0dHJpYnV0
ZXMgaW5zdGVhZCBvZiB0cmFuc2Zvcm0oeCwgeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXggZGQ3ODM0MzM3Nzg1
ZDM3ZTkwOTZhN2U5YzEyOWJjYzlkNjc4NzVlNS4uNzJmY2I3YjgzMTg5OTcwNmQwZjU4MjMwZTlm
NGRjYTc3MGMwMzU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKQEAgLTE4MCw2ICsxODAsNDAgQEAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsICJpc1N1YnNldE9mIiwKICAgICB9CiB9KTsKIAor
T2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsICJtYXhWYWx1ZSIsCit7CisgICAg
dmFsdWUoY29tcGFyYXRvcikKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRlZmF1bHRDb21wYXJh
dG9yKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIC0gYjsKKyAgICAgICAg
fQorICAgICAgICBjb21wYXJhdG9yID0gY29tcGFyYXRvciB8fCBkZWZhdWx0Q29tcGFyYXRvcjsK
KworICAgICAgICBsZXQgaXRlcmF0b3IgPSB0aGlzLnZhbHVlcygpOworICAgICAgICBsZXQgcmVz
dWx0ID0gaXRlcmF0b3IubmV4dCgpLnZhbHVlOworICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBp
dGVyYXRvcikKKyAgICAgICAgICAgIGlmIChjb21wYXJhdG9yKHJlc3VsdCwgdmFsdWUpIDwgMCkK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KK30pOworCitPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0LnByb3RvdHlwZSwgInVu
aW9uIiwKK3sKKyAgICB2YWx1ZShvdGhlcikKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBu
ZXcgU2V0KG90aGVyKTsKKyAgICAgICAgaWYgKG90aGVyICE9PSB0aGlzKSB7CisgICAgICAgICAg
ICBmb3IgKGxldCBpdGVtIG9mIHRoaXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVt
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfSk7CisKIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInRyYXZlcnNlTmV4dE5vZGUiLAog
ewogICAgIHZhbHVlKHN0YXlXaXRoaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29u
dHJvbGxlci5qcwppbmRleCA4YjMyMTlkOGYzYTk4OTAxMGFiNmIzYWQ4Y2VmZDZhNjA2MzQzZTJk
Li5lOGM4NzRkZDZkYTJkNTg0OTIzZTk3Zjk3NGZiZWQ4NWE3ZDFiYjViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25D
b250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKQEAgLTEwMyw2ICsxMDMsMjUgQEAgV0ku
U2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRJdGVtcyhuZXdJdGVtcyk7CiAg
ICAgfQogCisgICAgc2VsZWN0SXRlbXMoaXRlbXMpCisgICAgeworICAgICAgICBpZiAoaXRlbXMu
c2l6ZSA9PT0gMSkgeworICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW1zLmZpcnN0VmFs
dWUsIGV4dGVuZFNlbGVjdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgIkNh
bm5vdCBleHRlbmQgc2VsZWN0aW9uIHdpdGggbXVsdGlwbGUgc2VsZWN0aW9uIGRpc2FibGVkLiIp
OworICAgICAgICBpZiAoIXRoaXMuX2FsbG93c011bHRpcGxlU2VsZWN0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmICghdGhpcy5fbGFzdFNlbGVjdGVkSXRlbSB8fCAhaXRl
bXMuaGFzKHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0pKQorICAgICAgICAgICAgdGhpcy5fbGFzdFNl
bGVjdGVkSXRlbSA9IGl0ZW1zLm1heFZhbHVlKHRoaXMuX2NvbXBhcmF0b3IpOworCisgICAgICAg
IHRoaXMuX3NoaWZ0QW5jaG9ySXRlbSA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fdXBkYXRlU2Vs
ZWN0ZWRJdGVtcyhpdGVtcyk7CisgICAgfQorCiAgICAgZGVzZWxlY3RJdGVtKGl0ZW0pCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChpdGVtLCAiSW52YWxpZCBpdGVtIGZvciBzZWxlY3Rp
b24uIik7CkBAIC0yOTcsNyArMzE2LDcgQEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNz
IFNlbGVjdGlvbkNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9kZXNlbGVjdEFs
bEFuZFNlbGVjdChpdGVtKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZEl0ZW1z
LnNpemUpCisgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRJdGVtcy5zaXplICYmICFpdGVtKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW1zLnNp
emUgPT09IDEgJiYgdGhpcy5oYXNTZWxlY3RlZEl0ZW0oaXRlbSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggMWI0ZDZkZWNlNTUyODIyZDlm
ZDk3YjMxYWEwMjQwOWVmMWQyZmFhNS4uYjM5ZTEwOWYxYWNhZDBhY2JlNjZiYTRhNDNhNGRlMDA0
MmJjODI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbApAQCAtMjU3LDYgKzI1Nyw4IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc2l6ZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UYWJsZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RhYmxlQ29sdW1uLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iVmlld3MvVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9UcmVlT3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIFdJLnNoYXJlZEFwcCA9IG5ldyBXSS5UZXN0QXBw
Q29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggMzk0N2RjOWNkODcyZjJiNWQ4
NTYxNmZlN2MzNmJmNGNkYzBhZWU1Ny4uZmUwMjlhMWYyYzRlOTM4MzJjZTNlNDA2MDEyMjFlMGQ5
MjMyZDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTM5LDYgKzM5LDcgQEAgV0kuRE9N
VHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50
CiAKICAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUoKSA9PT0gTm9k
ZS5FTEVNRU5UX05PREUgJiYgIWVsZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAgIHRoaXMuX2Nh
bkFkZEF0dHJpYnV0ZXMgPSB0cnVlOworCiAgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gbnVs
bDsKICAgICAgICAgdGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0gV0kuRE9NVHJlZUVsZW1l
bnQuSW5pdGlhbENoaWxkcmVuTGltaXQ7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXMg
PSBXSS5ET01UcmVlRWxlbWVudC5CcmVha3BvaW50U3RhdHVzLk5vbmU7CkBAIC00Niw5ICs0Nyw5
IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5U
cmVlRWxlbWVudAogICAgICAgICB0aGlzLl9zaG91bGRIaWdobGlnaHRBZnRlclJldmVhbCA9IGZh
bHNlOwogICAgICAgICB0aGlzLl9ib3VuZEhpZ2hsaWdodEFuaW1hdGlvbkVuZCA9IHRoaXMuX2hp
Z2hsaWdodEFuaW1hdGlvbkVuZC5iaW5kKHRoaXMpOwogICAgICAgICB0aGlzLl9zdWJ0cmVlQnJl
YWtwb2ludENvdW50ID0gMDsKLQogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZEF0dHJpYnV0ZXMg
PSBuZXcgU2V0OwogICAgICAgICB0aGlzLl9yZWNlbnRseU1vZGlmaWVkQXR0cmlidXRlcyA9IG5l
dyBNYXA7CisgICAgICAgIHRoaXMuX2Nsb3NlVGFnVHJlZUVsZW1lbnQgPSBudWxsOwogCiAgICAg
ICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkVuYWJsZWRQc2V1ZG9D
bGFzc2VzQ2hhbmdlZCwgdGhpcy5fbm9kZVBzZXVkb0NsYXNzZXNEaWRDaGFuZ2UsIHRoaXMpOwog
CkBAIC0xMDEsNiArMTAyLDggQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxl
bWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBnZXQg
Y2xvc2VUYWdUcmVlRWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuX2Nsb3NlVGFnVHJlZUVsZW1lbnQ7
IH0KKwogICAgIHJldmVhbEFuZEhpZ2hsaWdodCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
YW5pbWF0aW5nSGlnaGxpZ2h0KQpAQCAtNTI5LDcgKzUzMiw3IEBAIFdJLkRPTVRyZWVFbGVtZW50
ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICAv
LyBJbnNlcnQgY2xvc2luZyB0YWcgdHJlZSBlbGVtZW50LgogICAgICAgICB2YXIgbGFzdENoaWxk
ID0gdGhpcy5jaGlsZHJlbi5sYXN0VmFsdWU7CiAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlKCkg
PT09IE5vZGUuRUxFTUVOVF9OT0RFICYmICghbGFzdENoaWxkIHx8ICFsYXN0Q2hpbGQuX2VsZW1l
bnRDbG9zZVRhZykpCi0gICAgICAgICAgICB0aGlzLmluc2VydENoaWxkRWxlbWVudCh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LCB0aGlzLmNoaWxkcmVuLmxlbmd0aCwgdHJ1ZSk7CisgICAgICAgICAg
ICB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50ID0gdGhpcy5pbnNlcnRDaGlsZEVsZW1lbnQodGhp
cy5yZXByZXNlbnRlZE9iamVjdCwgdGhpcy5jaGlsZHJlbi5sZW5ndGgsIHRydWUpOwogCiAgICAg
ICAgIC8vIFdlIHdhbnQgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgc2VsZWN0aW9uIGFuZCB0cmVl
IHNjcm9sbCBwb3NpdGlvbiBhZnRlciBhIGZ1bGwgcmVmcmVzaCwgaWYgcG9zc2libGUuCiAgICAg
ICAgIGlmIChmdWxsUmVmcmVzaCAmJiBlbGVtZW50VG9TZWxlY3QpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxp
bmUuanMKaW5kZXggNjdlYmQwNjIwZjYyNGUyNWM1ZDJlNGQyMzNhM2RkNmNhYzYzMTlhNi4uNTVi
NGIwYmU4MjVlOWU4Njg3NmM4NDcyNzI1YjVhMDk3NmU0MTBjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxp
bmUuanMKQEAgLTE1OCw2ICsxNTgsNyBAQCBXSS5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRy
ZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91dGxpbmUKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBsZXQgc2VsZWN0ZWROb2RlID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID8gdGhp
cy5zZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0IDogbnVsbDsKKyAgICAgICAg
bGV0IHNlbGVjdGVkVHJlZUVsZW1lbnRzID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50czsKIAog
ICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTE4MCw4ICsxODEsMjYgQEAgV0ku
RE9NVHJlZU91dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRs
aW5lCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2VsZWN0ZWROb2Rl
KQotICAgICAgICAgICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZShzZWxlY3RlZE5vZGUsIHRy
dWUpOworICAgICAgICBpZiAoc2VsZWN0ZWROb2RlKSB7CisgICAgICAgICAgICBjb25zdCBvbWl0
Rm9jdXMgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZShzZWxl
Y3RlZE5vZGUsIG9taXRGb2N1cyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2VsZWN0ZWRU
cmVlRWxlbWVudHMpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzZWxlY3Rpb24gY2Fubm90IGJlIHJl
c3RvcmVkIGZyb20gcmVwcmVzZW50ZWQgb2JqZWN0cyBhbG9uZSwKKyAgICAgICAgICAgIC8vIHNp
bmNlIGEgY2xvc2luZyB0YWcgRE9NVHJlZUVsZW1lbnQgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGVk
IG9iamVjdAorICAgICAgICAgICAgLy8gYXMgaXRzIHBhcmVudC4KKyAgICAgICAgICAgIHNlbGVj
dGVkVHJlZUVsZW1lbnRzID0gc2VsZWN0ZWRUcmVlRWxlbWVudHMubWFwKChvbGRUcmVlRWxlbWVu
dCkgPT4geworICAgICAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuZmluZFRyZWVF
bGVtZW50KG9sZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgICAgICAg
ICBpZiAodHJlZUVsZW1lbnQgJiYgb2xkVHJlZUVsZW1lbnQuaXNDbG9zZVRhZygpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50LmNsb3NlVGFnVHJlZUVs
ZW1lbnQsICJNaXNzaW5nIGNsb3NlIHRhZyBUcmVlRWxlbWVudC4iLCB0cmVlRWxlbWVudCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQuY2xvc2VUYWdUcmVl
RWxlbWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVF
bGVtZW50OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0VHJlZUVs
ZW1lbnRzKHNlbGVjdGVkVHJlZUVsZW1lbnRzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHVw
ZGF0ZVNlbGVjdGlvbkFyZWEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwppbmRleCA5NThjYjNiZDBkOTlhNDJh
NDU3YjAyOGU0MjhkOWE4NTZmMTJmMjk5Li5mNjU3OTE3OTA0ZjdjY2M0MzQ4YjJhZGFiMTY0YTJm
NjVjOTk0YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwpAQCAtNzA3LDYgKzcwNywyNCBAQCBXSS5UcmVl
T3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIC8v
IHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKICAgICB9CiAKKyAgICBzZWxlY3RUcmVlRWxl
bWVudHModHJlZUVsZW1lbnRzKQorICAgIHsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVudHMubGVu
Z3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0cmVlRWxlbWVudHMubGVu
Z3RoID09PSAxKSB7CisgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0cmVl
RWxlbWVudHNbMF07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiQ2Fubm90IHNlbGVj
dCBUcmVlRWxlbWVudHMgd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb24gZGlzYWJsZWQuIik7CisgICAg
ICAgIGlmICghdGhpcy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBsZXQgc2VsZWN0YWJsZU9iamVjdHMgPSB0cmVlRWxlbWVudHMubWFwKCh4
KSA9PiB0aGlzLm9iamVjdEZvclNlbGVjdGlvbih4KSk7CisgICAgICAgIHRoaXMuX3NlbGVjdGlv
bkNvbnRyb2xsZXIuc2VsZWN0SXRlbXMobmV3IFNldChzZWxlY3RhYmxlT2JqZWN0cykpOworICAg
IH0KKwogICAgIGdldCBzZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgoKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLmhhc0NoaWxkcmVuIHx8ICF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZWQ3OGQyMDQwYTg2YmYzNzM0NGNiZTMwMDk5NDgwNjNiZjgzN2U5Mi4uMmFkYzU0NDZhZjA0
NzIyNmIxMGQwNDk0MGM1MjQwYjY4ZTMzYTQ3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5
LTAzLTA2ICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBFbGVtZW50cyB0YWI6IG11bHRpcGxlIHNlbGVjdGlvbiBsb3N0IGFmdGVyIG5h
dmlnYXRpbmcgdG8gYW5vdGhlciB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjY4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3MDkzOTI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxl
Y3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgIEFkZCBUcmVlT3V0bGluZSB0ZXN0cyBmb3Igc2lu
Z2xlIGFuZCBtdWx0aXBsZSBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvdW5pdC10
ZXN0cy9zZXQtdXRpbGl0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdW5p
dC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWw6CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgbmV3IFNl
dCB1dGlsaXR5IG1ldGhvZHMuCisKIDIwMTktMDMtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnJlcXVlbnQgMSBzZWNvbmQgSVBDIGRl
YWRsb2NrcyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUt
c2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjJiYjFjZTI5YWE1OWM3YzQ0Mjhj
YzlhMGU0YjI5ZTY0ZTkzNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQzIEBACitUZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2VsZWN0aW9uLgorCisKKz09
IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVHJlZU91dGxpbmUuU2VsZWN0aW9uCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogVHJlZU91dGxpbmUuY29uc3RydWN0b3IKK1BBU1M6IHNlbGVjdGVkVHJlZUVsZW1l
bnQgc2hvdWxkIGJlIG51bGwuCitQQVNTOiBzZWxlY3RlZFRyZWVFbGVtZW50cyBzaG91bGQgYmUg
ZW1wdHkuCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBzaG91bGQgYmUgZmFsc2UuCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGluZS5GaW5kVHJlZUVsZW1lbnQKK1BBU1M6
IFNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRlZCBvYmplY3QuCitQQVNTOiBU
cmVlRWxlbWVudCBzaG91bGQgaGF2ZSBjb3JyZWN0IHJlcHJlc2VudGVkIG9iamVjdC4KKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdGVkVHJlZUVsZW1lbnQKK1NlbGVj
dGluZyBUcmVlRWxlbWVudCAiSXRlbSAxIi4KK1BBU1M6IFRyZWVPdXRsaW5lIHNob3VsZCBoYXZl
IHNlbGVjdGVkIFRyZWVFbGVtZW50ICJJdGVtIDEiLgorUEFTUzogVHJlZUVsZW1lbnQgIkl0ZW0g
MSIgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSB0cnVlLgorUEFTUzogT3RoZXIgVHJlZUVsZW1lbnRz
IHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitTZWxlY3RpbmcgVHJlZUVsZW1lbnQgIkl0
ZW0gMiIuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVu
dCAiSXRlbSAyIi4KK1BBU1M6IFRyZWVFbGVtZW50ICJJdGVtIDIiIHNob3VsZCBoYXZlIHNlbGVj
dGVkID0gdHJ1ZS4KK1BBU1M6IE90aGVyIFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxlY3Rl
ZCA9IGZhbHNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVHJlZU91dGxpbmUuQWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb24KK1BBU1M6IGFsbG93c011bHRpcGxlU2VsZWN0aW9uIGVuYWJsZWQuCitQ
QVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBkaXNhYmxlZC4KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cworU2VsZWN0aW5nIFRyZWVFbGVt
ZW50cyBbIkl0ZW0gMSIsIkl0ZW0gMiJdLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUg
Y29ycmVjdCBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCitQQVNTOiBUcmVlRWxlbWVudHMgWyJJdGVt
IDEiLCJJdGVtIDIiXSBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBBbGwgb3Ro
ZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitQQVNTOiBUcmVl
T3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSAyIi4KKworU2Vs
ZWN0aW5nIFRyZWVFbGVtZW50cyBbIkl0ZW0gMyIsIkl0ZW0gNCJdLgorUEFTUzogVHJlZU91dGxp
bmUgc2hvdWxkIGhhdmUgY29ycmVjdCBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCitQQVNTOiBUcmVl
RWxlbWVudHMgWyJJdGVtIDMiLCJJdGVtIDQiXSBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUu
CitQQVNTOiBBbGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFs
c2UuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAi
SXRlbSA0Ii4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVF
bGVtZW50cy5NdWx0aXBsZVNlbGVjdGlvbkRpc2FibGVkCitQQVNTOiBTaG91bGQgaGF2ZSBubyBz
ZWxlY3RlZCBUcmVlRWxlbWVudHMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGI5ZjBhYjc0YjdjYTVhMjMxYTk3OTY1NTg1Mzg1MTRkMjQ0NmNmMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5l
LXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTg0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7
CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiVHJlZU91
dGxpbmUuU2VsZWN0aW9uIik7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVUcmVlT3V0bGluZShvYmpl
Y3RzID0gW10pIHsKKyAgICAgICAgZnVuY3Rpb24gYXBwZW5kT2JqZWN0KHBhcmVudCwgb2JqZWN0
KSB7CisgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHt9OworICAgICAgICAgICAgaWYgKG9iamVj
dC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBvcHRpb25zLmhhc0NoaWxkcmVuID0gdHJ1ZTsK
KyAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IG5ldyBXSS5UcmVlRWxlbWVudChvYmplY3Qu
dGl0bGUsIG9iamVjdCwgb3B0aW9ucyk7CisgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQo
dHJlZUVsZW1lbnQpOworCisgICAgICAgICAgICBpZiAoIW9iamVjdC5jaGlsZHJlbikKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG9iamVj
dC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBhZGRPYmplY3QodHJlZUVsZW1lbnQsIGNoaWxk
KTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IG5ldyBXSS5UcmVlT3V0
bGluZTsKKyAgICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iamVjdHMpCisgICAgICAgICAgICBh
cHBlbmRPYmplY3QodHJlZU91dGxpbmUsIG9iamVjdCk7CisKKyAgICAgICAgcmV0dXJuIHRyZWVP
dXRsaW5lOworICAgIH0KKworICAgIGZ1bmN0aW9uIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQo
dHJlZU91dGxpbmUsIHRyZWVFbGVtZW50KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCwgdHJlZUVsZW1lbnQsIGBUcmVl
T3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiJHt0cmVlRWxlbWVudC50
aXRsZX0iLmApOworICAgIH0KKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIlRyZWVPdXRsaW5lLmNvbnN0cnVjdG9yIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKCk7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50
LCAic2VsZWN0ZWRUcmVlRWxlbWVudCBzaG91bGQgYmUgbnVsbC4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMu
bGVuZ3RoLCAwLCAic2VsZWN0ZWRUcmVlRWxlbWVudHMgc2hvdWxkIGJlIGVtcHR5LiIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh0cmVlT3V0bGluZS5hbGxvd3NNdWx0
aXBsZVNlbGVjdGlvbiwgImFsbG93c011bHRpcGxlU2VsZWN0aW9uIHNob3VsZCBiZSBmYWxzZS4i
KTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLkZpbmRUcmVl
RWxlbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiRmluZCBUcmVlRWxlbWVudCBmb3IgZ2l2
ZW4gcmVwcmVzZW50ZWQgb2JqZWN0LiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBj
b25zdCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRl
bSAxIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICAg
ICAge3RpdGxlOiAiSXRlbSAzIn0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQg
dHJlZU91dGxpbmUgPSBjcmVhdGVUcmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAg
ICAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KHJl
cHJlc2VudGVkT2JqZWN0c1swXSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdCh0cmVlRWxlbWVudCwgIlNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRl
ZCBvYmplY3QuIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZUVs
ZW1lbnQucmVwcmVzZW50ZWRPYmplY3QsIHJlcHJlc2VudGVkT2JqZWN0c1swXSwgIlRyZWVFbGVt
ZW50IHNob3VsZCBoYXZlIGNvcnJlY3QgcmVwcmVzZW50ZWQgb2JqZWN0LiIpCisKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RlZFRyZWVFbGVtZW50IiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJTZWxlY3QgYSB0cmVlIGVsZW1lbnQsIHRoZW4gc2VsZWN0
IGEgZGlmZmVyZW50IHRyZWUgZWxlbWVudC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAg
ICAgZnVuY3Rpb24gdHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50KHRyZWVFbGVtZW50KSB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYFNlbGVjdGluZyBUcmVlRWxlbWVudCAiJHt0
cmVlRWxlbWVudC50aXRsZX0iLmApOworICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5lLnNlbGVj
dGVkVHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKKworICAgICAgICAgICAgICAgIGV4cGVjdFNl
bGVjdGVkVHJlZUVsZW1lbnQodHJlZU91dGxpbmUsIHRyZWVFbGVtZW50KTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodHJlZUVsZW1lbnQuc2VsZWN0ZWQsIGBUcmVl
RWxlbWVudCAiJHt0cmVlRWxlbWVudC50aXRsZX0iIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1
ZS5gKTsKKworICAgICAgICAgICAgICAgIGxldCBvdGhlclRyZWVFbGVtZW50c0FyZURlc2VsZWN0
ZWQgPSB0cmVlT3V0bGluZS5jaGlsZHJlbi5ldmVyeSgoeCkgPT4geCA9PT0gdHJlZUVsZW1lbnQg
fHwgIXguc2VsZWN0ZWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChvdGhlclRyZWVFbGVtZW50c0FyZURlc2VsZWN0ZWQsICJPdGhlciBUcmVlRWxlbWVudHMgc2hv
dWxkIGhhdmUgc2VsZWN0ZWQgPSBmYWxzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY29uc3QgcmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0aXRsZTog
Ikl0ZW0gMSJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAgICAgICAg
ICAgXTsKKworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91dGxpbmUo
cmVwcmVzZW50ZWRPYmplY3RzKTsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRyZWVFbGVt
ZW50KHRyZWVPdXRsaW5lLmNoaWxkcmVuWzBdKTsKKyAgICAgICAgICAgIHRyaWdnZXJTZWxlY3RU
cmVlRWxlbWVudCh0cmVlT3V0bGluZS5jaGlsZHJlblsxXSk7CisKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5BbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gZW5hYmxlIG11bHRpcGxlIHNlbGVj
dGlvbi4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0g
Y3JlYXRlVHJlZU91dGxpbmUoKTsKKworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb24gZW5hYmxlZC4iKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRp
cGxlU2VsZWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZh
bHNlKHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb24gZGlzYWJsZWQuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnRzKHRy
ZWVPdXRsaW5lLCB0cmVlRWxlbWVudHMpIHsKKyAgICAgICAgbGV0IGRpc3BsYXlUZXh0ID0gYCR7
dHJlZUVsZW1lbnRzLm1hcCgoeCkgPT4gYCIke3gudGl0bGV9ImApfWA7CisKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coYFNlbGVjdGluZyBUcmVlRWxlbWVudHMgWyR7ZGlzcGxheVRleHR9XS5g
KTsKKyAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVFbGVtZW50cyk7
CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodHJlZU91dGxpbmUu
c2VsZWN0ZWRUcmVlRWxlbWVudHMsIHRyZWVFbGVtZW50cywgIlRyZWVPdXRsaW5lIHNob3VsZCBo
YXZlIGNvcnJlY3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLiIpOworCisgICAgICAgIGxldCB0cmVl
RWxlbWVudHNTZWxlY3RlZCA9IHRyZWVFbGVtZW50cy5ldmVyeSgoeCkgPT4geC5zZWxlY3RlZCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0cmVlRWxlbWVudHNTZWxlY3RlZCwg
YFRyZWVFbGVtZW50cyBbJHtkaXNwbGF5VGV4dH1dIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1
ZS5gKTsKKworICAgICAgICBsZXQgb3RoZXJUcmVlRWxlbWVudHNOb3RTZWxlY3RlZCA9IHRyZWVP
dXRsaW5lLmNoaWxkcmVuLmV2ZXJ5KCh4KSA9PiAheC5zZWxlY3RlZCB8fCB0cmVlRWxlbWVudHMu
aW5jbHVkZXMoeCkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQob3RoZXJUcmVl
RWxlbWVudHNOb3RTZWxlY3RlZCwgIkFsbCBvdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIGhhdmUg
c2VsZWN0ZWQgPSBmYWxzZS4iKTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIlNlbGVjdCB0d28gdHJlZSBlbGVtZW50cywgdGhlbiBzZWxlY3QgdHdvIGRp
ZmZlcmVudCB0cmVlIGVsZW1lbnRzLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBj
b25zdCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRl
bSAxIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICAg
ICAge3RpdGxlOiAiSXRlbSAzIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSA0In0s
CisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVU
cmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgdHJlZU91dGxpbmUu
YWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlOworCisgICAgICAgICAgICBsZXQgY2hpbGRy
ZW4gPSB0cmVlT3V0bGluZS5jaGlsZHJlbjsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRy
ZWVFbGVtZW50cyh0cmVlT3V0bGluZSwgW2NoaWxkcmVuWzBdLCBjaGlsZHJlblsxXV0pOworICAg
ICAgICAgICAgZXhwZWN0U2VsZWN0ZWRUcmVlRWxlbWVudCh0cmVlT3V0bGluZSwgY2hpbGRyZW5b
MV0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAgICAgICAg
IHRyaWdnZXJTZWxlY3RUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIFtjaGlsZHJlblsyXSwgY2hp
bGRyZW5bM11dKTsKKyAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQodHJlZU91
dGxpbmUsIGNoaWxkcmVuWzNdKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRy
ZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cy5NdWx0aXBsZVNlbGVjdGlvbkRpc2FibGVkIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJTZWxlY3QgbXVsdGlwbGUgdHJlZSBlbGVtZW50cyB3aXRo
IG11bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAg
ICAgICAgY29uc3QgcmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0aXRs
ZTogIkl0ZW0gMSJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAgICAg
ICAgICAgXTsKKworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91dGxp
bmUocmVwcmVzZW50ZWRPYmplY3RzKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011
bHRpcGxlU2VsZWN0aW9uID0gZmFsc2U7CisKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLnNlbGVj
dFRyZWVFbGVtZW50cyh0cmVlT3V0bGluZS5jaGlsZHJlbik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnRzLmxlbmd0
aCwgMCwgIlNob3VsZCBoYXZlIG5vIHNlbGVjdGVkIFRyZWVFbGVtZW50cy4iKQorCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0i
cnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2VsZWN0aW9uLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91
bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXggYjhkYTkxMGJi
ZWFiM2RhYTQ1YzU3OGJjN2ZlZWIwM2I1Yjc3ZTlkYi4uZmY1MGEyZGJkNjBjZDUzZGI3NTMzMjI5
YzEyMTYyZmYxYzFjOGI5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQt
dGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKQEAgLTM3LDcgKzM3LDI3
IEBAIEdpdmVuIGEgU2V0IHdpdGggdmFsdWVzIFsxLDIsM10sIGFuZCBhbm90aGVyIFNldCB3aXRo
IHZhbHVlcyBbMiwzLDRdOgogUEFTUzogU2V0IGRpZmZlcmVuY2Ugc2hvdWxkIGJlIFsxXS4KIAog
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogU2V0LnByb3RvdHlwZS51bmlvbgorR2l2ZW4gYSBTZXQg
d2l0aCB2YWx1ZXMgW10sIGFuZCBhbm90aGVyIFNldCB3aXRoIHZhbHVlcyBbXToKK1BBU1M6IFNl
dCB1bmlvbiBzaG91bGQgYmUgW10uCisKK0dpdmVuIGEgU2V0IHdpdGggdmFsdWVzIFsxLDIsM10s
IGFuZCBhbm90aGVyIFNldCB3aXRoIHZhbHVlcyBbXToKK1BBU1M6IFNldCB1bmlvbiBzaG91bGQg
YmUgWzEsMiwzXS4KKworR2l2ZW4gYSBTZXQgd2l0aCB2YWx1ZXMgW10sIGFuZCBhbm90aGVyIFNl
dCB3aXRoIHZhbHVlcyBbMSwyLDNdOgorUEFTUzogU2V0IHVuaW9uIHNob3VsZCBiZSBbMSwyLDNd
LgorCitHaXZlbiBhIFNldCB3aXRoIHZhbHVlcyBbMSwyLDNdLCBhbmQgYW5vdGhlciBTZXQgd2l0
aCB2YWx1ZXMgWzIsMyw0XToKK1BBU1M6IFNldCB1bmlvbiBzaG91bGQgYmUgWzEsMiwzLDRdLgor
CisKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTZXQucHJvdG90eXBlLmZpcnN0VmFsdWUKIFBBU1M6
IFNldCB3aXRoIHZhbHVlcyBbXSBzaG91bGQgaGF2ZSBmaXJzdFZhbHVlIGVxdWFsIHRvIHVuZGVm
aW5lZC4KIFBBU1M6IFNldCB3aXRoIHZhbHVlcyBbMSwyLDNdIHNob3VsZCBoYXZlIGZpcnN0VmFs
dWUgZXF1YWwgdG8gMS4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNldC5wcm90b3R5cGUubWF4
VmFsdWUKK1BBU1M6IFNldCB3aXRoIHZhbHVlcyBbXSBzaG91bGQgaGF2ZSBtYXhpbXVtIHZhbHVl
IHVuZGVmaW5lZC4KK1BBU1M6IFNldCB3aXRoIHZhbHVlcyBbMV0gc2hvdWxkIGhhdmUgbWF4aW11
bSB2YWx1ZSAxLgorUEFTUzogU2V0IHdpdGggdmFsdWVzIFsxLDIsMF0gc2hvdWxkIGhhdmUgbWF4
aW11bSB2YWx1ZSAyLgorUEFTUzogU2V0IHdpdGggdmFsdWVzIFtiLGMsYV0gc2hvdWxkIGhhdmUg
bWF4aW11bSB2YWx1ZSBjLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwKaW5kZXggZGI3MTQwYzEyYTQyM2I2NjYzZTY3M2U1YTM3
YWM0ZmY5YWNjY2Q2Zi4uNWQxMmY2MzUxNWNhZThlYTI4Njg2ZDc2YTVhNTgyNmI4ZmRhNWU5MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGll
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRp
ZXMuaHRtbApAQCAtODcsMzkgKzg3LDgxIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIlNldC5wcm90b3R5cGUuZGlmZmVyZW5jZSIsCiAg
ICAgICAgIHRlc3QoKSB7Ci0gICAgICAgICAgICBmdW5jdGlvbiB0ZXN0RGlmZmVyZW5jZSh7YVZh
bHVlcywgYlZhbHVlcywgZXhwZWN0ZWREaWZmZXJlbmNlfSkgeworICAgICAgICAgICAgZnVuY3Rp
b24gdGVzdERpZmZlcmVuY2Uoe2FWYWx1ZXMsIGJWYWx1ZXMsIGV4cGVjdGVkfSkgewogICAgICAg
ICAgICAgICAgIGxldCBhID0gbmV3IFNldChhVmFsdWVzKTsKICAgICAgICAgICAgICAgICBsZXQg
YiA9IG5ldyBTZXQoYlZhbHVlcyk7CiAKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhgR2l2ZW4gYSBTZXQgd2l0aCB2YWx1ZXMgWyR7YVZhbHVlc31dLCBhbmQgYW5vdGhlciBTZXQg
d2l0aCB2YWx1ZXMgWyR7YlZhbHVlc31dOmApOwogCi0gICAgICAgICAgICAgICAgbGV0IGRpZmZl
cmVuY2UgPSBhLmRpZmZlcmVuY2UoYik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KGRpZmZlcmVuY2UuZXF1YWxzKG5ldyBTZXQoZXhwZWN0ZWREaWZmZXJlbmNlKSks
IGBTZXQgZGlmZmVyZW5jZSBzaG91bGQgYmUgWyR7ZXhwZWN0ZWREaWZmZXJlbmNlfV0uYCk7Cisg
ICAgICAgICAgICAgICAgbGV0IGFjdHVhbCA9IGEuZGlmZmVyZW5jZShiKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYWN0dWFsLmVxdWFscyhuZXcgU2V0KGV4cGVj
dGVkKSksIGBTZXQgZGlmZmVyZW5jZSBzaG91bGQgYmUgWyR7ZXhwZWN0ZWR9XS5gKTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHRlc3REaWZmZXJlbmNlKHsKICAgICAgICAgICAgICAgICBhVmFsdWVzOiBbXSwKICAg
ICAgICAgICAgICAgICBiVmFsdWVzOiBbXSwKLSAgICAgICAgICAgICAgICBleHBlY3RlZERpZmZl
cmVuY2U6IFtdLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBbXSwKICAgICAgICAgICAgIH0p
OwogCiAgICAgICAgICAgICB0ZXN0RGlmZmVyZW5jZSh7CiAgICAgICAgICAgICAgICAgYVZhbHVl
czogWzEsIDIsIDNdLAogICAgICAgICAgICAgICAgIGJWYWx1ZXM6IFtdLAotICAgICAgICAgICAg
ICAgIGV4cGVjdGVkRGlmZmVyZW5jZTogWzEsIDIsIDNdLAorICAgICAgICAgICAgICAgIGV4cGVj
dGVkOiBbMSwgMiwgM10sCiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgdGVzdERpZmZl
cmVuY2UoewogICAgICAgICAgICAgICAgIGFWYWx1ZXM6IFtdLAogICAgICAgICAgICAgICAgIGJW
YWx1ZXM6IFsxLCAyLCAzXSwKLSAgICAgICAgICAgICAgICBleHBlY3RlZERpZmZlcmVuY2U6IFtd
LAorICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBbXSwKICAgICAgICAgICAgIH0pOwogCiAgICAg
ICAgICAgICB0ZXN0RGlmZmVyZW5jZSh7CiAgICAgICAgICAgICAgICAgYVZhbHVlczogWzEsIDIs
IDNdLAogICAgICAgICAgICAgICAgIGJWYWx1ZXM6IFsyLCAzLCA0XSwKLSAgICAgICAgICAgICAg
ICBleHBlY3RlZERpZmZlcmVuY2U6IFsxXSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZDogWzFd
LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJTZXQu
cHJvdG90eXBlLnVuaW9uIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHRlc3RVbmlvbih7YVZhbHVlcywgYlZhbHVlcywgZXhwZWN0ZWR9KSB7CisgICAgICAgICAgICAg
ICAgbGV0IGEgPSBuZXcgU2V0KGFWYWx1ZXMpOworICAgICAgICAgICAgICAgIGxldCBiID0gbmV3
IFNldChiVmFsdWVzKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBHaXZl
biBhIFNldCB3aXRoIHZhbHVlcyBbJHthVmFsdWVzfV0sIGFuZCBhbm90aGVyIFNldCB3aXRoIHZh
bHVlcyBbJHtiVmFsdWVzfV06YCk7CisKKyAgICAgICAgICAgICAgICBsZXQgYWN0dWFsID0gYS51
bmlvbihiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYWN0dWFs
LmVxdWFscyhuZXcgU2V0KGV4cGVjdGVkKSksIGBTZXQgdW5pb24gc2hvdWxkIGJlIFske2V4cGVj
dGVkfV0uYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB0ZXN0VW5pb24oeworICAgICAgICAgICAgICAgIGFWYWx1
ZXM6IFtdLAorICAgICAgICAgICAgICAgIGJWYWx1ZXM6IFtdLAorICAgICAgICAgICAgICAgIGV4
cGVjdGVkOiBbXSwKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0ZXN0VW5pb24oewor
ICAgICAgICAgICAgICAgIGFWYWx1ZXM6IFsxLCAyLCAzXSwKKyAgICAgICAgICAgICAgICBiVmFs
dWVzOiBbXSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZDogWzEsIDIsIDNdLAorICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIHRlc3RVbmlvbih7CisgICAgICAgICAgICAgICAgYVZhbHVl
czogW10sCisgICAgICAgICAgICAgICAgYlZhbHVlczogWzEsIDIsIDNdLAorICAgICAgICAgICAg
ICAgIGV4cGVjdGVkOiBbMSwgMiwgM10sCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
dGVzdFVuaW9uKHsKKyAgICAgICAgICAgICAgICBhVmFsdWVzOiBbMSwgMiwgM10sCisgICAgICAg
ICAgICAgICAgYlZhbHVlczogWzIsIDMsIDRdLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBb
MSwgMiwgMywgNF0sCiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMzgsNiArMTgwLDIyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7
CiAKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJTZXQucHJvdG90eXBl
Lm1heFZhbHVlIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RN
YXhWYWx1ZSh2YWx1ZXMsIGNvbXBhcmF0b3IpIHsKKyAgICAgICAgICAgICAgICBsZXQgc2V0ID0g
bmV3IFNldCh2YWx1ZXMpOworICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTWF4ID0gdmFs
dWVzLnNvcnQoY29tcGFyYXRvcikubGFzdFZhbHVlOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoc2V0Lm1heFZhbHVlKGNvbXBhcmF0b3IpLCBleHBlY3RlZE1heCwg
YFNldCB3aXRoIHZhbHVlcyBbJHtBcnJheS5mcm9tKHNldCl9XSBzaG91bGQgaGF2ZSBtYXhpbXVt
IHZhbHVlICR7ZXhwZWN0ZWRNYXh9LmApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0
ZXN0TWF4VmFsdWUoW10pOworICAgICAgICAgICAgdGVzdE1heFZhbHVlKFsxXSk7CisgICAgICAg
ICAgICB0ZXN0TWF4VmFsdWUoWzEsIDIsIDBdKTsKKyAgICAgICAgICAgIHRlc3RNYXhWYWx1ZShb
ImIiLCAiYyIsICJhIl0sIChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpOworICAgICAgICB9
CisgICAgfSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwvc2Ny
aXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365941</attachid>
            <date>2019-03-25 21:37:26 -0700</date>
            <delta_ts>2019-03-25 21:48:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192681-20190325213726.patch</filename>
            <type>text/plain</type>
            <size>28992</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZmFiODhlYjQ1YWZiNjZlYmU1ZDcyOGM5NjkyZmIzOTQwMjhiYjY5Li4zYjJhOTEzN2ZlMjkyNGZh
M2VjODNlOTUyNjBiZWNmNTE0NDU3YTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOS0wMy0yNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rp
b24gbG9zdCBhZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAgKHZh
bHVlLmRlZmF1bHRDb21wYXJhdG9yKToKKyAgICAgICAgKHZhbHVlKToKKyAgICAgICAgQWRkIFNl
dC5wcm90b3R5cGUubWF4VmFsdWUsIHdoaWNoIGNhbiBiZSBtb3JlIGVmZmljaWVudCB0aGFuIHRo
ZQorICAgICAgICBlcXVpdmFsZW50IGNvZGUgdXNpbmcgQXJyYXkuZnJvbSBhbmQgQXJyYXkuc29y
dC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJv
bGxlci5qczoKKyAgICAgICAgKFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLnNlbGVj
dEl0ZW1zKToKKyAgICAgICAgUHJvdmlkZSBhIG1lYW5zIHRvIHNlbGVjdCBtdWx0aXBsZSBpdGVt
cyBpbiBhIHNpbmdsZSBvcGVyYXRpb24uCisgICAgICAgIFRoZSBleGlzdGluZyBgc2VsZWN0SXRl
bWAgbWV0aG9kIHdhcyBub3QgcmVpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiB0aGlzCisgICAgICAg
IG5ldyBtZXRob2QsIGluIG9yZGVyIHRvIHJldGFpbiBhIGRlZGljYXRlZCBlZmZpY2llbnQgcGF0
aCBmb3IgdGhlIG1vcmUKKyAgICAgICAgY29tbW9uIHNpbmdsZS1zZWxlY3Rpb24gb3BlcmF0aW9u
LgorCisgICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVyLnByb3RvdHlwZS5fZGVzZWxlY3RB
bGxBbmRTZWxlY3QpOgorICAgICAgICBEcml2ZS1ieSBmaXg6IGNvcnJlY3QgYSBsb2dpYyBlcnJv
ci4gSWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVkLCB0aGUgaXRlbQorICAgICAgICBwYXNzZWQgYXMg
YW4gYXJndW1lbnQgc2hvdWxkIHN0aWxsIGJlY29tZSBzZWxlY3RlZC4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudCk6CisgICAgICAgIChX
SS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGNsb3NlVGFnVHJlZUVsZW1lbnQpOgorICAg
ICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVDaGlsZHJlbik6CisgICAg
ICAgIE1ha2UgdGhlIGNsb3NlIHRhZyBUcmVlRWxlbWVudCBhdmFpbGFibGUgZnJvbSB0aGUgb3Bl
biB0YWcgVHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlLnVwZGF0
ZSk6CisgICAgICAgIFJlc3RvcmUgc2VsZWN0ZWQgVHJlZUVsZW1lbnRzIGFmdGVyIHVwZGF0aW5n
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qczoKKyAgICAg
ICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3RUcmVlRWxlbWVudHMpOgorCiAyMDE5
LTAzLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUGFnZSBXZWlnaHQgaW5kaWNhdG9yIGNsZWFycyBvbiBwYWdlcyB3aXRo
IHplcm8gbGVuZ3RoIHJlc291cmNlcyAobWFjcnVtb3JzLmNvbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXggMTc0
ZmFhYmZhZDNiODgwYzMwNDc1MWVjYzBmNWMyMDU0YTlmMTM3Ny4uMjYxZDk2NWIxZjgyNzc0ZTky
YWYwMTc2Y2ZkODI0ZDkyMjZlY2E5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKQEAgLTE5NSw2ICsxOTUsNDEgQEAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsICJpc1N1YnNldE9mIiwKICAgICB9
CiB9KTsKIAorT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsICJtYXhWYWx1ZSIs
Cit7CisgICAgdmFsdWUoY29tcGFyYXRvcikKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRlZmF1
bHRDb21wYXJhdG9yKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIC0gYjsK
KyAgICAgICAgfQorICAgICAgICBjb21wYXJhdG9yID0gY29tcGFyYXRvciB8fCBkZWZhdWx0Q29t
cGFyYXRvcjsKKworICAgICAgICBsZXQgaXRlcmF0b3IgPSB0aGlzLnZhbHVlcygpOworICAgICAg
ICBsZXQgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpLnZhbHVlOworICAgICAgICBmb3IgKGxldCB2
YWx1ZSBvZiBpdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKGNvbXBhcmF0b3IocmVzdWx0LCB2
YWx1ZSkgPCAwKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9KTsKKworT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFNldC5wcm90b3R5cGUsICJ1bmlvbiIsCit7CisgICAgdmFsdWUob3RoZXIpCisgICAgewor
ICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldChvdGhlcik7CisgICAgICAgIGlmIChvdGhlciAh
PT0gdGhpcykgeworICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hZGQoaXRlbSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KK30pOworCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUs
ICJ0cmF2ZXJzZU5leHROb2RlIiwKIHsKICAgICB2YWx1ZShzdGF5V2l0aGluKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0
aW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKaW5kZXggOGIzMjE5ZDhmM2E5ODkwMTBh
YjZiM2FkOGNlZmQ2YTYwNjM0M2UyZC4uNDJjMTgwOWIzZGQ1MWNiMWY4Yzc5NDJhYTlkMjFjYmVj
YTc2MmZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCkBA
IC0xMDMsNiArMTAzLDI1IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxlY3Rp
b25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVj
dGVkSXRlbXMobmV3SXRlbXMpOwogICAgIH0KIAorICAgIHNlbGVjdEl0ZW1zKGl0ZW1zKQorICAg
IHsKKyAgICAgICAgaWYgKGl0ZW1zLnNpemUgPT09IDEpIHsKKyAgICAgICAgICAgIHRoaXMuc2Vs
ZWN0SXRlbShpdGVtcy5maXJzdFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbG93c011bHRpcGxlU2VsZWN0aW9u
LCAiQ2Fubm90IGV4dGVuZCBzZWxlY3Rpb24gd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb24gZGlzYWJs
ZWQuIik7CisgICAgICAgIGlmICghdGhpcy5fYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtIHx8
ICFpdGVtcy5oYXModGhpcy5fbGFzdFNlbGVjdGVkSXRlbSkpCisgICAgICAgICAgICB0aGlzLl9s
YXN0U2VsZWN0ZWRJdGVtID0gaXRlbXMubWF4VmFsdWUodGhpcy5fY29tcGFyYXRvcik7CisKKyAg
ICAgICAgdGhpcy5fc2hpZnRBbmNob3JJdGVtID0gbnVsbDsKKworICAgICAgICB0aGlzLl91cGRh
dGVTZWxlY3RlZEl0ZW1zKGl0ZW1zKTsKKyAgICB9CisKICAgICBkZXNlbGVjdEl0ZW0oaXRlbSkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZW0sICJJbnZhbGlkIGl0ZW0gZm9yIHNl
bGVjdGlvbi4iKTsKQEAgLTI5Nyw3ICszMTYsNyBAQCBXSS5TZWxlY3Rpb25Db250cm9sbGVyID0g
Y2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2Rlc2Vs
ZWN0QWxsQW5kU2VsZWN0KGl0ZW0pCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVk
SXRlbXMuc2l6ZSkKKyAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZEl0ZW1zLnNpemUgJiYgIWl0
ZW0pCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRl
bXMuc2l6ZSA9PT0gMSAmJiB0aGlzLmhhc1NlbGVjdGVkSXRlbShpdGVtKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAwYzI4NGE2ZTBhMWYx
NDQxMTFlOWEyNDgyZjZiMGUwNmJmOTgwMDhjLi4wNmYwYmUyZjc2ZDVjYjQwMGU5ZDFjZGYwOGI3
N2RjZGFmMGMzNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sCkBAIC0yNjEsNiArMjYxLDggQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVz
aXplci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RhYmxlLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVGFibGVDb2x1bW4uanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1RyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgV0kuc2hhcmVkQXBwID0gbmV3IFdJLlRl
c3RBcHBDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRleCA3MjRjYzNlYzlkYmQw
NDU4ODVjYzMwZTVhODg5YTBiNjg1YWM4ZDEyLi43YmU1ZmM1NDIxNzMwZjI2MmU2ODlkMzA1MzMw
ZTRmY2M1ZDY1MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAtMzksNiArMzksNyBAQCBX
SS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVs
ZW1lbnQKIAogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSgpID09
PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAhZWxlbWVudENsb3NlVGFnKQogICAgICAgICAgICAgdGhp
cy5fY2FuQWRkQXR0cmlidXRlcyA9IHRydWU7CisKICAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkg
PSBudWxsOwogICAgICAgICB0aGlzLl9leHBhbmRlZENoaWxkcmVuTGltaXQgPSBXSS5ET01UcmVl
RWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5MaW1pdDsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludFN0
YXR1cyA9IFdJLkRPTVRyZWVFbGVtZW50LkJyZWFrcG9pbnRTdGF0dXMuTm9uZTsKQEAgLTQ2LDkg
KzQ3LDkgQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRz
IFdJLlRyZWVFbGVtZW50CiAgICAgICAgIHRoaXMuX3Nob3VsZEhpZ2hsaWdodEFmdGVyUmV2ZWFs
ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2JvdW5kSGlnaGxpZ2h0QW5pbWF0aW9uRW5kID0gdGhp
cy5faGlnaGxpZ2h0QW5pbWF0aW9uRW5kLmJpbmQodGhpcyk7CiAgICAgICAgIHRoaXMuX3N1YnRy
ZWVCcmVha3BvaW50Q291bnQgPSAwOwotCiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkQXR0cmli
dXRlcyA9IG5ldyBTZXQ7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZpZWRBdHRyaWJ1dGVz
ID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fY2xvc2VUYWdUcmVlRWxlbWVudCA9IG51bGw7CiAK
ICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuRW5hYmxlZFBz
ZXVkb0NsYXNzZXNDaGFuZ2VkLCB0aGlzLl9ub2RlUHNldWRvQ2xhc3Nlc0RpZENoYW5nZSwgdGhp
cyk7CiAKQEAgLTEwNiw2ICsxMDcsOCBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRy
ZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgfQogICAgIH0KIAorICAg
IGdldCBjbG9zZVRhZ1RyZWVFbGVtZW50KCkgeyByZXR1cm4gdGhpcy5fY2xvc2VUYWdUcmVlRWxl
bWVudDsgfQorCiAgICAgcmV2ZWFsQW5kSGlnaGxpZ2h0KCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9hbmltYXRpbmdIaWdobGlnaHQpCkBAIC01MzQsNyArNTM3LDcgQEAgV0kuRE9NVHJlZUVs
ZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAg
ICAgIC8vIEluc2VydCBjbG9zaW5nIHRhZyB0cmVlIGVsZW1lbnQuCiAgICAgICAgIHZhciBsYXN0
Q2hpbGQgPSB0aGlzLmNoaWxkcmVuLmxhc3RWYWx1ZTsKICAgICAgICAgaWYgKG5vZGUubm9kZVR5
cGUoKSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgKCFsYXN0Q2hpbGQgfHwgIWxhc3RDaGlsZC5f
ZWxlbWVudENsb3NlVGFnKSkKLSAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGRFbGVtZW50KHRo
aXMucmVwcmVzZW50ZWRPYmplY3QsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoLCB0cnVlKTsKKyAgICAg
ICAgICAgIHRoaXMuX2Nsb3NlVGFnVHJlZUVsZW1lbnQgPSB0aGlzLmluc2VydENoaWxkRWxlbWVu
dCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLmNoaWxkcmVuLmxlbmd0aCwgdHJ1ZSk7CiAK
ICAgICAgICAgLy8gV2Ugd2FudCB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBzZWxlY3Rpb24gYW5k
IHRyZWUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGEgZnVsbCByZWZyZXNoLCBpZiBwb3NzaWJsZS4K
ICAgICAgICAgaWYgKGZ1bGxSZWZyZXNoICYmIGVsZW1lbnRUb1NlbGVjdCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxp
bmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
T3V0bGluZS5qcwppbmRleCBjNmVkNjQyODhjNDA0OWU0M2JhMjA0NGJkNjhmMWQ4YTQwM2JhODYw
Li40MTg1M2Q0ZTI5Y2EzZGJlN2QzOGRlYzhjYzhjZTM0NmUzYTc5NTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
T3V0bGluZS5qcwpAQCAtMTU5LDYgKzE1OSw3IEBAIFdJLkRPTVRyZWVPdXRsaW5lID0gY2xhc3Mg
RE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5UcmVlT3V0bGluZQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGxldCBzZWxlY3RlZE5vZGUgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQg
PyB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgOiBudWxsOworICAg
ICAgICBsZXQgc2VsZWN0ZWRUcmVlRWxlbWVudHMgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnRz
OwogCiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTgxLDggKzE4MiwyNyBA
QCBXSS5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJl
ZU91dGxpbmUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChzZWxlY3Rl
ZE5vZGUpCi0gICAgICAgICAgICB0aGlzLl9yZXZlYWxBbmRTZWxlY3ROb2RlKHNlbGVjdGVkTm9k
ZSwgdHJ1ZSk7CisgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFRoZSBzZWxlY3Rpb24gY2Fubm90IGJlIHJl
c3RvcmVkIGZyb20gcmVwcmVzZW50ZWQgb2JqZWN0cyBhbG9uZSwKKyAgICAgICAgLy8gc2luY2Ug
YSBjbG9zaW5nIHRhZyBET01UcmVlRWxlbWVudCBoYXMgdGhlIHNhbWUgcmVwcmVzZW50ZWQgb2Jq
ZWN0CisgICAgICAgIC8vIGFzIGl0cyBwYXJlbnQuCisgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1l
bnRzID0gc2VsZWN0ZWRUcmVlRWxlbWVudHMubWFwKChvbGRUcmVlRWxlbWVudCkgPT4geworICAg
ICAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy5maW5kVHJlZUVsZW1lbnQob2xkVHJlZUVs
ZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50ICYm
IG9sZFRyZWVFbGVtZW50LmlzQ2xvc2VUYWcoKSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRyZWVFbGVtZW50LmNsb3NlVGFnVHJlZUVsZW1lbnQsICJNaXNzaW5nIGNsb3NlIHRh
ZyBUcmVlRWxlbWVudC4iLCB0cmVlRWxlbWVudCk7CisgICAgICAgICAgICAgICAgdHJlZUVsZW1l
bnQgPSB0cmVlRWxlbWVudC5jbG9zZVRhZ1RyZWVFbGVtZW50OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OworICAgICAgICB9KTsKKworICAgICAgICB0aGlz
LnNlbGVjdFRyZWVFbGVtZW50cyhzZWxlY3RlZFRyZWVFbGVtZW50cyk7CisKKyAgICAgICAgaWYg
KHNlbGVjdGVkTm9kZSkgeworICAgICAgICAgICAgY29uc3Qgb21pdEZvY3VzID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUoc2VsZWN0ZWROb2RlLCBvbWl0Rm9j
dXMpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdXBkYXRlU2VsZWN0aW9uQXJlYSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlRWxl
bWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVF
bGVtZW50LmpzCmluZGV4IDg4YTZjNGRmMWFkY2Q1OTRhNDkwMmFhNzdlMDQ0ZDEwY2M3YTg1MDAu
LjY3ZTYzMmRiYTE2ZjFmZmIyNDY5ZTQzZTk1NDcwNDQ5N2U0YzFlZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50
LmpzCkBAIC00NSw3ICs0NSw3IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5faGlkZGVuID0gZmFsc2U7CiAgICAgICAg
IHRoaXMuX3NlbGVjdGFibGUgPSB0cnVlOwogICAgICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7
Ci0gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWQg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IG9wdGlvbnMuaGFzQ2hpbGRyZW47
CiAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZSA9
IG51bGw7CkBAIC02OSw2ICs2OSw4IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1l
bnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIDEwOwogICAgIH0KIAorICAgIGdl
dCBzZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGVkOyB9CisKICAgICBnZXQgc2VsZWN0
YWJsZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGlkZGVuKQpAQCAtNDk1LDcgKzQ5Nyw5
IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lIHx8ICF0aGlzLnNlbGVjdGFibGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMudHJl
ZU91dGxpbmUuYWxsb3dzUmVwZWF0U2VsZWN0aW9uKQorICAgICAgICB0aGlzLl9zZWxlY3RlZCA9
IHRydWU7CisKKyAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRs
aW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgIXRoaXMudHJlZU91dGxpbmUuYWxsb3dzUmVwZWF0
U2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghb21pdEZvY3Vz
KQpAQCAtNTAzLDExICs1MDcsOCBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgLy8gRm9jdXNpbmcgb24gYW5vdGhlciBub2Rl
IG1heSBkZXRhY2ggInRoaXMiIGZyb20gdHJlZS4KICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0g
dGhpcy50cmVlT3V0bGluZTsKLSAgICAgICAgaWYgKCF0cmVlT3V0bGluZSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgdHJlZU91
dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbCh0aGlzLCBzdXBwcmVzc05vdGlmaWNhdGlv
biwgc2VsZWN0ZWRCeVVzZXIpOworICAgICAgICBpZiAodHJlZU91dGxpbmUpCisgICAgICAgICAg
ICB0cmVlT3V0bGluZS5zZWxlY3RUcmVlRWxlbWVudEludGVybmFsKHRoaXMsIHN1cHByZXNzTm90
aWZpY2F0aW9uLCBzZWxlY3RlZEJ5VXNlcik7CiAgICAgfQogCiAgICAgcmV2ZWFsQW5kU2VsZWN0
KG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzTm90aWZpY2F0aW9uKQpAQCAtNTIx
LDcgKzUyMiw3IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lIHx8ICF0aGlzLnNlbGVjdGVk
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBm
YWxzZTsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS5zZWxlY3RUcmVlRWxlbWVudEludGVybmFsKG51bGwsIHN1cHByZXNzTm90aWZpY2F0
aW9uKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKaW5kZXggY2NjOTEx
NTFmOTE2MWVhOWVlM2U1MmJjNzQyYTNhNTgzZjQ1ZGRlNC4uMDYzZjRmNjQ1ZDRkYzY3ZmZmNGI0
YjU5MTA2ZDU4MTYxMDcyZjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTcxMSw2ICs3MTEsMjQg
QEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCiAgICAgfQogCisgICAgc2Vs
ZWN0VHJlZUVsZW1lbnRzKHRyZWVFbGVtZW50cykKKyAgICB7CisgICAgICAgIGlmICghdHJlZUVs
ZW1lbnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJlZUVs
ZW1lbnRzLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVt
ZW50ID0gdHJlZUVsZW1lbnRzWzBdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgIkNh
bm5vdCBzZWxlY3QgVHJlZUVsZW1lbnRzIHdpdGggbXVsdGlwbGUgc2VsZWN0aW9uIGRpc2FibGVk
LiIpOworICAgICAgICBpZiAoIXRoaXMuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24pCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHNlbGVjdGFibGVPYmplY3RzID0gdHJlZUVsZW1l
bnRzLm1hcCgoeCkgPT4gdGhpcy5vYmplY3RGb3JTZWxlY3Rpb24oeCkpOworICAgICAgICB0aGlz
Ll9zZWxlY3Rpb25Db250cm9sbGVyLnNlbGVjdEl0ZW1zKG5ldyBTZXQoc2VsZWN0YWJsZU9iamVj
dHMpKTsKKyAgICB9CisKICAgICBnZXQgc2VsZWN0ZWRUcmVlRWxlbWVudEluZGV4KCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbiB8fCAhdGhpcy5zZWxlY3RlZFRyZWVFbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGZkMDc1MDUwYjk0ZWUyYTYwOWJjZDg3YjQwOTU0MjYzNGVhZDkyMTMuLjhh
Nzg5NWJmNmFjNzAzMjMyNzA1OGI4YzdlMzViOTZiMjQwZWU2ZmQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxOS0wMy0yNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rpb24gbG9z
dCBhZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ2NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91
dGxpbmUtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgVHJlZU91dGxpbmUgdGVz
dHMgZm9yIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2VsZWN0aW9uLgorCisgICAgICAgICogaW5zcGVj
dG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sOgorICAgICAgICBBZGQgdGVzdHMg
Zm9yIG5ldyBTZXQgdXRpbGl0eSBtZXRob2RzLgorCiAyMDE5LTAzLTI1ICBTaGF3biBSb2JlcnRz
ICA8c3JvYmVydHNAYXBwbGUuY29tPgogCiAgICAgICAgIHBlcmZvcm1hbmNlLWFwaS9wZXJmb3Jt
YW5jZS1vYnNlcnZlci1wZXJpb2RpYy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJl
ZS1vdXRsaW5lLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmIyYmIxY2UyOWFh
NTljN2M0NDI4Y2M5YTBlNGIyOWU2NGU5MzQ4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0MyBAQAorVGVzdHMgZm9yIFdJLlRyZWVPdXRsaW5lIHNlbGVjdGlv
bi4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFRyZWVPdXRsaW5lLlNlbGVjdGlvbgorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLmNvbnN0cnVjdG9yCitQQVNTOiBzZWxlY3Rl
ZFRyZWVFbGVtZW50IHNob3VsZCBiZSBudWxsLgorUEFTUzogc2VsZWN0ZWRUcmVlRWxlbWVudHMg
c2hvdWxkIGJlIGVtcHR5LgorUEFTUzogYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gc2hvdWxkIGJl
IGZhbHNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVHJlZU91dGxpbmUuRmluZFRyZWVFbGVt
ZW50CitQQVNTOiBTaG91bGQgZmluZCBUcmVlRWxlbWVudCBmb3IgcmVwcmVzZW50ZWQgb2JqZWN0
LgorUEFTUzogVHJlZUVsZW1lbnQgc2hvdWxkIGhhdmUgY29ycmVjdCByZXByZXNlbnRlZCBvYmpl
Y3QuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGluZS5TZWxlY3RlZFRyZWVFbGVt
ZW50CitTZWxlY3RpbmcgVHJlZUVsZW1lbnQgIkl0ZW0gMSIuCitQQVNTOiBUcmVlT3V0bGluZSBz
aG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSAxIi4KK1BBU1M6IFRyZWVFbGVt
ZW50ICJJdGVtIDEiIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1ZS4KK1BBU1M6IE90aGVyIFRy
ZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IGZhbHNlLgorU2VsZWN0aW5nIFRyZWVF
bGVtZW50ICJJdGVtIDIiLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgc2VsZWN0ZWQg
VHJlZUVsZW1lbnQgIkl0ZW0gMiIuCitQQVNTOiBUcmVlRWxlbWVudCAiSXRlbSAyIiBzaG91bGQg
aGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBPdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIGhh
dmUgc2VsZWN0ZWQgPSBmYWxzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5l
LkFsbG93c011bHRpcGxlU2VsZWN0aW9uCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBl
bmFibGVkLgorUEFTUzogYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gZGlzYWJsZWQuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMKK1NlbGVjdGlu
ZyBUcmVlRWxlbWVudHMgWyJJdGVtIDEiLCJJdGVtIDIiXS4KK1BBU1M6IFRyZWVPdXRsaW5lIHNo
b3VsZCBoYXZlIGNvcnJlY3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLgorUEFTUzogVHJlZUVsZW1l
bnRzIFsiSXRlbSAxIiwiSXRlbSAyIl0gc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSB0cnVlLgorUEFT
UzogQWxsIG90aGVyIFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IGZhbHNlLgor
UEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgVHJlZUVsZW1lbnQgIkl0ZW0g
MiIuCisKK1NlbGVjdGluZyBUcmVlRWxlbWVudHMgWyJJdGVtIDMiLCJJdGVtIDQiXS4KK1BBU1M6
IFRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIGNvcnJlY3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLgor
UEFTUzogVHJlZUVsZW1lbnRzIFsiSXRlbSAzIiwiSXRlbSA0Il0gc2hvdWxkIGhhdmUgc2VsZWN0
ZWQgPSB0cnVlLgorUEFTUzogQWxsIG90aGVyIFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxl
Y3RlZCA9IGZhbHNlLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgVHJl
ZUVsZW1lbnQgIkl0ZW0gNCIuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGluZS5T
ZWxlY3RUcmVlRWxlbWVudHMuTXVsdGlwbGVTZWxlY3Rpb25EaXNhYmxlZAorUEFTUzogU2hvdWxk
IGhhdmUgbm8gc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxlY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiOWYwYWI3NGI3Y2E1YTIzMWE5Nzk2NTU4NTM4NTE0ZDI0NDZjZjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3Ry
ZWUtb3V0bGluZS1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDE4NCBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5yZWRpcmVjdFJlcXVlc3RBbmltYXRp
b25GcmFtZSgpOworCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTeW5jU3Vp
dGUoIlRyZWVPdXRsaW5lLlNlbGVjdGlvbiIpOworCisgICAgZnVuY3Rpb24gY3JlYXRlVHJlZU91
dGxpbmUob2JqZWN0cyA9IFtdKSB7CisgICAgICAgIGZ1bmN0aW9uIGFwcGVuZE9iamVjdChwYXJl
bnQsIG9iamVjdCkgeworICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7fTsKKyAgICAgICAgICAg
IGlmIChvYmplY3QuY2hpbGRyZW4pCisgICAgICAgICAgICAgICAgb3B0aW9ucy5oYXNDaGlsZHJl
biA9IHRydWU7CisgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSBuZXcgV0kuVHJlZUVsZW1l
bnQob2JqZWN0LnRpdGxlLCBvYmplY3QsIG9wdGlvbnMpOworICAgICAgICAgICAgcGFyZW50LmFw
cGVuZENoaWxkKHRyZWVFbGVtZW50KTsKKworICAgICAgICAgICAgaWYgKCFvYmplY3QuY2hpbGRy
ZW4pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBmb3IgKGxldCBjaGls
ZCBvZiBvYmplY3QuY2hpbGRyZW4pCisgICAgICAgICAgICAgICAgYWRkT2JqZWN0KHRyZWVFbGVt
ZW50LCBjaGlsZCk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBuZXcg
V0kuVHJlZU91dGxpbmU7CisgICAgICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmplY3RzKQorICAg
ICAgICAgICAgYXBwZW5kT2JqZWN0KHRyZWVPdXRsaW5lLCBvYmplY3QpOworCisgICAgICAgIHJl
dHVybiB0cmVlT3V0bGluZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBleHBlY3RTZWxlY3RlZFRy
ZWVFbGVtZW50KHRyZWVPdXRsaW5lLCB0cmVlRWxlbWVudCkgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQsIHRyZWVFbGVt
ZW50LCBgVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgVHJlZUVsZW1lbnQgIiR7dHJl
ZUVsZW1lbnQudGl0bGV9Ii5gKTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5jb25zdHJ1Y3RvciIsCisgICAgICAgIHRlc3QoKSB7
CisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVUcmVlT3V0bGluZSgpOworCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51bGwodHJlZU91dGxpbmUuc2VsZWN0ZWRU
cmVlRWxlbWVudCwgInNlbGVjdGVkVHJlZUVsZW1lbnQgc2hvdWxkIGJlIG51bGwuIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJl
ZUVsZW1lbnRzLmxlbmd0aCwgMCwgInNlbGVjdGVkVHJlZUVsZW1lbnRzIHNob3VsZCBiZSBlbXB0
eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UodHJlZU91dGxpbmUu
YWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24sICJhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBzaG91bGQg
YmUgZmFsc2UuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmVlT3V0bGlu
ZS5GaW5kVHJlZUVsZW1lbnQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkZpbmQgVHJlZUVsZW1l
bnQgZm9yIGdpdmVuIHJlcHJlc2VudGVkIG9iamVjdC4iLAorICAgICAgICB0ZXN0KCkgeworICAg
ICAgICAgICAgY29uc3QgcmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0
aXRsZTogIkl0ZW0gMSJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAg
ICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMyJ9LAorICAgICAgICAgICAgXTsKKworICAgICAg
ICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91dGxpbmUocmVwcmVzZW50ZWRPYmpl
Y3RzKTsKKyAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRyZWVPdXRsaW5lLmZpbmRUcmVl
RWxlbWVudChyZXByZXNlbnRlZE9iamVjdHNbMF0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQodHJlZUVsZW1lbnQsICJTaG91bGQgZmluZCBUcmVlRWxlbWVudCBmb3Ig
cmVwcmVzZW50ZWQgb2JqZWN0LiIpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LCByZXByZXNlbnRlZE9iamVjdHNbMF0s
ICJUcmVlRWxlbWVudCBzaG91bGQgaGF2ZSBjb3JyZWN0IHJlcHJlc2VudGVkIG9iamVjdC4iKQor
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVHJlZU91dGxpbmUuU2VsZWN0ZWRUcmVl
RWxlbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2VsZWN0IGEgdHJlZSBlbGVtZW50LCB0
aGVuIHNlbGVjdCBhIGRpZmZlcmVudCB0cmVlIGVsZW1lbnQuIiwKKyAgICAgICAgdGVzdCgpIHsK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJTZWxlY3RUcmVlRWxlbWVudCh0cmVlRWxlbWVu
dCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBTZWxlY3RpbmcgVHJlZUVs
ZW1lbnQgIiR7dHJlZUVsZW1lbnQudGl0bGV9Ii5gKTsKKyAgICAgICAgICAgICAgICB0cmVlT3V0
bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CisKKyAgICAgICAgICAgICAg
ICBleHBlY3RTZWxlY3RlZFRyZWVFbGVtZW50KHRyZWVPdXRsaW5lLCB0cmVlRWxlbWVudCk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHRyZWVFbGVtZW50LnNlbGVj
dGVkLCBgVHJlZUVsZW1lbnQgIiR7dHJlZUVsZW1lbnQudGl0bGV9IiBzaG91bGQgaGF2ZSBzZWxl
Y3RlZCA9IHRydWUuYCk7CisKKyAgICAgICAgICAgICAgICBsZXQgb3RoZXJUcmVlRWxlbWVudHNB
cmVEZXNlbGVjdGVkID0gdHJlZU91dGxpbmUuY2hpbGRyZW4uZXZlcnkoKHgpID0+IHggPT09IHRy
ZWVFbGVtZW50IHx8ICF4LnNlbGVjdGVkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQob3RoZXJUcmVlRWxlbWVudHNBcmVEZXNlbGVjdGVkLCAiT3RoZXIgVHJlZUVs
ZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuIik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNvbnN0IHJlcHJlc2VudGVkT2JqZWN0cyA9IFsKKyAgICAgICAgICAgICAg
ICB7dGl0bGU6ICJJdGVtIDEifSwKKyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDIifSwK
KyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRy
ZWVPdXRsaW5lKHJlcHJlc2VudGVkT2JqZWN0cyk7CisKKyAgICAgICAgICAgIHRyaWdnZXJTZWxl
Y3RUcmVlRWxlbWVudCh0cmVlT3V0bGluZS5jaGlsZHJlblswXSk7CisgICAgICAgICAgICB0cmln
Z2VyU2VsZWN0VHJlZUVsZW1lbnQodHJlZU91dGxpbmUuY2hpbGRyZW5bMV0pOworCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiVHJlZU91dGxpbmUuQWxsb3dzTXVsdGlwbGVTZWxlY3Rp
b24iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIGVuYWJsZSBtdWx0
aXBsZSBzZWxlY3Rpb24uIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0cmVl
T3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKCk7CisKKyAgICAgICAgICAgIHRyZWVPdXRsaW5l
LmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdCh0cmVlT3V0bGluZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgImFsbG93
c011bHRpcGxlU2VsZWN0aW9uIGVuYWJsZWQuIik7CisgICAgICAgICAgICB0cmVlT3V0bGluZS5h
bGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RGYWxzZSh0cmVlT3V0bGluZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgImFsbG93
c011bHRpcGxlU2VsZWN0aW9uIGRpc2FibGVkLiIpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgZnVuY3Rpb24gdHJpZ2dlclNlbGVjdFRyZWVF
bGVtZW50cyh0cmVlT3V0bGluZSwgdHJlZUVsZW1lbnRzKSB7CisgICAgICAgIGxldCBkaXNwbGF5
VGV4dCA9IGAke3RyZWVFbGVtZW50cy5tYXAoKHgpID0+IGAiJHt4LnRpdGxlfSJgKX1gOworCisg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBTZWxlY3RpbmcgVHJlZUVsZW1lbnRzIFske2Rpc3Bs
YXlUZXh0fV0uYCk7CisgICAgICAgIHRyZWVPdXRsaW5lLnNlbGVjdFRyZWVFbGVtZW50cyh0cmVl
RWxlbWVudHMpOworCisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHRy
ZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnRzLCB0cmVlRWxlbWVudHMsICJUcmVlT3V0bGlu
ZSBzaG91bGQgaGF2ZSBjb3JyZWN0IHNlbGVjdGVkIFRyZWVFbGVtZW50cy4iKTsKKworICAgICAg
ICBsZXQgdHJlZUVsZW1lbnRzU2VsZWN0ZWQgPSB0cmVlRWxlbWVudHMuZXZlcnkoKHgpID0+IHgu
c2VsZWN0ZWQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodHJlZUVsZW1lbnRz
U2VsZWN0ZWQsIGBUcmVlRWxlbWVudHMgWyR7ZGlzcGxheVRleHR9XSBzaG91bGQgaGF2ZSBzZWxl
Y3RlZCA9IHRydWUuYCk7CisKKyAgICAgICAgbGV0IG90aGVyVHJlZUVsZW1lbnRzTm90U2VsZWN0
ZWQgPSB0cmVlT3V0bGluZS5jaGlsZHJlbi5ldmVyeSgoeCkgPT4gIXguc2VsZWN0ZWQgfHwgdHJl
ZUVsZW1lbnRzLmluY2x1ZGVzKHgpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KG90aGVyVHJlZUVsZW1lbnRzTm90U2VsZWN0ZWQsICJBbGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNo
b3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuIik7CisgICAgfQorCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiVHJlZU91dGxpbmUuU2VsZWN0VHJlZUVsZW1lbnRzIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJTZWxlY3QgdHdvIHRyZWUgZWxlbWVudHMsIHRoZW4gc2Vs
ZWN0IHR3byBkaWZmZXJlbnQgdHJlZSBlbGVtZW50cy4iLAorICAgICAgICB0ZXN0KCkgeworICAg
ICAgICAgICAgY29uc3QgcmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0
aXRsZTogIkl0ZW0gMSJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAg
ICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMyJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTog
Ikl0ZW0gNCJ9LAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5l
ID0gY3JlYXRlVHJlZU91dGxpbmUocmVwcmVzZW50ZWRPYmplY3RzKTsKKyAgICAgICAgICAgIHRy
ZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gdHJ1ZTsKKworICAgICAgICAgICAg
bGV0IGNoaWxkcmVuID0gdHJlZU91dGxpbmUuY2hpbGRyZW47CisKKyAgICAgICAgICAgIHRyaWdn
ZXJTZWxlY3RUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIFtjaGlsZHJlblswXSwgY2hpbGRyZW5b
MV1dKTsKKyAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQodHJlZU91dGxpbmUs
IGNoaWxkcmVuWzFdKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOworCisg
ICAgICAgICAgICB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVPdXRsaW5lLCBbY2hpbGRy
ZW5bMl0sIGNoaWxkcmVuWzNdXSk7CisgICAgICAgICAgICBleHBlY3RTZWxlY3RlZFRyZWVFbGVt
ZW50KHRyZWVPdXRsaW5lLCBjaGlsZHJlblszXSk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMuTXVsdGlwbGVTZWxlY3Rpb25E
aXNhYmxlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2VsZWN0IG11bHRpcGxlIHRyZWUgZWxl
bWVudHMgd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb24gZGlzYWJsZWQuIiwKKyAgICAgICAgdGVzdCgp
IHsKKyAgICAgICAgICAgIGNvbnN0IHJlcHJlc2VudGVkT2JqZWN0cyA9IFsKKyAgICAgICAgICAg
ICAgICB7dGl0bGU6ICJJdGVtIDEifSwKKyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDIi
fSwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0
ZVRyZWVPdXRsaW5lKHJlcHJlc2VudGVkT2JqZWN0cyk7CisgICAgICAgICAgICB0cmVlT3V0bGlu
ZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlOworCisgICAgICAgICAgICB0cmVlT3V0
bGluZS5zZWxlY3RUcmVlRWxlbWVudHModHJlZU91dGxpbmUuY2hpbGRyZW4pOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVt
ZW50cy5sZW5ndGgsIDAsICJTaG91bGQgaGF2ZSBubyBzZWxlY3RlZCBUcmVlRWxlbWVudHMuIikK
KworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbkxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgZm9yIFdJLlRyZWVPdXRsaW5lIHNl
bGVjdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0CmluZGV4
IGY4NDQ2Mzk5MTk2YzZjY2U1YzkxNGVmOWI0NTU2MWU1YjZjNjYzNDYuLjc1ZmFhNTg1MDY5ZDE1
ZmU5ZDNhYmZkNjBhNjc5OWY3NjVkZmJhYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0CkBAIC0z
Nyw3ICszNywyNyBAQCBHaXZlbiBhIFNldCB3aXRoIHZhbHVlcyBbMSwyLDNdLCBhbmQgYW5vdGhl
ciBTZXQgd2l0aCB2YWx1ZXMgWzIsMyw0XToKIFBBU1M6IFNldCBkaWZmZXJlbmNlIHNob3VsZCBi
ZSBbMV0uCiAKIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNldC5wcm90b3R5cGUudW5pb24KK0dp
dmVuIGEgU2V0IHdpdGggdmFsdWVzIFtdLCBhbmQgYW5vdGhlciBTZXQgd2l0aCB2YWx1ZXMgW106
CitQQVNTOiBTZXQgdW5pb24gc2hvdWxkIGJlIFtdLgorCitHaXZlbiBhIFNldCB3aXRoIHZhbHVl
cyBbMSwyLDNdLCBhbmQgYW5vdGhlciBTZXQgd2l0aCB2YWx1ZXMgW106CitQQVNTOiBTZXQgdW5p
b24gc2hvdWxkIGJlIFsxLDIsM10uCisKK0dpdmVuIGEgU2V0IHdpdGggdmFsdWVzIFtdLCBhbmQg
YW5vdGhlciBTZXQgd2l0aCB2YWx1ZXMgWzEsMiwzXToKK1BBU1M6IFNldCB1bmlvbiBzaG91bGQg
YmUgWzEsMiwzXS4KKworR2l2ZW4gYSBTZXQgd2l0aCB2YWx1ZXMgWzEsMiwzXSwgYW5kIGFub3Ro
ZXIgU2V0IHdpdGggdmFsdWVzIFsyLDMsNF06CitQQVNTOiBTZXQgdW5pb24gc2hvdWxkIGJlIFsx
LDIsMyw0XS4KKworCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogU2V0LnByb3RvdHlwZS5maXJzdFZh
bHVlCiBQQVNTOiBTZXQgd2l0aCB2YWx1ZXMgW10gc2hvdWxkIGhhdmUgZmlyc3RWYWx1ZSBlcXVh
bCB0byB1bmRlZmluZWQuCiBQQVNTOiBTZXQgd2l0aCB2YWx1ZXMgWzEsMiwzXSBzaG91bGQgaGF2
ZSBmaXJzdFZhbHVlIGVxdWFsIHRvIDEuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTZXQucHJv
dG90eXBlLm1heFZhbHVlCitQQVNTOiBTZXQgd2l0aCB2YWx1ZXMgW10gc2hvdWxkIGhhdmUgbWF4
aW11bSB2YWx1ZSB1bmRlZmluZWQuCitQQVNTOiBTZXQgd2l0aCB2YWx1ZXMgWzFdIHNob3VsZCBo
YXZlIG1heGltdW0gdmFsdWUgMS4KK1BBU1M6IFNldCB3aXRoIHZhbHVlcyBbMSwyLDBdIHNob3Vs
ZCBoYXZlIG1heGltdW0gdmFsdWUgMi4KK1BBU1M6IFNldCB3aXRoIHZhbHVlcyBbYixjLGFdIHNo
b3VsZCBoYXZlIG1heGltdW0gdmFsdWUgYy4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sCmluZGV4IDUwMzMyOTAwMDIyMDZhZTkz
MWFkYWRkNzk1NmZkODY3ZTQ3YjY3NWEuLmNlMzMzODgyZmEwZWJjYzU5OWQ3MWNmYTIzMDc3ZTE3
MjRmODcwODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3Nl
dC11dGlsaXRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9z
ZXQtdXRpbGl0aWVzLmh0bWwKQEAgLTgxLDM5ICs4MSw3OSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJTZXQucHJvdG90eXBlLmRpZmZl
cmVuY2UiLAogICAgICAgICB0ZXN0KCkgewotICAgICAgICAgICAgZnVuY3Rpb24gdGVzdERpZmZl
cmVuY2Uoe2FWYWx1ZXMsIGJWYWx1ZXMsIGV4cGVjdGVkRGlmZmVyZW5jZX0pIHsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRlc3REaWZmZXJlbmNlKHthVmFsdWVzLCBiVmFsdWVzLCBleHBlY3RlZH0p
IHsKICAgICAgICAgICAgICAgICBsZXQgYSA9IG5ldyBTZXQoYVZhbHVlcyk7CiAgICAgICAgICAg
ICAgICAgbGV0IGIgPSBuZXcgU2V0KGJWYWx1ZXMpOwogCiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coYEdpdmVuIGEgU2V0IHdpdGggdmFsdWVzIFske2FWYWx1ZXN9XSwgYW5kIGFu
b3RoZXIgU2V0IHdpdGggdmFsdWVzIFske2JWYWx1ZXN9XTpgKTsKIAotICAgICAgICAgICAgICAg
IGxldCBkaWZmZXJlbmNlID0gYS5kaWZmZXJlbmNlKGIpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChkaWZmZXJlbmNlLmVxdWFscyhuZXcgU2V0KGV4cGVjdGVkRGlm
ZmVyZW5jZSkpLCBgU2V0IGRpZmZlcmVuY2Ugc2hvdWxkIGJlIFske2V4cGVjdGVkRGlmZmVyZW5j
ZX1dLmApOworICAgICAgICAgICAgICAgIGxldCBhY3R1YWwgPSBhLmRpZmZlcmVuY2UoYik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFjdHVhbC5lcXVhbHMobmV3
IFNldChleHBlY3RlZCkpLCBgU2V0IGRpZmZlcmVuY2Ugc2hvdWxkIGJlIFske2V4cGVjdGVkfV0u
YCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICB0ZXN0RGlmZmVyZW5jZSh7CiAgICAgICAgICAgICAgICAgYVZhbHVl
czogW10sCiAgICAgICAgICAgICAgICAgYlZhbHVlczogW10sCi0gICAgICAgICAgICAgICAgZXhw
ZWN0ZWREaWZmZXJlbmNlOiBbXSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZDogW10sCiAgICAg
ICAgICAgICB9KTsKIAogICAgICAgICAgICAgdGVzdERpZmZlcmVuY2UoewogICAgICAgICAgICAg
ICAgIGFWYWx1ZXM6IFsxLCAyLCAzXSwKICAgICAgICAgICAgICAgICBiVmFsdWVzOiBbXSwKLSAg
ICAgICAgICAgICAgICBleHBlY3RlZERpZmZlcmVuY2U6IFsxLCAyLCAzXSwKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZDogWzEsIDIsIDNdLAogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAg
IHRlc3REaWZmZXJlbmNlKHsKICAgICAgICAgICAgICAgICBhVmFsdWVzOiBbXSwKICAgICAgICAg
ICAgICAgICBiVmFsdWVzOiBbMSwgMiwgM10sCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWREaWZm
ZXJlbmNlOiBbXSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZDogW10sCiAgICAgICAgICAgICB9
KTsKIAogICAgICAgICAgICAgdGVzdERpZmZlcmVuY2UoewogICAgICAgICAgICAgICAgIGFWYWx1
ZXM6IFsxLCAyLCAzXSwKICAgICAgICAgICAgICAgICBiVmFsdWVzOiBbMiwgMywgNF0sCi0gICAg
ICAgICAgICAgICAgZXhwZWN0ZWREaWZmZXJlbmNlOiBbMV0sCisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQ6IFsxXSwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJTZXQucHJvdG90eXBlLnVuaW9uIiwK
KyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RVbmlvbih7YVZhbHVl
cywgYlZhbHVlcywgZXhwZWN0ZWR9KSB7CisgICAgICAgICAgICAgICAgbGV0IGEgPSBuZXcgU2V0
KGFWYWx1ZXMpOworICAgICAgICAgICAgICAgIGxldCBiID0gbmV3IFNldChiVmFsdWVzKTsKKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBHaXZlbiBhIFNldCB3aXRoIHZhbHVl
cyBbJHthVmFsdWVzfV0sIGFuZCBhbm90aGVyIFNldCB3aXRoIHZhbHVlcyBbJHtiVmFsdWVzfV06
YCk7CisKKyAgICAgICAgICAgICAgICBsZXQgYWN0dWFsID0gYS51bmlvbihiKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYWN0dWFsLmVxdWFscyhuZXcgU2V0KGV4
cGVjdGVkKSksIGBTZXQgdW5pb24gc2hvdWxkIGJlIFske2V4cGVjdGVkfV0uYCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB0ZXN0VW5pb24oeworICAgICAgICAgICAgICAgIGFWYWx1ZXM6IFtdLAorICAgICAgICAg
ICAgICAgIGJWYWx1ZXM6IFtdLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBbXSwKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICB0ZXN0VW5pb24oeworICAgICAgICAgICAgICAgIGFW
YWx1ZXM6IFsxLCAyLCAzXSwKKyAgICAgICAgICAgICAgICBiVmFsdWVzOiBbXSwKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZDogWzEsIDIsIDNdLAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIHRlc3RVbmlvbih7CisgICAgICAgICAgICAgICAgYVZhbHVlczogW10sCisgICAgICAgICAg
ICAgICAgYlZhbHVlczogWzEsIDIsIDNdLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBbMSwg
MiwgM10sCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdGVzdFVuaW9uKHsKKyAgICAg
ICAgICAgICAgICBhVmFsdWVzOiBbMSwgMiwgM10sCisgICAgICAgICAgICAgICAgYlZhbHVlczog
WzIsIDMsIDRdLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBbMSwgMiwgMywgNF0sCiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0pOwpAQCAtMTMwLDYgKzE3MCwyMiBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwogCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiU2V0LnByb3RvdHlwZS5tYXhWYWx1ZSIsCisgICAgICAgIHRlc3Qo
KSB7CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0TWF4VmFsdWUodmFsdWVzLCBjb21wYXJhdG9y
KSB7CisgICAgICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQodmFsdWVzKTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBleHBlY3RlZE1heCA9IHZhbHVlcy5zb3J0KGNvbXBhcmF0b3IpLmxhc3RW
YWx1ZTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNldC5tYXhW
YWx1ZShjb21wYXJhdG9yKSwgZXhwZWN0ZWRNYXgsIGBTZXQgd2l0aCB2YWx1ZXMgWyR7QXJyYXku
ZnJvbShzZXQpfV0gc2hvdWxkIGhhdmUgbWF4aW11bSB2YWx1ZSAke2V4cGVjdGVkTWF4fS5gKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdE1heFZhbHVlKFtdKTsKKyAgICAgICAg
ICAgIHRlc3RNYXhWYWx1ZShbMV0pOworICAgICAgICAgICAgdGVzdE1heFZhbHVlKFsxLCAyLCAw
XSk7CisgICAgICAgICAgICB0ZXN0TWF4VmFsdWUoWyJiIiwgImMiLCAiYSJdLCAoYSwgYikgPT4g
YS5sb2NhbGVDb21wYXJlKGIpKTsKKyAgICAgICAgfQorICAgIH0pOworCiAgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365945</attachid>
            <date>2019-03-25 21:48:24 -0700</date>
            <delta_ts>2019-03-27 01:11:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192681-20190325214823.patch</filename>
            <type>text/plain</type>
            <size>30299</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZmFiODhlYjQ1YWZiNjZlYmU1ZDcyOGM5NjkyZmIzOTQwMjhiYjY5Li5jMDhhMDMwMGMyYzgzMDZl
YzFmYTUyNzQ5YWYyZWNhNWQ5MzE1YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOS0wMy0yNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rp
b24gbG9zdCBhZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAgKHZh
bHVlLmRlZmF1bHRDb21wYXJhdG9yKToKKyAgICAgICAgKHZhbHVlKToKKyAgICAgICAgQWRkIFNl
dC5wcm90b3R5cGUubWF4VmFsdWUsIHdoaWNoIGNhbiBiZSBtb3JlIGVmZmljaWVudCB0aGFuIHRo
ZQorICAgICAgICBlcXVpdmFsZW50IGNvZGUgdXNpbmcgQXJyYXkuZnJvbSBhbmQgQXJyYXkuc29y
dC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJv
bGxlci5qczoKKyAgICAgICAgKFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLnNlbGVj
dEl0ZW0pOgorICAgICAgICBTaW1wbGlmeSBpbnRlcm5hbCBsb2dpYyBieSByZW1vdmluZyBhbiBl
YXJseSByZXR1cm4uCisKKyAgICAgICAgKFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBl
LnNlbGVjdEl0ZW1zKToKKyAgICAgICAgUHJvdmlkZSBhIG1lYW5zIHRvIHNlbGVjdCBtdWx0aXBs
ZSBpdGVtcyBpbiBhIHNpbmdsZSBvcGVyYXRpb24uCisgICAgICAgIFRoZSBleGlzdGluZyBgc2Vs
ZWN0SXRlbWAgbWV0aG9kIHdhcyBub3QgcmVpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiB0aGlzCisg
ICAgICAgIG5ldyBtZXRob2QsIGluIG9yZGVyIHRvIHJldGFpbiBhIGRlZGljYXRlZCBlZmZpY2ll
bnQgcGF0aCBmb3IgdGhlIG1vcmUKKyAgICAgICAgY29tbW9uIHNpbmdsZS1zZWxlY3Rpb24gb3Bl
cmF0aW9uLgorCisgICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVyLnByb3RvdHlwZS5fZGVz
ZWxlY3RBbGxBbmRTZWxlY3QpOgorICAgICAgICBEcml2ZS1ieSBmaXg6IGNvcnJlY3QgYSBsb2dp
YyBlcnJvci4gSWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVkLCB0aGUgaXRlbQorICAgICAgICBwYXNz
ZWQgYXMgYW4gYXJndW1lbnQgc2hvdWxkIHN0aWxsIGJlY29tZSBzZWxlY3RlZC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50KToKKyAg
ICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgY2xvc2VUYWdUcmVlRWxlbWVu
dCk6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUNoaWxkcmVu
KToKKyAgICAgICAgTWFrZSB0aGUgY2xvc2UgdGFnIFRyZWVFbGVtZW50IGF2YWlsYWJsZSBmcm9t
IHRoZSBvcGVuIHRhZyBUcmVlRWxlbWVudC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXSS5ET01UcmVlT3V0bGluZS5wcm90b3R5
cGUudXBkYXRlKToKKyAgICAgICAgUmVzdG9yZSBzZWxlY3RlZCBUcmVlRWxlbWVudHMgYWZ0ZXIg
dXBkYXRpbmcuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50Lmpz
OgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBzZWxlY3RlZCk6CisgICAg
ICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0KToKKyAgICAgICAgKFdJLlRyZWVF
bGVtZW50LnByb3RvdHlwZS5kZXNlbGVjdCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnNl
dCBzZWxlY3RlZFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5zZWxlY3RUcmVlRWxlbWVudHMpOgorCiAyMDE5LTAzLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUGFnZSBXZWlnaHQg
aW5kaWNhdG9yIGNsZWFycyBvbiBwYWdlcyB3aXRoIHplcm8gbGVuZ3RoIHJlc291cmNlcyAobWFj
cnVtb3JzLmNvbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXggMTc0ZmFhYmZhZDNiODgwYzMwNDc1MWVjYzBmNWMy
MDU0YTlmMTM3Ny4uMjYxZDk2NWIxZjgyNzc0ZTkyYWYwMTc2Y2ZkODI0ZDkyMjZlY2E5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRp
ZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGls
aXRpZXMuanMKQEAgLTE5NSw2ICsxOTUsNDEgQEAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5w
cm90b3R5cGUsICJpc1N1YnNldE9mIiwKICAgICB9CiB9KTsKIAorT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFNldC5wcm90b3R5cGUsICJtYXhWYWx1ZSIsCit7CisgICAgdmFsdWUoY29tcGFyYXRvcikK
KyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRlZmF1bHRDb21wYXJhdG9yKGEsIGIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhIC0gYjsKKyAgICAgICAgfQorICAgICAgICBjb21wYXJh
dG9yID0gY29tcGFyYXRvciB8fCBkZWZhdWx0Q29tcGFyYXRvcjsKKworICAgICAgICBsZXQgaXRl
cmF0b3IgPSB0aGlzLnZhbHVlcygpOworICAgICAgICBsZXQgcmVzdWx0ID0gaXRlcmF0b3IubmV4
dCgpLnZhbHVlOworICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBpdGVyYXRvcikgeworICAgICAg
ICAgICAgaWYgKGNvbXBhcmF0b3IocmVzdWx0LCB2YWx1ZSkgPCAwKQorICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9Cit9KTsKKworT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsICJ1bmlvbiIs
Cit7CisgICAgdmFsdWUob3RoZXIpCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFNl
dChvdGhlcik7CisgICAgICAgIGlmIChvdGhlciAhPT0gdGhpcykgeworICAgICAgICAgICAgZm9y
IChsZXQgaXRlbSBvZiB0aGlzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlbSk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30pOworCiBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJ0cmF2ZXJzZU5leHROb2RlIiwKIHsKICAg
ICB2YWx1ZShzdGF5V2l0aGluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xs
ZXIuanMKaW5kZXggOGIzMjE5ZDhmM2E5ODkwMTBhYjZiM2FkOGNlZmQ2YTYwNjM0M2UyZC4uYTU1
YmE4ZjAzMjg1MjZiMGViZTI5NzMxMTYyZDk2MzgyYmJmYTM0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJv
bGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCkBAIC04OCwxMiArODgsNiBAQCBXSS5TZWxlY3Rp
b25Db250cm9sbGVyID0gY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBpZiAoIXRoaXMuX2FsbG93c011bHRpcGxlU2VsZWN0aW9uKQogICAgICAgICAg
ICAgZXh0ZW5kU2VsZWN0aW9uID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuaGFzU2VsZWN0
ZWRJdGVtKGl0ZW0pKSB7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuZFNlbGVjdGlvbikKLSAgICAg
ICAgICAgICAgICB0aGlzLl9kZXNlbGVjdEFsbEFuZFNlbGVjdChpdGVtKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0gPSBp
dGVtOwogICAgICAgICB0aGlzLl9zaGlmdEFuY2hvckl0ZW0gPSBudWxsOwogCkBAIC0xMDMsNiAr
OTcsMjUgQEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xs
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRJdGVtcyhu
ZXdJdGVtcyk7CiAgICAgfQogCisgICAgc2VsZWN0SXRlbXMoaXRlbXMpCisgICAgeworICAgICAg
ICBpZiAoaXRlbXMuc2l6ZSA9PT0gMSkgeworICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0
ZW1zLmZpcnN0VmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24sICJDYW5ub3Qg
ZXh0ZW5kIHNlbGVjdGlvbiB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iKTsKKyAg
ICAgICAgaWYgKCF0aGlzLl9hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAoIXRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0gfHwgIWl0ZW1zLmhh
cyh0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtKSkKKyAgICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rl
ZEl0ZW0gPSBpdGVtcy5tYXhWYWx1ZSh0aGlzLl9jb21wYXJhdG9yKTsKKworICAgICAgICB0aGlz
Ll9zaGlmdEFuY2hvckl0ZW0gPSBudWxsOworCisgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVk
SXRlbXMoaXRlbXMpOworICAgIH0KKwogICAgIGRlc2VsZWN0SXRlbShpdGVtKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoaXRlbSwgIkludmFsaWQgaXRlbSBmb3Igc2VsZWN0aW9uLiIp
OwpAQCAtMjk3LDcgKzMxMCw3IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxl
Y3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfZGVzZWxlY3RBbGxBbmRT
ZWxlY3QoaXRlbSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRJdGVtcy5zaXpl
KQorICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkSXRlbXMuc2l6ZSAmJiAhaXRlbSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtcy5zaXplID09
PSAxICYmIHRoaXMuaGFzU2VsZWN0ZWRJdGVtKGl0ZW0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDBjMjg0YTZlMGExZjE0NDExMWU5YTI0
ODJmNmIwZTA2YmY5ODAwOGMuLjA2ZjBiZTJmNzZkNWNiNDAwZTlkMWNkZjA4Yjc3ZGNkYWYwYzM0
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwK
QEAgLTI2MSw2ICsyNjEsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNpemVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVGFibGUuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9UYWJsZUNvbHVtbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1RyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgogICAgICAgICBXSS5zaGFyZWRBcHAgPSBuZXcgV0kuVGVzdEFwcENvbnRy
b2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCmluZGV4IDcyNGNjM2VjOWRiZDA0NTg4NWNjMzBl
NWE4ODlhMGI2ODVhYzhkMTIuLjdiZTVmYzU0MjE3MzBmMjYyZTY4OWQzMDUzMzBlNGZjYzVkNjUx
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC0zOSw2ICszOSw3IEBAIFdJLkRPTVRyZWVF
bGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogCiAg
ICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlKCkgPT09IE5vZGUuRUxF
TUVOVF9OT0RFICYmICFlbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICB0aGlzLl9jYW5BZGRB
dHRyaWJ1dGVzID0gdHJ1ZTsKKwogICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX2V4cGFuZGVkQ2hpbGRyZW5MaW1pdCA9IFdJLkRPTVRyZWVFbGVtZW50Lklu
aXRpYWxDaGlsZHJlbkxpbWl0OwogICAgICAgICB0aGlzLl9icmVha3BvaW50U3RhdHVzID0gV0ku
RE9NVHJlZUVsZW1lbnQuQnJlYWtwb2ludFN0YXR1cy5Ob25lOwpAQCAtNDYsOSArNDcsOSBAQCBX
SS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVs
ZW1lbnQKICAgICAgICAgdGhpcy5fc2hvdWxkSGlnaGxpZ2h0QWZ0ZXJSZXZlYWwgPSBmYWxzZTsK
ICAgICAgICAgdGhpcy5fYm91bmRIaWdobGlnaHRBbmltYXRpb25FbmQgPSB0aGlzLl9oaWdobGln
aHRBbmltYXRpb25FbmQuYmluZCh0aGlzKTsKICAgICAgICAgdGhpcy5fc3VidHJlZUJyZWFrcG9p
bnRDb3VudCA9IDA7Ci0KICAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRBdHRyaWJ1dGVzID0gbmV3
IFNldDsKICAgICAgICAgdGhpcy5fcmVjZW50bHlNb2RpZmllZEF0dHJpYnV0ZXMgPSBuZXcgTWFw
OworICAgICAgICB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50ID0gbnVsbDsKIAogICAgICAgICBu
b2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5FbmFibGVkUHNldWRvQ2xhc3Nl
c0NoYW5nZWQsIHRoaXMuX25vZGVQc2V1ZG9DbGFzc2VzRGlkQ2hhbmdlLCB0aGlzKTsKIApAQCAt
MTA2LDYgKzEwNyw4IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICB9CiAgICAgfQogCisgICAgZ2V0IGNsb3Nl
VGFnVHJlZUVsZW1lbnQoKSB7IHJldHVybiB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50OyB9CisK
ICAgICByZXZlYWxBbmRIaWdobGlnaHQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2FuaW1h
dGluZ0hpZ2hsaWdodCkKQEAgLTUzNCw3ICs1MzcsNyBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNs
YXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgLy8gSW5z
ZXJ0IGNsb3NpbmcgdGFnIHRyZWUgZWxlbWVudC4KICAgICAgICAgdmFyIGxhc3RDaGlsZCA9IHRo
aXMuY2hpbGRyZW4ubGFzdFZhbHVlOwogICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSgpID09PSBO
b2RlLkVMRU1FTlRfTk9ERSAmJiAoIWxhc3RDaGlsZCB8fCAhbGFzdENoaWxkLl9lbGVtZW50Q2xv
c2VUYWcpKQotICAgICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZEVsZW1lbnQodGhpcy5yZXByZXNl
bnRlZE9iamVjdCwgdGhpcy5jaGlsZHJlbi5sZW5ndGgsIHRydWUpOworICAgICAgICAgICAgdGhp
cy5fY2xvc2VUYWdUcmVlRWxlbWVudCA9IHRoaXMuaW5zZXJ0Q2hpbGRFbGVtZW50KHRoaXMucmVw
cmVzZW50ZWRPYmplY3QsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoLCB0cnVlKTsKIAogICAgICAgICAv
LyBXZSB3YW50IHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIHNlbGVjdGlvbiBhbmQgdHJlZSBzY3Jv
bGwgcG9zaXRpb24gYWZ0ZXIgYSBmdWxsIHJlZnJlc2gsIGlmIHBvc3NpYmxlLgogICAgICAgICBp
ZiAoZnVsbFJlZnJlc2ggJiYgZWxlbWVudFRvU2VsZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpz
CmluZGV4IGM2ZWQ2NDI4OGM0MDQ5ZTQzYmEyMDQ0YmQ2OGYxZDhhNDAzYmE4NjAuLjQxODUzZDRl
MjljYTNkYmU3ZDM4ZGVjOGNjOGNlMzQ2ZTNhNzk1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpz
CkBAIC0xNTksNiArMTU5LDcgQEAgV0kuRE9NVHJlZU91dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0
bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbGV0IHNlbGVjdGVkTm9kZSA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA/IHRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA6IG51bGw7CisgICAgICAgIGxldCBz
ZWxlY3RlZFRyZWVFbGVtZW50cyA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudHM7CiAKICAgICAg
ICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0xODEsOCArMTgyLDI3IEBAIFdJLkRPTVRy
ZWVPdXRsaW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5UcmVlT3V0bGluZQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNlbGVjdGVkTm9kZSkKLSAg
ICAgICAgICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUoc2VsZWN0ZWROb2RlLCB0cnVlKTsK
KyAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50cy5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgLy8gVGhlIHNlbGVjdGlvbiBjYW5ub3QgYmUgcmVzdG9yZWQgZnJv
bSByZXByZXNlbnRlZCBvYmplY3RzIGFsb25lLAorICAgICAgICAvLyBzaW5jZSBhIGNsb3Npbmcg
dGFnIERPTVRyZWVFbGVtZW50IGhhcyB0aGUgc2FtZSByZXByZXNlbnRlZCBvYmplY3QKKyAgICAg
ICAgLy8gYXMgaXRzIHBhcmVudC4KKyAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudHMgPSBzZWxl
Y3RlZFRyZWVFbGVtZW50cy5tYXAoKG9sZFRyZWVFbGVtZW50KSA9PiB7CisgICAgICAgICAgICBs
ZXQgdHJlZUVsZW1lbnQgPSB0aGlzLmZpbmRUcmVlRWxlbWVudChvbGRUcmVlRWxlbWVudC5yZXBy
ZXNlbnRlZE9iamVjdCk7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQgJiYgb2xkVHJlZUVs
ZW1lbnQuaXNDbG9zZVRhZygpKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHJl
ZUVsZW1lbnQuY2xvc2VUYWdUcmVlRWxlbWVudCwgIk1pc3NpbmcgY2xvc2UgdGFnIFRyZWVFbGVt
ZW50LiIsIHRyZWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICB0cmVlRWxlbWVudCA9IHRyZWVF
bGVtZW50LmNsb3NlVGFnVHJlZUVsZW1lbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gdHJlZUVsZW1lbnQ7CisgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuc2VsZWN0VHJl
ZUVsZW1lbnRzKHNlbGVjdGVkVHJlZUVsZW1lbnRzKTsKKworICAgICAgICBpZiAoc2VsZWN0ZWRO
b2RlKSB7CisgICAgICAgICAgICBjb25zdCBvbWl0Rm9jdXMgPSB0cnVlOworICAgICAgICAgICAg
dGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZShzZWxlY3RlZE5vZGUsIG9taXRGb2N1cyk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICB1cGRhdGVTZWxlY3Rpb25BcmVhKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQuanMK
aW5kZXggODhhNmM0ZGYxYWRjZDU5NGE0OTAyYWE3N2UwNDRkMTBjYzdhODUwMC4uZGEzNGE2YjU5
NjgwZGQ1NDYwMGVmMWMyZWI2ODk0OTFhY2I3YzU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQuanMKQEAgLTQ1
LDcgKzQ1LDcgQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICB0aGlzLl9oaWRkZW4gPSBmYWxzZTsKICAgICAgICAgdGhpcy5fc2Vs
ZWN0YWJsZSA9IHRydWU7CiAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTsKLSAgICAgICAg
dGhpcy5zZWxlY3RlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlOwog
ICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gb3B0aW9ucy5oYXNDaGlsZHJlbjsKICAgICAgICAg
dGhpcy5jaGlsZHJlbiA9IFtdOwogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lID0gbnVsbDsKQEAg
LTY5LDYgKzY5LDggQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICByZXR1cm4gMTA7CiAgICAgfQogCisgICAgZ2V0IHNlbGVjdGVk
KCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7IH0KKwogICAgIGdldCBzZWxlY3RhYmxlKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9oaWRkZW4pCkBAIC00OTUsNyArNDk3LDkgQEAgV0kuVHJl
ZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBp
ZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgIXRoaXMuc2VsZWN0YWJsZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCAmJiAhdGhpcy50cmVlT3V0bGluZS5h
bGxvd3NSZXBlYXRTZWxlY3Rpb24pCisgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdHJ1ZTsKKwor
ICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ID09PSB0aGlz
ICYmICF0aGlzLnRyZWVPdXRsaW5lLmFsbG93c1JlcGVhdFNlbGVjdGlvbikKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBpZiAoIW9taXRGb2N1cykKQEAgLTUwMywxMSArNTA3LDggQEAg
V0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogCiAg
ICAgICAgIC8vIEZvY3VzaW5nIG9uIGFub3RoZXIgbm9kZSBtYXkgZGV0YWNoICJ0aGlzIiBmcm9t
IHRyZWUuCiAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IHRoaXMudHJlZU91dGxpbmU7Ci0gICAg
ICAgIGlmICghdHJlZU91dGxpbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhp
cy5zZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgIHRyZWVPdXRsaW5lLnNlbGVjdFRyZWVFbGVtZW50
SW50ZXJuYWwodGhpcywgc3VwcHJlc3NOb3RpZmljYXRpb24sIHNlbGVjdGVkQnlVc2VyKTsKKyAg
ICAgICAgaWYgKHRyZWVPdXRsaW5lKQorICAgICAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJl
ZUVsZW1lbnRJbnRlcm5hbCh0aGlzLCBzdXBwcmVzc05vdGlmaWNhdGlvbiwgc2VsZWN0ZWRCeVVz
ZXIpOwogICAgIH0KIAogICAgIHJldmVhbEFuZFNlbGVjdChvbWl0Rm9jdXMsIHNlbGVjdGVkQnlV
c2VyLCBzdXBwcmVzc05vdGlmaWNhdGlvbikKQEAgLTUyMSw3ICs1MjIsNyBAQCBXSS5UcmVlRWxl
bWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICgh
dGhpcy50cmVlT3V0bGluZSB8fCAhdGhpcy5zZWxlY3RlZCkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3Nl
bGVjdGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1l
bnRJbnRlcm5hbChudWxsLCBzdXBwcmVzc05vdGlmaWNhdGlvbik7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IGNjYzkxMTUxZjkxNjFlYTllZTNlNTJiYzc0MmEz
YTU4M2Y0NWRkZTQuLmUwNmUxZDZkYTQ3ZTZkY2RlNmUyOGUyMDY2NWQzNTEzZDNmNjhmMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVP
dXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVPdXRsaW5lLmpzCkBAIC0xNTYsOSArMTU2LDEwIEBAIFdJLlRyZWVPdXRsaW5lID0gY2xh
c3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHNldCBzZWxlY3RlZFRyZWVF
bGVtZW50KHRyZWVFbGVtZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRyZWVFbGVtZW50KQotICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5zZWxlY3RJdGVtKHRoaXMub2JqZWN0
Rm9yU2VsZWN0aW9uKHRyZWVFbGVtZW50KSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKHRy
ZWVFbGVtZW50KSB7CisgICAgICAgICAgICBsZXQgZXh0ZW5kU2VsZWN0aW9uID0gdGhpcy5hbGxv
d3NNdWx0aXBsZVNlbGVjdGlvbjsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbkNvbnRyb2xs
ZXIuc2VsZWN0SXRlbSh0aGlzLm9iamVjdEZvclNlbGVjdGlvbih0cmVlRWxlbWVudCksIGV4dGVu
ZFNlbGVjdGlvbik7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9u
Q29udHJvbGxlci5kZXNlbGVjdEFsbCgpOwogICAgIH0KIApAQCAtNzExLDYgKzcxMiwyNCBAQCBX
SS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKICAgICB9CiAKKyAgICBzZWxlY3RU
cmVlRWxlbWVudHModHJlZUVsZW1lbnRzKQorICAgIHsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVu
dHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0cmVlRWxlbWVu
dHMubGVuZ3RoID09PSAxKSB7CisgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQg
PSB0cmVlRWxlbWVudHNbMF07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiQ2Fubm90
IHNlbGVjdCBUcmVlRWxlbWVudHMgd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb24gZGlzYWJsZWQuIik7
CisgICAgICAgIGlmICghdGhpcy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQgc2VsZWN0YWJsZU9iamVjdHMgPSB0cmVlRWxlbWVudHMu
bWFwKCh4KSA9PiB0aGlzLm9iamVjdEZvclNlbGVjdGlvbih4KSk7CisgICAgICAgIHRoaXMuX3Nl
bGVjdGlvbkNvbnRyb2xsZXIuc2VsZWN0SXRlbXMobmV3IFNldChzZWxlY3RhYmxlT2JqZWN0cykp
OworICAgIH0KKwogICAgIGdldCBzZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuIHx8ICF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZmQwNzUwNTBiOTRlZTJhNjA5YmNkODdiNDA5NTQyNjM0ZWFkOTIxMy4uOGE3ODk1
YmY2YWM3MDMyMzI3MDU4YjhjN2UzNWI5NmIyNDBlZTZmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDE5LTAzLTI1ICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBFbGVtZW50cyB0YWI6IG11bHRpcGxlIHNlbGVjdGlvbiBsb3N0IGFm
dGVyIG5hdmlnYXRpbmcgdG8gYW5vdGhlciB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3
MDkzOTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxlY3Rpb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGlu
ZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgIEFkZCBUcmVlT3V0bGluZSB0ZXN0cyBm
b3Igc2luZ2xlIGFuZCBtdWx0aXBsZSBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
dW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWw6CisgICAgICAgIEFkZCB0ZXN0cyBmb3Ig
bmV3IFNldCB1dGlsaXR5IG1ldGhvZHMuCisKIDIwMTktMDMtMjUgIFNoYXduIFJvYmVydHMgIDxz
cm9iZXJ0c0BhcHBsZS5jb20+CiAKICAgICAgICAgcGVyZm9ybWFuY2UtYXBpL3BlcmZvcm1hbmNl
LW9ic2VydmVyLXBlcmlvZGljLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91
dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjJiYjFjZTI5YWE1OWM3
YzQ0MjhjYzlhMGU0YjI5ZTY0ZTkzNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQzIEBACitUZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2VsZWN0aW9uLgor
CisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVHJlZU91dGxpbmUuU2VsZWN0aW9uCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogVHJlZU91dGxpbmUuY29uc3RydWN0b3IKK1BBU1M6IHNlbGVjdGVkVHJl
ZUVsZW1lbnQgc2hvdWxkIGJlIG51bGwuCitQQVNTOiBzZWxlY3RlZFRyZWVFbGVtZW50cyBzaG91
bGQgYmUgZW1wdHkuCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBzaG91bGQgYmUgZmFs
c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGluZS5GaW5kVHJlZUVsZW1lbnQK
K1BBU1M6IFNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRlZCBvYmplY3QuCitQ
QVNTOiBUcmVlRWxlbWVudCBzaG91bGQgaGF2ZSBjb3JyZWN0IHJlcHJlc2VudGVkIG9iamVjdC4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdGVkVHJlZUVsZW1lbnQK
K1NlbGVjdGluZyBUcmVlRWxlbWVudCAiSXRlbSAxIi4KK1BBU1M6IFRyZWVPdXRsaW5lIHNob3Vs
ZCBoYXZlIHNlbGVjdGVkIFRyZWVFbGVtZW50ICJJdGVtIDEiLgorUEFTUzogVHJlZUVsZW1lbnQg
Ikl0ZW0gMSIgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSB0cnVlLgorUEFTUzogT3RoZXIgVHJlZUVs
ZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitTZWxlY3RpbmcgVHJlZUVsZW1l
bnQgIkl0ZW0gMiIuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVl
RWxlbWVudCAiSXRlbSAyIi4KK1BBU1M6IFRyZWVFbGVtZW50ICJJdGVtIDIiIHNob3VsZCBoYXZl
IHNlbGVjdGVkID0gdHJ1ZS4KK1BBU1M6IE90aGVyIFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBz
ZWxlY3RlZCA9IGZhbHNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVHJlZU91dGxpbmUuQWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24KK1BBU1M6IGFsbG93c011bHRpcGxlU2VsZWN0aW9uIGVuYWJs
ZWQuCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBkaXNhYmxlZC4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cworU2VsZWN0aW5nIFRy
ZWVFbGVtZW50cyBbIkl0ZW0gMSIsIkl0ZW0gMiJdLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxk
IGhhdmUgY29ycmVjdCBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCitQQVNTOiBUcmVlRWxlbWVudHMg
WyJJdGVtIDEiLCJJdGVtIDIiXSBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBB
bGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitQQVNT
OiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSAyIi4K
KworU2VsZWN0aW5nIFRyZWVFbGVtZW50cyBbIkl0ZW0gMyIsIkl0ZW0gNCJdLgorUEFTUzogVHJl
ZU91dGxpbmUgc2hvdWxkIGhhdmUgY29ycmVjdCBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCitQQVNT
OiBUcmVlRWxlbWVudHMgWyJJdGVtIDMiLCJJdGVtIDQiXSBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9
IHRydWUuCitQQVNTOiBBbGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVk
ID0gZmFsc2UuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxl
bWVudCAiSXRlbSA0Ii4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVj
dFRyZWVFbGVtZW50cy5NdWx0aXBsZVNlbGVjdGlvbkRpc2FibGVkCitQQVNTOiBTaG91bGQgaGF2
ZSBubyBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGI5ZjBhYjc0YjdjYTVhMjMxYTk3OTY1NTg1Mzg1MTRkMjQ0NmNmMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1v
dXRsaW5lLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTg0IEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCk7CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgi
VHJlZU91dGxpbmUuU2VsZWN0aW9uIik7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVUcmVlT3V0bGlu
ZShvYmplY3RzID0gW10pIHsKKyAgICAgICAgZnVuY3Rpb24gYXBwZW5kT2JqZWN0KHBhcmVudCwg
b2JqZWN0KSB7CisgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHt9OworICAgICAgICAgICAgaWYg
KG9iamVjdC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBvcHRpb25zLmhhc0NoaWxkcmVuID0g
dHJ1ZTsKKyAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IG5ldyBXSS5UcmVlRWxlbWVudChv
YmplY3QudGl0bGUsIG9iamVjdCwgb3B0aW9ucyk7CisgICAgICAgICAgICBwYXJlbnQuYXBwZW5k
Q2hpbGQodHJlZUVsZW1lbnQpOworCisgICAgICAgICAgICBpZiAoIW9iamVjdC5jaGlsZHJlbikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9m
IG9iamVjdC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBhZGRPYmplY3QodHJlZUVsZW1lbnQs
IGNoaWxkKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IG5ldyBXSS5U
cmVlT3V0bGluZTsKKyAgICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iamVjdHMpCisgICAgICAg
ICAgICBhcHBlbmRPYmplY3QodHJlZU91dGxpbmUsIG9iamVjdCk7CisKKyAgICAgICAgcmV0dXJu
IHRyZWVPdXRsaW5lOworICAgIH0KKworICAgIGZ1bmN0aW9uIGV4cGVjdFNlbGVjdGVkVHJlZUVs
ZW1lbnQodHJlZU91dGxpbmUsIHRyZWVFbGVtZW50KSB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCwgdHJlZUVsZW1lbnQs
IGBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiJHt0cmVlRWxl
bWVudC50aXRsZX0iLmApOworICAgIH0KKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIlRyZWVPdXRsaW5lLmNvbnN0cnVjdG9yIiwKKyAgICAgICAgdGVzdCgpIHsKKyAg
ICAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKCk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVF
bGVtZW50LCAic2VsZWN0ZWRUcmVlRWxlbWVudCBzaG91bGQgYmUgbnVsbC4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudHMubGVuZ3RoLCAwLCAic2VsZWN0ZWRUcmVlRWxlbWVudHMgc2hvdWxkIGJlIGVtcHR5LiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh0cmVlT3V0bGluZS5hbGxv
d3NNdWx0aXBsZVNlbGVjdGlvbiwgImFsbG93c011bHRpcGxlU2VsZWN0aW9uIHNob3VsZCBiZSBm
YWxzZS4iKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLkZp
bmRUcmVlRWxlbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiRmluZCBUcmVlRWxlbWVudCBm
b3IgZ2l2ZW4gcmVwcmVzZW50ZWQgb2JqZWN0LiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAg
ICAgICBjb25zdCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxl
OiAiSXRlbSAxIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAg
ICAgICAgICAge3RpdGxlOiAiSXRlbSAzIn0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAg
ICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVUcmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMp
OworICAgICAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdHJlZU91dGxpbmUuZmluZFRyZWVFbGVt
ZW50KHJlcHJlc2VudGVkT2JqZWN0c1swXSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdCh0cmVlRWxlbWVudCwgIlNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXBy
ZXNlbnRlZCBvYmplY3QuIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
dHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QsIHJlcHJlc2VudGVkT2JqZWN0c1swXSwgIlRy
ZWVFbGVtZW50IHNob3VsZCBoYXZlIGNvcnJlY3QgcmVwcmVzZW50ZWQgb2JqZWN0LiIpCisKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RlZFRyZWVFbGVt
ZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTZWxlY3QgYSB0cmVlIGVsZW1lbnQsIHRoZW4g
c2VsZWN0IGEgZGlmZmVyZW50IHRyZWUgZWxlbWVudC4iLAorICAgICAgICB0ZXN0KCkgeworICAg
ICAgICAgICAgZnVuY3Rpb24gdHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50KHRyZWVFbGVtZW50KSB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYFNlbGVjdGluZyBUcmVlRWxlbWVu
dCAiJHt0cmVlRWxlbWVudC50aXRsZX0iLmApOworICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5l
LnNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKKworICAgICAgICAgICAgICAgIGV4
cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQodHJlZU91dGxpbmUsIHRyZWVFbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodHJlZUVsZW1lbnQuc2VsZWN0ZWQs
IGBUcmVlRWxlbWVudCAiJHt0cmVlRWxlbWVudC50aXRsZX0iIHNob3VsZCBoYXZlIHNlbGVjdGVk
ID0gdHJ1ZS5gKTsKKworICAgICAgICAgICAgICAgIGxldCBvdGhlclRyZWVFbGVtZW50c0FyZURl
c2VsZWN0ZWQgPSB0cmVlT3V0bGluZS5jaGlsZHJlbi5ldmVyeSgoeCkgPT4geCA9PT0gdHJlZUVs
ZW1lbnQgfHwgIXguc2VsZWN0ZWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChvdGhlclRyZWVFbGVtZW50c0FyZURlc2VsZWN0ZWQsICJPdGhlciBUcmVlRWxlbWVu
dHMgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSBmYWxzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgY29uc3QgcmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0
aXRsZTogIkl0ZW0gMSJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAg
ICAgICAgICAgXTsKKworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJlZU91
dGxpbmUocmVwcmVzZW50ZWRPYmplY3RzKTsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRy
ZWVFbGVtZW50KHRyZWVPdXRsaW5lLmNoaWxkcmVuWzBdKTsKKyAgICAgICAgICAgIHRyaWdnZXJT
ZWxlY3RUcmVlRWxlbWVudCh0cmVlT3V0bGluZS5jaGlsZHJlblsxXSk7CisKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5BbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gZW5hYmxlIG11bHRpcGxl
IHNlbGVjdGlvbi4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRyZWVPdXRs
aW5lID0gY3JlYXRlVHJlZU91dGxpbmUoKTsKKworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb24gZW5hYmxlZC4iKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93
c011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEZhbHNlKHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb24gZGlzYWJsZWQuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1l
bnRzKHRyZWVPdXRsaW5lLCB0cmVlRWxlbWVudHMpIHsKKyAgICAgICAgbGV0IGRpc3BsYXlUZXh0
ID0gYCR7dHJlZUVsZW1lbnRzLm1hcCgoeCkgPT4gYCIke3gudGl0bGV9ImApfWA7CisKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coYFNlbGVjdGluZyBUcmVlRWxlbWVudHMgWyR7ZGlzcGxheVRl
eHR9XS5gKTsKKyAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVFbGVt
ZW50cyk7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodHJlZU91
dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMsIHRyZWVFbGVtZW50cywgIlRyZWVPdXRsaW5lIHNo
b3VsZCBoYXZlIGNvcnJlY3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLiIpOworCisgICAgICAgIGxl
dCB0cmVlRWxlbWVudHNTZWxlY3RlZCA9IHRyZWVFbGVtZW50cy5ldmVyeSgoeCkgPT4geC5zZWxl
Y3RlZCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0cmVlRWxlbWVudHNTZWxl
Y3RlZCwgYFRyZWVFbGVtZW50cyBbJHtkaXNwbGF5VGV4dH1dIHNob3VsZCBoYXZlIHNlbGVjdGVk
ID0gdHJ1ZS5gKTsKKworICAgICAgICBsZXQgb3RoZXJUcmVlRWxlbWVudHNOb3RTZWxlY3RlZCA9
IHRyZWVPdXRsaW5lLmNoaWxkcmVuLmV2ZXJ5KCh4KSA9PiAheC5zZWxlY3RlZCB8fCB0cmVlRWxl
bWVudHMuaW5jbHVkZXMoeCkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQob3Ro
ZXJUcmVlRWxlbWVudHNOb3RTZWxlY3RlZCwgIkFsbCBvdGhlciBUcmVlRWxlbWVudHMgc2hvdWxk
IGhhdmUgc2VsZWN0ZWQgPSBmYWxzZS4iKTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlNlbGVjdCB0d28gdHJlZSBlbGVtZW50cywgdGhlbiBzZWxlY3Qg
dHdvIGRpZmZlcmVudCB0cmVlIGVsZW1lbnRzLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAg
ICAgICBjb25zdCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxl
OiAiSXRlbSAxIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAg
ICAgICAgICAge3RpdGxlOiAiSXRlbSAzIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRl
bSA0In0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBj
cmVhdGVUcmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgdHJlZU91
dGxpbmUuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlOworCisgICAgICAgICAgICBsZXQg
Y2hpbGRyZW4gPSB0cmVlT3V0bGluZS5jaGlsZHJlbjsKKworICAgICAgICAgICAgdHJpZ2dlclNl
bGVjdFRyZWVFbGVtZW50cyh0cmVlT3V0bGluZSwgW2NoaWxkcmVuWzBdLCBjaGlsZHJlblsxXV0p
OworICAgICAgICAgICAgZXhwZWN0U2VsZWN0ZWRUcmVlRWxlbWVudCh0cmVlT3V0bGluZSwgY2hp
bGRyZW5bMV0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAg
ICAgICAgIHRyaWdnZXJTZWxlY3RUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIFtjaGlsZHJlblsy
XSwgY2hpbGRyZW5bM11dKTsKKyAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQo
dHJlZU91dGxpbmUsIGNoaWxkcmVuWzNdKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIlRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cy5NdWx0aXBsZVNlbGVjdGlvbkRpc2Fi
bGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTZWxlY3QgbXVsdGlwbGUgdHJlZSBlbGVtZW50
cyB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iLAorICAgICAgICB0ZXN0KCkgewor
ICAgICAgICAgICAgY29uc3QgcmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAg
IHt0aXRsZTogIkl0ZW0gMSJ9LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAor
ICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3JlYXRlVHJl
ZU91dGxpbmUocmVwcmVzZW50ZWRPYmplY3RzKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFs
bG93c011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2U7CisKKyAgICAgICAgICAgIHRyZWVPdXRsaW5l
LnNlbGVjdFRyZWVFbGVtZW50cyh0cmVlT3V0bGluZS5jaGlsZHJlbik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnRz
Lmxlbmd0aCwgMCwgIlNob3VsZCBoYXZlIG5vIHNlbGVjdGVkIFRyZWVFbGVtZW50cy4iKQorCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
TG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2VsZWN0
aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXggZjg0
NDYzOTkxOTZjNmNjZTVjOTE0ZWY5YjQ1NTYxZTViNmM2NjM0Ni4uNzVmYWE1ODUwNjlkMTVmZTlk
M2FiZmQ2MGE2Nzk5Zjc2NWRmYmFjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKQEAgLTM3LDcg
KzM3LDI3IEBAIEdpdmVuIGEgU2V0IHdpdGggdmFsdWVzIFsxLDIsM10sIGFuZCBhbm90aGVyIFNl
dCB3aXRoIHZhbHVlcyBbMiwzLDRdOgogUEFTUzogU2V0IGRpZmZlcmVuY2Ugc2hvdWxkIGJlIFsx
XS4KIAogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogU2V0LnByb3RvdHlwZS51bmlvbgorR2l2ZW4g
YSBTZXQgd2l0aCB2YWx1ZXMgW10sIGFuZCBhbm90aGVyIFNldCB3aXRoIHZhbHVlcyBbXToKK1BB
U1M6IFNldCB1bmlvbiBzaG91bGQgYmUgW10uCisKK0dpdmVuIGEgU2V0IHdpdGggdmFsdWVzIFsx
LDIsM10sIGFuZCBhbm90aGVyIFNldCB3aXRoIHZhbHVlcyBbXToKK1BBU1M6IFNldCB1bmlvbiBz
aG91bGQgYmUgWzEsMiwzXS4KKworR2l2ZW4gYSBTZXQgd2l0aCB2YWx1ZXMgW10sIGFuZCBhbm90
aGVyIFNldCB3aXRoIHZhbHVlcyBbMSwyLDNdOgorUEFTUzogU2V0IHVuaW9uIHNob3VsZCBiZSBb
MSwyLDNdLgorCitHaXZlbiBhIFNldCB3aXRoIHZhbHVlcyBbMSwyLDNdLCBhbmQgYW5vdGhlciBT
ZXQgd2l0aCB2YWx1ZXMgWzIsMyw0XToKK1BBU1M6IFNldCB1bmlvbiBzaG91bGQgYmUgWzEsMiwz
LDRdLgorCisKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTZXQucHJvdG90eXBlLmZpcnN0VmFsdWUK
IFBBU1M6IFNldCB3aXRoIHZhbHVlcyBbXSBzaG91bGQgaGF2ZSBmaXJzdFZhbHVlIGVxdWFsIHRv
IHVuZGVmaW5lZC4KIFBBU1M6IFNldCB3aXRoIHZhbHVlcyBbMSwyLDNdIHNob3VsZCBoYXZlIGZp
cnN0VmFsdWUgZXF1YWwgdG8gMS4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNldC5wcm90b3R5
cGUubWF4VmFsdWUKK1BBU1M6IFNldCB3aXRoIHZhbHVlcyBbXSBzaG91bGQgaGF2ZSBtYXhpbXVt
IHZhbHVlIHVuZGVmaW5lZC4KK1BBU1M6IFNldCB3aXRoIHZhbHVlcyBbMV0gc2hvdWxkIGhhdmUg
bWF4aW11bSB2YWx1ZSAxLgorUEFTUzogU2V0IHdpdGggdmFsdWVzIFsxLDIsMF0gc2hvdWxkIGhh
dmUgbWF4aW11bSB2YWx1ZSAyLgorUEFTUzogU2V0IHdpdGggdmFsdWVzIFtiLGMsYV0gc2hvdWxk
IGhhdmUgbWF4aW11bSB2YWx1ZSBjLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwKaW5kZXggNTAzMzI5MDAwMjIwNmFlOTMxYWRh
ZGQ3OTU2ZmQ4NjdlNDdiNjc1YS4uY2UzMzM4ODJmYTBlYmNjNTk5ZDcxY2ZhMjMwNzdlMTcyNGY4
NzA4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0
aWxpdGllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11
dGlsaXRpZXMuaHRtbApAQCAtODEsMzkgKzgxLDc5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIlNldC5wcm90b3R5cGUuZGlmZmVyZW5j
ZSIsCiAgICAgICAgIHRlc3QoKSB7Ci0gICAgICAgICAgICBmdW5jdGlvbiB0ZXN0RGlmZmVyZW5j
ZSh7YVZhbHVlcywgYlZhbHVlcywgZXhwZWN0ZWREaWZmZXJlbmNlfSkgeworICAgICAgICAgICAg
ZnVuY3Rpb24gdGVzdERpZmZlcmVuY2Uoe2FWYWx1ZXMsIGJWYWx1ZXMsIGV4cGVjdGVkfSkgewog
ICAgICAgICAgICAgICAgIGxldCBhID0gbmV3IFNldChhVmFsdWVzKTsKICAgICAgICAgICAgICAg
ICBsZXQgYiA9IG5ldyBTZXQoYlZhbHVlcyk7CiAKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZyhgR2l2ZW4gYSBTZXQgd2l0aCB2YWx1ZXMgWyR7YVZhbHVlc31dLCBhbmQgYW5vdGhl
ciBTZXQgd2l0aCB2YWx1ZXMgWyR7YlZhbHVlc31dOmApOwogCi0gICAgICAgICAgICAgICAgbGV0
IGRpZmZlcmVuY2UgPSBhLmRpZmZlcmVuY2UoYik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KGRpZmZlcmVuY2UuZXF1YWxzKG5ldyBTZXQoZXhwZWN0ZWREaWZmZXJl
bmNlKSksIGBTZXQgZGlmZmVyZW5jZSBzaG91bGQgYmUgWyR7ZXhwZWN0ZWREaWZmZXJlbmNlfV0u
YCk7CisgICAgICAgICAgICAgICAgbGV0IGFjdHVhbCA9IGEuZGlmZmVyZW5jZShiKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYWN0dWFsLmVxdWFscyhuZXcgU2V0
KGV4cGVjdGVkKSksIGBTZXQgZGlmZmVyZW5jZSBzaG91bGQgYmUgWyR7ZXhwZWN0ZWR9XS5gKTsK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIHRlc3REaWZmZXJlbmNlKHsKICAgICAgICAgICAgICAgICBhVmFsdWVzOiBb
XSwKICAgICAgICAgICAgICAgICBiVmFsdWVzOiBbXSwKLSAgICAgICAgICAgICAgICBleHBlY3Rl
ZERpZmZlcmVuY2U6IFtdLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBbXSwKICAgICAgICAg
ICAgIH0pOwogCiAgICAgICAgICAgICB0ZXN0RGlmZmVyZW5jZSh7CiAgICAgICAgICAgICAgICAg
YVZhbHVlczogWzEsIDIsIDNdLAogICAgICAgICAgICAgICAgIGJWYWx1ZXM6IFtdLAotICAgICAg
ICAgICAgICAgIGV4cGVjdGVkRGlmZmVyZW5jZTogWzEsIDIsIDNdLAorICAgICAgICAgICAgICAg
IGV4cGVjdGVkOiBbMSwgMiwgM10sCiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgdGVz
dERpZmZlcmVuY2UoewogICAgICAgICAgICAgICAgIGFWYWx1ZXM6IFtdLAogICAgICAgICAgICAg
ICAgIGJWYWx1ZXM6IFsxLCAyLCAzXSwKLSAgICAgICAgICAgICAgICBleHBlY3RlZERpZmZlcmVu
Y2U6IFtdLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBbXSwKICAgICAgICAgICAgIH0pOwog
CiAgICAgICAgICAgICB0ZXN0RGlmZmVyZW5jZSh7CiAgICAgICAgICAgICAgICAgYVZhbHVlczog
WzEsIDIsIDNdLAogICAgICAgICAgICAgICAgIGJWYWx1ZXM6IFsyLCAzLCA0XSwKLSAgICAgICAg
ICAgICAgICBleHBlY3RlZERpZmZlcmVuY2U6IFsxXSwKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZDogWzFdLAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlNldC5wcm90b3R5cGUudW5pb24iLAorICAg
ICAgICB0ZXN0KCkgeworICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFVuaW9uKHthVmFsdWVzLCBi
VmFsdWVzLCBleHBlY3RlZH0pIHsKKyAgICAgICAgICAgICAgICBsZXQgYSA9IG5ldyBTZXQoYVZh
bHVlcyk7CisgICAgICAgICAgICAgICAgbGV0IGIgPSBuZXcgU2V0KGJWYWx1ZXMpOworCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYEdpdmVuIGEgU2V0IHdpdGggdmFsdWVzIFsk
e2FWYWx1ZXN9XSwgYW5kIGFub3RoZXIgU2V0IHdpdGggdmFsdWVzIFske2JWYWx1ZXN9XTpgKTsK
KworICAgICAgICAgICAgICAgIGxldCBhY3R1YWwgPSBhLnVuaW9uKGIpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChhY3R1YWwuZXF1YWxzKG5ldyBTZXQoZXhwZWN0
ZWQpKSwgYFNldCB1bmlvbiBzaG91bGQgYmUgWyR7ZXhwZWN0ZWR9XS5gKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHRlc3RVbmlvbih7CisgICAgICAgICAgICAgICAgYVZhbHVlczogW10sCisgICAgICAgICAgICAg
ICAgYlZhbHVlczogW10sCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFtdLAorICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIHRlc3RVbmlvbih7CisgICAgICAgICAgICAgICAgYVZhbHVl
czogWzEsIDIsIDNdLAorICAgICAgICAgICAgICAgIGJWYWx1ZXM6IFtdLAorICAgICAgICAgICAg
ICAgIGV4cGVjdGVkOiBbMSwgMiwgM10sCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
dGVzdFVuaW9uKHsKKyAgICAgICAgICAgICAgICBhVmFsdWVzOiBbXSwKKyAgICAgICAgICAgICAg
ICBiVmFsdWVzOiBbMSwgMiwgM10sCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFsxLCAyLCAz
XSwKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0ZXN0VW5pb24oeworICAgICAgICAg
ICAgICAgIGFWYWx1ZXM6IFsxLCAyLCAzXSwKKyAgICAgICAgICAgICAgICBiVmFsdWVzOiBbMiwg
MywgNF0sCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFsxLCAyLCAzLCA0XSwKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfSk7CkBAIC0xMzAsNiArMTcwLDIyIEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJTZXQucHJvdG90eXBlLm1heFZhbHVlIiwKKyAgICAgICAgdGVzdCgpIHsK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RNYXhWYWx1ZSh2YWx1ZXMsIGNvbXBhcmF0b3IpIHsK
KyAgICAgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldCh2YWx1ZXMpOworICAgICAgICAgICAg
ICAgIGNvbnN0IGV4cGVjdGVkTWF4ID0gdmFsdWVzLnNvcnQoY29tcGFyYXRvcikubGFzdFZhbHVl
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc2V0Lm1heFZhbHVl
KGNvbXBhcmF0b3IpLCBleHBlY3RlZE1heCwgYFNldCB3aXRoIHZhbHVlcyBbJHtBcnJheS5mcm9t
KHNldCl9XSBzaG91bGQgaGF2ZSBtYXhpbXVtIHZhbHVlICR7ZXhwZWN0ZWRNYXh9LmApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0TWF4VmFsdWUoW10pOworICAgICAgICAgICAg
dGVzdE1heFZhbHVlKFsxXSk7CisgICAgICAgICAgICB0ZXN0TWF4VmFsdWUoWzEsIDIsIDBdKTsK
KyAgICAgICAgICAgIHRlc3RNYXhWYWx1ZShbImIiLCAiYyIsICJhIl0sIChhLCBiKSA9PiBhLmxv
Y2FsZUNvbXBhcmUoYikpOworICAgICAgICB9CisgICAgfSk7CisKICAgICBzdWl0ZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366063</attachid>
            <date>2019-03-27 01:12:01 -0700</date>
            <delta_ts>2019-04-05 17:55:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192681-20190327011159.patch</filename>
            <type>text/plain</type>
            <size>22461</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA5
N2MyNzdmMGY2NGY5ZGIxMTAyYzhkOTZjN2RmMTJjZDA5YjZmOGE1Li42MzUwZDRmNGU1MzczMzAw
MjI5Y2UwMWJjMDkyZTY3NzA3MTY2OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOS0wMy0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rp
b24gbG9zdCBhZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAgKGdl
dCBsZXQpOgorICAgICAgICAoZ2V0IHJldHVybik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanM6CisgICAgICAgIChXSS5TZWxlY3Rp
b25Db250cm9sbGVyLnByb3RvdHlwZS5zZWxlY3RJdGVtKToKKyAgICAgICAgU2ltcGxpZnkgaW50
ZXJuYWwgbG9naWMgYnkgcmVtb3ZpbmcgYW4gZWFybHkgcmV0dXJuLgorICAgICAgICAoV0kuU2Vs
ZWN0aW9uQ29udHJvbGxlci5wcm90b3R5cGUuc2VsZWN0SXRlbXMpOgorICAgICAgICBQcm92aWRl
IGEgbWVhbnMgdG8gc2VsZWN0IG11bHRpcGxlIGl0ZW1zIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4K
KyAgICAgICAgSWYgYF9sYXN0U2VsZWN0ZWRJdGVtYCBpcyBub3QgaW4gdGhlIGl0ZW1zIHRvIHNl
bGVjdCwgdGhlIGxhc3QKKyAgICAgICAgaXRlbSBiZWluZyBzZWxlY3RlZCB3aWxsIGJlY29tZSB0
aGUgbGFzdCBzZWxlY3RlZCBpdGVtLgorCisgICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVy
LnByb3RvdHlwZS5fZGVzZWxlY3RBbGxBbmRTZWxlY3QpOgorICAgICAgICBEcml2ZS1ieSBmaXg6
IGNvcnJlY3QgYSBsb2dpYyBlcnJvci4gSWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVkLCB0aGUgaXRl
bQorICAgICAgICBwYXNzZWQgYXMgYW4gYXJndW1lbnQgc2hvdWxkIHN0aWxsIGJlY29tZSBzZWxl
Y3RlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5ET01UcmVl
RWxlbWVudCk6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGNsb3Nl
VGFnVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl91
cGRhdGVDaGlsZHJlbik6CisgICAgICAgIE1ha2UgdGhlIGNsb3NlIHRhZyBUcmVlRWxlbWVudCBh
dmFpbGFibGUgZnJvbSB0aGUgb3BlbiB0YWcgVHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuRE9NVHJlZU91
dGxpbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIFJlc3RvcmUgc2VsZWN0ZWQgVHJlZUVs
ZW1lbnRzIGFmdGVyIHVwZGF0aW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9U
cmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3RU
cmVlRWxlbWVudHMpOgorCiAyMDE5LTAzLTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTb3VyY2VzOiBmaXggdHlwbyBpbiBDU1Mg
c2VsZWN0b3IgdG8gYWx3YXlzIHNob3cgYWRkIGJyZWFrcG9pbnQgYnV0dG9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmlu
ZGV4IDE3NGZhYWJmYWQzYjg4MGMzMDQ3NTFlY2MwZjVjMjA1NGE5ZjEzNzcuLjYwNWUzOTQzMzBh
Mjk5M2FkOGJmNGI1MTA3YjZmMDlkN2YwZjY1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC0xNjYsNiArMTY2
LDE3IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXQucHJvdG90eXBlLCAiZmlyc3RWYWx1ZSIs
CiAgICAgfQogfSk7CiAKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXQucHJvdG90eXBlLCAibGFz
dFZhbHVlIiwKK3sKKyAgICBnZXQoKQorICAgIHsKKyAgICAgICAgbGV0IGl0ZXJhdG9yID0gdGhp
cy52YWx1ZXMoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNpemUgLSAxOyAr
K2kpCisgICAgICAgICAgICBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgIHJldHVybiBpdGVyYXRv
ci5uZXh0KCkudmFsdWU7CisgICAgfQorfSk7CisKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXQu
cHJvdG90eXBlLCAiaW50ZXJzZWN0cyIsCiB7CiAgICAgdmFsdWUob3RoZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rp
b25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcwppbmRleCA4YjMyMTlkOGYzYTk4OTAxMGFi
NmIzYWQ4Y2VmZDZhNjA2MzQzZTJkLi5hZjVhZWEyODcwN2FhYTYyZTI3N2YyNzc2NzRhYzk1M2E4
NzcwZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKQEAg
LTg4LDEyICs4OCw2IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxlY3Rpb25D
b250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghdGhpcy5fYWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBleHRlbmRTZWxlY3Rpb24gPSBmYWxzZTsKIAot
ICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RlZEl0ZW0oaXRlbSkpIHsKLSAgICAgICAgICAgIGlm
ICghZXh0ZW5kU2VsZWN0aW9uKQotICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2VsZWN0QWxsQW5k
U2VsZWN0KGl0ZW0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAg
dGhpcy5fbGFzdFNlbGVjdGVkSXRlbSA9IGl0ZW07CiAgICAgICAgIHRoaXMuX3NoaWZ0QW5jaG9y
SXRlbSA9IG51bGw7CiAKQEAgLTEwMyw2ICs5NywyMyBAQCBXSS5TZWxlY3Rpb25Db250cm9sbGVy
ID0gY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0
aGlzLl91cGRhdGVTZWxlY3RlZEl0ZW1zKG5ld0l0ZW1zKTsKICAgICB9CiAKKyAgICBzZWxlY3RJ
dGVtcyhpdGVtcykKKyAgICB7CisgICAgICAgIGlmICghaXRlbXMuc2l6ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hbGxvd3NNdWx0aXBsZVNl
bGVjdGlvbiB8fCBpdGVtcy5zaXplID09PSAxLCAiQ2Fubm90IHNlbGVjdCBtdWx0aXBsZSBpdGVt
cyB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iKTsKKyAgICAgICAgaWYgKCF0aGlz
Ll9hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBpZiAoIXRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0gfHwgIWl0ZW1zLmhhcyh0aGlzLl9sYXN0U2Vs
ZWN0ZWRJdGVtKSkKKyAgICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0gPSBpdGVtcy5s
YXN0VmFsdWU7CisKKyAgICAgICAgdGhpcy5fc2hpZnRBbmNob3JJdGVtID0gbnVsbDsKKworICAg
ICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEl0ZW1zKGl0ZW1zKTsKKyAgICB9CisKICAgICBkZXNl
bGVjdEl0ZW0oaXRlbSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZW0sICJJbnZh
bGlkIGl0ZW0gZm9yIHNlbGVjdGlvbi4iKTsKQEAgLTI5Nyw3ICszMDgsNyBAQCBXSS5TZWxlY3Rp
b25Db250cm9sbGVyID0gY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciBleHRlbmRzIFdJLk9iamVj
dAogCiAgICAgX2Rlc2VsZWN0QWxsQW5kU2VsZWN0KGl0ZW0pCiAgICAgewotICAgICAgICBpZiAo
IXRoaXMuX3NlbGVjdGVkSXRlbXMuc2l6ZSkKKyAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZEl0
ZW1zLnNpemUgJiYgIWl0ZW0pCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHRo
aXMuX3NlbGVjdGVkSXRlbXMuc2l6ZSA9PT0gMSAmJiB0aGlzLmhhc1NlbGVjdGVkSXRlbShpdGVt
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRl
eCAwYzI4NGE2ZTBhMWYxNDQxMTFlOWEyNDgyZjZiMGUwNmJmOTgwMDhjLi4wNmYwYmUyZjc2ZDVj
YjQwMGU5ZDFjZGYwOGI3N2RjZGFmMGMzNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0yNjEsNiArMjYxLDggQEAKICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvUmVzaXplci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1RhYmxlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVGFibGVDb2x1bW4u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlRWxlbWVudC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4K
IAogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgV0kuc2hhcmVk
QXBwID0gbmV3IFdJLlRlc3RBcHBDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRl
eCA3MjRjYzNlYzlkYmQwNDU4ODVjYzMwZTVhODg5YTBiNjg1YWM4ZDEyLi4yYWMzOTBjZWJjMzM4
ZjIxZjJhNjhmNmExMmYxNDM2ZjZkODM4NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAt
NDksNiArNDksNyBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4
dGVuZHMgV0kuVHJlZUVsZW1lbnQKIAogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZEF0dHJpYnV0
ZXMgPSBuZXcgU2V0OwogICAgICAgICB0aGlzLl9yZWNlbnRseU1vZGlmaWVkQXR0cmlidXRlcyA9
IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX2Nsb3NlVGFnVHJlZUVsZW1lbnQgPSBudWxsOwogCiAg
ICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkVuYWJsZWRQc2V1
ZG9DbGFzc2VzQ2hhbmdlZCwgdGhpcy5fbm9kZVBzZXVkb0NsYXNzZXNEaWRDaGFuZ2UsIHRoaXMp
OwogCkBAIC0xMDYsNiArMTA3LDggQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVl
RWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBn
ZXQgY2xvc2VUYWdUcmVlRWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuX2Nsb3NlVGFnVHJlZUVsZW1l
bnQ7IH0KKwogICAgIHJldmVhbEFuZEhpZ2hsaWdodCgpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fYW5pbWF0aW5nSGlnaGxpZ2h0KQpAQCAtNTM0LDcgKzUzNyw3IEBAIFdJLkRPTVRyZWVFbGVt
ZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAg
ICAvLyBJbnNlcnQgY2xvc2luZyB0YWcgdHJlZSBlbGVtZW50LgogICAgICAgICB2YXIgbGFzdENo
aWxkID0gdGhpcy5jaGlsZHJlbi5sYXN0VmFsdWU7CiAgICAgICAgIGlmIChub2RlLm5vZGVUeXBl
KCkgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmICghbGFzdENoaWxkIHx8ICFsYXN0Q2hpbGQuX2Vs
ZW1lbnRDbG9zZVRhZykpCi0gICAgICAgICAgICB0aGlzLmluc2VydENoaWxkRWxlbWVudCh0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLmNoaWxkcmVuLmxlbmd0aCwgdHJ1ZSk7CisgICAgICAg
ICAgICB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50ID0gdGhpcy5pbnNlcnRDaGlsZEVsZW1lbnQo
dGhpcy5yZXByZXNlbnRlZE9iamVjdCwgdGhpcy5jaGlsZHJlbi5sZW5ndGgsIHRydWUpOwogCiAg
ICAgICAgIC8vIFdlIHdhbnQgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgc2VsZWN0aW9uIGFuZCB0
cmVlIHNjcm9sbCBwb3NpdGlvbiBhZnRlciBhIGZ1bGwgcmVmcmVzaCwgaWYgcG9zc2libGUuCiAg
ICAgICAgIGlmIChmdWxsUmVmcmVzaCAmJiBlbGVtZW50VG9TZWxlY3QpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5l
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91
dGxpbmUuanMKaW5kZXggYzZlZDY0Mjg4YzQwNDllNDNiYTIwNDRiZDY4ZjFkOGE0MDNiYTg2MC4u
OWE5NmVkM2Q2NWJkYjE4MzJiODQ5OWU2YTNiODI2NWZlZjAwY2FhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91
dGxpbmUuanMKQEAgLTE1OSw2ICsxNTksNyBAQCBXSS5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERP
TVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91dGxpbmUKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBsZXQgc2VsZWN0ZWROb2RlID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID8g
dGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0IDogbnVsbDsKKyAgICAg
ICAgbGV0IHNlbGVjdGVkVHJlZUVsZW1lbnRzID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50czsK
IAogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTE4MSw4ICsxODIsMjMgQEAg
V0kuRE9NVHJlZU91dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVP
dXRsaW5lCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2VsZWN0ZWRO
b2RlKQotICAgICAgICAgICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZShzZWxlY3RlZE5vZGUs
IHRydWUpOworICAgICAgICBpZiAoIXNlbGVjdGVkVHJlZUVsZW1lbnRzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBUaGUgc2VsZWN0aW9uIGNhbm5vdCBiZSByZXN0
b3JlZCBmcm9tIHJlcHJlc2VudGVkIG9iamVjdHMgYWxvbmUsCisgICAgICAgIC8vIHNpbmNlIGEg
Y2xvc2luZyB0YWcgRE9NVHJlZUVsZW1lbnQgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGVkIG9iamVj
dAorICAgICAgICAvLyBhcyBpdHMgcGFyZW50LgorICAgICAgICBzZWxlY3RlZFRyZWVFbGVtZW50
cyA9IHNlbGVjdGVkVHJlZUVsZW1lbnRzLm1hcCgob2xkVHJlZUVsZW1lbnQpID0+IHsKKyAgICAg
ICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuZmluZFRyZWVFbGVtZW50KG9sZFRyZWVFbGVt
ZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCAmJiBv
bGRUcmVlRWxlbWVudC5pc0Nsb3NlVGFnKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydCh0cmVlRWxlbWVudC5jbG9zZVRhZ1RyZWVFbGVtZW50LCAiTWlzc2luZyBjbG9zZSB0YWcg
VHJlZUVsZW1lbnQuIiwgdHJlZUVsZW1lbnQpOworICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50
ID0gdHJlZUVsZW1lbnQuY2xvc2VUYWdUcmVlRWxlbWVudDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5z
ZWxlY3RUcmVlRWxlbWVudHMoc2VsZWN0ZWRUcmVlRWxlbWVudHMpOworICAgICAgICB0aGlzLnNl
bGVjdGVkVHJlZUVsZW1lbnQucmV2ZWFsKCk7CiAgICAgfQogCiAgICAgdXBkYXRlU2VsZWN0aW9u
QXJlYSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IGNjYzkxMTUxZjkxNjFlYTllZTNlNTJiYzc0MmEz
YTU4M2Y0NWRkZTQuLjA2M2Y0ZjY0NWQ0ZGM2N2ZmZjRiNGI1OTEwNmQ1ODE2MTA3MmY2YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVP
dXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVPdXRsaW5lLmpzCkBAIC03MTEsNiArNzExLDI0IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xh
c3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgLy8gdGhpcyBpcyB0aGUg
cm9vdCwgZG8gbm90aGluZwogICAgIH0KIAorICAgIHNlbGVjdFRyZWVFbGVtZW50cyh0cmVlRWxl
bWVudHMpCisgICAgeworICAgICAgICBpZiAoIXRyZWVFbGVtZW50cy5sZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50cy5sZW5ndGggPT09IDEpIHsK
KyAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50c1swXTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24sICJDYW5ub3Qgc2VsZWN0IFRyZWVFbGVtZW50
cyB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iKTsKKyAgICAgICAgaWYgKCF0aGlz
LmFsbG93c011bHRpcGxlU2VsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGxldCBzZWxlY3RhYmxlT2JqZWN0cyA9IHRyZWVFbGVtZW50cy5tYXAoKHgpID0+IHRoaXMub2Jq
ZWN0Rm9yU2VsZWN0aW9uKHgpKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5z
ZWxlY3RJdGVtcyhuZXcgU2V0KHNlbGVjdGFibGVPYmplY3RzKSk7CisgICAgfQorCiAgICAgZ2V0
IHNlbGVjdGVkVHJlZUVsZW1lbnRJbmRleCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaGFz
Q2hpbGRyZW4gfHwgIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3Nzg3ZTkwODUw
M2JmNWU0NzI0ZmU3ZDg0MjMzZWE1ZGJjZjcwMjQwLi43Y2Q3ZjIzNDBlYWFmNTU5NDVmZjQ0Y2M4
OGZhNThjNTFkNjRhNmI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDMtMjcgIE1hdHQg
QmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVs
ZW1lbnRzIHRhYjogbXVsdGlwbGUgc2VsZWN0aW9uIGxvc3QgYWZ0ZXIgbmF2aWdhdGluZyB0byBh
bm90aGVyIHRhYgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyNjgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NjcwOTM5Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci90cmVlLW91
dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgQWRkIFRyZWVPdXRsaW5lIHRlc3RzIGZvciBzaW5nbGUgYW5kIG11bHRp
cGxlIHNlbGVjdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGls
aXRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3NldC11
dGlsaXRpZXMuaHRtbDoKKyAgICAgICAgQWRkIHRlc3RzIGZvciBTZXQucHJvdG90eXBlLmxhc3RW
YWx1ZS4KKwogMjAxOS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBiYXNpYyBsYXlvdXQgdGVzdCBjb3ZlcmFnZSBmb3IgRmlsZSBQaWNrZXIgb24g
aU9TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUt
b3V0bGluZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Ry
ZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYjJiYjFjZTI5YWE1OWM3YzQ0MjhjYzlhMGU0YjI5ZTY0ZTkzNDg0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2Vs
ZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQzIEBACitUZXN0cyBmb3IgV0kuVHJlZU91
dGxpbmUgc2VsZWN0aW9uLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVHJlZU91dGxpbmUu
U2VsZWN0aW9uCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVHJlZU91dGxpbmUuY29uc3RydWN0b3IK
K1BBU1M6IHNlbGVjdGVkVHJlZUVsZW1lbnQgc2hvdWxkIGJlIG51bGwuCitQQVNTOiBzZWxlY3Rl
ZFRyZWVFbGVtZW50cyBzaG91bGQgYmUgZW1wdHkuCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVj
dGlvbiBzaG91bGQgYmUgZmFsc2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGlu
ZS5GaW5kVHJlZUVsZW1lbnQKK1BBU1M6IFNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXBy
ZXNlbnRlZCBvYmplY3QuCitQQVNTOiBUcmVlRWxlbWVudCBzaG91bGQgaGF2ZSBjb3JyZWN0IHJl
cHJlc2VudGVkIG9iamVjdC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNl
bGVjdGVkVHJlZUVsZW1lbnQKK1NlbGVjdGluZyBUcmVlRWxlbWVudCAiSXRlbSAxIi4KK1BBU1M6
IFRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIHNlbGVjdGVkIFRyZWVFbGVtZW50ICJJdGVtIDEiLgor
UEFTUzogVHJlZUVsZW1lbnQgIkl0ZW0gMSIgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSB0cnVlLgor
UEFTUzogT3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitT
ZWxlY3RpbmcgVHJlZUVsZW1lbnQgIkl0ZW0gMiIuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQg
aGF2ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSAyIi4KK1BBU1M6IFRyZWVFbGVtZW50ICJJ
dGVtIDIiIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gdHJ1ZS4KK1BBU1M6IE90aGVyIFRyZWVFbGVt
ZW50cyBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IGZhbHNlLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogVHJlZU91dGxpbmUuQWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KK1BBU1M6IGFsbG93c011bHRp
cGxlU2VsZWN0aW9uIGVuYWJsZWQuCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBkaXNh
YmxlZC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVt
ZW50cworU2VsZWN0aW5nIFRyZWVFbGVtZW50cyBbIkl0ZW0gMSIsIkl0ZW0gMiJdLgorUEFTUzog
VHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgY29ycmVjdCBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCitQ
QVNTOiBUcmVlRWxlbWVudHMgWyJJdGVtIDEiLCJJdGVtIDIiXSBzaG91bGQgaGF2ZSBzZWxlY3Rl
ZCA9IHRydWUuCitQQVNTOiBBbGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVj
dGVkID0gZmFsc2UuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVl
RWxlbWVudCAiSXRlbSAyIi4KKworU2VsZWN0aW5nIFRyZWVFbGVtZW50cyBbIkl0ZW0gMyIsIkl0
ZW0gNCJdLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgY29ycmVjdCBzZWxlY3RlZCBU
cmVlRWxlbWVudHMuCitQQVNTOiBUcmVlRWxlbWVudHMgWyJJdGVtIDMiLCJJdGVtIDQiXSBzaG91
bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBBbGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNo
b3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2
ZSBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSA0Ii4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cy5NdWx0aXBsZVNlbGVjdGlvbkRpc2FibGVk
CitQQVNTOiBTaG91bGQgaGF2ZSBubyBzZWxlY3RlZCBUcmVlRWxlbWVudHMuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVj
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxp
bmUtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRjMjY3ZmQxNDUzNDU2YTY5ZjUwN2Y2YmU2
YzZhODhlYTg0ODIyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTcyIEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnJlZGlyZWN0
UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZVN5bmNTdWl0ZSgiVHJlZU91dGxpbmUuU2VsZWN0aW9uIik7CisKKyAgICBmdW5jdGlv
biBjcmVhdGVUcmVlT3V0bGluZShvYmplY3RzID0gW10pIHsKKyAgICAgICAgZnVuY3Rpb24gYXBw
ZW5kT2JqZWN0KHBhcmVudCwgb2JqZWN0KSB7CisgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHt9
OworICAgICAgICAgICAgaWYgKG9iamVjdC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBvcHRp
b25zLmhhc0NoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IG5l
dyBXSS5UcmVlRWxlbWVudChvYmplY3QudGl0bGUsIG9iamVjdCwgb3B0aW9ucyk7CisgICAgICAg
ICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQpOworCisgICAgICAgICAgICBpZiAo
IW9iamVjdC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGZvciAobGV0IGNoaWxkIG9mIG9iamVjdC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBhZGRP
YmplY3QodHJlZUVsZW1lbnQsIGNoaWxkKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB0cmVl
T3V0bGluZSA9IG5ldyBXSS5UcmVlT3V0bGluZTsKKyAgICAgICAgZm9yIChsZXQgb2JqZWN0IG9m
IG9iamVjdHMpCisgICAgICAgICAgICBhcHBlbmRPYmplY3QodHJlZU91dGxpbmUsIG9iamVjdCk7
CisKKyAgICAgICAgcmV0dXJuIHRyZWVPdXRsaW5lOworICAgIH0KKworICAgIGZ1bmN0aW9uIGV4
cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnQodHJlZU91dGxpbmUsIHRyZWVFbGVtZW50KSB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudCwgdHJlZUVsZW1lbnQsIGBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBzZWxlY3RlZCBUcmVl
RWxlbWVudCAiJHt0cmVlRWxlbWVudC50aXRsZX0iLmApOworICAgIH0KKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLmNvbnN0cnVjdG9yIiwKKyAg
ICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRyZWVP
dXRsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbCh0cmVlT3V0
bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LCAic2VsZWN0ZWRUcmVlRWxlbWVudCBzaG91bGQgYmUg
bnVsbC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxp
bmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3RoLCAwLCAic2VsZWN0ZWRUcmVlRWxlbWVudHMg
c2hvdWxkIGJlIGVtcHR5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxz
ZSh0cmVlT3V0bGluZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgImFsbG93c011bHRpcGxlU2Vs
ZWN0aW9uIHNob3VsZCBiZSBmYWxzZS4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVHJlZU91dGxpbmUuRmluZFRyZWVFbGVt
ZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJGaW5kIFRyZWVFbGVtZW50IGZvciBnaXZlbiBy
ZXByZXNlbnRlZCBvYmplY3QuIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGNvbnN0
IHJlcHJlc2VudGVkT2JqZWN0cyA9IFsKKyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDEi
fSwKKyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDIifSwKKyAgICAgICAgICAgICAgICB7
dGl0bGU6ICJJdGVtIDMifSwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGxldCB0cmVl
T3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKHJlcHJlc2VudGVkT2JqZWN0cyk7CisgICAgICAg
ICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQocmVwcmVz
ZW50ZWRPYmplY3RzWzBdKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KHRyZWVFbGVtZW50LCAiU2hvdWxkIGZpbmQgVHJlZUVsZW1lbnQgZm9yIHJlcHJlc2VudGVkIG9i
amVjdC4iKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0cmVlRWxlbWVu
dC5yZXByZXNlbnRlZE9iamVjdCwgcmVwcmVzZW50ZWRPYmplY3RzWzBdLCAiVHJlZUVsZW1lbnQg
c2hvdWxkIGhhdmUgY29ycmVjdCByZXByZXNlbnRlZCBvYmplY3QuIikKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVHJlZU91dGxp
bmUuU2VsZWN0ZWRUcmVlRWxlbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2VsZWN0IGEg
dHJlZSBlbGVtZW50LCB0aGVuIHNlbGVjdCBhIGRpZmZlcmVudCB0cmVlIGVsZW1lbnQuIiwKKyAg
ICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJTZWxlY3RUcmVlRWxl
bWVudCh0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBT
ZWxlY3RpbmcgVHJlZUVsZW1lbnQgIiR7dHJlZUVsZW1lbnQudGl0bGV9Ii5gKTsKKyAgICAgICAg
ICAgICAgICB0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CisK
KyAgICAgICAgICAgICAgICBleHBlY3RTZWxlY3RlZFRyZWVFbGVtZW50KHRyZWVPdXRsaW5lLCB0
cmVlRWxlbWVudCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHRy
ZWVFbGVtZW50LnNlbGVjdGVkLCBgVHJlZUVsZW1lbnQgIiR7dHJlZUVsZW1lbnQudGl0bGV9IiBz
aG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuYCk7CisKKyAgICAgICAgICAgICAgICBsZXQgb3Ro
ZXJUcmVlRWxlbWVudHNBcmVEZXNlbGVjdGVkID0gdHJlZU91dGxpbmUuY2hpbGRyZW4uZXZlcnko
KHgpID0+IHggPT09IHRyZWVFbGVtZW50IHx8ICF4LnNlbGVjdGVkKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQob3RoZXJUcmVlRWxlbWVudHNBcmVEZXNlbGVjdGVk
LCAiT3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuIik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IHJlcHJlc2VudGVkT2JqZWN0cyA9IFsK
KyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDEifSwKKyAgICAgICAgICAgICAgICB7dGl0
bGU6ICJJdGVtIDIifSwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGxldCB0cmVlT3V0
bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKHJlcHJlc2VudGVkT2JqZWN0cyk7CisKKyAgICAgICAg
ICAgIHRyaWdnZXJTZWxlY3RUcmVlRWxlbWVudCh0cmVlT3V0bGluZS5jaGlsZHJlblswXSk7Cisg
ICAgICAgICAgICB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnQodHJlZU91dGxpbmUuY2hpbGRyZW5b
MV0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJUcmVlT3V0bGluZS5BbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gZW5hYmxlIG11bHRpcGxlIHNlbGVjdGlv
bi4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3Jl
YXRlVHJlZU91dGxpbmUoKTsKKworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dzTXVsdGlw
bGVTZWxlY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24gZW5hYmxlZC4iKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxl
U2VsZWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNl
KHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24gZGlzYWJsZWQuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIHRy
aWdnZXJTZWxlY3RUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIHRyZWVFbGVtZW50cykgeworICAg
ICAgICBsZXQgZGlzcGxheVRleHQgPSBgJHt0cmVlRWxlbWVudHMubWFwKCh4KSA9PiBgIiR7eC50
aXRsZX0iYCl9YDsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgU2VsZWN0aW5nIFRyZWVF
bGVtZW50cyBbJHtkaXNwbGF5VGV4dH1dLmApOworICAgICAgICB0cmVlT3V0bGluZS5zZWxlY3RU
cmVlRWxlbWVudHModHJlZUVsZW1lbnRzKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFNoYWxsb3dFcXVhbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50cywgdHJlZUVsZW1l
bnRzLCAiVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgY29ycmVjdCBzZWxlY3RlZCBUcmVlRWxlbWVu
dHMuIik7CisKKyAgICAgICAgbGV0IHRyZWVFbGVtZW50c1NlbGVjdGVkID0gdHJlZUVsZW1lbnRz
LmV2ZXJ5KCh4KSA9PiB4LnNlbGVjdGVkKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KHRyZWVFbGVtZW50c1NlbGVjdGVkLCBgVHJlZUVsZW1lbnRzIFske2Rpc3BsYXlUZXh0fV0g
c2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSB0cnVlLmApOworCisgICAgICAgIGxldCBvdGhlclRyZWVF
bGVtZW50c05vdFNlbGVjdGVkID0gdHJlZU91dGxpbmUuY2hpbGRyZW4uZXZlcnkoKHgpID0+ICF4
LnNlbGVjdGVkIHx8IHRyZWVFbGVtZW50cy5pbmNsdWRlcyh4KSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdChvdGhlclRyZWVFbGVtZW50c05vdFNlbGVjdGVkLCAiQWxsIG90aGVy
IFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IGZhbHNlLiIpOworICAgIH0KKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLlNlbGVj
dFRyZWVFbGVtZW50cyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2VsZWN0IHR3byB0cmVlIGVs
ZW1lbnRzLCB0aGVuIHNlbGVjdCB0d28gZGlmZmVyZW50IHRyZWUgZWxlbWVudHMuIiwKKyAgICAg
ICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGNvbnN0IHJlcHJlc2VudGVkT2JqZWN0cyA9IFsKKyAg
ICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDEifSwKKyAgICAgICAgICAgICAgICB7dGl0bGU6
ICJJdGVtIDIifSwKKyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDMifSwKKyAgICAgICAg
ICAgICAgICB7dGl0bGU6ICJJdGVtIDQifSwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAg
IGxldCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKHJlcHJlc2VudGVkT2JqZWN0cyk7
CisgICAgICAgICAgICB0cmVlT3V0bGluZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHRydWU7
CisKKyAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IHRyZWVPdXRsaW5lLmNoaWxkcmVuOworCisg
ICAgICAgICAgICB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVPdXRsaW5lLCBbY2hpbGRy
ZW5bMF0sIGNoaWxkcmVuWzFdXSk7CisgICAgICAgICAgICBleHBlY3RTZWxlY3RlZFRyZWVFbGVt
ZW50KHRyZWVPdXRsaW5lLCBjaGlsZHJlblsxXSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCIiKTsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50cyh0cmVl
T3V0bGluZSwgW2NoaWxkcmVuWzJdLCBjaGlsZHJlblszXV0pOworICAgICAgICAgICAgZXhwZWN0
U2VsZWN0ZWRUcmVlRWxlbWVudCh0cmVlT3V0bGluZSwgY2hpbGRyZW5bM10pOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmVl
T3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMuTXVsdGlwbGVTZWxlY3Rpb25EaXNhYmxlZCIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiU2VsZWN0IG11bHRpcGxlIHRyZWUgZWxlbWVudHMgd2l0aCBt
dWx0aXBsZSBzZWxlY3Rpb24gZGlzYWJsZWQuIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGNvbnN0IHJlcHJlc2VudGVkT2JqZWN0cyA9IFsKKyAgICAgICAgICAgICAgICB7dGl0bGU6
ICJJdGVtIDEifSwKKyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDIifSwKKyAgICAgICAg
ICAgIF07CisKKyAgICAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5l
KHJlcHJlc2VudGVkT2JqZWN0cyk7CisgICAgICAgICAgICB0cmVlT3V0bGluZS5hbGxvd3NNdWx0
aXBsZVNlbGVjdGlvbiA9IGZhbHNlOworCisgICAgICAgICAgICB0cmVlT3V0bGluZS5zZWxlY3RU
cmVlRWxlbWVudHModHJlZU91dGxpbmUuY2hpbGRyZW4pOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50cy5sZW5ndGgs
IDAsICJTaG91bGQgaGF2ZSBubyBzZWxlY3RlZCBUcmVlRWxlbWVudHMuIikKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyBmb3Ig
V0kuVHJlZU91dGxpbmUgc2VsZWN0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1l
eHBlY3RlZC50eHQKaW5kZXggZjg0NDYzOTkxOTZjNmNjZTVjOTE0ZWY5YjQ1NTYxZTViNmM2NjM0
Ni4uZDJlN2QyMjY1OTBjMzJjZWNkMjliNjFlNzBiOTJjYTFlMTk5MTRjYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1l
eHBlY3RlZC50eHQKQEAgLTQxLDMgKzQxLDcgQEAgUEFTUzogU2V0IGRpZmZlcmVuY2Ugc2hvdWxk
IGJlIFsxXS4KIFBBU1M6IFNldCB3aXRoIHZhbHVlcyBbXSBzaG91bGQgaGF2ZSBmaXJzdFZhbHVl
IGVxdWFsIHRvIHVuZGVmaW5lZC4KIFBBU1M6IFNldCB3aXRoIHZhbHVlcyBbMSwyLDNdIHNob3Vs
ZCBoYXZlIGZpcnN0VmFsdWUgZXF1YWwgdG8gMS4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNl
dC5wcm90b3R5cGUubGFzdFZhbHVlCitQQVNTOiBTZXQgd2l0aCB2YWx1ZXMgW10gc2hvdWxkIGhh
dmUgbGFzdFZhbHVlIGVxdWFsIHRvIHVuZGVmaW5lZC4KK1BBU1M6IFNldCB3aXRoIHZhbHVlcyBb
MSwyLDNdIHNob3VsZCBoYXZlIGxhc3RWYWx1ZSBlcXVhbCB0byAzLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwKaW5kZXggNTAz
MzI5MDAwMjIwNmFlOTMxYWRhZGQ3OTU2ZmQ4NjdlNDdiNjc1YS4uNTkwNWUyZjZhZGMwZTA2YzVh
ZWY4YTYxZDJkZmNlY2VlM2UzMTk4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMuaHRtbApAQCAtMTIyLDcgKzEyMiw4IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiU2V0LnByb3RvdHlwZS5maXJzdFZhbHVlIiwKICAg
ICAgICAgdGVzdCgpIHsKICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RGaXJzdFZhbHVlKHZhbHVl
cykgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobmV3IFNldCh2
YWx1ZXMpLmZpcnN0VmFsdWUsIHZhbHVlc1swXSwgYFNldCB3aXRoIHZhbHVlcyBbJHt2YWx1ZXN9
XSBzaG91bGQgaGF2ZSBmaXJzdFZhbHVlIGVxdWFsIHRvICR7dmFsdWVzWzBdfS5gKTsKKyAgICAg
ICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSB2YWx1ZXNbMF07CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChuZXcgU2V0KHZhbHVlcykuZmlyc3RWYWx1ZSwgZXhwZWN0
ZWQsIGBTZXQgd2l0aCB2YWx1ZXMgWyR7dmFsdWVzfV0gc2hvdWxkIGhhdmUgZmlyc3RWYWx1ZSBl
cXVhbCB0byAke2V4cGVjdGVkfS5gKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGVz
dEZpcnN0VmFsdWUoW10pOwpAQCAtMTMwLDYgKzEzMSwxOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgfQogICAgIH0pOwogCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiU2V0LnByb3RvdHlwZS5sYXN0VmFsdWUiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAg
ICAgZnVuY3Rpb24gdGVzdExhc3RWYWx1ZSh2YWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBsZXQg
ZXhwZWN0ZWQgPSB2YWx1ZXMubGFzdFZhbHVlOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwobmV3IFNldCh2YWx1ZXMpLmxhc3RWYWx1ZSwgZXhwZWN0ZWQsIGBTZXQg
d2l0aCB2YWx1ZXMgWyR7dmFsdWVzfV0gc2hvdWxkIGhhdmUgbGFzdFZhbHVlIGVxdWFsIHRvICR7
ZXhwZWN0ZWR9LmApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0TGFzdFZhbHVl
KFtdKTsKKyAgICAgICAgICAgIHRlc3RMYXN0VmFsdWUoWzEsIDIsIDNdKTsKKyAgICAgICAgfQor
ICAgIH0pOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3Njcmlw
dD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366864</attachid>
            <date>2019-04-05 17:55:38 -0700</date>
            <delta_ts>2019-04-10 14:44:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192681-20190405175538.patch</filename>
            <type>text/plain</type>
            <size>23482</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzOTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
ZGY5ZjdjMGUwNThhMzE5MDU2MDY5ZWIzNGY1ODliNmVkZTg2OTM0Li42MDI0NzdlZmIzMmU2NzZm
OTU1Y2EwMjI2NmZmZDFlNTgwZDhhOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOS0wNC0wNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHMgdGFiOiBtdWx0aXBsZSBzZWxlY3Rp
b24gbG9zdCBhZnRlciBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2ODEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2NzA5MzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAgKGdl
dCBsZXQpOgorICAgICAgICAoZ2V0IHJldHVybik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanM6CisgICAgICAgIChXSS5TZWxlY3Rp
b25Db250cm9sbGVyLnByb3RvdHlwZS5zZWxlY3RJdGVtKToKKyAgICAgICAgU2ltcGxpZnkgaW50
ZXJuYWwgbG9naWMgYnkgcmVtb3ZpbmcgYW4gZWFybHkgcmV0dXJuLgorICAgICAgICAoV0kuU2Vs
ZWN0aW9uQ29udHJvbGxlci5wcm90b3R5cGUuc2VsZWN0SXRlbXMpOgorICAgICAgICBQcm92aWRl
IGEgbWVhbnMgdG8gc2VsZWN0IG11bHRpcGxlIGl0ZW1zIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4K
KyAgICAgICAgSWYgYF9sYXN0U2VsZWN0ZWRJdGVtYCBpcyBub3QgaW4gdGhlIGl0ZW1zIHRvIHNl
bGVjdCwgdGhlIGxhc3QKKyAgICAgICAgaXRlbSBiZWluZyBzZWxlY3RlZCB3aWxsIGJlY29tZSB0
aGUgbGFzdCBzZWxlY3RlZCBpdGVtLgorCisgICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVy
LnByb3RvdHlwZS5fZGVzZWxlY3RBbGxBbmRTZWxlY3QpOgorICAgICAgICBEcml2ZS1ieSBmaXg6
IGNvcnJlY3QgYSBsb2dpYyBlcnJvci4gSWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVkLCB0aGUgaXRl
bQorICAgICAgICBwYXNzZWQgYXMgYW4gYXJndW1lbnQgc2hvdWxkIHN0aWxsIGJlY29tZSBzZWxl
Y3RlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5ET01UcmVl
RWxlbWVudCk6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGNsb3Nl
VGFnVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl91
cGRhdGVDaGlsZHJlbik6CisgICAgICAgIE1ha2UgdGhlIGNsb3NlIHRhZyBUcmVlRWxlbWVudCBh
dmFpbGFibGUgZnJvbSB0aGUgb3BlbiB0YWcgVHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuRE9NVHJlZU91
dGxpbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIFJlc3RvcmUgc2VsZWN0ZWQgVHJlZUVs
ZW1lbnRzIGFmdGVyIHVwZGF0aW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9U
cmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3RU
cmVlRWxlbWVudHMpOgorCiAyMDE5LTA0LTA1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUZXN0U3VpdGUgdGVzdCBjYXNlcyBzaG91
bGQgaGF2ZSB0aGVpciBvd24gdGltZW91dCB0byBlbnN1cmUgdGVzdHMgZmFpbCB3aXRoIG91dHB1
dCBpbnN0ZWFkIG9mIHRpbWVvdXQgYnkgdGVzdCBydW5uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXggMTc0ZmFh
YmZhZDNiODgwYzMwNDc1MWVjYzBmNWMyMDU0YTlmMTM3Ny4uNjA1ZTM5NDMzMGEyOTkzYWQ4YmY0
YjUxMDdiNmYwOWQ3ZjBmNjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKQEAgLTE2Niw2ICsxNjYsMTcgQEAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsICJmaXJzdFZhbHVlIiwKICAgICB9CiB9
KTsKIAorT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsICJsYXN0VmFsdWUiLAor
eworICAgIGdldCgpCisgICAgeworICAgICAgICBsZXQgaXRlcmF0b3IgPSB0aGlzLnZhbHVlcygp
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2l6ZSAtIDE7ICsraSkKKyAgICAg
ICAgICAgIGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLm5leHQoKS52
YWx1ZTsKKyAgICB9Cit9KTsKKwogT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUs
ICJpbnRlcnNlY3RzIiwKIHsKICAgICB2YWx1ZShvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xs
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9T
ZWxlY3Rpb25Db250cm9sbGVyLmpzCmluZGV4IDhiMzIxOWQ4ZjNhOTg5MDEwYWI2YjNhZDhjZWZk
NmE2MDYzNDNlMmQuLmFmNWFlYTI4NzA3YWFhNjJlMjc3ZjI3NzY3NGFjOTUzYTg3NzBlMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcwpAQCAtODgsMTIgKzg4
LDYgQEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLl9hbGxvd3NNdWx0aXBsZVNlbGVj
dGlvbikKICAgICAgICAgICAgIGV4dGVuZFNlbGVjdGlvbiA9IGZhbHNlOwogCi0gICAgICAgIGlm
ICh0aGlzLmhhc1NlbGVjdGVkSXRlbShpdGVtKSkgewotICAgICAgICAgICAgaWYgKCFleHRlbmRT
ZWxlY3Rpb24pCi0gICAgICAgICAgICAgICAgdGhpcy5fZGVzZWxlY3RBbGxBbmRTZWxlY3QoaXRl
bSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICB0aGlzLl9sYXN0
U2VsZWN0ZWRJdGVtID0gaXRlbTsKICAgICAgICAgdGhpcy5fc2hpZnRBbmNob3JJdGVtID0gbnVs
bDsKIApAQCAtMTAzLDYgKzk3LDIzIEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBT
ZWxlY3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3VwZGF0
ZVNlbGVjdGVkSXRlbXMobmV3SXRlbXMpOwogICAgIH0KIAorICAgIHNlbGVjdEl0ZW1zKGl0ZW1z
KQorICAgIHsKKyAgICAgICAgaWYgKCFpdGVtcy5zaXplKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbG93c011bHRpcGxlU2VsZWN0aW9uIHx8
IGl0ZW1zLnNpemUgPT09IDEsICJDYW5ub3Qgc2VsZWN0IG11bHRpcGxlIGl0ZW1zIHdpdGggbXVs
dGlwbGUgc2VsZWN0aW9uIGRpc2FibGVkLiIpOworICAgICAgICBpZiAoIXRoaXMuX2FsbG93c011
bHRpcGxlU2VsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghdGhp
cy5fbGFzdFNlbGVjdGVkSXRlbSB8fCAhaXRlbXMuaGFzKHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0p
KQorICAgICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkSXRlbSA9IGl0ZW1zLmxhc3RWYWx1ZTsK
KworICAgICAgICB0aGlzLl9zaGlmdEFuY2hvckl0ZW0gPSBudWxsOworCisgICAgICAgIHRoaXMu
X3VwZGF0ZVNlbGVjdGVkSXRlbXMoaXRlbXMpOworICAgIH0KKwogICAgIGRlc2VsZWN0SXRlbShp
dGVtKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaXRlbSwgIkludmFsaWQgaXRlbSBm
b3Igc2VsZWN0aW9uLiIpOwpAQCAtMjk3LDcgKzMwOCw3IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xs
ZXIgPSBjbGFzcyBTZWxlY3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBf
ZGVzZWxlY3RBbGxBbmRTZWxlY3QoaXRlbSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2Vs
ZWN0ZWRJdGVtcy5zaXplKQorICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkSXRlbXMuc2l6ZSAm
JiAhaXRlbSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fc2VsZWN0
ZWRJdGVtcy5zaXplID09PSAxICYmIHRoaXMuaGFzU2VsZWN0ZWRJdGVtKGl0ZW0pKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDBjMjg0YTZl
MGExZjE0NDExMWU5YTI0ODJmNmIwZTA2YmY5ODAwOGMuLjA2ZjBiZTJmNzZkNWNiNDAwZTlkMWNk
ZjA4Yjc3ZGNkYWYwYzM0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKQEAgLTI2MSw2ICsyNjEsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9SZXNpemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVGFibGUuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UYWJsZUNvbHVtbi5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogCiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICBXSS5zaGFyZWRBcHAgPSBuZXcg
V0kuVGVzdEFwcENvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCmluZGV4IDcyNGNjM2Vj
OWRiZDA0NTg4NWNjMzBlNWE4ODlhMGI2ODVhYzhkMTIuLjk4NDE0MzExNWM2NzQ0YTlkYzZlOTdj
NTMyZjllMzlkZjA5MjZhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC00OSw2ICs0OSw3
IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5U
cmVlRWxlbWVudAogCiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkQXR0cmlidXRlcyA9IG5ldyBT
ZXQ7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZpZWRBdHRyaWJ1dGVzID0gbmV3IE1hcDsK
KyAgICAgICAgdGhpcy5fY2xvc2VUYWdUcmVlRWxlbWVudCA9IG51bGw7CiAKICAgICAgICAgbm9k
ZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuRW5hYmxlZFBzZXVkb0NsYXNzZXND
aGFuZ2VkLCB0aGlzLl9ub2RlUHNldWRvQ2xhc3Nlc0RpZENoYW5nZSwgdGhpcyk7CiAKQEAgLTEw
Niw2ICsxMDcsOCBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4
dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgfQogICAgIH0KIAorICAgIGdldCBjbG9zZVRh
Z1RyZWVFbGVtZW50KCkgeyByZXR1cm4gdGhpcy5fY2xvc2VUYWdUcmVlRWxlbWVudDsgfQorCiAg
ICAgcmV2ZWFsQW5kSGlnaGxpZ2h0KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9hbmltYXRp
bmdIaWdobGlnaHQpCkBAIC00NTksNiArNDYyLDcgQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFz
cyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgIGlmICh0aGlz
Ll91cGRhdGVDaGlsZHJlbkluUHJvZ3Jlc3MgfHwgIXRoaXMudHJlZU91dGxpbmUuX3Zpc2libGUp
CiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhpcy5fY2xvc2VUYWdUcmVlRWxlbWVu
dCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVuSW5Qcm9ncmVzcyA9IHRydWU7
CiAKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwpAQCAtNTM0LDcg
KzUzOCw3IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5k
cyBXSS5UcmVlRWxlbWVudAogICAgICAgICAvLyBJbnNlcnQgY2xvc2luZyB0YWcgdHJlZSBlbGVt
ZW50LgogICAgICAgICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlbi5sYXN0VmFsdWU7CiAg
ICAgICAgIGlmIChub2RlLm5vZGVUeXBlKCkgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmICghbGFz
dENoaWxkIHx8ICFsYXN0Q2hpbGQuX2VsZW1lbnRDbG9zZVRhZykpCi0gICAgICAgICAgICB0aGlz
Lmluc2VydENoaWxkRWxlbWVudCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLmNoaWxkcmVu
Lmxlbmd0aCwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50ID0g
dGhpcy5pbnNlcnRDaGlsZEVsZW1lbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCwgdGhpcy5jaGls
ZHJlbi5sZW5ndGgsIHRydWUpOwogCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gcmVzdG9yZSB0aGUg
b3JpZ2luYWwgc2VsZWN0aW9uIGFuZCB0cmVlIHNjcm9sbCBwb3NpdGlvbiBhZnRlciBhIGZ1bGwg
cmVmcmVzaCwgaWYgcG9zc2libGUuCiAgICAgICAgIGlmIChmdWxsUmVmcmVzaCAmJiBlbGVtZW50
VG9TZWxlY3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKaW5kZXggYzZlZDY0Mjg4YzQwNDllNDNi
YTIwNDRiZDY4ZjFkOGE0MDNiYTg2MC4uOWE5NmVkM2Q2NWJkYjE4MzJiODQ5OWU2YTNiODI2NWZl
ZjAwY2FhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKQEAgLTE1OSw2ICsxNTksNyBAQCBXSS5E
T01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91dGxp
bmUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgc2VsZWN0ZWROb2RlID0gdGhp
cy5zZWxlY3RlZFRyZWVFbGVtZW50ID8gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0IDogbnVsbDsKKyAgICAgICAgbGV0IHNlbGVjdGVkVHJlZUVsZW1lbnRzID0gdGhp
cy5zZWxlY3RlZFRyZWVFbGVtZW50czsKIAogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7
CiAKQEAgLTE4MSw4ICsxODIsMjMgQEAgV0kuRE9NVHJlZU91dGxpbmUgPSBjbGFzcyBET01UcmVl
T3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoc2VsZWN0ZWROb2RlKQotICAgICAgICAgICAgdGhpcy5fcmV2ZWFsQW5k
U2VsZWN0Tm9kZShzZWxlY3RlZE5vZGUsIHRydWUpOworICAgICAgICBpZiAoIXNlbGVjdGVkVHJl
ZUVsZW1lbnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBUaGUg
c2VsZWN0aW9uIGNhbm5vdCBiZSByZXN0b3JlZCBmcm9tIHJlcHJlc2VudGVkIG9iamVjdHMgYWxv
bmUsCisgICAgICAgIC8vIHNpbmNlIGEgY2xvc2luZyB0YWcgRE9NVHJlZUVsZW1lbnQgaGFzIHRo
ZSBzYW1lIHJlcHJlc2VudGVkIG9iamVjdAorICAgICAgICAvLyBhcyBpdHMgcGFyZW50LgorICAg
ICAgICBzZWxlY3RlZFRyZWVFbGVtZW50cyA9IHNlbGVjdGVkVHJlZUVsZW1lbnRzLm1hcCgob2xk
VHJlZUVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuZmlu
ZFRyZWVFbGVtZW50KG9sZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAg
ICAgIGlmICh0cmVlRWxlbWVudCAmJiBvbGRUcmVlRWxlbWVudC5pc0Nsb3NlVGFnKCkpIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudC5jbG9zZVRhZ1RyZWVFbGVt
ZW50LCAiTWlzc2luZyBjbG9zZSB0YWcgVHJlZUVsZW1lbnQuIiwgdHJlZUVsZW1lbnQpOworICAg
ICAgICAgICAgICAgIHRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQuY2xvc2VUYWdUcmVlRWxlbWVu
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgdGhpcy5zZWxlY3RUcmVlRWxlbWVudHMoc2VsZWN0ZWRUcmVlRWxl
bWVudHMpOworICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucmV2ZWFsKCk7CiAgICAg
fQogCiAgICAgdXBkYXRlU2VsZWN0aW9uQXJlYSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IGNjYzkx
MTUxZjkxNjFlYTllZTNlNTJiYzc0MmEzYTU4M2Y0NWRkZTQuLjA2M2Y0ZjY0NWQ0ZGM2N2ZmZjRi
NGI1OTEwNmQ1ODE2MTA3MmY2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC03MTEsNiArNzExLDI0
IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZwogICAgIH0KIAorICAgIHNl
bGVjdFRyZWVFbGVtZW50cyh0cmVlRWxlbWVudHMpCisgICAgeworICAgICAgICBpZiAoIXRyZWVF
bGVtZW50cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRyZWVF
bGVtZW50cy5sZW5ndGggPT09IDEpIHsKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxl
bWVudCA9IHRyZWVFbGVtZW50c1swXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24sICJD
YW5ub3Qgc2VsZWN0IFRyZWVFbGVtZW50cyB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxl
ZC4iKTsKKyAgICAgICAgaWYgKCF0aGlzLmFsbG93c011bHRpcGxlU2VsZWN0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBzZWxlY3RhYmxlT2JqZWN0cyA9IHRyZWVFbGVt
ZW50cy5tYXAoKHgpID0+IHRoaXMub2JqZWN0Rm9yU2VsZWN0aW9uKHgpKTsKKyAgICAgICAgdGhp
cy5fc2VsZWN0aW9uQ29udHJvbGxlci5zZWxlY3RJdGVtcyhuZXcgU2V0KHNlbGVjdGFibGVPYmpl
Y3RzKSk7CisgICAgfQorCiAgICAgZ2V0IHNlbGVjdGVkVHJlZUVsZW1lbnRJbmRleCgpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4gfHwgIXRoaXMuc2VsZWN0ZWRUcmVlRWxl
bWVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBlMTNkNjc3NDk5Mjc2ZjlmMGYxZjZlY2VhOWY5NmIzNzVhNDVlOWEyLi5l
ZDU0ZmU1MGMxODVmNDEwZDM5OTY5NjUyOWY4NjNjY2VjYmFjNzY3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTktMDQtMDUgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEVsZW1lbnRzIHRhYjogbXVsdGlwbGUgc2VsZWN0aW9uIGxv
c3QgYWZ0ZXIgbmF2aWdhdGluZyB0byBhbm90aGVyIHRhYgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80NjcwOTM5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGluc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1v
dXRsaW5lLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIFRyZWVPdXRsaW5lIHRl
c3RzIGZvciBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdGlvbi4KKworICAgICAgICAqIGluc3Bl
Y3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGlu
c3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMuaHRtbDoKKyAgICAgICAgQWRkIHRlc3Rz
IGZvciBTZXQucHJvdG90eXBlLmxhc3RWYWx1ZS4KKwogMjAxOS0wNC0wNSAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGVzdFN1aXRl
IHRlc3QgY2FzZXMgc2hvdWxkIGhhdmUgdGhlaXIgb3duIHRpbWVvdXQgdG8gZW5zdXJlIHRlc3Rz
IGZhaWwgd2l0aCBvdXRwdXQgaW5zdGVhZCBvZiB0aW1lb3V0IGJ5IHRlc3QgcnVubmVyCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGlu
ZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjdkOTJk
YWM5N2Q5M2Q5OGE1OTYzNTY5NWMxYTA4MGE4MzJlNzM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ3IEBACitUZXN0cyBmb3IgV0kuVHJlZU91dGxpbmUgc2Vs
ZWN0aW9uLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVHJlZU91dGxpbmUuU2VsZWN0aW9u
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogVHJlZU91dGxpbmUuY29uc3RydWN0b3IKK1BBU1M6IHNl
bGVjdGVkVHJlZUVsZW1lbnQgc2hvdWxkIGJlIG51bGwuCitQQVNTOiBzZWxlY3RlZFRyZWVFbGVt
ZW50cyBzaG91bGQgYmUgZW1wdHkuCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBzaG91
bGQgYmUgZmFsc2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGluZS5GaW5kVHJl
ZUVsZW1lbnQKK1BBU1M6IFNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRlZCBv
YmplY3QuCitQQVNTOiBUcmVlRWxlbWVudCBzaG91bGQgaGF2ZSBjb3JyZWN0IHJlcHJlc2VudGVk
IG9iamVjdC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdGVkVHJl
ZUVsZW1lbnQKK1NlbGVjdGluZyBUcmVlRWxlbWVudCAiSXRlbSAxIi4KK1BBU1M6IFRyZWVPdXRs
aW5lIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHNlbGVjdGlvbi4KK1BBU1M6IFRyZWVPdXRsaW5l
IHNob3VsZCBoYXZlIGxhc3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnQgIkl0ZW0gMSIuCitQQVNTOiBU
cmVlRWxlbWVudCAiSXRlbSAxIiBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBP
dGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSBmYWxzZS4KK1NlbGVjdGlu
ZyBUcmVlRWxlbWVudCAiSXRlbSAyIi4KK1BBU1M6IFRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIHRo
ZSBjb3JyZWN0IHNlbGVjdGlvbi4KK1BBU1M6IFRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIGxhc3Qg
c2VsZWN0ZWQgVHJlZUVsZW1lbnQgIkl0ZW0gMiIuCitQQVNTOiBUcmVlRWxlbWVudCAiSXRlbSAy
IiBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBPdGhlciBUcmVlRWxlbWVudHMg
c2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSBmYWxzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRy
ZWVPdXRsaW5lLkFsbG93c011bHRpcGxlU2VsZWN0aW9uCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNl
bGVjdGlvbiBlbmFibGVkLgorUEFTUzogYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gZGlzYWJsZWQu
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUcmVlT3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMK
K1NlbGVjdGluZyBUcmVlRWxlbWVudHMgWyJJdGVtIDEiLCJJdGVtIDIiXS4KK1BBU1M6IFRyZWVP
dXRsaW5lIHNob3VsZCBoYXZlIGNvcnJlY3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLgorUEFTUzog
VHJlZUVsZW1lbnRzIFsiSXRlbSAxIiwiSXRlbSAyIl0gc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSB0
cnVlLgorUEFTUzogQWxsIG90aGVyIFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9
IGZhbHNlLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qgc2VsZWN0
aW9uLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgbGFzdCBzZWxlY3RlZCBUcmVlRWxl
bWVudCAiSXRlbSAyIi4KKworU2VsZWN0aW5nIFRyZWVFbGVtZW50cyBbIkl0ZW0gMyIsIkl0ZW0g
NCJdLgorUEFTUzogVHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgY29ycmVjdCBzZWxlY3RlZCBUcmVl
RWxlbWVudHMuCitQQVNTOiBUcmVlRWxlbWVudHMgWyJJdGVtIDMiLCJJdGVtIDQiXSBzaG91bGQg
aGF2ZSBzZWxlY3RlZCA9IHRydWUuCitQQVNTOiBBbGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNob3Vs
ZCBoYXZlIHNlbGVjdGVkID0gZmFsc2UuCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSB0
aGUgY29ycmVjdCBzZWxlY3Rpb24uCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBsYXN0
IHNlbGVjdGVkIFRyZWVFbGVtZW50ICJJdGVtIDQiLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
VHJlZU91dGxpbmUuU2VsZWN0VHJlZUVsZW1lbnRzLk11bHRpcGxlU2VsZWN0aW9uRGlzYWJsZWQK
K1BBU1M6IFNob3VsZCBoYXZlIG5vIHNlbGVjdGVkIFRyZWVFbGVtZW50cy4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGlu
ZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzdkMGJkMzY2MWFkMjBmMWVlN2NhYzlkYjEw
MWYwMmQwODQ4YWI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Ry
ZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSwxNzQgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QucmVkaXJlY3RS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTsKKworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlU3luY1N1aXRlKCJUcmVlT3V0bGluZS5TZWxlY3Rpb24iKTsKKworICAgIGZ1bmN0aW9u
IGNyZWF0ZVRyZWVPdXRsaW5lKG9iamVjdHMgPSBbXSkgeworICAgICAgICBmdW5jdGlvbiBhcHBl
bmRPYmplY3QocGFyZW50LCBvYmplY3QpIHsKKyAgICAgICAgICAgIGxldCBvcHRpb25zID0ge307
CisgICAgICAgICAgICBpZiAob2JqZWN0LmNoaWxkcmVuKQorICAgICAgICAgICAgICAgIG9wdGlv
bnMuaGFzQ2hpbGRyZW4gPSB0cnVlOworICAgICAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gbmV3
IFdJLlRyZWVFbGVtZW50KG9iamVjdC50aXRsZSwgb2JqZWN0LCBvcHRpb25zKTsKKyAgICAgICAg
ICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudCk7CisKKyAgICAgICAgICAgIGlmICgh
b2JqZWN0LmNoaWxkcmVuKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
Zm9yIChsZXQgY2hpbGQgb2Ygb2JqZWN0LmNoaWxkcmVuKQorICAgICAgICAgICAgICAgIGFwcGVu
ZE9iamVjdCh0cmVlRWxlbWVudCwgY2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHRy
ZWVPdXRsaW5lID0gbmV3IFdJLlRyZWVPdXRsaW5lOworICAgICAgICBmb3IgKGxldCBvYmplY3Qg
b2Ygb2JqZWN0cykKKyAgICAgICAgICAgIGFwcGVuZE9iamVjdCh0cmVlT3V0bGluZSwgb2JqZWN0
KTsKKworICAgICAgICByZXR1cm4gdHJlZU91dGxpbmU7CisgICAgfQorCisgICAgZnVuY3Rpb24g
ZXhwZWN0U2VsZWN0ZWRUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIHNlbGVjdGVkVHJlZUVsZW1l
bnRzKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHRyZWVPdXRs
aW5lLnNlbGVjdGVkVHJlZUVsZW1lbnRzLCBzZWxlY3RlZFRyZWVFbGVtZW50cywgYFRyZWVPdXRs
aW5lIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHNlbGVjdGlvbi5gKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LCBzZWxl
Y3RlZFRyZWVFbGVtZW50cy5sYXN0VmFsdWUsIGBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBsYXN0
IHNlbGVjdGVkIFRyZWVFbGVtZW50ICIke3NlbGVjdGVkVHJlZUVsZW1lbnRzLmxhc3RWYWx1ZS50
aXRsZX0iLmApOworICAgIH0KKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIlRyZWVPdXRsaW5lLmNvbnN0cnVjdG9yIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRyZWVPdXRsaW5lKCk7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50
LCAic2VsZWN0ZWRUcmVlRWxlbWVudCBzaG91bGQgYmUgbnVsbC4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMu
bGVuZ3RoLCAwLCAic2VsZWN0ZWRUcmVlRWxlbWVudHMgc2hvdWxkIGJlIGVtcHR5LiIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh0cmVlT3V0bGluZS5hbGxvd3NNdWx0
aXBsZVNlbGVjdGlvbiwgImFsbG93c011bHRpcGxlU2VsZWN0aW9uIHNob3VsZCBiZSBmYWxzZS4i
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiVHJlZU91dGxpbmUuRmluZFRyZWVFbGVtZW50IiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJGaW5kIGEgVHJlZUVsZW1lbnQgYmFzZWQgb24gaXRzIGFzc29jaWF0ZWQgcmVwcmVzZW50
ZWQgb2JqZWN0LiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBjb25zdCByZXByZXNl
bnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAxIn0sCisgICAg
ICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAi
SXRlbSAzIn0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUg
PSBjcmVhdGVUcmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgbGV0
IHRyZWVFbGVtZW50ID0gdHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2Jq
ZWN0c1swXSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0cmVlRWxl
bWVudCwgIlNob3VsZCBmaW5kIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRlZCBvYmplY3QuIikK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZUVsZW1lbnQucmVwcmVz
ZW50ZWRPYmplY3QsIHJlcHJlc2VudGVkT2JqZWN0c1swXSwgIlRyZWVFbGVtZW50IHNob3VsZCBo
YXZlIGNvcnJlY3QgcmVwcmVzZW50ZWQgb2JqZWN0LiIpCisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLlNlbGVj
dGVkVHJlZUVsZW1lbnQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNlbGVjdCBhIHRyZWUgZWxl
bWVudCwgdGhlbiBzZWxlY3QgYSBkaWZmZXJlbnQgdHJlZSBlbGVtZW50LiIsCisgICAgICAgIHRl
c3QoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnQodHJl
ZUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgU2VsZWN0aW5n
IFRyZWVFbGVtZW50ICIke3RyZWVFbGVtZW50LnRpdGxlfSIuYCk7CisgICAgICAgICAgICAgICAg
dHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50OworCisgICAgICAg
ICAgICAgICAgZXhwZWN0U2VsZWN0ZWRUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIFt0cmVlRWxl
bWVudF0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0cmVlRWxl
bWVudC5zZWxlY3RlZCwgYFRyZWVFbGVtZW50ICIke3RyZWVFbGVtZW50LnRpdGxlfSIgc2hvdWxk
IGhhdmUgc2VsZWN0ZWQgPSB0cnVlLmApOworCisgICAgICAgICAgICAgICAgbGV0IG90aGVyVHJl
ZUVsZW1lbnRzQXJlRGVzZWxlY3RlZCA9IHRyZWVPdXRsaW5lLmNoaWxkcmVuLmV2ZXJ5KCh4KSA9
PiB4ID09PSB0cmVlRWxlbWVudCB8fCAheC5zZWxlY3RlZCk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KG90aGVyVHJlZUVsZW1lbnRzQXJlRGVzZWxlY3RlZCwgIk90
aGVyIFRyZWVFbGVtZW50cyBzaG91bGQgaGF2ZSBzZWxlY3RlZCA9IGZhbHNlLiIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBjb25zdCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAg
ICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAxIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAi
SXRlbSAyIn0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUg
PSBjcmVhdGVUcmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworCisgICAgICAgICAgICB0
cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnQodHJlZU91dGxpbmUuY2hpbGRyZW5bMF0pOworICAgICAg
ICAgICAgdHJpZ2dlclNlbGVjdFRyZWVFbGVtZW50KHRyZWVPdXRsaW5lLmNoaWxkcmVuWzFdKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiVHJlZU91dGxpbmUuQWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24iLAorICAgICAgICBkZXNj
cmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIGVuYWJsZSBtdWx0aXBsZSBzZWxlY3Rpb24uIiwK
KyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0ZVRy
ZWVPdXRsaW5lKCk7CisKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2Vs
ZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0cmVl
T3V0bGluZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgImFsbG93c011bHRpcGxlU2VsZWN0aW9u
IGVuYWJsZWQuIik7CisgICAgICAgICAgICB0cmVlT3V0bGluZS5hbGxvd3NNdWx0aXBsZVNlbGVj
dGlvbiA9IGZhbHNlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh0cmVl
T3V0bGluZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgImFsbG93c011bHRpcGxlU2VsZWN0aW9u
IGRpc2FibGVkLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiB0cmlnZ2Vy
U2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVPdXRsaW5lLCB0cmVlRWxlbWVudHMpIHsKKyAgICAgICAg
bGV0IGRpc3BsYXlUZXh0ID0gYCR7dHJlZUVsZW1lbnRzLm1hcCgoeCkgPT4gYCIke3gudGl0bGV9
ImApfWA7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYFNlbGVjdGluZyBUcmVlRWxlbWVu
dHMgWyR7ZGlzcGxheVRleHR9XS5gKTsKKyAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVs
ZW1lbnRzKHRyZWVFbGVtZW50cyk7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFs
bG93RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMsIHRyZWVFbGVtZW50cywg
IlRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIGNvcnJlY3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLiIp
OworCisgICAgICAgIGxldCB0cmVlRWxlbWVudHNTZWxlY3RlZCA9IHRyZWVFbGVtZW50cy5ldmVy
eSgoeCkgPT4geC5zZWxlY3RlZCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0
cmVlRWxlbWVudHNTZWxlY3RlZCwgYFRyZWVFbGVtZW50cyBbJHtkaXNwbGF5VGV4dH1dIHNob3Vs
ZCBoYXZlIHNlbGVjdGVkID0gdHJ1ZS5gKTsKKworICAgICAgICBsZXQgb3RoZXJUcmVlRWxlbWVu
dHNOb3RTZWxlY3RlZCA9IHRyZWVPdXRsaW5lLmNoaWxkcmVuLmV2ZXJ5KCh4KSA9PiAheC5zZWxl
Y3RlZCB8fCB0cmVlRWxlbWVudHMuaW5jbHVkZXMoeCkpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQob3RoZXJUcmVlRWxlbWVudHNOb3RTZWxlY3RlZCwgIkFsbCBvdGhlciBUcmVl
RWxlbWVudHMgc2hvdWxkIGhhdmUgc2VsZWN0ZWQgPSBmYWxzZS4iKTsKKyAgICB9CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmVlT3V0bGluZS5TZWxlY3RUcmVl
RWxlbWVudHMiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNlbGVjdCB0d28gdHJlZSBlbGVtZW50
cywgdGhlbiBzZWxlY3QgdHdvIGRpZmZlcmVudCB0cmVlIGVsZW1lbnRzLiIsCisgICAgICAgIHRl
c3QoKSB7CisgICAgICAgICAgICBjb25zdCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAg
ICAgICAgICAge3RpdGxlOiAiSXRlbSAxIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRl
bSAyIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAzIn0sCisgICAgICAgICAgICAg
ICAge3RpdGxlOiAiSXRlbSA0In0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQg
dHJlZU91dGxpbmUgPSBjcmVhdGVUcmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAg
ICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlOworCisg
ICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSB0cmVlT3V0bGluZS5jaGlsZHJlbjsKKyAgICAgICAg
ICAgIGxldCBjaGlsZHJlblRvU2VsZWN0ID0gW2NoaWxkcmVuWzBdLCBjaGlsZHJlblsxXV07Cisg
ICAgICAgICAgICB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVPdXRsaW5lLCBjaGlsZHJl
blRvU2VsZWN0KTsKKyAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnRzKHRyZWVP
dXRsaW5lLCBjaGlsZHJlblRvU2VsZWN0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIiIpOworCisgICAgICAgICAgICBjaGlsZHJlblRvU2VsZWN0ID0gW2NoaWxkcmVuWzJdLCBj
aGlsZHJlblszXV07CisgICAgICAgICAgICB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVP
dXRsaW5lLCBjaGlsZHJlblRvU2VsZWN0KTsKKyAgICAgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJl
ZUVsZW1lbnRzKHRyZWVPdXRsaW5lLCBjaGlsZHJlblRvU2VsZWN0KTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVHJlZU91dGxp
bmUuU2VsZWN0VHJlZUVsZW1lbnRzLk11bHRpcGxlU2VsZWN0aW9uRGlzYWJsZWQiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIlNlbGVjdCBtdWx0aXBsZSB0cmVlIGVsZW1lbnRzIHdpdGggbXVsdGlw
bGUgc2VsZWN0aW9uIGRpc2FibGVkLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBj
b25zdCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRl
bSAxIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICBd
OworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVUcmVlT3V0bGluZShyZXBy
ZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb24gPSBmYWxzZTsKKworICAgICAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVs
ZW1lbnRzKHRyZWVPdXRsaW5lLmNoaWxkcmVuKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3RoLCAwLCAi
U2hvdWxkIGhhdmUgbm8gc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLiIpCisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbkxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgZm9yIFdJLlRy
ZWVPdXRsaW5lIHNlbGVjdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0
ZWQudHh0CmluZGV4IGY4NDQ2Mzk5MTk2YzZjY2U1YzkxNGVmOWI0NTU2MWU1YjZjNjYzNDYuLmQy
ZTdkMjI2NTkwYzMyY2VjZDI5YjYxZTcwYjkyY2ExZTE5OTE0Y2IgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0
ZWQudHh0CkBAIC00MSwzICs0MSw3IEBAIFBBU1M6IFNldCBkaWZmZXJlbmNlIHNob3VsZCBiZSBb
MV0uCiBQQVNTOiBTZXQgd2l0aCB2YWx1ZXMgW10gc2hvdWxkIGhhdmUgZmlyc3RWYWx1ZSBlcXVh
bCB0byB1bmRlZmluZWQuCiBQQVNTOiBTZXQgd2l0aCB2YWx1ZXMgWzEsMiwzXSBzaG91bGQgaGF2
ZSBmaXJzdFZhbHVlIGVxdWFsIHRvIDEuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTZXQucHJv
dG90eXBlLmxhc3RWYWx1ZQorUEFTUzogU2V0IHdpdGggdmFsdWVzIFtdIHNob3VsZCBoYXZlIGxh
c3RWYWx1ZSBlcXVhbCB0byB1bmRlZmluZWQuCitQQVNTOiBTZXQgd2l0aCB2YWx1ZXMgWzEsMiwz
XSBzaG91bGQgaGF2ZSBsYXN0VmFsdWUgZXF1YWwgdG8gMy4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sCmluZGV4IDUwMzMyOTAw
MDIyMDZhZTkzMWFkYWRkNzk1NmZkODY3ZTQ3YjY3NWEuLjU5MDVlMmY2YWRjMGUwNmM1YWVmOGE2
MWQyZGZjZWNlZTNlMzE5ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0
LXRlc3RzL3NldC11dGlsaXRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwKQEAgLTEyMiw3ICsxMjIsOCBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgbmFtZTogIlNldC5wcm90b3R5cGUuZmlyc3RWYWx1ZSIsCiAgICAgICAg
IHRlc3QoKSB7CiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0Rmlyc3RWYWx1ZSh2YWx1ZXMpIHsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG5ldyBTZXQodmFsdWVz
KS5maXJzdFZhbHVlLCB2YWx1ZXNbMF0sIGBTZXQgd2l0aCB2YWx1ZXMgWyR7dmFsdWVzfV0gc2hv
dWxkIGhhdmUgZmlyc3RWYWx1ZSBlcXVhbCB0byAke3ZhbHVlc1swXX0uYCk7CisgICAgICAgICAg
ICAgICAgbGV0IGV4cGVjdGVkID0gdmFsdWVzWzBdOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwobmV3IFNldCh2YWx1ZXMpLmZpcnN0VmFsdWUsIGV4cGVjdGVkLCBg
U2V0IHdpdGggdmFsdWVzIFske3ZhbHVlc31dIHNob3VsZCBoYXZlIGZpcnN0VmFsdWUgZXF1YWwg
dG8gJHtleHBlY3RlZH0uYCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRlc3RGaXJz
dFZhbHVlKFtdKTsKQEAgLTEzMCw2ICsxMzEsMTkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
IH0KICAgICB9KTsKIAorICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlNl
dC5wcm90b3R5cGUubGFzdFZhbHVlIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHRlc3RMYXN0VmFsdWUodmFsdWVzKSB7CisgICAgICAgICAgICAgICAgbGV0IGV4cGVj
dGVkID0gdmFsdWVzLmxhc3RWYWx1ZTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKG5ldyBTZXQodmFsdWVzKS5sYXN0VmFsdWUsIGV4cGVjdGVkLCBgU2V0IHdpdGgg
dmFsdWVzIFske3ZhbHVlc31dIHNob3VsZCBoYXZlIGxhc3RWYWx1ZSBlcXVhbCB0byAke2V4cGVj
dGVkfS5gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdExhc3RWYWx1ZShbXSk7
CisgICAgICAgICAgICB0ZXN0TGFzdFZhbHVlKFsxLCAyLCAzXSk7CisgICAgICAgIH0KKyAgICB9
KTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367164</attachid>
            <date>2019-04-10 14:44:53 -0700</date>
            <delta_ts>2019-04-10 15:44:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192681-20190410144453.patch</filename>
            <type>text/plain</type>
            <size>25094</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDUwMjZjNmM3NzVkZjEwNTI2ZWQ1MGYzYzRhOWNl
MjNhNGQ4Yzg4MGMuLjNhODk2NDVjN2M5OWY2ZTQxMTY0MjNhMjY4MDZhYzFjMzIyZWU3NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA0LTEwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBF
bGVtZW50cyB0YWI6IG11bHRpcGxlIHNlbGVjdGlvbiBsb3N0IGFmdGVyIG5hdmlnYXRpbmcgdG8g
YW5vdGhlciB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjY4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3MDkzOTI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3JnaW5hbCBwYXRjaCBieSBN
YXR0IEJha2VyIDxtYXR0YmFrZXJAYXBwbGUuY29tPi4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLlNlbGVj
dGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLnNlbGVjdEl0ZW0pOgorICAgICAgICBTaW1wbGlmeSBp
bnRlcm5hbCBsb2dpYyBieSByZW1vdmluZyBhbiBlYXJseSByZXR1cm4uCisKKyAgICAgICAgKFdJ
LlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLnNlbGVjdEl0ZW1zKTogQWRkZWQuCisgICAg
ICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVyLnByb3RvdHlwZS5zZWxlY3RBbGwpOgorICAgICAg
ICBQcm92aWRlIGEgbWVhbnMgdG8gc2VsZWN0IG11bHRpcGxlIGl0ZW1zIGluIGEgc2luZ2xlIG9w
ZXJhdGlvbi4KKyAgICAgICAgSWYgYF9sYXN0U2VsZWN0ZWRJdGVtYCBpcyBub3QgaW4gdGhlIGl0
ZW1zIHRvIHNlbGVjdCwgdGhlIGxhc3QKKyAgICAgICAgaXRlbSBiZWluZyBzZWxlY3RlZCB3aWxs
IGJlY29tZSB0aGUgbGFzdCBzZWxlY3RlZCBpdGVtLgorCisgICAgICAgIChXSS5TZWxlY3Rpb25D
b250cm9sbGVyLnByb3RvdHlwZS5fZGVzZWxlY3RBbGxBbmRTZWxlY3QpOgorICAgICAgICBEcml2
ZS1ieSBmaXg6IGNvcnJlY3QgYSBsb2dpYyBlcnJvci4gSWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVk
LCB0aGUgaXRlbQorICAgICAgICBwYXNzZWQgYXMgYW4gYXJndW1lbnQgc2hvdWxkIHN0aWxsIGJl
Y29tZSBzZWxlY3RlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxp
bmUuanM6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5wcm90b3R5cGUuc2VsZWN0VHJlZUVsZW1l
bnRzKTogQWRkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVt
ZW50LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuRE9NVHJl
ZUVsZW1lbnQucHJvdG90eXBlLmdldCBjbG9zZVRhZ1RyZWVFbGVtZW50KTogQWRkZWQuCisgICAg
ICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUNoaWxkcmVuKToKKyAgICAg
ICAgTWFrZSB0aGUgY2xvc2UgdGFnIGBUcmVlRWxlbWVudGAgYXZhaWxhYmxlIGZyb20gdGhlIG9w
ZW4gdGFnIGBUcmVlRWxlbWVudGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TVRyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlLnVw
ZGF0ZSk6CisgICAgICAgIFJlc3RvcmUgc2VsZWN0ZWQgYFRyZWVFbGVtZW50YHMgYWZ0ZXIgdXBk
YXRpbmcuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorCiAyMDE5LTA0LTA4ICBNYXR0IEJha2Vy
ICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbGVtZW50
cyB0YWI6IENsYXNzZXMgdG9nZ2xlIHNob3VsZCB1c2UgYWNjZW50IGNvbG9yIG9uIGhvdmVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxp
dGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0
aWVzLmpzCmluZGV4IDE3NGZhYWJmYWQzYjg4MGMzMDQ3NTFlY2MwZjVjMjA1NGE5ZjEzNzcuLjJi
ZDRmYWQ2MGNmMjE2NDc1ODBiN2NmMDc5ZWRkNTNhYzM2YTZlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC0x
NjYsNiArMTY2LDE0IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXQucHJvdG90eXBlLCAiZmly
c3RWYWx1ZSIsCiAgICAgfQogfSk7CiAKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXQucHJvdG90
eXBlLCAibGFzdFZhbHVlIiwKK3sKKyAgICBnZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFy
cmF5LmZyb20odGhpcy52YWx1ZXMoKSkubGFzdFZhbHVlOworICAgIH0KK30pOworCiBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoU2V0LnByb3RvdHlwZSwgImludGVyc2VjdHMiLAogewogICAgIHZhbHVl
KG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKaW5kZXgg
OGIzMjE5ZDhmM2E5ODkwMTBhYjZiM2FkOGNlZmQ2YTYwNjM0M2UyZC4uNzI4YjU4ZDYzYjBjODk2
YTQzZmM3MDE1ZDQ4YWE2NzkzYjM1MmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rp
b25Db250cm9sbGVyLmpzCkBAIC04OCwxMiArODgsNiBAQCBXSS5TZWxlY3Rpb25Db250cm9sbGVy
ID0gY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBp
ZiAoIXRoaXMuX2FsbG93c011bHRpcGxlU2VsZWN0aW9uKQogICAgICAgICAgICAgZXh0ZW5kU2Vs
ZWN0aW9uID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuaGFzU2VsZWN0ZWRJdGVtKGl0ZW0p
KSB7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuZFNlbGVjdGlvbikKLSAgICAgICAgICAgICAgICB0
aGlzLl9kZXNlbGVjdEFsbEFuZFNlbGVjdChpdGVtKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0gPSBpdGVtOwogICAgICAg
ICB0aGlzLl9zaGlmdEFuY2hvckl0ZW0gPSBudWxsOwogCkBAIC0xMDMsNiArOTcsMjEgQEAgV0ku
U2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRJdGVtcyhuZXdJdGVtcyk7CiAg
ICAgfQogCisgICAgc2VsZWN0SXRlbXMoaXRlbXMpCisgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiwgIkNhbm5vdCBzZWxlY3QgbXVsdGlw
bGUgaXRlbXMgd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb24gZGlzYWJsZWQuIik7CisgICAgICAgIGlm
ICghdGhpcy5fYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKCF0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtIHx8ICFpdGVtcy5oYXModGhpcy5f
bGFzdFNlbGVjdGVkSXRlbSkpCisgICAgICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtID0g
aXRlbXMubGFzdFZhbHVlOworCisgICAgICAgIGlmICghdGhpcy5fc2hpZnRBbmNob3JJdGVtIHx8
ICFpdGVtcy5oYXModGhpcy5fc2hpZnRBbmNob3JJdGVtKSkKKyAgICAgICAgICAgIHRoaXMuX3No
aWZ0QW5jaG9ySXRlbSA9IHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW07CisKKyAgICAgICAgdGhpcy5f
dXBkYXRlU2VsZWN0ZWRJdGVtcyhpdGVtcyk7CisgICAgfQorCiAgICAgZGVzZWxlY3RJdGVtKGl0
ZW0pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChpdGVtLCAiSW52YWxpZCBpdGVtIGZv
ciBzZWxlY3Rpb24uIik7CkBAIC0xNTAsMTUgKzE1OSwxMSBAQCBXSS5TZWxlY3Rpb25Db250cm9s
bGVyID0gY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBpZiAoIXRoaXMuX2FsbG93c011bHRpcGxlU2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLl9sYXN0U2VsZWN0YWJs
ZUl0ZW0oKTsKKyAgICAgICAgdGhpcy5yZXNldCgpOwogCiAgICAgICAgIGxldCBuZXdJdGVtcyA9
IG5ldyBTZXQ7Ci0gICAgICAgIHRoaXMuX2FkZFJhbmdlKG5ld0l0ZW1zLCB0aGlzLl9maXJzdFNl
bGVjdGFibGVJdGVtKCksIHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0pOwotCi0gICAgICAgIGlmICgh
dGhpcy5fc2hpZnRBbmNob3JJdGVtKQotICAgICAgICAgICAgdGhpcy5fc2hpZnRBbmNob3JJdGVt
ID0gdGhpcy5fbGFzdFNlbGVjdGVkSXRlbTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rl
ZEl0ZW1zKG5ld0l0ZW1zKTsKKyAgICAgICAgdGhpcy5fYWRkUmFuZ2UobmV3SXRlbXMsIHRoaXMu
X2ZpcnN0U2VsZWN0YWJsZUl0ZW0oKSwgdGhpcy5fbGFzdFNlbGVjdGFibGVJdGVtKCkpOworICAg
ICAgICB0aGlzLnNlbGVjdEl0ZW1zKG5ld0l0ZW1zKTsKICAgICB9CiAKICAgICBkZXNlbGVjdEFs
bCgpCkBAIC0yOTcsNyArMzAyLDcgQEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNl
bGVjdGlvbkNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9kZXNlbGVjdEFsbEFu
ZFNlbGVjdChpdGVtKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZEl0ZW1zLnNp
emUpCisgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRJdGVtcy5zaXplICYmICFpdGVtKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW1zLnNpemUg
PT09IDEgJiYgdGhpcy5oYXNTZWxlY3RlZEl0ZW0oaXRlbSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggMGMyODRhNmUwYTFmMTQ0MTExZTlh
MjQ4MmY2YjBlMDZiZjk4MDA4Yy4uMDZmMGJlMmY3NmQ1Y2I0MDBlOWQxY2RmMDhiNzdkY2RhZjBj
MzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVz
dC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRt
bApAQCAtMjYxLDYgKzI2MSw4IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc2l6ZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UYWJsZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RhYmxlQ29sdW1uLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9UcmVlT3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CiAgICAgICAgIFdJLnNoYXJlZEFwcCA9IG5ldyBXSS5UZXN0QXBwQ29u
dHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggNzI0Y2MzZWM5ZGJkMDQ1ODg1Y2Mz
MGU1YTg4OWEwYjY4NWFjOGQxMi4uOTg0MTQzMTE1YzY3NDRhOWRjNmU5N2M1MzJmOWUzOWRmMDky
NmFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTQ5LDYgKzQ5LDcgQEAgV0kuRE9NVHJl
ZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAK
ICAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRBdHRyaWJ1dGVzID0gbmV3IFNldDsKICAgICAgICAg
dGhpcy5fcmVjZW50bHlNb2RpZmllZEF0dHJpYnV0ZXMgPSBuZXcgTWFwOworICAgICAgICB0aGlz
Ll9jbG9zZVRhZ1RyZWVFbGVtZW50ID0gbnVsbDsKIAogICAgICAgICBub2RlLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NTm9kZS5FdmVudC5FbmFibGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQsIHRoaXMu
X25vZGVQc2V1ZG9DbGFzc2VzRGlkQ2hhbmdlLCB0aGlzKTsKIApAQCAtMTA2LDYgKzEwNyw4IEBA
IFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVl
RWxlbWVudAogICAgICAgICB9CiAgICAgfQogCisgICAgZ2V0IGNsb3NlVGFnVHJlZUVsZW1lbnQo
KSB7IHJldHVybiB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50OyB9CisKICAgICByZXZlYWxBbmRI
aWdobGlnaHQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2FuaW1hdGluZ0hpZ2hsaWdodCkK
QEAgLTQ1OSw2ICs0NjIsNyBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVt
ZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUNoaWxk
cmVuSW5Qcm9ncmVzcyB8fCAhdGhpcy50cmVlT3V0bGluZS5fdmlzaWJsZSkKICAgICAgICAgICAg
IHJldHVybjsKIAorICAgICAgICB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50ID0gbnVsbDsKICAg
ICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW5JblByb2dyZXNzID0gdHJ1ZTsKIAogICAgICAgICB2
YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CkBAIC01MzQsNyArNTM4LDcgQEAgV0ku
RE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVt
ZW50CiAgICAgICAgIC8vIEluc2VydCBjbG9zaW5nIHRhZyB0cmVlIGVsZW1lbnQuCiAgICAgICAg
IHZhciBsYXN0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuLmxhc3RWYWx1ZTsKICAgICAgICAgaWYgKG5v
ZGUubm9kZVR5cGUoKSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgKCFsYXN0Q2hpbGQgfHwgIWxh
c3RDaGlsZC5fZWxlbWVudENsb3NlVGFnKSkKLSAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGRF
bGVtZW50KHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoLCB0cnVl
KTsKKyAgICAgICAgICAgIHRoaXMuX2Nsb3NlVGFnVHJlZUVsZW1lbnQgPSB0aGlzLmluc2VydENo
aWxkRWxlbWVudCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLmNoaWxkcmVuLmxlbmd0aCwg
dHJ1ZSk7CiAKICAgICAgICAgLy8gV2Ugd2FudCB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBzZWxl
Y3Rpb24gYW5kIHRyZWUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGEgZnVsbCByZWZyZXNoLCBpZiBw
b3NzaWJsZS4KICAgICAgICAgaWYgKGZ1bGxSZWZyZXNoICYmIGVsZW1lbnRUb1NlbGVjdCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlT3V0bGluZS5qcwppbmRleCBjNmVkNjQyODhjNDA0OWU0M2JhMjA0NGJkNjhmMWQ4
YTQwM2JhODYwLi4wN2VmYTQxMmUwMjJhMTZmNmQwMjdiMzk3Y2I2OWYxOWQ1N2RiZWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
T3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlT3V0bGluZS5qcwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdJLkRPTVRyZWVPdXRsaW5l
ID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5UcmVlT3V0bGluZQogICAgICAgICBp
ZiAoIXRoaXMucm9vdERPTU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0
IHNlbGVjdGVkTm9kZSA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA/IHRoaXMuc2VsZWN0ZWRU
cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA6IG51bGw7CisgICAgICAgIGxldCBzZWxlY3Rl
ZFRyZWVFbGVtZW50cyA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudHM7CiAKICAgICAgICAgdGhp
cy5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0xODEsOCArMTgxLDI0IEBAIFdJLkRPTVRyZWVPdXRs
aW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5UcmVlT3V0bGluZQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNlbGVjdGVkTm9kZSkKLSAgICAgICAg
ICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUoc2VsZWN0ZWROb2RlLCB0cnVlKTsKKyAgICAg
ICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgLy8gVGhlIHNlbGVjdGlvbiBjYW5ub3QgYmUgcmVzdG9yZWQgZnJvbSByZXBy
ZXNlbnRlZCBvYmplY3RzIGFsb25lLAorICAgICAgICAvLyBzaW5jZSBhIGNsb3NpbmcgdGFnIERP
TVRyZWVFbGVtZW50IGhhcyB0aGUgc2FtZSByZXByZXNlbnRlZCBvYmplY3QKKyAgICAgICAgLy8g
YXMgaXRzIHBhcmVudC4KKyAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudHMgPSBzZWxlY3RlZFRy
ZWVFbGVtZW50cy5tYXAoKG9sZFRyZWVFbGVtZW50KSA9PiB7CisgICAgICAgICAgICBsZXQgdHJl
ZUVsZW1lbnQgPSB0aGlzLmZpbmRUcmVlRWxlbWVudChvbGRUcmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdCk7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQgJiYgb2xkVHJlZUVsZW1lbnQu
aXNDbG9zZVRhZygpKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1l
bnQuY2xvc2VUYWdUcmVlRWxlbWVudCwgIk1pc3NpbmcgY2xvc2UgdGFnIFRyZWVFbGVtZW50LiIs
IHRyZWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQuY2xvc2VUYWdU
cmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVu
dC5jbG9zZVRhZ1RyZWVFbGVtZW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IHRyZWVFbGVtZW50OworICAgICAgICB9KTsKKworICAgICAgICB0aGlzLnNlbGVjdFRyZWVFbGVt
ZW50cyhzZWxlY3RlZFRyZWVFbGVtZW50cyk7CisgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxl
bWVudC5yZXZlYWwoKTsKICAgICB9CiAKICAgICB1cGRhdGVTZWxlY3Rpb25BcmVhKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91
dGxpbmUuanMKaW5kZXggY2NjOTExNTFmOTE2MWVhOWVlM2U1MmJjNzQyYTNhNTgzZjQ1ZGRlNC4u
NjZlY2Q1MmJiOGYzMzkxY2MzNzMyZjA4MDAxYmVkNmM0ZjQyZWM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUu
anMKQEAgLTcxMSw2ICs3MTEsMjQgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGlu
ZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3Ro
aW5nCiAgICAgfQogCisgICAgc2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVFbGVtZW50cykKKyAgICB7
CisgICAgICAgIGlmICghdHJlZUVsZW1lbnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAodHJlZUVsZW1lbnRzLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAgICAg
dGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnRzWzBdOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5hbGxvd3NN
dWx0aXBsZVNlbGVjdGlvbiwgIkNhbm5vdCBzZWxlY3QgVHJlZUVsZW1lbnRzIHdpdGggbXVsdGlw
bGUgc2VsZWN0aW9uIGRpc2FibGVkLiIpOworICAgICAgICBpZiAoIXRoaXMuYWxsb3dzTXVsdGlw
bGVTZWxlY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHNlbGVjdGFi
bGVPYmplY3RzID0gdHJlZUVsZW1lbnRzLm1hcCgodHJlZUVsZW1lbnQpID0+IHRoaXMub2JqZWN0
Rm9yU2VsZWN0aW9uKHRyZWVFbGVtZW50KSk7CisgICAgICAgIHRoaXMuX3NlbGVjdGlvbkNvbnRy
b2xsZXIuc2VsZWN0SXRlbXMobmV3IFNldChzZWxlY3RhYmxlT2JqZWN0cykpOworICAgIH0KKwog
ICAgIGdldCBzZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgoKQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLmhhc0NoaWxkcmVuIHx8ICF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2Yx
NDc1ZWY4N2U3YjVkY2E0MzlmYjUxZDE4ZGJiYjUwNWUxOGNhOC4uMTkxMGZiOWYzYTE4YmZjMWRk
MmI3NjhjNWEzOTU0MTU5NTZhZDBiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA0LTEw
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBFbGVtZW50cyB0YWI6IG11bHRpcGxlIHNlbGVjdGlvbiBsb3N0IGFmdGVyIG5hdmlnYXRp
bmcgdG8gYW5vdGhlciB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MjY4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3MDkzOTI+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3JnaW5hbCBwYXRj
aCBieSBNYXR0IEJha2VyIDxtYXR0YmFrZXJAYXBwbGUuY29tPi4KKworICAgICAgICAqIGluc3Bl
Y3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvdHJlZS1vdXRsaW5lL3RyZWUtb3V0bGluZS1zZWxlY3Rpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgQWRkIGBUcmVlT3V0bGluZWAgdGVzdHMgZm9yIHNp
bmdsZSBhbmQgbXVsdGlwbGUgc2VsZWN0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL3VuaXQt
dGVzdHMvc2V0LXV0aWxpdGllcy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3Rz
L3NldC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBBZGQgdGVzdHMgZm9yIGBTZXQu
cHJvdG90eXBlLmxhc3RWYWx1ZWAuCisKIDIwMTktMDQtMDkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBUdXJuIG9uIGVkaXRpbmcgdGVzdCB0aGF0
IHNob3VsZCBwYXNzIG5vdwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RyZWUt
b3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODAwNTdkZjRiMGYzMDdjOWZkNmE2MDM4MTIxODcwZmUxMWIyN2U1Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJl
ZS1vdXRsaW5lLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MyBAQAorVGVzdHMg
Zm9yIFdJLlRyZWVPdXRsaW5lIHNlbGVjdGlvbi4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6
IFRyZWVPdXRsaW5lLlNlbGVjdGlvbgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5l
LmNvbnN0cnVjdG9yCitQQVNTOiBzZWxlY3RlZFRyZWVFbGVtZW50IHNob3VsZCBiZSBudWxsLgor
UEFTUzogc2VsZWN0ZWRUcmVlRWxlbWVudHMgc2hvdWxkIGJlIGVtcHR5LgorUEFTUzogYWxsb3dz
TXVsdGlwbGVTZWxlY3Rpb24gc2hvdWxkIGJlIGZhbHNlLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogVHJlZU91dGxpbmUuRmluZFRyZWVFbGVtZW50CitQQVNTOiBTaG91bGQgZmluZCBUcmVlRWxl
bWVudCBmb3IgcmVwcmVzZW50ZWQgb2JqZWN0LgorUEFTUzogVHJlZUVsZW1lbnQgc2hvdWxkIGhh
dmUgY29ycmVjdCByZXByZXNlbnRlZCBvYmplY3QuCisKK1BBU1M6IFNob3VsZCBub3QgZmluZCBU
cmVlRWxlbWVudCBmb3IgcmVwcmVzZW50ZWQgb2JqZWN0LgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogVHJlZU91dGxpbmUuU2VsZWN0ZWRUcmVlRWxlbWVudAorU2VsZWN0aW5nIFRyZWVFbGVtZW50
ICJJdGVtIDEiLi4uCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBz
ZWxlY3Rpb24uCitQQVNTOiBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSBsYXN0IHNlbGVjdGVkIFRy
ZWVFbGVtZW50ICJJdGVtIDEiLgorUEFTUzogVHJlZUVsZW1lbnQgIkl0ZW0gMSIgc2hvdWxkIGJl
IHNlbGVjdGVkLgorUEFTUzogT3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBub3QgYmUgc2VsZWN0
ZWQuCisKK1NlbGVjdGluZyBUcmVlRWxlbWVudCAiSXRlbSAyIi4uLgorUEFTUzogVHJlZU91dGxp
bmUgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qgc2VsZWN0aW9uLgorUEFTUzogVHJlZU91dGxpbmUg
c2hvdWxkIGhhdmUgbGFzdCBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSAyIi4KK1BBU1M6IFRy
ZWVFbGVtZW50ICJJdGVtIDIiIHNob3VsZCBiZSBzZWxlY3RlZC4KK1BBU1M6IE90aGVyIFRyZWVF
bGVtZW50cyBzaG91bGQgbm90IGJlIHNlbGVjdGVkLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
VHJlZU91dGxpbmUuQWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KK1BBU1M6IGFsbG93c011bHRpcGxl
U2VsZWN0aW9uIGVuYWJsZWQuCitQQVNTOiBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBkaXNhYmxl
ZC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLk11bHRpcGxlU2VsZWN0aW9u
VG9nZ2xlZAorUEFTUzogQWxsIFRyZWVFbGVtZW50cyBzaG91bGQgYmUgc2VsZWN0ZWQuCitQQVNT
OiBTaG91bGQgaGF2ZSBvbmUgc2VsZWN0ZWQgVHJlZUVsZW1lbnQuCitQQVNTOiBTZWxlY3RlZCBU
cmVlRWxlbWVudCBzaG91bGQgYmUgdGhlIGxhc3QgY2hpbGQuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBUcmVlT3V0bGluZS5TZWxlY3RUcmVlRWxlbWVudHMuTXVsdGlwbGVTZWxlY3Rpb25FbmFi
bGVkCitTZWxlY3RpbmcgVHJlZUVsZW1lbnRzIFsiSXRlbSAxIiwiSXRlbSAyIl0uLi4KK1BBU1M6
IFRyZWVPdXRsaW5lIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHNlbGVjdGlvbi4KK1BBU1M6IFRy
ZWVPdXRsaW5lIHNob3VsZCBoYXZlIGxhc3Qgc2VsZWN0ZWQgVHJlZUVsZW1lbnQgIkl0ZW0gMiIu
CitQQVNTOiBUcmVlRWxlbWVudHMgWyJJdGVtIDEiLCJJdGVtIDIiXSBzaG91bGQgYmUgc2VsZWN0
ZWQuCitQQVNTOiBBbGwgb3RoZXIgVHJlZUVsZW1lbnRzIHNob3VsZCBub3QgYmUgc2VsZWN0ZWQu
CisKK1NlbGVjdGluZyBUcmVlRWxlbWVudHMgWyJJdGVtIDMiLCJJdGVtIDQiXS4uLgorUEFTUzog
VHJlZU91dGxpbmUgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qgc2VsZWN0aW9uLgorUEFTUzogVHJl
ZU91dGxpbmUgc2hvdWxkIGhhdmUgbGFzdCBzZWxlY3RlZCBUcmVlRWxlbWVudCAiSXRlbSA0Ii4K
K1BBU1M6IFRyZWVFbGVtZW50cyBbIkl0ZW0gMyIsIkl0ZW0gNCJdIHNob3VsZCBiZSBzZWxlY3Rl
ZC4KK1BBU1M6IEFsbCBvdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIG5vdCBiZSBzZWxlY3RlZC4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRyZWVPdXRsaW5lLlNlbGVjdFRyZWVFbGVtZW50cy5N
dWx0aXBsZVNlbGVjdGlvbkRpc2FibGVkCitQQVNTOiBTaG91bGQgaGF2ZSBubyBzZWxlY3RlZCBU
cmVlRWxlbWVudHMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91
dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RyZWUtb3V0bGluZS90cmVlLW91dGxpbmUtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMz
NmM3NzNkMmY5ODhmZTAzZjU3YThlODE5ZjBhMGUwMDg2MDhlYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci90cmVlLW91dGxpbmUvdHJlZS1vdXRsaW5lLXNlbGVjdGlv
bi5odG1sCkBAIC0wLDAgKzEsMTk3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBJbnNwZWN0b3JUZXN0LnJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CisKKyAgICBs
ZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiVHJlZU91dGxpbmUuU2Vs
ZWN0aW9uIik7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVUcmVlT3V0bGluZShvYmplY3RzID0gW10p
IHsKKyAgICAgICAgZnVuY3Rpb24gYXBwZW5kT2JqZWN0KHBhcmVudCwgb2JqZWN0KSB7CisgICAg
ICAgICAgICBsZXQgb3B0aW9ucyA9IHt9OworICAgICAgICAgICAgaWYgKG9iamVjdC5jaGlsZHJl
bikKKyAgICAgICAgICAgICAgICBvcHRpb25zLmhhc0NoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGxldCB0cmVlRWxlbWVudCA9IG5ldyBXSS5UcmVlRWxlbWVudChvYmplY3QudGl0bGUsIG9i
amVjdCwgb3B0aW9ucyk7CisgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodHJlZUVsZW1l
bnQpOworCisgICAgICAgICAgICBpZiAoIW9iamVjdC5jaGlsZHJlbikKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG9iamVjdC5jaGlsZHJl
bikKKyAgICAgICAgICAgICAgICBhcHBlbmRPYmplY3QodHJlZUVsZW1lbnQsIGNoaWxkKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IG5ldyBXSS5UcmVlT3V0bGluZTsK
KyAgICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iamVjdHMpCisgICAgICAgICAgICBhcHBlbmRP
YmplY3QodHJlZU91dGxpbmUsIG9iamVjdCk7CisKKyAgICAgICAgcmV0dXJuIHRyZWVPdXRsaW5l
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnRzKHRyZWVP
dXRsaW5lLCBzZWxlY3RlZFRyZWVFbGVtZW50cykgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFNoYWxsb3dFcXVhbCh0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50cywgc2VsZWN0
ZWRUcmVlRWxlbWVudHMsIGBUcmVlT3V0bGluZSBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBzZWxl
Y3Rpb24uYCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxpbmUu
c2VsZWN0ZWRUcmVlRWxlbWVudCwgc2VsZWN0ZWRUcmVlRWxlbWVudHMubGFzdFZhbHVlLCBgVHJl
ZU91dGxpbmUgc2hvdWxkIGhhdmUgbGFzdCBzZWxlY3RlZCBUcmVlRWxlbWVudCAiJHtzZWxlY3Rl
ZFRyZWVFbGVtZW50cy5sYXN0VmFsdWUudGl0bGV9Ii5gKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnQodHJlZU91dGxpbmUsIHRyZWVFbGVtZW50KSB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBTZWxlY3RpbmcgVHJlZUVsZW1lbnQgIiR7dHJlZUVs
ZW1lbnQudGl0bGV9Ii4uLmApOworICAgICAgICB0cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVt
ZW50ID0gdHJlZUVsZW1lbnQ7CisKKyAgICAgICAgZXhwZWN0U2VsZWN0ZWRUcmVlRWxlbWVudHMo
dHJlZU91dGxpbmUsIFt0cmVlRWxlbWVudF0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQodHJlZUVsZW1lbnQuc2VsZWN0ZWQsIGBUcmVlRWxlbWVudCAiJHt0cmVlRWxlbWVudC50
aXRsZX0iIHNob3VsZCBiZSBzZWxlY3RlZC5gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KHRyZWVPdXRsaW5lLmNoaWxkcmVuLmV2ZXJ5KCh4KSA9PiB4ID09PSB0cmVlRWxlbWVu
dCB8fCAheC5zZWxlY3RlZCksICJPdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIG5vdCBiZSBzZWxl
Y3RlZC4iKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0cmlnZ2VyU2VsZWN0VHJlZUVsZW1lbnRz
KHRyZWVPdXRsaW5lLCB0cmVlRWxlbWVudHMpIHsKKyAgICAgICAgbGV0IGRpc3BsYXlUZXh0ID0g
SlNPTi5zdHJpbmdpZnkodHJlZUVsZW1lbnRzLm1hcCgoeCkgPT4geC50aXRsZSkpOworCisgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKGBTZWxlY3RpbmcgVHJlZUVsZW1lbnRzICR7ZGlzcGxheVRl
eHR9Li4uYCk7CisgICAgICAgIHRyZWVPdXRsaW5lLnNlbGVjdFRyZWVFbGVtZW50cyh0cmVlRWxl
bWVudHMpOworCisgICAgICAgIGV4cGVjdFNlbGVjdGVkVHJlZUVsZW1lbnRzKHRyZWVPdXRsaW5l
LCB0cmVlRWxlbWVudHMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodHJlZUVs
ZW1lbnRzLmV2ZXJ5KCh4KSA9PiB4LnNlbGVjdGVkKSwgYFRyZWVFbGVtZW50cyAke2Rpc3BsYXlU
ZXh0fSBzaG91bGQgYmUgc2VsZWN0ZWQuYCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdCh0cmVlT3V0bGluZS5jaGlsZHJlbi5ldmVyeSgoeCkgPT4gIXguc2VsZWN0ZWQgfHwgdHJl
ZUVsZW1lbnRzLmluY2x1ZGVzKHgpKSwgIkFsbCBvdGhlciBUcmVlRWxlbWVudHMgc2hvdWxkIG5v
dCBiZSBzZWxlY3RlZC4iKTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJUcmVlT3V0bGluZS5jb25zdHJ1Y3RvciIsCisgICAgICAgIHRlc3QoKSB7Cisg
ICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVUcmVlT3V0bGluZSgpOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51bGwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVl
RWxlbWVudCwgInNlbGVjdGVkVHJlZUVsZW1lbnQgc2hvdWxkIGJlIG51bGwuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVs
ZW1lbnRzLmxlbmd0aCwgMCwgInNlbGVjdGVkVHJlZUVsZW1lbnRzIHNob3VsZCBiZSBlbXB0eS4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UodHJlZU91dGxpbmUuYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24sICJhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiBzaG91bGQgYmUg
ZmFsc2UuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLkZpbmRUcmVlRWxlbWVudCIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiRmluZCBhIFRyZWVFbGVtZW50IGJhc2VkIG9uIGl0cyBhc3NvY2lhdGVkIHJl
cHJlc2VudGVkIG9iamVjdC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgY29uc3Qg
cmVwcmVzZW50ZWRPYmplY3RzID0gWworICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMSJ9
LAorICAgICAgICAgICAgICAgIHt0aXRsZTogIkl0ZW0gMiJ9LAorICAgICAgICAgICAgICAgIHt0
aXRsZTogIkl0ZW0gMyJ9LAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgbGV0IHRyZWVP
dXRsaW5lID0gY3JlYXRlVHJlZU91dGxpbmUocmVwcmVzZW50ZWRPYmplY3RzKTsKKworICAgICAg
ICAgICAgbGV0IGV4aXN0aW5nVHJlZUVsZW1lbnQgPSB0cmVlT3V0bGluZS5maW5kVHJlZUVsZW1l
bnQocmVwcmVzZW50ZWRPYmplY3RzWzBdKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0Tm90TnVsbChleGlzdGluZ1RyZWVFbGVtZW50LCAiU2hvdWxkIGZpbmQgVHJlZUVsZW1lbnQg
Zm9yIHJlcHJlc2VudGVkIG9iamVjdC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoZXhpc3RpbmdUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCwgcmVwcmVzZW50
ZWRPYmplY3RzWzBdLCAiVHJlZUVsZW1lbnQgc2hvdWxkIGhhdmUgY29ycmVjdCByZXByZXNlbnRl
ZCBvYmplY3QuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsKKworICAg
ICAgICAgICAgbGV0IG1pc3NpbmdUcmVlRWxlbWVudCA9IHRyZWVPdXRsaW5lLmZpbmRUcmVlRWxl
bWVudCh7dGl0bGU6ICJCcmFuZCBOZXcgSXRlbSJ9KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0TnVsbChtaXNzaW5nVHJlZUVsZW1lbnQsICJTaG91bGQgbm90IGZpbmQgVHJlZUVs
ZW1lbnQgZm9yIHJlcHJlc2VudGVkIG9iamVjdC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVHJlZU91dGxpbmUuU2VsZWN0
ZWRUcmVlRWxlbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2VsZWN0IGEgdHJlZSBlbGVt
ZW50LCB0aGVuIHNlbGVjdCBhIGRpZmZlcmVudCB0cmVlIGVsZW1lbnQuIiwKKyAgICAgICAgdGVz
dCgpIHsKKyAgICAgICAgICAgIGNvbnN0IHJlcHJlc2VudGVkT2JqZWN0cyA9IFsKKyAgICAgICAg
ICAgICAgICB7dGl0bGU6ICJJdGVtIDEifSwKKyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVt
IDIifSwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IGNy
ZWF0ZVRyZWVPdXRsaW5lKHJlcHJlc2VudGVkT2JqZWN0cyk7CisKKyAgICAgICAgICAgIHRyaWdn
ZXJTZWxlY3RUcmVlRWxlbWVudCh0cmVlT3V0bGluZSwgdHJlZU91dGxpbmUuY2hpbGRyZW5bMF0p
OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAgICAgICAgIHRy
aWdnZXJTZWxlY3RUcmVlRWxlbWVudCh0cmVlT3V0bGluZSwgdHJlZU91dGxpbmUuY2hpbGRyZW5b
MV0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJUcmVlT3V0bGluZS5BbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gZW5hYmxlIG11bHRpcGxlIHNlbGVjdGlv
bi4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRyZWVPdXRsaW5lID0gY3Jl
YXRlVHJlZU91dGxpbmUoKTsKKworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxsb3dzTXVsdGlw
bGVTZWxlY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24gZW5hYmxlZC4iKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxl
U2VsZWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNl
KHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24gZGlzYWJsZWQuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLk11bHRpcGxlU2VsZWN0aW9uVG9n
Z2xlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2VsZWN0IG11bHRpcGxlIHRyZWUgZWxlbWVu
dHMgYW5kIHRoZW4gZGlzYWJsZSBtdWx0aXBsZSBzZWxlY3Rpb24uIiwKKyAgICAgICAgdGVzdCgp
IHsKKyAgICAgICAgICAgIGNvbnN0IHJlcHJlc2VudGVkT2JqZWN0cyA9IFsKKyAgICAgICAgICAg
ICAgICB7dGl0bGU6ICJJdGVtIDEifSwKKyAgICAgICAgICAgICAgICB7dGl0bGU6ICJJdGVtIDIi
fSwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGxldCB0cmVlT3V0bGluZSA9IGNyZWF0
ZVRyZWVPdXRsaW5lKHJlcHJlc2VudGVkT2JqZWN0cyk7CisgICAgICAgICAgICB0cmVlT3V0bGlu
ZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHRydWU7CisKKyAgICAgICAgICAgIGxldCBjaGls
ZHJlbiA9IHRyZWVPdXRsaW5lLmNoaWxkcmVuOworICAgICAgICAgICAgdHJlZU91dGxpbmUuc2Vs
ZWN0VHJlZUVsZW1lbnRzKGNoaWxkcmVuKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RTaGFsbG93RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMsIGNoaWxk
cmVuLCAiQWxsIFRyZWVFbGVtZW50cyBzaG91bGQgYmUgc2VsZWN0ZWQuIik7CisKKyAgICAgICAg
ICAgIHRyZWVPdXRsaW5lLmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVl
RWxlbWVudHMubGVuZ3RoLCAxLCAiU2hvdWxkIGhhdmUgb25lIHNlbGVjdGVkIFRyZWVFbGVtZW50
LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwodHJlZU91
dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMsIFtjaGlsZHJlblsxXV0sICJTZWxlY3RlZCBUcmVl
RWxlbWVudCBzaG91bGQgYmUgdGhlIGxhc3QgY2hpbGQuIik7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyZWVPdXRsaW5lLlNl
bGVjdFRyZWVFbGVtZW50cy5NdWx0aXBsZVNlbGVjdGlvbkVuYWJsZWQiLAorICAgICAgICBkZXNj
cmlwdGlvbjogIlNlbGVjdCB0d28gdHJlZSBlbGVtZW50cywgdGhlbiBzZWxlY3QgdHdvIGRpZmZl
cmVudCB0cmVlIGVsZW1lbnRzLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBjb25z
dCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAx
In0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0sCisgICAgICAgICAgICAgICAg
e3RpdGxlOiAiSXRlbSAzIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSA0In0sCisg
ICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVUcmVl
T3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgdHJlZU91dGxpbmUuYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlOworCisgICAgICAgICAgICBsZXQgY2hpbGRyZW4g
PSB0cmVlT3V0bGluZS5jaGlsZHJlbjsKKworICAgICAgICAgICAgdHJpZ2dlclNlbGVjdFRyZWVF
bGVtZW50cyh0cmVlT3V0bGluZSwgW2NoaWxkcmVuWzBdLCBjaGlsZHJlblsxXV0pOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAgICAgICAgIHRyaWdnZXJTZWxl
Y3RUcmVlRWxlbWVudHModHJlZU91dGxpbmUsIFtjaGlsZHJlblsyXSwgY2hpbGRyZW5bM11dKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiVHJlZU91dGxpbmUuU2VsZWN0VHJlZUVsZW1lbnRzLk11bHRpcGxlU2VsZWN0aW9uRGlz
YWJsZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNlbGVjdCBtdWx0aXBsZSB0cmVlIGVsZW1l
bnRzIHdpdGggbXVsdGlwbGUgc2VsZWN0aW9uIGRpc2FibGVkLiIsCisgICAgICAgIHRlc3QoKSB7
CisgICAgICAgICAgICBjb25zdCByZXByZXNlbnRlZE9iamVjdHMgPSBbCisgICAgICAgICAgICAg
ICAge3RpdGxlOiAiSXRlbSAxIn0sCisgICAgICAgICAgICAgICAge3RpdGxlOiAiSXRlbSAyIn0s
CisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBsZXQgdHJlZU91dGxpbmUgPSBjcmVhdGVU
cmVlT3V0bGluZShyZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgdHJlZU91dGxpbmUu
YWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZTsKKworICAgICAgICAgICAgdHJlZU91dGxp
bmUuc2VsZWN0VHJlZUVsZW1lbnRzKHRyZWVPdXRsaW5lLmNoaWxkcmVuKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVu
dHMubGVuZ3RoLCAwLCAiU2hvdWxkIGhhdmUgbm8gc2VsZWN0ZWQgVHJlZUVsZW1lbnRzLiIpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25Mb2FkPSJydW5UZXN0KCkiPgorICAgIDxw
PlRlc3RzIGZvciBXSS5UcmVlT3V0bGluZSBzZWxlY3Rpb24uPC9wPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxp
dGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQt
dXRpbGl0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBmODQ0NjM5OTE5NmM2Y2NlNWM5MTRlZjliNDU1
NjFlNWI2YzY2MzQ2Li5kMmU3ZDIyNjU5MGMzMmNlY2QyOWI2MWU3MGI5MmNhMWUxOTkxNGNiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQt
dXRpbGl0aWVzLWV4cGVjdGVkLnR4dApAQCAtNDEsMyArNDEsNyBAQCBQQVNTOiBTZXQgZGlmZmVy
ZW5jZSBzaG91bGQgYmUgWzFdLgogUEFTUzogU2V0IHdpdGggdmFsdWVzIFtdIHNob3VsZCBoYXZl
IGZpcnN0VmFsdWUgZXF1YWwgdG8gdW5kZWZpbmVkLgogUEFTUzogU2V0IHdpdGggdmFsdWVzIFsx
LDIsM10gc2hvdWxkIGhhdmUgZmlyc3RWYWx1ZSBlcXVhbCB0byAxLgogCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogU2V0LnByb3RvdHlwZS5sYXN0VmFsdWUKK1BBU1M6IFNldCB3aXRoIHZhbHVlcyBb
XSBzaG91bGQgaGF2ZSBsYXN0VmFsdWUgZXF1YWwgdG8gdW5kZWZpbmVkLgorUEFTUzogU2V0IHdp
dGggdmFsdWVzIFsxLDIsM10gc2hvdWxkIGhhdmUgbGFzdFZhbHVlIGVxdWFsIHRvIDMuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMuaHRt
bAppbmRleCA1MDMzMjkwMDAyMjA2YWU5MzFhZGFkZDc5NTZmZDg2N2U0N2I2NzVhLi41OTA1ZTJm
NmFkYzBlMDZjNWFlZjhhNjFkMmRmY2VjZWUzZTMxOTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zZXQtdXRpbGl0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy5odG1sCkBAIC0xMjIsNyArMTIy
LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJTZXQucHJvdG90eXBlLmZpcnN0
VmFsdWUiLAogICAgICAgICB0ZXN0KCkgewogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdEZpcnN0
VmFsdWUodmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChuZXcgU2V0KHZhbHVlcykuZmlyc3RWYWx1ZSwgdmFsdWVzWzBdLCBgU2V0IHdpdGggdmFsdWVz
IFske3ZhbHVlc31dIHNob3VsZCBoYXZlIGZpcnN0VmFsdWUgZXF1YWwgdG8gJHt2YWx1ZXNbMF19
LmApOworICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHZhbHVlc1swXTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG5ldyBTZXQodmFsdWVzKS5maXJzdFZh
bHVlLCBleHBlY3RlZCwgYFNldCB3aXRoIHZhbHVlcyBbJHt2YWx1ZXN9XSBzaG91bGQgaGF2ZSBm
aXJzdFZhbHVlIGVxdWFsIHRvICR7ZXhwZWN0ZWR9LmApOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICB0ZXN0Rmlyc3RWYWx1ZShbXSk7CkBAIC0xMzAsNiArMTMxLDE5IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJTZXQucHJvdG90eXBlLmxhc3RWYWx1ZSIsCisgICAgICAgIHRlc3QoKSB7
CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0TGFzdFZhbHVlKHZhbHVlcykgeworICAgICAgICAg
ICAgICAgIGxldCBleHBlY3RlZCA9IHZhbHVlcy5sYXN0VmFsdWU7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChuZXcgU2V0KHZhbHVlcykubGFzdFZhbHVlLCBleHBl
Y3RlZCwgYFNldCB3aXRoIHZhbHVlcyBbJHt2YWx1ZXN9XSBzaG91bGQgaGF2ZSBsYXN0VmFsdWUg
ZXF1YWwgdG8gJHtleHBlY3RlZH0uYCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRl
c3RMYXN0VmFsdWUoW10pOworICAgICAgICAgICAgdGVzdExhc3RWYWx1ZShbMSwgMiwgM10pOwor
ICAgICAgICB9CisgICAgfSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsK
IH0KIDwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>