<?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>145536</bug_id>
          
          <creation_ts>2015-06-01 17:24:41 -0700</creation_ts>
          <short_desc>Web Inspector: Add a filter for CSS properties in the Styles sidebar</short_desc>
          <delta_ts>2015-06-18 15:25:25 -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>528+ (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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</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>1098659</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-06-01 17:24:41 -0700</bug_when>
    <thetext>Add a filter bar to the computed and rules sidebar panels to allow filtering of the CSS properties in those lists. In the computed panel, matching properties will have the specific matching text highlighted (instead of the entire CSS property), while all other non-matching properties will not be displayed. In the rules panel, matching properties and selectors will be highlighted in their entirety (the whole CSS property/selector), while nonmatching properties will be slightly opaque.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098660</commentid>
    <comment_count>1</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-06-01 17:25:02 -0700</bug_when>
    <thetext>rdar://problem/13658649</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098686</commentid>
    <comment_count>2</comment_count>
      <attachid>254039</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-01 18:48:48 -0700</bug_when>
    <thetext>Created attachment 254039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098695</commentid>
    <comment_count>3</comment_count>
      <attachid>254039</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-01 19:19:04 -0700</bug_when>
    <thetext>Comment on attachment 254039
Patch

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

I included some mostly style comments / nits for a first pass. I haven&apos;t done a full review yet though.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:277
&gt; +        var selectors = this._selectorElement.querySelectorAll(&quot;.header .selector span&quot;),

Hmm, this is brittle and could break accidentally. For instance someone could change the markup for a selector and unintentionally break this. We may want to look into using higher level objects.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:278
&gt; +            hasMatchingSelector = false;

Style: One `var` per variable declaration avoids the weird indentation.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:283
&gt; +            if (needle &amp;&amp; selectors[i].textContent.indexOf(needle) &gt;= 0) {

Nit: String.prototype.includes?

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:227
&gt; +        var propertiesList = (this._style.visibleProperties.length) ? this._style.visibleProperties : this._style.properties;

Style: Unnecessary parenthesis.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:233
&gt; +                    property._filterResultClassName = null;

This is a case for &quot;__foo&quot; or using a Symbol(). Here, CSSStyleDeclarationTextEditor is adding a property onto another object. Using a name &quot;_foo&quot; might conflict with a member variable of that class. So we use &quot;__foo&quot; to denote this is an external property someone else has placed on this object.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:234
&gt; +                else if (property.text.indexOf(needle) &lt; 0)

Nit: String.prototype.includes?

  else if (!property.text.includes(needle))

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:250
&gt; +        var propertiesList = (this._style.visibleProperties.length) ? this._style.visibleProperties : this._style.properties;

Style: Unnecessary parenthesis.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:283
&gt; +                property._filterResultNeedlePosition = {start: indexesOfNeedle, length: needle.length};

Style: &quot;__&quot;.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:291
&gt; +        return (matchingPropertyNames.length &gt; 0);

Style: Unnecessary parenthesis.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.css:82
&gt; +    background-color: #fff;

Style: We would use the nickname &quot;white&quot; here.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.css:92
&gt; +    background-color: #fff;

Style: &quot;white&quot;.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:88
&gt; +        this._filterBar = new WebInspector.FilterBar();

Style: We drop constructor parenthesis if there are no arguments:

    this._filterBar = new WebInspector.FilterBar;

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:89
&gt; +        this._filterBar.placeholder = &quot;Filter Property List&quot;;

This should be a localizable string:

    this._filterBar.placeholder = WebInspector.UIString(&quot;Filter Property List&quot;);

We can then re-generate the localizable strings file like so:

    shell&gt; ./Tools/Scripts/extract-localizable-js-strings ./Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js ./Source/WebInspectorUI/UserInterface

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:95
&gt; +        this._filterBar._noResultsFoundLabel.textContent = &quot;No Results Found&quot;;

Another case for WebInspector.UIString.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:242
&gt; +        if (typeof this._selectedPanel.filterDidChange === &quot;function&quot;)
&gt; +            this.contentElement.classList.add(&quot;has-filter-bar&quot;);
&gt; +        else
&gt; +            this.contentElement.classList.remove(&quot;has-filter-bar&quot;);

Style: I think we have been simplifying these &quot;if add, else remove&quot; to just:

    var hasFilter = typeof this._selectedPanel.filterDidChange === &quot;function&quot;;
    this.contentElement.classList.toggle(&quot;has-filter-bar&quot;, hasFilter);

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:266
&gt; +    _filterDidChange(override) {

Style: Brace on newline.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:273
&gt; +        if (this._filterBar.filters.text)
&gt; +            this.contentElement.classList.add(&quot;filter-in-progress&quot;);
&gt; +        else 
&gt; +            this.contentElement.classList.remove(&quot;filter-in-progress&quot;);

Style: Ditto regarding classList.toggle.

&gt; Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsPanel.js:159
&gt; +        // Ensures that the filterBar will only reset when a new node is selected (it doesn&apos;t refresh on window resize)

Style: Comments are sentences and should end in a period.

&gt; Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsPanel.js:160
&gt; +        if (oldStyle &amp;&amp; typeof this._delegate.resetFilterBar === &quot;function&quot;)

Style: Multi-line if statements should include braces.

&gt; Source/WebInspectorUI/UserInterface/Views/FilterBar.js:106
&gt; +        return (this._lastFilterValue !== this._inputField.value);

Style: No need for the parenthesis here.

&gt; Source/WebInspectorUI/UserInterface/Views/FilterBar.js:130
&gt;          this.dispatchEventToListeners(WebInspector.FilterBar.Event.FilterDidChange);
&gt; +        this._lastFilterValue = this._inputField.value;

I&apos;d expect the event to be dispatched after the internal logic.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:249
&gt; +        if (oldStyle &amp;&amp; newSections.length &amp;&amp; typeof this._delegate.resetFilterBar === &quot;function&quot;)

Style: Braces

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:271
&gt; +    filterDidChange(filterBar) {

Style: Opening brace on its own line.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:273
&gt; +        for (var section of this._sections) 

Style: Braces

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:278
&gt; +            filterBar._noResultsFoundLabel.style.display = (!matchFound) ? &quot;block&quot; : &quot;none&quot;;

Style: Parenthesis not needed.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:293
&gt; +            if(section.needsToUpdate) {

Style: &quot;if (&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098727</commentid>
    <comment_count>4</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-06-01 21:54:13 -0700</bug_when>
    <thetext>Since it is a UI feature, it would be nice to have an animated GIF (I use http://www.cockos.com/licecap/ for capturing), a few seconds screencast (can be recorded with QuickTime) or at least a screenshot attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098798</commentid>
    <comment_count>5</comment_count>
      <attachid>254074</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-02 11:11:29 -0700</bug_when>
    <thetext>Created attachment 254074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099878</commentid>
    <comment_count>6</comment_count>
      <attachid>254074</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-06-05 11:34:37 -0700</bug_when>
    <thetext>Comment on attachment 254074
Patch

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

Not a full review, so refactoring needed still. Looking great though!

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:269
&gt; +        if (!this._filterBar.hasFilterChanged() &amp;&amp; !override)
&gt; +            return;

When is _filterDidChange called and hasFilterChanged() not true?

&gt; Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsPanel.js:165
&gt; +        // Ensures that the filterBar will only reset when a new node is selected (it doesn&apos;t refresh on window resize).
&gt; +        if (oldStyle &amp;&amp; typeof this._delegate.resetFilterBar === &quot;function&quot;) {
&gt; +            if (oldStyle.node === this.nodeStyles.node)
&gt; +                this._delegate._filterDidChange(true);
&gt; +            else
&gt; +                this._delegate.resetFilterBar();
&gt; +        }

I would expect this to be done at a higher level. CSSStyleDetailsSidebarPanel knows when the node changes or not. Dealing with the filter bar here breaks some layering and leaks some knowledge into these classes.

&gt; Source/WebInspectorUI/UserInterface/Views/FilterBar.js:107
&gt; +    hasFilterChanged()
&gt; +    {
&gt; +        return this._lastFilterValue !== this._inputField.value;
&gt; +    }

FilterBar has more than just a text filter sometimes. So this function isn&apos;t accurate when button filters are used.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:254
&gt; +        // Ensures that the filterBar will only reset when a new node is selected (it doesn&apos;t refresh on window resize).
&gt; +        if (oldStyle &amp;&amp; newSections.length &amp;&amp; typeof this._delegate.resetFilterBar === &quot;function&quot;) {
&gt; +            if (oldStyle[0].style.node === newSections[0].style.node)
&gt; +                this._delegate._filterDidChange(true);
&gt; +            else
&gt; +                this._delegate.resetFilterBar();
&gt; +        }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099979</commentid>
    <comment_count>7</comment_count>
      <attachid>254074</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-05 14:58:48 -0700</bug_when>
    <thetext>Comment on attachment 254074
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:269
&gt;&gt; +            return;
&gt; 
&gt; When is _filterDidChange called and hasFilterChanged() not true?

If the user just hits the enter key without changing the value of the filter, _filterDidChange does get called.  I added this check to avoid having to remark the matched properties again even though the filter hasn&apos;t changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100024</commentid>
    <comment_count>8</comment_count>
      <attachid>254074</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-06-05 17:28:16 -0700</bug_when>
    <thetext>Comment on attachment 254074
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:269
&gt;&gt;&gt; +            return;
&gt;&gt; 
&gt;&gt; When is _filterDidChange called and hasFilterChanged() not true?
&gt; 
&gt; If the user just hits the enter key without changing the value of the filter, _filterDidChange does get called.  I added this check to avoid having to remark the matched properties again even though the filter hasn&apos;t changed.

FilterBar should do that check internally then. That way all DilterBar clients can avoid the extra work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100551</commentid>
    <comment_count>9</comment_count>
      <attachid>254536</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-08 19:11:56 -0700</bug_when>
    <thetext>Created attachment 254536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101674</commentid>
    <comment_count>10</comment_count>
      <attachid>254536</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-12 12:21:40 -0700</bug_when>
    <thetext>Comment on attachment 254536
Patch

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

I&apos;d like to see an updated patch with some of the comments below resolved, so I can re-read the logic and make sure it all still makes sense. Overall this looks pretty good though!

&gt; Source/WebInspectorUI/ChangeLog:11
&gt; +        (WebInspector.CSSStyleDeclarationTextEditor.prototype.findMatchingProperties): Searches through the properties list to find and hightlight all matching properties.

Typo: &quot;hightlight&quot; =&gt; &quot;highlight&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:51
&gt; +    this._propertySelectors = [];

Style: This is a poor place in the constructor to put this. Lets move it up to ~line 35 or line 65 instead of in the middle of element creation.

Hmm, the name doesn&apos;t make sense to me. This seems to be just a list of each selector element, so why does the name have &quot;property&quot;? How about &quot;this._selectorElements&quot;?

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:199
&gt; +            this._propertySelectors.push(selectorElement);

Seeing as we add the new selector elements on refresh, we should probably be clearing the list at the top of refresh:

    this._selectorElements = [];

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:278
&gt; +    findMatchingProperties: function(needle)

This is not finding matching properties, it is finding matching selectors and properties. This should probably be renamed for clarity.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:280
&gt; +        this._element.classList.remove(&quot;filter-section-non-matching&quot;, &quot;filter-section-has-label&quot;);

Given that these class names are used in multiple places, it would make sense to put these out into a constant and use the constant.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:284
&gt; +        for (var selector of this._propertySelectors) {

It would be nice to easily see in the variable name that this is an element:

    for (var selectorElement of this._selectorElements)

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:298
&gt; +        if (!this._propertiesTextEditor.findMatchingProperties(needle)) {
&gt; +            if (!needle)
&gt; +                return false;
&gt; +
&gt; +            if (hasMatchingSelector)
&gt; +                this._propertiesTextEditor.clearMatchingProperties();

This seems to be doing duplicate work.

    1. Loop through all the selector elements and find matches.
    2. Loop through all properties and find matches.
    3. If there were no property matches but there was a matching selector loop through and clear matching properties?!

Step 3 is the seemingly confusing bit. I&apos;d like to see the pattern match the text editor more. With separate find and clear methods. Something like:

    updateFilter: function(needle)
    {
        if (!needle) {
            this._clearMatchingSelectors();
            this._propertiesTextEditor.clearMatchingProperties();
            return false;
        }

        var hasSelectorMatch = false;
        for (var selectorElement of this._selectorElements) {
            ...
        }

        var hasPropertiesMatch = this._propertiesTextEditor.findMatchingProperties(needle);
        if (!hasPropertiesMatch &amp;&amp; hasSelectorMatch)
            this._propertiesTextEditor.clearMatchingProperties(); // FIXME: This name makes it look like we are clearing the matches, but really we are clearly the non-matches!

        if (!hasSelectorMatch &amp;&amp; !hasPropertiesMatch) {
            this._element.classList.add(&quot;filter-section-non-matching&quot;);
            return false;
        }

        return true;
    }

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:241
&gt; +                if (!needle)
&gt; +                    property.__filterResultClassName = null;

Instead of doing this check for each property marker, I think it might be clearer to just hoist this up to the top:

    if (!needle) {
        this.clearMatchingProperties();
        return false;
    }

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:290
&gt; +            var indexesOfNeedle = [property.text.indexOf(needle)];
&gt; +            if (indexesOfNeedle[0] &gt;= 0) {
&gt; +                matchingPropertyNames.push(property.name);
&gt; +
&gt; +                property.__filterResultClassName = &quot;filter-matching&quot;;
&gt; +
&gt; +                var nextIndexOfNeedle = property.text.indexOf(needle, indexesOfNeedle[indexesOfNeedle.length - 1] + 1);
&gt; +                while (nextIndexOfNeedle &gt; 0) {
&gt; +                    indexesOfNeedle.push(nextIndexOfNeedle);
&gt; +                    nextIndexOfNeedle = property.text.indexOf(needle, indexesOfNeedle[indexesOfNeedle.length - 1] + 1);
&gt; +                }

This sounds like a great idea for a Utility function. And it would greatly simplify this particular function to focus on the higher level logic.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:296
&gt; +        this._filterResultPropertyNames = (matchingPropertyNames.length) ? matchingPropertyNames.keySet() : {};

Style: Unnecessary parenthesis.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.css:81
&gt; +    height: 29px;

Should be covered by .filter-bar in general. But fine to keep.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.css:96
&gt; +    display: block;

.filter-bar by default has display:flex and input[type=&quot;search&quot;] flexes. Do these new styles display the filter bar differently?

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:92
&gt; +        this._filterBar.placeholder = WebInspector.UIString(&quot;Filter Property List&quot;);

Maybe &quot;Filter Styles&quot; would be clearer. Since this filters not just properties but selectors and maybe more.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:95
&gt; +        this._filterBar._noResultsFoundLabel = document.createElement(&quot;div&quot;);

This element does not need to be on the filterBar, especially since this sidebar panel manages the element. It could just be:

    this._emptyFilterResultsElement

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:97
&gt; +        this._filterBar._noResultsFoundLabel.style.display = &quot;none&quot;;

I prefer just doing: element.hidden = true;

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:231
&gt; +            this.contentElement.classList.toggle(&quot;filter-in-progress&quot;, hasFilter);

Should &quot;filter-in-progress&quot; instead be the value of this._filterBar.hasActiveFilters()? Otherwise we will have the class name just switching panels without filters.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:262
&gt; +        if (this._filterBar) {

Unnecessary check.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:268
&gt; +            if (this._filterBar._noResultsFoundLabel)
&gt; +                this._filterBar._noResultsFoundLabel.style.display = &quot;none&quot;;
&gt; +
&gt; +            this._selectedPanel.filterDidChange(this._filterBar);

This should just use the return value of filterDidChange.

    var hasMatch = this._selectedPanel.filterDidChange(this._filterBar);
    this._emptyFilterResultsElement.hidden = hasMatch;

&gt; Source/WebInspectorUI/UserInterface/Views/FilterBar.js:106
&gt; +        return this._lastFilterValue.text !== this._inputField.value || this._lastFilterValue.functions.length !== this._filterFunctionsMap.size;

To be more accurate, you would need to compare the filter functions themselves.

    // Compare sizes, values and order.
    var lastFunctions = lastFilterValue.functions;
    var currentFunctions = [...this._filterFunctionsMap.values()];
    if (lastFunctions.length !== currentFunctions.length) return false;
    for (var i = 0; i &lt; lastFunctions.length; ++i) { ... }

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:305
&gt; +        if (filterBar._noResultsFoundLabel)
&gt; +            filterBar._noResultsFoundLabel.style.display = !matchFound ? &quot;block&quot; : &quot;none&quot;;

This seems like a layering violation. Instead of this panel do this, the owner who called us should do this based on our return value (return matchFound). This way this inner panel doesn&apos;t need to know about toggling UI it doesn&apos;t own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101721</commentid>
    <comment_count>11</comment_count>
      <attachid>254536</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-12 15:28:49 -0700</bug_when>
    <thetext>Comment on attachment 254536
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:98
&gt; +        this._filterBar._noResultsFoundLabel.textContent = WebInspector.UIString(&quot;No Results Found&quot;);

Also this style doesn&apos;t match the other Section&apos;s empty text (which is gray). Look for what WebInspector.DetailsSectionRow.EmptyStyleClassName does, and the cases of &quot;showEmptyMessage&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101775</commentid>
    <comment_count>12</comment_count>
      <attachid>254845</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-12 18:56:15 -0700</bug_when>
    <thetext>Created attachment 254845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101994</commentid>
    <comment_count>13</comment_count>
      <attachid>254845</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-15 12:13:57 -0700</bug_when>
    <thetext>Comment on attachment 254845
Patch

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

This patch looks much better to me! r=me

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:760
&gt; +            index = this.indexOf(needle, indexesOfNeedle.lastValue + 1);

Instead of &quot;indexedOfNeedle.lastValue&quot; it can just be &quot;index&quot;.

    index = this.indexOf(needle, index + 1);

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:247
&gt; +        if (!matchingProperties.includes(true))
&gt; +            return false;

This early return worries me. What if a filter matches something, then changes to something non-empty that doesn&apos;t match something. It seems we would bail here without updating anything in the UI. We should probably be reseting.

    if (!matchingProperties.includes(true)) {
        this.resetFilteredProperties();
        return false;
    }

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.css:100
&gt; +
&gt; +
&gt; +

Style: Too many newlines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102031</commentid>
    <comment_count>14</comment_count>
      <attachid>254892</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-15 14:08:00 -0700</bug_when>
    <thetext>Created attachment 254892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103012</commentid>
    <comment_count>15</comment_count>
      <attachid>254892</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 13:01:26 -0700</bug_when>
    <thetext>Comment on attachment 254892
Patch

Rejecting attachment 254892 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 254892, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ctorUI/UserInterface/Views/RulesStyleDetailsPanel.js
Hunk #1 FAILED at 25.
Hunk #6 FAILED at 262.
Hunk #7 succeeded at 286 (offset -3 lines).
2 out of 7 hunks FAILED -- saving rejects to file Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js.rej
patching file Source/WebInspectorUI/UserInterface/Views/StyleDetailsPanel.js

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Timothy Hatcher&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/4709083202453504</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103034</commentid>
    <comment_count>16</comment_count>
      <attachid>255134</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-18 14:32:06 -0700</bug_when>
    <thetext>Created attachment 255134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103050</commentid>
    <comment_count>17</comment_count>
      <attachid>255134</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 15:25:20 -0700</bug_when>
    <thetext>Comment on attachment 255134
Patch

Clearing flags on attachment: 255134

Committed r185723: &lt;http://trac.webkit.org/changeset/185723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103051</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 15:25:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254039</attachid>
            <date>2015-06-01 18:48:48 -0700</date>
            <delta_ts>2015-06-02 11:11:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145536-20150601184830.patch</filename>
            <type>text/plain</type>
            <size>27342</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGVmOWRmZWFkMTI3YzYxNjQ5NjIxZTk1ZjM1MjFl
ZjNmYTNjYTc1NjQuLjkyZTMyMWY3MzM3ZjBkMjE0ZDYzYWQ4ZTc0OTA1ZGYwYjUyOGIxZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE1LTA2LTAxICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgYSBmaWx0ZXIgZm9yIENTUyBwcm9wZXJ0aWVzIGluIHRoZSBTdHlsZXMgc2lkZWJhcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NTM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZS5maW5kTWF0Y2hpbmdQ
cm9wZXJ0aWVzKTogTG9vcHMgdGhyb3VnaCB0aGUgcHJvcGVydHkgbGlzdCBvZiBlYWNoIHNlY3Rp
b24gdG8gZmluZCBtYXRjaGVzIHRvIHRoZSBmaWx0ZXJlZCB0ZXh0LgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5maW5k
TWF0Y2hpbmdQcm9wZXJ0aWVzKTogU2VhcmNoZXMgdGhyb3VnaCB0aGUgcHJvcGVydGllcyBsaXN0
IHRvIGZpbmQgYW5kIGhpZ2h0bGlnaHQgYWxsIG1hdGNoaW5nIHByb3BlcnRpZXMuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLmNs
ZWFyTWF0Y2hpbmdQcm9wZXJ0aWVzKTogUmVzdG9yZXMgYWxsIHByb3BlcnRpZXMgdG8gZnVsbCB2
aXNpYmlsaXR5IGFuZCByZW1vdmVzIGFueSBoaWdobGlnaHRpbmcuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZU5vbk1h
dGNoaW5nUHJvcGVydGllcyk6IFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgdGhhdCBkbyBub3QgbWF0
Y2ggYW5kIGhpZ2hsaWdodHMgdGhlIHNwZWNpZmljIG1hdGNoZWQgdGV4dCBpbiBtYXRjaGluZyBw
cm9wZXJ0aWVzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0
RWRpdG9yLnByb3RvdHlwZS5yZXN0b3JlTm9uTWF0Y2hpbmdQcm9wZXJ0aWVzKTogUmVzdG9yZXMg
YWxsIHByb3BlcnRpZXMgdG8gZnVsbCB2aXNpYmlsaXR5IGFuZCByZW1vdmVzIGFueSBoaWdobGln
aHRpbmcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZCk6IENsYXNz
ZXMgYXJlIGFkZGVkIHRvIHNlbGVjdGlvbnMgb2YgdGhlIHRleHQgZWRpdG9yIG9mIHRoYXQgcGFy
dGl1bGFyIHNlbGVjdGlvbiBjb250YWlucyB0ZXh0IHdoaWNoIG1hdGNoZXMgdGhlIGZpbHRlciAo
c2VlIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MgZm9yIGRpZmZlcmVudCBjbGFzc2Vz
KS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5w
cm90b3R5cGUuX2l0ZXJhdGVPdmVyUHJvcGVydGllcyk6IElmIGEgZmlsdGVyIGlzIGFjdGl2ZSwg
ZmluZCBwcm9wZXJ0aWVzIG1hdGNoaW5nIHRoZSBmaWx0ZXIgaW5zdGVhZCBvZiBhbGwgcHJvcGVy
dGllcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5jc3M6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSA+IC5jb250ZW50Lmhhcy1maWx0ZXItYmFyKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQgKyAuZmlsdGVyLWJhcik6CisgICAgICAgICgu
c2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50ICsgLmZpbHRlci1i
YXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5k
ZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50Lmhhcy1maWx0ZXItYmFyICsgLmZpbHRlci1iYXIp
OgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVu
dC5maWx0ZXItaW4tcHJvZ3Jlc3MgLm5ldy1ydWxlKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBh
bmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0
ZXItbWF0Y2hpbmcpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rp
b24pOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29u
dGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24gPiAuaGVh
ZGVyID4gLnNlbGVjdG9yID4gLmZpbHRlci1tYXRjaGluZyk6CisgICAgICAgICguc2lkZWJhciA+
IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAu
ZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNoaW5nKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0ZXIt
cHJvcGVydHktbm9uLW1hdGNoaW5nKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzID4gLmxhYmVsLm5vLWZp
bHRlci1yZXN1bHRzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0
YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwpOiBBZGRlZCBhIGZpbHRlciBiYXIgdG8gdGhlIENTUyBzaWRlYmFyLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5
cGUucmVzZXRGaWx0ZXJCYXIpOiBDbGVhcnMgdGhlIGZpbHRlciBiYXIgb2YgdGV4dCBhbmQgcmVz
ZXRzIHRoZSBwYW5lbCB0byBzaG93IGFsbCB0aGUgb3JpZ2luYWwgcHJvcGVydGllcy4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9z
d2l0Y2hQYW5lbHMpOiBTd2l0Y2hpbmcgcGFuZWxzIHJlc2V0cyB0aGUgZmlsdGVyIGJhciB0ZXh0
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUuX2ZpbHRlckRpZENoYW5nZSk6IEZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBmaWx0ZXIg
YmFyIHRleHQgY2hhbmdlcyB0aGF0IGNhbGxzIHRoZSBjdXJyZW50IHBhbmVsJ3MgZmlsdGVyRGlk
Q2hhbmdlIGZ1bmN0aW9uIGlmIGl0IGV4aXN0cy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCk6IEFkZGVkIGRlbGVnYXRlIHZhcmlhYmxlIHRvIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLnJlZnJlc2gpOiBGaWx0ZXIgYmFyIHdpbGwgb25seSByZXNldCBpdCdzIGNv
bnRlbnQgd2hlbiBhIG5ldyBub2RlIGhhcyBiZWVuIHNlbGVjdGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmZpbHRlckRpZENoYW5n
ZSk6IEZ1bmN0aW9uIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBjb21wdXRlZCBzdHlsZXMgbGlzdCBh
bmQgaGlnaGxpZ2h0IGFuZCBkaXNwbGF5IGFsbCBtYXRjaGVzIG9mIHRoZSBmaWx0ZXIgYmFyIHRl
eHQgd2hpbGUgaGlkaW5nIGFsbCBvdGhlciBwcm9wZXJ0aWVzLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlckJh
cik6IEFkZGVkIGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSB0byBjaGVjayBpZiB0aGUgdGV4dCBpbiB0
aGUgZmlsdGVyIGJhciBoYWQgY2hhbmdlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRy
aWNzU3R5bGVEZXRhaWxzUGFuZWwpOiBBZGRlZCBkZWxlZ2F0ZSB2YXJpYWJsZSB0byBjb25zdHJ1
Y3Rvci4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6IEFk
ZGVkIGRlbGVnYXRlIHZhcmlhYmxlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnJlZnJlc2gpOiBGaWx0ZXIgYmFy
IHdpbGwgb25seSByZXNldCBpdCdzIGNvbnRlbnQgd2hlbiBhIG5ldyBub2RlIGhhcyBiZWVuIHNl
bGVjdGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLmZpbHRlckRpZENoYW5nZSk6IEZ1bmN0aW9uIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBj
b21wdXRlZCBzdHlsZXMgbGlzdCBhbmQgaGlnaGxpZ2h0IGFsbCBtYXRjaGVkIHByb3BlcnRpZXMg
YW5kIHNlbGVjdG9ycyBvZiB0aGUgZmlsdGVyIGJhciB0ZXh0LCB0dXJuaW5nIGFsbCBub24gbWF0
Y2hpbmcgcHJvcGVydGllcyBzbGlnaHRseSBvcGFxdWUgKHVubGVzcyBhIHNlbGVjdG9yIGZvciB0
aGF0IHByb3BlcnR5IGlzIGEgbWF0Y2gpLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxz
UGFuZWwpOiBBZGRlZCBkZWxlZ2F0ZSB2YXJpYWJsZSB0byBjb25zdHJ1Y3Rvci4KKwogMjAxNS0w
NS0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBEcm9wIGZvckVhY2ggZnJvbSBXZWFrTWFwIC8gV2Vha1NldCBuYXRpdmUg
bWVtYmVyIGZ1bmN0aW9uIG1hcHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNl
Y3Rpb24uanMKaW5kZXggMjM4ZTI1Njg3ZWZkZThjNzM5Y2NhNTQ5NjliNDY3M2Q3YWI5MmVlYS4u
ZjU5MjM4MTI4NWJkZDAwNjgyOGFmY2FlNWZjNDAzYTUxNjI2MDI0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTI3MCw2ICsyNzAsMzcgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCiAKKyAgICBmaW5kTWF0Y2hpbmdQcm9wZXJ0aWVzOiBm
dW5jdGlvbihuZWVkbGUpCisgICAgeworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoImZpbHRlci1zZWN0aW9uLW5vbi1tYXRjaGluZyIpOworCisgICAgICAgIHZhciBzZWxl
Y3RvcnMgPSB0aGlzLl9zZWxlY3RvckVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmhlYWRlciAu
c2VsZWN0b3Igc3BhbiIpLAorICAgICAgICAgICAgaGFzTWF0Y2hpbmdTZWxlY3RvciA9IGZhbHNl
OworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0b3JzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBzZWxlY3RvcnNbaV0uY2xhc3NMaXN0LnJlbW92ZSgiZmlsdGVyLW1hdGNo
aW5nIik7CisKKyAgICAgICAgICAgIGlmIChuZWVkbGUgJiYgc2VsZWN0b3JzW2ldLnRleHRDb250
ZW50LmluZGV4T2YobmVlZGxlKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0b3JzW2ld
LmNsYXNzTGlzdC5hZGQoImZpbHRlci1tYXRjaGluZyIpOworICAgICAgICAgICAgICAgIGhhc01h
dGNoaW5nU2VsZWN0b3IgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCF0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5maW5kTWF0Y2hpbmdQcm9wZXJ0aWVz
KG5lZWRsZSkpIHsKKyAgICAgICAgICAgIGlmICghbmVlZGxlKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGhhc01hdGNoaW5nU2VsZWN0b3IpCisgICAg
ICAgICAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IuY2xlYXJNYXRjaGluZ1Byb3Bl
cnRpZXMoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNoaW5nIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfSwKKwogICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IudXBkYXRlTGF5b3V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCmluZGV4
IDNmOTc2YzcwMWM3OGNhYmMyMjk1N2U4NmY5ZDViNGQ1MGNkNjI5NzguLmM0Mzk1Mzg1ZTViZmRi
OTRlYjJkYjZkZTg3NDI5NDU4MWY1YTUwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCkBAIC0zNiw2ICszNiw3IEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yCiAKICAgICAgICAgdGhpcy5fc2hvd3NJbXBsaWNpdFByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICB0aGlzLl9hbHdheXNTaG93UHJvcGVydHlOYW1lcyA9IHt9OworICAgICAgICB0
aGlzLl9maWx0ZXJSZXN1bHRQcm9wZXJ0eU5hbWVzID0gbnVsbDsKICAgICAgICAgdGhpcy5fc29y
dFByb3BlcnRpZXMgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLl9wcmVmaXhXaGl0ZXNwYWNlID0g
IiI7CkBAIC0yMjEsNiArMjIyLDgzIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBmaW5kTWF0Y2hpbmdQcm9wZXJ0aWVzKG5lZWRs
ZSkKKyAgICB7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzTGlzdCA9ICh0aGlzLl9zdHlsZS52aXNp
YmxlUHJvcGVydGllcy5sZW5ndGgpID8gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMgOiB0
aGlzLl9zdHlsZS5wcm9wZXJ0aWVzOworICAgICAgICB2YXIgbWF0Y2hGb3VuZCA9IGZhbHNlOwor
CisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHByb3BlcnRpZXNMaXN0KSB7CisgICAgICAg
ICAgICBpZiAocHJvcGVydHkuX19wcm9wZXJ0eVRleHRNYXJrZXIpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIW5lZWRsZSkKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkuX2ZpbHRlclJlc3Vs
dENsYXNzTmFtZSA9IG51bGw7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHkudGV4
dC5pbmRleE9mKG5lZWRsZSkgPCAwKQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eS5fZmls
dGVyUmVzdWx0Q2xhc3NOYW1lID0gImZpbHRlci1wcm9wZXJ0eS1ub24tbWF0Y2hpbmciOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eS5fZmlsdGVy
UmVzdWx0Q2xhc3NOYW1lID0gImZpbHRlci1tYXRjaGluZyI7CisgICAgICAgICAgICAgICAgICAg
IG1hdGNoRm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZVRleHRNYXJrZXJGb3JQcm9wZXJ0eUlmTmVlZGVkKHByb3BlcnR5KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYXRjaEZvdW5kOworICAg
IH0KKworICAgIGNsZWFyTWF0Y2hpbmdQcm9wZXJ0aWVzKCkKKyAgICB7CisgICAgICAgIHZhciBw
cm9wZXJ0aWVzTGlzdCA9ICh0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcy5sZW5ndGgpID8g
dGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMgOiB0aGlzLl9zdHlsZS5wcm9wZXJ0aWVzOwor
CisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHByb3BlcnRpZXNMaXN0KSB7CisgICAgICAg
ICAgICBpZiAocHJvcGVydHkuX19wcm9wZXJ0eVRleHRNYXJrZXIpIHsKKyAgICAgICAgICAgICAg
ICBwcm9wZXJ0eS5fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lID0gbnVsbDsKKworICAgICAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZVRleHRNYXJrZXJGb3JQcm9wZXJ0eUlmTmVlZGVkKHByb3BlcnR5KQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmVtb3ZlTm9uTWF0Y2hpbmdQ
cm9wZXJ0aWVzKG5lZWRsZSkKKyAgICB7CisgICAgICAgIHRoaXMucmVzdG9yZU5vbk1hdGNoaW5n
UHJvcGVydGllcygpOworCisgICAgICAgIGlmICghbmVlZGxlKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHZhciBtYXRjaGluZ1Byb3BlcnR5TmFtZXMgPSBbXTsKKworICAg
ICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiB0aGlzLl9zdHlsZS5wcm9wZXJ0aWVzKSB7CisgICAg
ICAgICAgICB2YXIgaW5kZXhlc09mTmVlZGxlID0gW3Byb3BlcnR5LnRleHQuaW5kZXhPZihuZWVk
bGUpXTsKKyAgICAgICAgICAgIGlmIChpbmRleGVzT2ZOZWVkbGVbMF0gPj0gMCkgeworICAgICAg
ICAgICAgICAgIG1hdGNoaW5nUHJvcGVydHlOYW1lcy5wdXNoKHByb3BlcnR5Lm5hbWUpOworCisg
ICAgICAgICAgICAgICAgcHJvcGVydHkuX2ZpbHRlclJlc3VsdENsYXNzTmFtZSA9ICJmaWx0ZXIt
bWF0Y2hpbmciOworCisgICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleE9mTmVlZGxlID0gcHJv
cGVydHkudGV4dC5pbmRleE9mKG5lZWRsZSwgaW5kZXhlc09mTmVlZGxlW2luZGV4ZXNPZk5lZWRs
ZS5sZW5ndGggLSAxXSArIDEpOworICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0SW5kZXhPZk5l
ZWRsZSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhlc09mTmVlZGxlLnB1c2gobmV4
dEluZGV4T2ZOZWVkbGUpOworICAgICAgICAgICAgICAgICAgICBuZXh0SW5kZXhPZk5lZWRsZSA9
IHByb3BlcnR5LnRleHQuaW5kZXhPZihuZWVkbGUsIGluZGV4ZXNPZk5lZWRsZVtpbmRleGVzT2ZO
ZWVkbGUubGVuZ3RoIC0gMV0gKyAxKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eS5fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24gPSB7c3RhcnQ6IGluZGV4
ZXNPZk5lZWRsZSwgbGVuZ3RoOiBuZWVkbGUubGVuZ3RofTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuX2ZpbHRlclJlc3VsdFByb3BlcnR5TmFtZXMgPSAobWF0Y2hp
bmdQcm9wZXJ0eU5hbWVzLmxlbmd0aCkgPyBtYXRjaGluZ1Byb3BlcnR5TmFtZXMua2V5U2V0KCkg
OiB7fTsKKworICAgICAgICB0aGlzLl9yZXNldENvbnRlbnQoKTsKKworICAgICAgICByZXR1cm4g
KG1hdGNoaW5nUHJvcGVydHlOYW1lcy5sZW5ndGggPiAwKTsKKyAgICB9CisKKyAgICByZXN0b3Jl
Tm9uTWF0Y2hpbmdQcm9wZXJ0aWVzKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maWx0ZXJS
ZXN1bHRQcm9wZXJ0eU5hbWVzKSB7CisgICAgICAgICAgICB0aGlzLl9maWx0ZXJSZXN1bHRQcm9w
ZXJ0eU5hbWVzID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29udGVudCgpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBkaWREaXNtaXNzUG9wb3Zl
cihwb3BvdmVyKQpAQCAtNTA5LDYgKzU4Nyw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAg
ICAgICAgIGlmICghcHJvcGVydHkuZW5hYmxlZCkKICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVz
aCgiZGlzYWJsZWQiKTsKIAorICAgICAgICBpZiAocHJvcGVydHkuX2ZpbHRlclJlc3VsdENsYXNz
TmFtZSAmJiAhcHJvcGVydHkuX2ZpbHRlclJlc3VsdE5lZWRsZVBvc2l0aW9uKQorICAgICAgICAg
ICAgY2xhc3NOYW1lcy5wdXNoKHByb3BlcnR5Ll9maWx0ZXJSZXN1bHRDbGFzc05hbWUpOworCiAg
ICAgICAgIHZhciBjbGFzc05hbWVzU3RyaW5nID0gY2xhc3NOYW1lcy5qb2luKCIgIik7CiAKICAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHRleHQgbWFya2VyIGFuZCBpdCdzIGluIHRo
ZSBzYW1lIGRvY3VtZW50LCB0aGVuIHRyeSB0byBhdm9pZCByZWNyZWF0aW5nIGl0LgpAQCAtNTMw
LDYgKzYxMSwxNSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Ig
PSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICBwcm9wZXJ0eS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5FdmVudC5PdmVycmlkZGVu
U3RhdHVzQ2hhbmdlZCwgdGhpcy5fcHJvcGVydHlPdmVycmlkZGVuU3RhdHVzQ2hhbmdlZCwgdGhp
cyk7CiAKICAgICAgICAgdGhpcy5fcmVtb3ZlQ2hlY2tib3hQbGFjZWhvbGRlcihmcm9tLmxpbmUp
OworCisgICAgICAgIGlmIChwcm9wZXJ0eS5fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lICYmIHByb3Bl
cnR5Ll9maWx0ZXJSZXN1bHROZWVkbGVQb3NpdGlvbikgeworICAgICAgICAgICAgZm9yICh2YXIg
bmVlZGxlUG9zaXRpb24gb2YgcHJvcGVydHkuX2ZpbHRlclJlc3VsdE5lZWRsZVBvc2l0aW9uLnN0
YXJ0KSB7CisgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0ge2xpbmU6IGZyb20ubGluZSwgY2g6
IG5lZWRsZVBvc2l0aW9ufTsKKyAgICAgICAgICAgICAgICB2YXIgZW5kID0ge2xpbmU6IHRvLmxp
bmUsIGNoOiBzdGFydC5jaCArIHByb3BlcnR5Ll9maWx0ZXJSZXN1bHROZWVkbGVQb3NpdGlvbi5s
ZW5ndGh9OworCisgICAgICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5tYXJrVGV4dChzdGFy
dCwgZW5kLCB7Y2xhc3NOYW1lOiBwcm9wZXJ0eS5fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lfSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBfY2xlYXJUZXh0TWFya2Vycyhu
b25hdG9taWMsIGFsbCkKQEAgLTU2OSw3ICs2NTksMTQgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IKICAgICB7CiAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gb25seVZpc2libGVQcm9wZXJ0aWVz
ID8gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMgOiB0aGlzLl9zdHlsZS5wcm9wZXJ0aWVz
OwogCi0gICAgICAgIGlmICghb25seVZpc2libGVQcm9wZXJ0aWVzKSB7CisgICAgICAgIGlmICh0
aGlzLl9maWx0ZXJSZXN1bHRQcm9wZXJ0eU5hbWVzKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVz
ID0gcHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24ocHJvcGVydHkpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKCFwcm9wZXJ0eS5pbXBsaWNpdCB8fCB0aGlzLl9zaG93c0ltcGxpY2l0UHJvcGVy
dGllcykgJiYgcHJvcGVydHkubmFtZSBpbiB0aGlzLl9maWx0ZXJSZXN1bHRQcm9wZXJ0eU5hbWVz
OworICAgICAgICAgICAgfSwgdGhpcyk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9zb3J0UHJv
cGVydGllcykKKyAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnNvcnQoZnVuY3Rpb24oYSwgYikg
eyByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTsgfSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoIW9ubHlWaXNpYmxlUHJvcGVydGllcykgewogICAgICAgICAgICAgLy8gRmlsdGVyIGJh
c2VkIG9uIG9wdGlvbnMgb25seSB3aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSB1c2VkLgogICAgICAg
ICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uKHByb3BlcnR5KSB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuICFwcm9wZXJ0eS5pbXBsaWNpdCB8fCB0aGlzLl9zaG93
c0ltcGxpY2l0UHJvcGVydGllcyB8fCBwcm9wZXJ0eS5jYW5vbmljYWxOYW1lIGluIHRoaXMuX2Fs
d2F5c1Nob3dQcm9wZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbC5jc3MKaW5kZXggZmNjM2I4ZDM3ZDM2NjJjMGU1M2M2OGZjNTU2ZTNjMzY5OGFh
NzE5Ny4uNzI4MmE2NDQ5MmJmYzAwODZlYThlYTA3YThlOTM1MDZkZTFkYTFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzCkBAIC00Miw2ICs0Miwx
MCBAQAogICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKIH0KIAorLnNpZGViYXIgPiAucGFuZWwuZGV0
YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5oYXMtZmlsdGVyLWJhciB7CisgICAgYm90dG9tOiAy
OHB4OworfQorCiAuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50
ID4gLnBzZXVkby1jbGFzc2VzIHsKICAgICBwYWRkaW5nOiAxMHB4OwogICAgIGJvcmRlci1ib3R0
b206IDFweCBzb2xpZCByZ2IoMTc5LCAxNzksIDE3OSk7CkBAIC02OCwzICs3Miw2MiBAQAogICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogfQorCisu
c2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50ICsgLmZpbHRlci1i
YXIgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJv
dHRvbTogMDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDI5cHg7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogI2ZmZjsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDE3OSwgMTc5
LCAxNzkpOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250
ZW50ICsgLmZpbHRlci1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMDsKKyAgICBsZWZ0OiAwOworICAg
IG1hcmdpbjogM3B4OworICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cit9CisKKy5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuaGFzLWZpbHRlci1iYXIgKyAu
ZmlsdGVyLWJhciB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5sYWJlbCwK
Ky5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWlu
LXByb2dyZXNzIC5uZXctcnVsZSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnNpZGViYXIg
PiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3Mg
LmZpbHRlci1tYXRjaGluZyB7CisgICAgZGlzcGxheTogaW5saW5lOworICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYmEoMjM1LCAyMTUsIDM4LCAwLjUpOworICAgIGJvcmRlci1ib3R0b206IDFweCBz
b2xpZCByZ2IoMjM3LCAyMDIsIDcxKTsKKyAgICBvcGFjaXR5OiAxOworfQorCisuc2lkZWJhciA+
IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAu
c3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiB7CisgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cisg
ICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OworICAgIGJvcmRlci1ib3R0b206IDFweCBz
b2xpZCByZ2IoMTc5LCAxNzksIDE3OSk7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5zdHlsZS1kZWNsYXJhdGlv
bi1zZWN0aW9uID4gLmhlYWRlciA+IC5zZWxlY3RvciA+IC5maWx0ZXItbWF0Y2hpbmcgeworICAg
IGNvbG9yOiBibGFjazsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUg
PiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLmZpbHRlci1zZWN0aW9uLW5vbi1tYXRjaGlu
ZyB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5j
c3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLmZpbHRlci1wcm9wZXJ0eS1u
b24tbWF0Y2hpbmcgeworICAgIG9wYWNpdHk6IDAuNTsKK30KKworLnNpZGViYXIgPiAucGFuZWwu
ZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgPiAubGFiZWwu
bm8tZmlsdGVyLXJlc3VsdHMgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIG1hcmdpbjogMTBw
eCAwOworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA2M2FkZTEzZjExNGQ3NmJmYWFkOGNjOGNlZjQ2
MTQyN2RhNWIxZmFiLi5kZmUxMTQ1MDMwZGMyOTIzMDRlYjNlMGQ4Y2JmMmY5NDUwNWI0YzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC03MSw4
ICs3MSw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFz
cyBDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAgICAgICAgIH0KIAogICAgICAgICB0
aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRl
ZFN0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwotICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWls
c1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsOwotICAgICAg
ICB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJp
Y3NTdHlsZURldGFpbHNQYW5lbDsKKyAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5l
bCA9IG5ldyBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKKyAgICAg
ICAgdGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5NZXRy
aWNzU3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fcGFuZWxzID0gW3Ro
aXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwsIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbF07CiAKQEAgLTg0LDYgKzg0LDE4IEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAKICAgICAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHRo
ZSBzZWxlY3RlZCBwYW5lbCB0byBiZSBzZXQgaW4gX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQuCiAg
ICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHRoaXMu
X2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOworCisgICAgICAgIHRoaXMuX2ZpbHRl
ckJhciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyKCk7CisgICAgICAgIHRoaXMuX2ZpbHRl
ckJhci5wbGFjZWhvbGRlciA9ICJGaWx0ZXIgUHJvcGVydHkgTGlzdCI7CisgICAgICAgIHRoaXMu
X2ZpbHRlckJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQu
RmlsdGVyRGlkQ2hhbmdlLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMpOworCisgICAgICAg
IHRoaXMuX2ZpbHRlckJhci5fbm9SZXN1bHRzRm91bmRMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9maWx0ZXJCYXIuX25vUmVzdWx0c0ZvdW5kTGFi
ZWwuY2xhc3NOYW1lID0gImxhYmVsIG5vLWZpbHRlci1yZXN1bHRzIjsKKyAgICAgICAgdGhpcy5f
ZmlsdGVyQmFyLl9ub1Jlc3VsdHNGb3VuZExhYmVsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cisg
ICAgICAgIHRoaXMuX2ZpbHRlckJhci5fbm9SZXN1bHRzRm91bmRMYWJlbC50ZXh0Q29udGVudCA9
ICJObyBSZXN1bHRzIEZvdW5kIjsKKworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fZmlsdGVyQmFyLmVsZW1lbnQpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2ZpbHRlckJhci5fbm9SZXN1bHRzRm91bmRMYWJlbCk7CiAgICAgfQog
CiAgICAgLy8gUHVibGljCkBAIC0xNDUsNiArMTU3LDEyIEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwg
ZXh0CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9
IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOwogICAgIH0KIAorICAgIHJl
c2V0RmlsdGVyQmFyKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maWx0ZXJCYXIgJiYgdGhp
cy5fZmlsdGVyQmFyLmZpbHRlcnMudGV4dCkKKyAgICAgICAgICAgIHRoaXMuX2ZpbHRlckJhci5m
aWx0ZXJzID0gbnVsbDsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGFkZEV2ZW50
TGlzdGVuZXJzKCkKQEAgLTE5NSw2ICsyMTMsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc2VsZWN0ZWRQYW5lbCk7CiAKKyAgICAgICAg
dGhpcy5yZXNldEZpbHRlckJhcigpOworCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFBhbmVs
KSB7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsLmhpZGRlbigpOwogICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC5lbGVtZW50Ll9zYXZlZFNjcm9sbFRvcCA9IHRoaXMuY29u
dGVudEVsZW1lbnQuc2Nyb2xsVG9wOwpAQCAtMjE1LDYgKzIzNSwxMSBAQCBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsIGV4dAogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkU2VjdGlv
blNldHRpbmcudmFsdWUgPSBzZWxlY3RlZFBhbmVsLm5hdmlnYXRpb25JdGVtLmlkZW50aWZpZXI7
CisKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zZWxlY3RlZFBhbmVsLmZpbHRlckRpZENoYW5n
ZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiaGFzLWZpbHRlci1iYXIiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhp
cy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoYXMtZmlsdGVyLWJhciIpOwogICAg
IH0KIAogICAgIF9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNrYm94Q2hhbmdlZChwc2V1ZG9DbGFzcywg
ZXZlbnQpCkBAIC0yMzcsNiArMjYyLDE5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNT
aWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAgICAg
ICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IGVuYWJsZWRQc2V1ZG9DbGFzc2VzLmlu
Y2x1ZGVzKHBzZXVkb0NsYXNzKTsKICAgICAgICAgfQogICAgIH0KKworICAgIF9maWx0ZXJEaWRD
aGFuZ2Uob3ZlcnJpZGUpIHsKKyAgICAgICAgaWYgKCF0aGlzLl9maWx0ZXJCYXIuaGFzRmlsdGVy
Q2hhbmdlZCgpICYmICFvdmVycmlkZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAodGhpcy5fZmlsdGVyQmFyLmZpbHRlcnMudGV4dCkKKyAgICAgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZmlsdGVyLWluLXByb2dyZXNzIik7CisgICAgICAgIGVs
c2UgCisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImZp
bHRlci1pbi1wcm9ncmVzcyIpOworCisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fc2VsZWN0ZWRQ
YW5lbC5maWx0ZXJEaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aGlzLl9z
ZWxlY3RlZFBhbmVsLmZpbHRlckRpZENoYW5nZSh0aGlzLl9maWx0ZXJCYXIpOworICAgIH0KIH07
CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQc2V1
ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0ID0gMzg7IC8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBmb3Jj
ZWQgcHNldWRvIGNsYXNzZXMgY29udGFpbmVyLiBVcGRhdGVkIGluIHdpZHRoRGlkQ2hhbmdlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggY2YzOThmOWQ5
OTE0ZmNiNTY2OTY4MjQ5NDU4NzU3ZGJkZjlhYjJkYS4uOTc0ZTNjZGJmOTI2MTk1NmZiNWY2Mzgz
ZmU5MzdkOWZjNmVhMDQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1Bh
bmVsLmpzCkBAIC0yNyw5ICsyNyw3IEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzCiB7CiAgICAg
Y29uc3RydWN0b3IoZGVsZWdhdGUpCiAgICAgewotICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3Iu
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKLQotICAgICAgICB0aGlzLl9kZWxlZ2F0
ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisgICAgICAgIHN1cGVyKGRlbGVnYXRlLCBXZWJJbnNwZWN0
b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKIAogICAgICAgICB0aGlzLl9jb21w
dXRlZFN0eWxlU2hvd0FsbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImNvbXB1
dGVkLXN0eWxlLXNob3ctYWxsIiwgZmFsc2UpOwogCkBAIC0xNTEsOCArMTQ5LDIzIEBAIFdlYklu
c3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURl
dGFpbHNQYW5lbCBleHRlbmRzCiAKICAgICByZWZyZXNoKCkKICAgICB7CisgICAgICAgIHZhciBv
bGRTdHlsZTsKKyAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yKQorICAgICAg
ICAgICAgb2xkU3R5bGUgPSB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zdHlsZTsKKwogICAg
ICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zdHlsZSA9IHRoaXMubm9kZVN0eWxlcy5j
b21wdXRlZFN0eWxlOwogICAgICAgICB0aGlzLl9yZWZyZXNoRmxvd0RldGFpbHModGhpcy5ub2Rl
U3R5bGVzLm5vZGUpOworCisgICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgZmlsdGVyQmFyIHdp
bGwgb25seSByZXNldCB3aGVuIGEgbmV3IG5vZGUgaXMgc2VsZWN0ZWQgKGl0IGRvZXNuJ3QgcmVm
cmVzaCBvbiB3aW5kb3cgcmVzaXplKQorICAgICAgICBpZiAob2xkU3R5bGUgJiYgdHlwZW9mIHRo
aXMuX2RlbGVnYXRlLnJlc2V0RmlsdGVyQmFyID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAg
aWYgKG9sZFN0eWxlLm5vZGUgPT09IHRoaXMubm9kZVN0eWxlcy5ub2RlKQorICAgICAgICAgICAg
ICAgIHRoaXMuX2RlbGVnYXRlLl9maWx0ZXJEaWRDaGFuZ2UodHJ1ZSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUucmVzZXRGaWx0ZXJCYXIoKTsKKyAg
ICB9CisKKyAgICBmaWx0ZXJEaWRDaGFuZ2UoZmlsdGVyQmFyKSB7CisgICAgICAgIHRoaXMuX3By
b3BlcnRpZXNUZXh0RWRpdG9yLnJlbW92ZU5vbk1hdGNoaW5nUHJvcGVydGllcyhmaWx0ZXJCYXIu
ZmlsdGVycy50ZXh0KTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcwppbmRl
eCBhOWYwNjAyMGExNmE5MjFmMDZlODg2MjNhYzRlNzk4NzhmNmI2OTQ1Li4yOGVhNDViN2ViMDI3
NWVmZWQ5NDM1OGYwZDhkMjczYTZiYzY5NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCkBAIC00Myw2ICs0Myw4
IEBAIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBjbGFzcyBGaWx0ZXJCYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX2lucHV0RmllbGQuaW5jcmVtZW50YWwgPSB0
cnVlOwogICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIs
IHRoaXMuX2hhbmRsZUZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2lucHV0RmllbGQpOworCisgICAgICAgIHRo
aXMuX2xhc3RGaWx0ZXJWYWx1ZSA9ICIiOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtOTks
NiArMTAxLDExIEBAIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBjbGFzcyBGaWx0ZXJCYXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiAhIXRoaXMuX2lucHV0Rmll
bGQudmFsdWUgfHwgISF0aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAuc2l6ZTsKICAgICB9CiAKKyAg
ICBoYXNGaWx0ZXJDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAodGhpcy5fbGFzdEZp
bHRlclZhbHVlICE9PSB0aGlzLl9pbnB1dEZpZWxkLnZhbHVlKTsKKyAgICB9CisKICAgICAvLyBQ
cml2YXRlCiAKICAgICBfaGFuZGxlRmlsdGVyQmFyQnV0dG9uQ2xpY2tlZChldmVudCkKQEAgLTEy
MCw2ICsxMjcsNyBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyID0gY2xhc3MgRmlsdGVyQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIF9oYW5kbGVGaWx0ZXJDaGFuZ2VkKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5G
aWx0ZXJCYXIuRXZlbnQuRmlsdGVyRGlkQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5fbGFzdEZpbHRl
clZhbHVlID0gdGhpcy5faW5wdXRGaWVsZC52YWx1ZTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVE
ZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggODg5NTQzMThmYjQ4NjNmNDNkOGI5
M2ZhOGMxNWEyZDY4Nzg0Mjc3ZC4uNTY1MmFkYTE5N2Q3YTk3Mzg1MmVkMjcyOThkM2E5ZDQxOTU2
MGE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMjUs
OSArMjUsOSBAQAogCiBXZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xh
c3MgTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0eWxlRGV0
YWlsc1BhbmVsCiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRl
KQogICAgIHsKLSAgICAgICAgc3VwZXIoIm1ldHJpY3MiLCAibWV0cmljcyIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTWV0cmljcyIpKTsKKyAgICAgICAgc3VwZXIoZGVsZWdhdGUsICJtZXRyaWNz
IiwgIm1ldHJpY3MiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1ldHJpY3MiKSk7CiAKICAgICAg
ICAgdGhpcy5fYm94TW9kZWxEaWFncmFtUm93ID0gbmV3IFdlYkluc3BlY3Rvci5Cb3hNb2RlbERl
dGFpbHNTZWN0aW9uUm93OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwpp
bmRleCA1OTVmZTQyMjE3ZDkyODAxNDU3M2U5YmFkNTI0Njg5M2VmMGVlNTkwLi45ZGRlNGM4NGFl
ZWIyOGU4NzEyMGIyNTU5NmQ1MmM4NGI4NzgxYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwuanMKQEAgLTI1LDkgKzI1LDkgQEAKIAogV2ViSW5zcGVjdG9yLlJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsCiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNv
bnN0cnVjdG9yKGRlbGVnYXRlKQogICAgIHsKLSAgICAgICAgc3VwZXIoInJ1bGVzIiwgInJ1bGVz
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdWxlcyIpKTsKKyAgICAgICAgc3VwZXIoZGVsZWdh
dGUsICJydWxlcyIsICJydWxlcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVsZXMiKSk7CiAK
ICAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSBbXTsKICAgICAgICAgdGhpcy5fcHJvcGVydHlUb1Nl
bGVjdEFuZEhpZ2hsaWdodCA9IG51bGw7CkBAIC0yMzMsNiArMjMzLDEwIEBAIFdlYkluc3BlY3Rv
ci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBl
eHRlbmRzIFdlYkluCiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAg
ICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3RE9NRnJhZ21lbnQpOwogCisgICAgICAg
IHZhciBvbGRTdHlsZTsKKyAgICAgICAgaWYgKHRoaXMuX3NlY3Rpb25zLmxlbmd0aCkKKyAgICAg
ICAgICAgIG9sZFN0eWxlID0gdGhpcy5fc2VjdGlvbnM7CisKICAgICAgICAgdGhpcy5fc2VjdGlv
bnMgPSBuZXdTZWN0aW9uczsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Nl
Y3Rpb25zLmxlbmd0aDsgKytpKQpAQCAtMjQwLDYgKzI0NCwxMyBAQCBXZWJJbnNwZWN0b3IuUnVs
ZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5k
cyBXZWJJbgogCiAgICAgICAgIGlmIChwcmV2aW91c0ZvY3VzZWRTZWN0aW9uKQogICAgICAgICAg
ICAgcHJldmlvdXNGb2N1c2VkU2VjdGlvbi5mb2N1cygpOworCisgICAgICAgIC8vIEVuc3VyZXMg
dGhhdCB0aGUgZmlsdGVyQmFyIHdpbGwgb25seSByZXNldCB3aGVuIGEgbmV3IG5vZGUgaXMgc2Vs
ZWN0ZWQgKGl0IGRvZXNuJ3QgcmVmcmVzaCBvbiB3aW5kb3cgcmVzaXplKQorICAgICAgICBpZiAo
b2xkU3R5bGUgJiYgbmV3U2VjdGlvbnMubGVuZ3RoICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5y
ZXNldEZpbHRlckJhciA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIGlmIChvbGRTdHlsZVsw
XS5zdHlsZS5ub2RlID09PSBuZXdTZWN0aW9uc1swXS5zdHlsZS5ub2RlKQorICAgICAgICAgICAg
ICAgIHRoaXMuX2RlbGVnYXRlLl9maWx0ZXJEaWRDaGFuZ2UodHJ1ZSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUucmVzZXRGaWx0ZXJCYXIoKTsKICAg
ICB9CiAKICAgICBzY3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSkK
QEAgLTI1Nyw2ICsyNjgsMTYgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwg
PSBjbGFzcyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGZpbHRlckRpZENoYW5nZShmaWx0ZXJCYXIpIHsKKyAg
ICAgICAgdmFyIG1hdGNoRm91bmQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgc2VjdGlvbiBv
ZiB0aGlzLl9zZWN0aW9ucykgCisgICAgICAgICAgICBpZiAoc2VjdGlvbi5maW5kTWF0Y2hpbmdQ
cm9wZXJ0aWVzKGZpbHRlckJhci5maWx0ZXJzLnRleHQpKQorICAgICAgICAgICAgICAgIG1hdGNo
Rm91bmQgPSB0cnVlOworCisgICAgICAgIGlmIChmaWx0ZXJCYXIuZmlsdGVycy50ZXh0ICYmIGZp
bHRlckJhci5fbm9SZXN1bHRzRm91bmRMYWJlbCkKKyAgICAgICAgICAgIGZpbHRlckJhci5fbm9S
ZXN1bHRzRm91bmRMYWJlbC5zdHlsZS5kaXNwbGF5ID0gKCFtYXRjaEZvdW5kKSA/ICJibG9jayIg
OiAibm9uZSI7CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBzaG93bigpCkBAIC0y
NjksNiArMjkwLDEwIEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xh
c3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgICAgICB2YXIg
c2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldOwogICAgICAgICAgICAgc2VjdGlvbi5zdHlsZS5f
X3J1bGVzU2VjdGlvbiA9IHNlY3Rpb247CiAgICAgICAgICAgICBzZWN0aW9uLnVwZGF0ZUxheW91
dCgpOworICAgICAgICAgICAgaWYoc2VjdGlvbi5uZWVkc1RvVXBkYXRlKSB7CisgICAgICAgICAg
ICAgICAgc2VjdGlvbi5yZWZyZXNoUHJvcGVydGllc1RleHRFZGl0b3IoKTsKKyAgICAgICAgICAg
ICAgICBkZWxldGUgc2VjdGlvbi5uZWVkc1RvVXBkYXRlOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IGNlZTRkYWRhMWFl
NGYzMTU5NmU0ZTZmMTNmMGRkYWZiNWM4OWZlY2UuLjE0MzUwZTljNThmMDI4YzdiZTY0NGYxMDdi
N2UxM2Q0NTU5NGJkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0yNSwxMCAr
MjUsMTIgQEAKIAogV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3R5bGVE
ZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgY29uc3RydWN0
b3IoY2xhc3NOYW1lLCBpZGVudGlmaWVyLCBsYWJlbCkKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0
ZSwgY2xhc3NOYW1lLCBpZGVudGlmaWVyLCBsYWJlbCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7
CiAKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworCiAgICAgICAg
IHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254074</attachid>
            <date>2015-06-02 11:11:29 -0700</date>
            <delta_ts>2015-06-08 19:11:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145536-20150602111110.patch</filename>
            <type>text/plain</type>
            <size>28400</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQ4MWEzOGE4OTBhOGI4YmU3YzA0NjY5ZGM0MGUy
MzFkZGYxYmFkZTkuLjBkNzVjYTZiOWFiZjQ4MTU3MmY0ZDZjNmQ1YzY0NmQ1ZDgxYWE2MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE1LTA2LTAxICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgYSBmaWx0ZXIgZm9yIENTUyBwcm9wZXJ0aWVzIGluIHRoZSBTdHlsZXMgc2lkZWJhcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NTM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZS5maW5kTWF0Y2hpbmdQ
cm9wZXJ0aWVzKTogTG9vcHMgdGhyb3VnaCB0aGUgcHJvcGVydHkgbGlzdCBvZiBlYWNoIHNlY3Rp
b24gdG8gZmluZCBtYXRjaGVzIHRvIHRoZSBmaWx0ZXJlZCB0ZXh0LgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5maW5k
TWF0Y2hpbmdQcm9wZXJ0aWVzKTogU2VhcmNoZXMgdGhyb3VnaCB0aGUgcHJvcGVydGllcyBsaXN0
IHRvIGZpbmQgYW5kIGhpZ2h0bGlnaHQgYWxsIG1hdGNoaW5nIHByb3BlcnRpZXMuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLmNs
ZWFyTWF0Y2hpbmdQcm9wZXJ0aWVzKTogUmVzdG9yZXMgYWxsIHByb3BlcnRpZXMgdG8gZnVsbCB2
aXNpYmlsaXR5IGFuZCByZW1vdmVzIGFueSBoaWdobGlnaHRpbmcuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZU5vbk1h
dGNoaW5nUHJvcGVydGllcyk6IFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgdGhhdCBkbyBub3QgbWF0
Y2ggYW5kIGhpZ2hsaWdodHMgdGhlIHNwZWNpZmljIG1hdGNoZWQgdGV4dCBpbiBtYXRjaGluZyBw
cm9wZXJ0aWVzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0
RWRpdG9yLnByb3RvdHlwZS5yZXN0b3JlTm9uTWF0Y2hpbmdQcm9wZXJ0aWVzKTogUmVzdG9yZXMg
YWxsIHByb3BlcnRpZXMgdG8gZnVsbCB2aXNpYmlsaXR5IGFuZCByZW1vdmVzIGFueSBoaWdobGln
aHRpbmcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZCk6IENsYXNz
ZXMgYXJlIGFkZGVkIHRvIHNlbGVjdGlvbnMgb2YgdGhlIHRleHQgZWRpdG9yIG9mIHRoYXQgcGFy
dGl1bGFyIHNlbGVjdGlvbiBjb250YWlucyB0ZXh0IHdoaWNoIG1hdGNoZXMgdGhlIGZpbHRlciAo
c2VlIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MgZm9yIGRpZmZlcmVudCBjbGFzc2Vz
KS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5w
cm90b3R5cGUuX2l0ZXJhdGVPdmVyUHJvcGVydGllcyk6IElmIGEgZmlsdGVyIGlzIGFjdGl2ZSwg
ZmluZCBwcm9wZXJ0aWVzIG1hdGNoaW5nIHRoZSBmaWx0ZXIgaW5zdGVhZCBvZiBhbGwgcHJvcGVy
dGllcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5jc3M6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSA+IC5jb250ZW50Lmhhcy1maWx0ZXItYmFyKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQgKyAuZmlsdGVyLWJhcik6CisgICAgICAgICgu
c2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50ICsgLmZpbHRlci1i
YXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5k
ZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50Lmhhcy1maWx0ZXItYmFyICsgLmZpbHRlci1iYXIp
OgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVu
dC5maWx0ZXItaW4tcHJvZ3Jlc3MgLm5ldy1ydWxlKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBh
bmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0
ZXItbWF0Y2hpbmcpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rp
b24pOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29u
dGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24gPiAuaGVh
ZGVyID4gLnNlbGVjdG9yID4gLmZpbHRlci1tYXRjaGluZyk6CisgICAgICAgICguc2lkZWJhciA+
IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAu
ZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNoaW5nKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0ZXIt
cHJvcGVydHktbm9uLW1hdGNoaW5nKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzID4gLmxhYmVsLm5vLWZp
bHRlci1yZXN1bHRzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0
YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwpOiBBZGRlZCBhIGZpbHRlciBiYXIgdG8gdGhlIENTUyBzaWRlYmFyLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5
cGUucmVzZXRGaWx0ZXJCYXIpOiBDbGVhcnMgdGhlIGZpbHRlciBiYXIgb2YgdGV4dCBhbmQgcmVz
ZXRzIHRoZSBwYW5lbCB0byBzaG93IGFsbCB0aGUgb3JpZ2luYWwgcHJvcGVydGllcy4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9z
d2l0Y2hQYW5lbHMpOiBTd2l0Y2hpbmcgcGFuZWxzIHJlc2V0cyB0aGUgZmlsdGVyIGJhciB0ZXh0
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUuX2ZpbHRlckRpZENoYW5nZSk6IEZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBmaWx0ZXIg
YmFyIHRleHQgY2hhbmdlcyB0aGF0IGNhbGxzIHRoZSBjdXJyZW50IHBhbmVsJ3MgZmlsdGVyRGlk
Q2hhbmdlIGZ1bmN0aW9uIGlmIGl0IGV4aXN0cy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCk6IEFkZGVkIGRlbGVnYXRlIHZhcmlhYmxlIHRvIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLnJlZnJlc2gpOiBGaWx0ZXIgYmFyIHdpbGwgb25seSByZXNldCBpdCdzIGNv
bnRlbnQgd2hlbiBhIG5ldyBub2RlIGhhcyBiZWVuIHNlbGVjdGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmZpbHRlckRpZENoYW5n
ZSk6IEZ1bmN0aW9uIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBjb21wdXRlZCBzdHlsZXMgbGlzdCBh
bmQgaGlnaGxpZ2h0IGFuZCBkaXNwbGF5IGFsbCBtYXRjaGVzIG9mIHRoZSBmaWx0ZXIgYmFyIHRl
eHQgd2hpbGUgaGlkaW5nIGFsbCBvdGhlciBwcm9wZXJ0aWVzLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlckJh
cik6IEFkZGVkIGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSB0byBjaGVjayBpZiB0aGUgdGV4dCBpbiB0
aGUgZmlsdGVyIGJhciBoYWQgY2hhbmdlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRy
aWNzU3R5bGVEZXRhaWxzUGFuZWwpOiBBZGRlZCBkZWxlZ2F0ZSB2YXJpYWJsZSB0byBjb25zdHJ1
Y3Rvci4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6IEFk
ZGVkIGRlbGVnYXRlIHZhcmlhYmxlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnJlZnJlc2gpOiBGaWx0ZXIgYmFy
IHdpbGwgb25seSByZXNldCBpdCdzIGNvbnRlbnQgd2hlbiBhIG5ldyBub2RlIGhhcyBiZWVuIHNl
bGVjdGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLmZpbHRlckRpZENoYW5nZSk6IEZ1bmN0aW9uIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBj
b21wdXRlZCBzdHlsZXMgbGlzdCBhbmQgaGlnaGxpZ2h0IGFsbCBtYXRjaGVkIHByb3BlcnRpZXMg
YW5kIHNlbGVjdG9ycyBvZiB0aGUgZmlsdGVyIGJhciB0ZXh0LCB0dXJuaW5nIGFsbCBub24gbWF0
Y2hpbmcgcHJvcGVydGllcyBzbGlnaHRseSBvcGFxdWUgKHVubGVzcyBhIHNlbGVjdG9yIGZvciB0
aGF0IHByb3BlcnR5IGlzIGEgbWF0Y2gpLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxz
UGFuZWwpOiBBZGRlZCBkZWxlZ2F0ZSB2YXJpYWJsZSB0byBjb25zdHJ1Y3Rvci4KKwogMjAxNS0w
Ni0wMSAgSm9ubyBXZWxscyAgPGpvbm93ZWxsc0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogVHlwZSB0b2tlbiB0ZXh0IGRlc2NlbmRlcnMgdG91Y2ggYm90dG9tIG9mIGNvbnRh
aW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6
YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMzVjZmQyMWYwMTUxZTJk
YTZmNjRlMjhhNmU1OGU3YjllZWQ1ZDY3Ny4uNzBmN2M0NDc2NWMxMWI2MGU3MzdjNzM0ZWZkM2Qz
MmFmM2Q4ZmI1NyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxMzEKemNtWD9nbUhGNnA8
XyhNVWAyIWU9ODFma2s3KmNfQjJ9OS1OMHxseiRYa3JXczNfYzgqNDhAWnQ2ek5adkUjUjRhCnpK
enIrP3tgQEtXZjxadVMjU0Vua0lZNnomS3hKLXxZWmdqTURsbE0oMUZhfSEkZWE4QE5xNiU5PjE+
O1c9YStpfQpFMDY4LSFEKnlsaAoKZGVsdGEgMjcKamNtWD9obyV6Jk48XyhNVUMmdzFaT3h+VSt1
e3BNJk10YCZhZl51JkZ6bnUpPQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNl
Y3Rpb24uanMKaW5kZXggMjM4ZTI1Njg3ZWZkZThjNzM5Y2NhNTQ5NjliNDY3M2Q3YWI5MmVlYS4u
NmY2NTkyZjE0YmNiOTUwMGViMzE0ZTQ4YzVjMmJkMTBiODEyNDFlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTQ2LDYgKzQ2LDggQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uID0gZnVuY3Rpb24oc3R5bGUpCiAgICAg
dGhpcy5fc2VsZWN0b3JFbGVtZW50LnNldEF0dHJpYnV0ZSgic3BlbGxjaGVjayIsICJmYWxzZSIp
OwogICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0b3JFbGVt
ZW50KTsKIAorICAgIHRoaXMuX3Byb3BlcnR5U2VsZWN0b3JzID0gW107CisKICAgICB0aGlzLl9v
cmlnaW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgIHRoaXMu
X29yaWdpbkVsZW1lbnQuY2xhc3NOYW1lID0gIm9yaWdpbiI7CiAgICAgdGhpcy5faGVhZGVyRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vcmlnaW5FbGVtZW50KTsKQEAgLTE5Miw2ICsxOTQsNyBA
QCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQuYXBwZW5k
Q2hpbGQoc2VsZWN0b3JFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3Byb3BlcnR5U2VsZWN0
b3JzLnB1c2goc2VsZWN0b3JFbGVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9u
IGFwcGVuZFNlbGVjdG9yVGV4dEtub3duVG9NYXRjaChzZWxlY3RvclRleHQpCkBAIC0yNzAsNiAr
MjczLDM2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCisgICAgZmluZE1hdGNoaW5n
UHJvcGVydGllczogZnVuY3Rpb24obmVlZGxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJmaWx0ZXItc2VjdGlvbi1ub24tbWF0Y2hpbmciKTsKKworICAg
ICAgICB2YXIgaGFzTWF0Y2hpbmdTZWxlY3RvciA9IGZhbHNlOworCisgICAgICAgIGZvciAodmFy
IHNlbGVjdG9yIG9mIHRoaXMuX3Byb3BlcnR5U2VsZWN0b3JzKSB7CisgICAgICAgICAgICBzZWxl
Y3Rvci5jbGFzc0xpc3QucmVtb3ZlKCJmaWx0ZXItbWF0Y2hpbmciKTsKKworICAgICAgICAgICAg
aWYgKG5lZWRsZSAmJiBzZWxlY3Rvci50ZXh0Q29udGVudC5pbmNsdWRlcyhuZWVkbGUpKSB7Cisg
ICAgICAgICAgICAgICAgc2VsZWN0b3IuY2xhc3NMaXN0LmFkZCgiZmlsdGVyLW1hdGNoaW5nIik7
CisgICAgICAgICAgICAgICAgaGFzTWF0Y2hpbmdTZWxlY3RvciA9IHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9y
LmZpbmRNYXRjaGluZ1Byb3BlcnRpZXMobmVlZGxlKSkgeworICAgICAgICAgICAgaWYgKCFuZWVk
bGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoaGFz
TWF0Y2hpbmdTZWxlY3RvcikKKyAgICAgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVk
aXRvci5jbGVhck1hdGNoaW5nUHJvcGVydGllcygpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJmaWx0ZXItc2VjdGlvbi1u
b24tbWF0Y2hpbmciKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCiAgICAgdXBk
YXRlTGF5b3V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4
dEVkaXRvci51cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJh
dGlvblRleHRFZGl0b3IuanMKaW5kZXggM2Y5NzZjNzAxYzc4Y2FiYzIyOTU3ZTg2ZjlkNWI0ZDUw
Y2Q2Mjk3OC4uNDZkODQ2ZjgzMWE1ZWJmOWViYTg0OGVmNDNlYWU0ZTU3ZGVkZGYwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKQEAgLTM2LDYg
KzM2LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xh
c3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKIAogICAgICAgICB0aGlzLl9zaG93c0lt
cGxpY2l0UHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIHRoaXMuX2Fsd2F5c1Nob3dQcm9wZXJ0
eU5hbWVzID0ge307CisgICAgICAgIHRoaXMuX2ZpbHRlclJlc3VsdFByb3BlcnR5TmFtZXMgPSBu
dWxsOwogICAgICAgICB0aGlzLl9zb3J0UHJvcGVydGllcyA9IGZhbHNlOwogCiAgICAgICAgIHRo
aXMuX3ByZWZpeFdoaXRlc3BhY2UgPSAiIjsKQEAgLTIyMSw2ICsyMjIsODIgQEAgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJh
dGlvblRleHRFZGl0b3IKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGZpbmRN
YXRjaGluZ1Byb3BlcnRpZXMobmVlZGxlKQorICAgIHsKKyAgICAgICAgdmFyIHByb3BlcnRpZXNM
aXN0ID0gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMubGVuZ3RoID8gdGhpcy5fc3R5bGUu
dmlzaWJsZVByb3BlcnRpZXMgOiB0aGlzLl9zdHlsZS5wcm9wZXJ0aWVzOworICAgICAgICB2YXIg
bWF0Y2hGb3VuZCA9IGZhbHNlOworCisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHByb3Bl
cnRpZXNMaXN0KSB7CisgICAgICAgICAgICBpZiAocHJvcGVydHkuX19wcm9wZXJ0eVRleHRNYXJr
ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW5lZWRsZSkKKyAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUgPSBudWxsOworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHByb3BlcnR5LnRleHQuaW5jbHVkZXMobmVlZGxlKSkgeworICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdENsYXNzTmFtZSA9ICJmaWx0ZXItbWF0Y2hp
bmciOworICAgICAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkuX19maWx0ZXJSZXN1bHRD
bGFzc05hbWUgPSAiZmlsdGVyLXByb3BlcnR5LW5vbi1tYXRjaGluZyI7CisKKyAgICAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZChwcm9wZXJ0eSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWF0Y2hGb3VuZDsK
KyAgICB9CisKKyAgICBjbGVhck1hdGNoaW5nUHJvcGVydGllcygpCisgICAgeworICAgICAgICB2
YXIgcHJvcGVydGllc0xpc3QgPSB0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcy5sZW5ndGgg
PyB0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcyA6IHRoaXMuX3N0eWxlLnByb3BlcnRpZXM7
CisKKyAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgcHJvcGVydGllc0xpc3QpIHsKKyAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eS5fX3Byb3BlcnR5VGV4dE1hcmtlcikgeworICAgICAgICAgICAg
ICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lID0gbnVsbDsKKworICAgICAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZVRleHRNYXJrZXJGb3JQcm9wZXJ0eUlmTmVlZGVkKHByb3BlcnR5
KQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmVtb3ZlTm9uTWF0Y2hp
bmdQcm9wZXJ0aWVzKG5lZWRsZSkKKyAgICB7CisgICAgICAgIHRoaXMucmVzdG9yZU5vbk1hdGNo
aW5nUHJvcGVydGllcygpOworCisgICAgICAgIGlmICghbmVlZGxlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHZhciBtYXRjaGluZ1Byb3BlcnR5TmFtZXMgPSBbXTsKKwor
ICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiB0aGlzLl9zdHlsZS5wcm9wZXJ0aWVzKSB7Cisg
ICAgICAgICAgICB2YXIgaW5kZXhlc09mTmVlZGxlID0gW3Byb3BlcnR5LnRleHQuaW5kZXhPZihu
ZWVkbGUpXTsKKyAgICAgICAgICAgIGlmIChpbmRleGVzT2ZOZWVkbGVbMF0gPj0gMCkgeworICAg
ICAgICAgICAgICAgIG1hdGNoaW5nUHJvcGVydHlOYW1lcy5wdXNoKHByb3BlcnR5Lm5hbWUpOwor
CisgICAgICAgICAgICAgICAgcHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUgPSAiZmls
dGVyLW1hdGNoaW5nIjsKKworICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXhPZk5lZWRsZSA9
IHByb3BlcnR5LnRleHQuaW5kZXhPZihuZWVkbGUsIGluZGV4ZXNPZk5lZWRsZVtpbmRleGVzT2ZO
ZWVkbGUubGVuZ3RoIC0gMV0gKyAxKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAobmV4dEluZGV4
T2ZOZWVkbGUgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ZXNPZk5lZWRsZS5wdXNo
KG5leHRJbmRleE9mTmVlZGxlKTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dEluZGV4T2ZOZWVk
bGUgPSBwcm9wZXJ0eS50ZXh0LmluZGV4T2YobmVlZGxlLCBpbmRleGVzT2ZOZWVkbGVbaW5kZXhl
c09mTmVlZGxlLmxlbmd0aCAtIDFdICsgMSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgcHJvcGVydHkuX19maWx0ZXJSZXN1bHROZWVkbGVQb3NpdGlvbiA9IHtzdGFydDog
aW5kZXhlc09mTmVlZGxlLCBsZW5ndGg6IG5lZWRsZS5sZW5ndGh9OworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZmlsdGVyUmVzdWx0UHJvcGVydHlOYW1lcyA9ICht
YXRjaGluZ1Byb3BlcnR5TmFtZXMubGVuZ3RoKSA/IG1hdGNoaW5nUHJvcGVydHlOYW1lcy5rZXlT
ZXQoKSA6IHt9OworCisgICAgICAgIHRoaXMuX3Jlc2V0Q29udGVudCgpOworCisgICAgICAgIHJl
dHVybiBtYXRjaGluZ1Byb3BlcnR5TmFtZXMubGVuZ3RoID4gMDsKKyAgICB9CisKKyAgICByZXN0
b3JlTm9uTWF0Y2hpbmdQcm9wZXJ0aWVzKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maWx0
ZXJSZXN1bHRQcm9wZXJ0eU5hbWVzKSB7CisgICAgICAgICAgICB0aGlzLl9maWx0ZXJSZXN1bHRQ
cm9wZXJ0eU5hbWVzID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29udGVudCgpOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBkaWREaXNtaXNzUG9w
b3Zlcihwb3BvdmVyKQpAQCAtNTA5LDYgKzU4Niw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
CiAgICAgICAgIGlmICghcHJvcGVydHkuZW5hYmxlZCkKICAgICAgICAgICAgIGNsYXNzTmFtZXMu
cHVzaCgiZGlzYWJsZWQiKTsKIAorICAgICAgICBpZiAocHJvcGVydHkuX19maWx0ZXJSZXN1bHRD
bGFzc05hbWUgJiYgIXByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24pCisgICAg
ICAgICAgICBjbGFzc05hbWVzLnB1c2gocHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUp
OworCiAgICAgICAgIHZhciBjbGFzc05hbWVzU3RyaW5nID0gY2xhc3NOYW1lcy5qb2luKCIgIik7
CiAKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHRleHQgbWFya2VyIGFuZCBpdCdz
IGluIHRoZSBzYW1lIGRvY3VtZW50LCB0aGVuIHRyeSB0byBhdm9pZCByZWNyZWF0aW5nIGl0LgpA
QCAtNTMwLDYgKzYxMCwxNSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICBwcm9w
ZXJ0eS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5FdmVudC5PdmVy
cmlkZGVuU3RhdHVzQ2hhbmdlZCwgdGhpcy5fcHJvcGVydHlPdmVycmlkZGVuU3RhdHVzQ2hhbmdl
ZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fcmVtb3ZlQ2hlY2tib3hQbGFjZWhvbGRlcihmcm9t
LmxpbmUpOworCisgICAgICAgIGlmIChwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdENsYXNzTmFtZSAm
JiBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdE5lZWRsZVBvc2l0aW9uKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBuZWVkbGVQb3NpdGlvbiBvZiBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdE5lZWRsZVBv
c2l0aW9uLnN0YXJ0KSB7CisgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0ge2xpbmU6IGZyb20u
bGluZSwgY2g6IG5lZWRsZVBvc2l0aW9ufTsKKyAgICAgICAgICAgICAgICB2YXIgZW5kID0ge2xp
bmU6IHRvLmxpbmUsIGNoOiBzdGFydC5jaCArIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxl
UG9zaXRpb24ubGVuZ3RofTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IubWFy
a1RleHQoc3RhcnQsIGVuZCwge2NsYXNzTmFtZTogcHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFz
c05hbWV9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIF9jbGVhclRl
eHRNYXJrZXJzKG5vbmF0b21pYywgYWxsKQpAQCAtNTY5LDcgKzY1OCwxNCBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvcgogICAgIHsKICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBvbmx5VmlzaWJs
ZVByb3BlcnRpZXMgPyB0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcyA6IHRoaXMuX3N0eWxl
LnByb3BlcnRpZXM7CiAKLSAgICAgICAgaWYgKCFvbmx5VmlzaWJsZVByb3BlcnRpZXMpIHsKKyAg
ICAgICAgaWYgKHRoaXMuX2ZpbHRlclJlc3VsdFByb3BlcnR5TmFtZXMpIHsKKyAgICAgICAgICAg
IHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbihwcm9wZXJ0eSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiAoIXByb3BlcnR5LmltcGxpY2l0IHx8IHRoaXMuX3Nob3dzSW1w
bGljaXRQcm9wZXJ0aWVzKSAmJiBwcm9wZXJ0eS5uYW1lIGluIHRoaXMuX2ZpbHRlclJlc3VsdFBy
b3BlcnR5TmFtZXM7CisgICAgICAgICAgICB9LCB0aGlzKTsKKworICAgICAgICAgICAgaWYgKHRo
aXMuX3NvcnRQcm9wZXJ0aWVzKQorICAgICAgICAgICAgICAgIHByb3BlcnRpZXMuc29ydChmdW5j
dGlvbihhLCBiKSB7IHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpOyB9KTsKKyAg
ICAgICAgfSBlbHNlIGlmICghb25seVZpc2libGVQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICAv
LyBGaWx0ZXIgYmFzZWQgb24gb3B0aW9ucyBvbmx5IHdoZW4gYWxsIHByb3BlcnRpZXMgYXJlIHVz
ZWQuCiAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24o
cHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gIXByb3BlcnR5LmltcGxpY2l0IHx8
IHRoaXMuX3Nob3dzSW1wbGljaXRQcm9wZXJ0aWVzIHx8IHByb3BlcnR5LmNhbm9uaWNhbE5hbWUg
aW4gdGhpcy5fYWx3YXlzU2hvd1Byb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFu
ZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcwppbmRleCBmY2MzYjhkMzdkMzY2MmMwZTUzYzY4ZmM1
NTZlM2MzNjk4YWE3MTk3Li5mN2Y4Y2NhZTFiYjQ1ZDIzODBjN2NjMzA1ODM3ZDYxNDE5MDQ1M2Qx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
U1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MKQEAg
LTQyLDYgKzQyLDEwIEBACiAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogfQogCisuc2lkZWJhciA+
IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50Lmhhcy1maWx0ZXItYmFyIHsKKyAg
ICBib3R0b206IDI4cHg7Cit9CisKIC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxl
ID4gLmNvbnRlbnQgPiAucHNldWRvLWNsYXNzZXMgewogICAgIHBhZGRpbmc6IDEwcHg7CiAgICAg
Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigxNzksIDE3OSwgMTc5KTsKQEAgLTY4LDMgKzcy
LDYyIEBACiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgIHdoaXRlLXNwYWNlOiBub3dy
YXA7CiB9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQg
KyAuZmlsdGVyLWJhciB7CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgYm90dG9tOiAwOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMjlweDsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQg
cmdiKDE3OSwgMTc5LCAxNzkpOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1z
dHlsZSA+IC5jb250ZW50ICsgLmZpbHRlci1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSB7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMDsKKyAgICBs
ZWZ0OiAwOworICAgIG1hcmdpbjogM3B4OworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwor
fQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50Lmhhcy1m
aWx0ZXItYmFyICsgLmZpbHRlci1iYXIgeworICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisuc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9n
cmVzcyAubGFiZWwsCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250
ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAubmV3LXJ1bGUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVy
LWluLXByb2dyZXNzIC5maWx0ZXItbWF0Y2hpbmcgeworICAgIGRpc3BsYXk6IGlubGluZTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzNSwgMjE1LCAzOCwgMC41KTsKKyAgICBib3JkZXIt
Ym90dG9tOiAxcHggc29saWQgcmdiKDIzNywgMjAyLCA3MSk7CisgICAgb3BhY2l0eTogMTsKK30K
KworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXIt
aW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24geworICAgIG1hcmdpbjogMCAh
aW1wb3J0YW50OworICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKKyAgICBib3JkZXIt
Ym90dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOworfQorCisuc2lkZWJhciA+IC5w
YW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuc3R5
bGUtZGVjbGFyYXRpb24tc2VjdGlvbiA+IC5oZWFkZXIgPiAuc2VsZWN0b3IgPiAuZmlsdGVyLW1h
dGNoaW5nIHsKKyAgICBjb2xvcjogYmxhY2s7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0ZXItc2VjdGlv
bi1ub24tbWF0Y2hpbmcgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5zaWRlYmFyID4gLnBh
bmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0
ZXItcHJvcGVydHktbm9uLW1hdGNoaW5nIHsKKyAgICBvcGFjaXR5OiAwLjU7Cit9CisKKy5zaWRl
YmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dy
ZXNzID4gLmxhYmVsLm5vLWZpbHRlci1yZXN1bHRzIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAg
ICBtYXJnaW46IDEwcHggMDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggNjNhZGUxM2YxMTRkNzZi
ZmFhZDhjYzhjZWY0NjE0MjdkYTViMWZhYi4uZjM5NmFmYmZiMGMwMWI5NzZkM2Y5MTcyYjNlMjIw
Mzk1ODFiY2RkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bC5qcwpAQCAtNzEsOCArNzEsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKLSAgICAgICAgdGhpcy5fcnVs
ZXNTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQ
YW5lbDsKLSAgICAgICAgdGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYklu
c3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWw7CisgICAgICAgIHRoaXMuX3J1bGVzU3R5
bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwo
dGhpcyk7CisgICAgICAgIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwogCiAgICAgICAgIHRoaXMu
X3BhbmVscyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl9ydWxlc1N0
eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWxdOwogCkBAIC04
NCw2ICs4NCwxOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0g
Y2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogCiAgICAgICAgIC8vIFRoaXMg
d2lsbCBjYXVzZSB0aGUgc2VsZWN0ZWQgcGFuZWwgdG8gYmUgc2V0IGluIF9uYXZpZ2F0aW9uSXRl
bVNlbGVjdGVkLgogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnNlbGVjdGVkTmF2aWdhdGlv
bkl0ZW0gPSB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52YWx1ZTsKKworICAgICAg
ICB0aGlzLl9maWx0ZXJCYXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbHRlckJhcjsKKyAgICAgICAg
dGhpcy5fZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0
ZXIgUHJvcGVydHkgTGlzdCIpOworICAgICAgICB0aGlzLl9maWx0ZXJCYXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLkV2ZW50LkZpbHRlckRpZENoYW5nZSwgdGhpcy5f
ZmlsdGVyRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9maWx0ZXJCYXIuX25vUmVz
dWx0c0ZvdW5kTGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
dGhpcy5fZmlsdGVyQmFyLl9ub1Jlc3VsdHNGb3VuZExhYmVsLmNsYXNzTmFtZSA9ICJsYWJlbCBu
by1maWx0ZXItcmVzdWx0cyI7CisgICAgICAgIHRoaXMuX2ZpbHRlckJhci5fbm9SZXN1bHRzRm91
bmRMYWJlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICB0aGlzLl9maWx0ZXJCYXIu
X25vUmVzdWx0c0ZvdW5kTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik5vIFJlc3VsdHMgRm91bmQiKTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fZmlsdGVyQmFyLmVsZW1lbnQpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2ZpbHRlckJhci5fbm9SZXN1bHRzRm91bmRMYWJlbCk7CiAgICAgfQog
CiAgICAgLy8gUHVibGljCkBAIC0xNDUsNiArMTU3LDE0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwg
ZXh0CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9
IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOwogICAgIH0KIAorICAgIHJl
c2V0RmlsdGVyQmFyKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maWx0ZXJCYXIgJiYgdGhp
cy5fZmlsdGVyQmFyLmZpbHRlcnMudGV4dCkgeworICAgICAgICAgICAgdGhpcy5fZmlsdGVyQmFy
LmZpbHRlcnMgPSBudWxsOworICAgICAgICAgICAgdGhpcy5fZmlsdGVyQmFyLl9ub1Jlc3VsdHNG
b3VuZExhYmVsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICAvLyBQcm90ZWN0ZWQKIAogICAgIGFkZEV2ZW50TGlzdGVuZXJzKCkKQEAgLTE5NSw2ICsyMTUs
OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NT
U3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoc2VsZWN0ZWRQYW5lbCk7CiAKKyAgICAgICAgdGhpcy5yZXNldEZpbHRlckJhcigpOworCiAg
ICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFBhbmVsKSB7CiAgICAgICAgICAgICB0aGlzLl9zZWxl
Y3RlZFBhbmVsLmhpZGRlbigpOwogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC5lbGVt
ZW50Ll9zYXZlZFNjcm9sbFRvcCA9IHRoaXMuY29udGVudEVsZW1lbnQuc2Nyb2xsVG9wOwpAQCAt
MjE1LDYgKzIzNyw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwg
PSBjbGFzcyBDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52YWx1ZSA9IHNlbGVjdGVkUGFu
ZWwubmF2aWdhdGlvbkl0ZW0uaWRlbnRpZmllcjsKKworICAgICAgICB2YXIgaGFzRmlsdGVyID0g
dHlwZW9mIHRoaXMuX3NlbGVjdGVkUGFuZWwuZmlsdGVyRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24i
OworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhhcy1maWx0
ZXItYmFyIiwgaGFzRmlsdGVyKTsKICAgICB9CiAKICAgICBfZm9yY2VkUHNldWRvQ2xhc3NDaGVj
a2JveENoYW5nZWQocHNldWRvQ2xhc3MsIGV2ZW50KQpAQCAtMjM3LDYgKzI2MiwxNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAgY2hlY2tib3hFbGVtZW50LmNoZWNrZWQg
PSBlbmFibGVkUHNldWRvQ2xhc3Nlcy5pbmNsdWRlcyhwc2V1ZG9DbGFzcyk7CiAgICAgICAgIH0K
ICAgICB9CisKKyAgICBfZmlsdGVyRGlkQ2hhbmdlKG92ZXJyaWRlKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9maWx0ZXJCYXIuaGFzRmlsdGVyQ2hhbmdlZCgpICYmICFvdmVycmlkZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoImZpbHRlci1pbi1wcm9ncmVzcyIsIHRoaXMuX2ZpbHRlckJhci5maWx0ZXJzLnRl
eHQpOworCisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fc2VsZWN0ZWRQYW5lbC5maWx0ZXJEaWRD
aGFuZ2UgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsLmZp
bHRlckRpZENoYW5nZSh0aGlzLl9maWx0ZXJCYXIpOworICAgIH0KIH07CiAKIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xs
T2Zmc2V0ID0gMzg7IC8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBmb3JjZWQgcHNldWRvIGNsYXNz
ZXMgY29udGFpbmVyLiBVcGRhdGVkIGluIHdpZHRoRGlkQ2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFp
bHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggY2YzOThmOWQ5OTE0ZmNiNTY2OTY4MjQ5
NDU4NzU3ZGJkZjlhYjJkYS4uODRlZmExOGE1ZjU1NWFiMWM3YzczMDc1OGM3NTYzNGU5OTRjODdk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0yNyw5
ICsyNyw3IEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3Mg
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzCiB7CiAgICAgY29uc3RydWN0b3IoZGVs
ZWdhdGUpCiAgICAgewotICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURl
dGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb21wdXRlZCIpKTsKLQotICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8
IG51bGw7CisgICAgICAgIHN1cGVyKGRlbGVnYXRlLCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHls
ZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDb21wdXRlZCIpKTsKIAogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0Fs
bFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImNvbXB1dGVkLXN0eWxlLXNob3ct
YWxsIiwgZmFsc2UpOwogCkBAIC0xNTEsOCArMTQ5LDI1IEBAIFdlYkluc3BlY3Rvci5Db21wdXRl
ZFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRl
bmRzCiAKICAgICByZWZyZXNoKCkKICAgICB7CisgICAgICAgIHZhciBvbGRTdHlsZTsKKyAgICAg
ICAgaWYgKHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yKQorICAgICAgICAgICAgb2xkU3R5bGUg
PSB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zdHlsZTsKKwogICAgICAgICB0aGlzLl9wcm9w
ZXJ0aWVzVGV4dEVkaXRvci5zdHlsZSA9IHRoaXMubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlOwog
ICAgICAgICB0aGlzLl9yZWZyZXNoRmxvd0RldGFpbHModGhpcy5ub2RlU3R5bGVzLm5vZGUpOwor
CisgICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgZmlsdGVyQmFyIHdpbGwgb25seSByZXNldCB3
aGVuIGEgbmV3IG5vZGUgaXMgc2VsZWN0ZWQgKGl0IGRvZXNuJ3QgcmVmcmVzaCBvbiB3aW5kb3cg
cmVzaXplKS4KKyAgICAgICAgaWYgKG9sZFN0eWxlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5y
ZXNldEZpbHRlckJhciA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgaWYgKG9sZFN0eWxl
Lm5vZGUgPT09IHRoaXMubm9kZVN0eWxlcy5ub2RlKQorICAgICAgICAgICAgICAgIHRoaXMuX2Rl
bGVnYXRlLl9maWx0ZXJEaWRDaGFuZ2UodHJ1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGhpcy5fZGVsZWdhdGUucmVzZXRGaWx0ZXJCYXIoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGZpbHRlckRpZENoYW5nZShmaWx0ZXJCYXIpCisgICAgeworICAgICAgICB0aGlz
Ll9wcm9wZXJ0aWVzVGV4dEVkaXRvci5yZW1vdmVOb25NYXRjaGluZ1Byb3BlcnRpZXMoZmlsdGVy
QmFyLmZpbHRlcnMudGV4dCk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMK
aW5kZXggYTlmMDYwMjBhMTZhOTIxZjA2ZTg4NjIzYWM0ZTc5ODc4ZjZiNjk0NS4uZGVhNDNiMmM5
ZTdlZjYzMWE5MjVkNWI0MDFiMmYyM2M2ZTk1MGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcwpAQCAtNDMsNiAr
NDMsOCBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyID0gY2xhc3MgRmlsdGVyQmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLmluY3JlbWVudGFs
ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJzZWFy
Y2giLCB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pbnB1dEZpZWxkKTsKKworICAgICAg
ICB0aGlzLl9sYXN0RmlsdGVyVmFsdWUgPSAiIjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAg
LTk5LDYgKzEwMSwxMSBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyID0gY2xhc3MgRmlsdGVyQmFy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gISF0aGlzLl9pbnB1
dEZpZWxkLnZhbHVlIHx8ICEhdGhpcy5fZmlsdGVyRnVuY3Rpb25zTWFwLnNpemU7CiAgICAgfQog
CisgICAgaGFzRmlsdGVyQ2hhbmdlZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGFz
dEZpbHRlclZhbHVlICE9PSB0aGlzLl9pbnB1dEZpZWxkLnZhbHVlOworICAgIH0KKwogICAgIC8v
IFByaXZhdGUKIAogICAgIF9oYW5kbGVGaWx0ZXJCYXJCdXR0b25DbGlja2VkKGV2ZW50KQpAQCAt
MTE5LDYgKzEyNiw3IEBAIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBjbGFzcyBGaWx0ZXJCYXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBfaGFuZGxlRmlsdGVyQ2hhbmdlZCgp
CiAgICAgeworICAgICAgICB0aGlzLl9sYXN0RmlsdGVyVmFsdWUgPSB0aGlzLl9pbnB1dEZpZWxk
LnZhbHVlOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRmlsdGVyQmFyLkV2ZW50LkZpbHRlckRpZENoYW5nZSk7CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHls
ZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCA4ODk1NDMxOGZiNDg2M2Y0M2Q4
YjkzZmE4YzE1YTJkNjg3ODQyNzdkLi41NjUyYWRhMTk3ZDdhOTczODUyZWQyNzI5OGQzYTlkNDE5
NTYwYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0y
NSw5ICsyNSw5IEBACiAKIFdlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBj
bGFzcyBNZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVE
ZXRhaWxzUGFuZWwKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoZGVsZWdh
dGUpCiAgICAgewotICAgICAgICBzdXBlcigibWV0cmljcyIsICJtZXRyaWNzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJNZXRyaWNzIikpOworICAgICAgICBzdXBlcihkZWxlZ2F0ZSwgIm1ldHJp
Y3MiLCAibWV0cmljcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0cmljcyIpKTsKIAogICAg
ICAgICB0aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkJveE1vZGVs
RGV0YWlsc1NlY3Rpb25Sb3c7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpz
CmluZGV4IDU5NWZlNDIyMTdkOTI4MDE0NTczZTliYWQ1MjQ2ODkzZWYwZWU1OTAuLjgyZjczNmE4
NmI5MjJhNGU2MWUyNzU0YzY2ZWE3Yjc0OWQ0NjE1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHls
ZURldGFpbHNQYW5lbC5qcwpAQCAtMjUsOSArMjUsOSBAQAogCiBXZWJJbnNwZWN0b3IuUnVsZXNT
dHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAg
Y29uc3RydWN0b3IoZGVsZWdhdGUpCiAgICAgewotICAgICAgICBzdXBlcigicnVsZXMiLCAicnVs
ZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1bGVzIikpOworICAgICAgICBzdXBlcihkZWxl
Z2F0ZSwgInJ1bGVzIiwgInJ1bGVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdWxlcyIpKTsK
IAogICAgICAgICB0aGlzLl9zZWN0aW9ucyA9IFtdOwogICAgICAgICB0aGlzLl9wcm9wZXJ0eVRv
U2VsZWN0QW5kSGlnaGxpZ2h0ID0gbnVsbDsKQEAgLTIzMyw2ICsyMzMsMTAgQEAgV2ViSW5zcGVj
dG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVs
IGV4dGVuZHMgV2ViSW4KICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChuZXdET01GcmFnbWVudCk7CiAKKyAgICAg
ICAgdmFyIG9sZFN0eWxlOworICAgICAgICBpZiAodGhpcy5fc2VjdGlvbnMubGVuZ3RoKQorICAg
ICAgICAgICAgb2xkU3R5bGUgPSB0aGlzLl9zZWN0aW9uczsKKwogICAgICAgICB0aGlzLl9zZWN0
aW9ucyA9IG5ld1NlY3Rpb25zOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5f
c2VjdGlvbnMubGVuZ3RoOyArK2kpCkBAIC0yNDAsNiArMjQ0LDE0IEBAIFdlYkluc3BlY3Rvci5S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRl
bmRzIFdlYkluCiAKICAgICAgICAgaWYgKHByZXZpb3VzRm9jdXNlZFNlY3Rpb24pCiAgICAgICAg
ICAgICBwcmV2aW91c0ZvY3VzZWRTZWN0aW9uLmZvY3VzKCk7CisKKyAgICAgICAgLy8gRW5zdXJl
cyB0aGF0IHRoZSBmaWx0ZXJCYXIgd2lsbCBvbmx5IHJlc2V0IHdoZW4gYSBuZXcgbm9kZSBpcyBz
ZWxlY3RlZCAoaXQgZG9lc24ndCByZWZyZXNoIG9uIHdpbmRvdyByZXNpemUpLgorICAgICAgICBp
ZiAob2xkU3R5bGUgJiYgbmV3U2VjdGlvbnMubGVuZ3RoICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0
ZS5yZXNldEZpbHRlckJhciA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgaWYgKG9sZFN0
eWxlWzBdLnN0eWxlLm5vZGUgPT09IG5ld1NlY3Rpb25zWzBdLnN0eWxlLm5vZGUpCisgICAgICAg
ICAgICAgICAgdGhpcy5fZGVsZWdhdGUuX2ZpbHRlckRpZENoYW5nZSh0cnVlKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5yZXNldEZpbHRlckJhcigp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJv
cGVydHkocHJvcGVydHkpCkBAIC0yNTcsNiArMjY5LDE4IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0
eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdl
YkluCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBmaWx0ZXJEaWRDaGFuZ2Uo
ZmlsdGVyQmFyKQorICAgIHsKKyAgICAgICAgdmFyIG1hdGNoRm91bmQgPSBmYWxzZTsKKyAgICAg
ICAgZm9yICh2YXIgc2VjdGlvbiBvZiB0aGlzLl9zZWN0aW9ucykgeworICAgICAgICAgICAgaWYg
KHNlY3Rpb24uZmluZE1hdGNoaW5nUHJvcGVydGllcyhmaWx0ZXJCYXIuZmlsdGVycy50ZXh0KSkK
KyAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChmaWx0ZXJCYXIuZmlsdGVycy50ZXh0ICYmIGZpbHRlckJhci5fbm9SZXN1bHRzRm91bmRM
YWJlbCkKKyAgICAgICAgICAgIGZpbHRlckJhci5fbm9SZXN1bHRzRm91bmRMYWJlbC5zdHlsZS5k
aXNwbGF5ID0gIW1hdGNoRm91bmQgPyAiYmxvY2siIDogIm5vbmUiOworICAgIH0KKwogICAgIC8v
IFByb3RlY3RlZAogCiAgICAgc2hvd24oKQpAQCAtMjY5LDYgKzI5MywxMCBAQCBXZWJJbnNwZWN0
b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwg
ZXh0ZW5kcyBXZWJJbgogICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tp
XTsKICAgICAgICAgICAgIHNlY3Rpb24uc3R5bGUuX19ydWxlc1NlY3Rpb24gPSBzZWN0aW9uOwog
ICAgICAgICAgICAgc2VjdGlvbi51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgICAgIGlmIChzZWN0
aW9uLm5lZWRzVG9VcGRhdGUpIHsKKyAgICAgICAgICAgICAgICBzZWN0aW9uLnJlZnJlc2hQcm9w
ZXJ0aWVzVGV4dEVkaXRvcigpOworICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWN0aW9uLm5lZWRz
VG9VcGRhdGU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1Bh
bmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVE
ZXRhaWxzUGFuZWwuanMKaW5kZXggY2VlNGRhZGExYWU0ZjMxNTk2ZTRlNmYxM2YwZGRhZmI1Yzg5
ZmVjZS4uMTQzNTBlOWM1OGYwMjhjN2JlNjQ0ZjEwN2I3ZTEzZDQ1NTk0YmQ2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxz
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTI1LDEwICsyNSwxMiBAQAogCiBXZWJJbnNwZWN0b3Iu
U3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKIHsKLSAgICBjb25zdHJ1Y3RvcihjbGFzc05hbWUsIGlkZW50aWZpZXIs
IGxhYmVsKQorICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlLCBjbGFzc05hbWUsIGlkZW50aWZpZXIs
IGxhYmVsKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAorICAgICAgICB0aGlzLl9kZWxlZ2F0
ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisKICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9
IGNsYXNzTmFtZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254536</attachid>
            <date>2015-06-08 19:11:56 -0700</date>
            <delta_ts>2015-06-12 18:56:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145536-20150608191130.patch</filename>
            <type>text/plain</type>
            <size>31112</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDI2YjU3NzNjZWM3OTlmM2ZmZTAyN2M4ZmM5MmFh
MGI4NTg3N2FmNmIuLjRiOTUxOTQ2Y2Q3MDkxODBjYmQ4Y2EwNWI0OGY5ZDJlZWYxYmU2OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA2LTA4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgYSBmaWx0ZXIgZm9yIENTUyBwcm9wZXJ0aWVzIGluIHRoZSBTdHlsZXMgc2lkZWJhcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NTM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZS5maW5kTWF0Y2hpbmdQ
cm9wZXJ0aWVzKTogTG9vcHMgdGhyb3VnaCB0aGUgcHJvcGVydHkgbGlzdCBvZiBlYWNoIHNlY3Rp
b24gdG8gZmluZCBtYXRjaGVzIHRvIHRoZSBmaWx0ZXJlZCB0ZXh0LgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLmZp
bmRNYXRjaGluZ1Byb3BlcnRpZXMpOiBTZWFyY2hlcyB0aHJvdWdoIHRoZSBwcm9wZXJ0aWVzIGxp
c3QgdG8gZmluZCBhbmQgaGlnaHRsaWdodCBhbGwgbWF0Y2hpbmcgcHJvcGVydGllcy4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUu
Y2xlYXJNYXRjaGluZ1Byb3BlcnRpZXMpOiBSZXN0b3JlcyBhbGwgcHJvcGVydGllcyB0byBmdWxs
IHZpc2liaWxpdHkgYW5kIHJlbW92ZXMgYW55IGhpZ2hsaWdodGluZy4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUucmVtb3ZlTm9u
TWF0Y2hpbmdQcm9wZXJ0aWVzKTogUmVtb3ZlcyBhbGwgcHJvcGVydGllcyB0aGF0IGRvIG5vdCBt
YXRjaCBhbmQgaGlnaGxpZ2h0cyB0aGUgc3BlY2lmaWMgbWF0Y2hlZCB0ZXh0IGluIG1hdGNoaW5n
IHByb3BlcnRpZXMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRl
eHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZCk6
IENsYXNzZXMgYXJlIGFkZGVkIHRvIHNlbGVjdGlvbnMgb2YgdGhlIHRleHQgZWRpdG9yIG9mIHRo
YXQgcGFydGl1bGFyIHNlbGVjdGlvbiBjb250YWlucyB0ZXh0IHdoaWNoIG1hdGNoZXMgdGhlIGZp
bHRlciAoc2VlIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MgZm9yIGRpZmZlcmVudCBj
bGFzc2VzKS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvci5wcm90b3R5cGUuX2l0ZXJhdGVPdmVyUHJvcGVydGllcyk6IElmIGEgZmlsdGVyIGlzIGFj
dGl2ZSwgZmluZCBwcm9wZXJ0aWVzIG1hdGNoaW5nIHRoZSBmaWx0ZXIgaW5zdGVhZCBvZiBhbGwg
cHJvcGVydGllcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5jc3M6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSA+IC5jb250ZW50Lmhhcy1maWx0ZXItYmFyKToKKyAgICAgICAgKC5zaWRlYmFyID4g
LnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQgKyAuZmlsdGVyLWJhcik6CisgICAg
ICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50ICsgLmZp
bHRlci1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSk6CisgICAgICAgICguc2lkZWJhciA+IC5w
YW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50Lmhhcy1maWx0ZXItYmFyICsgLmZpbHRl
ci1iYXIpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAu
Y29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLmxhYmVsKToKKyAgICAgICAgKC5zaWRlYmFyID4g
LnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5u
ZXctcnVsZSk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+
IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuZmlsdGVyLW1hdGNoaW5nKToKKyAgICAgICAg
KC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWlu
LXByb2dyZXNzIC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uKToKKyAgICAgICAgKC5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNz
IC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uLmxhc3QtaW4tZ3JvdXAuZmlsdGVyLXNlY3Rpb24t
bm9uLW1hdGNoaW5nICsgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24uZmlsdGVyLXNlY3Rpb24t
aGFzLWxhYmVsKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxl
ID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9u
Om5vdCguZmlsdGVyLXNlY3Rpb24taGFzLWxhYmVsKSk6CisgICAgICAgICguc2lkZWJhciA+IC5w
YW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuc3R5
bGUtZGVjbGFyYXRpb24tc2VjdGlvbiA+IC5oZWFkZXIgPiAuc2VsZWN0b3IgPiAuZmlsdGVyLW1h
dGNoaW5nKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4g
LmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0ZXItc2VjdGlvbi1ub24tbWF0Y2hpbmcp
OgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVu
dC5maWx0ZXItaW4tcHJvZ3Jlc3MgLmZpbHRlci1wcm9wZXJ0eS1ub24tbWF0Y2hpbmcpOgorICAg
ICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0
ZXItaW4tcHJvZ3Jlc3MgPiAubGFiZWwubm8tZmlsdGVyLXJlc3VsdHMpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCk6IEFkZGVkIGEgZmls
dGVyIGJhciB0byB0aGUgQ1NTIHNpZGViYXIuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fc3dpdGNoUGFuZWxzKTogU3dpdGNoaW5n
IHBhbmVscyBwcmVzZXJ2ZXMgYW5kIGFwcGxpZXMgZmlsdGVyIGJhciB0ZXh0LgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX2ZpbHRl
ckRpZENoYW5nZSk6IEZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBmaWx0ZXIgYmFyIHRleHQgY2hh
bmdlcyB0aGF0IGNhbGxzIHRoZSBjdXJyZW50IHBhbmVsJ3MgZmlsdGVyRGlkQ2hhbmdlIGZ1bmN0
aW9uIGlmIGl0IGV4aXN0cy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVk
U3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHls
ZURldGFpbHNQYW5lbCk6IEFkZGVkIGRlbGVnYXRlIHZhcmlhYmxlIHRvIGNvbnN0cnVjdG9yLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
LnJlZnJlc2gpOiBOb3cgY2FsbHMgc3VwZXJjbGFzcyByZWZyZXNoLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRl
ckJhcik6IEFkZGVkIGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSB0byBjaGVjayBpZiB0aGUgdGV4dCBp
biB0aGUgZmlsdGVyIGJhciBoYWQgY2hhbmdlZC4KKyAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
dHJpY3NTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUucmVmcmVzaCk6IE5vdyBjYWxscyBzdXBl
cmNsYXNzIHJlZnJlc2guCisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWls
c1BhbmVsKTogQWRkZWQgZGVsZWdhdGUgdmFyaWFibGUgdG8gY29uc3RydWN0b3IuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmNzczoKKyAgICAg
ICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlICA+IC5jb250ZW50Om5vdCgu
ZmlsdGVyLWluLXByb2dyZXNzKSA+IC5ydWxlcyA+IC5uZXctcnVsZSArIC5zdHlsZS1kZWNsYXJh
dGlvbi1zZWN0aW9uKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0
eWxlID4gLmNvbnRlbnQ6bm90KC5maWx0ZXItaW4tcHJvZ3Jlc3MpID4gLnJ1bGVzID4gLm5ldy1y
dWxlICsgLmxhYmVsKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0
eWxlIC5ydWxlcyAubmV3LXJ1bGUgKyAuc3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbik6IERlbGV0
ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwpOiBBZGRl
ZCBkZWxlZ2F0ZSB2YXJpYWJsZSB0byBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNoKTogTm93IGNhbGxzIHN1
cGVyY2xhc3MgcmVmcmVzaC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWls
c1BhbmVsLnByb3RvdHlwZS5maWx0ZXJEaWRDaGFuZ2UpOiBGdW5jdGlvbiB0byBzZWFyY2ggdGhy
b3VnaCB0aGUgY29tcHV0ZWQgc3R5bGVzIGxpc3QgYW5kIGhpZ2hsaWdodCBhbGwgbWF0Y2hlZCBw
cm9wZXJ0aWVzIGFuZCBzZWxlY3RvcnMgb2YgdGhlIGZpbHRlciBiYXIgdGV4dCwgdHVybmluZyBh
bGwgbm9uIG1hdGNoaW5nIHByb3BlcnRpZXMgc2xpZ2h0bHkgb3BhcXVlICh1bmxlc3MgYSBzZWxl
Y3RvciBmb3IgdGhhdCBwcm9wZXJ0eSBpcyBhIG1hdGNoKS4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0
eWxlRGV0YWlsc1BhbmVsKTogQWRkZWQgZGVsZWdhdGUgdmFyaWFibGUgdG8gY29uc3RydWN0b3Iu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnJlZnJl
c2gpOiBBZGRlZCBldmVudCBkaXNwYXRjaCBmb3IgcGFuZWwgcmVmcmVzaC4KKwogMjAxNS0wNi0w
NyAgVG9iaWFzIFJlaXNzICA8dG9iaSt3ZWJraXRAYmFzZWNvZGUuZGU+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogQWRkIFByZXR0eVByaW50ZXIgQ1NTUnVsZSB0ZXN0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKaW5kZXggYmE5ZjE2MDQ4MzRmNDhhZDliODhlNTkzOTAwYzVjMWQ0
MDM4NDk4Yy4uOGVlYzFlM2I3OGExOWZjMzc1YmY2NTI4YzRjOTEwYzFkNGM4ZWJhZiAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxNTUKemNtWnA8JUdffEJkQmZzLXtzNHZ8aEoxenNoRXlQ
MyFjYU4rSyFLX19uaXp1dWdBWVJ7TC1GSlpNZiNJdjN3UzE8CnpwVCMhJFpvYiYme3JQX1MmT3R6
fSNTRW5rSVk4fmpLJjVVIzw0UEl3NypaSU43LUU1WlRPZHxxQEJAa31GeUslLQpTYEdiPH5XZEdA
R258YkcjZGprTWEpK3Q1KwoKZGVsdGEgMjcKamNtWnA7JmZJZDlkQmZ1VCQqfjE4bGVnemRZPnE4
Myk4RVh3cHhoZSh1QmkqaQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rp
b24uanMKaW5kZXggMTE3NGU1YTA0Njc5N2I1ZmZhYzYzYThmNjQ4OTMwODZhYzRhMDA4Ny4uNGI0
YWQyMzk2ZTQxZmNmOTU3ZjE3MGEyZTZkOGU3OGUxNDY5MjI3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNl
Y3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTQ4LDYgKzQ4LDggQEAgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uID0gZnVuY3Rpb24oZGVsZWdhdGUsIHN0eWxl
KQogICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5zZXRBdHRyaWJ1dGUoInNwZWxsY2hlY2siLCAi
ZmFsc2UiKTsKICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlbGVj
dG9yRWxlbWVudCk7CiAKKyAgICB0aGlzLl9wcm9wZXJ0eVNlbGVjdG9ycyA9IFtdOworCiAgICAg
dGhpcy5fb3JpZ2luRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAg
ICB0aGlzLl9vcmlnaW5FbGVtZW50LmNsYXNzTmFtZSA9ICJvcmlnaW4iOwogICAgIHRoaXMuX2hl
YWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3JpZ2luRWxlbWVudCk7CkBAIC0xOTQsNiAr
MTk2LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50
LmFwcGVuZENoaWxkKHNlbGVjdG9yRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0
eVNlbGVjdG9ycy5wdXNoKHNlbGVjdG9yRWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBm
dW5jdGlvbiBhcHBlbmRTZWxlY3RvclRleHRLbm93blRvTWF0Y2goc2VsZWN0b3JUZXh0KQpAQCAt
MjcyLDYgKzI3NSwzNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24u
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAorICAgIGZpbmRN
YXRjaGluZ1Byb3BlcnRpZXM6IGZ1bmN0aW9uKG5lZWRsZSkKKyAgICB7CisgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNoaW5nIiwg
ImZpbHRlci1zZWN0aW9uLWhhcy1sYWJlbCIpOworCisgICAgICAgIHZhciBoYXNNYXRjaGluZ1Nl
bGVjdG9yID0gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgc2VsZWN0b3Igb2YgdGhpcy5fcHJv
cGVydHlTZWxlY3RvcnMpIHsKKyAgICAgICAgICAgIHNlbGVjdG9yLmNsYXNzTGlzdC5yZW1vdmUo
ImZpbHRlci1tYXRjaGluZyIpOworCisgICAgICAgICAgICBpZiAobmVlZGxlICYmIHNlbGVjdG9y
LnRleHRDb250ZW50LmluY2x1ZGVzKG5lZWRsZSkpIHsKKyAgICAgICAgICAgICAgICBzZWxlY3Rv
ci5jbGFzc0xpc3QuYWRkKCJmaWx0ZXItbWF0Y2hpbmciKTsKKyAgICAgICAgICAgICAgICBoYXNN
YXRjaGluZ1NlbGVjdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IuZmluZE1hdGNoaW5nUHJvcGVydGll
cyhuZWVkbGUpKSB7CisgICAgICAgICAgICBpZiAoIW5lZWRsZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChoYXNNYXRjaGluZ1NlbGVjdG9yKQorICAg
ICAgICAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmNsZWFyTWF0Y2hpbmdQcm9w
ZXJ0aWVzKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImZpbHRlci1zZWN0aW9uLW5vbi1tYXRjaGluZyIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0sCisKICAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRl
eCA1ZjY0NDUxOTE2MWQ5YjczNGNlYmEzZjJlOTU5Yzg4MDhjMTg3MWUwLi4wNjAxNDE5YmRkY2Qw
ZDk2MDE0YzcyYzg1ZjJmOGY0MjAwYWFjMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHls
ZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtMzYsNiArMzYsNyBAQCBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvcgogCiAgICAgICAgIHRoaXMuX3Nob3dzSW1wbGljaXRQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgdGhpcy5fYWx3YXlzU2hvd1Byb3BlcnR5TmFtZXMgPSB7fTsKKyAgICAgICAg
dGhpcy5fZmlsdGVyUmVzdWx0UHJvcGVydHlOYW1lcyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Nv
cnRQcm9wZXJ0aWVzID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5fcHJlZml4V2hpdGVzcGFjZSA9
ICIiOwpAQCAtMjI5LDYgKzIzMCw3NiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAg
ICB0aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcih7bGluZTogMCwgY2g6IDB9KTsKICAgICB9CiAK
KyAgICBmaW5kTWF0Y2hpbmdQcm9wZXJ0aWVzKG5lZWRsZSkKKyAgICB7CisgICAgICAgIHZhciBw
cm9wZXJ0aWVzTGlzdCA9IHRoaXMuX3N0eWxlLnZpc2libGVQcm9wZXJ0aWVzLmxlbmd0aCA/IHRo
aXMuX3N0eWxlLnZpc2libGVQcm9wZXJ0aWVzIDogdGhpcy5fc3R5bGUucHJvcGVydGllczsKKyAg
ICAgICAgdmFyIG1hdGNoRm91bmQgPSBmYWxzZTsKKworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0
eSBvZiBwcm9wZXJ0aWVzTGlzdCkgeworICAgICAgICAgICAgaWYgKHByb3BlcnR5Ll9fcHJvcGVy
dHlUZXh0TWFya2VyKSB7CisgICAgICAgICAgICAgICAgaWYgKCFuZWVkbGUpCisgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lID0gbnVsbDsKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChwcm9wZXJ0eS50ZXh0LmluY2x1ZGVzKG5lZWRsZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUgPSAiZmls
dGVyLW1hdGNoaW5nIjsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hGb3VuZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5Ll9fZmls
dGVyUmVzdWx0Q2xhc3NOYW1lID0gImZpbHRlci1wcm9wZXJ0eS1ub24tbWF0Y2hpbmciOworCisg
ICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGV4dE1hcmtlckZvclByb3BlcnR5SWZOZWVkZWQo
cHJvcGVydHkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1h
dGNoRm91bmQ7CisgICAgfQorCisgICAgY2xlYXJNYXRjaGluZ1Byb3BlcnRpZXMoKQorICAgIHsK
KyAgICAgICAgdmFyIHByb3BlcnRpZXNMaXN0ID0gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRp
ZXMubGVuZ3RoID8gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMgOiB0aGlzLl9zdHlsZS5w
cm9wZXJ0aWVzOworCisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHByb3BlcnRpZXNMaXN0
KSB7CisgICAgICAgICAgICBpZiAocHJvcGVydHkuX19wcm9wZXJ0eVRleHRNYXJrZXIpIHsKKyAg
ICAgICAgICAgICAgICBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdENsYXNzTmFtZSA9IG51bGw7CisK
KyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRl
ZChwcm9wZXJ0eSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJlbW92
ZU5vbk1hdGNoaW5nUHJvcGVydGllcyhuZWVkbGUpCisgICAgeworICAgICAgICB0aGlzLl9maWx0
ZXJSZXN1bHRQcm9wZXJ0eU5hbWVzID0gbnVsbDsKKworICAgICAgICBpZiAoIW5lZWRsZSkgewor
ICAgICAgICAgICAgdGhpcy5fcmVzZXRDb250ZW50KCk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICB2YXIgbWF0Y2hpbmdQcm9wZXJ0eU5hbWVzID0gW107
CisKKyAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgdGhpcy5fc3R5bGUucHJvcGVydGllcykg
eworICAgICAgICAgICAgdmFyIGluZGV4ZXNPZk5lZWRsZSA9IFtwcm9wZXJ0eS50ZXh0LmluZGV4
T2YobmVlZGxlKV07CisgICAgICAgICAgICBpZiAoaW5kZXhlc09mTmVlZGxlWzBdID49IDApIHsK
KyAgICAgICAgICAgICAgICBtYXRjaGluZ1Byb3BlcnR5TmFtZXMucHVzaChwcm9wZXJ0eS5uYW1l
KTsKKworICAgICAgICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lID0g
ImZpbHRlci1tYXRjaGluZyI7CisKKyAgICAgICAgICAgICAgICB2YXIgbmV4dEluZGV4T2ZOZWVk
bGUgPSBwcm9wZXJ0eS50ZXh0LmluZGV4T2YobmVlZGxlLCBpbmRleGVzT2ZOZWVkbGVbaW5kZXhl
c09mTmVlZGxlLmxlbmd0aCAtIDFdICsgMSk7CisgICAgICAgICAgICAgICAgd2hpbGUgKG5leHRJ
bmRleE9mTmVlZGxlID4gMCkgeworICAgICAgICAgICAgICAgICAgICBpbmRleGVzT2ZOZWVkbGUu
cHVzaChuZXh0SW5kZXhPZk5lZWRsZSk7CisgICAgICAgICAgICAgICAgICAgIG5leHRJbmRleE9m
TmVlZGxlID0gcHJvcGVydHkudGV4dC5pbmRleE9mKG5lZWRsZSwgaW5kZXhlc09mTmVlZGxlW2lu
ZGV4ZXNPZk5lZWRsZS5sZW5ndGggLSAxXSArIDEpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24gPSB7c3Rh
cnQ6IGluZGV4ZXNPZk5lZWRsZSwgbGVuZ3RoOiBuZWVkbGUubGVuZ3RofTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2ZpbHRlclJlc3VsdFByb3BlcnR5TmFtZXMg
PSAobWF0Y2hpbmdQcm9wZXJ0eU5hbWVzLmxlbmd0aCkgPyBtYXRjaGluZ1Byb3BlcnR5TmFtZXMu
a2V5U2V0KCkgOiB7fTsKKworICAgICAgICB0aGlzLl9yZXNldENvbnRlbnQoKTsKKworICAgICAg
ICByZXR1cm4gbWF0Y2hpbmdQcm9wZXJ0eU5hbWVzLmxlbmd0aCA+IDA7CisgICAgfQorCiAgICAg
Ly8gUHJvdGVjdGVkCiAKICAgICBkaWREaXNtaXNzUG9wb3Zlcihwb3BvdmVyKQpAQCAtNTI3LDYg
KzU5OCw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNs
YXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAgICAgICAgIGlmICghcHJvcGVydHku
ZW5hYmxlZCkKICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiZGlzYWJsZWQiKTsKIAorICAg
ICAgICBpZiAocHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUgJiYgIXByb3BlcnR5Ll9f
ZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24pCisgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2go
cHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUpOworCiAgICAgICAgIHZhciBjbGFzc05h
bWVzU3RyaW5nID0gY2xhc3NOYW1lcy5qb2luKCIgIik7CiAKICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgYWxyZWFkeSBhIHRleHQgbWFya2VyIGFuZCBpdCdzIGluIHRoZSBzYW1lIGRvY3VtZW50LCB0
aGVuIHRyeSB0byBhdm9pZCByZWNyZWF0aW5nIGl0LgpAQCAtNTU4LDYgKzYzMiwxNSBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm1hcmtU
ZXh0KHN0YXJ0LCBlbmQsIHtjbGFzc05hbWU6ICJpbnZhbGlkIn0pOwogICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lICYmIHByb3BlcnR5Ll9f
ZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24pIHsKKyAgICAgICAgICAgIGZvciAodmFyIG5lZWRs
ZVBvc2l0aW9uIG9mIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24uc3RhcnQp
IHsKKyAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSB7bGluZTogZnJvbS5saW5lLCBjaDogbmVl
ZGxlUG9zaXRpb259OworICAgICAgICAgICAgICAgIHZhciBlbmQgPSB7bGluZTogdG8ubGluZSwg
Y2g6IHN0YXJ0LmNoICsgcHJvcGVydHkuX19maWx0ZXJSZXN1bHROZWVkbGVQb3NpdGlvbi5sZW5n
dGh9OworCisgICAgICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5tYXJrVGV4dChzdGFydCwg
ZW5kLCB7Y2xhc3NOYW1lOiBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdENsYXNzTmFtZX0pOworICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgX2NsZWFyVGV4dE1hcmtlcnMobm9u
YXRvbWljLCBhbGwpCkBAIC01OTcsNyArNjgwLDE0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
CiAgICAgewogICAgICAgICB2YXIgcHJvcGVydGllcyA9IG9ubHlWaXNpYmxlUHJvcGVydGllcyA/
IHRoaXMuX3N0eWxlLnZpc2libGVQcm9wZXJ0aWVzIDogdGhpcy5fc3R5bGUucHJvcGVydGllczsK
IAotICAgICAgICBpZiAoIW9ubHlWaXNpYmxlUHJvcGVydGllcykgeworICAgICAgICBpZiAodGhp
cy5fZmlsdGVyUmVzdWx0UHJvcGVydHlOYW1lcykgeworICAgICAgICAgICAgcHJvcGVydGllcyA9
IHByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uKHByb3BlcnR5KSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuICghcHJvcGVydHkuaW1wbGljaXQgfHwgdGhpcy5fc2hvd3NJbXBsaWNpdFByb3BlcnRp
ZXMpICYmIHByb3BlcnR5Lm5hbWUgaW4gdGhpcy5fZmlsdGVyUmVzdWx0UHJvcGVydHlOYW1lczsK
KyAgICAgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgICAgICBpZiAodGhpcy5fc29ydFByb3Bl
cnRpZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydGllcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsg
cmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7IH0pOworICAgICAgICB9IGVsc2Ug
aWYgKCFvbmx5VmlzaWJsZVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgIC8vIEZpbHRlciBiYXNl
ZCBvbiBvcHRpb25zIG9ubHkgd2hlbiBhbGwgcHJvcGVydGllcyBhcmUgdXNlZC4KICAgICAgICAg
ICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbihwcm9wZXJ0eSkgewog
ICAgICAgICAgICAgICAgIHJldHVybiAhcHJvcGVydHkuaW1wbGljaXQgfHwgdGhpcy5fc2hvd3NJ
bXBsaWNpdFByb3BlcnRpZXMgfHwgcHJvcGVydHkuY2Fub25pY2FsTmFtZSBpbiB0aGlzLl9hbHdh
eXNTaG93UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuY3NzCmluZGV4IGZjYzNiOGQzN2QzNjYyYzBlNTNjNjhmYzU1NmUzYzM2OThhYTcx
OTcuLjU1MTg0YTMzYzUxZWQxOTM1MTE4ZWY1ZGU0NWUwOWJjZDE0NmQxOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcwpAQCAtNDIsNiArNDIsMTAg
QEAKICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiB9CiAKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuaGFzLWZpbHRlci1iYXIgeworICAgIGJvdHRvbTogMjhw
eDsKK30KKwogLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudCA+
IC5wc2V1ZG8tY2xhc3NlcyB7CiAgICAgcGFkZGluZzogMTBweDsKICAgICBib3JkZXItYm90dG9t
OiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOwpAQCAtNjgsMyArNzIsNzggQEAKICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKIH0KKworLnNp
ZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudCArIC5maWx0ZXItYmFy
IHsKKyAgICBkaXNwbGF5OiBub25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0
b206IDA7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAyOXB4OworICAgIGJhY2tncm91
bmQtY29sb3I6IHdoaXRlOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMTc5LCAxNzks
IDE3OSk7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRl
bnQgKyAuZmlsdGVyLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAwOworICAgIGxlZnQ6IDA7CisgICAg
bWFyZ2luOiAzcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cit9CisKKy5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuaGFzLWZpbHRlci1iYXIgKyAu
ZmlsdGVyLWJhciB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5sYWJlbCB7
CisgICAgcGFkZGluZy10b3A6IDE1cHg7CisgICAgcGFkZGluZy1ib3R0b206IDVweDsKKyAgICBi
b3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOworfQorCisuc2lkZWJh
ciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVz
cyAubmV3LXJ1bGUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0ZXIt
bWF0Y2hpbmcgeworICAgIGRpc3BsYXk6IGlubGluZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2JhKDIzNSwgMjE1LCAzOCwgMC41KTsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdi
KDIzNywgMjAyLCA3MSk7CisgICAgb3BhY2l0eTogMTsKK30KKworLnNpZGViYXIgPiAucGFuZWwu
ZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRl
Y2xhcmF0aW9uLXNlY3Rpb24geworICAgIG1hcmdpbi1ib3R0b206IDA7Cit9CisKKy5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNz
IC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uLmxhc3QtaW4tZ3JvdXAuZmlsdGVyLXNlY3Rpb24t
bm9uLW1hdGNoaW5nICsgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24uZmlsdGVyLXNlY3Rpb24t
aGFzLWxhYmVsIHsKKyAgICBtYXJnaW4tdG9wOiAwOworICAgIGJvcmRlci10b3A6IG5vbmU7Cit9
CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVy
LWluLXByb2dyZXNzIC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uOm5vdCguZmlsdGVyLXNlY3Rp
b24taGFzLWxhYmVsKSB7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBib3JkZXItdG9wOiBub25l
OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMTc5LCAxNzksIDE3OSk7Cit9CisK
Ky5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWlu
LXByb2dyZXNzIC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uID4gLmhlYWRlciA+IC5zZWxlY3Rv
ciA+IC5maWx0ZXItbWF0Y2hpbmcgeworICAgIGNvbG9yOiBibGFjazsKK30KKworLnNpZGViYXIg
PiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3Mg
LmZpbHRlci1zZWN0aW9uLW5vbi1tYXRjaGluZyB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
LnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4t
cHJvZ3Jlc3MgLmZpbHRlci1wcm9wZXJ0eS1ub24tbWF0Y2hpbmcgeworICAgIG9wYWNpdHk6IDAu
NTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5m
aWx0ZXItaW4tcHJvZ3Jlc3MgPiAubGFiZWwubm8tZmlsdGVyLXJlc3VsdHMgeworICAgIGRpc3Bs
YXk6IGJsb2NrOworICAgIG1hcmdpbjogMTBweCAwOworICAgIHBhZGRpbmc6IDA7CisgICAgdGV4
dC1hbGlnbjogY2VudGVyOworICAgIGJvcmRlcjogbm9uZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCAyMDU3MGM0N2Y4MWYxNDA3Yjg4MmVj
OWM4MDUxOTEwYmNkNjdiMGY4Li44NWJmOWZhOGEyODI4YmIzZWRkMmM4MDUzYWEwYjgyMDgyZDVm
YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBA
IC03MSw4ICs3MSwxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
ID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKLSAgICAgICAgdGhpcy5fcnVsZXNTdHls
ZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbDsK
LSAgICAgICAgdGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rv
ci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWw7CisgICAgICAgIHRoaXMuX3J1bGVzU3R5bGVEZXRh
aWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7
CisgICAgICAgIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0
b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOworCisgICAgICAgIHRoaXMuX2NvbXB1
dGVkU3R5bGVEZXRhaWxzUGFuZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3R5bGVE
ZXRhaWxzUGFuZWwuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMp
OworICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5fZmls
dGVyRGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCwgdGhp
cy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsXTsKIApAQCAtODQsNiArODcsMTggQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbCBleHQKIAogICAgICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdGhlIHNlbGVj
dGVkIHBhbmVsIHRvIGJlIHNldCBpbiBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZC4KICAgICAgICAg
dGhpcy5fbmF2aWdhdGlvbkJhci5zZWxlY3RlZE5hdmlnYXRpb25JdGVtID0gdGhpcy5fbGFzdFNl
bGVjdGVkU2VjdGlvblNldHRpbmcudmFsdWU7CisKKyAgICAgICAgdGhpcy5fZmlsdGVyQmFyID0g
bmV3IFdlYkluc3BlY3Rvci5GaWx0ZXJCYXI7CisgICAgICAgIHRoaXMuX2ZpbHRlckJhci5wbGFj
ZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsdGVyIFByb3BlcnR5IExpc3QiKTsK
KyAgICAgICAgdGhpcy5fZmlsdGVyQmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZp
bHRlckJhci5FdmVudC5GaWx0ZXJEaWRDaGFuZ2UsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhp
cyk7CisKKyAgICAgICAgdGhpcy5fZmlsdGVyQmFyLl9ub1Jlc3VsdHNGb3VuZExhYmVsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2ZpbHRlckJhci5fbm9S
ZXN1bHRzRm91bmRMYWJlbC5jbGFzc05hbWUgPSAibGFiZWwgbm8tZmlsdGVyLXJlc3VsdHMiOwor
ICAgICAgICB0aGlzLl9maWx0ZXJCYXIuX25vUmVzdWx0c0ZvdW5kTGFiZWwuc3R5bGUuZGlzcGxh
eSA9ICJub25lIjsKKyAgICAgICAgdGhpcy5fZmlsdGVyQmFyLl9ub1Jlc3VsdHNGb3VuZExhYmVs
LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBSZXN1bHRzIEZvdW5kIik7
CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ZpbHRlckJhci5lbGVt
ZW50KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9maWx0
ZXJCYXIuX25vUmVzdWx0c0ZvdW5kTGFiZWwpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAt
MjExLDYgKzIyNiwxMCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
ID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5f
aW5pdGlhbFNjcm9sbE9mZnNldDsKIAorICAgICAgICAgICAgdmFyIGhhc0ZpbHRlciA9IHR5cGVv
ZiB0aGlzLl9zZWxlY3RlZFBhbmVsLmZpbHRlckRpZENoYW5nZSA9PT0gImZ1bmN0aW9uIjsKKyAg
ICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGFzLWZpbHRl
ci1iYXIiLCBoYXNGaWx0ZXIpOworICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFz
c0xpc3QudG9nZ2xlKCJmaWx0ZXItaW4tcHJvZ3Jlc3MiLCBoYXNGaWx0ZXIpOworCiAgICAgICAg
ICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsLnNob3duKCk7CiAgICAgICAgIH0KIApAQCAtMjM3LDYg
KzI1NiwxOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xh
c3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAgY2hlY2tib3hF
bGVtZW50LmNoZWNrZWQgPSBlbmFibGVkUHNldWRvQ2xhc3Nlcy5pbmNsdWRlcyhwc2V1ZG9DbGFz
cyk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBfZmlsdGVyRGlkQ2hhbmdlKCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9maWx0ZXJCYXIpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVs
ZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZmlsdGVyLWluLXByb2dyZXNzIiwgdGhpcy5fZmlsdGVy
QmFyLmhhc0FjdGl2ZUZpbHRlcnMoKSk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9maWx0ZXJC
YXIuX25vUmVzdWx0c0ZvdW5kTGFiZWwpCisgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyQmFy
Ll9ub1Jlc3VsdHNGb3VuZExhYmVsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisKKyAgICAgICAg
ICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwuZmlsdGVyRGlkQ2hhbmdlKHRoaXMuX2ZpbHRlckJhcik7
CisgICAgICAgIH0KKyAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lk
ZWJhclBhbmVsLk5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldCA9IDM4OyAvLyBEZWZh
dWx0IGhlaWdodCBvZiB0aGUgZm9yY2VkIHBzZXVkbyBjbGFzc2VzIGNvbnRhaW5lci4gVXBkYXRl
ZCBpbiB3aWR0aERpZENoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1Bh
bmVsLmpzCmluZGV4IGFiNmRlYjlmZmI2MjRmMWEyZTE3ZjZjMTMzYzQ4Mjc0MWRkYjQwODkuLjI5
MjU2NDViZjkzOWM3MmYwNDA3NzZiYTBmMDE1YWMxZTFjYjVjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxz
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMjcsOSArMjcsNyBAQCBXZWJJbnNwZWN0
b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxz
UGFuZWwgZXh0ZW5kcwogewogICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQogICAgIHsKLSAgICAg
ICAgc3VwZXIoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFz
c05hbWUsICJjb21wdXRlZCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29tcHV0ZWQiKSk7Ci0K
LSAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworICAgICAgICBzdXBl
cihkZWxlZ2F0ZSwgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVD
bGFzc05hbWUsICJjb21wdXRlZCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29tcHV0ZWQiKSk7
CiAKICAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxTZXR0aW5nID0gbmV3IFdlYklu
c3BlY3Rvci5TZXR0aW5nKCJjb21wdXRlZC1zdHlsZS1zaG93LWFsbCIsIGZhbHNlKTsKIApAQCAt
MTUzLDYgKzE1MSwxMyBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9
IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcwogICAgIHsKICAgICAgICAg
dGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3Iuc3R5bGUgPSB0aGlzLm5vZGVTdHlsZXMuY29tcHV0
ZWRTdHlsZTsKICAgICAgICAgdGhpcy5fcmVmcmVzaEZsb3dEZXRhaWxzKHRoaXMubm9kZVN0eWxl
cy5ub2RlKTsKKworICAgICAgICBzdXBlci5yZWZyZXNoKCk7CisgICAgfQorCisgICAgZmlsdGVy
RGlkQ2hhbmdlKGZpbHRlckJhcikKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0
RWRpdG9yLnJlbW92ZU5vbk1hdGNoaW5nUHJvcGVydGllcyhmaWx0ZXJCYXIuZmlsdGVycy50ZXh0
KTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcwppbmRleCBhOWYwNjAyMGEx
NmE5MjFmMDZlODg2MjNhYzRlNzk4NzhmNmI2OTQ1Li5hYzZiNjdkYTI4YjAzOGEwOWZhNTlhZjhk
YWZjYmQwMzNiMzdlZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCkBAIC00Myw2ICs0Myw4IEBAIFdlYkluc3Bl
Y3Rvci5GaWx0ZXJCYXIgPSBjbGFzcyBGaWx0ZXJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuX2lucHV0RmllbGQuaW5jcmVtZW50YWwgPSB0cnVlOwogICAgICAg
ICB0aGlzLl9pbnB1dEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIsIHRoaXMuX2hhbmRs
ZUZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgICAgICB0aGlzLl9lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2lucHV0RmllbGQpOworCisgICAgICAgIHRoaXMuX2xhc3RGaWx0
ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyczsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTk5LDYg
KzEwMSwxMSBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyID0gY2xhc3MgRmlsdGVyQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gISF0aGlzLl9pbnB1dEZpZWxk
LnZhbHVlIHx8ICEhdGhpcy5fZmlsdGVyRnVuY3Rpb25zTWFwLnNpemU7CiAgICAgfQogCisgICAg
aGFzRmlsdGVyQ2hhbmdlZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGFzdEZpbHRl
clZhbHVlLnRleHQgIT09IHRoaXMuX2lucHV0RmllbGQudmFsdWUgfHwgdGhpcy5fbGFzdEZpbHRl
clZhbHVlLmZ1bmN0aW9ucy5sZW5ndGggIT09IHRoaXMuX2ZpbHRlckZ1bmN0aW9uc01hcC5zaXpl
OworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9oYW5kbGVGaWx0ZXJCYXJCdXR0b25D
bGlja2VkKGV2ZW50KQpAQCAtMTE5LDcgKzEyNiwxMCBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFy
ID0gY2xhc3MgRmlsdGVyQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgX2hh
bmRsZUZpbHRlckNoYW5nZWQoKQogICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbHRlckJhci5FdmVudC5GaWx0ZXJEaWRDaGFuZ2UpOwor
ICAgICAgICBpZiAodGhpcy5oYXNGaWx0ZXJDaGFuZ2VkKCkpIHsKKyAgICAgICAgICAgIHRoaXMu
X2xhc3RGaWx0ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyczsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQuRmlsdGVyRGlk
Q2hhbmdlKTsKKyAgICAgICAgfQogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHls
ZURldGFpbHNQYW5lbC5qcwppbmRleCA4ODk1NDMxOGZiNDg2M2Y0M2Q4YjkzZmE4YzE1YTJkNjg3
ODQyNzdkLi40MjE1OWFjZDhjYzNiZjhjZjc3ODJjZWRmZWUzMDdkYWYwMWQyOWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5
bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0yNSw5ICsyNSw5IEBACiAK
IFdlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBNZXRyaWNzU3R5
bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwKIHsK
LSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCiAgICAgewotICAg
ICAgICBzdXBlcigibWV0cmljcyIsICJtZXRyaWNzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJN
ZXRyaWNzIikpOworICAgICAgICBzdXBlcihkZWxlZ2F0ZSwgIm1ldHJpY3MiLCAibWV0cmljcyIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0cmljcyIpKTsKIAogICAgICAgICB0aGlzLl9ib3hN
b2RlbERpYWdyYW1Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25S
b3c7CiAKQEAgLTQyLDUgKzQyLDcgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQ
YW5lbCA9IGNsYXNzIE1ldHJpY3NTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFcKICAgICByZWZy
ZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2JveE1vZGVsRGlhZ3JhbVJvdy5ub2RlU3R5bGVz
ID0gdGhpcy5ub2RlU3R5bGVzOworCisgICAgICAgIHN1cGVyLnJlZnJlc2goKTsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UnVsZXNTdHlsZURldGFpbHNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmNzcwppbmRleCBlYmRlNjg1M2My
MzkyZTFlOGY5N2VmNDM2NGU3YWEwZmVhOWE4OWQ5Li42NDNlYzMyMjEwY2JkNTVhOTQ4MTNmOWIz
MDAzZDJlOWU5NGZhYzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmNz
cwpAQCAtNTIsNyArNTIsMTIgQEAKICAgICBvcGFjaXR5OiAwLjU7CiB9CiAKLS5zaWRlYmFyID4g
LnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC5ydWxlcyAubmV3LXJ1bGUgKyAuc3R5bGUtZGVjbGFy
YXRpb24tc2VjdGlvbiB7Cisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAgPiAu
Y29udGVudDpub3QoLmZpbHRlci1pbi1wcm9ncmVzcykgPiAucnVsZXMgPiAubmV3LXJ1bGUgKyAu
c3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiB7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJn
YigxNzksIDE3OSwgMTc5KTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgPiAuY29udGVudDpub3QoLmZpbHRlci1pbi1wcm9ncmVzcykgPiAucnVsZXMgPiAubmV3LXJ1
bGUgKyAubGFiZWwgeworICAgIHBhZGRpbmctdG9wOiAxMHB4OwogICAgIGJvcmRlci10b3A6IDFw
eCBzb2xpZCByZ2IoMTc5LCAxNzksIDE3OSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0
YWlsc1BhbmVsLmpzCmluZGV4IDdkMWJjN2MxYWRlNmQ1MjJhMDg2MGZjOTIwOWMxOWY3YzUzMTY0
MTMuLjU4MTI5OTZmZjM1MWNjMmE1ODFiMmRkMWVjNDNmMzEwOWE3MmZhMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRh
aWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMjUsMTEgKzI1LDEyIEBACiAKIFdlYklu
c3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQ
YW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbAogewotICAgIGNvbnN0
cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSkKICAgICB7Ci0gICAgICAgIHN1cGVy
KCJydWxlcyIsICJydWxlcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVsZXMiKSk7CisgICAg
ICAgIHN1cGVyKGRlbGVnYXRlLCAicnVsZXMiLCAicnVsZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJ1bGVzIikpOwogCiAgICAgICAgIHRoaXMuX3NlY3Rpb25zID0gW107CisgICAgICAgIHRo
aXMuX3J1bGVNZWRpYUFuZEluaGVydGljYW5jZUxpc3QgPSBbXTsKICAgICAgICAgdGhpcy5fcHJv
cGVydHlUb1NlbGVjdEFuZEhpZ2hsaWdodCA9IG51bGw7CiAgICAgfQogCkBAIC0xNzAsMTEgKzE3
MSwxNCBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICB9CiAKICAgICAgICAgdmFy
IGFkZGVkTmV3UnVsZUJ1dHRvbiA9IGZhbHNlOworICAgICAgICB0aGlzLl9ydWxlTWVkaWFBbmRJ
bmhlcnRpY2FuY2VMaXN0ID0gW107CiAKICAgICAgICAgdmFyIG9yZGVyZWRTdHlsZXMgPSB1bmlx
dWVPcmRlcmVkU3R5bGVzKHRoaXMubm9kZVN0eWxlcy5vcmRlcmVkU3R5bGVzKTsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBvcmRlcmVkU3R5bGVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICB2YXIgc3R5bGUgPSBvcmRlcmVkU3R5bGVzW2ldOwogCisgICAgICAgICAgICB2YXIgaGFz
TWVkaWFPckluaGVyaXRlZCA9IG51bGw7CisKICAgICAgICAgICAgIGlmIChzdHlsZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLlJ1bGUgJiYgIWFkZGVkTmV3
UnVsZUJ1dHRvbikKICAgICAgICAgICAgICAgICBhZGROZXdSdWxlQnV0dG9uLmNhbGwodGhpcyk7
CiAKQEAgLTE4OSw2ICsxOTMsOCBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5l
bCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICAg
ICAgICAgIGluaGVyaXRlZExhYmVsLmFwcGVuZENoaWxkKHByZWZpeEVsZW1lbnQpOwogICAgICAg
ICAgICAgICAgIGluaGVyaXRlZExhYmVsLmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5saW5raWZ5
Tm9kZVJlZmVyZW5jZShzdHlsZS5ub2RlKSk7CiAgICAgICAgICAgICAgICAgbmV3RE9NRnJhZ21l
bnQuYXBwZW5kQ2hpbGQoaW5oZXJpdGVkTGFiZWwpOworCisgICAgICAgICAgICAgICAgaGFzTWVk
aWFPckluaGVyaXRlZCA9IGluaGVyaXRlZExhYmVsOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAvLyBPbmx5IGluY2x1ZGUgdGhlIG1lZGlhIGxpc3QgaWYgaXQgaXMgZGlmZmVyZW50IGZy
b20gdGhlIHByZXZpb3VzIG1lZGlhIGxpc3Qgc2hvd24uCkBAIC0yMTgsOSArMjI0LDE2IEBAIFdl
Ykluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFp
bHNQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgICAgICBuZXdET01GcmFnbWVudC5hcHBlbmRDaGlsZChtZWRpYUxhYmVsKTsKKworICAg
ICAgICAgICAgICAgICAgICBoYXNNZWRpYU9ySW5oZXJpdGVkID0gbWVkaWFMYWJlbDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmICghaGFzTWVkaWFP
ckluaGVyaXRlZCAmJiBwcmV2aW91c1NlY3Rpb24gJiYgIXByZXZpb3VzU2VjdGlvbi5sYXN0SW5H
cm91cCkKKyAgICAgICAgICAgICAgICBoYXNNZWRpYU9ySW5oZXJpdGVkID0gdGhpcy5fcnVsZU1l
ZGlhQW5kSW5oZXJ0aWNhbmNlTGlzdC5sYXN0VmFsdWU7CisKKyAgICAgICAgICAgIHRoaXMuX3J1
bGVNZWRpYUFuZEluaGVydGljYW5jZUxpc3QucHVzaChoYXNNZWRpYU9ySW5oZXJpdGVkKTsKKwog
ICAgICAgICAgICAgYXBwZW5kU3R5bGVTZWN0aW9uLmNhbGwodGhpcywgc3R5bGUpOwogICAgICAg
ICB9CiAKQEAgLTI0MCw2ICsyNTMsOCBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQ
YW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogCiAgICAg
ICAgIGlmIChwcmV2aW91c0ZvY3VzZWRTZWN0aW9uKQogICAgICAgICAgICAgcHJldmlvdXNGb2N1
c2VkU2VjdGlvbi5mb2N1cygpOworCisgICAgICAgIHN1cGVyLnJlZnJlc2goKTsKICAgICB9CiAK
ICAgICBzY3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSkKQEAgLTI2
NSw2ICsyODAsMzEgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFz
cyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgfQogICAgIH0K
IAorICAgIGZpbHRlckRpZENoYW5nZShmaWx0ZXJCYXIpCisgICAgeworICAgICAgICBmb3IgKHZh
ciBsYWJlbCBvZiB0aGlzLl9ydWxlTWVkaWFBbmRJbmhlcnRpY2FuY2VMaXN0KSB7CisgICAgICAg
ICAgICBpZiAobGFiZWwpCisgICAgICAgICAgICAgICAgbGFiZWwuY2xhc3NMaXN0LnRvZ2dsZSgi
ZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNoaW5nIiwgZmlsdGVyQmFyLmhhc0FjdGl2ZUZpbHRlcnMo
KSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgbWF0Y2hGb3VuZCA9ICFmaWx0ZXJCYXIuaGFz
QWN0aXZlRmlsdGVycygpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rp
b25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rp
b25zW2ldOworCisgICAgICAgICAgICBpZiAoc2VjdGlvbi5maW5kTWF0Y2hpbmdQcm9wZXJ0aWVz
KGZpbHRlckJhci5maWx0ZXJzLnRleHQpICYmIGZpbHRlckJhci5oYXNBY3RpdmVGaWx0ZXJzKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fcnVsZU1lZGlhQW5kSW5oZXJ0aWNhbmNlTGlz
dFtpXSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcnVsZU1lZGlhQW5kSW5oZXJ0aWNhbmNl
TGlzdFtpXS5jbGFzc0xpc3QucmVtb3ZlKCJmaWx0ZXItc2VjdGlvbi1ub24tbWF0Y2hpbmciKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJmaWx0ZXItc2VjdGlvbi1oYXMtbGFiZWwiKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChmaWx0ZXJCYXIuX25vUmVzdWx0c0ZvdW5kTGFiZWwp
CisgICAgICAgICAgICBmaWx0ZXJCYXIuX25vUmVzdWx0c0ZvdW5kTGFiZWwuc3R5bGUuZGlzcGxh
eSA9ICFtYXRjaEZvdW5kID8gImJsb2NrIiA6ICJub25lIjsKKyAgICB9CisKICAgICAvLyBQcm90
ZWN0ZWQKIAogICAgIHNob3duKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggY2Vl
NGRhZGExYWU0ZjMxNTk2ZTRlNmYxM2YwZGRhZmI1Yzg5ZmVjZS4uYzhkMWFlYTg2ZWFlOTUzZjIw
NTQ3NjI4M2IxYTE4ZGYwN2JiZjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAg
LTI1LDEwICsyNSwxMiBAQAogCiBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFz
cyBTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBj
b25zdHJ1Y3RvcihjbGFzc05hbWUsIGlkZW50aWZpZXIsIGxhYmVsKQorICAgIGNvbnN0cnVjdG9y
KGRlbGVnYXRlLCBjbGFzc05hbWUsIGlkZW50aWZpZXIsIGxhYmVsKQogICAgIHsKICAgICAgICAg
c3VwZXIoKTsKIAorICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisK
ICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKIApAQCAtMTA5LDYg
KzExMSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFN0eWxlRGV0
YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iCiAgICAgcmVmcmVzaChzaWduaWZpY2Fu
dENoYW5nZSkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TdHlsZURl
dGFpbHNQYW5lbC5FdmVudC5SZWZyZXNoZWQpOwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZApA
QCAtMTYwLDMgKzE2Myw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbCA9IGNsYXNz
IFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iCiAgICAgICAgICAgICB0
aGlzLl9yZWZyZXNoTm9kZVN0eWxlcygpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5TdHls
ZURldGFpbHNQYW5lbC5FdmVudCA9IHsKKyAgICBSZWZyZXNoZWQ6ICJzdHlsZS1kZXRhaWxzLXBh
bmVsLXJlZnJlc2hlZCIKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254845</attachid>
            <date>2015-06-12 18:56:15 -0700</date>
            <delta_ts>2015-06-15 14:07:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145536-20150612185544.patch</filename>
            <type>text/plain</type>
            <size>34236</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMzMGVmMzk2YjA5OTU3ZjhlZDk2MDUxODVjMjgw
NzdhZDgwZWM5YmYuLmFkZDNlMzAzM2ZkZTc0NTE5ZWM3ZjI4ODBiMjI0YTgzM2ZmZmRmOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE1LTA2LTEyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgYSBmaWx0ZXIgZm9yIENTUyBwcm9wZXJ0aWVzIGluIHRoZSBTdHlsZXMgc2lkZWJhcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NTM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0Jhc2UvVXRpbGl0aWVzLmpzOiBBZGRlZCBmdW5jdGlvbiB0byBTdHJpbmdzIHRoYXQgcmV0
dXJucyBhbiBhcnJheSBvZiBhbGwgbWF0Y2hpbmcgaW5kZXhlcyBvZiBhIGdpdmVuIHN0cmluZy4K
KyAgICAgICAgKC52YWx1ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHls
ZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24ucHJvdG90eXBlLnJlZnJlc2guYXBwZW5kU2VsZWN0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZS5maW5kTWF0
Y2hpbmdQcm9wZXJ0aWVzQW5kU2VsZWN0b3JzKTogTG9vcHMgdGhyb3VnaCB0aGUgcHJvcGVydHkg
bGlzdCBhbmQgc2VsZWN0b3JzIG9mIGVhY2ggc2VjdGlvbiB0byBmaW5kIG1hdGNoZXMgdG8gdGhl
IGZpbHRlcmVkIHRleHQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuZmluZE1hdGNoaW5nUHJvcGVydGllcyk6IFNl
YXJjaGVzIHRocm91Z2ggdGhlIHByb3BlcnRpZXMgbGlzdCB0byBmaW5kIGFuZCBoaWdobGlnaHQg
YWxsIG1hdGNoaW5nIHByb3BlcnRpZXMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZU5vbk1hdGNoaW5nUHJvcGVydGll
cyk6IFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgdGhhdCBkbyBub3QgbWF0Y2ggYW5kIGhpZ2hsaWdo
dHMgdGhlIHNwZWNpZmljIG1hdGNoZWQgdGV4dCBpbiBtYXRjaGluZyBwcm9wZXJ0aWVzLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlw
ZS5yZXNldEZpbHRlcmVkUHJvcGVydGllcyk6IFJlc3RvcmVzIGFsbCBwcm9wZXJ0aWVzIHRvIGZ1
bGwgdmlzaWJpbGl0eSBhbmQgcmVtb3ZlcyBhbnkgaGlnaGxpZ2h0aW5nLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRl
VGV4dE1hcmtlckZvclByb3BlcnR5SWZOZWVkZWQpOiBDbGFzc2VzIGFyZSBhZGRlZCB0byBzZWxl
Y3Rpb25zIG9mIHRoZSB0ZXh0IGVkaXRvciBvZiB0aGF0IHBhcnRpdWxhciBzZWxlY3Rpb24gY29u
dGFpbnMgdGV4dCB3aGljaCBtYXRjaGVzIHRoZSBmaWx0ZXIgKHNlZSBDU1NTdHlsZURldGFpbHNT
aWRlYmFyUGFuZWwuY3NzIGZvciBkaWZmZXJlbnQgY2xhc3NlcykuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9pdGVyYXRlT3Zl
clByb3BlcnRpZXMpOiBJZiBhIGZpbHRlciBpcyBhY3RpdmUsIGZpbmQgcHJvcGVydGllcyBtYXRj
aGluZyB0aGUgZmlsdGVyIGluc3RlYWQgb2YgYWxsIHByb3BlcnRpZXMuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzOgorICAgICAg
ICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5oYXMtZmls
dGVyLWJhciArIC5maWx0ZXItYmFyKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlID4gLmNvbnRlbnQ6bm90KC5oYXMtZmlsdGVyLWJhcikgKyAuZmlsdGVyLWJh
cik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFy
UGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsKTogQWRkZWQgYSBmaWx0ZXIgYmFyIHRvIHRoZSBDU1Mgc2lkZWJhci4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9zd2l0Y2hQ
YW5lbHMpOiBTd2l0Y2hpbmcgcGFuZWxzIHByZXNlcnZlcyBhbmQgYXBwbGllcyBmaWx0ZXIgYmFy
IHRleHQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5fZmlsdGVyRGlkQ2hhbmdlKTogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGZp
bHRlciBiYXIgdGV4dCBjaGFuZ2VzIHRoYXQgY2FsbHMgdGhlIGN1cnJlbnQgcGFuZWwncyBmaWx0
ZXJEaWRDaGFuZ2UgZnVuY3Rpb24gaWYgaXQgZXhpc3RzLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvRmlsdGVyQmFyLmpzOiBBZGRlZCBmdW5jdGlvbiBhbmQgdmFyaWFibGUgdG8gY2hl
Y2sgaWYgdGhlIHRleHQgaW4gdGhlIGZpbHRlciBiYXIgaGFkIGNoYW5nZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNo
KTogTm93IGNhbGxzIHN1cGVyY2xhc3MgcmVmcmVzaC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwpOiBBZGRlZCBkZWxlZ2F0ZSB2YXJpYWJsZSB0byBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxz
UGFuZWwuY3NzOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUg
PiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLmxhYmVsKToKKyAgICAgICAgKC5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNz
IC5sYWJlbCB+IC5sYWJlbCk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAubGFiZWwuZmlsdGVyLW1hdGNo
aW5nLWxhYmVsKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxl
ID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5uZXctcnVsZSk6CisgICAgICAgICguc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9n
cmVzcyAuc3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbjpub3QoLmZpbHRlci1zZWN0aW9uLW5vbi1t
YXRjaGluZykgfiAubGFiZWw6bm90KC5maWx0ZXItc2VjdGlvbi1ub24tbWF0Y2hpbmcpKToKKyAg
ICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQ6bm90
KC5maWx0ZXItaW4tcHJvZ3Jlc3MpID4gLnJ1bGVzID4gLm5ldy1ydWxlICsgLnN0eWxlLWRlY2xh
cmF0aW9uLXNlY3Rpb24pOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mt
c3R5bGUgPiAuY29udGVudCA+IC5ydWxlczpub3QoLmZpbHRlci1ub24tbWF0Y2hpbmcpID4gLm5v
LWZpbHRlci1yZXN1bHRzKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3Nz
LXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzID4gLnJ1bGVzLmZpbHRlci1ub24t
bWF0Y2hpbmcgPiAubm8tZmlsdGVyLXJlc3VsdHMpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFu
ZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgPiAucnVs
ZXMuZmlsdGVyLW5vbi1tYXRjaGluZyA+IC5uby1maWx0ZXItcmVzdWx0cyA+IC5uby1maWx0ZXIt
cmVzdWx0cy1tZXNzYWdlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5
bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFp
bHNQYW5lbCk6IEFkZGVkIGRlbGVnYXRlIHZhcmlhYmxlIHRvIGNvbnN0cnVjdG9yLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnJlZnJlc2gp
OiBOb3cgY2FsbHMgc3VwZXJjbGFzcyByZWZyZXNoLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1
bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmZpbHRlckRpZENoYW5nZSk6IEZ1bmN0aW9u
IHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBjb21wdXRlZCBzdHlsZXMgbGlzdCBhbmQgaGlnaGxpZ2h0
IGFsbCBtYXRjaGVkIHByb3BlcnRpZXMgYW5kIHNlbGVjdG9ycyBvZiB0aGUgZmlsdGVyIGJhciB0
ZXh0LCB0dXJuaW5nIGFsbCBub24gbWF0Y2hpbmcgcHJvcGVydGllcyBzbGlnaHRseSBvcGFxdWUg
KHVubGVzcyBhIHNlbGVjdG9yIGZvciB0aGF0IHByb3BlcnR5IGlzIGEgbWF0Y2gpLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsKTogQWRkZWQgZGVsZWdhdGUgdmFyaWFi
bGUgdG8gY29uc3RydWN0b3IuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLnJlZnJlc2gpOiBBZGRlZCBldmVudCBkaXNwYXRjaCBmb3IgcGFuZWwgcmVm
cmVzaC4KKwogMjAxNS0wNi0xMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBSZWdpb25zIG5vdCBkaXNwbGF5aW5nIERP
TSBUcmVlcyBpbiBpbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9M
b2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4
IGJhOWYxNjA0ODM0ZjQ4YWQ5Yjg4ZTU5MzkwMGM1YzFkNDAzODQ5OGMuLjBkN2U4ODY2OGZhMWZh
NjMwOTEwNjIyMDdhYzhhYTQ2YjA3NjZlNjEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
MTI1CnpjbVpwPCVLWVJTXk09THdvV1RxdzQzIUt5NDVeZHRAPzxDWFVwSmVxcFR7QCh7NEJQfmNr
eyhJQDZZJHNjTWY3bQp6V2hpRFMxdTd+NShoM1oyNEVhRF85enpPKTU8QEpJWnd0Z3E0MVBkUzFx
S3t5Q3gxfVZvJE5vSVo4UHV1YSZHe3kKQzFTNU9eCgpkZWx0YSAxOQpiY21hRUlqaylEMl5NPUx3
bnxUWWVeZiRrcVUreFY2VzRIO1gKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IGM4YWNkYTgyNzQ4MDZjNTYzZGFi
MTZmNTUzY2JhNDg3YTgxNmI2ZjIuLmI1YzVlN2JiNTRkYzQyOGY1NGRmZWJlNjViNzc1ZjYyYjY2
NDZjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC03NDgsNiArNzQ4LDIyIEBAIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShTdHJpbmcucHJvdG90eXBlLCAicmVtb3ZlV29yZEJyZWFrQ2hhcmFjdGVycyIsCiAgICAg
fQogfSk7CiAKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiZ2V0TWF0
Y2hpbmdJbmRleGVzIiwKK3sKKyAgICB2YWx1ZTogZnVuY3Rpb24obmVlZGxlKQorICAgIHsKKyAg
ICAgICAgdmFyIGluZGV4ZXNPZk5lZWRsZSA9IFtdOworICAgICAgICB2YXIgaW5kZXggPSB0aGlz
LmluZGV4T2YobmVlZGxlKTsKKworICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkgeworICAgICAg
ICAgICAgaW5kZXhlc09mTmVlZGxlLnB1c2goaW5kZXgpOworICAgICAgICAgICAgaW5kZXggPSB0
aGlzLmluZGV4T2YobmVlZGxlLCBpbmRleGVzT2ZOZWVkbGUubGFzdFZhbHVlICsgMSk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gaW5kZXhlc09mTmVlZGxlOworICAgIH0KK30pOworCiBP
YmplY3QuZGVmaW5lUHJvcGVydHkoTnVtYmVyLCAiY29uc3RyYWluIiwKIHsKICAgICB2YWx1ZTog
ZnVuY3Rpb24obnVtLCBtaW4sIG1heCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uanMKaW5kZXggMTE3NGU1YTA0Njc5N2I1ZmZhYzYzYThmNjQ4OTMwODZhYzRhMDA4
Ny4uOTMwMDg2NmE5YTU3MGQwMDJiNWNlM2JhYTczZjkwNzE4ZGU2ODIxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTMyLDYgKzMyLDcgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uID0gZnVuY3Rpb24oZGVsZWdhdGUs
IHN0eWxlKQogCiAgICAgY29uc29sZS5hc3NlcnQoc3R5bGUpOwogICAgIHRoaXMuX3N0eWxlID0g
c3R5bGUgfHwgbnVsbDsKKyAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnRzID0gW107CiAKICAgICB0
aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc05hbWUgPSAic3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiI7CkBAIC0xNjIs
NiArMTYzLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3Rv
dHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5yZW1vdmVDaGls
ZHJlbigpOwogICAgICAgICB0aGlzLl9vcmlnaW5FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Cisg
ICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudHMgPSBbXTsKIAogICAgICAgICB0aGlzLl9vcmln
aW5FbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgXHUyMDE0ICIp
KTsKIApAQCAtMTk0LDYgKzE5Niw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRoaXMu
X3NlbGVjdG9yRWxlbWVudC5hcHBlbmRDaGlsZChzZWxlY3RvckVsZW1lbnQpOworICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50cy5wdXNoKHNlbGVjdG9yRWxlbWVudCk7CiAgICAgICAg
IH0KIAogICAgICAgICBmdW5jdGlvbiBhcHBlbmRTZWxlY3RvclRleHRLbm93blRvTWF0Y2goc2Vs
ZWN0b3JUZXh0KQpAQCAtMjcyLDYgKzI3NSwzNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fSwKIAorICAgIGZpbmRNYXRjaGluZ1Byb3BlcnRpZXNBbmRTZWxlY3RvcnM6IGZ1bmN0aW9uKG5l
ZWRsZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRmlsdGVyTWF0Y2hJblNlY3Rp
b25DbGFzc05hbWUsIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmls
dGVyTWF0Y2hpbmdTZWN0aW9uSGFzTGFiZWxDbGFzc05hbWUpOworCisgICAgICAgIHZhciBoYXNN
YXRjaGluZ1NlbGVjdG9yID0gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgc2VsZWN0b3JFbGVt
ZW50IG9mIHRoaXMuX3NlbGVjdG9yRWxlbWVudHMpIHsKKyAgICAgICAgICAgIHNlbGVjdG9yRWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFy
UGFuZWwuRmlsdGVyTWF0Y2hTZWN0aW9uQ2xhc3NOYW1lKTsKKworICAgICAgICAgICAgaWYgKG5l
ZWRsZSAmJiBzZWxlY3RvckVsZW1lbnQudGV4dENvbnRlbnQuaW5jbHVkZXMobmVlZGxlKSkgewor
ICAgICAgICAgICAgICAgIHNlbGVjdG9yRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmlsdGVyTWF0Y2hTZWN0aW9uQ2xhc3NOYW1l
KTsKKyAgICAgICAgICAgICAgICBoYXNNYXRjaGluZ1NlbGVjdG9yID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbmVlZGxlKSB7CisgICAgICAgICAgICB0
aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5yZXNldEZpbHRlcmVkUHJvcGVydGllcygpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGhhc01hdGNo
aW5nUHJvcGVydHkgPSB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5maW5kTWF0Y2hpbmdQcm9w
ZXJ0aWVzKG5lZWRsZSk7CisKKyAgICAgICAgaWYgKCFoYXNNYXRjaGluZ1Byb3BlcnR5ICYmICFo
YXNNYXRjaGluZ1NlbGVjdG9yKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZpbHRlck1h
dGNoSW5TZWN0aW9uQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKICAgICB1cGRhdGVMYXlvdXQ6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnVw
ZGF0ZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvci5qcwppbmRleCA1ZjY0NDUxOTE2MWQ5YjczNGNlYmEzZjJlOTU5Yzg4MDhjMTg3MWUwLi4x
YzJiMzQ1MDc4Mzg2MzJhZTdmYTFkMmU3YzBlNGY3ZWI3ODY2NWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtMzYsNiArMzYsNyBAQCBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHls
ZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgIHRoaXMuX3Nob3dzSW1wbGljaXRQcm9w
ZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fYWx3YXlzU2hvd1Byb3BlcnR5TmFtZXMgPSB7
fTsKKyAgICAgICAgdGhpcy5fZmlsdGVyUmVzdWx0UHJvcGVydHlOYW1lcyA9IG51bGw7CiAgICAg
ICAgIHRoaXMuX3NvcnRQcm9wZXJ0aWVzID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5fcHJlZml4
V2hpdGVzcGFjZSA9ICIiOwpAQCAtMjI5LDYgKzIzMCw3NyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvcgogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcih7bGluZTogMCwgY2g6IDB9
KTsKICAgICB9CiAKKyAgICBmaW5kTWF0Y2hpbmdQcm9wZXJ0aWVzKG5lZWRsZSkKKyAgICB7Cisg
ICAgICAgIGlmICghbmVlZGxlKSB7CisgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyZWRQcm9w
ZXJ0aWVzKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgcHJvcGVydGllc0xpc3QgPSB0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcy5sZW5n
dGggPyB0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcyA6IHRoaXMuX3N0eWxlLnByb3BlcnRp
ZXM7CisgICAgICAgIHZhciBtYXRjaGluZ1Byb3BlcnRpZXMgPSBbXTsKKworICAgICAgICBmb3Ig
KHZhciBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzTGlzdCkKKyAgICAgICAgICAgIG1hdGNoaW5nUHJv
cGVydGllcy5wdXNoKHByb3BlcnR5LnRleHQuaW5jbHVkZXMobmVlZGxlKSk7CisKKyAgICAgICAg
aWYgKCFtYXRjaGluZ1Byb3BlcnRpZXMuaW5jbHVkZXModHJ1ZSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGluZ1Byb3BlcnRp
ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNM
aXN0W2ldOworCisgICAgICAgICAgICBpZiAobWF0Y2hpbmdQcm9wZXJ0aWVzW2ldKQorICAgICAg
ICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJNYXRjaFNlY3Rpb25DbGFzc05hbWU7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvcGVydHkuX19maWx0ZXJSZXN1
bHRDbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5v
RmlsdGVyTWF0Y2hJblByb3BlcnR5Q2xhc3NOYW1lOworCisgICAgICAgICAgICB0aGlzLl91cGRh
dGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZChwcm9wZXJ0eSk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXNldEZpbHRlcmVkUHJvcGVydGll
cygpCisgICAgeworICAgICAgICB2YXIgcHJvcGVydGllc0xpc3QgPSB0aGlzLl9zdHlsZS52aXNp
YmxlUHJvcGVydGllcy5sZW5ndGggPyB0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcyA6IHRo
aXMuX3N0eWxlLnByb3BlcnRpZXM7CisKKyAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgcHJv
cGVydGllc0xpc3QpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5fX3Byb3BlcnR5VGV4dE1h
cmtlcikgeworICAgICAgICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1l
ID0gbnVsbDsKKworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRleHRNYXJrZXJGb3JQcm9w
ZXJ0eUlmTmVlZGVkKHByb3BlcnR5KQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgcmVtb3ZlTm9uTWF0Y2hpbmdQcm9wZXJ0aWVzKG5lZWRsZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX2ZpbHRlclJlc3VsdFByb3BlcnR5TmFtZXMgPSBudWxsOworCisgICAgICAgIGlmICgh
bmVlZGxlKSB7CisgICAgICAgICAgICB0aGlzLl9yZXNldENvbnRlbnQoKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBtYXRjaGluZ1Byb3BlcnR5
TmFtZXMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiB0aGlzLl9zdHlsZS5w
cm9wZXJ0aWVzKSB7CisgICAgICAgICAgICB2YXIgaW5kZXhlc09mTmVlZGxlID0gcHJvcGVydHku
dGV4dC5nZXRNYXRjaGluZ0luZGV4ZXMobmVlZGxlKTsKKworICAgICAgICAgICAgaWYgKGluZGV4
ZXNPZk5lZWRsZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBtYXRjaGluZ1Byb3BlcnR5TmFt
ZXMucHVzaChwcm9wZXJ0eS5uYW1lKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eS5fX2ZpbHRl
clJlc3VsdENsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFu
ZWwuRmlsdGVyTWF0Y2hTZWN0aW9uQ2xhc3NOYW1lOworICAgICAgICAgICAgICAgIHByb3BlcnR5
Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24gPSB7c3RhcnQ6IGluZGV4ZXNPZk5lZWRsZSwg
bGVuZ3RoOiBuZWVkbGUubGVuZ3RofTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHRoaXMuX2ZpbHRlclJlc3VsdFByb3BlcnR5TmFtZXMgPSBtYXRjaGluZ1Byb3BlcnR5TmFt
ZXMubGVuZ3RoID8gbWF0Y2hpbmdQcm9wZXJ0eU5hbWVzLmtleVNldCgpIDoge307CisKKyAgICAg
ICAgdGhpcy5fcmVzZXRDb250ZW50KCk7CisKKyAgICAgICAgcmV0dXJuIG1hdGNoaW5nUHJvcGVy
dHlOYW1lcy5sZW5ndGggPiAwOworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCiAgICAgZGlk
RGlzbWlzc1BvcG92ZXIocG9wb3ZlcikKQEAgLTUyNyw2ICs1OTksOSBAQCBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvcgogICAgICAgICBpZiAoIXByb3BlcnR5LmVuYWJsZWQpCiAgICAgICAgICAgICBj
bGFzc05hbWVzLnB1c2goImRpc2FibGVkIik7CiAKKyAgICAgICAgaWYgKHByb3BlcnR5Ll9fZmls
dGVyUmVzdWx0Q2xhc3NOYW1lICYmICFwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdE5lZWRsZVBvc2l0
aW9uKQorICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0
Q2xhc3NOYW1lKTsKKwogICAgICAgICB2YXIgY2xhc3NOYW1lc1N0cmluZyA9IGNsYXNzTmFtZXMu
am9pbigiICIpOwogCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSB0ZXh0IG1hcmtl
ciBhbmQgaXQncyBpbiB0aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB0cnkgdG8gYXZvaWQgcmVjcmVh
dGluZyBpdC4KQEAgLTU1OCw2ICs2MzMsMTUgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKIAog
ICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5tYXJrVGV4dChzdGFydCwgZW5kLCB7Y2xhc3NO
YW1lOiAiaW52YWxpZCJ9KTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChwcm9wZXJ0eS5fX2Zp
bHRlclJlc3VsdENsYXNzTmFtZSAmJiBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdE5lZWRsZVBvc2l0
aW9uKSB7CisgICAgICAgICAgICBmb3IgKHZhciBuZWVkbGVQb3NpdGlvbiBvZiBwcm9wZXJ0eS5f
X2ZpbHRlclJlc3VsdE5lZWRsZVBvc2l0aW9uLnN0YXJ0KSB7CisgICAgICAgICAgICAgICAgdmFy
IHN0YXJ0ID0ge2xpbmU6IGZyb20ubGluZSwgY2g6IG5lZWRsZVBvc2l0aW9ufTsKKyAgICAgICAg
ICAgICAgICB2YXIgZW5kID0ge2xpbmU6IHRvLmxpbmUsIGNoOiBzdGFydC5jaCArIHByb3BlcnR5
Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24ubGVuZ3RofTsKKworICAgICAgICAgICAgICAg
IHRoaXMuX2NvZGVNaXJyb3IubWFya1RleHQoc3RhcnQsIGVuZCwge2NsYXNzTmFtZTogcHJvcGVy
dHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWV9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQog
ICAgIH0KIAogICAgIF9jbGVhclRleHRNYXJrZXJzKG5vbmF0b21pYywgYWxsKQpAQCAtNTk3LDcg
KzY4MSwxNCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBj
bGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgIHsKICAgICAgICAgdmFyIHBy
b3BlcnRpZXMgPSBvbmx5VmlzaWJsZVByb3BlcnRpZXMgPyB0aGlzLl9zdHlsZS52aXNpYmxlUHJv
cGVydGllcyA6IHRoaXMuX3N0eWxlLnByb3BlcnRpZXM7CiAKLSAgICAgICAgaWYgKCFvbmx5Vmlz
aWJsZVByb3BlcnRpZXMpIHsKKyAgICAgICAgaWYgKHRoaXMuX2ZpbHRlclJlc3VsdFByb3BlcnR5
TmFtZXMpIHsKKyAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihmdW5j
dGlvbihwcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIHJldHVybiAoIXByb3BlcnR5LmltcGxp
Y2l0IHx8IHRoaXMuX3Nob3dzSW1wbGljaXRQcm9wZXJ0aWVzKSAmJiBwcm9wZXJ0eS5uYW1lIGlu
IHRoaXMuX2ZpbHRlclJlc3VsdFByb3BlcnR5TmFtZXM7CisgICAgICAgICAgICB9LCB0aGlzKTsK
KworICAgICAgICAgICAgaWYgKHRoaXMuX3NvcnRQcm9wZXJ0aWVzKQorICAgICAgICAgICAgICAg
IHByb3BlcnRpZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhLm5hbWUubG9jYWxlQ29t
cGFyZShiLm5hbWUpOyB9KTsKKyAgICAgICAgfSBlbHNlIGlmICghb25seVZpc2libGVQcm9wZXJ0
aWVzKSB7CiAgICAgICAgICAgICAvLyBGaWx0ZXIgYmFzZWQgb24gb3B0aW9ucyBvbmx5IHdoZW4g
YWxsIHByb3BlcnRpZXMgYXJlIHVzZWQuCiAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVy
dGllcy5maWx0ZXIoZnVuY3Rpb24ocHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
IXByb3BlcnR5LmltcGxpY2l0IHx8IHRoaXMuX3Nob3dzSW1wbGljaXRQcm9wZXJ0aWVzIHx8IHBy
b3BlcnR5LmNhbm9uaWNhbE5hbWUgaW4gdGhpcy5fYWx3YXlzU2hvd1Byb3BlcnR5TmFtZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcwppbmRleCBmY2Mz
YjhkMzdkMzY2MmMwZTUzYzY4ZmM1NTZlM2MzNjk4YWE3MTk3Li40YTFhOTY5ODhmNmM3NWE3Mjdk
MjAyY2FlYWFjMzIyNmE5ZWQ3M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5jc3MKQEAgLTQyLDYgKzQyLDEwIEBACiAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOwogfQogCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50
Lmhhcy1maWx0ZXItYmFyIHsKKyAgICBib3R0b206IDI4cHg7Cit9CisKIC5zaWRlYmFyID4gLnBh
bmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQgPiAucHNldWRvLWNsYXNzZXMgewogICAg
IHBhZGRpbmc6IDEwcHg7CiAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigxNzksIDE3
OSwgMTc5KTsKQEAgLTY4LDMgKzcyLDUxIEBACiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwog
ICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiB9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlID4gLmNvbnRlbnQuaGFzLWZpbHRlci1iYXIgKyAuZmlsdGVyLWJhciB7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogMDsKKyAgICB3aWR0aDogMTAwJTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdi
KDE3OSwgMTc5LCAxNzkpOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSA+IC5jb250ZW50Om5vdCguaGFzLWZpbHRlci1iYXIpICsgLmZpbHRlci1iYXIgeworICAgIGRp
c3BsYXk6IG5vbmU7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4g
LmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0ZXItbWF0Y2hpbmcgeworICAgIGRpc3Bs
YXk6IGlubGluZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzNSwgMjE1LCAzOCwgMC41
KTsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDIzNywgMjAyLCA3MSk7CisgICAg
b3BhY2l0eTogMTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAu
Y29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24gewor
ICAgIG1hcmdpbi1ib3R0b206IDA7Cit9CisKKworCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxz
LmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuc3R5bGUtZGVjbGFyYXRp
b24tc2VjdGlvbi5sYXN0LWluLWdyb3VwLmZpbHRlci1zZWN0aW9uLW5vbi1tYXRjaGluZyArIC5z
dHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uLmZpbHRlci1zZWN0aW9uLWhhcy1sYWJlbCB7CisgICAg
bWFyZ2luLXRvcDogMDsKKyAgICBib3JkZXItdG9wOiBub25lOworfQorCisuc2lkZWJhciA+IC5w
YW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuc3R5
bGUtZGVjbGFyYXRpb24tc2VjdGlvbjpub3QoLmZpbHRlci1zZWN0aW9uLWhhcy1sYWJlbCkgewor
ICAgIG1hcmdpbi10b3A6IDA7CisgICAgYm9yZGVyLXRvcDogbm9uZTsKKyAgICBib3JkZXItYm90
dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOworfQorCisuc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuc3R5bGUt
ZGVjbGFyYXRpb24tc2VjdGlvbiA+IC5oZWFkZXIgPiAuc2VsZWN0b3IgPiAuZmlsdGVyLW1hdGNo
aW5nIHsKKyAgICBjb2xvcjogYmxhY2s7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0ZXItc2VjdGlvbi1u
b24tbWF0Y2hpbmcgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5maWx0ZXIt
cHJvcGVydHktbm9uLW1hdGNoaW5nIHsKKyAgICBvcGFjaXR5OiAwLjU7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggMjA1NzBjNDdmODFmMTQw
N2I4ODJlYzljODA1MTkxMGJjZDY3YjBmOC4uYWMzNjRjNzg2NzMxOWE5MGQ5OGQ0MTlmOGFkNTM3
NGI1MWJhMTU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bC5qcwpAQCAtNzEsOCArNzEsMTEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHQKICAgICAgICAg
fQogCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7Ci0gICAgICAgIHRoaXMuX3J1
bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxz
UGFuZWw7Ci0gICAgICAgIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsOworICAgICAgICB0aGlzLl9ydWxlc1N0
eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
KHRoaXMpOworICAgICAgICB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2Vi
SW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKKworICAgICAgICB0aGlz
Ll9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5fZmlsdGVyRGlkQ2hhbmdl
LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5FdmVudC5SZWZyZXNoZWQsIHRo
aXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fcGFuZWxzID0gW3Ro
aXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwsIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbF07CiAKQEAgLTg0LDYgKzg3LDExIEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAKICAgICAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHRo
ZSBzZWxlY3RlZCBwYW5lbCB0byBiZSBzZXQgaW4gX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQuCiAg
ICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHRoaXMu
X2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOworCisgICAgICAgIHRoaXMuX2ZpbHRl
ckJhciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyOworICAgICAgICB0aGlzLl9maWx0ZXJC
YXIucGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbHRlciBTdHlsZXMiKTsK
KyAgICAgICAgdGhpcy5fZmlsdGVyQmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZp
bHRlckJhci5FdmVudC5GaWx0ZXJEaWRDaGFuZ2UsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhp
cyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9maWx0ZXJCYXIuZWxl
bWVudCk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0yMTEsNiArMjE5LDExIEBAIFdlYklu
c3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwgZXh0CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGhp
cy5jb250ZW50RWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLl9pbml0aWFsU2Nyb2xsT2Zmc2V0Owog
CisgICAgICAgICAgICB2YXIgaGFzRmlsdGVyID0gdHlwZW9mIHRoaXMuX3NlbGVjdGVkUGFuZWwu
ZmlsdGVyRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24iOworICAgICAgICAgICAgdGhpcy5jb250ZW50
RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJoYXMtZmlsdGVyLWJhciIsIGhhc0ZpbHRlcik7Cisg
ICAgICAgICAgICBpZiAodGhpcy5fZmlsdGVyQmFyKQorICAgICAgICAgICAgICAgIHRoaXMuY29u
dGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsLkZpbHRlckluUHJvZ3Jlc3NDbGFzc05hbWUsIGhhc0ZpbHRlciAmJiB0aGlz
Ll9maWx0ZXJCYXIuaGFzQWN0aXZlRmlsdGVycygpKTsKKwogICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRQYW5lbC5zaG93bigpOwogICAgICAgICB9CiAKQEAgLTIzNyw2ICsyNTAsMTkgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0
YWlsc1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgICAgIGNoZWNrYm94RWxlbWVudC5jaGVja2Vk
ID0gZW5hYmxlZFBzZXVkb0NsYXNzZXMuaW5jbHVkZXMocHNldWRvQ2xhc3MpOwogICAgICAgICB9
CiAgICAgfQorCisgICAgX2ZpbHRlckRpZENoYW5nZSgpCisgICAgeworICAgICAgICB0aGlzLmNv
bnRlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5GaWx0ZXJJblByb2dyZXNzQ2xhc3NOYW1lLCB0aGlzLl9maWx0ZXJCYXIu
aGFzQWN0aXZlRmlsdGVycygpKTsKKworICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsLmZpbHRl
ckRpZENoYW5nZSh0aGlzLl9maWx0ZXJCYXIpOworICAgIH0KIH07CiAKIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zm
c2V0ID0gMzg7IC8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBmb3JjZWQgcHNldWRvIGNsYXNzZXMg
Y29udGFpbmVyLiBVcGRhdGVkIGluIHdpZHRoRGlkQ2hhbmdlLgorV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJJblByb2dyZXNzQ2xhc3NOYW1lID0gImZpbHRl
ci1pbi1wcm9ncmVzcyI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LkZpbHRlck1hdGNoaW5nU2VjdGlvbkhhc0xhYmVsQ2xhc3NOYW1lID0gImZpbHRlci1zZWN0aW9u
LWhhcy1sYWJlbCI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLkZp
bHRlck1hdGNoU2VjdGlvbkNsYXNzTmFtZSA9ICJmaWx0ZXItbWF0Y2hpbmciOworV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZpbHRlck1hdGNoSW5TZWN0aW9uQ2xh
c3NOYW1lID0gImZpbHRlci1zZWN0aW9uLW5vbi1tYXRjaGluZyI7CitXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRmlsdGVyTWF0Y2hJblByb3BlcnR5Q2xhc3NOYW1l
ID0gImZpbHRlci1wcm9wZXJ0eS1ub24tbWF0Y2hpbmciOworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1Bh
bmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCBhYjZkZWI5ZmZiNjI0ZjFhMmUxN2Y2YzEzM2M0
ODI3NDFkZGI0MDg5Li4yOTI1NjQ1YmY5MzljNzJmMDQwNzc2YmEwZjAxNWFjMWUxY2I1YzI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTI3LDkgKzI3
LDcgQEAgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMKIHsKICAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0
ZSkKICAgICB7Ci0gICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLlN0eWxlQ2xhc3NOYW1lLCAiY29tcHV0ZWQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNvbXB1dGVkIikpOwotCi0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVs
bDsKKyAgICAgICAgc3VwZXIoZGVsZWdhdGUsIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0
YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1lLCAiY29tcHV0ZWQiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNvbXB1dGVkIikpOwogCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsU2V0
dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiY29tcHV0ZWQtc3R5bGUtc2hvdy1hbGwi
LCBmYWxzZSk7CiAKQEAgLTE1Myw2ICsxNTEsMTMgQEAgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnN0eWxlID0gdGhpcy5u
b2RlU3R5bGVzLmNvbXB1dGVkU3R5bGU7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hGbG93RGV0YWls
cyh0aGlzLm5vZGVTdHlsZXMubm9kZSk7CisKKyAgICAgICAgc3VwZXIucmVmcmVzaCgpOworICAg
IH0KKworICAgIGZpbHRlckRpZENoYW5nZShmaWx0ZXJCYXIpCisgICAgeworICAgICAgICB0aGlz
Ll9wcm9wZXJ0aWVzVGV4dEVkaXRvci5yZW1vdmVOb25NYXRjaGluZ1Byb3BlcnRpZXMoZmlsdGVy
QmFyLmZpbHRlcnMudGV4dCk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMK
aW5kZXggYTlmMDYwMjBhMTZhOTIxZjA2ZTg4NjIzYWM0ZTc5ODc4ZjZiNjk0NS4uNzY1NDhmNjVk
MjA0MTA4MTBmNGJiMWExN2NmYmVhZGI2NmFjNmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcwpAQCAtNDMsNiAr
NDMsOCBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyID0gY2xhc3MgRmlsdGVyQmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLmluY3JlbWVudGFs
ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJzZWFy
Y2giLCB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pbnB1dEZpZWxkKTsKKworICAgICAg
ICB0aGlzLl9sYXN0RmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlcnM7CiAgICAgfQogCiAgICAgLy8g
UHVibGljCkBAIC05OSw2ICsxMDEsMjEgQEAgV2ViSW5zcGVjdG9yLkZpbHRlckJhciA9IGNsYXNz
IEZpbHRlckJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuICEh
dGhpcy5faW5wdXRGaWVsZC52YWx1ZSB8fCAhIXRoaXMuX2ZpbHRlckZ1bmN0aW9uc01hcC5zaXpl
OwogICAgIH0KIAorICAgIGhhc0ZpbHRlckNoYW5nZWQoKQorICAgIHsKKyAgICAgICAgdmFyIGN1
cnJlbnRGdW5jdGlvbnMgPSB0aGlzLmZpbHRlcnMuZnVuY3Rpb25zOworCisgICAgICAgIGlmICh0
aGlzLl9sYXN0RmlsdGVyVmFsdWUudGV4dCAhPT0gdGhpcy5faW5wdXRGaWVsZC52YWx1ZSB8fCB0
aGlzLl9sYXN0RmlsdGVyVmFsdWUuZnVuY3Rpb25zLmxlbmd0aCAhPT0gY3VycmVudEZ1bmN0aW9u
cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGN1cnJlbnRGdW5jdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9sYXN0RmlsdGVyVmFsdWUuZnVuY3Rpb25zW2ldICE9PSBjdXJyZW50RnVuY3Rpb25z
W2ldKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9oYW5kbGVGaWx0
ZXJCYXJCdXR0b25DbGlja2VkKGV2ZW50KQpAQCAtMTE5LDcgKzEzNiwxMCBAQCBXZWJJbnNwZWN0
b3IuRmlsdGVyQmFyID0gY2xhc3MgRmlsdGVyQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogCiAgICAgX2hhbmRsZUZpbHRlckNoYW5nZWQoKQogICAgIHsKLSAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbHRlckJhci5FdmVudC5GaWx0ZXJE
aWRDaGFuZ2UpOworICAgICAgICBpZiAodGhpcy5oYXNGaWx0ZXJDaGFuZ2VkKCkpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2xhc3RGaWx0ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyczsKKyAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuRXZl
bnQuRmlsdGVyRGlkQ2hhbmdlKTsKKyAgICAgICAgfQogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHlsZURl
dGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCA4ODk1NDMxOGZiNDg2M2Y0M2Q4Yjkz
ZmE4YzE1YTJkNjg3ODQyNzdkLi40MjE1OWFjZDhjYzNiZjhjZjc3ODJjZWRmZWUzMDdkYWYwMWQy
OWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0yNSw5
ICsyNSw5IEBACiAKIFdlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFz
cyBNZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVEZXRh
aWxzUGFuZWwKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUp
CiAgICAgewotICAgICAgICBzdXBlcigibWV0cmljcyIsICJtZXRyaWNzIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJNZXRyaWNzIikpOworICAgICAgICBzdXBlcihkZWxlZ2F0ZSwgIm1ldHJpY3Mi
LCAibWV0cmljcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0cmljcyIpKTsKIAogICAgICAg
ICB0aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0
YWlsc1NlY3Rpb25Sb3c7CiAKQEAgLTQyLDUgKzQyLDcgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NT
dHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIE1ldHJpY3NTdHlsZURldGFpbHNQYW5lbCBleHRlbmRz
IFcKICAgICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2JveE1vZGVsRGlhZ3JhbVJv
dy5ub2RlU3R5bGVzID0gdGhpcy5ub2RlU3R5bGVzOworCisgICAgICAgIHN1cGVyLnJlZnJlc2go
KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmNzcwppbmRl
eCBlYmRlNjg1M2MyMzkyZTFlOGY5N2VmNDM2NGU3YWEwZmVhOWE4OWQ5Li5lOGZhYmQwZmRkMWQ4
YjQzMjdiY2E2ZWE4OTgyMTMzOWMwZjgwNjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmNzcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0
YWlsc1BhbmVsLmNzcwpAQCAtNTIsNyArNTIsMzMgQEAKICAgICBvcGFjaXR5OiAwLjU7CiB9CiAK
LS5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC5ydWxlcyAubmV3LXJ1bGUgKyAu
c3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiB7Cisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAubGFiZWwgeworICAgIHBhZGRp
bmctdG9wOiAxNXB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+
IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAubGFiZWwgfiAubGFiZWwgeworICAgIHBhZGRp
bmctdG9wOiAwOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5j
b250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAubGFiZWwuZmlsdGVyLW1hdGNoaW5nLWxhYmVsIHsK
KyAgICBwYWRkaW5nLWJvdHRvbTogNXB4OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBy
Z2IoMTc5LCAxNzksIDE3OSk7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0
eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5uZXctcnVsZSB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29u
dGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb246bm90KC5m
aWx0ZXItc2VjdGlvbi1ub24tbWF0Y2hpbmcpIH4gLmxhYmVsOm5vdCguZmlsdGVyLXNlY3Rpb24t
bm9uLW1hdGNoaW5nKSB7CisgICAgcGFkZGluZy10b3A6IDE1cHg7Cit9CisKKy5zaWRlYmFyID4g
LnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQ6bm90KC5maWx0ZXItaW4tcHJvZ3Jl
c3MpID4gLnJ1bGVzID4gLm5ldy1ydWxlICsgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24gewor
ICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMTc5LCAxNzksIDE3OSk7Cit9CisKKy5zaWRl
YmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQ6bm90KC5maWx0ZXItaW4t
cHJvZ3Jlc3MpID4gLnJ1bGVzID4gLm5ldy1ydWxlICsgLmxhYmVsIHsKKyAgICBwYWRkaW5nLXRv
cDogMTBweDsKICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOwog
fQogCkBAIC03NCwzICsxMDAsMjggQEAKIC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0
eWxlIC5ydWxlcyAubmV3LXJ1bGU6YWN0aXZlIHsKICAgICBvcGFjaXR5OiAwLjc7CiB9CisKKy5z
aWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQgPiAucnVsZXM6bm90
KC5maWx0ZXItbm9uLW1hdGNoaW5nKSA+IC5uby1maWx0ZXItcmVzdWx0cyB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29u
dGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgPiAucnVsZXMuZmlsdGVyLW5vbi1tYXRjaGluZyA+IC5u
by1maWx0ZXItcmVzdWx0cyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsK
KyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBkaXNwbGF5
OiBmbGV4OworICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOworICAgIGFsaWduLWl0ZW1zOiBj
ZW50ZXI7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRl
bnQuZmlsdGVyLWluLXByb2dyZXNzID4gLnJ1bGVzLmZpbHRlci1ub24tbWF0Y2hpbmcgPiAubm8t
ZmlsdGVyLXJlc3VsdHMgPiAubm8tZmlsdGVyLXJlc3VsdHMtbWVzc2FnZSB7CisgICAgZm9udC1z
aXplOiAxM3B4OworICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Jh
KDAsIDAsIDAsIDAuMTUpOworICAgIHRleHQtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMikgMCAx
cHggMDsKKyAgICBib3gtc2hhZG93OiBpbnNldCByZ2JhKDAsIDAsIDAsIDAuMikgMCAxcHggMCwg
cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpIDAgMXB4IDA7CisgICAgYm9yZGVyLXJhZGl1czogNnB4
OworICAgIHBhZGRpbmc6IDVweCAxNXB4IDZweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0
YWlsc1BhbmVsLmpzCmluZGV4IDdkMWJjN2MxYWRlNmQ1MjJhMDg2MGZjOTIwOWMxOWY3YzUzMTY0
MTMuLjc0ZTVkMmUzMWFlZmZkMGQ3M2Y4MzEzYzZjMjdhNWFkN2E0MTQxNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRh
aWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMjUsMTIgKzI1LDIxIEBACiAKIFdlYklu
c3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQ
YW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbAogewotICAgIGNvbnN0
cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSkKICAgICB7Ci0gICAgICAgIHN1cGVy
KCJydWxlcyIsICJydWxlcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVsZXMiKSk7CisgICAg
ICAgIHN1cGVyKGRlbGVnYXRlLCAicnVsZXMiLCAicnVsZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJ1bGVzIikpOwogCiAgICAgICAgIHRoaXMuX3NlY3Rpb25zID0gW107CisgICAgICAgIHRo
aXMuX3J1bGVNZWRpYUFuZEluaGVydGljYW5jZUxpc3QgPSBbXTsKICAgICAgICAgdGhpcy5fcHJv
cGVydHlUb1NlbGVjdEFuZEhpZ2hsaWdodCA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fZW1wdHlG
aWx0ZXJSZXN1bHRzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICB0aGlzLl9lbXB0eUZpbHRlclJlc3VsdHNFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5vLWZp
bHRlci1yZXN1bHRzIik7CisKKyAgICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRzTWVzc2Fn
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbXB0eUZp
bHRlclJlc3VsdHNNZXNzYWdlLmNsYXNzTGlzdC5hZGQoIm5vLWZpbHRlci1yZXN1bHRzLW1lc3Nh
Z2UiKTsKKyAgICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRzTWVzc2FnZS50ZXh0Q29udGVu
dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUmVzdWx0cyBGb3VuZCIpOworICAgICAgICB0
aGlzLl9lbXB0eUZpbHRlclJlc3VsdHNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2VtcHR5Rmls
dGVyUmVzdWx0c01lc3NhZ2UpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTcwLDExICsx
NzksMTQgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxl
c1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgfQogCiAgICAgICAgIHZh
ciBhZGRlZE5ld1J1bGVCdXR0b24gPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcnVsZU1lZGlhQW5k
SW5oZXJ0aWNhbmNlTGlzdCA9IFtdOwogCiAgICAgICAgIHZhciBvcmRlcmVkU3R5bGVzID0gdW5p
cXVlT3JkZXJlZFN0eWxlcyh0aGlzLm5vZGVTdHlsZXMub3JkZXJlZFN0eWxlcyk7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXJlZFN0eWxlcy5sZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgdmFyIHN0eWxlID0gb3JkZXJlZFN0eWxlc1tpXTsKIAorICAgICAgICAgICAgdmFyIGhh
c01lZGlhT3JJbmhlcml0ZWQgPSBbXTsKKwogICAgICAgICAgICAgaWYgKHN0eWxlLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuUnVsZSAmJiAhYWRkZWROZXdS
dWxlQnV0dG9uKQogICAgICAgICAgICAgICAgIGFkZE5ld1J1bGVCdXR0b24uY2FsbCh0aGlzKTsK
IApAQCAtMTg5LDYgKzIwMSw4IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
ID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgICAg
ICAgICAgaW5oZXJpdGVkTGFiZWwuYXBwZW5kQ2hpbGQocHJlZml4RWxlbWVudCk7CiAgICAgICAg
ICAgICAgICAgaW5oZXJpdGVkTGFiZWwuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmxpbmtpZnlO
b2RlUmVmZXJlbmNlKHN0eWxlLm5vZGUpKTsKICAgICAgICAgICAgICAgICBuZXdET01GcmFnbWVu
dC5hcHBlbmRDaGlsZChpbmhlcml0ZWRMYWJlbCk7CisKKyAgICAgICAgICAgICAgICBoYXNNZWRp
YU9ySW5oZXJpdGVkLnB1c2goaW5oZXJpdGVkTGFiZWwpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBPbmx5IGluY2x1ZGUgdGhlIG1lZGlhIGxpc3QgaWYgaXQgaXMgZGlmZmVyZW50
IGZyb20gdGhlIHByZXZpb3VzIG1lZGlhIGxpc3Qgc2hvd24uCkBAIC0yMTgsOSArMjMyLDE2IEBA
IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURl
dGFpbHNQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgICAgICBuZXdET01GcmFnbWVudC5hcHBlbmRDaGlsZChtZWRpYUxhYmVsKTsKKwor
ICAgICAgICAgICAgICAgICAgICBoYXNNZWRpYU9ySW5oZXJpdGVkLnB1c2gobWVkaWFMYWJlbCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAoIWhh
c01lZGlhT3JJbmhlcml0ZWQubGVuZ3RoICYmIHByZXZpb3VzU2VjdGlvbiAmJiAhcHJldmlvdXNT
ZWN0aW9uLmxhc3RJbkdyb3VwKQorICAgICAgICAgICAgICAgIGhhc01lZGlhT3JJbmhlcml0ZWQg
PSB0aGlzLl9ydWxlTWVkaWFBbmRJbmhlcnRpY2FuY2VMaXN0Lmxhc3RWYWx1ZTsKKworICAgICAg
ICAgICAgdGhpcy5fcnVsZU1lZGlhQW5kSW5oZXJ0aWNhbmNlTGlzdC5wdXNoKGhhc01lZGlhT3JJ
bmhlcml0ZWQpOworCiAgICAgICAgICAgICBhcHBlbmRTdHlsZVNlY3Rpb24uY2FsbCh0aGlzLCBz
dHlsZSk7CiAgICAgICAgIH0KIApAQCAtMjMyLDYgKzI1Myw3IEBAIFdlYkluc3BlY3Rvci5SdWxl
c1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRz
IFdlYkluCiAKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChuZXdET01GcmFnbWVudCk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9lbXB0eUZpbHRlclJlc3VsdHNFbGVtZW50KTsKIAog
ICAgICAgICB0aGlzLl9zZWN0aW9ucyA9IG5ld1NlY3Rpb25zOwogCkBAIC0yNDAsNiArMjYyLDgg
QEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxl
RGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4KIAogICAgICAgICBpZiAocHJldmlvdXNGb2N1c2Vk
U2VjdGlvbikKICAgICAgICAgICAgIHByZXZpb3VzRm9jdXNlZFNlY3Rpb24uZm9jdXMoKTsKKwor
ICAgICAgICBzdXBlci5yZWZyZXNoKCk7CiAgICAgfQogCiAgICAgc2Nyb2xsVG9TZWN0aW9uQW5k
SGlnaGxpZ2h0UHJvcGVydHkocHJvcGVydHkpCkBAIC0yNjUsNiArMjg5LDM1IEBAIFdlYkluc3Bl
Y3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5l
bCBleHRlbmRzIFdlYkluCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBmaWx0ZXJEaWRDaGFuZ2Uo
ZmlsdGVyQmFyKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgbGFiZWxzIG9mIHRoaXMuX3J1bGVN
ZWRpYUFuZEluaGVydGljYW5jZUxpc3QpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGFiZWxzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgbGFiZWxzW2ldLmNsYXNz
TGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0Zp
bHRlck1hdGNoSW5TZWN0aW9uQ2xhc3NOYW1lLCBmaWx0ZXJCYXIuaGFzQWN0aXZlRmlsdGVycygp
KTsKKworICAgICAgICAgICAgICAgIGlmIChpID09PSBsYWJlbHMubGVuZ3RoIC0gMSkKKyAgICAg
ICAgICAgICAgICAgICAgbGFiZWxzW2ldLmNsYXNzTGlzdC50b2dnbGUoImZpbHRlci1tYXRjaGlu
Zy1sYWJlbCIsIGZpbHRlckJhci5oYXNBY3RpdmVGaWx0ZXJzKCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIG1hdGNoRm91bmQgPSAhZmlsdGVyQmFyLmhhc0FjdGl2
ZUZpbHRlcnMoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tp
XTsKKworICAgICAgICAgICAgaWYgKHNlY3Rpb24uZmluZE1hdGNoaW5nUHJvcGVydGllc0FuZFNl
bGVjdG9ycyhmaWx0ZXJCYXIuZmlsdGVycy50ZXh0KSAmJiBmaWx0ZXJCYXIuaGFzQWN0aXZlRmls
dGVycygpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3J1bGVNZWRpYUFuZEluaGVydGlj
YW5jZUxpc3RbaV0ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGxhYmVs
IG9mIHRoaXMuX3J1bGVNZWRpYUFuZEluaGVydGljYW5jZUxpc3RbaV0pCisgICAgICAgICAgICAg
ICAgICAgICAgICBsYWJlbC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwuTm9GaWx0ZXJNYXRjaEluU2VjdGlvbkNsYXNzTmFtZSk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmls
dGVyTWF0Y2hpbmdTZWN0aW9uSGFzTGFiZWxDbGFzc05hbWUpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImZpbHRlci1ub24t
bWF0Y2hpbmciLCAhbWF0Y2hGb3VuZCk7CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAg
ICBzaG93bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IGNlZTRkYWRhMWFlNGYz
MTU5NmU0ZTZmMTNmMGRkYWZiNWM4OWZlY2UuLmM4ZDFhZWE4NmVhZTk1M2YyMDU0NzYyODNiMWEx
OGRmMDdiYmYzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0yNSwxMCArMjUs
MTIgQEAKIAogV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3R5bGVEZXRh
aWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgY29uc3RydWN0b3Io
Y2xhc3NOYW1lLCBpZGVudGlmaWVyLCBsYWJlbCkKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSwg
Y2xhc3NOYW1lLCBpZGVudGlmaWVyLCBsYWJlbCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAK
KyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworCiAgICAgICAgIHRo
aXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7CiAKQEAgLTEwOSw2ICsxMTEsNyBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTdHlsZURldGFpbHNQYW5lbCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYgogICAgIHJlZnJlc2goc2lnbmlmaWNhbnRDaGFuZ2UpCiAg
ICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwu
RXZlbnQuUmVmcmVzaGVkKTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKQEAgLTE2MCwzICsx
NjMsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTdHlsZURldGFp
bHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYgogICAgICAgICAgICAgdGhpcy5fcmVmcmVz
aE5vZGVTdHlsZXMoKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFu
ZWwuRXZlbnQgPSB7CisgICAgUmVmcmVzaGVkOiAic3R5bGUtZGV0YWlscy1wYW5lbC1yZWZyZXNo
ZWQiCit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254892</attachid>
            <date>2015-06-15 14:08:00 -0700</date>
            <delta_ts>2015-06-18 14:32:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145536-20150615140726.patch</filename>
            <type>text/plain</type>
            <size>34270</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDNjNzk0ZDM2MjZmNDQ2YWQ0NTY0ZWIxZDdjM2Iz
MWViNzQ5Y2YyM2IuLmFlMzczNmYwYTE0Mzg1MjYzNTBlMjM4NmM3MGFjYmY4ZjlmZTM0MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE1LTA2LTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgYSBmaWx0ZXIgZm9yIENTUyBwcm9wZXJ0aWVzIGluIHRoZSBTdHlsZXMgc2lkZWJhcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NTM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0Jhc2UvVXRpbGl0aWVzLmpzOiBBZGRlZCBmdW5jdGlvbiB0byBTdHJpbmdzIHRoYXQgcmV0
dXJucyBhbiBhcnJheSBvZiBhbGwgbWF0Y2hpbmcgaW5kZXhlcyBvZiBhIGdpdmVuIHN0cmluZy4K
KyAgICAgICAgKC52YWx1ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHls
ZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24ucHJvdG90eXBlLnJlZnJlc2guYXBwZW5kU2VsZWN0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZS5maW5kTWF0
Y2hpbmdQcm9wZXJ0aWVzQW5kU2VsZWN0b3JzKTogTG9vcHMgdGhyb3VnaCB0aGUgcHJvcGVydHkg
bGlzdCBhbmQgc2VsZWN0b3JzIG9mIGVhY2ggc2VjdGlvbiB0byBmaW5kIG1hdGNoZXMgdG8gdGhl
IGZpbHRlcmVkIHRleHQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuZmluZE1hdGNoaW5nUHJvcGVydGllcyk6IFNl
YXJjaGVzIHRocm91Z2ggdGhlIHByb3BlcnRpZXMgbGlzdCB0byBmaW5kIGFuZCBoaWdobGlnaHQg
YWxsIG1hdGNoaW5nIHByb3BlcnRpZXMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZU5vbk1hdGNoaW5nUHJvcGVydGll
cyk6IFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgdGhhdCBkbyBub3QgbWF0Y2ggYW5kIGhpZ2hsaWdo
dHMgdGhlIHNwZWNpZmljIG1hdGNoZWQgdGV4dCBpbiBtYXRjaGluZyBwcm9wZXJ0aWVzLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlw
ZS5yZXNldEZpbHRlcmVkUHJvcGVydGllcyk6IFJlc3RvcmVzIGFsbCBwcm9wZXJ0aWVzIHRvIGZ1
bGwgdmlzaWJpbGl0eSBhbmQgcmVtb3ZlcyBhbnkgaGlnaGxpZ2h0aW5nLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRl
VGV4dE1hcmtlckZvclByb3BlcnR5SWZOZWVkZWQpOiBDbGFzc2VzIGFyZSBhZGRlZCB0byBzZWxl
Y3Rpb25zIG9mIHRoZSB0ZXh0IGVkaXRvciBvZiB0aGF0IHBhcnRpdWxhciBzZWxlY3Rpb24gY29u
dGFpbnMgdGV4dCB3aGljaCBtYXRjaGVzIHRoZSBmaWx0ZXIgKHNlZSBDU1NTdHlsZURldGFpbHNT
aWRlYmFyUGFuZWwuY3NzIGZvciBkaWZmZXJlbnQgY2xhc3NlcykuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9pdGVyYXRlT3Zl
clByb3BlcnRpZXMpOiBJZiBhIGZpbHRlciBpcyBhY3RpdmUsIGZpbmQgcHJvcGVydGllcyBtYXRj
aGluZyB0aGUgZmlsdGVyIGluc3RlYWQgb2YgYWxsIHByb3BlcnRpZXMuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzOgorICAgICAg
ICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5oYXMtZmls
dGVyLWJhciArIC5maWx0ZXItYmFyKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlID4gLmNvbnRlbnQ6bm90KC5oYXMtZmlsdGVyLWJhcikgKyAuZmlsdGVyLWJh
cik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFy
UGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsKTogQWRkZWQgYSBmaWx0ZXIgYmFyIHRvIHRoZSBDU1Mgc2lkZWJhci4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9zd2l0Y2hQ
YW5lbHMpOiBTd2l0Y2hpbmcgcGFuZWxzIHByZXNlcnZlcyBhbmQgYXBwbGllcyBmaWx0ZXIgYmFy
IHRleHQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5fZmlsdGVyRGlkQ2hhbmdlKTogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGZp
bHRlciBiYXIgdGV4dCBjaGFuZ2VzIHRoYXQgY2FsbHMgdGhlIGN1cnJlbnQgcGFuZWwncyBmaWx0
ZXJEaWRDaGFuZ2UgZnVuY3Rpb24gaWYgaXQgZXhpc3RzLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvRmlsdGVyQmFyLmpzOiBBZGRlZCBmdW5jdGlvbiBhbmQgdmFyaWFibGUgdG8gY2hl
Y2sgaWYgdGhlIHRleHQgaW4gdGhlIGZpbHRlciBiYXIgaGFkIGNoYW5nZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNo
KTogTm93IGNhbGxzIHN1cGVyY2xhc3MgcmVmcmVzaC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwpOiBBZGRlZCBkZWxlZ2F0ZSB2YXJpYWJsZSB0byBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxz
UGFuZWwuY3NzOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUg
PiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLmxhYmVsKToKKyAgICAgICAgKC5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNz
IC5sYWJlbCB+IC5sYWJlbCk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAubGFiZWwuZmlsdGVyLW1hdGNo
aW5nLWxhYmVsKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxl
ID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5uZXctcnVsZSk6CisgICAgICAgICguc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9n
cmVzcyAuc3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbjpub3QoLmZpbHRlci1zZWN0aW9uLW5vbi1t
YXRjaGluZykgfiAubGFiZWw6bm90KC5maWx0ZXItc2VjdGlvbi1ub24tbWF0Y2hpbmcpKToKKyAg
ICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQ6bm90
KC5maWx0ZXItaW4tcHJvZ3Jlc3MpID4gLnJ1bGVzID4gLm5ldy1ydWxlICsgLnN0eWxlLWRlY2xh
cmF0aW9uLXNlY3Rpb24pOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mt
c3R5bGUgPiAuY29udGVudCA+IC5ydWxlczpub3QoLmZpbHRlci1ub24tbWF0Y2hpbmcpID4gLm5v
LWZpbHRlci1yZXN1bHRzKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3Nz
LXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzID4gLnJ1bGVzLmZpbHRlci1ub24t
bWF0Y2hpbmcgPiAubm8tZmlsdGVyLXJlc3VsdHMpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFu
ZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgPiAucnVs
ZXMuZmlsdGVyLW5vbi1tYXRjaGluZyA+IC5uby1maWx0ZXItcmVzdWx0cyA+IC5uby1maWx0ZXIt
cmVzdWx0cy1tZXNzYWdlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5
bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFp
bHNQYW5lbCk6IEFkZGVkIGRlbGVnYXRlIHZhcmlhYmxlIHRvIGNvbnN0cnVjdG9yLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnJlZnJlc2gp
OiBOb3cgY2FsbHMgc3VwZXJjbGFzcyByZWZyZXNoLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1
bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmZpbHRlckRpZENoYW5nZSk6IEZ1bmN0aW9u
IHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBjb21wdXRlZCBzdHlsZXMgbGlzdCBhbmQgaGlnaGxpZ2h0
IGFsbCBtYXRjaGVkIHByb3BlcnRpZXMgYW5kIHNlbGVjdG9ycyBvZiB0aGUgZmlsdGVyIGJhciB0
ZXh0LCB0dXJuaW5nIGFsbCBub24gbWF0Y2hpbmcgcHJvcGVydGllcyBzbGlnaHRseSBvcGFxdWUg
KHVubGVzcyBhIHNlbGVjdG9yIGZvciB0aGF0IHByb3BlcnR5IGlzIGEgbWF0Y2gpLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsKTogQWRkZWQgZGVsZWdhdGUgdmFyaWFi
bGUgdG8gY29uc3RydWN0b3IuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLnJlZnJlc2gpOiBBZGRlZCBldmVudCBkaXNwYXRjaCBmb3IgcGFuZWwgcmVm
cmVzaC4KKwogMjAxNS0wNi0xNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcHJvdmUgc29tZSBjYXNlcyBvZiAiT2JqZWN0
PyIgVHlwZSBBbm5vdGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXgg
YmE5ZjE2MDQ4MzRmNDhhZDliODhlNTkzOTAwYzVjMWQ0MDM4NDk4Yy4uMGQ3ZTg4NjY4ZmExZmE2
MzA5MTA2MjIwN2FjOGFhNDZiMDc2NmU2MSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAx
MjUKemNtWnA8JUtZUlNeTT1Md29XVHF3NDMhS3k0NV5kdEA/PENYVXBKZXFwVHtAKHs0QlB+Y2t7
KElANlkkc2NNZjdtCnpXaGlEUzF1N341KGgzWjI0RWFEXzl6ek8pNTxASklad3RncTQxUGRTMXFL
e3lDeDF9Vm8kTm9JWjhQdXVhJkd7eQpDMVM1T14KCmRlbHRhIDE5CmJjbWFFSWprKUQyXk09THdu
fFRZZV5mJGtxVSt4VjZXNEg7WAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXggYzhhY2RhODI3NDgwNmM1NjNkYWIx
NmY1NTNjYmE0ODdhODE2YjZmMi4uYzgxZTM4MzAyMGU3YjM1ZTc2MDYzZDQ3MGRhNTRlY2Y2Y2Rl
NTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9VdGlsaXRpZXMuanMKQEAgLTc0OCw2ICs3NDgsMjIgQEAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFN0cmluZy5wcm90b3R5cGUsICJyZW1vdmVXb3JkQnJlYWtDaGFyYWN0ZXJzIiwKICAgICB9
CiB9KTsKIAorT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJnZXRNYXRj
aGluZ0luZGV4ZXMiLAoreworICAgIHZhbHVlOiBmdW5jdGlvbihuZWVkbGUpCisgICAgeworICAg
ICAgICB2YXIgaW5kZXhlc09mTmVlZGxlID0gW107CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMu
aW5kZXhPZihuZWVkbGUpOworCisgICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7CisgICAgICAg
ICAgICBpbmRleGVzT2ZOZWVkbGUucHVzaChpbmRleCk7CisgICAgICAgICAgICBpbmRleCA9IHRo
aXMuaW5kZXhPZihuZWVkbGUsIGluZGV4ICsgMSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gaW5kZXhlc09mTmVlZGxlOworICAgIH0KK30pOworCiBPYmplY3QuZGVmaW5lUHJvcGVydHko
TnVtYmVyLCAiY29uc3RyYWluIiwKIHsKICAgICB2YWx1ZTogZnVuY3Rpb24obnVtLCBtaW4sIG1h
eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKaW5kZXggMTE3
NGU1YTA0Njc5N2I1ZmZhYzYzYThmNjQ4OTMwODZhYzRhMDA4Ny4uOTMwMDg2NmE5YTU3MGQwMDJi
NWNlM2JhYTczZjkwNzE4ZGU2ODIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uanMKQEAgLTMyLDYgKzMyLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVj
bGFyYXRpb25TZWN0aW9uID0gZnVuY3Rpb24oZGVsZWdhdGUsIHN0eWxlKQogCiAgICAgY29uc29s
ZS5hc3NlcnQoc3R5bGUpOwogICAgIHRoaXMuX3N0eWxlID0gc3R5bGUgfHwgbnVsbDsKKyAgICB0
aGlzLl9zZWxlY3RvckVsZW1lbnRzID0gW107CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAi
c3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiI7CkBAIC0xNjIsNiArMTYzLDcgQEAgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlz
Ll9vcmlnaW5FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMuX3NlbGVjdG9y
RWxlbWVudHMgPSBbXTsKIAogICAgICAgICB0aGlzLl9vcmlnaW5FbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgXHUyMDE0ICIpKTsKIApAQCAtMTk0LDYgKzE5Niw3
IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5hcHBl
bmRDaGlsZChzZWxlY3RvckVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3JFbGVt
ZW50cy5wdXNoKHNlbGVjdG9yRWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlv
biBhcHBlbmRTZWxlY3RvclRleHRLbm93blRvTWF0Y2goc2VsZWN0b3JUZXh0KQpAQCAtMjcyLDYg
KzI3NSwzNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAorICAgIGZpbmRNYXRjaGlu
Z1Byb3BlcnRpZXNBbmRTZWxlY3RvcnM6IGZ1bmN0aW9uKG5lZWRsZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsLk5vRmlsdGVyTWF0Y2hJblNlY3Rpb25DbGFzc05hbWUsIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmlsdGVyTWF0Y2hpbmdTZWN0aW9uSGFz
TGFiZWxDbGFzc05hbWUpOworCisgICAgICAgIHZhciBoYXNNYXRjaGluZ1NlbGVjdG9yID0gZmFs
c2U7CisKKyAgICAgICAgZm9yICh2YXIgc2VsZWN0b3JFbGVtZW50IG9mIHRoaXMuX3NlbGVjdG9y
RWxlbWVudHMpIHsKKyAgICAgICAgICAgIHNlbGVjdG9yRWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmlsdGVyTWF0Y2hTZWN0
aW9uQ2xhc3NOYW1lKTsKKworICAgICAgICAgICAgaWYgKG5lZWRsZSAmJiBzZWxlY3RvckVsZW1l
bnQudGV4dENvbnRlbnQuaW5jbHVkZXMobmVlZGxlKSkgeworICAgICAgICAgICAgICAgIHNlbGVj
dG9yRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuRmlsdGVyTWF0Y2hTZWN0aW9uQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgICAgICBo
YXNNYXRjaGluZ1NlbGVjdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghbmVlZGxlKSB7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVk
aXRvci5yZXNldEZpbHRlcmVkUHJvcGVydGllcygpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIGhhc01hdGNoaW5nUHJvcGVydHkgPSB0aGlzLl9w
cm9wZXJ0aWVzVGV4dEVkaXRvci5maW5kTWF0Y2hpbmdQcm9wZXJ0aWVzKG5lZWRsZSk7CisKKyAg
ICAgICAgaWYgKCFoYXNNYXRjaGluZ1Byb3BlcnR5ICYmICFoYXNNYXRjaGluZ1NlbGVjdG9yKSB7
CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZpbHRlck1hdGNoSW5TZWN0aW9uQ2xhc3NOYW1l
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0sCisKICAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCA1ZjY0NDUx
OTE2MWQ5YjczNGNlYmEzZjJlOTU5Yzg4MDhjMTg3MWUwLi5lZDJlODE2ZDllOWVmNzIyZTQyMzk5
Y2JmZDhkZDljMjZjM2NmMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvci5qcwpAQCAtMzYsNiArMzYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
cgogCiAgICAgICAgIHRoaXMuX3Nob3dzSW1wbGljaXRQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAg
ICAgdGhpcy5fYWx3YXlzU2hvd1Byb3BlcnR5TmFtZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fZmls
dGVyUmVzdWx0UHJvcGVydHlOYW1lcyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NvcnRQcm9wZXJ0
aWVzID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5fcHJlZml4V2hpdGVzcGFjZSA9ICIiOwpAQCAt
MjI5LDYgKzIzMCw3OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICB0aGlzLl9j
b2RlTWlycm9yLnNldEN1cnNvcih7bGluZTogMCwgY2g6IDB9KTsKICAgICB9CiAKKyAgICBmaW5k
TWF0Y2hpbmdQcm9wZXJ0aWVzKG5lZWRsZSkKKyAgICB7CisgICAgICAgIGlmICghbmVlZGxlKSB7
CisgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyZWRQcm9wZXJ0aWVzKCk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcHJvcGVydGllc0xpc3Qg
PSB0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcy5sZW5ndGggPyB0aGlzLl9zdHlsZS52aXNp
YmxlUHJvcGVydGllcyA6IHRoaXMuX3N0eWxlLnByb3BlcnRpZXM7CisgICAgICAgIHZhciBtYXRj
aGluZ1Byb3BlcnRpZXMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiBwcm9w
ZXJ0aWVzTGlzdCkKKyAgICAgICAgICAgIG1hdGNoaW5nUHJvcGVydGllcy5wdXNoKHByb3BlcnR5
LnRleHQuaW5jbHVkZXMobmVlZGxlKSk7CisKKyAgICAgICAgaWYgKCFtYXRjaGluZ1Byb3BlcnRp
ZXMuaW5jbHVkZXModHJ1ZSkpIHsKKyAgICAgICAgICAgIHRoaXMucmVzZXRGaWx0ZXJlZFByb3Bl
cnRpZXMoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hpbmdQcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzTGlzdFtpXTsKKworICAgICAgICAg
ICAgaWYgKG1hdGNoaW5nUHJvcGVydGllc1tpXSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eS5f
X2ZpbHRlclJlc3VsdENsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuRmlsdGVyTWF0Y2hTZWN0aW9uQ2xhc3NOYW1lOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZpbHRlck1hdGNoSW5Qcm9wZXJ0
eUNsYXNzTmFtZTsKKworICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGV4dE1hcmtlckZvclByb3Bl
cnR5SWZOZWVkZWQocHJvcGVydHkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcmVzZXRGaWx0ZXJlZFByb3BlcnRpZXMoKQorICAgIHsKKyAgICAgICAg
dmFyIHByb3BlcnRpZXNMaXN0ID0gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMubGVuZ3Ro
ID8gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMgOiB0aGlzLl9zdHlsZS5wcm9wZXJ0aWVz
OworCisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHByb3BlcnRpZXNMaXN0KSB7CisgICAg
ICAgICAgICBpZiAocHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUpIHsKKyAgICAgICAg
ICAgICAgICBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdENsYXNzTmFtZSA9IG51bGw7CisgICAgICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlVGV4dE1hcmtlckZvclByb3BlcnR5SWZOZWVkZWQocHJvcGVy
dHkpCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZW1vdmVOb25NYXRj
aGluZ1Byb3BlcnRpZXMobmVlZGxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZmlsdGVyUmVzdWx0
UHJvcGVydHlOYW1lcyA9IG51bGw7CisKKyAgICAgICAgaWYgKCFuZWVkbGUpIHsKKyAgICAgICAg
ICAgIHRoaXMuX3Jlc2V0Q29udGVudCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIG1hdGNoaW5nUHJvcGVydHlOYW1lcyA9IFtdOworCisgICAg
ICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHRoaXMuX3N0eWxlLnByb3BlcnRpZXMpIHsKKyAgICAg
ICAgICAgIHZhciBpbmRleGVzT2ZOZWVkbGUgPSBwcm9wZXJ0eS50ZXh0LmdldE1hdGNoaW5nSW5k
ZXhlcyhuZWVkbGUpOworCisgICAgICAgICAgICBpZiAoaW5kZXhlc09mTmVlZGxlLmxlbmd0aCkg
eworICAgICAgICAgICAgICAgIG1hdGNoaW5nUHJvcGVydHlOYW1lcy5wdXNoKHByb3BlcnR5Lm5h
bWUpOworICAgICAgICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJNYXRjaFNlY3Rp
b25DbGFzc05hbWU7CisgICAgICAgICAgICAgICAgcHJvcGVydHkuX19maWx0ZXJSZXN1bHROZWVk
bGVQb3NpdGlvbiA9IHtzdGFydDogaW5kZXhlc09mTmVlZGxlLCBsZW5ndGg6IG5lZWRsZS5sZW5n
dGh9OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZmlsdGVyUmVz
dWx0UHJvcGVydHlOYW1lcyA9IG1hdGNoaW5nUHJvcGVydHlOYW1lcy5sZW5ndGggPyBtYXRjaGlu
Z1Byb3BlcnR5TmFtZXMua2V5U2V0KCkgOiB7fTsKKworICAgICAgICB0aGlzLl9yZXNldENvbnRl
bnQoKTsKKworICAgICAgICByZXR1cm4gbWF0Y2hpbmdQcm9wZXJ0eU5hbWVzLmxlbmd0aCA+IDA7
CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBkaWREaXNtaXNzUG9wb3Zlcihwb3Bv
dmVyKQpAQCAtNTI3LDYgKzYwMCw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAgICAgICAg
IGlmICghcHJvcGVydHkuZW5hYmxlZCkKICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiZGlz
YWJsZWQiKTsKIAorICAgICAgICBpZiAocHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUg
JiYgIXByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24pCisgICAgICAgICAgICBj
bGFzc05hbWVzLnB1c2gocHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUpOworCiAgICAg
ICAgIHZhciBjbGFzc05hbWVzU3RyaW5nID0gY2xhc3NOYW1lcy5qb2luKCIgIik7CiAKICAgICAg
ICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHRleHQgbWFya2VyIGFuZCBpdCdzIGluIHRoZSBz
YW1lIGRvY3VtZW50LCB0aGVuIHRyeSB0byBhdm9pZCByZWNyZWF0aW5nIGl0LgpAQCAtNTU4LDYg
KzYzNCwxNSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBj
bGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgICAgICB0aGlzLl9j
b2RlTWlycm9yLm1hcmtUZXh0KHN0YXJ0LCBlbmQsIHtjbGFzc05hbWU6ICJpbnZhbGlkIn0pOwog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1l
ICYmIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24pIHsKKyAgICAgICAgICAg
IGZvciAodmFyIG5lZWRsZVBvc2l0aW9uIG9mIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxl
UG9zaXRpb24uc3RhcnQpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSB7bGluZTogZnJv
bS5saW5lLCBjaDogbmVlZGxlUG9zaXRpb259OworICAgICAgICAgICAgICAgIHZhciBlbmQgPSB7
bGluZTogdG8ubGluZSwgY2g6IHN0YXJ0LmNoICsgcHJvcGVydHkuX19maWx0ZXJSZXN1bHROZWVk
bGVQb3NpdGlvbi5sZW5ndGh9OworCisgICAgICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5t
YXJrVGV4dChzdGFydCwgZW5kLCB7Y2xhc3NOYW1lOiBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdENs
YXNzTmFtZX0pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgX2NsZWFy
VGV4dE1hcmtlcnMobm9uYXRvbWljLCBhbGwpCkBAIC01OTcsNyArNjgyLDE0IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yCiAgICAgewogICAgICAgICB2YXIgcHJvcGVydGllcyA9IG9ubHlWaXNp
YmxlUHJvcGVydGllcyA/IHRoaXMuX3N0eWxlLnZpc2libGVQcm9wZXJ0aWVzIDogdGhpcy5fc3R5
bGUucHJvcGVydGllczsKIAotICAgICAgICBpZiAoIW9ubHlWaXNpYmxlUHJvcGVydGllcykgewor
ICAgICAgICBpZiAodGhpcy5fZmlsdGVyUmVzdWx0UHJvcGVydHlOYW1lcykgeworICAgICAgICAg
ICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uKHByb3BlcnR5KSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICghcHJvcGVydHkuaW1wbGljaXQgfHwgdGhpcy5fc2hvd3NJ
bXBsaWNpdFByb3BlcnRpZXMpICYmIHByb3BlcnR5Lm5hbWUgaW4gdGhpcy5fZmlsdGVyUmVzdWx0
UHJvcGVydHlOYW1lczsKKyAgICAgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgICAgICBpZiAo
dGhpcy5fc29ydFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydGllcy5zb3J0KGZ1
bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7IH0pOwor
ICAgICAgICB9IGVsc2UgaWYgKCFvbmx5VmlzaWJsZVByb3BlcnRpZXMpIHsKICAgICAgICAgICAg
IC8vIEZpbHRlciBiYXNlZCBvbiBvcHRpb25zIG9ubHkgd2hlbiBhbGwgcHJvcGVydGllcyBhcmUg
dXNlZC4KICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlv
bihwcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIHJldHVybiAhcHJvcGVydHkuaW1wbGljaXQg
fHwgdGhpcy5fc2hvd3NJbXBsaWNpdFByb3BlcnRpZXMgfHwgcHJvcGVydHkuY2Fub25pY2FsTmFt
ZSBpbiB0aGlzLl9hbHdheXNTaG93UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzCmluZGV4IGZjYzNiOGQzN2QzNjYyYzBlNTNjNjhm
YzU1NmUzYzM2OThhYTcxOTcuLmFlMzc5OWYyNjY0MjAzOTUyMTg0NjUwYWU4MmU5NzM2NDE1YTI1
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcwpA
QCAtNDIsNiArNDIsMTAgQEAKICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiB9CiAKKy5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuaGFzLWZpbHRlci1iYXIgewor
ICAgIGJvdHRvbTogMjhweDsKK30KKwogLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgPiAuY29udGVudCA+IC5wc2V1ZG8tY2xhc3NlcyB7CiAgICAgcGFkZGluZzogMTBweDsKICAg
ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOwpAQCAtNjgsMyAr
NzIsNDkgQEAKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgd2hpdGUtc3BhY2U6IG5v
d3JhcDsKIH0KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVu
dC5oYXMtZmlsdGVyLWJhciArIC5maWx0ZXItYmFyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgYm90dG9tOiAwOworICAgIHdpZHRoOiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6
IHdoaXRlOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMTc5LCAxNzksIDE3OSk7Cit9
CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQ6bm90KC5o
YXMtZmlsdGVyLWJhcikgKyAuZmlsdGVyLWJhciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
LnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4t
cHJvZ3Jlc3MgLmZpbHRlci1tYXRjaGluZyB7CisgICAgZGlzcGxheTogaW5saW5lOworICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMjM1LCAyMTUsIDM4LCAwLjUpOworICAgIGJvcmRlci1ib3R0
b206IDFweCBzb2xpZCByZ2IoMjM3LCAyMDIsIDcxKTsKKyAgICBvcGFjaXR5OiAxOworfQorCisu
c2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1w
cm9ncmVzcyAuc3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiB7CisgICAgbWFyZ2luLWJvdHRvbTog
MDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5m
aWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24ubGFzdC1pbi1ncm91
cC5maWx0ZXItc2VjdGlvbi1ub24tbWF0Y2hpbmcgKyAuc3R5bGUtZGVjbGFyYXRpb24tc2VjdGlv
bi5maWx0ZXItc2VjdGlvbi1oYXMtbGFiZWwgeworICAgIG1hcmdpbi10b3A6IDA7CisgICAgYm9y
ZGVyLXRvcDogbm9uZTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUg
PiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb246
bm90KC5maWx0ZXItc2VjdGlvbi1oYXMtbGFiZWwpIHsKKyAgICBtYXJnaW4tdG9wOiAwOworICAg
IGJvcmRlci10b3A6IG5vbmU7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigxNzks
IDE3OSwgMTc5KTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAu
Y29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24gPiAu
aGVhZGVyID4gLnNlbGVjdG9yID4gLmZpbHRlci1tYXRjaGluZyB7CisgICAgY29sb3I6IGJsYWNr
OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZp
bHRlci1pbi1wcm9ncmVzcyAuZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNoaW5nIHsKKyAgICBkaXNw
bGF5OiBub25lOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5j
b250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuZmlsdGVyLXByb3BlcnR5LW5vbi1tYXRjaGluZyB7
CisgICAgb3BhY2l0eTogMC41OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzCmluZGV4IDIwNTcwYzQ3ZjgxZjE0MDdiODgyZWM5YzgwNTE5MTBiY2Q2N2Iw
ZjguLmFjMzY0Yzc4NjczMTlhOTBkOThkNDE5ZjhhZDUzNzRiNTFiYTE1OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTcxLDggKzcxLDExIEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9jb21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0
YWlsc1BhbmVsKHRoaXMpOwotICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsID0g
bmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsOwotICAgICAgICB0aGlzLl9t
ZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURl
dGFpbHNQYW5lbDsKKyAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBX
ZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKKyAgICAgICAgdGhpcy5f
bWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVE
ZXRhaWxzUGFuZWwodGhpcyk7CisKKyAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5FdmVu
dC5SZWZyZXNoZWQsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMu
X3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3R5
bGVEZXRhaWxzUGFuZWwuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRo
aXMpOwogCiAgICAgICAgIHRoaXMuX3BhbmVscyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl9tZXRyaWNzU3R5bGVE
ZXRhaWxzUGFuZWxdOwogCkBAIC04NCw2ICs4NywxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4
dAogCiAgICAgICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgc2VsZWN0ZWQgcGFuZWwgdG8gYmUg
c2V0IGluIF9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLgogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9u
QmFyLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0
dGluZy52YWx1ZTsKKworICAgICAgICB0aGlzLl9maWx0ZXJCYXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkZpbHRlckJhcjsKKyAgICAgICAgdGhpcy5fZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgU3R5bGVzIik7CisgICAgICAgIHRoaXMuX2ZpbHRlckJh
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQuRmlsdGVyRGlk
Q2hhbmdlLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyQmFyLmVsZW1lbnQpOwogICAgIH0KIAogICAgIC8v
IFB1YmxpYwpAQCAtMjExLDYgKzIxOSwxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuc2Nyb2xs
VG9wID0gdGhpcy5faW5pdGlhbFNjcm9sbE9mZnNldDsKIAorICAgICAgICAgICAgdmFyIGhhc0Zp
bHRlciA9IHR5cGVvZiB0aGlzLl9zZWxlY3RlZFBhbmVsLmZpbHRlckRpZENoYW5nZSA9PT0gImZ1
bmN0aW9uIjsKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2ds
ZSgiaGFzLWZpbHRlci1iYXIiLCBoYXNGaWx0ZXIpOworICAgICAgICAgICAgaWYgKHRoaXMuX2Zp
bHRlckJhcikKKyAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC50
b2dnbGUoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJJblBy
b2dyZXNzQ2xhc3NOYW1lLCBoYXNGaWx0ZXIgJiYgdGhpcy5fZmlsdGVyQmFyLmhhc0FjdGl2ZUZp
bHRlcnMoKSk7CisKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwuc2hvd24oKTsKICAg
ICAgICAgfQogCkBAIC0yMzcsNiArMjUwLDE5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAg
ICAgICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IGVuYWJsZWRQc2V1ZG9DbGFzc2Vz
LmluY2x1ZGVzKHBzZXVkb0NsYXNzKTsKICAgICAgICAgfQogICAgIH0KKworICAgIF9maWx0ZXJE
aWRDaGFuZ2UoKQorICAgIHsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3Qu
dG9nZ2xlKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmlsdGVySW5Q
cm9ncmVzc0NsYXNzTmFtZSwgdGhpcy5fZmlsdGVyQmFyLmhhc0FjdGl2ZUZpbHRlcnMoKSk7CisK
KyAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC5maWx0ZXJEaWRDaGFuZ2UodGhpcy5fZmlsdGVy
QmFyKTsKKyAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsLk5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldCA9IDM4OyAvLyBEZWZhdWx0IGhl
aWdodCBvZiB0aGUgZm9yY2VkIHBzZXVkbyBjbGFzc2VzIGNvbnRhaW5lci4gVXBkYXRlZCBpbiB3
aWR0aERpZENoYW5nZS4KK1dlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwu
RmlsdGVySW5Qcm9ncmVzc0NsYXNzTmFtZSA9ICJmaWx0ZXItaW4tcHJvZ3Jlc3MiOworV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJNYXRjaGluZ1NlY3Rpb25I
YXNMYWJlbENsYXNzTmFtZSA9ICJmaWx0ZXItc2VjdGlvbi1oYXMtbGFiZWwiOworV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJNYXRjaFNlY3Rpb25DbGFzc05h
bWUgPSAiZmlsdGVyLW1hdGNoaW5nIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuTm9GaWx0ZXJNYXRjaEluU2VjdGlvbkNsYXNzTmFtZSA9ICJmaWx0ZXItc2VjdGlv
bi1ub24tbWF0Y2hpbmciOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bC5Ob0ZpbHRlck1hdGNoSW5Qcm9wZXJ0eUNsYXNzTmFtZSA9ICJmaWx0ZXItcHJvcGVydHktbm9u
LW1hdGNoaW5nIjsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMK
aW5kZXggYWI2ZGViOWZmYjYyNGYxYTJlMTdmNmMxMzNjNDgyNzQxZGRiNDA4OS4uMjkyNTY0NWJm
OTM5YzcyZjA0MDc3NmJhMGYwMTVhYzFlMWNiNWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRl
ZFN0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0yNyw5ICsyNyw3IEBAIFdlYkluc3BlY3Rvci5Db21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBl
eHRlbmRzCiB7CiAgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCiAgICAgewotICAgICAgICBzdXBl
cihXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwg
ImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKLQotICAgICAg
ICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisgICAgICAgIHN1cGVyKGRlbGVn
YXRlLCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFt
ZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKIAogICAg
ICAgICB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0FsbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlNldHRpbmcoImNvbXB1dGVkLXN0eWxlLXNob3ctYWxsIiwgZmFsc2UpOwogCkBAIC0xNTMsNiAr
MTUxLDEzIEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3Mg
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzCiAgICAgewogICAgICAgICB0aGlzLl9w
cm9wZXJ0aWVzVGV4dEVkaXRvci5zdHlsZSA9IHRoaXMubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxl
OwogICAgICAgICB0aGlzLl9yZWZyZXNoRmxvd0RldGFpbHModGhpcy5ub2RlU3R5bGVzLm5vZGUp
OworCisgICAgICAgIHN1cGVyLnJlZnJlc2goKTsKKyAgICB9CisKKyAgICBmaWx0ZXJEaWRDaGFu
Z2UoZmlsdGVyQmFyKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3Iu
cmVtb3ZlTm9uTWF0Y2hpbmdQcm9wZXJ0aWVzKGZpbHRlckJhci5maWx0ZXJzLnRleHQpOwogICAg
IH0KIAogICAgIC8vIFByb3RlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCmluZGV4IGE5ZjA2MDIwYTE2YTkyMWYw
NmU4ODYyM2FjNGU3OTg3OGY2YjY5NDUuLjc2NTQ4ZjY1ZDIwNDEwODEwZjRiYjFhMTdjZmJlYWRi
NjZhYzZjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ZpbHRlckJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMKQEAgLTQzLDYgKzQzLDggQEAgV2ViSW5zcGVjdG9yLkZp
bHRlckJhciA9IGNsYXNzIEZpbHRlckJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICAgICAgdGhpcy5faW5wdXRGaWVsZC5pbmNyZW1lbnRhbCA9IHRydWU7CiAgICAgICAgIHRoaXMu
X2lucHV0RmllbGQuYWRkRXZlbnRMaXN0ZW5lcigic2VhcmNoIiwgdGhpcy5faGFuZGxlRmlsdGVy
Q2hhbmdlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5faW5wdXRGaWVsZCk7CisKKyAgICAgICAgdGhpcy5fbGFzdEZpbHRlclZhbHVl
ID0gdGhpcy5maWx0ZXJzOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtOTksNiArMTAxLDIx
IEBAIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBjbGFzcyBGaWx0ZXJCYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiAhIXRoaXMuX2lucHV0RmllbGQudmFsdWUg
fHwgISF0aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAuc2l6ZTsKICAgICB9CiAKKyAgICBoYXNGaWx0
ZXJDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50RnVuY3Rpb25zID0gdGhpcy5m
aWx0ZXJzLmZ1bmN0aW9uczsKKworICAgICAgICBpZiAodGhpcy5fbGFzdEZpbHRlclZhbHVlLnRl
eHQgIT09IHRoaXMuX2lucHV0RmllbGQudmFsdWUgfHwgdGhpcy5fbGFzdEZpbHRlclZhbHVlLmZ1
bmN0aW9ucy5sZW5ndGggIT09IGN1cnJlbnRGdW5jdGlvbnMubGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJyZW50RnVuY3Rp
b25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fbGFzdEZpbHRlclZhbHVl
LmZ1bmN0aW9uc1tpXSAhPT0gY3VycmVudEZ1bmN0aW9uc1tpXSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
ICAgICAvLyBQcml2YXRlCiAKICAgICBfaGFuZGxlRmlsdGVyQmFyQnV0dG9uQ2xpY2tlZChldmVu
dCkKQEAgLTExOSw3ICsxMzYsMTAgQEAgV2ViSW5zcGVjdG9yLkZpbHRlckJhciA9IGNsYXNzIEZp
bHRlckJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIF9oYW5kbGVGaWx0ZXJD
aGFuZ2VkKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQuRmlsdGVyRGlkQ2hhbmdlKTsKKyAgICAgICAgaWYg
KHRoaXMuaGFzRmlsdGVyQ2hhbmdlZCgpKSB7CisgICAgICAgICAgICB0aGlzLl9sYXN0RmlsdGVy
VmFsdWUgPSB0aGlzLmZpbHRlcnM7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLkV2ZW50LkZpbHRlckRpZENoYW5nZSk7Cisg
ICAgICAgIH0KICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFu
ZWwuanMKaW5kZXggODg5NTQzMThmYjQ4NjNmNDNkOGI5M2ZhOGMxNWEyZDY4Nzg0Mjc3ZC4uNDIx
NTlhY2Q4Y2MzYmY4Y2Y3NzgyY2VkZmVlMzA3ZGFmMDFkMjljMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01l
dHJpY3NTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMjUsOSArMjUsOSBAQAogCiBXZWJJbnNwZWN0
b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgTWV0cmljc1N0eWxlRGV0YWlsc1Bh
bmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsCiB7Ci0gICAgY29uc3Ry
dWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQogICAgIHsKLSAgICAgICAgc3VwZXIo
Im1ldHJpY3MiLCAibWV0cmljcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0cmljcyIpKTsK
KyAgICAgICAgc3VwZXIoZGVsZWdhdGUsICJtZXRyaWNzIiwgIm1ldHJpY3MiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk1ldHJpY3MiKSk7CiAKICAgICAgICAgdGhpcy5fYm94TW9kZWxEaWFncmFt
Um93ID0gbmV3IFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93OwogCkBAIC00
Miw1ICs0Miw3IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFz
cyBNZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXCiAgICAgcmVmcmVzaCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cubm9kZVN0eWxlcyA9IHRoaXMubm9k
ZVN0eWxlczsKKworICAgICAgICBzdXBlci5yZWZyZXNoKCk7CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5jc3MKaW5kZXggZWJkZTY4NTNjMjM5MmUxZThmOTdl
ZjQzNjRlN2FhMGZlYTlhODlkOS4uZThmYWJkMGZkZDFkOGI0MzI3YmNhNmVhODk4MjEzMzljMGY4
MDYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTUyLDcg
KzUyLDMzIEBACiAgICAgb3BhY2l0eTogMC41OwogfQogCi0uc2lkZWJhciA+IC5wYW5lbC5kZXRh
aWxzLmNzcy1zdHlsZSAucnVsZXMgLm5ldy1ydWxlICsgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rp
b24geworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0
ZXItaW4tcHJvZ3Jlc3MgLmxhYmVsIHsKKyAgICBwYWRkaW5nLXRvcDogMTVweDsKK30KKworLnNp
ZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJv
Z3Jlc3MgLmxhYmVsIH4gLmxhYmVsIHsKKyAgICBwYWRkaW5nLXRvcDogMDsKK30KKworLnNpZGVi
YXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jl
c3MgLmxhYmVsLmZpbHRlci1tYXRjaGluZy1sYWJlbCB7CisgICAgcGFkZGluZy1ib3R0b206IDVw
eDsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOworfQor
Cisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1p
bi1wcm9ncmVzcyAubmV3LXJ1bGUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNz
IC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uOm5vdCguZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNo
aW5nKSB+IC5sYWJlbDpub3QoLmZpbHRlci1zZWN0aW9uLW5vbi1tYXRjaGluZykgeworICAgIHBh
ZGRpbmctdG9wOiAxNXB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSA+IC5jb250ZW50Om5vdCguZmlsdGVyLWluLXByb2dyZXNzKSA+IC5ydWxlcyA+IC5uZXctcnVs
ZSArIC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uIHsKKyAgICBib3JkZXItdG9wOiAxcHggc29s
aWQgcmdiKDE3OSwgMTc5LCAxNzkpOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSA+IC5jb250ZW50Om5vdCguZmlsdGVyLWluLXByb2dyZXNzKSA+IC5ydWxlcyA+IC5u
ZXctcnVsZSArIC5sYWJlbCB7CisgICAgcGFkZGluZy10b3A6IDEwcHg7CiAgICAgYm9yZGVyLXRv
cDogMXB4IHNvbGlkIHJnYigxNzksIDE3OSwgMTc5KTsKIH0KIApAQCAtNzQsMyArMTAwLDI4IEBA
CiAuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAucnVsZXMgLm5ldy1ydWxlOmFj
dGl2ZSB7CiAgICAgb3BhY2l0eTogMC43OwogfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxz
LmNzcy1zdHlsZSA+IC5jb250ZW50ID4gLnJ1bGVzOm5vdCguZmlsdGVyLW5vbi1tYXRjaGluZykg
PiAubm8tZmlsdGVyLXJlc3VsdHMgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNz
ID4gLnJ1bGVzLmZpbHRlci1ub24tbWF0Y2hpbmcgPiAubm8tZmlsdGVyLXJlc3VsdHMgeworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICByaWdo
dDogMDsKKyAgICBib3R0b206IDA7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBqdXN0aWZ5LWNv
bnRlbnQ6IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworfQorCisuc2lkZWJhciA+
IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyA+
IC5ydWxlcy5maWx0ZXItbm9uLW1hdGNoaW5nID4gLm5vLWZpbHRlci1yZXN1bHRzID4gLm5vLWZp
bHRlci1yZXN1bHRzLW1lc3NhZ2UgeworICAgIGZvbnQtc2l6ZTogMTNweDsKKyAgICBjb2xvcjog
d2hpdGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTsKKyAgICB0
ZXh0LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjIpIDAgMXB4IDA7CisgICAgYm94LXNoYWRvdzog
aW5zZXQgcmdiYSgwLCAwLCAwLCAwLjIpIDAgMXB4IDAsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40
KSAwIDFweCAwOworICAgIGJvcmRlci1yYWRpdXM6IDZweDsKKyAgICBwYWRkaW5nOiA1cHggMTVw
eCA2cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCA3ZDFi
YzdjMWFkZTZkNTIyYTA4NjBmYzkyMDljMTlmN2M1MzE2NDEzLi43NGU1ZDJlMzFhZWZmZDBkNzNm
ODMxM2M2YzI3YTVhZDdhNDE0MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwuanMKQEAgLTI1LDEyICsyNSwyMSBAQAogCiBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFp
bHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuU3R5bGVEZXRhaWxzUGFuZWwKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0
b3IoZGVsZWdhdGUpCiAgICAgewotICAgICAgICBzdXBlcigicnVsZXMiLCAicnVsZXMiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJ1bGVzIikpOworICAgICAgICBzdXBlcihkZWxlZ2F0ZSwgInJ1
bGVzIiwgInJ1bGVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdWxlcyIpKTsKIAogICAgICAg
ICB0aGlzLl9zZWN0aW9ucyA9IFtdOworICAgICAgICB0aGlzLl9ydWxlTWVkaWFBbmRJbmhlcnRp
Y2FuY2VMaXN0ID0gW107CiAgICAgICAgIHRoaXMuX3Byb3BlcnR5VG9TZWxlY3RBbmRIaWdobGln
aHQgPSBudWxsOworCisgICAgICAgIHRoaXMuX2VtcHR5RmlsdGVyUmVzdWx0c0VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJS
ZXN1bHRzRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuby1maWx0ZXItcmVzdWx0cyIpOworCisgICAg
ICAgIHRoaXMuX2VtcHR5RmlsdGVyUmVzdWx0c01lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRzTWVzc2FnZS5jbGFz
c0xpc3QuYWRkKCJuby1maWx0ZXItcmVzdWx0cy1tZXNzYWdlIik7CisgICAgICAgIHRoaXMuX2Vt
cHR5RmlsdGVyUmVzdWx0c01lc3NhZ2UudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk5vIFJlc3VsdHMgRm91bmQiKTsKKyAgICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRz
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9lbXB0eUZpbHRlclJlc3VsdHNNZXNzYWdlKTsKICAg
ICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTE3MCwxMSArMTc5LDE0IEBAIFdlYkluc3BlY3Rvci5S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRl
bmRzIFdlYkluCiAgICAgICAgIH0KIAogICAgICAgICB2YXIgYWRkZWROZXdSdWxlQnV0dG9uID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuX3J1bGVNZWRpYUFuZEluaGVydGljYW5jZUxpc3QgPSBbXTsK
IAogICAgICAgICB2YXIgb3JkZXJlZFN0eWxlcyA9IHVuaXF1ZU9yZGVyZWRTdHlsZXModGhpcy5u
b2RlU3R5bGVzLm9yZGVyZWRTdHlsZXMpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9y
ZGVyZWRTdHlsZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBzdHlsZSA9IG9yZGVy
ZWRTdHlsZXNbaV07CiAKKyAgICAgICAgICAgIHZhciBoYXNNZWRpYU9ySW5oZXJpdGVkID0gW107
CisKICAgICAgICAgICAgIGlmIChzdHlsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5UeXBlLlJ1bGUgJiYgIWFkZGVkTmV3UnVsZUJ1dHRvbikKICAgICAgICAgICAg
ICAgICBhZGROZXdSdWxlQnV0dG9uLmNhbGwodGhpcyk7CiAKQEAgLTE4OSw2ICsyMDEsOCBAQCBX
ZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRh
aWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICAgICAgICAgIGluaGVyaXRlZExhYmVsLmFw
cGVuZENoaWxkKHByZWZpeEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGluaGVyaXRlZExhYmVs
LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5saW5raWZ5Tm9kZVJlZmVyZW5jZShzdHlsZS5ub2Rl
KSk7CiAgICAgICAgICAgICAgICAgbmV3RE9NRnJhZ21lbnQuYXBwZW5kQ2hpbGQoaW5oZXJpdGVk
TGFiZWwpOworCisgICAgICAgICAgICAgICAgaGFzTWVkaWFPckluaGVyaXRlZC5wdXNoKGluaGVy
aXRlZExhYmVsKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gT25seSBpbmNsdWRl
IHRoZSBtZWRpYSBsaXN0IGlmIGl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91cyBtZWRp
YSBsaXN0IHNob3duLgpAQCAtMjE4LDkgKzIzMiwxNiBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHls
ZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJ
bgogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgbmV3RE9NRnJh
Z21lbnQuYXBwZW5kQ2hpbGQobWVkaWFMYWJlbCk7CisKKyAgICAgICAgICAgICAgICAgICAgaGFz
TWVkaWFPckluaGVyaXRlZC5wdXNoKG1lZGlhTGFiZWwpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCFoYXNNZWRpYU9ySW5oZXJpdGVkLmxlbmd0
aCAmJiBwcmV2aW91c1NlY3Rpb24gJiYgIXByZXZpb3VzU2VjdGlvbi5sYXN0SW5Hcm91cCkKKyAg
ICAgICAgICAgICAgICBoYXNNZWRpYU9ySW5oZXJpdGVkID0gdGhpcy5fcnVsZU1lZGlhQW5kSW5o
ZXJ0aWNhbmNlTGlzdC5sYXN0VmFsdWU7CisKKyAgICAgICAgICAgIHRoaXMuX3J1bGVNZWRpYUFu
ZEluaGVydGljYW5jZUxpc3QucHVzaChoYXNNZWRpYU9ySW5oZXJpdGVkKTsKKwogICAgICAgICAg
ICAgYXBwZW5kU3R5bGVTZWN0aW9uLmNhbGwodGhpcywgc3R5bGUpOwogICAgICAgICB9CiAKQEAg
LTIzMiw2ICsyNTMsNyBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNs
YXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogCiAgICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQobmV3RE9NRnJhZ21lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fZW1wdHlGaWx0ZXJSZXN1bHRzRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fc2VjdGlvbnMg
PSBuZXdTZWN0aW9uczsKIApAQCAtMjQwLDYgKzI2Miw4IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0
eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdl
YkluCiAKICAgICAgICAgaWYgKHByZXZpb3VzRm9jdXNlZFNlY3Rpb24pCiAgICAgICAgICAgICBw
cmV2aW91c0ZvY3VzZWRTZWN0aW9uLmZvY3VzKCk7CisKKyAgICAgICAgc3VwZXIucmVmcmVzaCgp
OwogICAgIH0KIAogICAgIHNjcm9sbFRvU2VjdGlvbkFuZEhpZ2hsaWdodFByb3BlcnR5KHByb3Bl
cnR5KQpAQCAtMjY1LDYgKzI4OSwzNSBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQ
YW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAg
ICB9CiAgICAgfQogCisgICAgZmlsdGVyRGlkQ2hhbmdlKGZpbHRlckJhcikKKyAgICB7CisgICAg
ICAgIGZvciAodmFyIGxhYmVscyBvZiB0aGlzLl9ydWxlTWVkaWFBbmRJbmhlcnRpY2FuY2VMaXN0
KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgICAgIGxhYmVsc1tpXS5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9GaWx0ZXJNYXRjaEluU2VjdGlvbkNsYXNz
TmFtZSwgZmlsdGVyQmFyLmhhc0FjdGl2ZUZpbHRlcnMoKSk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoaSA9PT0gbGFiZWxzLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgIGxhYmVsc1tp
XS5jbGFzc0xpc3QudG9nZ2xlKCJmaWx0ZXItbWF0Y2hpbmctbGFiZWwiLCBmaWx0ZXJCYXIuaGFz
QWN0aXZlRmlsdGVycygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZh
ciBtYXRjaEZvdW5kID0gIWZpbHRlckJhci5oYXNBY3RpdmVGaWx0ZXJzKCk7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07CisKKyAgICAgICAgICAgIGlmIChz
ZWN0aW9uLmZpbmRNYXRjaGluZ1Byb3BlcnRpZXNBbmRTZWxlY3RvcnMoZmlsdGVyQmFyLmZpbHRl
cnMudGV4dCkgJiYgZmlsdGVyQmFyLmhhc0FjdGl2ZUZpbHRlcnMoKSkgeworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl9ydWxlTWVkaWFBbmRJbmhlcnRpY2FuY2VMaXN0W2ldLmxlbmd0aCkgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsYWJlbCBvZiB0aGlzLl9ydWxlTWVkaWFBbmRJ
bmhlcnRpY2FuY2VMaXN0W2ldKQorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwuY2xhc3NM
aXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRmls
dGVyTWF0Y2hJblNlY3Rpb25DbGFzc05hbWUpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICBzZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLkZpbHRlck1hdGNoaW5nU2VjdGlvbkhhc0xh
YmVsQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtYXRjaEZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QudG9nZ2xlKCJmaWx0ZXItbm9uLW1hdGNoaW5nIiwgIW1hdGNoRm91bmQp
OworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCiAgICAgc2hvd24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURl
dGFpbHNQYW5lbC5qcwppbmRleCBjZWU0ZGFkYTFhZTRmMzE1OTZlNGU2ZjEzZjBkZGFmYjVjODlm
ZWNlLi5jOGQxYWVhODZlYWU5NTNmMjA1NDc2MjgzYjFhMThkZjA3YmJmMzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
dHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMjUsMTAgKzI1LDEyIEBACiAKIFdlYkluc3BlY3Rvci5T
dHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIGNvbnN0cnVjdG9yKGNsYXNzTmFtZSwgaWRlbnRpZmllciwg
bGFiZWwpCisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUsIGNsYXNzTmFtZSwgaWRlbnRpZmllciwg
bGFiZWwpCiAgICAgewogICAgICAgICBzdXBlcigpOwogCisgICAgICAgIHRoaXMuX2RlbGVnYXRl
ID0gZGVsZWdhdGUgfHwgbnVsbDsKKwogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0g
Y2xhc3NOYW1lOwogCkBAIC0xMDksNiArMTExLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWls
c1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2IK
ICAgICByZWZyZXNoKHNpZ25pZmljYW50Q2hhbmdlKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCk7CiAgICAg
fQogCiAgICAgLy8gUHJvdGVjdGVkCkBAIC0xNjAsMyArMTYzLDcgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2IKICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hOb2RlU3R5bGVzKCk7CiAgICAgfQog
fTsKKworV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50ID0geworICAgIFJlZnJl
c2hlZDogInN0eWxlLWRldGFpbHMtcGFuZWwtcmVmcmVzaGVkIgorfTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255134</attachid>
            <date>2015-06-18 14:32:06 -0700</date>
            <delta_ts>2015-06-18 15:25:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145536-20150618143129.patch</filename>
            <type>text/plain</type>
            <size>34840</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGE5OWI5NmI0NmVmZDE0ZDI0NjI4NjZmY2FhOThh
NDQ4ZmE2NWVmZDguLmM3MTMyNzIyZmY3YzQ4ZTFiOTY4MWVkZWZkNGY2MjgxYzA5YTdmNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDE1LTA2LTE4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgYSBmaWx0ZXIgZm9yIENTUyBwcm9wZXJ0aWVzIGluIHRoZSBTdHlsZXMgc2lkZWJhcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NTM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9CYXNlL1V0aWxpdGllcy5qczogQWRkZWQgZnVuY3Rpb24gdG8gU3RyaW5ncyB0aGF0IHJl
dHVybnMgYW4gYXJyYXkgb2YgYWxsIG1hdGNoaW5nIGluZGV4ZXMgb2YgYSBnaXZlbiBzdHJpbmcu
CisgICAgICAgICgudmFsdWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZWNsYXJhdGlvblNlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25TZWN0aW9uLnByb3RvdHlwZS5yZWZyZXNoLmFwcGVuZFNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUuZmluZE1h
dGNoaW5nUHJvcGVydGllc0FuZFNlbGVjdG9ycyk6IExvb3BzIHRocm91Z2ggdGhlIHByb3BlcnR5
IGxpc3QgYW5kIHNlbGVjdG9ycyBvZiBlYWNoIHNlY3Rpb24gdG8gZmluZCBtYXRjaGVzIHRvIHRo
ZSBmaWx0ZXJlZCB0ZXh0LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLmZpbmRNYXRjaGluZ1Byb3BlcnRpZXMpOiBT
ZWFyY2hlcyB0aHJvdWdoIHRoZSBwcm9wZXJ0aWVzIGxpc3QgdG8gZmluZCBhbmQgaGlnaGxpZ2h0
IGFsbCBtYXRjaGluZyBwcm9wZXJ0aWVzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVOb25NYXRjaGluZ1Byb3BlcnRp
ZXMpOiBSZW1vdmVzIGFsbCBwcm9wZXJ0aWVzIHRoYXQgZG8gbm90IG1hdGNoIGFuZCBoaWdobGln
aHRzIHRoZSBzcGVjaWZpYyBtYXRjaGVkIHRleHQgaW4gbWF0Y2hpbmcgcHJvcGVydGllcy4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5
cGUucmVzZXRGaWx0ZXJlZFByb3BlcnRpZXMpOiBSZXN0b3JlcyBhbGwgcHJvcGVydGllcyB0byBm
dWxsIHZpc2liaWxpdHkgYW5kIHJlbW92ZXMgYW55IGhpZ2hsaWdodGluZy4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0
ZVRleHRNYXJrZXJGb3JQcm9wZXJ0eUlmTmVlZGVkKTogQ2xhc3NlcyBhcmUgYWRkZWQgdG8gc2Vs
ZWN0aW9ucyBvZiB0aGUgdGV4dCBlZGl0b3Igb2YgdGhhdCBwYXJ0aXVsYXIgc2VsZWN0aW9uIGNv
bnRhaW5zIHRleHQgd2hpY2ggbWF0Y2hlcyB0aGUgZmlsdGVyIChzZWUgQ1NTU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsLmNzcyBmb3IgZGlmZmVyZW50IGNsYXNzZXMpLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5faXRlcmF0ZU92
ZXJQcm9wZXJ0aWVzKTogSWYgYSBmaWx0ZXIgaXMgYWN0aXZlLCBmaW5kIHByb3BlcnRpZXMgbWF0
Y2hpbmcgdGhlIGZpbHRlciBpbnN0ZWFkIG9mIGFsbCBwcm9wZXJ0aWVzLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmNzczoKKyAgICAg
ICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuaGFzLWZp
bHRlci1iYXIgKyAuZmlsdGVyLWJhcik6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRh
aWxzLmNzcy1zdHlsZSA+IC5jb250ZW50Om5vdCguaGFzLWZpbHRlci1iYXIpICsgLmZpbHRlci1i
YXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCk6IEFkZGVkIGEgZmlsdGVyIGJhciB0byB0aGUgQ1NTIHNpZGViYXIuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fc3dpdGNo
UGFuZWxzKTogU3dpdGNoaW5nIHBhbmVscyBwcmVzZXJ2ZXMgYW5kIGFwcGxpZXMgZmlsdGVyIGJh
ciB0ZXh0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUuX2ZpbHRlckRpZENoYW5nZSk6IEZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBm
aWx0ZXIgYmFyIHRleHQgY2hhbmdlcyB0aGF0IGNhbGxzIHRoZSBjdXJyZW50IHBhbmVsJ3MgZmls
dGVyRGlkQ2hhbmdlIGZ1bmN0aW9uIGlmIGl0IGV4aXN0cy4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0ZpbHRlckJhci5qczogQWRkZWQgZnVuY3Rpb24gYW5kIHZhcmlhYmxlIHRvIGNo
ZWNrIGlmIHRoZSB0ZXh0IGluIHRoZSBmaWx0ZXIgYmFyIGhhZCBjaGFuZ2VkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUucmVmcmVz
aCk6IE5vdyBjYWxscyBzdXBlcmNsYXNzIHJlZnJlc2guCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsKTogQWRkZWQgZGVsZWdhdGUgdmFyaWFibGUgdG8gY29u
c3RydWN0b3IuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWls
c1BhbmVsLmNzczoKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxl
ID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzIC5sYWJlbCk6CisgICAgICAgICguc2lkZWJh
ciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVz
cyAubGFiZWwgfiAubGFiZWwpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5j
c3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLmxhYmVsLmZpbHRlci1tYXRj
aGluZy1sYWJlbCk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAubmV3LXJ1bGUpOgorICAgICAgICAoLnNp
ZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJv
Z3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb246bm90KC5maWx0ZXItc2VjdGlvbi1ub24t
bWF0Y2hpbmcpIH4gLmxhYmVsOm5vdCguZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNoaW5nKSk6Cisg
ICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50Om5v
dCguZmlsdGVyLWluLXByb2dyZXNzKSA+IC5ydWxlcyA+IC5uZXctcnVsZSArIC5zdHlsZS1kZWNs
YXJhdGlvbi1zZWN0aW9uKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3Nz
LXN0eWxlID4gLmNvbnRlbnQgPiAucnVsZXM6bm90KC5maWx0ZXItbm9uLW1hdGNoaW5nKSA+IC5u
by1maWx0ZXItcmVzdWx0cyk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyA+IC5ydWxlcy5maWx0ZXItbm9u
LW1hdGNoaW5nID4gLm5vLWZpbHRlci1yZXN1bHRzKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBh
bmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXByb2dyZXNzID4gLnJ1
bGVzLmZpbHRlci1ub24tbWF0Y2hpbmcgPiAubm8tZmlsdGVyLXJlc3VsdHMgPiAubm8tZmlsdGVy
LXJlc3VsdHMtbWVzc2FnZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0
eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRh
aWxzUGFuZWwpOiBBZGRlZCBkZWxlZ2F0ZSB2YXJpYWJsZSB0byBjb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNo
KTogTm93IGNhbGxzIHN1cGVyY2xhc3MgcmVmcmVzaC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5maWx0ZXJEaWRDaGFuZ2UpOiBGdW5jdGlv
biB0byBzZWFyY2ggdGhyb3VnaCB0aGUgY29tcHV0ZWQgc3R5bGVzIGxpc3QgYW5kIGhpZ2hsaWdo
dCBhbGwgbWF0Y2hlZCBwcm9wZXJ0aWVzIGFuZCBzZWxlY3RvcnMgb2YgdGhlIGZpbHRlciBiYXIg
dGV4dCwgdHVybmluZyBhbGwgbm9uIG1hdGNoaW5nIHByb3BlcnRpZXMgc2xpZ2h0bHkgb3BhcXVl
ICh1bmxlc3MgYSBzZWxlY3RvciBmb3IgdGhhdCBwcm9wZXJ0eSBpcyBhIG1hdGNoKS4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbCk6IEFkZGVkIGRlbGVnYXRlIHZhcmlh
YmxlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5yZWZyZXNoKTogQWRkZWQgZXZlbnQgZGlzcGF0Y2ggZm9yIHBhbmVsIHJl
ZnJlc2guCisKKzIwMTUtMDYtMTggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgor
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFiaWxpdHkgdG8gQ29weSBlbnRpcmUgQ1NTIFJ1bGUg
ZnJvbSBTdHlsZXMgU2lkZWJhcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM4ODEyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9M
b2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4
IDkwNDVlYjE0ODgzN2E3YjdlNTJjMWY4M2JlNjI0ZTg2ZWVjYjY1YTguLjg2MjIzNjJhNTZkNzE3
NWNiNzRhNjU5MTQxOTQ4MTZiMTE4NzM5ZGIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
MTE0CnpjbWNiMm0zaU5GPF8qITclc352TGxNZmgoRzhac1pQRU1GPUl7Q0srKld7YSkwLUtMbz9s
WWc8b3lSbHo7JnFBMQp6c3x5NHN6ckpwPXh2fXQ+dTMhKkREbmxfdERNSm9KMzZOR2BhR058fnBg
QD9eMUUlPThnfnBUYiZ0fWA0S0VLPT4KRTAycFgwQ2piQmQKCmRlbHRhIDYwCnpjbVYtQzBLQDtq
Kjh8P3cxRiV+OzgpcEQ+MDl5YmUwOFJqOTBDeFomMDh7e0IwN0MkODBCYF8jbE10M1FsZ35MQwpT
diZBe1NIPyE/PTxTbnlEcG0kM15lSDcqWgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXggZTYxOWE4MzBkMDI0NjAw
NTQwMzJjNDI5YTZhZTM3NGM4YmJlNDA0Mi4uYTFjOTBkNmNmOTBhMzdhNjdjMGU0MWY0NmJhZThl
YzdmZTk2ODNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKQEAgLTc0OCw2ICs3NDgsMjIgQEAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJyZW1vdmVXb3JkQnJlYWtDaGFyYWN0ZXJzIiwK
ICAgICB9CiB9KTsKIAorT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJn
ZXRNYXRjaGluZ0luZGV4ZXMiLAoreworICAgIHZhbHVlOiBmdW5jdGlvbihuZWVkbGUpCisgICAg
eworICAgICAgICB2YXIgaW5kZXhlc09mTmVlZGxlID0gW107CisgICAgICAgIHZhciBpbmRleCA9
IHRoaXMuaW5kZXhPZihuZWVkbGUpOworCisgICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7Cisg
ICAgICAgICAgICBpbmRleGVzT2ZOZWVkbGUucHVzaChpbmRleCk7CisgICAgICAgICAgICBpbmRl
eCA9IHRoaXMuaW5kZXhPZihuZWVkbGUsIGluZGV4ICsgMSk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gaW5kZXhlc09mTmVlZGxlOworICAgIH0KK30pOworCiBPYmplY3QuZGVmaW5lUHJv
cGVydHkoTnVtYmVyLCAiY29uc3RyYWluIiwKIHsKICAgICB2YWx1ZTogZnVuY3Rpb24obnVtLCBt
aW4sIG1heCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKaW5k
ZXggNDEwM2Q4NGI1YzBlOGIzMWY4Nzk3NzllNzVlZTRiYTQ1MDZjNmMyMC4uMGU5YjNhZTlmM2Jm
MmViYmNmZmQ0YWFjZTcwMzgyNTE3NDY5MmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTMyLDYgKzMyLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uID0gZnVuY3Rpb24oZGVsZWdhdGUsIHN0eWxlKQogCiAgICAg
Y29uc29sZS5hc3NlcnQoc3R5bGUpOwogICAgIHRoaXMuX3N0eWxlID0gc3R5bGUgfHwgbnVsbDsK
KyAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnRzID0gW107CiAKICAgICB0aGlzLl9lbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05h
bWUgPSAic3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiI7CkBAIC0xNjQsNiArMTY1LDcgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAg
ICB0aGlzLl9vcmlnaW5FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMuX3Nl
bGVjdG9yRWxlbWVudHMgPSBbXTsKIAogICAgICAgICB0aGlzLl9vcmlnaW5FbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgXHUyMDE0ICIpKTsKIApAQCAtMTk2LDYg
KzE5OCw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVu
dC5hcHBlbmRDaGlsZChzZWxlY3RvckVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fc2VsZWN0
b3JFbGVtZW50cy5wdXNoKHNlbGVjdG9yRWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBm
dW5jdGlvbiBhcHBlbmRTZWxlY3RvclRleHRLbm93blRvTWF0Y2goc2VsZWN0b3JUZXh0KQpAQCAt
Mjc0LDYgKzI3NywzNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24u
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAorICAgIGZpbmRN
YXRjaGluZ1Byb3BlcnRpZXNBbmRTZWxlY3RvcnM6IGZ1bmN0aW9uKG5lZWRsZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRmlsdGVyTWF0Y2hJblNlY3Rpb25DbGFzc05hbWUsIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmlsdGVyTWF0Y2hpbmdTZWN0
aW9uSGFzTGFiZWxDbGFzc05hbWUpOworCisgICAgICAgIHZhciBoYXNNYXRjaGluZ1NlbGVjdG9y
ID0gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgc2VsZWN0b3JFbGVtZW50IG9mIHRoaXMuX3Nl
bGVjdG9yRWxlbWVudHMpIHsKKyAgICAgICAgICAgIHNlbGVjdG9yRWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmlsdGVyTWF0
Y2hTZWN0aW9uQ2xhc3NOYW1lKTsKKworICAgICAgICAgICAgaWYgKG5lZWRsZSAmJiBzZWxlY3Rv
ckVsZW1lbnQudGV4dENvbnRlbnQuaW5jbHVkZXMobmVlZGxlKSkgeworICAgICAgICAgICAgICAg
IHNlbGVjdG9yRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwuRmlsdGVyTWF0Y2hTZWN0aW9uQ2xhc3NOYW1lKTsKKyAgICAgICAgICAg
ICAgICBoYXNNYXRjaGluZ1NlbGVjdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGlmICghbmVlZGxlKSB7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0aWVz
VGV4dEVkaXRvci5yZXNldEZpbHRlcmVkUHJvcGVydGllcygpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGhhc01hdGNoaW5nUHJvcGVydHkgPSB0
aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5maW5kTWF0Y2hpbmdQcm9wZXJ0aWVzKG5lZWRsZSk7
CisKKyAgICAgICAgaWYgKCFoYXNNYXRjaGluZ1Byb3BlcnR5ICYmICFoYXNNYXRjaGluZ1NlbGVj
dG9yKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZpbHRlck1hdGNoSW5TZWN0aW9uQ2xh
c3NOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0sCisKICAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCA1
ZjY0NDUxOTE2MWQ5YjczNGNlYmEzZjJlOTU5Yzg4MDhjMTg3MWUwLi5lZDJlODE2ZDllOWVmNzIy
ZTQyMzk5Y2JmZDhkZDljMjZjM2NmMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtMzYsNiArMzYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4
dEVkaXRvcgogCiAgICAgICAgIHRoaXMuX3Nob3dzSW1wbGljaXRQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgdGhpcy5fYWx3YXlzU2hvd1Byb3BlcnR5TmFtZXMgPSB7fTsKKyAgICAgICAgdGhp
cy5fZmlsdGVyUmVzdWx0UHJvcGVydHlOYW1lcyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NvcnRQ
cm9wZXJ0aWVzID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5fcHJlZml4V2hpdGVzcGFjZSA9ICIi
OwpAQCAtMjI5LDYgKzIzMCw3OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRl
eHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICB0
aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcih7bGluZTogMCwgY2g6IDB9KTsKICAgICB9CiAKKyAg
ICBmaW5kTWF0Y2hpbmdQcm9wZXJ0aWVzKG5lZWRsZSkKKyAgICB7CisgICAgICAgIGlmICghbmVl
ZGxlKSB7CisgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyZWRQcm9wZXJ0aWVzKCk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcHJvcGVydGll
c0xpc3QgPSB0aGlzLl9zdHlsZS52aXNpYmxlUHJvcGVydGllcy5sZW5ndGggPyB0aGlzLl9zdHls
ZS52aXNpYmxlUHJvcGVydGllcyA6IHRoaXMuX3N0eWxlLnByb3BlcnRpZXM7CisgICAgICAgIHZh
ciBtYXRjaGluZ1Byb3BlcnRpZXMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBv
ZiBwcm9wZXJ0aWVzTGlzdCkKKyAgICAgICAgICAgIG1hdGNoaW5nUHJvcGVydGllcy5wdXNoKHBy
b3BlcnR5LnRleHQuaW5jbHVkZXMobmVlZGxlKSk7CisKKyAgICAgICAgaWYgKCFtYXRjaGluZ1By
b3BlcnRpZXMuaW5jbHVkZXModHJ1ZSkpIHsKKyAgICAgICAgICAgIHRoaXMucmVzZXRGaWx0ZXJl
ZFByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hpbmdQcm9wZXJ0aWVzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzTGlzdFtpXTsKKworICAg
ICAgICAgICAgaWYgKG1hdGNoaW5nUHJvcGVydGllc1tpXSkKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eS5fX2ZpbHRlclJlc3VsdENsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwuRmlsdGVyTWF0Y2hTZWN0aW9uQ2xhc3NOYW1lOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZpbHRlck1hdGNoSW5Q
cm9wZXJ0eUNsYXNzTmFtZTsKKworICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGV4dE1hcmtlckZv
clByb3BlcnR5SWZOZWVkZWQocHJvcGVydHkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmVzZXRGaWx0ZXJlZFByb3BlcnRpZXMoKQorICAgIHsKKyAg
ICAgICAgdmFyIHByb3BlcnRpZXNMaXN0ID0gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMu
bGVuZ3RoID8gdGhpcy5fc3R5bGUudmlzaWJsZVByb3BlcnRpZXMgOiB0aGlzLl9zdHlsZS5wcm9w
ZXJ0aWVzOworCisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHByb3BlcnRpZXNMaXN0KSB7
CisgICAgICAgICAgICBpZiAocHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUpIHsKKyAg
ICAgICAgICAgICAgICBwcm9wZXJ0eS5fX2ZpbHRlclJlc3VsdENsYXNzTmFtZSA9IG51bGw7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGV4dE1hcmtlckZvclByb3BlcnR5SWZOZWVkZWQo
cHJvcGVydHkpCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZW1vdmVO
b25NYXRjaGluZ1Byb3BlcnRpZXMobmVlZGxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZmlsdGVy
UmVzdWx0UHJvcGVydHlOYW1lcyA9IG51bGw7CisKKyAgICAgICAgaWYgKCFuZWVkbGUpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc2V0Q29udGVudCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIG1hdGNoaW5nUHJvcGVydHlOYW1lcyA9IFtdOwor
CisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHRoaXMuX3N0eWxlLnByb3BlcnRpZXMpIHsK
KyAgICAgICAgICAgIHZhciBpbmRleGVzT2ZOZWVkbGUgPSBwcm9wZXJ0eS50ZXh0LmdldE1hdGNo
aW5nSW5kZXhlcyhuZWVkbGUpOworCisgICAgICAgICAgICBpZiAoaW5kZXhlc09mTmVlZGxlLmxl
bmd0aCkgeworICAgICAgICAgICAgICAgIG1hdGNoaW5nUHJvcGVydHlOYW1lcy5wdXNoKHByb3Bl
cnR5Lm5hbWUpOworICAgICAgICAgICAgICAgIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJNYXRj
aFNlY3Rpb25DbGFzc05hbWU7CisgICAgICAgICAgICAgICAgcHJvcGVydHkuX19maWx0ZXJSZXN1
bHROZWVkbGVQb3NpdGlvbiA9IHtzdGFydDogaW5kZXhlc09mTmVlZGxlLCBsZW5ndGg6IG5lZWRs
ZS5sZW5ndGh9OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZmls
dGVyUmVzdWx0UHJvcGVydHlOYW1lcyA9IG1hdGNoaW5nUHJvcGVydHlOYW1lcy5sZW5ndGggPyBt
YXRjaGluZ1Byb3BlcnR5TmFtZXMua2V5U2V0KCkgOiB7fTsKKworICAgICAgICB0aGlzLl9yZXNl
dENvbnRlbnQoKTsKKworICAgICAgICByZXR1cm4gbWF0Y2hpbmdQcm9wZXJ0eU5hbWVzLmxlbmd0
aCA+IDA7CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBkaWREaXNtaXNzUG9wb3Zl
cihwb3BvdmVyKQpAQCAtNTI3LDYgKzYwMCw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAg
ICAgICAgIGlmICghcHJvcGVydHkuZW5hYmxlZCkKICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVz
aCgiZGlzYWJsZWQiKTsKIAorICAgICAgICBpZiAocHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFz
c05hbWUgJiYgIXByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24pCisgICAgICAg
ICAgICBjbGFzc05hbWVzLnB1c2gocHJvcGVydHkuX19maWx0ZXJSZXN1bHRDbGFzc05hbWUpOwor
CiAgICAgICAgIHZhciBjbGFzc05hbWVzU3RyaW5nID0gY2xhc3NOYW1lcy5qb2luKCIgIik7CiAK
ICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHRleHQgbWFya2VyIGFuZCBpdCdzIGlu
IHRoZSBzYW1lIGRvY3VtZW50LCB0aGVuIHRyeSB0byBhdm9pZCByZWNyZWF0aW5nIGl0LgpAQCAt
NTU4LDYgKzYzNCwxNSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgICAgICB0
aGlzLl9jb2RlTWlycm9yLm1hcmtUZXh0KHN0YXJ0LCBlbmQsIHtjbGFzc05hbWU6ICJpbnZhbGlk
In0pOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0Q2xh
c3NOYW1lICYmIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0TmVlZGxlUG9zaXRpb24pIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIG5lZWRsZVBvc2l0aW9uIG9mIHByb3BlcnR5Ll9fZmlsdGVyUmVzdWx0
TmVlZGxlUG9zaXRpb24uc3RhcnQpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSB7bGlu
ZTogZnJvbS5saW5lLCBjaDogbmVlZGxlUG9zaXRpb259OworICAgICAgICAgICAgICAgIHZhciBl
bmQgPSB7bGluZTogdG8ubGluZSwgY2g6IHN0YXJ0LmNoICsgcHJvcGVydHkuX19maWx0ZXJSZXN1
bHROZWVkbGVQb3NpdGlvbi5sZW5ndGh9OworCisgICAgICAgICAgICAgICAgdGhpcy5fY29kZU1p
cnJvci5tYXJrVGV4dChzdGFydCwgZW5kLCB7Y2xhc3NOYW1lOiBwcm9wZXJ0eS5fX2ZpbHRlclJl
c3VsdENsYXNzTmFtZX0pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAg
X2NsZWFyVGV4dE1hcmtlcnMobm9uYXRvbWljLCBhbGwpCkBAIC01OTcsNyArNjgyLDE0IEBAIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yCiAgICAgewogICAgICAgICB2YXIgcHJvcGVydGllcyA9IG9u
bHlWaXNpYmxlUHJvcGVydGllcyA/IHRoaXMuX3N0eWxlLnZpc2libGVQcm9wZXJ0aWVzIDogdGhp
cy5fc3R5bGUucHJvcGVydGllczsKIAotICAgICAgICBpZiAoIW9ubHlWaXNpYmxlUHJvcGVydGll
cykgeworICAgICAgICBpZiAodGhpcy5fZmlsdGVyUmVzdWx0UHJvcGVydHlOYW1lcykgeworICAg
ICAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uKHByb3BlcnR5
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICghcHJvcGVydHkuaW1wbGljaXQgfHwgdGhpcy5f
c2hvd3NJbXBsaWNpdFByb3BlcnRpZXMpICYmIHByb3BlcnR5Lm5hbWUgaW4gdGhpcy5fZmlsdGVy
UmVzdWx0UHJvcGVydHlOYW1lczsKKyAgICAgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgICAg
ICBpZiAodGhpcy5fc29ydFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydGllcy5z
b3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7
IH0pOworICAgICAgICB9IGVsc2UgaWYgKCFvbmx5VmlzaWJsZVByb3BlcnRpZXMpIHsKICAgICAg
ICAgICAgIC8vIEZpbHRlciBiYXNlZCBvbiBvcHRpb25zIG9ubHkgd2hlbiBhbGwgcHJvcGVydGll
cyBhcmUgdXNlZC4KICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihm
dW5jdGlvbihwcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIHJldHVybiAhcHJvcGVydHkuaW1w
bGljaXQgfHwgdGhpcy5fc2hvd3NJbXBsaWNpdFByb3BlcnRpZXMgfHwgcHJvcGVydHkuY2Fub25p
Y2FsTmFtZSBpbiB0aGlzLl9hbHdheXNTaG93UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzCmluZGV4IGZjYzNiOGQzN2QzNjYyYzBl
NTNjNjhmYzU1NmUzYzM2OThhYTcxOTcuLmFlMzc5OWYyNjY0MjAzOTUyMTg0NjUwYWU4MmU5NzM2
NDE1YTI1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LmNzcwpAQCAtNDIsNiArNDIsMTAgQEAKICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiB9CiAKKy5z
aWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuaGFzLWZpbHRlci1i
YXIgeworICAgIGJvdHRvbTogMjhweDsKK30KKwogLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5j
c3Mtc3R5bGUgPiAuY29udGVudCA+IC5wc2V1ZG8tY2xhc3NlcyB7CiAgICAgcGFkZGluZzogMTBw
eDsKICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOwpAQCAt
NjgsMyArNzIsNDkgQEAKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsKIH0KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAu
Y29udGVudC5oYXMtZmlsdGVyLWJhciArIC5maWx0ZXItYmFyIHsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgYm90dG9tOiAwOworICAgIHdpZHRoOiAxMDAlOworICAgIGJhY2tncm91bmQt
Y29sb3I6IHdoaXRlOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMTc5LCAxNzksIDE3
OSk7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQ6
bm90KC5oYXMtZmlsdGVyLWJhcikgKyAuZmlsdGVyLWJhciB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0
ZXItaW4tcHJvZ3Jlc3MgLmZpbHRlci1tYXRjaGluZyB7CisgICAgZGlzcGxheTogaW5saW5lOwor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjM1LCAyMTUsIDM4LCAwLjUpOworICAgIGJvcmRl
ci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjM3LCAyMDIsIDcxKTsKKyAgICBvcGFjaXR5OiAxOwor
fQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRl
ci1pbi1wcm9ncmVzcyAuc3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiB7CisgICAgbWFyZ2luLWJv
dHRvbTogMDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29u
dGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24ubGFzdC1p
bi1ncm91cC5maWx0ZXItc2VjdGlvbi1ub24tbWF0Y2hpbmcgKyAuc3R5bGUtZGVjbGFyYXRpb24t
c2VjdGlvbi5maWx0ZXItc2VjdGlvbi1oYXMtbGFiZWwgeworICAgIG1hcmdpbi10b3A6IDA7Cisg
ICAgYm9yZGVyLXRvcDogbm9uZTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mt
c3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNl
Y3Rpb246bm90KC5maWx0ZXItc2VjdGlvbi1oYXMtbGFiZWwpIHsKKyAgICBtYXJnaW4tdG9wOiAw
OworICAgIGJvcmRlci10b3A6IG5vbmU7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJn
YigxNzksIDE3OSwgMTc5KTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgPiAuY29udGVudC5maWx0ZXItaW4tcHJvZ3Jlc3MgLnN0eWxlLWRlY2xhcmF0aW9uLXNlY3Rp
b24gPiAuaGVhZGVyID4gLnNlbGVjdG9yID4gLmZpbHRlci1tYXRjaGluZyB7CisgICAgY29sb3I6
IGJsYWNrOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250
ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuZmlsdGVyLXNlY3Rpb24tbm9uLW1hdGNoaW5nIHsKKyAg
ICBkaXNwbGF5OiBub25lOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9ncmVzcyAuZmlsdGVyLXByb3BlcnR5LW5vbi1tYXRj
aGluZyB7CisgICAgb3BhY2l0eTogMC41OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDIwNTcwYzQ3ZjgxZjE0MDdiODgyZWM5YzgwNTE5MTBi
Y2Q2N2IwZjguLmFjMzY0Yzc4NjczMTlhOTBkOThkNDE5ZjhhZDUzNzRiNTFiYTE1OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTcxLDggKzcx
LDExIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBD
U1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
Ll9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0
eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwotICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1Bh
bmVsID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsOwotICAgICAgICB0
aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NT
dHlsZURldGFpbHNQYW5lbDsKKyAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCA9
IG5ldyBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKKyAgICAgICAg
dGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5NZXRyaWNz
U3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7CisKKyAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZURl
dGFpbHNQYW5lbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5l
bC5FdmVudC5SZWZyZXNoZWQsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7CisgICAgICAg
IHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU3R5bGVEZXRhaWxzUGFuZWwuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9maWx0ZXJEaWRDaGFu
Z2UsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3BhbmVscyA9IFt0aGlzLl9jb21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl9tZXRyaWNz
U3R5bGVEZXRhaWxzUGFuZWxdOwogCkBAIC04NCw2ICs4NywxMSBAQCBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dAogCiAgICAgICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgc2VsZWN0ZWQgcGFuZWwg
dG8gYmUgc2V0IGluIF9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLgogICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uQmFyLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0
aW9uU2V0dGluZy52YWx1ZTsKKworICAgICAgICB0aGlzLl9maWx0ZXJCYXIgPSBuZXcgV2ViSW5z
cGVjdG9yLkZpbHRlckJhcjsKKyAgICAgICAgdGhpcy5fZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgU3R5bGVzIik7CisgICAgICAgIHRoaXMuX2Zp
bHRlckJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQuRmls
dGVyRGlkQ2hhbmdlLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlz
LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyQmFyLmVsZW1lbnQpOwogICAgIH0KIAog
ICAgIC8vIFB1YmxpYwpAQCAtMjExLDYgKzIxOSwxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4
dAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQu
c2Nyb2xsVG9wID0gdGhpcy5faW5pdGlhbFNjcm9sbE9mZnNldDsKIAorICAgICAgICAgICAgdmFy
IGhhc0ZpbHRlciA9IHR5cGVvZiB0aGlzLl9zZWxlY3RlZFBhbmVsLmZpbHRlckRpZENoYW5nZSA9
PT0gImZ1bmN0aW9uIjsKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZSgiaGFzLWZpbHRlci1iYXIiLCBoYXNGaWx0ZXIpOworICAgICAgICAgICAgaWYgKHRo
aXMuX2ZpbHRlckJhcikKKyAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNz
TGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0
ZXJJblByb2dyZXNzQ2xhc3NOYW1lLCBoYXNGaWx0ZXIgJiYgdGhpcy5fZmlsdGVyQmFyLmhhc0Fj
dGl2ZUZpbHRlcnMoKSk7CisKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwuc2hvd24o
KTsKICAgICAgICAgfQogCkBAIC0yMzcsNiArMjUwLDE5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwg
ZXh0CiAgICAgICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IGVuYWJsZWRQc2V1ZG9D
bGFzc2VzLmluY2x1ZGVzKHBzZXVkb0NsYXNzKTsKICAgICAgICAgfQogICAgIH0KKworICAgIF9m
aWx0ZXJEaWRDaGFuZ2UoKQorICAgIHsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFz
c0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuRmls
dGVySW5Qcm9ncmVzc0NsYXNzTmFtZSwgdGhpcy5fZmlsdGVyQmFyLmhhc0FjdGl2ZUZpbHRlcnMo
KSk7CisKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC5maWx0ZXJEaWRDaGFuZ2UodGhpcy5f
ZmlsdGVyQmFyKTsKKyAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lk
ZWJhclBhbmVsLk5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldCA9IDM4OyAvLyBEZWZh
dWx0IGhlaWdodCBvZiB0aGUgZm9yY2VkIHBzZXVkbyBjbGFzc2VzIGNvbnRhaW5lci4gVXBkYXRl
ZCBpbiB3aWR0aERpZENoYW5nZS4KK1dlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFy
UGFuZWwuRmlsdGVySW5Qcm9ncmVzc0NsYXNzTmFtZSA9ICJmaWx0ZXItaW4tcHJvZ3Jlc3MiOwor
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJNYXRjaGluZ1Nl
Y3Rpb25IYXNMYWJlbENsYXNzTmFtZSA9ICJmaWx0ZXItc2VjdGlvbi1oYXMtbGFiZWwiOworV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5GaWx0ZXJNYXRjaFNlY3Rpb25D
bGFzc05hbWUgPSAiZmlsdGVyLW1hdGNoaW5nIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwuTm9GaWx0ZXJNYXRjaEluU2VjdGlvbkNsYXNzTmFtZSA9ICJmaWx0ZXIt
c2VjdGlvbi1ub24tbWF0Y2hpbmciOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5Ob0ZpbHRlck1hdGNoSW5Qcm9wZXJ0eUNsYXNzTmFtZSA9ICJmaWx0ZXItcHJvcGVy
dHktbm9uLW1hdGNoaW5nIjsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFu
ZWwuanMKaW5kZXggYWI2ZGViOWZmYjYyNGYxYTJlMTdmNmMxMzNjNDgyNzQxZGRiNDA4OS4uMjky
NTY0NWJmOTM5YzcyZjA0MDc3NmJhMGYwMTVhYzFlMWNiNWMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0yNyw5ICsyNyw3IEBAIFdlYkluc3BlY3Rv
ci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbCBleHRlbmRzCiB7CiAgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCiAgICAgewotICAgICAg
ICBzdXBlcihXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNz
TmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKLQot
ICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisgICAgICAgIHN1cGVy
KGRlbGVnYXRlLCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNs
YXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsK
IAogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0FsbFNldHRpbmcgPSBuZXcgV2ViSW5z
cGVjdG9yLlNldHRpbmcoImNvbXB1dGVkLXN0eWxlLXNob3ctYWxsIiwgZmFsc2UpOwogCkBAIC0x
NTMsNiArMTUxLDEzIEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0g
Y2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzCiAgICAgewogICAgICAgICB0
aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zdHlsZSA9IHRoaXMubm9kZVN0eWxlcy5jb21wdXRl
ZFN0eWxlOwogICAgICAgICB0aGlzLl9yZWZyZXNoRmxvd0RldGFpbHModGhpcy5ub2RlU3R5bGVz
Lm5vZGUpOworCisgICAgICAgIHN1cGVyLnJlZnJlc2goKTsKKyAgICB9CisKKyAgICBmaWx0ZXJE
aWRDaGFuZ2UoZmlsdGVyQmFyKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRF
ZGl0b3IucmVtb3ZlTm9uTWF0Y2hpbmdQcm9wZXJ0aWVzKGZpbHRlckJhci5maWx0ZXJzLnRleHQp
OwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCmluZGV4IGE5ZjA2MDIwYTE2
YTkyMWYwNmU4ODYyM2FjNGU3OTg3OGY2YjY5NDUuLjc2NTQ4ZjY1ZDIwNDEwODEwZjRiYjFhMTdj
ZmJlYWRiNjZhYzZjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMKQEAgLTQzLDYgKzQzLDggQEAgV2ViSW5zcGVj
dG9yLkZpbHRlckJhciA9IGNsYXNzIEZpbHRlckJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5pbmNyZW1lbnRhbCA9IHRydWU7CiAgICAgICAg
IHRoaXMuX2lucHV0RmllbGQuYWRkRXZlbnRMaXN0ZW5lcigic2VhcmNoIiwgdGhpcy5faGFuZGxl
RmlsdGVyQ2hhbmdlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5faW5wdXRGaWVsZCk7CisKKyAgICAgICAgdGhpcy5fbGFzdEZpbHRl
clZhbHVlID0gdGhpcy5maWx0ZXJzOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtOTksNiAr
MTAxLDIxIEBAIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBjbGFzcyBGaWx0ZXJCYXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiAhIXRoaXMuX2lucHV0RmllbGQu
dmFsdWUgfHwgISF0aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAuc2l6ZTsKICAgICB9CiAKKyAgICBo
YXNGaWx0ZXJDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50RnVuY3Rpb25zID0g
dGhpcy5maWx0ZXJzLmZ1bmN0aW9uczsKKworICAgICAgICBpZiAodGhpcy5fbGFzdEZpbHRlclZh
bHVlLnRleHQgIT09IHRoaXMuX2lucHV0RmllbGQudmFsdWUgfHwgdGhpcy5fbGFzdEZpbHRlclZh
bHVlLmZ1bmN0aW9ucy5sZW5ndGggIT09IGN1cnJlbnRGdW5jdGlvbnMubGVuZ3RoKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJyZW50
RnVuY3Rpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fbGFzdEZpbHRl
clZhbHVlLmZ1bmN0aW9uc1tpXSAhPT0gY3VycmVudEZ1bmN0aW9uc1tpXSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfaGFuZGxlRmlsdGVyQmFyQnV0dG9uQ2xpY2tl
ZChldmVudCkKQEAgLTExOSw3ICsxMzYsMTAgQEAgV2ViSW5zcGVjdG9yLkZpbHRlckJhciA9IGNs
YXNzIEZpbHRlckJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIF9oYW5kbGVG
aWx0ZXJDaGFuZ2VkKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQuRmlsdGVyRGlkQ2hhbmdlKTsKKyAgICAg
ICAgaWYgKHRoaXMuaGFzRmlsdGVyQ2hhbmdlZCgpKSB7CisgICAgICAgICAgICB0aGlzLl9sYXN0
RmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlcnM7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLkV2ZW50LkZpbHRlckRpZENoYW5n
ZSk7CisgICAgICAgIH0KICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRh
aWxzUGFuZWwuanMKaW5kZXggODg5NTQzMThmYjQ4NjNmNDNkOGI5M2ZhOGMxNWEyZDY4Nzg0Mjc3
ZC4uNDIxNTlhY2Q4Y2MzYmY4Y2Y3NzgyY2VkZmVlMzA3ZGFmMDFkMjljMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0
YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMjUsOSArMjUsOSBAQAogCiBXZWJJ
bnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgTWV0cmljc1N0eWxlRGV0
YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsCiB7Ci0gICAg
Y29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQogICAgIHsKLSAgICAgICAg
c3VwZXIoIm1ldHJpY3MiLCAibWV0cmljcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0cmlj
cyIpKTsKKyAgICAgICAgc3VwZXIoZGVsZWdhdGUsICJtZXRyaWNzIiwgIm1ldHJpY3MiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk1ldHJpY3MiKSk7CiAKICAgICAgICAgdGhpcy5fYm94TW9kZWxE
aWFncmFtUm93ID0gbmV3IFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93Owog
CkBAIC00Miw1ICs0Miw3IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwg
PSBjbGFzcyBNZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXCiAgICAgcmVmcmVzaCgp
CiAgICAgewogICAgICAgICB0aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cubm9kZVN0eWxlcyA9IHRo
aXMubm9kZVN0eWxlczsKKworICAgICAgICBzdXBlci5yZWZyZXNoKCk7CiAgICAgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVz
U3R5bGVEZXRhaWxzUGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5jc3MKaW5kZXggZWJkZTY4NTNjMjM5MmUx
ZThmOTdlZjQzNjRlN2FhMGZlYTlhODlkOS4uZThmYWJkMGZkZDFkOGI0MzI3YmNhNmVhODk4MjEz
MzljMGY4MDYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAg
LTUyLDcgKzUyLDMzIEBACiAgICAgb3BhY2l0eTogMC41OwogfQogCi0uc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAucnVsZXMgLm5ldy1ydWxlICsgLnN0eWxlLWRlY2xhcmF0aW9u
LXNlY3Rpb24geworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVu
dC5maWx0ZXItaW4tcHJvZ3Jlc3MgLmxhYmVsIHsKKyAgICBwYWRkaW5nLXRvcDogMTVweDsKK30K
KworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXIt
aW4tcHJvZ3Jlc3MgLmxhYmVsIH4gLmxhYmVsIHsKKyAgICBwYWRkaW5nLXRvcDogMDsKK30KKwor
LnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgPiAuY29udGVudC5maWx0ZXItaW4t
cHJvZ3Jlc3MgLmxhYmVsLmZpbHRlci1tYXRjaGluZy1sYWJlbCB7CisgICAgcGFkZGluZy1ib3R0
b206IDVweDsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkp
OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZp
bHRlci1pbi1wcm9ncmVzcyAubmV3LXJ1bGUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5z
aWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXBy
b2dyZXNzIC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uOm5vdCguZmlsdGVyLXNlY3Rpb24tbm9u
LW1hdGNoaW5nKSB+IC5sYWJlbDpub3QoLmZpbHRlci1zZWN0aW9uLW5vbi1tYXRjaGluZykgewor
ICAgIHBhZGRpbmctdG9wOiAxNXB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSA+IC5jb250ZW50Om5vdCguZmlsdGVyLWluLXByb2dyZXNzKSA+IC5ydWxlcyA+IC5u
ZXctcnVsZSArIC5zdHlsZS1kZWNsYXJhdGlvbi1zZWN0aW9uIHsKKyAgICBib3JkZXItdG9wOiAx
cHggc29saWQgcmdiKDE3OSwgMTc5LCAxNzkpOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRh
aWxzLmNzcy1zdHlsZSA+IC5jb250ZW50Om5vdCguZmlsdGVyLWluLXByb2dyZXNzKSA+IC5ydWxl
cyA+IC5uZXctcnVsZSArIC5sYWJlbCB7CisgICAgcGFkZGluZy10b3A6IDEwcHg7CiAgICAgYm9y
ZGVyLXRvcDogMXB4IHNvbGlkIHJnYigxNzksIDE3OSwgMTc5KTsKIH0KIApAQCAtNzQsMyArMTAw
LDI4IEBACiAuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAucnVsZXMgLm5ldy1y
dWxlOmFjdGl2ZSB7CiAgICAgb3BhY2l0eTogMC43OwogfQorCisuc2lkZWJhciA+IC5wYW5lbC5k
ZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50ID4gLnJ1bGVzOm5vdCguZmlsdGVyLW5vbi1tYXRj
aGluZykgPiAubm8tZmlsdGVyLXJlc3VsdHMgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5z
aWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlID4gLmNvbnRlbnQuZmlsdGVyLWluLXBy
b2dyZXNzID4gLnJ1bGVzLmZpbHRlci1ub24tbWF0Y2hpbmcgPiAubm8tZmlsdGVyLXJlc3VsdHMg
eworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAg
ICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBqdXN0
aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworfQorCisuc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSA+IC5jb250ZW50LmZpbHRlci1pbi1wcm9n
cmVzcyA+IC5ydWxlcy5maWx0ZXItbm9uLW1hdGNoaW5nID4gLm5vLWZpbHRlci1yZXN1bHRzID4g
Lm5vLWZpbHRlci1yZXN1bHRzLW1lc3NhZ2UgeworICAgIGZvbnQtc2l6ZTogMTNweDsKKyAgICBj
b2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTsK
KyAgICB0ZXh0LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjIpIDAgMXB4IDA7CisgICAgYm94LXNo
YWRvdzogaW5zZXQgcmdiYSgwLCAwLCAwLCAwLjIpIDAgMXB4IDAsIHJnYmEoMjU1LCAyNTUsIDI1
NSwgMC40KSAwIDFweCAwOworICAgIGJvcmRlci1yYWRpdXM6IDZweDsKKyAgICBwYWRkaW5nOiA1
cHggMTVweCA2cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwppbmRl
eCBmMzgyMzY2MGEwYjk4NjNiZWIwYzUyNWZhMmY2YzhkMmRhYWQ4MjBmLi5jNWUzMGU1YmE3NTIz
NGRhY2ZlZGUxZDQyMzkwODg3NTY4YTQ2ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRh
aWxzUGFuZWwuanMKQEAgLTI1LDEzICsyNSwyMiBAQAogCiBXZWJJbnNwZWN0b3IuUnVsZXNTdHls
ZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29u
c3RydWN0b3IoZGVsZWdhdGUpCiAgICAgewotICAgICAgICBzdXBlcigicnVsZXMiLCAicnVsZXMi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1bGVzIikpOworICAgICAgICBzdXBlcihkZWxlZ2F0
ZSwgInJ1bGVzIiwgInJ1bGVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdWxlcyIpKTsKIAog
ICAgICAgICB0aGlzLl9zZWN0aW9ucyA9IFtdOwogICAgICAgICB0aGlzLl9wcmV2aW91c0ZvY3Vz
ZWRTZWN0aW9uID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcnVsZU1lZGlhQW5kSW5oZXJ0aWNhbmNl
TGlzdCA9IFtdOwogICAgICAgICB0aGlzLl9wcm9wZXJ0eVRvU2VsZWN0QW5kSGlnaGxpZ2h0ID0g
bnVsbDsKKworICAgICAgICB0aGlzLl9lbXB0eUZpbHRlclJlc3VsdHNFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VtcHR5RmlsdGVyUmVzdWx0
c0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgibm8tZmlsdGVyLXJlc3VsdHMiKTsKKworICAgICAgICB0
aGlzLl9lbXB0eUZpbHRlclJlc3VsdHNNZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2VtcHR5RmlsdGVyUmVzdWx0c01lc3NhZ2UuY2xhc3NMaXN0
LmFkZCgibm8tZmlsdGVyLXJlc3VsdHMtbWVzc2FnZSIpOworICAgICAgICB0aGlzLl9lbXB0eUZp
bHRlclJlc3VsdHNNZXNzYWdlLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJO
byBSZXN1bHRzIEZvdW5kIik7CisgICAgICAgIHRoaXMuX2VtcHR5RmlsdGVyUmVzdWx0c0VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRzTWVzc2FnZSk7CiAgICAgfQog
CiAgICAgLy8gUHVibGljCkBAIC00MCw4ICs0OSwxMCBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHls
ZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJ
bgogICAgIHsKICAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGRvIGEgcmVidWlsZCBvbiBzaWdu
aWZpY2FudCBjaGFuZ2VzLiBPdGhlciBjaGFuZ2VzIGFyZSBoYW5kbGVkCiAgICAgICAgIC8vIGJ5
IHRoZSBzZWN0aW9ucyBhbmQgdGV4dCBlZGl0b3JzIHRoZW1zZWx2ZXMuCi0gICAgICAgIGlmICgh
c2lnbmlmaWNhbnRDaGFuZ2UpCisgICAgICAgIGlmICghc2lnbmlmaWNhbnRDaGFuZ2UpIHsKKyAg
ICAgICAgICAgIHN1cGVyLnJlZnJlc2goKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCiAgICAgICAgIHZhciBuZXdTZWN0aW9ucyA9IFtdOwogICAgICAgICB2YXIgbmV3RE9NRnJh
Z21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CkBAIC0xNzAsMTEgKzE4
MSwxNCBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICB9CiAKICAgICAgICAgdmFy
IGFkZGVkTmV3UnVsZUJ1dHRvbiA9IGZhbHNlOworICAgICAgICB0aGlzLl9ydWxlTWVkaWFBbmRJ
bmhlcnRpY2FuY2VMaXN0ID0gW107CiAKICAgICAgICAgdmFyIG9yZGVyZWRTdHlsZXMgPSB1bmlx
dWVPcmRlcmVkU3R5bGVzKHRoaXMubm9kZVN0eWxlcy5vcmRlcmVkU3R5bGVzKTsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBvcmRlcmVkU3R5bGVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICB2YXIgc3R5bGUgPSBvcmRlcmVkU3R5bGVzW2ldOwogCisgICAgICAgICAgICB2YXIgaGFz
TWVkaWFPckluaGVyaXRlZCA9IFtdOworCiAgICAgICAgICAgICBpZiAoc3R5bGUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5SdWxlICYmICFhZGRlZE5ld1J1
bGVCdXR0b24pCiAgICAgICAgICAgICAgICAgYWRkTmV3UnVsZUJ1dHRvbi5jYWxsKHRoaXMpOwog
CkBAIC0xODksNiArMjAzLDggQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwg
PSBjbGFzcyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAg
ICAgICBpbmhlcml0ZWRMYWJlbC5hcHBlbmRDaGlsZChwcmVmaXhFbGVtZW50KTsKICAgICAgICAg
ICAgICAgICBpbmhlcml0ZWRMYWJlbC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IubGlua2lmeU5v
ZGVSZWZlcmVuY2Uoc3R5bGUubm9kZSkpOwogICAgICAgICAgICAgICAgIG5ld0RPTUZyYWdtZW50
LmFwcGVuZENoaWxkKGluaGVyaXRlZExhYmVsKTsKKworICAgICAgICAgICAgICAgIGhhc01lZGlh
T3JJbmhlcml0ZWQucHVzaChpbmhlcml0ZWRMYWJlbCk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIC8vIE9ubHkgaW5jbHVkZSB0aGUgbWVkaWEgbGlzdCBpZiBpdCBpcyBkaWZmZXJlbnQg
ZnJvbSB0aGUgcHJldmlvdXMgbWVkaWEgbGlzdCBzaG93bi4KQEAgLTIxOCw5ICsyMzQsMTYgQEAg
V2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0
YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgICAgIG5ld0RPTUZyYWdtZW50LmFwcGVuZENoaWxkKG1lZGlhTGFiZWwpOworCisg
ICAgICAgICAgICAgICAgICAgIGhhc01lZGlhT3JJbmhlcml0ZWQucHVzaChtZWRpYUxhYmVsKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmICghaGFz
TWVkaWFPckluaGVyaXRlZC5sZW5ndGggJiYgcHJldmlvdXNTZWN0aW9uICYmICFwcmV2aW91c1Nl
Y3Rpb24ubGFzdEluR3JvdXApCisgICAgICAgICAgICAgICAgaGFzTWVkaWFPckluaGVyaXRlZCA9
IHRoaXMuX3J1bGVNZWRpYUFuZEluaGVydGljYW5jZUxpc3QubGFzdFZhbHVlOworCisgICAgICAg
ICAgICB0aGlzLl9ydWxlTWVkaWFBbmRJbmhlcnRpY2FuY2VMaXN0LnB1c2goaGFzTWVkaWFPcklu
aGVyaXRlZCk7CisKICAgICAgICAgICAgIGFwcGVuZFN0eWxlU2VjdGlvbi5jYWxsKHRoaXMsIHN0
eWxlKTsKICAgICAgICAgfQogCkBAIC0yMzIsMTEgKzI1NSwxNCBAQCBXZWJJbnNwZWN0b3IuUnVs
ZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5k
cyBXZWJJbgogCiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3RE9NRnJhZ21lbnQpOworICAgICAgICB0aGlz
LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRzRWxlbWVudCk7CiAK
ICAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSBuZXdTZWN0aW9uczsKIAogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhp
cy5fc2VjdGlvbnNbaV0udXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgc3VwZXIucmVmcmVzaCgp
OwogICAgIH0KIAogICAgIHNjcm9sbFRvU2VjdGlvbkFuZEhpZ2hsaWdodFByb3BlcnR5KHByb3Bl
cnR5KQpAQCAtMjYyLDYgKzI4OCwzNSBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQ
YW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAg
ICB9CiAgICAgfQogCisgICAgZmlsdGVyRGlkQ2hhbmdlKGZpbHRlckJhcikKKyAgICB7CisgICAg
ICAgIGZvciAodmFyIGxhYmVscyBvZiB0aGlzLl9ydWxlTWVkaWFBbmRJbmhlcnRpY2FuY2VMaXN0
KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgICAgIGxhYmVsc1tpXS5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9GaWx0ZXJNYXRjaEluU2VjdGlvbkNsYXNz
TmFtZSwgZmlsdGVyQmFyLmhhc0FjdGl2ZUZpbHRlcnMoKSk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoaSA9PT0gbGFiZWxzLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgIGxhYmVsc1tp
XS5jbGFzc0xpc3QudG9nZ2xlKCJmaWx0ZXItbWF0Y2hpbmctbGFiZWwiLCBmaWx0ZXJCYXIuaGFz
QWN0aXZlRmlsdGVycygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZh
ciBtYXRjaEZvdW5kID0gIWZpbHRlckJhci5oYXNBY3RpdmVGaWx0ZXJzKCk7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07CisKKyAgICAgICAgICAgIGlmIChz
ZWN0aW9uLmZpbmRNYXRjaGluZ1Byb3BlcnRpZXNBbmRTZWxlY3RvcnMoZmlsdGVyQmFyLmZpbHRl
cnMudGV4dCkgJiYgZmlsdGVyQmFyLmhhc0FjdGl2ZUZpbHRlcnMoKSkgeworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl9ydWxlTWVkaWFBbmRJbmhlcnRpY2FuY2VMaXN0W2ldLmxlbmd0aCkgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsYWJlbCBvZiB0aGlzLl9ydWxlTWVkaWFBbmRJ
bmhlcnRpY2FuY2VMaXN0W2ldKQorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwuY2xhc3NM
aXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRmls
dGVyTWF0Y2hJblNlY3Rpb25DbGFzc05hbWUpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICBzZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLkZpbHRlck1hdGNoaW5nU2VjdGlvbkhhc0xh
YmVsQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtYXRjaEZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QudG9nZ2xlKCJmaWx0ZXItbm9uLW1hdGNoaW5nIiwgIW1hdGNoRm91bmQp
OworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCiAgICAgc2hvd24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURl
dGFpbHNQYW5lbC5qcwppbmRleCBjZWU0ZGFkYTFhZTRmMzE1OTZlNGU2ZjEzZjBkZGFmYjVjODlm
ZWNlLi5jOGQxYWVhODZlYWU5NTNmMjA1NDc2MjgzYjFhMThkZjA3YmJmMzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
dHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMjUsMTAgKzI1LDEyIEBACiAKIFdlYkluc3BlY3Rvci5T
dHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIGNvbnN0cnVjdG9yKGNsYXNzTmFtZSwgaWRlbnRpZmllciwg
bGFiZWwpCisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUsIGNsYXNzTmFtZSwgaWRlbnRpZmllciwg
bGFiZWwpCiAgICAgewogICAgICAgICBzdXBlcigpOwogCisgICAgICAgIHRoaXMuX2RlbGVnYXRl
ID0gZGVsZWdhdGUgfHwgbnVsbDsKKwogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0g
Y2xhc3NOYW1lOwogCkBAIC0xMDksNiArMTExLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWls
c1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2IK
ICAgICByZWZyZXNoKHNpZ25pZmljYW50Q2hhbmdlKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCk7CiAgICAg
fQogCiAgICAgLy8gUHJvdGVjdGVkCkBAIC0xNjAsMyArMTYzLDcgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2IKICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hOb2RlU3R5bGVzKCk7CiAgICAgfQog
fTsKKworV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50ID0geworICAgIFJlZnJl
c2hlZDogInN0eWxlLWRldGFpbHMtcGFuZWwtcmVmcmVzaGVkIgorfTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>