<?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>227411</bug_id>
          
          <creation_ts>2021-06-25 16:21:30 -0700</creation_ts>
          <short_desc>Web Inspector: Styles: Autocomplete should support mid-line completions</short_desc>
          <delta_ts>2021-11-15 22:01:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=227097</see_also>
          <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>
          <dependson>178835</dependson>
    
    <dependson>227097</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>pangle</cc>
    
    <cc>rcaliman</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1772803</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-25 16:21:30 -0700</bug_when>
    <thetext>Completions in the Styles panel can currently only be performed at the end of a value, with no support for the cursor occurring at any other location. We should change this to behave in a more expected manner by performing completions at the caret&apos;s position. Bug 227097 began this work, but is blocked by a number of other issues regarding the reliability of completions being committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772804</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-25 16:21:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/79801095&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773937</commentid>
    <comment_count>2</comment_count>
      <attachid>432644</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-30 16:45:16 -0700</bug_when>
    <thetext>Created attachment 432644
WIP v0.1 - Rebased version of Bug 227097&apos;s Patch v1.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773941</commentid>
    <comment_count>3</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-30 16:51:16 -0700</bug_when>
    <thetext>The biggest issue with this patch currently is that it has made an existing issue more apparent where properties in the Style panel no longer match the actual style or, worse, style text becomes completely corrupted.

Steps to reproduce:
Go to webkit.org and inspect the `A fast, open source web browser engine.` text.
1. Add a `color:` property to the `Style Attribute` section.
2. Set the color value to `aqua`.
3. Click out and back into the the value field (it will highlight the entire value).
4. Press the `backspace`, `a`, `q`, `enter` keys in that order.

Results: Not every time, but often, observe the value being displayed in the sidebar isn’t the value that displays as inline on the node in the DOM tree. Selecting a different element seems to kick everything to the correct value of aqua.

If the property is added between two other properties, these steps will occasionally reproduce the style text corruption bug as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774186</commentid>
    <comment_count>4</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2021-07-01 11:46:13 -0700</bug_when>
    <thetext>(In reply to Patrick Angle from comment #3)
&gt; The biggest issue with this patch currently is that it has made an existing
&gt; issue more apparent where properties in the Style panel no longer match the
&gt; actual style or, worse, style text becomes completely corrupted.
&gt; 
&gt; Steps to reproduce:
&gt; Go to webkit.org and inspect the `A fast, open source web browser engine.`
&gt; text.
&gt; 1. Add a `color:` property to the `Style Attribute` section.
&gt; 2. Set the color value to `aqua`.
&gt; 3. Click out and back into the the value field (it will highlight the entire
&gt; value).
&gt; 4. Press the `backspace`, `a`, `q`, `enter` keys in that order.
&gt; 
&gt; Results: Not every time, but often, observe the value being displayed in the
&gt; sidebar isn’t the value that displays as inline on the node in the DOM tree.
&gt; Selecting a different element seems to kick everything to the correct value
&gt; of aqua.
&gt; 
&gt; If the property is added between two other properties, these steps will
&gt; occasionally reproduce the style text corruption bug as well.

As you and I just checked, this is resolved by Bug 178835 - Web Inspector: Styles: format style declarations after editing. The issue was with incorrect ranges (negative numbers when the value is empty resulted in corrupt state) and my patch in Bug 178835 doesn&apos;t rely on ranges any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802602</commentid>
    <comment_count>5</comment_count>
      <attachid>440784</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-10-11 07:14:23 -0700</bug_when>
    <thetext>Created attachment 440784
Patch v1.0

Bugs 178835 and 227097 landed. Requesting review on behalf of pangle@apple.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802711</commentid>
    <comment_count>6</comment_count>
      <attachid>440784</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-10-11 11:37:44 -0700</bug_when>
    <thetext>Comment on attachment 440784
Patch v1.0

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

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:70
&gt; +        return Array.from(this._element.childNodes)

NIT: While I do appreciate the nice-ness of this code, it is iterating over the children _four_ times.  I doubt that&apos;s an issue since we&apos;re probably not likely to have more than a dozen or so children, but it&apos;s still something to keep in mind.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:202
&gt; +            if (this.suggestionHint.length)

NIT: Do you actually need to check this?  I feel like we can always call `discardCompletion`.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:234
&gt; +            else

Style: no need for `else` if the corresponding `if` has a `return`

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:298
&gt; +                this._preventDiscardingCompletionsOnKeyUp = true;

Does this need to be set back to `false` somewhere?  Usually for things like this we either &quot;consume&quot; the flag in the corresponding event handler (i.e. `_handleKeyUp`) or always reset it at the top of this event handler.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:385
&gt; +        if (this.suggestionHint.length || this._suggestionsView.visible) {

ditto (:202)

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:387
&gt; +            this._delegate?.spreadsheetTextFieldDidChange?.(this);

this should already be called by `discardCompletion`

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:396
&gt; +        this._preventDiscardingCompletionsOnKeyUp = true;

ditto (:298)

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:521
&gt; +    _applyCompletionHint({moveCaretToEndOfCompletion} = {})

In what situation would we _not_ want to `moveCaretToEndOfCompletion` when applying a completion?  I&apos;d think that applying a completion would _always_ move the caret to the end of that completion so that the user can start typing something new instead of editing the middle of the value they just completed.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:526
&gt; +        let newCaretPosition = moveCaretToEndOfCompletion ? this._getCaretPosition() + this.suggestionHint.length : null;

NIT: I&apos;d inline this

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:550
&gt; +        if (!this.suggestionHint.length)
&gt; +            return;

NIT: All callers either check or set this value, so adding an early-return is kinda unnecessary IMO (and the `console.assert` should be enough to ensure future correctness).  Alternatively, you could rename this to `_attachSuggestionHintIfPossible` and remove all the checks at the callsites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802809</commentid>
    <comment_count>7</comment_count>
      <attachid>440837</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-10-11 14:40:34 -0700</bug_when>
    <thetext>Created attachment 440837
Patch v1.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802810</commentid>
    <comment_count>8</comment_count>
      <attachid>440784</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-10-11 14:41:36 -0700</bug_when>
    <thetext>Comment on attachment 440784
Patch v1.0

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:70
&gt;&gt; +        return Array.from(this._element.childNodes)
&gt; 
&gt; NIT: While I do appreciate the nice-ness of this code, it is iterating over the children _four_ times.  I doubt that&apos;s an issue since we&apos;re probably not likely to have more than a dozen or so children, but it&apos;s still something to keep in mind.

Fair point - I&apos;ve refactored to not iterate over the array 4x.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:521
&gt;&gt; +    _applyCompletionHint({moveCaretToEndOfCompletion} = {})
&gt; 
&gt; In what situation would we _not_ want to `moveCaretToEndOfCompletion` when applying a completion?  I&apos;d think that applying a completion would _always_ move the caret to the end of that completion so that the user can start typing something new instead of editing the middle of the value they just completed.

Handling the `blur` event (`_handleBlur`) we don&apos;t want to set the cursor&apos;s position, since that would bring focus right back to the text field as soon as it was `blur`red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813210</commentid>
    <comment_count>9</comment_count>
      <attachid>443703</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-11-09 10:21:36 -0800</bug_when>
    <thetext>Created attachment 443703
Patch v1.1.1 - Remove stray commented-out code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813861</commentid>
    <comment_count>10</comment_count>
      <attachid>443703</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-10 17:37:54 -0800</bug_when>
    <thetext>Comment on attachment 443703
Patch v1.1.1 - Remove stray commented-out code

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

r=me, neat! :)

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:393
&gt; +        if (!this._suggestionsView || this._preventDiscardingCompletionsOnKeyUp || this._keyDownCaretPosition === this._getCaretPosition() || this._keyDownCaretPosition === -1)

I feel like only the things related to `_keyDownCaretPosition` are actually related to this comment.  Perhaps we can make a separate `if (this._preventDiscardingCompletionsOnKeyUp)` and `if (!this._suggestionsView)` so that things are a bit nicer to read?

NIT: I&apos;d put `this._keyDownCaretPosition === -1` earlier so that we only do `this._getCaretPosition()` as a last resort

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:475
&gt; +        // The window&apos;s selection range will only contain the current line&apos;s positioning in multiline text, so a new

NIT: Can we move this comment down a bit so it&apos;s closer to the relevant code?  The early-return doesn&apos;t appear to be related to this.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:548
&gt; +            console.assert(textChildNode instanceof Text, textChildNode);

I don&apos;t think it&apos;s actually possible for this to not be true given that you just set the `textContent` 🤔</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814503</commentid>
    <comment_count>11</comment_count>
      <attachid>444077</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-11-12 10:06:32 -0800</bug_when>
    <thetext>Created attachment 444077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814504</commentid>
    <comment_count>12</comment_count>
      <attachid>444077</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-11-12 10:07:24 -0800</bug_when>
    <thetext>Comment on attachment 444077
Patch

Doing final manual testing on this particularly hot part of the Web Inspector UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815098</commentid>
    <comment_count>13</comment_count>
      <attachid>444267</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-11-15 09:48:50 -0800</bug_when>
    <thetext>Created attachment 444267
Patch v1.2.1 - For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815352</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-15 22:01:45 -0800</bug_when>
    <thetext>Committed r285851 (244277@main): &lt;https://commits.webkit.org/244277@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444267.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432644</attachid>
            <date>2021-06-30 16:45:16 -0700</date>
            <delta_ts>2021-10-11 07:14:19 -0700</delta_ts>
            <desc>WIP v0.1 - Rebased version of Bug 227097&apos;s Patch v1.3</desc>
            <filename>bug-227411-20210630164515.patch</filename>
            <type>text/plain</type>
            <size>22335</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA4
ZTNlOGNiYjQzODI1NmYxYmM5YjA4YjczYjE1ODhiZTAzNjE4M2FkLi44OTMwYmZiZDgwNTJhZWYx
YzZjNTMxMDdmNTU4NjIwZTRlNmQ1M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMS0wNi0zMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGVzOiBBdXRvY29tcGxldGUgc2hvdWxkIHN1
cHBvcnQgbWlkLWxpbmUgY29tcGxldGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEF1dG9jb21wbGV0aW9uIGZvciBDU1MgcHJvcGVydHkgdmFsdWVz
IHdhcyBsYWNraW5nIGluIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gbWlkLWxpbmUgY29tcGxldGlv
bnMsIGluY2x1ZGluZworICAgICAgICB3aXRoaW4gZnVuY3Rpb25zLCBhbmQgYSBsYWNrIG9mIHN1
cHBvcnQgZm9yIG11bHRpLWxpbmUgQ1NTIHByb3BlcnR5IHZhbHVlcy4gVGhpcyByZXNvbHZlcyB0
aG9zZSBwYWluIHBvaW50cyBieQorICAgICAgICBtYWtpbmcgU3ByZWFkc2hlZXRUZXh0RmllbGQg
bXVsdGktbGluZSBhd2FyZSBhbmQgYWxsb3dpbmcgbWlkLWxpbmUgYXV0b2NvbXBsZXRpb24uCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5q
czoKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX25hbWVD
b21wbGV0aW9uRGF0YVByb3ZpZGVyKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9w
ZXJ0eS5wcm90b3R5cGUuX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcik6CisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzOgorICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQucHJvdG90eXBlLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24pOgorICAgICAgICBCZWNhdXNlIHN1
Z2dlc3Rpb25zIGNhbiBvY2N1ciBhbnl3aGVyZSB3aXRoaW4gdGhlIHZhbHVlLCB3ZSBuZWVkIHRv
IGl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9mIHRoZSBub2RlcyBhbmQKKyAgICAgICAgY29sbGVjdCB0
aGUgdGV4dCBvZiBhbnkgb2YgdGhlbSB0aGF0IGFyZSBub3QgdGhlIGNvbXBsZXRpb24gc3VnZ2Vz
dGlvbi4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLnNldCBz
dWdnZXN0aW9uSGludCk6CisgICAgICAgIFdoZW4gcmVtb3ZpbmcgdGhlIHN1Z2dlc3Rpb24gaGlu
dCBlbGVtZW50LCB3ZSBzaG91bGQgcmVjb21iaW5lIHRoZSB0ZXh0IG5vZGVzIHdlIG1heSBoYXZl
IHNwbGl0IHVwb24gaW5zZXJ0aW9uCisgICAgICAgIHRvIHByZXZlbnQgdGhlIHRleHQgY29udGVu
dCBmcm9tIGJlY29taW5nIGVuZGxlc3NseSBmcmFnbWVudGVkIGludG8gbXVsdGlwbGUgdGV4dCBu
b2RlcyB1bm5lY2Vzc2FyaWx5LgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5w
cm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKToKKyAgICAg
ICAgV2Ugc2hvdWxkIG9ubHkgYXR0ZW1wdCB0byByZWF0dGFjaCB0aGUgc3VnZ2VzdGlvbiBoaW50
IGVsZW1lbnQgaWYgd2UgaGF2ZSBhIHN1Z2dlc3Rpb24gaGludCB0byBzaG93LCBvdGhlcndpc2UK
KyAgICAgICAgd2UgY291bGQgZW5kIHVwIHdpdGggYSBwaGFudG9tIGVtcHR5IHN1Z2dlc3Rpb24g
aGludCB0aGF0IGlzbid0IHByb3Blcmx5IHBsYWNlZCBsYXRlci4KKworICAgICAgICAoV0kuU3By
ZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLmNvbXBsZXRpb25TdWdnZXN0aW9uc0NsaWNrZWRD
b21wbGV0aW9uKToKKyAgICAgICAgVXBkYXRlZCB0byB1c2UgZXhpc3RpbmcgY29tcGxldGlvbiBj
b21taXR0aW5nIHBhdGggdG8gcmVkdWNlIGR1cGxpY2F0ZWQgbG9naWMuCisKKyAgICAgICAgKFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlTW91c2VEb3duKToKKyAgICAg
ICAgV2hlbiB0aGUgdXNlciBjbGlja3MgaW5zaWRlIHRoZSB0ZXh0IGZpZWxkIHdoaWxlIHN1Z2dl
c3Rpb25zIGFyZSB2aXNpYmxlIHRyZWF0IHRoYXQgYXMgaW50ZW50IHRvIHN0b3AKKyAgICAgICAg
YXV0b2NvbXBsZXRpb24gc2ltaWxhciB0byB0aGUgZXNjYXBlIGtleSwgc2luY2UgdGhlIG5ldyBj
dXJzb3IgbG9jYXRpb24gY291bGQgYmUgYW55d2hlcmUgaW4gdGhlIHRleHQgZmllbGQuCisgICAg
ICAgIFRoaXMgYmVoYXZpb3IgYWxzbyBtYXRjaGVzIG90aGVyIGNvZGUgZWRpdG9ycyBsaWtlIFhj
b2RlLCB3aGVyZSBjbGlja2luZyBvdXRzaWRlIGEgY29tcGxldGlvbiBwb3B1cCB3aWxsIGRpc21p
c3MKKyAgICAgICAgdGhlIGNvbXBsZXRpb25zIGxpc3QuCisKKyAgICAgICAgKFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgIEtlZXAgdHJh
Y2sgb2Ygd2hlcmUgdGhlIGNhcmV0IHdhcyBhcyB3ZWxsIGFzIGlmIHRoZSB0aGUga2V5IGV2ZW50
IHdhcyBoYW5kbGVkIGJ5IHRoZSBzdWdnZXN0aW9uIHZpZXcgYXQgdGhlIHRpbWUKKyAgICAgICAg
YSBrZXkgaXMgcHJlc3NlZCBzbyB0aGF0IHdlIGNhbiBsYXRlciBjb21wYXJlIHRoZSBwb3NpdGlv
biB0byB0aGF0IG9mIHdoZW4gdGhlIGtleSBpcyByZWxlYXNlZCB0byBkZXRlcm1pbmUgaWYKKyAg
ICAgICAgY29tcGxldGlvbnMgc2hvdWxkIGJlIGRpc2NhcmRlZC4KKworICAgICAgICAoV0kuU3By
ZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duRm9yU3VnZ2VzdGlvblZp
ZXcpOgorICAgICAgICBXZSBjYW4gbm8gbG9uZ2VyIGFzc3VtZSB0aGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbidzIG9mZnNldCB3aWxsIG1hdGNoIHRoZSB2YWx1ZSdzIGxlbmd0aCwgYXMgdGhlIG9m
ZnNldCBjb3VsZAorICAgICAgICBiZSBvbiBhbnkgbGluZSwgb3IgdGhlIHN1Z2dlc3Rpb24gY291
bGQgYmUgaW4gbWlkZGxlIG9mIGEgbGluZS4gQmVjYXVzZSBhIHN1Z2dlc3Rpb25IaW50IG9ubHkg
Y29udGFpbnMgdGV4dCB3aGVuCisgICAgICAgIHdlIGFyZSBpbiBtaWRkbGUgb2YgYXV0b2NvbXBs
ZXRpb24sIGl0IGFsb25lIGlzIGFuIGluZGljYXRvciB0aGF0IHByZXNzaW5nIHRoZSByaWdodCBh
cnJvdyBrZXkgc2hvdWxkIGNvbW1pdCB0aGUKKyAgICAgICAgY29tcGxldGlvbi4gYGRvY3VtZW50
LmV4ZWNDb21tYW5kYCBpcyBkZXByZWNhdGVkLCBzbyBpbnN0ZWFkIHdlIG5vdyB1c2UgdGhlIGV4
aXN0aW5nIGNvbXBsZXRpb24gY29tbWl0dGluZyBwYXRoCisgICAgICAgIHRvIHJlZHVjZSBkdXBs
aWNhdGVkIGxvZ2ljIGhlcmUuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBsZWZ0IGFycm93IGtl
eSBpcyBzdGlsbCBleHBsaWNpdGx5IGhhbmRsZWQgZm9yIGRpc21pc3NpbmcgYXV0b2NvbXBsZXRp
b24sIGFzIHRoZSBuZXcgbWVjaGFuaXNtIGZvcgorICAgICAgICBkaXNtaXNzaW5nIGF1dG9jb21w
bGV0aW9uIHdvbid0IHRyaWdnZXIgdW5sZXNzIHRoZSBjYXJldCBoYXMgbW92ZWQsIGFuZCB0aGUg
Y2FyZXQgd2lsbCBub3QgbW92ZSBpZiB5b3UgcHJlc3MgdGhlCisgICAgICAgIGxlZnQgYXJyb3cg
a2V5IGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dCBmaWVsZC4KKworICAgICAgICAoV0kuU3ByZWFk
c2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlVcCk6CisgICAgICAgIFdoZW4gYSBr
ZXkgaXMgcmVsZWFzZWQsIHdlIHNob3VsZCBjaGVjayB0byBzZWUgaWYgdGhlIGNhcmV0IGhhcyBt
b3ZlZCBhcyBhIHJlc3VsdCBvZiB0aGUga2V5c3Ryb2tlIHRoYXQgd2UgaGF2ZQorICAgICAgICBu
b3QgYWxyZWFkeSBleHBsaWNpdGx5IGhhbmRsZWQuIElmIGl0IGhhcyBtb3ZlZCBhbmQgd2FzIG5v
dCBoYW5kbGVkLCB3ZSBkaXNtaXNzIHRoZSBhdXRvY29tcGxldGlvbiBzdWdnZXN0aW9ucy4KKwor
ICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVJbnB1dCk6
CisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fdXBkYXRlQ29t
cGxldGlvbnMpOgorICAgICAgICBQcm92aWRlIHRoZSBjdXJyZW50IGNhcmV0IHBvc2l0aW9uIHRv
IHRoZSBjb21wbGV0aW9uIHByb3ZpZGVkLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRG
aWVsZC5wcm90b3R5cGUuX3Nob3dTdWdnZXN0aW9uc1ZpZXcpOgorICAgICAgICBJbiBvcmRlciB0
byBjb3JyZWN0bHkgYWxpZ24gdGhlIGNvbXBsZXRpb24gbGlzdCB3aXRoIHRoZSBjdXJyZW50IHRl
eHQgY29udGVudCwgaXQgbXVzdCBiZSBvZmZzZXQgZnJvbSB0aGUgY2FyZXQKKyAgICAgICAgcG9z
aXRpb24gZXhjbHVkaW5nIHRoZSBjdXJyZW50IHByZWZpeC4KKworICAgICAgICAoV0kuU3ByZWFk
c2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9nZXRDYXJldFBvc2l0aW9uKToKKyAgICAgICAgQWRk
ZWQgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgY2FyZXQgaW4gdGhlIGNvbXBsZXRlIHRleHQgdmFs
dWUsIGFjY291bnRpbmcgZm9yIG11bHRpLWxpbmUgdmFsdWVzIGFuZCBtaWQtbGluZQorICAgICAg
ICBzdWdnZXN0aW9ucy4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90
eXBlLl9nZXRDYXJldFJlY3QpOgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5w
cm90b3R5cGUuX3JhbmdlQXRDYXJldFBvc2l0aW9uKToKKyAgICAgICAgRmluZCB0aGUgcmFuZ2Ug
Zm9yIGEgY2FyZXQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBUaGlzIGNvbXBsaW1lbnRzIGBfZ2V0
Q2FyZXRQb3NpdGlvbmAsIGFuZCBhbGxvd3MgdXMgdG8gY291bnQKKyAgICAgICAgYmFjayBzb21l
IG51bWJlciBvZiBjaGFyYWN0ZXJzIGFuZCBjcmVhdGUgYSByYW5nZSBvZiB3aGljaCB3ZSBsYXRl
ciBnZXQgdGhlIGNsaWVudCByZWN0YW5nbGUuCisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4
dEZpZWxkLnByb3RvdHlwZS5fYXBwbHlDb21wbGV0aW9uSGludCk6CisgICAgICAgIEFkZCBvcHRp
b25hbCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgY2FyZXQgcG9zaXRpb24gdG8gYmUgYXQgdGhl
IGVuZCBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgdGV4dC4KKworICAgICAgICAoV0kuU3ByZWFkc2hl
ZXRUZXh0RmllbGQucHJvdG90eXBlLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVuKToKKyAg
ICAgICAgQWRkZWQgdG8gaGFuZGxlIGNvbWJpbmluZyB0aGUgZnJhZ21lbnRlZCB0ZXh0IG5vZGVz
IChhbmQgcG9zc2libHkgYSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVudCkgYmFjayBpbnRvIGEgc2lu
Z2xlCisgICAgICAgIHRleHQgbm9kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgY3VycmVudCBjdXJz
b3IgcG9zaXRpb24gb3Igb3B0aW9uYWxseSBtb3ZpbmcgdGhlIGN1cnNvciB0byBhIG5ldyBsb2Nh
dGlvbiAoZS5nLgorICAgICAgICB0aGUgZW5kIG9mIGEgY29tcGxldGlvbikuCisKKyAgICAgICAg
KFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fcmVBdHRhY2hTdWdnZXN0aW9uSGlu
dCk6CisgICAgICAgIE5vdyB0aGF0IGNvbXBsZXRpb25zIGFyZSBub3QgZ3VhcmFudGVlZCB0byBi
ZSBhdCB0aGUgZW5kIG9mIHRoZSB2YWx1ZSwgd2UgbWF5IG5lZWQgdG8gc3BsaXQgdGhlIHRleHQg
bm9kZSB0bworICAgICAgICBpbnNlcnQgdGhlIHN1Z2dlc3Rpb24gaGludCBub2RlLgorCiAyMDIx
LTA2LTMwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTdHlsZXM6IEF1dG9jb21wbGV0ZSBzaG91bGQgc3VwcG9ydCBmdW5jdGlvbiBj
b21wbGV0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCmluZGV4
IGQ5OTcyMzM0YzQ0Y2E0YmFmZDI2MDA5NjE4ZDlhMzVkMWEyNTYwZTAuLjAwMGVkYjhjZTU3MmY2
ZWNmMTE0ZjRlMmU1OTMwMmMyODEzNzRjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0
eWxlUHJvcGVydHkuanMKQEAgLTg4Niw5ICs4ODYsOSBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgfQogICAgIH0KIAotICAgIF9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0
LCB7YWxsb3dFbXB0eVByZWZpeH0gPSB7fSkKKyAgICBfbmFtZUNvbXBsZXRpb25EYXRhUHJvdmlk
ZXIodGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXh9ID0ge30pCiAgICAgewot
ICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0
eU5hbWUodGV4dCwge2FsbG93RW1wdHlQcmVmaXh9KTsKKyAgICAgICAgcmV0dXJuIFdJLkNTU0tl
eXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKHRleHQsIHtjYXJldFBvc2l0
aW9uLCBhbGxvd0VtcHR5UHJlZml4fSk7CiAgICAgfQogCiAgICAgX2hhbmRsZVZhbHVlQmVmb3Jl
SW5wdXQoZXZlbnQpCkBAIC05MTAsMTEgKzkxMCwxMCBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5zcHJlYWRzaGVldFRleHRGaWVsZERpZENvbW1pdCh0aGlzLl92YWx1ZVRl
eHRGaWVsZCwge2RpcmVjdGlvbjogImZvcndhcmQifSk7CiAgICAgfQogCi0gICAgX3ZhbHVlQ29t
cGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7YWxsb3dFbXB0eVByZWZpeH0gPSB7fSkKKyAgICBf
dmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0Vt
cHR5UHJlZml4fSA9IHt9KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2Iv
MjI3MDk4PiBTdHlsZXMgc2lkZWJhciBwYW5lbCBzaG91bGQgYXV0b2NvbXBsZXRlIGB2YXIoKWAg
dmFsdWVzLgotICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMjc0MTE+IFN0eWxlcyBz
aWRlYmFyIHBhbmVsIHNob3VsZCBzdXBwb3J0IG1pZGxpbmUgYW5kIG11bHRpbGluZSBjb21wbGV0
aW9ucy4KLSAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFs
UHJvcGVydHlWYWx1ZSh0ZXh0LCB0aGlzLl9uYW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCkp
OworICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9w
ZXJ0eVZhbHVlKHRleHQsIHRoaXMuX25hbWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKSwge2Nh
cmV0UG9zaXRpb259KTsKICAgICB9CiAKICAgICBfc2V0dXBKdW1wVG9TeW1ib2woZWxlbWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nw
cmVhZHNoZWV0VGV4dEZpZWxkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMKaW5kZXggMTM0ZDY0ZTlmYTc3Zjk5MTlh
MWY1NTNhMjA5ZjBjNWM5MDIxODc4NS4uOGI2N2VmZmEzZDQ5MTE0ZTUxNTQ2ZDE0MjcyMzk3ZjQz
NTcwN2U5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDkgKzQ0LDEyIEBAIFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAg
ICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNs
aWNrLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImJsdXIiLCB0aGlzLl9oYW5kbGVCbHVyLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlEb3duLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwg
dGhpcy5faGFuZGxlS2V5VXAuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiaW5wdXQiLCB0aGlzLl9oYW5kbGVJbnB1dC5iaW5kKHRoaXMpKTsKIAog
ICAgICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3ByZXZlbnREaXNj
YXJkaW5nQ29tcGxldGlvbnNPbktleVVwID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2tleURvd25D
YXJldFBvc2l0aW9uID0gLTE7CiAgICAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyA9ICIi
OwogICAgICAgICB0aGlzLl9jb21wbGV0aW9uUHJlZml4ID0gIiI7CiAgICAgICAgIHRoaXMuX2Nv
bnRyb2xTcGFjZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdJLktleWJvYXJkU2hvcnRjdXQuS2V5
LlNwYWNlKTsKQEAgLTYzLDggKzY2LDExIEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xh
c3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKQog
ICAgIHsKLSAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudDsKLSAg
ICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIHZhbHVlLmxlbmd0aCAtIHRoaXMuc3VnZ2VzdGlv
bkhpbnQubGVuZ3RoKTsKKyAgICAgICAgLy8gVGhlIHN1Z2dlc3Rpb24gY291bGQgYXBwZWFyIGFu
eXdoZXJlIHdpdGhpbiB0aGUgZWxlbWVudCwgYW5kIHRoZSB0ZXh0IG9mIHRoZSBlbGVtZW50IGNh
biBzcGFuIG11bHRpcGxlIG5vZGVzLgorICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9l
bGVtZW50LmNoaWxkTm9kZXMpCisgICAgICAgICAgICAuZmlsdGVyKChub2RlKSA9PiBub2RlICE9
PSB0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQpCisgICAgICAgICAgICAubWFwKChub2RlKSA9
PiBub2RlLnRleHRDb250ZW50KQorICAgICAgICAgICAgLmpvaW4oIiIpOwogICAgIH0KIAogICAg
IGdldCBzdWdnZXN0aW9uSGludCgpCkBAIC03NCwxMiArODAsMTkgQEAgV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgc2V0IHN1Z2dlc3Rp
b25IaW50KHZhbHVlKQogICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxl
bWVudC50ZXh0Q29udGVudCA9PT0gdmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAg
ICAgdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50LnRleHRDb250ZW50ID0gdmFsdWU7CiAKICAg
ICAgICAgaWYgKHZhbHVlKQogICAgICAgICAgICAgdGhpcy5fcmVBdHRhY2hTdWdnZXN0aW9uSGlu
dCgpOwotICAgICAgICBlbHNlCisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdGhpcy5fc3Vn
Z2VzdGlvbkhpbnRFbGVtZW50LnJlbW92ZSgpOworCisgICAgICAgICAgICAvLyBSZW1vdmluZyB0
aGUgc3VnZ2VzdGlvbiBoaW50IGVsZW1lbnQgbWF5IGxlYXZlIHRoZSBjb250ZW50cyBvZiBgX2Vs
ZW1lbnRgIGZyYWdtZW50ZWQgaW50byBtdWx0aXBsZSB0ZXh0IG5vZGVzLgorICAgICAgICAgICAg
dGhpcy5fY29tYmluZUVkaXRvckVsZW1lbnRDaGlsZHJlbigpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgc3RhcnRFZGl0aW5nKCkKQEAgLTE0Miw3ICsxNTUsOCBAQCBXSS5TcHJlYWRzaGVldFRl
eHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgewogICAgICAgICB0aGlz
LnN1Z2dlc3Rpb25IaW50ID0gc2VsZWN0ZWRUZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25QcmVm
aXgubGVuZ3RoKTsKIAotICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCk7Cisg
ICAgICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMu
X3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKTsKIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUg
JiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0
RmllbGREaWRDaGFuZ2UodGhpcyk7CkBAIC0xNTAsMjYgKzE2NCw5IEBAIFdJLlNwcmVhZHNoZWV0
VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIGNvbXBsZXRpb25T
dWdnZXN0aW9uc0NsaWNrZWRDb21wbGV0aW9uKHN1Z2dlc3Rpb25zVmlldywgc2VsZWN0ZWRUZXh0
KQogICAgIHsKLSAgICAgICAgLy8gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOgotICAg
ICAgICAvLwotICAgICAgICAvLyAgIGJvcmRlcjogMXB4IHNvbGlkIHJvfAotICAgICAgICAvLyAg
ICAgICAgICAgICAgICAgICAgIHJvc3licm93bgotICAgICAgICAvLyAgICAgICAgICAgICAgICAg
ICAgIHJveWFsYmx1ZQotICAgICAgICAvLwotICAgICAgICAvLyBDbGlja2luZyBvbiAicm9zeWJy
b3duIiBzaG91bGQgcmVwbGFjZSAicm8iIHdpdGggInJvc3licm93biIuCi0gICAgICAgIC8vCi0g
ICAgICAgIC8vICAgICAgICAgICBwcmVmaXg6ICAxcHggc29saWQgcm8KLSAgICAgICAgLy8gY29t
cGxldGlvblByZWZpeDogICAgICAgICAgICBybwotICAgICAgICAvLyAgICAgICAgbmV3UHJlZml4
OiAgMXB4IHNvbGlkCi0gICAgICAgIC8vICAgICBzZWxlY3RlZFRleHQ6ICAgICAgICAgICAgcm9z
eWJyb3duCi0gICAgICAgIGxldCBwcmVmaXggPSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24o
KTsKLSAgICAgICAgbGV0IG5ld1ByZWZpeCA9IHByZWZpeC5zbGljZSgwLCAtdGhpcy5fY29tcGxl
dGlvblByZWZpeC5sZW5ndGgpOwotCi0gICAgICAgIHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQg
PSBuZXdQcmVmaXggKyBzZWxlY3RlZFRleHQ7Ci0KLSAgICAgICAgLy8gUGxhY2UgdGV4dCBjYXJl
dCBhdCB0aGUgZW5kLgotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4
dGVudCh0aGlzLl9lbGVtZW50LCBzZWxlY3RlZFRleHQubGVuZ3RoLCB0aGlzLl9lbGVtZW50LCBz
ZWxlY3RlZFRleHQubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNlbGVj
dGVkVGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CiAKKyAgICAgICAg
dGhpcy5fYXBwbHlDb21wbGV0aW9uSGludCh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246IHRy
dWV9KTsKICAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogCiAgICAgICAgIGlmICh0
aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0Rmll
bGREaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCkBAIC0yMDAsOCArMTk3LDExIEBAIFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIF9oYW5k
bGVNb3VzZURvd24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZWRpdGluZykKKyAg
ICAgICAgaWYgKHRoaXMuX2VkaXRpbmcpIHsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOworICAgICAgICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoKQorICAg
ICAgICAgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIF9oYW5kbGVCbHVyKGV2ZW50KQpAQCAtMjI4LDggKzIyOCwxMSBAQCBXSS5TcHJlYWRz
aGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgaWYg
KHRoaXMuX3N1Z2dlc3Rpb25zVmlldykgewogICAgICAgICAgICAgbGV0IGNvbnN1bWVkID0gdGhp
cy5faGFuZGxlS2V5RG93bkZvclN1Z2dlc3Rpb25WaWV3KGV2ZW50KTsKKyAgICAgICAgICAgIHRo
aXMuX3ByZXZlbnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktleVVwID0gY29uc3VtZWQ7CiAgICAg
ICAgICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX2tleURvd25DYXJldFBvc2l0aW9uID0gdGhp
cy5fZ2V0Q2FyZXRQb3NpdGlvbigpOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IGlzRW50ZXJL
ZXkgPSBldmVudC5rZXkgPT09ICJFbnRlciI7CkBAIC0yOTIsNiArMjk1LDcgQEAgV0kuU3ByZWFk
c2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICAgICAg
aWYgKHRoaXMuX3N1Z2dlc3Rpb25zVmlldy52aXNpYmxlKQogICAgICAgICAgICAgICAgIHRoaXMu
X3N1Z2dlc3Rpb25zVmlldy5oaWRlKCk7CiAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25LZXlVcCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgY29uc3QgZm9yY2VDb21wbGV0aW9ucyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlQ29tcGxldGlvbnMoZm9yY2VDb21wbGV0aW9ucyk7CiAgICAgICAg
ICAgICB9CkBAIC0zMjcsMTIgKzMzMSwxMiBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNs
YXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChldmVudC5rZXkgPT09ICJBcnJvd1JpZ2h0IiAmJiB0aGlzLnN1
Z2dlc3Rpb25IaW50KSB7CisgICAgICAgIGlmIChldmVudC5rZXkgPT09ICJBcnJvd1JpZ2h0IiAm
JiB0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCkgewogICAgICAgICAgICAgbGV0IHNlbGVjdGlv
biA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKIAotICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5p
c0NvbGxhcHNlZCAmJiAoc2VsZWN0aW9uLmZvY3VzT2Zmc2V0ID09PSB0aGlzLnZhbHVlV2l0aG91
dFN1Z2dlc3Rpb24oKS5sZW5ndGggfHwgc2VsZWN0aW9uLmZvY3VzTm9kZSA9PT0gdGhpcy5fc3Vn
Z2VzdGlvbkhpbnRFbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NvbGxh
cHNlZCkgewogICAgICAgICAgICAgICAgIGV2ZW50LnN0b3AoKTsKLSAgICAgICAgICAgICAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsIGZhbHNlLCB0aGlzLnN1Z2dlc3Rpb25I
aW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KHttb3ZlQ2Fy
ZXRUb0VuZE9mQ29tcGxldGlvbjogdHJ1ZX0pOwogCiAgICAgICAgICAgICAgICAgLy8gV2hlbiBj
b21wbGV0aW5nICJiYWNrZ3JvdW5kIiwgZG9uJ3QgaGlkZSB0aGUgY29tcGxldGlvbiBwb3BvdmVy
LgogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHNob3dpbmcgdGhlIHBvcG92ZXIgd2l0aCBw
cm9wZXJ0aWVzIHN1Y2ggYXMgImJhY2tncm91bmQtY29sb3IiIGFuZCAiYmFja2dyb3VuZC1pbWFn
ZSIuCkBAIC0zNjIsMTYgKzM2NiwzNCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNz
IFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAm
JiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09
ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRU
ZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBfaGFuZGxlS2V5VXAo
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lZGl0aW5nKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIC8vIFNvbWUga2V5IGV2ZW50cywgbGlrZSB0aGUgYXJyb3cga2V5cyBhbmQg
Q3RybCtBIChtb3ZlIHRvIGxpbmUgc3RhcnQpLCB3aWxsIG1vdmUgdGhlIGNhcmV0IHdpdGhvdXQg
Y29tbWl0dGluZworICAgICAgICAvLyBhbnkgaW5wdXQgdG8gdGhlIHRleHQgZmllbGQuIEluIHRo
b3NlIHNpdHVhdGlvbnMgd2Ugc2hvdWxkIGRpc2NhcmQgY29tcGxldGlvbiBpZiB0aGV5IGFyZSBh
dmFpbGFibGUuCisgICAgICAgIGlmICghdGhpcy5fc3VnZ2VzdGlvbnNWaWV3IHx8IHRoaXMuX3By
ZXZlbnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktleVVwIHx8IHRoaXMuX2tleURvd25DYXJldFBv
c2l0aW9uID09PSB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoIHx8IHRoaXMuX3N1Z2dl
c3Rpb25zVmlldy52aXNpYmxlKSB7CisgICAgICAgICAgICB0aGlzLmRpc2NhcmRDb21wbGV0aW9u
KCk7CisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZT8uc3ByZWFkc2hlZXRUZXh0RmllbGREaWRD
aGFuZ2U/Lih0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIF9oYW5kbGVJbnB1dChldmVu
dCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVy
bjsKIAorICAgICAgICB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25LZXlVcCA9
IHRydWU7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbXBsZXRpb25zKCk7CiAKICAgICAgICAgaWYg
KHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRG
aWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKQEAgLTM4NCw3ICs0MDYsNyBAQCBXSS5TcHJl
YWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgbGV0IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24gPSB0aGlzLnZh
bHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IHtjb21wbGV0aW9ucywgcHJlZml4
fSA9IHRoaXMuX2NvbXBsZXRpb25Qcm92aWRlcih2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uLCB7YWxs
b3dFbXB0eVByZWZpeDogZm9yY2VDb21wbGV0aW9uc30pOworICAgICAgICBsZXQge2NvbXBsZXRp
b25zLCBwcmVmaXh9ID0gdGhpcy5fY29tcGxldGlvblByb3ZpZGVyKHZhbHVlV2l0aG91dFN1Z2dl
c3Rpb24sIHthbGxvd0VtcHR5UHJlZml4OiBmb3JjZUNvbXBsZXRpb25zLCBjYXJldFBvc2l0aW9u
OiB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCl9KTsKICAgICAgICAgdGhpcy5fY29tcGxldGlvblBy
ZWZpeCA9IHByZWZpeDsKIAogICAgICAgICBpZiAoIWNvbXBsZXRpb25zLmxlbmd0aCkgewpAQCAt
NDIyLDkgKzQ0NCwxNCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAKICAgICBfc2hvd1N1Z2dlc3Rpb25zVmlldygpCiAgICAgewotICAgICAg
ICBsZXQgcHJlZml4ID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxl
dCBzdGFydE9mZnNldCA9IHByZWZpeC5sZW5ndGggLSB0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxl
bmd0aDsKLSAgICAgICAgbGV0IGNhcmV0UmVjdCA9IHRoaXMuX2dldENhcmV0UmVjdChzdGFydE9m
ZnNldCk7CisgICAgICAgIC8vIEFkanVzdCB0aGUgdXNlZCBjYXJldCBwb3NpdGlvbiB0byBjb3Jy
ZWN0bHkgYWxpZ24gYXV0b2NvbXBsZXRpb24gcmVzdWx0cyB3aXRoIGV4aXN0aW5nIHRleHQuIFRo
ZSBzdWdnZXN0aW9ucworICAgICAgICAvLyBzaG91bGQgYXBwZWFyIGFsaWduZWQgYXMgYmVsb3c6
CisgICAgICAgIC8vIAorICAgICAgICAvLyBib3JkZXI6IDFweCBzb2xpZCByb3wKKyAgICAgICAg
Ly8gICAgICAgICAgICAgICAgICAgcm9zeWJyb3duCisgICAgICAgIC8vICAgICAgICAgICAgICAg
ICAgIHJveWFsYmx1ZQorICAgICAgICBsZXQgYWRqdXN0ZWRDYXJldFBvc2l0aW9uID0gdGhpcy5f
Z2V0Q2FyZXRQb3NpdGlvbigpIC0gdGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGg7CisgICAg
ICAgIGxldCBjYXJldFJlY3QgPSB0aGlzLl9nZXRDYXJldFJlY3QoYWRqdXN0ZWRDYXJldFBvc2l0
aW9uKTsKIAogICAgICAgICAvLyBIaWRlIGNvbXBsZXRpb24gcG9wb3ZlciB3aGVuIHRoZSBhbmNo
b3IgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS4KICAgICAgICAgaWYgKCFjYXJldFJl
Y3QpCkBAIC00MzUsNDcgKzQ2MiwxMDggQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFz
cyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICB9CiAgICAgfQogCi0gICAgX2dldENhcmV0
UmVjdChzdGFydE9mZnNldCkKKyAgICBfZ2V0Q2FyZXRQb3NpdGlvbigpCiAgICAgeworICAgICAg
ICAvLyBUaGUgd2luZG93J3Mgc2VsZWN0aW9uIHJhbmdlIHdpbGwgb25seSBjb250YWluIHRoZSBj
dXJyZW50IGxpbmUncyBwb3NpdGlvbmluZyBpbiBtdWx0aWxpbmUgdGV4dCwgc28gYSBuZXcKKyAg
ICAgICAgLy8gcmFuZ2UgbXVzdCBiZSBjcmVhdGVkIGJldHdlZW4gdGhlIGVuZCBvZiB0aGUgY3Vy
cmVudCByYW5nZSBhbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3QgbGluZSBvZiB0ZXh0IGlu
CisgICAgICAgIC8vIG9yZGVyIHRvIGdldCBhbiBhY2N1cmF0ZSBjaGFyYWN0ZXIgcG9zaXRpb24g
Zm9yIHRoZSBjYXJldC4KICAgICAgICAgbGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKKyAgICAgICAgaWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgICAgIHJl
dHVybiAwOworCisgICAgICAgIGxldCBsaW5lUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgw
KTsKKyAgICAgICAgbGV0IG11bHRpbGluZVJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICAgICAgbXVsdGlsaW5lUmFuZ2Uuc2V0U3RhcnQodGhpcy5fZWxlbWVudCwgMCk7CisgICAg
ICAgIG11bHRpbGluZVJhbmdlLnNldEVuZChsaW5lUmFuZ2UuZW5kQ29udGFpbmVyLCBsaW5lUmFu
Z2UuZW5kT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG11bHRpbGluZVJhbmdlLnRvU3RyaW5nKCku
bGVuZ3RoOworICAgIH0KIAorICAgIF9nZXRDYXJldFJlY3QoY2FyZXRQb3NpdGlvbikKKyAgICB7
CiAgICAgICAgIGxldCBpc0hpZGRlbiA9IChjbGllbnRSZWN0KSA9PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gY2xpZW50UmVjdC54ID09PSAwICYmIGNsaWVudFJlY3QueSA9PT0gMDsKICAgICAgICAg
fTsKIAotICAgICAgICBpZiAoc2VsZWN0aW9uLnJhbmdlQ291bnQpIHsKLSAgICAgICAgICAgIGxl
dCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLmNsb25lUmFuZ2UoKTsKLSAgICAgICAg
ICAgIHJhbmdlLnNldFN0YXJ0KHJhbmdlLnN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCk7Ci0g
ICAgICAgICAgICBsZXQgY2xpZW50UmVjdCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworICAgICAgICBsZXQgY2FyZXRSYW5nZSA9IHRoaXMuX3JhbmdlQXRDYXJldFBvc2l0aW9uKGNh
cmV0UG9zaXRpb24pOworICAgICAgICBsZXQgY2FyZXRDbGllbnRSZWN0ID0gY2FyZXRSYW5nZS5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgaWYgKCFpc0hpZGRlbihjYXJldENsaWVu
dFJlY3QpKQorICAgICAgICAgICAgcmV0dXJuIFdJLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGNh
cmV0Q2xpZW50UmVjdCk7CiAKLSAgICAgICAgICAgIGlmICghaXNIaWRkZW4oY2xpZW50UmVjdCkp
IHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcHBlbnMgYWZ0ZXIgZGVsZXRpbmcgdmFsdWUu
IEhvd2V2ZXIsIHdoZW4gZm9jdXNpbmcKLSAgICAgICAgICAgICAgICAvLyBvbiBhbiBlbXB0eSB2
YWx1ZSBjbGllbnRSZWN0IGlzIHZpc2libGUuCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdJLlJl
Y3QucmVjdEZyb21DbGllbnRSZWN0KGNsaWVudFJlY3QpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgbGV0IGNsaWVudFJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOwotICAgICAgICBpZiAoaXNIaWRkZW4oY2xpZW50UmVjdCkpCisgICAgICAg
IGxldCBlbGVtZW50Q2xpZW50UmVjdCA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7CisgICAgICAgIGlmIChpc0hpZGRlbihlbGVtZW50Q2xpZW50UmVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICBjb25zdCBsZWZ0UGFkZGluZyA9IHBhcnNlSW50
KGdldENvbXB1dGVkU3R5bGUodGhpcy5fZWxlbWVudCkucGFkZGluZ0xlZnQpIHx8IDA7Ci0gICAg
ICAgIHJldHVybiBuZXcgV0kuUmVjdChjbGllbnRSZWN0LmxlZnQgKyBsZWZ0UGFkZGluZywgY2xp
ZW50UmVjdC50b3AsIGNsaWVudFJlY3Qud2lkdGgsIGNsaWVudFJlY3QuaGVpZ2h0KTsKKyAgICAg
ICAgcmV0dXJuIG5ldyBXSS5SZWN0KGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBsZWZ0UGFkZGlu
ZywgZWxlbWVudENsaWVudFJlY3QudG9wLCBlbGVtZW50Q2xpZW50UmVjdC53aWR0aCwgZWxlbWVu
dENsaWVudFJlY3QuaGVpZ2h0KTsKKyAgICB9CisKKyAgICBfcmFuZ2VBdENhcmV0UG9zaXRpb24o
Y2FyZXRQb3NpdGlvbikgeworICAgICAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMuX2VsZW1lbnQu
Y2hpbGROb2RlcykgeworICAgICAgICAgICAgbGV0IHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29u
dGVudDsKKyAgICAgICAgICAgIGlmIChjYXJldFBvc2l0aW9uIDw9IHRleHRDb250ZW50Lmxlbmd0
aCkgeworICAgICAgICAgICAgICAgIGxldCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQobm9kZSwgY2FyZXRQb3NpdGlvbik7Cisg
ICAgICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKG5vZGUsIGNhcmV0UG9zaXRpb24pOworICAgICAg
ICAgICAgICAgIHJldHVybiByYW5nZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2Fy
ZXRQb3NpdGlvbiAtPSB0ZXh0Q29udGVudC5sZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICAv
LyBJZiB0aGVyZSBhcmUgbm8gbm9kZXMsIG9yIHRoZSBjYXJldCBwb3NpdGlvbiBpcyBncmVhdGVy
IHRoYW4gdGhlIHRvdGFsIHRleHQgY29udGVudCwgcHJvdmlkZSB0aGUgcmFuZ2Ugb2YgYQorICAg
ICAgICAvLyBjYXJldCBhdCB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgorICAgICAgICBsZXQgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29u
dGVudHModGhpcy5fZWxlbWVudCk7CisgICAgICAgIHJhbmdlLmNvbGxhcHNlKCk7CisgICAgICAg
IHJldHVybiByYW5nZTsKICAgICB9CiAKLSAgICBfYXBwbHlDb21wbGV0aW9uSGludCgpCisgICAg
X2FwcGx5Q29tcGxldGlvbkhpbnQoe21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9ufSA9IHt9KQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIgfHwgIXRoaXMuc3Vn
Z2VzdGlvbkhpbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgbGV0IG5ld0NhcmV0
UG9zaXRpb24gPSBtb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbiA/IHRoaXMuX2dldENhcmV0UG9z
aXRpb24oKSArIHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoIDogbnVsbDsKKyAgICAgICAgdGhp
cy5fY29tYmluZUVkaXRvckVsZW1lbnRDaGlsZHJlbih7bmV3Q2FyZXRQb3NpdGlvbn0pOworICAg
IH0KKworICAgIF9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVuKHtuZXdDYXJldFBvc2l0aW9u
fSA9IHt9KQorICAgIHsKKyAgICAgICAgbmV3Q2FyZXRQb3NpdGlvbiA/Pz0gdGhpcy5fZ2V0Q2Fy
ZXRQb3NpdGlvbigpOworCisgICAgICAgIC8vIFNldHRpbmcgdGhlIHRleHRDb250ZW50IG9mIHRo
ZSBlbGVtZW50IHRvIGl0cyBjdXJyZW50IHRleHRDb250ZW50IHdpbGwgdGFrZSB0aGUgdGV4dCBm
cm9tIHRoZSBtdWx0aXBsZQorICAgICAgICAvLyBwb3RlbnRpYWwgY2hpbGQgbm9kZXMgKHBvdGVu
dGlhbGx5IGEgc3VnZ2VzdGlvbiBoaW50IG5vZGUgYW5kIHNvbWUgbnVtYmVyIG9mIGV4aXN0aW5n
IHRleHQgbm9kZXMpIGFuZCB0dXJuCisgICAgICAgIC8vIHRoZW0gaW50byBhIHNpbmdsZSB0ZXh0
IG5vZGUgd2l0aGluIHRoZSBlbGVtZW50LgogICAgICAgICB0aGlzLl9lbGVtZW50LnRleHRDb250
ZW50ID0gdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudDsKKworICAgICAgICBpZiAodGhpcy5fZWxl
bWVudC50ZXh0Q29udGVudC5sZW5ndGgpIHsKKyAgICAgICAgICAgIGxldCB0ZXh0Q2hpbGROb2Rl
ID0gdGhpcy5fZWxlbWVudC5maXJzdENoaWxkOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGV4dENoaWxkTm9kZSBpbnN0YW5jZW9mIFRleHQsIHRleHRDaGlsZE5vZGUpOworICAgICAgICAg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dENoaWxkTm9kZSwg
bmV3Q2FyZXRQb3NpdGlvbiwgdGV4dENoaWxkTm9kZSwgbmV3Q2FyZXRQb3NpdGlvbik7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBfcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpCiAgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCwgIlN1Z2dlc3Rp
b24gaGludCBzaG91bGQgbm90IGJlIGVtcHR5IHdoZW4gYXR0YWNoaW5nIHRoZSBzdWdnZXN0aW9u
IGhpbnQgZWxlbWVudC4iKTsKKyAgICAgICAgaWYgKCF0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0
aCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdGlvbkhp
bnRFbGVtZW50LnBhcmVudEVsZW1lbnQgPT09IHRoaXMuX2VsZW1lbnQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmQodGhpcy5fc3VnZ2VzdGlvbkhp
bnRFbGVtZW50KTsKKyAgICAgICAgbGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24o
KTsKKyAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50LnRleHRDb250ZW50Lmxlbmd0aCB8fCAhc2Vs
ZWN0aW9uLnJhbmdlQ291bnQpIHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kKHRo
aXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBsZXQgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKKworICAg
ICAgICBjb25zb2xlLmFzc2VydChyYW5nZS5lbmRDb250YWluZXIgaW5zdGFuY2VvZiBUZXh0LCBy
YW5nZS5lbmRDb250YWluZXIpOworICAgICAgICBpZiAoIShyYW5nZS5lbmRDb250YWluZXIgaW5z
dGFuY2VvZiBUZXh0KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9lbGVt
ZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQsIHJhbmdlLmVuZENv
bnRhaW5lci5zcGxpdFRleHQocmFuZ2UuZW5kT2Zmc2V0KSk7CiAgICAgfQogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440784</attachid>
            <date>2021-10-11 07:14:23 -0700</date>
            <delta_ts>2021-10-11 14:40:32 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-227411-20211011161421.patch</filename>
            <type>text/plain</type>
            <size>22429</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGRjODgzNzM2M2I0MTBhNmYxZTQxMjZiYzI5MmU5
NGFmYzE0ZTdjYmEuLjRiOTA2NjRjZmI4ZDliM2ExN2Y2NzQ2YzBiNDkyYTAxZDcwZjQ2YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIxLTEwLTExICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
dHlsZXM6IEF1dG9jb21wbGV0ZSBzaG91bGQgc3VwcG9ydCBtaWQtbGluZSBjb21wbGV0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NDExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0b2NvbXBs
ZXRpb24gZm9yIENTUyBwcm9wZXJ0eSB2YWx1ZXMgd2FzIGxhY2tpbmcgaW4gdGhlIGFiaWxpdHkg
dG8gcGVyZm9ybSBtaWQtbGluZSBjb21wbGV0aW9ucywgaW5jbHVkaW5nCisgICAgICAgIHdpdGhp
biBmdW5jdGlvbnMsIGFuZCBhIGxhY2sgb2Ygc3VwcG9ydCBmb3IgbXVsdGktbGluZSBDU1MgcHJv
cGVydHkgdmFsdWVzLiBUaGlzIHJlc29sdmVzIHRob3NlIHBhaW4gcG9pbnRzIGJ5CisgICAgICAg
IG1ha2luZyBTcHJlYWRzaGVldFRleHRGaWVsZCBtdWx0aS1saW5lIGF3YXJlIGFuZCBhbGxvd2lu
ZyBtaWQtbGluZSBhdXRvY29tcGxldGlvbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRT
dHlsZVByb3BlcnR5LnByb3RvdHlwZS5fbmFtZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIpOgorICAg
ICAgICAoV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LnByb3RvdHlwZS5fdmFsdWVDb21wbGV0
aW9uRGF0YVByb3ZpZGVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFk
c2hlZXRUZXh0RmllbGQuanM6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZCk6Cisg
ICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUudmFsdWVXaXRob3V0U3Vn
Z2VzdGlvbik6CisgICAgICAgIEJlY2F1c2Ugc3VnZ2VzdGlvbnMgY2FuIG9jY3VyIGFueXdoZXJl
IHdpdGhpbiB0aGUgdmFsdWUsIHdlIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoIGVhY2ggb2YgdGhl
IG5vZGVzIGFuZAorICAgICAgICBjb2xsZWN0IHRoZSB0ZXh0IG9mIGFueSBvZiB0aGVtIHRoYXQg
YXJlIG5vdCB0aGUgY29tcGxldGlvbiBzdWdnZXN0aW9uLgorCisgICAgICAgIChXSS5TcHJlYWRz
aGVldFRleHRGaWVsZC5wcm90b3R5cGUuc2V0IHN1Z2dlc3Rpb25IaW50KToKKyAgICAgICAgV2hl
biByZW1vdmluZyB0aGUgc3VnZ2VzdGlvbiBoaW50IGVsZW1lbnQsIHdlIHNob3VsZCByZWNvbWJp
bmUgdGhlIHRleHQgbm9kZXMgd2UgbWF5IGhhdmUgc3BsaXQgdXBvbiBpbnNlcnRpb24KKyAgICAg
ICAgdG8gcHJldmVudCB0aGUgdGV4dCBjb250ZW50IGZyb20gYmVjb21pbmcgZW5kbGVzc2x5IGZy
YWdtZW50ZWQgaW50byBtdWx0aXBsZSB0ZXh0IG5vZGVzIHVubmVjZXNzYXJpbHkuCisKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlv
bnNTZWxlY3RlZENvbXBsZXRpb24pOgorICAgICAgICBXZSBzaG91bGQgb25seSBhdHRlbXB0IHRv
IHJlYXR0YWNoIHRoZSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVudCBpZiB3ZSBoYXZlIGEgc3VnZ2Vz
dGlvbiBoaW50IHRvIHNob3csIG90aGVyd2lzZQorICAgICAgICB3ZSBjb3VsZCBlbmQgdXAgd2l0
aCBhIHBoYW50b20gZW1wdHkgc3VnZ2VzdGlvbiBoaW50IHRoYXQgaXNuJ3QgcHJvcGVybHkgcGxh
Y2VkIGxhdGVyLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUu
Y29tcGxldGlvblN1Z2dlc3Rpb25zQ2xpY2tlZENvbXBsZXRpb24pOgorICAgICAgICBVcGRhdGVk
IHRvIHVzZSBleGlzdGluZyBjb21wbGV0aW9uIGNvbW1pdHRpbmcgcGF0aCB0byByZWR1Y2UgZHVw
bGljYXRlZCBsb2dpYy4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90
eXBlLl9oYW5kbGVNb3VzZURvd24pOgorICAgICAgICBXaGVuIHRoZSB1c2VyIGNsaWNrcyBpbnNp
ZGUgdGhlIHRleHQgZmllbGQgd2hpbGUgc3VnZ2VzdGlvbnMgYXJlIHZpc2libGUgdHJlYXQgdGhh
dCBhcyBpbnRlbnQgdG8gc3RvcAorICAgICAgICBhdXRvY29tcGxldGlvbiBzaW1pbGFyIHRvIHRo
ZSBlc2NhcGUga2V5LCBzaW5jZSB0aGUgbmV3IGN1cnNvciBsb2NhdGlvbiBjb3VsZCBiZSBhbnl3
aGVyZSBpbiB0aGUgdGV4dCBmaWVsZC4KKyAgICAgICAgVGhpcyBiZWhhdmlvciBhbHNvIG1hdGNo
ZXMgb3RoZXIgY29kZSBlZGl0b3JzIGxpa2UgWGNvZGUsIHdoZXJlIGNsaWNraW5nIG91dHNpZGUg
YSBjb21wbGV0aW9uIHBvcHVwIHdpbGwgZGlzbWlzcworICAgICAgICB0aGUgY29tcGxldGlvbnMg
bGlzdC4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5k
bGVLZXlEb3duKToKKyAgICAgICAgS2VlcCB0cmFjayBvZiB3aGVyZSB0aGUgY2FyZXQgd2FzIGFz
IHdlbGwgYXMgaWYgdGhlIHRoZSBrZXkgZXZlbnQgd2FzIGhhbmRsZWQgYnkgdGhlIHN1Z2dlc3Rp
b24gdmlldyBhdCB0aGUgdGltZQorICAgICAgICBhIGtleSBpcyBwcmVzc2VkIHNvIHRoYXQgd2Ug
Y2FuIGxhdGVyIGNvbXBhcmUgdGhlIHBvc2l0aW9uIHRvIHRoYXQgb2Ygd2hlbiB0aGUga2V5IGlz
IHJlbGVhc2VkIHRvIGRldGVybWluZSBpZgorICAgICAgICBjb21wbGV0aW9ucyBzaG91bGQgYmUg
ZGlzY2FyZGVkLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUu
X2hhbmRsZUtleURvd25Gb3JTdWdnZXN0aW9uVmlldyk6CisgICAgICAgIFdlIGNhbiBubyBsb25n
ZXIgYXNzdW1lIHRoYXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uJ3Mgb2Zmc2V0IHdpbGwgbWF0Y2gg
dGhlIHZhbHVlJ3MgbGVuZ3RoLCBhcyB0aGUgb2Zmc2V0IGNvdWxkCisgICAgICAgIGJlIG9uIGFu
eSBsaW5lLCBvciB0aGUgc3VnZ2VzdGlvbiBjb3VsZCBiZSBpbiBtaWRkbGUgb2YgYSBsaW5lLiBC
ZWNhdXNlIGEgc3VnZ2VzdGlvbkhpbnQgb25seSBjb250YWlucyB0ZXh0IHdoZW4KKyAgICAgICAg
d2UgYXJlIGluIG1pZGRsZSBvZiBhdXRvY29tcGxldGlvbiwgaXQgYWxvbmUgaXMgYW4gaW5kaWNh
dG9yIHRoYXQgcHJlc3NpbmcgdGhlIHJpZ2h0IGFycm93IGtleSBzaG91bGQgY29tbWl0IHRoZQor
ICAgICAgICBjb21wbGV0aW9uLiBgZG9jdW1lbnQuZXhlY0NvbW1hbmRgIGlzIGRlcHJlY2F0ZWQs
IHNvIGluc3RlYWQgd2Ugbm93IHVzZSB0aGUgZXhpc3RpbmcgY29tcGxldGlvbiBjb21taXR0aW5n
IHBhdGgKKyAgICAgICAgdG8gcmVkdWNlIGR1cGxpY2F0ZWQgbG9naWMgaGVyZS4KKworICAgICAg
ICBOb3RlIHRoYXQgdGhlIGxlZnQgYXJyb3cga2V5IGlzIHN0aWxsIGV4cGxpY2l0bHkgaGFuZGxl
ZCBmb3IgZGlzbWlzc2luZyBhdXRvY29tcGxldGlvbiwgYXMgdGhlIG5ldyBtZWNoYW5pc20gZm9y
CisgICAgICAgIGRpc21pc3NpbmcgYXV0b2NvbXBsZXRpb24gd29uJ3QgdHJpZ2dlciB1bmxlc3Mg
dGhlIGNhcmV0IGhhcyBtb3ZlZCwgYW5kIHRoZSBjYXJldCB3aWxsIG5vdCBtb3ZlIGlmIHlvdSBw
cmVzcyB0aGUKKyAgICAgICAgbGVmdCBhcnJvdyBrZXkgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0
IGZpZWxkLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hh
bmRsZUtleVVwKToKKyAgICAgICAgV2hlbiBhIGtleSBpcyByZWxlYXNlZCwgd2Ugc2hvdWxkIGNo
ZWNrIHRvIHNlZSBpZiB0aGUgY2FyZXQgaGFzIG1vdmVkIGFzIGEgcmVzdWx0IG9mIHRoZSBrZXlz
dHJva2UgdGhhdCB3ZSBoYXZlCisgICAgICAgIG5vdCBhbHJlYWR5IGV4cGxpY2l0bHkgaGFuZGxl
ZC4gSWYgaXQgaGFzIG1vdmVkIGFuZCB3YXMgbm90IGhhbmRsZWQsIHdlIGRpc21pc3MgdGhlIGF1
dG9jb21wbGV0aW9uIHN1Z2dlc3Rpb25zLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRG
aWVsZC5wcm90b3R5cGUuX2hhbmRsZUlucHV0KToKKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGQucHJvdG90eXBlLl91cGRhdGVDb21wbGV0aW9ucyk6CisgICAgICAgIFByb3ZpZGUg
dGhlIGN1cnJlbnQgY2FyZXQgcG9zaXRpb24gdG8gdGhlIGNvbXBsZXRpb24gcHJvdmlkZWQuCisK
KyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fc2hvd1N1Z2dlc3Rp
b25zVmlldyk6CisgICAgICAgIEluIG9yZGVyIHRvIGNvcnJlY3RseSBhbGlnbiB0aGUgY29tcGxl
dGlvbiBsaXN0IHdpdGggdGhlIGN1cnJlbnQgdGV4dCBjb250ZW50LCBpdCBtdXN0IGJlIG9mZnNl
dCBmcm9tIHRoZSBjYXJldAorICAgICAgICBwb3NpdGlvbiBleGNsdWRpbmcgdGhlIGN1cnJlbnQg
cHJlZml4LgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2dl
dENhcmV0UG9zaXRpb24pOgorICAgICAgICBBZGRlZCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBj
YXJldCBpbiB0aGUgY29tcGxldGUgdGV4dCB2YWx1ZSwgYWNjb3VudGluZyBmb3IgbXVsdGktbGlu
ZSB2YWx1ZXMgYW5kIG1pZC1saW5lCisgICAgICAgIHN1Z2dlc3Rpb25zLgorCisgICAgICAgIChX
SS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2dldENhcmV0UmVjdCk6CisKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fcmFuZ2VBdENhcmV0UG9zaXRp
b24pOgorICAgICAgICBGaW5kIHRoZSByYW5nZSBmb3IgYSBjYXJldCBhdCB0aGUgZ2l2ZW4gcG9z
aXRpb24uIFRoaXMgY29tcGxpbWVudHMgYF9nZXRDYXJldFBvc2l0aW9uYCwgYW5kIGFsbG93cyB1
cyB0byBjb3VudAorICAgICAgICBiYWNrIHNvbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYW5kIGNy
ZWF0ZSBhIHJhbmdlIG9mIHdoaWNoIHdlIGxhdGVyIGdldCB0aGUgY2xpZW50IHJlY3RhbmdsZS4K
KworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBseUNvbXBs
ZXRpb25IaW50KToKKyAgICAgICAgQWRkIG9wdGlvbmFsIHN1cHBvcnQgZm9yIHVwZGF0aW5nIHRo
ZSBjYXJldCBwb3NpdGlvbiB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZSBuZXdseSBpbnNlcnRlZCB0
ZXh0LgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2NvbWJp
bmVFZGl0b3JFbGVtZW50Q2hpbGRyZW4pOgorICAgICAgICBBZGRlZCB0byBoYW5kbGUgY29tYmlu
aW5nIHRoZSBmcmFnbWVudGVkIHRleHQgbm9kZXMgKGFuZCBwb3NzaWJseSBhIHN1Z2dlc3Rpb24g
aGludCBlbGVtZW50KSBiYWNrIGludG8gYSBzaW5nbGUKKyAgICAgICAgdGV4dCBub2RlIHdoaWxl
IG1haW50YWluaW5nIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiBvciBvcHRpb25hbGx5IG1v
dmluZyB0aGUgY3Vyc29yIHRvIGEgbmV3IGxvY2F0aW9uIChlLmcuCisgICAgICAgIHRoZSBlbmQg
b2YgYSBjb21wbGV0aW9uKS4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJv
dG90eXBlLl9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KToKKyAgICAgICAgTm93IHRoYXQgY29tcGxl
dGlvbnMgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHZhbHVlLCB3
ZSBtYXkgbmVlZCB0byBzcGxpdCB0aGUgdGV4dCBub2RlIHRvCisgICAgICAgIGluc2VydCB0aGUg
c3VnZ2VzdGlvbiBoaW50IG5vZGUuCisKIDIwMjEtMTAtMDggIEJKIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIFRhYkJhciBjb250ZXh0IG1lbnUg
c3VwcG9ydCBmb3IgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNo
ZWV0U3R5bGVQcm9wZXJ0eS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwppbmRleCBjMDMxYzBjOTdhNjdiZDcy
YmExMzcwZDk0NDU5NjU1YmVjNWFkMDRjLi4xY2YyN2U5YTUwMDI2ZWZhNWNiNDNmMzdlYzU2NmI5
MTYwOTk1ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCkBA
IC05NjMsOSArOTYzLDkgQEAgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3By
ZWFkc2hlZXRTdHlsZVByb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBfbmFtZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2FsbG93RW1wdHlQcmVm
aXh9ID0ge30pCisgICAgX25hbWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtjYXJldFBv
c2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdJ
LkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKHRleHQsIHthbGxv
d0VtcHR5UHJlZml4fSk7CisgICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMu
Zm9yUGFydGlhbFByb3BlcnR5TmFtZSh0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVBy
ZWZpeH0pOwogICAgIH0KIAogICAgIF9oYW5kbGVWYWx1ZUJlZm9yZUlucHV0KGV2ZW50KQpAQCAt
OTg3LDEwICs5ODcsOSBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJl
YWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5zcHJl
YWRzaGVldFRleHRGaWVsZERpZENvbW1pdCh0aGlzLl92YWx1ZVRleHRGaWVsZCwge2RpcmVjdGlv
bjogImZvcndhcmQifSk7CiAgICAgfQogCi0gICAgX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRl
cih0ZXh0LCB7YWxsb3dFbXB0eVByZWZpeH0gPSB7fSkKKyAgICBfdmFsdWVDb21wbGV0aW9uRGF0
YVByb3ZpZGVyKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9KQog
ICAgIHsKLSAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMjI3NDExPiBTdHlsZXMgc2lk
ZWJhciBwYW5lbCBzaG91bGQgc3VwcG9ydCBtaWRsaW5lIGFuZCBtdWx0aWxpbmUgY29tcGxldGlv
bnMuCi0gICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFBy
b3BlcnR5VmFsdWUodGV4dCwgdGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7
YWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0aW9u
YWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7CisgICAgICAg
IHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUo
dGV4dCwgdGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7Y2FyZXRQb3NpdGlv
biwgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0
aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7CiAgICAg
fQogCiAgICAgX3NldHVwSnVtcFRvU3ltYm9sKGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0
VGV4dEZpZWxkLmpzCmluZGV4IDEzNGQ2NGU5ZmE3N2Y5OTE5YTFmNTUzYTIwOWYwYzVjOTAyMTg3
ODUuLjhiNjdlZmZhM2Q0OTExNGU1MTU0NmQxNDI3MjM5N2Y0MzU3MDdlOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4
dEZpZWxkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NCw5ICs0NCwxMiBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKTsKICAg
ICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5faGFuZGxl
Qmx1ci5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJrZXlkb3duIiwgdGhpcy5faGFuZGxlS2V5RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2hhbmRsZUtleVVwLmJp
bmQodGhpcykpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0
IiwgdGhpcy5faGFuZGxlSW5wdXQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fZWRpdGlu
ZyA9IGZhbHNlOworICAgICAgICB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25L
ZXlVcCA9IGZhbHNlOworICAgICAgICB0aGlzLl9rZXlEb3duQ2FyZXRQb3NpdGlvbiA9IC0xOwog
ICAgICAgICB0aGlzLl92YWx1ZUJlZm9yZUVkaXRpbmcgPSAiIjsKICAgICAgICAgdGhpcy5fY29t
cGxldGlvblByZWZpeCA9ICIiOwogICAgICAgICB0aGlzLl9jb250cm9sU3BhY2VLZXlib2FyZFNo
b3J0Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2Rp
Zmllci5Db250cm9sLCBXSS5LZXlib2FyZFNob3J0Y3V0LktleS5TcGFjZSk7CkBAIC02Myw4ICs2
NiwxMSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZp
ZWxkCiAKICAgICB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCkKICAgICB7Ci0gICAgICAgIGxldCB2
YWx1ZSA9IHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7Ci0gICAgICAgIHJldHVybiB2YWx1ZS5z
bGljZSgwLCB2YWx1ZS5sZW5ndGggLSB0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCk7CisgICAg
ICAgIC8vIFRoZSBzdWdnZXN0aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSB3aXRoaW4gdGhlIGVs
ZW1lbnQsIGFuZCB0aGUgdGV4dCBvZiB0aGUgZWxlbWVudCBjYW4gc3BhbiBtdWx0aXBsZSBub2Rl
cy4KKyAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fZWxlbWVudC5jaGlsZE5vZGVzKQor
ICAgICAgICAgICAgLmZpbHRlcigobm9kZSkgPT4gbm9kZSAhPT0gdGhpcy5fc3VnZ2VzdGlvbkhp
bnRFbGVtZW50KQorICAgICAgICAgICAgLm1hcCgobm9kZSkgPT4gbm9kZS50ZXh0Q29udGVudCkK
KyAgICAgICAgICAgIC5qb2luKCIiKTsKICAgICB9CiAKICAgICBnZXQgc3VnZ2VzdGlvbkhpbnQo
KQpAQCAtNzQsMTIgKzgwLDE5IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3By
ZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIHNldCBzdWdnZXN0aW9uSGludCh2YWx1ZSkKICAgICB7
CisgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQudGV4dENvbnRlbnQgPT09
IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25I
aW50RWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlOwogCiAgICAgICAgIGlmICh2YWx1ZSkKICAg
ICAgICAgICAgIHRoaXMuX3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKTsKLSAgICAgICAgZWxzZQor
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudC5y
ZW1vdmUoKTsKKworICAgICAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIHN1Z2dlc3Rpb24gaGludCBl
bGVtZW50IG1heSBsZWF2ZSB0aGUgY29udGVudHMgb2YgYF9lbGVtZW50YCBmcmFnbWVudGVkIGlu
dG8gbXVsdGlwbGUgdGV4dCBub2Rlcy4KKyAgICAgICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JF
bGVtZW50Q2hpbGRyZW4oKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHN0YXJ0RWRpdGluZygp
CkBAIC0xNDIsNyArMTU1LDggQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJl
YWRzaGVldFRleHRGaWVsZAogICAgIHsKICAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNl
bGVjdGVkVGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CiAKLSAgICAg
ICAgdGhpcy5fcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpOworICAgICAgICBpZiAodGhpcy5zdWdn
ZXN0aW9uSGludC5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dlc3Rpb25I
aW50KCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxl
Z2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAg
ICAgICAgIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlKHRoaXMp
OwpAQCAtMTUwLDI2ICsxNjQsOSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNw
cmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29t
cGxldGlvbihzdWdnZXN0aW9uc1ZpZXcsIHNlbGVjdGVkVGV4dCkKICAgICB7Ci0gICAgICAgIC8v
IENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKLSAgICAgICAgLy8KLSAgICAgICAgLy8g
ICBib3JkZXI6IDFweCBzb2xpZCByb3wKLSAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICBy
b3N5YnJvd24KLSAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICByb3lhbGJsdWUKLSAgICAg
ICAgLy8KLSAgICAgICAgLy8gQ2xpY2tpbmcgb24gInJvc3licm93biIgc2hvdWxkIHJlcGxhY2Ug
InJvIiB3aXRoICJyb3N5YnJvd24iLgotICAgICAgICAvLwotICAgICAgICAvLyAgICAgICAgICAg
cHJlZml4OiAgMXB4IHNvbGlkIHJvCi0gICAgICAgIC8vIGNvbXBsZXRpb25QcmVmaXg6ICAgICAg
ICAgICAgcm8KLSAgICAgICAgLy8gICAgICAgIG5ld1ByZWZpeDogIDFweCBzb2xpZAotICAgICAg
ICAvLyAgICAgc2VsZWN0ZWRUZXh0OiAgICAgICAgICAgIHJvc3licm93bgotICAgICAgICBsZXQg
cHJlZml4ID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBuZXdQ
cmVmaXggPSBwcmVmaXguc2xpY2UoMCwgLXRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKTsK
LQotICAgICAgICB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50ID0gbmV3UHJlZml4ICsgc2VsZWN0
ZWRUZXh0OwotCi0gICAgICAgIC8vIFBsYWNlIHRleHQgY2FyZXQgYXQgdGhlIGVuZC4KLSAgICAg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGhpcy5fZWxlbWVudCwg
c2VsZWN0ZWRUZXh0Lmxlbmd0aCwgdGhpcy5fZWxlbWVudCwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCk7
CisgICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxlY3RlZFRleHQuc2xpY2UodGhpcy5f
Y29tcGxldGlvblByZWZpeC5sZW5ndGgpOwogCisgICAgICAgIHRoaXMuX2FwcGx5Q29tcGxldGlv
bkhpbnQoe21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uOiB0cnVlfSk7CiAgICAgICAgIHRoaXMu
ZGlzY2FyZENvbXBsZXRpb24oKTsKIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlw
ZW9mIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVu
Y3Rpb24iKQpAQCAtMjAwLDggKzE5NywxMSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNs
YXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBfaGFuZGxlTW91c2VEb3duKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcpCisgICAgICAgIGlmICh0aGlzLl9lZGl0
aW5nKSB7CiAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAg
IGlmICh0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0aGlzLmRp
c2NhcmRDb21wbGV0aW9uKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfaGFuZGxlQmx1cihl
dmVudCkKQEAgLTIyOCw4ICsyMjgsMTEgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFz
cyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9uc1Zp
ZXcpIHsKICAgICAgICAgICAgIGxldCBjb25zdW1lZCA9IHRoaXMuX2hhbmRsZUtleURvd25Gb3JT
dWdnZXN0aW9uVmlldyhldmVudCk7CisgICAgICAgICAgICB0aGlzLl9wcmV2ZW50RGlzY2FyZGlu
Z0NvbXBsZXRpb25zT25LZXlVcCA9IGNvbnN1bWVkOwogICAgICAgICAgICAgaWYgKGNvbnN1bWVk
KQogICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0aGlzLl9rZXlEb3duQ2FyZXRQb3NpdGlvbiA9IHRoaXMuX2dldENhcmV0UG9zaXRpb24o
KTsKICAgICAgICAgfQogCiAgICAgICAgIGxldCBpc0VudGVyS2V5ID0gZXZlbnQua2V5ID09PSAi
RW50ZXIiOwpAQCAtMjkyLDYgKzI5NSw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xh
c3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9u
c1ZpZXcudmlzaWJsZSkKICAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuaGlk
ZSgpOwogICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJldmVudERp
c2NhcmRpbmdDb21wbGV0aW9uc09uS2V5VXAgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNvbnN0
IGZvcmNlQ29tcGxldGlvbnMgPSB0cnVlOwogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNv
bXBsZXRpb25zKGZvcmNlQ29tcGxldGlvbnMpOwogICAgICAgICAgICAgfQpAQCAtMzI3LDEyICsz
MzEsMTIgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRG
aWVsZAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
ZXZlbnQua2V5ID09PSAiQXJyb3dSaWdodCIgJiYgdGhpcy5zdWdnZXN0aW9uSGludCkgeworICAg
ICAgICBpZiAoZXZlbnQua2V5ID09PSAiQXJyb3dSaWdodCIgJiYgdGhpcy5zdWdnZXN0aW9uSGlu
dC5sZW5ndGgpIHsKICAgICAgICAgICAgIGxldCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CiAKLSAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiYgKHNlbGVj
dGlvbi5mb2N1c09mZnNldCA9PT0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCkubGVuZ3Ro
IHx8IHNlbGVjdGlvbi5mb2N1c05vZGUgPT09IHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudCkp
IHsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAg
ICAgICBldmVudC5zdG9wKCk7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Imluc2VydFRleHQiLCBmYWxzZSwgdGhpcy5zdWdnZXN0aW9uSGludCk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fYXBwbHlDb21wbGV0aW9uSGludCh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246
IHRydWV9KTsKIAogICAgICAgICAgICAgICAgIC8vIFdoZW4gY29tcGxldGluZyAiYmFja2dyb3Vu
ZCIsIGRvbid0IGhpZGUgdGhlIGNvbXBsZXRpb24gcG9wb3Zlci4KICAgICAgICAgICAgICAgICAv
LyBDb250aW51ZSBzaG93aW5nIHRoZSBwb3BvdmVyIHdpdGggcHJvcGVydGllcyBzdWNoIGFzICJi
YWNrZ3JvdW5kLWNvbG9yIiBhbmQgImJhY2tncm91bmQtaW1hZ2UiLgpAQCAtMzYyLDE2ICszNjYs
MzQgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVs
ZAogCiAgICAgICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVn
YXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24iKQogICAgICAg
ICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlKHRo
aXMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgX2hhbmRsZUtleVVwKCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5fZWRpdGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBTb21l
IGtleSBldmVudHMsIGxpa2UgdGhlIGFycm93IGtleXMgYW5kIEN0cmwrQSAobW92ZSB0byBsaW5l
IHN0YXJ0KSwgd2lsbCBtb3ZlIHRoZSBjYXJldCB3aXRob3V0IGNvbW1pdHRpbmcKKyAgICAgICAg
Ly8gYW55IGlucHV0IHRvIHRoZSB0ZXh0IGZpZWxkLiBJbiB0aG9zZSBzaXR1YXRpb25zIHdlIHNo
b3VsZCBkaXNjYXJkIGNvbXBsZXRpb24gaWYgdGhleSBhcmUgYXZhaWxhYmxlLgorICAgICAgICBp
ZiAoIXRoaXMuX3N1Z2dlc3Rpb25zVmlldyB8fCB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBs
ZXRpb25zT25LZXlVcCB8fCB0aGlzLl9rZXlEb3duQ2FyZXRQb3NpdGlvbiA9PT0gdGhpcy5fZ2V0
Q2FyZXRQb3NpdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlz
LnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCB8fCB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudmlzaWJsZSkg
eworICAgICAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOworICAgICAgICAgICAgdGhp
cy5fZGVsZWdhdGU/LnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlPy4odGhpcyk7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICBfaGFuZGxlSW5wdXQoZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX2VkaXRpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhpcy5f
cHJldmVudERpc2NhcmRpbmdDb21wbGV0aW9uc09uS2V5VXAgPSB0cnVlOwogICAgICAgICB0aGlz
Ll91cGRhdGVDb21wbGV0aW9ucygpOwogCiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0
eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09ICJm
dW5jdGlvbiIpCkBAIC0zODQsNyArNDA2LDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBj
bGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGxldCB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9u
KCk7Ci0gICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0gPSB0aGlzLl9jb21wbGV0aW9u
UHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbiwge2FsbG93RW1wdHlQcmVmaXg6IGZvcmNl
Q29tcGxldGlvbnN9KTsKKyAgICAgICAgbGV0IHtjb21wbGV0aW9ucywgcHJlZml4fSA9IHRoaXMu
X2NvbXBsZXRpb25Qcm92aWRlcih2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uLCB7YWxsb3dFbXB0eVBy
ZWZpeDogZm9yY2VDb21wbGV0aW9ucywgY2FyZXRQb3NpdGlvbjogdGhpcy5fZ2V0Q2FyZXRQb3Np
dGlvbigpfSk7CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVmaXggPSBwcmVmaXg7CiAKICAg
ICAgICAgaWYgKCFjb21wbGV0aW9ucy5sZW5ndGgpIHsKQEAgLTQyMiw5ICs0NDQsMTQgQEAgV0ku
U3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAg
X3Nob3dTdWdnZXN0aW9uc1ZpZXcoKQogICAgIHsKLSAgICAgICAgbGV0IHByZWZpeCA9IHRoaXMu
dmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpOwotICAgICAgICBsZXQgc3RhcnRPZmZzZXQgPSBwcmVm
aXgubGVuZ3RoIC0gdGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGg7Ci0gICAgICAgIGxldCBj
YXJldFJlY3QgPSB0aGlzLl9nZXRDYXJldFJlY3Qoc3RhcnRPZmZzZXQpOworICAgICAgICAvLyBB
ZGp1c3QgdGhlIHVzZWQgY2FyZXQgcG9zaXRpb24gdG8gY29ycmVjdGx5IGFsaWduIGF1dG9jb21w
bGV0aW9uIHJlc3VsdHMgd2l0aCBleGlzdGluZyB0ZXh0LiBUaGUgc3VnZ2VzdGlvbnMKKyAgICAg
ICAgLy8gc2hvdWxkIGFwcGVhciBhbGlnbmVkIGFzIGJlbG93OgorICAgICAgICAvLyAKKyAgICAg
ICAgLy8gYm9yZGVyOiAxcHggc29saWQgcm98CisgICAgICAgIC8vICAgICAgICAgICAgICAgICAg
IHJvc3licm93bgorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICByb3lhbGJsdWUKKyAgICAg
ICAgbGV0IGFkanVzdGVkQ2FyZXRQb3NpdGlvbiA9IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKSAt
IHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoOworICAgICAgICBsZXQgY2FyZXRSZWN0ID0g
dGhpcy5fZ2V0Q2FyZXRSZWN0KGFkanVzdGVkQ2FyZXRQb3NpdGlvbik7CiAKICAgICAgICAgLy8g
SGlkZSBjb21wbGV0aW9uIHBvcG92ZXIgd2hlbiB0aGUgYW5jaG9yIGVsZW1lbnQgaXMgcmVtb3Zl
ZCBmcm9tIHRoZSBET00uCiAgICAgICAgIGlmICghY2FyZXRSZWN0KQpAQCAtNDM1LDQ3ICs0NjIs
MTA4IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0Rmll
bGQKICAgICAgICAgfQogICAgIH0KIAotICAgIF9nZXRDYXJldFJlY3Qoc3RhcnRPZmZzZXQpCisg
ICAgX2dldENhcmV0UG9zaXRpb24oKQogICAgIHsKKyAgICAgICAgLy8gVGhlIHdpbmRvdydzIHNl
bGVjdGlvbiByYW5nZSB3aWxsIG9ubHkgY29udGFpbiB0aGUgY3VycmVudCBsaW5lJ3MgcG9zaXRp
b25pbmcgaW4gbXVsdGlsaW5lIHRleHQsIHNvIGEgbmV3CisgICAgICAgIC8vIHJhbmdlIG11c3Qg
YmUgY3JlYXRlZCBiZXR3ZWVuIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgcmFuZ2UgYW5kIHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIGZpcnN0IGxpbmUgb2YgdGV4dCBpbgorICAgICAgICAvLyBvcmRlciB0
byBnZXQgYW4gYWNjdXJhdGUgY2hhcmFjdGVyIHBvc2l0aW9uIGZvciB0aGUgY2FyZXQuCiAgICAg
ICAgIGxldCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmICgh
c2VsZWN0aW9uLnJhbmdlQ291bnQpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBs
ZXQgbGluZVJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgIGxldCBtdWx0
aWxpbmVSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIG11bHRpbGluZVJh
bmdlLnNldFN0YXJ0KHRoaXMuX2VsZW1lbnQsIDApOworICAgICAgICBtdWx0aWxpbmVSYW5nZS5z
ZXRFbmQobGluZVJhbmdlLmVuZENvbnRhaW5lciwgbGluZVJhbmdlLmVuZE9mZnNldCk7CisgICAg
ICAgIHJldHVybiBtdWx0aWxpbmVSYW5nZS50b1N0cmluZygpLmxlbmd0aDsKKyAgICB9CiAKKyAg
ICBfZ2V0Q2FyZXRSZWN0KGNhcmV0UG9zaXRpb24pCisgICAgewogICAgICAgICBsZXQgaXNIaWRk
ZW4gPSAoY2xpZW50UmVjdCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNsaWVudFJlY3QueCA9
PT0gMCAmJiBjbGllbnRSZWN0LnkgPT09IDA7CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHNl
bGVjdGlvbi5yYW5nZUNvdW50KSB7Ci0gICAgICAgICAgICBsZXQgcmFuZ2UgPSBzZWxlY3Rpb24u
Z2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCk7Ci0gICAgICAgICAgICByYW5nZS5zZXRTdGFydChy
YW5nZS5zdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQpOwotICAgICAgICAgICAgbGV0IGNsaWVu
dFJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgbGV0IGNhcmV0
UmFuZ2UgPSB0aGlzLl9yYW5nZUF0Q2FyZXRQb3NpdGlvbihjYXJldFBvc2l0aW9uKTsKKyAgICAg
ICAgbGV0IGNhcmV0Q2xpZW50UmVjdCA9IGNhcmV0UmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7CisgICAgICAgIGlmICghaXNIaWRkZW4oY2FyZXRDbGllbnRSZWN0KSkKKyAgICAgICAgICAg
IHJldHVybiBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChjYXJldENsaWVudFJlY3QpOwogCi0g
ICAgICAgICAgICBpZiAoIWlzSGlkZGVuKGNsaWVudFJlY3QpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gVGhpcyBoYXBwZW5zIGFmdGVyIGRlbGV0aW5nIHZhbHVlLiBIb3dldmVyLCB3aGVuIGZvY3Vz
aW5nCi0gICAgICAgICAgICAgICAgLy8gb24gYW4gZW1wdHkgdmFsdWUgY2xpZW50UmVjdCBpcyB2
aXNpYmxlLgotICAgICAgICAgICAgICAgIHJldHVybiBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVj
dChjbGllbnRSZWN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGxldCBj
bGllbnRSZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAg
ICAgaWYgKGlzSGlkZGVuKGNsaWVudFJlY3QpKQorICAgICAgICBsZXQgZWxlbWVudENsaWVudFJl
Y3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBpZiAo
aXNIaWRkZW4oZWxlbWVudENsaWVudFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAK
ICAgICAgICAgY29uc3QgbGVmdFBhZGRpbmcgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKHRo
aXMuX2VsZW1lbnQpLnBhZGRpbmdMZWZ0KSB8fCAwOwotICAgICAgICByZXR1cm4gbmV3IFdJLlJl
Y3QoY2xpZW50UmVjdC5sZWZ0ICsgbGVmdFBhZGRpbmcsIGNsaWVudFJlY3QudG9wLCBjbGllbnRS
ZWN0LndpZHRoLCBjbGllbnRSZWN0LmhlaWdodCk7CisgICAgICAgIHJldHVybiBuZXcgV0kuUmVj
dChlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgbGVmdFBhZGRpbmcsIGVsZW1lbnRDbGllbnRSZWN0
LnRvcCwgZWxlbWVudENsaWVudFJlY3Qud2lkdGgsIGVsZW1lbnRDbGllbnRSZWN0LmhlaWdodCk7
CisgICAgfQorCisgICAgX3JhbmdlQXRDYXJldFBvc2l0aW9uKGNhcmV0UG9zaXRpb24pIHsKKyAg
ICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLl9lbGVtZW50LmNoaWxkTm9kZXMpIHsKKyAgICAg
ICAgICAgIGxldCB0ZXh0Q29udGVudCA9IG5vZGUudGV4dENvbnRlbnQ7CisgICAgICAgICAgICBp
ZiAoY2FyZXRQb3NpdGlvbiA8PSB0ZXh0Q29udGVudC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAg
ICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICAgICAgICAgIHJh
bmdlLnNldFN0YXJ0KG5vZGUsIGNhcmV0UG9zaXRpb24pOworICAgICAgICAgICAgICAgIHJhbmdl
LnNldEVuZChub2RlLCBjYXJldFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmFu
Z2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhcmV0UG9zaXRpb24gLT0gdGV4dENv
bnRlbnQubGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIG5v
ZGVzLCBvciB0aGUgY2FyZXQgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSB0b3RhbCB0ZXh0
IGNvbnRlbnQsIHByb3ZpZGUgdGhlIHJhbmdlIG9mIGEKKyAgICAgICAgLy8gY2FyZXQgYXQgdGhl
IGVuZCBvZiB0aGUgZWxlbWVudC4KKyAgICAgICAgbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRoaXMuX2VsZW1lbnQp
OworICAgICAgICByYW5nZS5jb2xsYXBzZSgpOworICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAg
fQogCi0gICAgX2FwcGx5Q29tcGxldGlvbkhpbnQoKQorICAgIF9hcHBseUNvbXBsZXRpb25IaW50
KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbn0gPSB7fSkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fY29tcGxldGlvblByb3ZpZGVyIHx8ICF0aGlzLnN1Z2dlc3Rpb25IaW50KQogICAgICAg
ICAgICAgcmV0dXJuOwogCisgICAgICAgIGxldCBuZXdDYXJldFBvc2l0aW9uID0gbW92ZUNhcmV0
VG9FbmRPZkNvbXBsZXRpb24gPyB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCkgKyB0aGlzLnN1Z2dl
c3Rpb25IaW50Lmxlbmd0aCA6IG51bGw7CisgICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JFbGVt
ZW50Q2hpbGRyZW4oe25ld0NhcmV0UG9zaXRpb259KTsKKyAgICB9CisKKyAgICBfY29tYmluZUVk
aXRvckVsZW1lbnRDaGlsZHJlbih7bmV3Q2FyZXRQb3NpdGlvbn0gPSB7fSkKKyAgICB7CisgICAg
ICAgIG5ld0NhcmV0UG9zaXRpb24gPz89IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKTsKKworICAg
ICAgICAvLyBTZXR0aW5nIHRoZSB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudCB0byBpdHMgY3Vy
cmVudCB0ZXh0Q29udGVudCB3aWxsIHRha2UgdGhlIHRleHQgZnJvbSB0aGUgbXVsdGlwbGUKKyAg
ICAgICAgLy8gcG90ZW50aWFsIGNoaWxkIG5vZGVzIChwb3RlbnRpYWxseSBhIHN1Z2dlc3Rpb24g
aGludCBub2RlIGFuZCBzb21lIG51bWJlciBvZiBleGlzdGluZyB0ZXh0IG5vZGVzKSBhbmQgdHVy
bgorICAgICAgICAvLyB0aGVtIGludG8gYSBzaW5nbGUgdGV4dCBub2RlIHdpdGhpbiB0aGUgZWxl
bWVudC4KICAgICAgICAgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX2VsZW1lbnQu
dGV4dENvbnRlbnQ7CisKKyAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQubGVu
Z3RoKSB7CisgICAgICAgICAgICBsZXQgdGV4dENoaWxkTm9kZSA9IHRoaXMuX2VsZW1lbnQuZmly
c3RDaGlsZDsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRDaGlsZE5vZGUgaW5zdGFu
Y2VvZiBUZXh0LCB0ZXh0Q2hpbGROb2RlKTsKKyAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5zZXRCYXNlQW5kRXh0ZW50KHRleHRDaGlsZE5vZGUsIG5ld0NhcmV0UG9zaXRpb24sIHRl
eHRDaGlsZE5vZGUsIG5ld0NhcmV0UG9zaXRpb24pOworICAgICAgICB9CiAgICAgfQogCiAgICAg
X3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGgsICJTdWdnZXN0aW9uIGhpbnQgc2hvdWxkIG5vdCBi
ZSBlbXB0eSB3aGVuIGF0dGFjaGluZyB0aGUgc3VnZ2VzdGlvbiBoaW50IGVsZW1lbnQuIik7Cisg
ICAgICAgIGlmICghdGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm47CisKICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudC5wYXJlbnRFbGVt
ZW50ID09PSB0aGlzLl9lbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRo
aXMuX2VsZW1lbnQuYXBwZW5kKHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudCk7CisgICAgICAg
IGxldCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmICghdGhp
cy5fZWxlbWVudC50ZXh0Q29udGVudC5sZW5ndGggfHwgIXNlbGVjdGlvbi5yYW5nZUNvdW50KSB7
CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZCh0aGlzLl9zdWdnZXN0aW9uSGludEVs
ZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHJh
bmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
cmFuZ2UuZW5kQ29udGFpbmVyIGluc3RhbmNlb2YgVGV4dCwgcmFuZ2UuZW5kQ29udGFpbmVyKTsK
KyAgICAgICAgaWYgKCEocmFuZ2UuZW5kQ29udGFpbmVyIGluc3RhbmNlb2YgVGV4dCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhp
cy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50LCByYW5nZS5lbmRDb250YWluZXIuc3BsaXRUZXh0KHJh
bmdlLmVuZE9mZnNldCkpOwogICAgIH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440837</attachid>
            <date>2021-10-11 14:40:34 -0700</date>
            <delta_ts>2021-11-09 10:21:34 -0800</delta_ts>
            <desc>Patch v1.1</desc>
            <filename>bug-227411-20211011144034.patch</filename>
            <type>text/plain</type>
            <size>23608</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
MWFlYjdkZjUyMTQxMGI3MjFjOWUyZGYxODU5NDU3OTliZDEwNDAzLi45OWIyN2EyZTRhZjU0NGVk
Y2RlMTBiMmEyYzdhYzBhZmViODhhYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMS0xMC0xMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGVzOiBBdXRvY29tcGxldGUgc2hvdWxkIHN1
cHBvcnQgbWlkLWxpbmUgY29tcGxldGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEF1dG9jb21wbGV0aW9uIGZvciBDU1MgcHJvcGVydHkgdmFsdWVz
IHdhcyBsYWNraW5nIGluIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gbWlkLWxpbmUgY29tcGxldGlv
bnMsIGluY2x1ZGluZworICAgICAgICB3aXRoaW4gZnVuY3Rpb25zLCBhbmQgYSBsYWNrIG9mIHN1
cHBvcnQgZm9yIG11bHRpLWxpbmUgQ1NTIHByb3BlcnR5IHZhbHVlcy4gVGhpcyByZXNvbHZlcyB0
aG9zZSBwYWluIHBvaW50cyBieQorICAgICAgICBtYWtpbmcgU3ByZWFkc2hlZXRUZXh0RmllbGQg
bXVsdGktbGluZSBhd2FyZSBhbmQgYWxsb3dpbmcgbWlkLWxpbmUgYXV0b2NvbXBsZXRpb24uCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5q
czoKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX25hbWVD
b21wbGV0aW9uRGF0YVByb3ZpZGVyKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9w
ZXJ0eS5wcm90b3R5cGUuX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcik6CisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzOgorICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQucHJvdG90eXBlLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24pOgorICAgICAgICBCZWNhdXNlIHN1
Z2dlc3Rpb25zIGNhbiBvY2N1ciBhbnl3aGVyZSB3aXRoaW4gdGhlIHZhbHVlLCB3ZSBuZWVkIHRv
IGl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9mIHRoZSBub2RlcyBhbmQKKyAgICAgICAgY29sbGVjdCB0
aGUgdGV4dCBvZiBhbnkgb2YgdGhlbSB0aGF0IGFyZSBub3QgdGhlIGNvbXBsZXRpb24gc3VnZ2Vz
dGlvbi4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLnNldCBz
dWdnZXN0aW9uSGludCk6CisgICAgICAgIFdoZW4gcmVtb3ZpbmcgdGhlIHN1Z2dlc3Rpb24gaGlu
dCBlbGVtZW50LCB3ZSBzaG91bGQgcmVjb21iaW5lIHRoZSB0ZXh0IG5vZGVzIHdlIG1heSBoYXZl
IHNwbGl0IHVwb24gaW5zZXJ0aW9uCisgICAgICAgIHRvIHByZXZlbnQgdGhlIHRleHQgY29udGVu
dCBmcm9tIGJlY29taW5nIGVuZGxlc3NseSBmcmFnbWVudGVkIGludG8gbXVsdGlwbGUgdGV4dCBu
b2RlcyB1bm5lY2Vzc2FyaWx5LgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5w
cm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgUmVzZXQgdGhlIGxhc3Qga25vd24gY2Fy
ZXQgcG9zaXRpb24gd2hlbiBlZGl0aW5nIHN0YXJ0cyBzbyB0aGF0IHdlIGRvbid0IG1pc3Rha2Ug
a2V5cyB0aGF0IGFyZSBhbHJlYWR5IGRvd24gYXMKKyAgICAgICAgaGF2aW5nIG1vdmVkIHRoZSBj
dXJzb3IgdG8gaXRzIGluaXRpYWwgcG9zaXRpb24uCisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0
VGV4dEZpZWxkLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRp
b24pOgorICAgICAgICBXZSBzaG91bGQgb25seSBhdHRlbXB0IHRvIHJlYXR0YWNoIHRoZSBzdWdn
ZXN0aW9uIGhpbnQgZWxlbWVudCBpZiB3ZSBoYXZlIGEgc3VnZ2VzdGlvbiBoaW50IHRvIHNob3cs
IG90aGVyd2lzZQorICAgICAgICB3ZSBjb3VsZCBlbmQgdXAgd2l0aCBhIHBoYW50b20gZW1wdHkg
c3VnZ2VzdGlvbiBoaW50IHRoYXQgaXNuJ3QgcHJvcGVybHkgcGxhY2VkIGxhdGVyLgorCisgICAg
ICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rp
b25zQ2xpY2tlZENvbXBsZXRpb24pOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSBleGlzdGluZyBj
b21wbGV0aW9uIGNvbW1pdHRpbmcgcGF0aCB0byByZWR1Y2UgZHVwbGljYXRlZCBsb2dpYy4KKwor
ICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVNb3VzZURv
d24pOgorICAgICAgICBXaGVuIHRoZSB1c2VyIGNsaWNrcyBpbnNpZGUgdGhlIHRleHQgZmllbGQg
d2hpbGUgc3VnZ2VzdGlvbnMgYXJlIHZpc2libGUgdHJlYXQgdGhhdCBhcyBpbnRlbnQgdG8gc3Rv
cAorICAgICAgICBhdXRvY29tcGxldGlvbiBzaW1pbGFyIHRvIHRoZSBlc2NhcGUga2V5LCBzaW5j
ZSB0aGUgbmV3IGN1cnNvciBsb2NhdGlvbiBjb3VsZCBiZSBhbnl3aGVyZSBpbiB0aGUgdGV4dCBm
aWVsZC4KKyAgICAgICAgVGhpcyBiZWhhdmlvciBhbHNvIG1hdGNoZXMgb3RoZXIgY29kZSBlZGl0
b3JzIGxpa2UgWGNvZGUsIHdoZXJlIGNsaWNraW5nIG91dHNpZGUgYSBjb21wbGV0aW9uIHBvcHVw
IHdpbGwgZGlzbWlzcworICAgICAgICB0aGUgY29tcGxldGlvbnMgbGlzdC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duKToKKyAgICAg
ICAgS2VlcCB0cmFjayBvZiB3aGVyZSB0aGUgY2FyZXQgd2FzIGFzIHdlbGwgYXMgaWYgdGhlIHRo
ZSBrZXkgZXZlbnQgd2FzIGhhbmRsZWQgYnkgdGhlIHN1Z2dlc3Rpb24gdmlldyBhdCB0aGUgdGlt
ZQorICAgICAgICBhIGtleSBpcyBwcmVzc2VkIHNvIHRoYXQgd2UgY2FuIGxhdGVyIGNvbXBhcmUg
dGhlIHBvc2l0aW9uIHRvIHRoYXQgb2Ygd2hlbiB0aGUga2V5IGlzIHJlbGVhc2VkIHRvIGRldGVy
bWluZSBpZgorICAgICAgICBjb21wbGV0aW9ucyBzaG91bGQgYmUgZGlzY2FyZGVkLgorCisgICAg
ICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUtleURvd25Gb3JT
dWdnZXN0aW9uVmlldyk6CisgICAgICAgIFdlIGNhbiBubyBsb25nZXIgYXNzdW1lIHRoYXQgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uJ3Mgb2Zmc2V0IHdpbGwgbWF0Y2ggdGhlIHZhbHVlJ3MgbGVuZ3Ro
LCBhcyB0aGUgb2Zmc2V0IGNvdWxkCisgICAgICAgIGJlIG9uIGFueSBsaW5lLCBvciB0aGUgc3Vn
Z2VzdGlvbiBjb3VsZCBiZSBpbiBtaWRkbGUgb2YgYSBsaW5lLiBCZWNhdXNlIGEgc3VnZ2VzdGlv
bkhpbnQgb25seSBjb250YWlucyB0ZXh0IHdoZW4KKyAgICAgICAgd2UgYXJlIGluIG1pZGRsZSBv
ZiBhdXRvY29tcGxldGlvbiwgaXQgYWxvbmUgaXMgYW4gaW5kaWNhdG9yIHRoYXQgcHJlc3Npbmcg
dGhlIHJpZ2h0IGFycm93IGtleSBzaG91bGQgY29tbWl0IHRoZQorICAgICAgICBjb21wbGV0aW9u
LiBgZG9jdW1lbnQuZXhlY0NvbW1hbmRgIGlzIGRlcHJlY2F0ZWQsIHNvIGluc3RlYWQgd2Ugbm93
IHVzZSB0aGUgZXhpc3RpbmcgY29tcGxldGlvbiBjb21taXR0aW5nIHBhdGgKKyAgICAgICAgdG8g
cmVkdWNlIGR1cGxpY2F0ZWQgbG9naWMgaGVyZS4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIGxl
ZnQgYXJyb3cga2V5IGlzIHN0aWxsIGV4cGxpY2l0bHkgaGFuZGxlZCBmb3IgZGlzbWlzc2luZyBh
dXRvY29tcGxldGlvbiwgYXMgdGhlIG5ldyBtZWNoYW5pc20gZm9yCisgICAgICAgIGRpc21pc3Np
bmcgYXV0b2NvbXBsZXRpb24gd29uJ3QgdHJpZ2dlciB1bmxlc3MgdGhlIGNhcmV0IGhhcyBtb3Zl
ZCwgYW5kIHRoZSBjYXJldCB3aWxsIG5vdCBtb3ZlIGlmIHlvdSBwcmVzcyB0aGUKKyAgICAgICAg
bGVmdCBhcnJvdyBrZXkgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IGZpZWxkLgorCisgICAgICAg
IChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUtleVVwKToKKyAgICAg
ICAgV2hlbiBhIGtleSBpcyByZWxlYXNlZCwgd2Ugc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiB0aGUg
Y2FyZXQgaGFzIG1vdmVkIGFzIGEgcmVzdWx0IG9mIHRoZSBrZXlzdHJva2UgdGhhdCB3ZSBoYXZl
CisgICAgICAgIG5vdCBhbHJlYWR5IGV4cGxpY2l0bHkgaGFuZGxlZC4gSWYgaXQgaGFzIG1vdmVk
IGFuZCB3YXMgbm90IGhhbmRsZWQsIHdlIGRpc21pc3MgdGhlIGF1dG9jb21wbGV0aW9uIHN1Z2dl
c3Rpb25zLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hh
bmRsZUlucHV0KToKKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBl
Ll91cGRhdGVDb21wbGV0aW9ucyk6CisgICAgICAgIFByb3ZpZGUgdGhlIGN1cnJlbnQgY2FyZXQg
cG9zaXRpb24gdG8gdGhlIGNvbXBsZXRpb24gcHJvdmlkZWQuCisKKyAgICAgICAgKFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fc2hvd1N1Z2dlc3Rpb25zVmlldyk6CisgICAgICAg
IEluIG9yZGVyIHRvIGNvcnJlY3RseSBhbGlnbiB0aGUgY29tcGxldGlvbiBsaXN0IHdpdGggdGhl
IGN1cnJlbnQgdGV4dCBjb250ZW50LCBpdCBtdXN0IGJlIG9mZnNldCBmcm9tIHRoZSBjYXJldAor
ICAgICAgICBwb3NpdGlvbiBleGNsdWRpbmcgdGhlIGN1cnJlbnQgcHJlZml4LgorCisgICAgICAg
IChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2dldENhcmV0UG9zaXRpb24pOgor
ICAgICAgICBBZGRlZCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBjYXJldCBpbiB0aGUgY29tcGxl
dGUgdGV4dCB2YWx1ZSwgYWNjb3VudGluZyBmb3IgbXVsdGktbGluZSB2YWx1ZXMgYW5kIG1pZC1s
aW5lCisgICAgICAgIHN1Z2dlc3Rpb25zLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRG
aWVsZC5wcm90b3R5cGUuX2dldENhcmV0UmVjdCk6CisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0
VGV4dEZpZWxkLnByb3RvdHlwZS5fcmFuZ2VBdENhcmV0UG9zaXRpb24pOgorICAgICAgICBGaW5k
IHRoZSByYW5nZSBmb3IgYSBjYXJldCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIFRoaXMgY29tcGxp
bWVudHMgYF9nZXRDYXJldFBvc2l0aW9uYCwgYW5kIGFsbG93cyB1cyB0byBjb3VudAorICAgICAg
ICBiYWNrIHNvbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYW5kIGNyZWF0ZSBhIHJhbmdlIG9mIHdo
aWNoIHdlIGxhdGVyIGdldCB0aGUgY2xpZW50IHJlY3RhbmdsZS4KKworICAgICAgICAoV0kuU3By
ZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBseUNvbXBsZXRpb25IaW50KToKKyAgICAg
ICAgQWRkIG9wdGlvbmFsIHN1cHBvcnQgZm9yIHVwZGF0aW5nIHRoZSBjYXJldCBwb3NpdGlvbiB0
byBiZSBhdCB0aGUgZW5kIG9mIHRoZSBuZXdseSBpbnNlcnRlZCB0ZXh0LgorCisgICAgICAgIChX
SS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hp
bGRyZW4pOgorICAgICAgICBBZGRlZCB0byBoYW5kbGUgY29tYmluaW5nIHRoZSBmcmFnbWVudGVk
IHRleHQgbm9kZXMgKGFuZCBwb3NzaWJseSBhIHN1Z2dlc3Rpb24gaGludCBlbGVtZW50KSBiYWNr
IGludG8gYSBzaW5nbGUKKyAgICAgICAgdGV4dCBub2RlIHdoaWxlIG1haW50YWluaW5nIHRoZSBj
dXJyZW50IGN1cnNvciBwb3NpdGlvbiBvciBvcHRpb25hbGx5IG1vdmluZyB0aGUgY3Vyc29yIHRv
IGEgbmV3IGxvY2F0aW9uIChlLmcuCisgICAgICAgIHRoZSBlbmQgb2YgYSBjb21wbGV0aW9uKS4K
KworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9yZUF0dGFjaFN1
Z2dlc3Rpb25IaW50KToKKyAgICAgICAgTm93IHRoYXQgY29tcGxldGlvbnMgYXJlIG5vdCBndWFy
YW50ZWVkIHRvIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHZhbHVlLCB3ZSBtYXkgbmVlZCB0byBzcGxp
dCB0aGUgdGV4dCBub2RlIHRvCisgICAgICAgIGluc2VydCB0aGUgc3VnZ2VzdGlvbiBoaW50IG5v
ZGUuCisKIDIwMjEtMTAtMTEgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogYWRkIFRhYkJhciBjb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0
U3R5bGVQcm9wZXJ0eS5qcwppbmRleCBjMDMxYzBjOTdhNjdiZDcyYmExMzcwZDk0NDU5NjU1YmVj
NWFkMDRjLi4xY2YyN2U5YTUwMDI2ZWZhNWNiNDNmMzdlYzU2NmI5MTYwOTk1ZjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dFN0eWxlUHJvcGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCkBAIC05NjMsOSArOTYzLDkgQEAg
V0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3Bl
cnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfbmFtZUNvbXBs
ZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2FsbG93RW1wdHlQcmVmaXh9ID0ge30pCisgICAgX25h
bWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5
UHJlZml4fSA9IHt9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0
aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKHRleHQsIHthbGxvd0VtcHR5UHJlZml4fSk7Cisg
ICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5
TmFtZSh0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeH0pOwogICAgIH0KIAog
ICAgIF9oYW5kbGVWYWx1ZUJlZm9yZUlucHV0KGV2ZW50KQpAQCAtOTg3LDEwICs5ODcsOSBAQCBX
SS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5zcHJlYWRzaGVldFRleHRGaWVsZERp
ZENvbW1pdCh0aGlzLl92YWx1ZVRleHRGaWVsZCwge2RpcmVjdGlvbjogImZvcndhcmQifSk7CiAg
ICAgfQogCi0gICAgX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7YWxsb3dFbXB0
eVByZWZpeH0gPSB7fSkKKyAgICBfdmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtj
YXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9KQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IDx3ZWJraXQub3JnL2IvMjI3NDExPiBTdHlsZXMgc2lkZWJhciBwYW5lbCBzaG91bGQg
c3VwcG9ydCBtaWRsaW5lIGFuZCBtdWx0aWxpbmUgY29tcGxldGlvbnMuCi0gICAgICAgIHJldHVy
biBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUodGV4dCwg
dGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7YWRkaXRpb25hbEZ1bmN0aW9u
VmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29t
cGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7CisgICAgICAgIHJldHVybiBXSS5DU1NLZXl3
b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUodGV4dCwgdGhpcy5fbmFtZUVs
ZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7Y2FyZXRQb3NpdGlvbiwgYWRkaXRpb25hbEZ1bmN0
aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0aW9uYWxGdW5jdGlvblZhbHVl
Q29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7CiAgICAgfQogCiAgICAgX3NldHVwSnVt
cFRvU3ltYm9sKGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCmluZGV4
IDEzNGQ2NGU5ZmE3N2Y5OTE5YTFmNTUzYTIwOWYwYzVjOTAyMTg3ODUuLjMwOWUwNTdhNzdhMmE2
YjA5ZDE1MTBiNTQ2MjM0NTJjNjlkNDVmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZp
ZWxkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NCw5ICs0NCwxMiBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5faGFuZGxlQmx1ci5iaW5kKHRoaXMpKTsK
ICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5f
aGFuZGxlS2V5RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2hhbmRsZUtleVVwLmJpbmQodGhpcykpOwogICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5faGFuZGxlSW5w
dXQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25LZXlVcCA9IGZhbHNlOworICAg
ICAgICB0aGlzLl9rZXlEb3duQ2FyZXRQb3NpdGlvbiA9IC0xOwogICAgICAgICB0aGlzLl92YWx1
ZUJlZm9yZUVkaXRpbmcgPSAiIjsKICAgICAgICAgdGhpcy5fY29tcGxldGlvblByZWZpeCA9ICIi
OwogICAgICAgICB0aGlzLl9jb250cm9sU3BhY2VLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdJLktl
eWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXSS5L
ZXlib2FyZFNob3J0Y3V0LktleS5TcGFjZSk7CkBAIC02Myw4ICs2NiwxNCBAQCBXSS5TcHJlYWRz
aGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICB2YWx1ZVdp
dGhvdXRTdWdnZXN0aW9uKCkKICAgICB7Ci0gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuX2VsZW1l
bnQudGV4dENvbnRlbnQ7Ci0gICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwLCB2YWx1ZS5sZW5n
dGggLSB0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCk7CisgICAgICAgIC8vIFRoZSBzdWdnZXN0
aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSB3aXRoaW4gdGhlIGVsZW1lbnQsIGFuZCB0aGUgdGV4
dCBvZiB0aGUgZWxlbWVudCBjYW4gc3BhbiBtdWx0aXBsZSBub2Rlcy4KKyAgICAgICAgbGV0IHZh
bHVlV2l0aG91dFN1Z2dlc3Rpb24gPSAiIjsKKyAgICAgICAgZm9yIChsZXQgY2hpbGROb2RlIG9m
IHRoaXMuX2VsZW1lbnQuY2hpbGROb2RlcykgeworICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSA9
PT0gdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgdmFsdWVXaXRob3V0U3VnZ2VzdGlvbiArPSBjaGlsZE5vZGUudGV4dENv
bnRlbnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlV2l0aG91dFN1Z2dlc3Rpb247
CiAgICAgfQogCiAgICAgZ2V0IHN1Z2dlc3Rpb25IaW50KCkKQEAgLTc0LDEyICs4MywyMCBAQCBX
SS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAg
ICBzZXQgc3VnZ2VzdGlvbkhpbnQodmFsdWUpCiAgICAgeworICAgICAgICBpZiAodGhpcy5fc3Vn
Z2VzdGlvbkhpbnRFbGVtZW50LnRleHRDb250ZW50ID09PSB2YWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICB0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQudGV4dENvbnRlbnQg
PSB2YWx1ZTsKIAotICAgICAgICBpZiAodmFsdWUpCisgICAgICAgIGlmICh2YWx1ZSkgewogICAg
ICAgICAgICAgdGhpcy5fcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQucmVtb3ZlKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zdWdnZXN0aW9uSGludEVs
ZW1lbnQucmVtb3ZlKCk7CisKKyAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIHN1Z2dlc3Rpb24gaGlu
dCBlbGVtZW50IG1heSBsZWF2ZSB0aGUgY29udGVudHMgb2YgYF9lbGVtZW50YCBmcmFnbWVudGVk
IGludG8gbXVsdGlwbGUgdGV4dCBub2Rlcy4KKyAgICAgICAgdGhpcy5fY29tYmluZUVkaXRvckVs
ZW1lbnRDaGlsZHJlbigpOwogICAgIH0KIAogICAgIHN0YXJ0RWRpdGluZygpCkBAIC05Myw2ICsx
MTAsOCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZp
ZWxkCiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVlOwogICAgICAgICB0aGlzLl92YWx1ZUJl
Zm9yZUVkaXRpbmcgPSB0aGlzLnZhbHVlOwogCisgICAgICAgIHRoaXMuX2tleURvd25DYXJldFBv
c2l0aW9uID0gLTE7CisKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJlZGl0
aW5nIik7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY29udGVudEVkaXRhYmxlID0gInBsYWludGV4
dC1vbmx5IjsKICAgICAgICAgdGhpcy5fZWxlbWVudC5zcGVsbGNoZWNrID0gZmFsc2U7CkBAIC0x
NDIsNyArMTYxLDggQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVl
dFRleHRGaWVsZAogICAgIHsKICAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNlbGVjdGVk
VGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CiAKLSAgICAgICAgdGhp
cy5fcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpOworICAgICAgICBpZiAodGhpcy5zdWdnZXN0aW9u
SGludC5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCk7
CiAKICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5z
cHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAg
IHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlKHRoaXMpOwpAQCAt
MTUwLDI2ICsxNzAsOSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAKICAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29tcGxldGlv
bihzdWdnZXN0aW9uc1ZpZXcsIHNlbGVjdGVkVGV4dCkKICAgICB7Ci0gICAgICAgIC8vIENvbnNp
ZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKLSAgICAgICAgLy8KLSAgICAgICAgLy8gICBib3Jk
ZXI6IDFweCBzb2xpZCByb3wKLSAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICByb3N5YnJv
d24KLSAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICByb3lhbGJsdWUKLSAgICAgICAgLy8K
LSAgICAgICAgLy8gQ2xpY2tpbmcgb24gInJvc3licm93biIgc2hvdWxkIHJlcGxhY2UgInJvIiB3
aXRoICJyb3N5YnJvd24iLgotICAgICAgICAvLwotICAgICAgICAvLyAgICAgICAgICAgcHJlZml4
OiAgMXB4IHNvbGlkIHJvCi0gICAgICAgIC8vIGNvbXBsZXRpb25QcmVmaXg6ICAgICAgICAgICAg
cm8KLSAgICAgICAgLy8gICAgICAgIG5ld1ByZWZpeDogIDFweCBzb2xpZAotICAgICAgICAvLyAg
ICAgc2VsZWN0ZWRUZXh0OiAgICAgICAgICAgIHJvc3licm93bgotICAgICAgICBsZXQgcHJlZml4
ID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBuZXdQcmVmaXgg
PSBwcmVmaXguc2xpY2UoMCwgLXRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKTsKLQotICAg
ICAgICB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50ID0gbmV3UHJlZml4ICsgc2VsZWN0ZWRUZXh0
OwotCi0gICAgICAgIC8vIFBsYWNlIHRleHQgY2FyZXQgYXQgdGhlIGVuZC4KLSAgICAgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGhpcy5fZWxlbWVudCwgc2VsZWN0
ZWRUZXh0Lmxlbmd0aCwgdGhpcy5fZWxlbWVudCwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCk7CisgICAg
ICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxlY3RlZFRleHQuc2xpY2UodGhpcy5fY29tcGxl
dGlvblByZWZpeC5sZW5ndGgpOwogCisgICAgICAgIHRoaXMuX2FwcGx5Q29tcGxldGlvbkhpbnQo
e21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uOiB0cnVlfSk7CiAgICAgICAgIHRoaXMuZGlzY2Fy
ZENvbXBsZXRpb24oKTsKIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRo
aXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24i
KQpAQCAtMjAwLDggKzIwMywxMSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNw
cmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBfaGFuZGxlTW91c2VEb3duKGV2ZW50KQogICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcpCi0gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKKyAgICAgICAgaWYgKCF0aGlzLl9lZGl0aW5nKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIHRo
aXMuZGlzY2FyZENvbXBsZXRpb24oKTsKICAgICB9CiAKICAgICBfaGFuZGxlQmx1cihldmVudCkK
QEAgLTIyNiw4ICsyMzIsMTIgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJl
YWRzaGVldFRleHRGaWVsZAogICAgICAgICBpZiAoIXRoaXMuX2VkaXRpbmcpCiAgICAgICAgICAg
ICByZXR1cm47CiAKKyAgICAgICAgdGhpcy5fcHJldmVudERpc2NhcmRpbmdDb21wbGV0aW9uc09u
S2V5VXAgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fa2V5RG93bkNhcmV0UG9zaXRpb24gPSB0aGlz
Ll9nZXRDYXJldFBvc2l0aW9uKCk7CisKICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25zVmll
dykgewogICAgICAgICAgICAgbGV0IGNvbnN1bWVkID0gdGhpcy5faGFuZGxlS2V5RG93bkZvclN1
Z2dlc3Rpb25WaWV3KGV2ZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3ByZXZlbnREaXNjYXJkaW5n
Q29tcGxldGlvbnNPbktleVVwID0gY29uc3VtZWQ7CiAgICAgICAgICAgICBpZiAoY29uc3VtZWQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTIsNiArMzAyLDcgQEAg
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAg
ICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25zVmlldy52aXNpYmxlKQogICAgICAgICAgICAg
ICAgIHRoaXMuX3N1Z2dlc3Rpb25zVmlldy5oaWRlKCk7CiAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25LZXlVcCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgY29uc3QgZm9yY2VDb21wbGV0aW9ucyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29tcGxldGlvbnMoZm9yY2VDb21wbGV0aW9ucyk7
CiAgICAgICAgICAgICB9CkBAIC0zMjcsMTIgKzMzOCwxMiBAQCBXSS5TcHJlYWRzaGVldFRleHRG
aWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChldmVudC5rZXkgPT09ICJBcnJvd1JpZ2h0IiAm
JiB0aGlzLnN1Z2dlc3Rpb25IaW50KSB7CisgICAgICAgIGlmIChldmVudC5rZXkgPT09ICJBcnJv
d1JpZ2h0IiAmJiB0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCkgewogICAgICAgICAgICAgbGV0
IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKIAotICAgICAgICAgICAgaWYgKHNl
bGVjdGlvbi5pc0NvbGxhcHNlZCAmJiAoc2VsZWN0aW9uLmZvY3VzT2Zmc2V0ID09PSB0aGlzLnZh
bHVlV2l0aG91dFN1Z2dlc3Rpb24oKS5sZW5ndGggfHwgc2VsZWN0aW9uLmZvY3VzTm9kZSA9PT0g
dGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKHNlbGVjdGlv
bi5pc0NvbGxhcHNlZCkgewogICAgICAgICAgICAgICAgIGV2ZW50LnN0b3AoKTsKLSAgICAgICAg
ICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsIGZhbHNlLCB0aGlzLnN1
Z2dlc3Rpb25IaW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50
KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbjogdHJ1ZX0pOwogCiAgICAgICAgICAgICAgICAg
Ly8gV2hlbiBjb21wbGV0aW5nICJiYWNrZ3JvdW5kIiwgZG9uJ3QgaGlkZSB0aGUgY29tcGxldGlv
biBwb3BvdmVyLgogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHNob3dpbmcgdGhlIHBvcG92
ZXIgd2l0aCBwcm9wZXJ0aWVzIHN1Y2ggYXMgImJhY2tncm91bmQtY29sb3IiIGFuZCAiYmFja2dy
b3VuZC1pbWFnZSIuCkBAIC0zNjIsMTYgKzM3MywzNSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgICAgIGlmICh0aGlzLl9k
ZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRD
aGFuZ2UgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3By
ZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBfaGFu
ZGxlS2V5VXAoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lZGl0aW5nKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIC8vIFNvbWUga2V5IGV2ZW50cywgbGlrZSB0aGUgYXJyb3cg
a2V5cyBhbmQgQ3RybCtBIChtb3ZlIHRvIGxpbmUgc3RhcnQpLCB3aWxsIG1vdmUgdGhlIGNhcmV0
IHdpdGhvdXQgY29tbWl0dGluZworICAgICAgICAvLyBhbnkgaW5wdXQgdG8gdGhlIHRleHQgZmll
bGQuIEluIHRob3NlIHNpdHVhdGlvbnMgd2Ugc2hvdWxkIGRpc2NhcmQgY29tcGxldGlvbiBpZiB0
aGV5IGFyZSBhdmFpbGFibGUuIEl0IGlzCisgICAgICAgIC8vIGFsc28gcG9zc2libGUgdGhhdCB3
ZSByZWNlaXZlIGEgS2V5VXAgZXZlbnQgZm9yIGEga2V5IHRoYXQgd2FzIG5vdCBwcmVzc2VkIGlu
c2lkZSB0aGlzIHRleHQgZmllbGQsIGluIHdoaWNoCisgICAgICAgIC8vIGNhc2UgdGhlIF9rZXlE
b3duQ2FyZXRQb3NpdGlvbiB3aWxsIHN0aWxsIGJlIC0xLiBUaGlzIGNhbiBvY2N1ciB3aGVuIHRo
ZSB1c2VyIHR5cGVzIGEgYDpgIHRvIGJlZ2luIGVkaXRpbmcKKyAgICAgICAgLy8gdGhlIHZhbHVl
IGZvciBhIHByb3BlcnR5LCBhbmQgdGhlIEtleVVwIGV2ZW50cyBmb3IgZWFjaCBvZiB0aG9zZSBr
ZXlzIHdpbGwgYmUgaGFuZGxlZCBoZXJlLCBldmVuIHRob3VnaCB0aGUKKyAgICAgICAgLy8gY29y
cmVzcG9uZGluZyBLZXlEb3duIGV2ZW50cyB3YXMgbmV2ZXIgaGFuZGxlZCBieSB0aGlzIHRleHQg
ZmllbGQuCisgICAgICAgIGlmICghdGhpcy5fc3VnZ2VzdGlvbnNWaWV3IHx8IHRoaXMuX3ByZXZl
bnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktleVVwIHx8IHRoaXMuX2tleURvd25DYXJldFBvc2l0
aW9uID09PSB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCkgfHwgdGhpcy5fa2V5RG93bkNhcmV0UG9z
aXRpb24gPT09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuZGlzY2Fy
ZENvbXBsZXRpb24oKTsKKyAgICB9CisKICAgICBfaGFuZGxlSW5wdXQoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2VkaXRpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAg
ICAgdGhpcy5fcHJldmVudERpc2NhcmRpbmdDb21wbGV0aW9uc09uS2V5VXAgPSB0cnVlOwogICAg
ICAgICB0aGlzLl91cGRhdGVDb21wbGV0aW9ucygpOwogCiAgICAgICAgIGlmICh0aGlzLl9kZWxl
Z2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFu
Z2UgPT09ICJmdW5jdGlvbiIpCkBAIC0zODQsNyArNDE0LDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGxldCB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uID0gdGhpcy52YWx1ZVdpdGhvdXRT
dWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0gPSB0aGlzLl9j
b21wbGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbiwge2FsbG93RW1wdHlQcmVm
aXg6IGZvcmNlQ29tcGxldGlvbnN9KTsKKyAgICAgICAgbGV0IHtjb21wbGV0aW9ucywgcHJlZml4
fSA9IHRoaXMuX2NvbXBsZXRpb25Qcm92aWRlcih2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uLCB7YWxs
b3dFbXB0eVByZWZpeDogZm9yY2VDb21wbGV0aW9ucywgY2FyZXRQb3NpdGlvbjogdGhpcy5fZ2V0
Q2FyZXRQb3NpdGlvbigpfSk7CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVmaXggPSBwcmVm
aXg7CiAKICAgICAgICAgaWYgKCFjb21wbGV0aW9ucy5sZW5ndGgpIHsKQEAgLTQyMiw5ICs0NTIs
MTQgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVs
ZAogCiAgICAgX3Nob3dTdWdnZXN0aW9uc1ZpZXcoKQogICAgIHsKLSAgICAgICAgbGV0IHByZWZp
eCA9IHRoaXMudmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpOwotICAgICAgICBsZXQgc3RhcnRPZmZz
ZXQgPSBwcmVmaXgubGVuZ3RoIC0gdGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGg7Ci0gICAg
ICAgIGxldCBjYXJldFJlY3QgPSB0aGlzLl9nZXRDYXJldFJlY3Qoc3RhcnRPZmZzZXQpOworICAg
ICAgICAvLyBBZGp1c3QgdGhlIHVzZWQgY2FyZXQgcG9zaXRpb24gdG8gY29ycmVjdGx5IGFsaWdu
IGF1dG9jb21wbGV0aW9uIHJlc3VsdHMgd2l0aCBleGlzdGluZyB0ZXh0LiBUaGUgc3VnZ2VzdGlv
bnMKKyAgICAgICAgLy8gc2hvdWxkIGFwcGVhciBhbGlnbmVkIGFzIGJlbG93OgorICAgICAgICAv
LworICAgICAgICAvLyBib3JkZXI6IDFweCBzb2xpZCByb3wKKyAgICAgICAgLy8gICAgICAgICAg
ICAgICAgICAgcm9zeWJyb3duCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgIHJveWFsYmx1
ZQorICAgICAgICBsZXQgYWRqdXN0ZWRDYXJldFBvc2l0aW9uID0gdGhpcy5fZ2V0Q2FyZXRQb3Np
dGlvbigpIC0gdGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGg7CisgICAgICAgIGxldCBjYXJl
dFJlY3QgPSB0aGlzLl9nZXRDYXJldFJlY3QoYWRqdXN0ZWRDYXJldFBvc2l0aW9uKTsKIAogICAg
ICAgICAvLyBIaWRlIGNvbXBsZXRpb24gcG9wb3ZlciB3aGVuIHRoZSBhbmNob3IgZWxlbWVudCBp
cyByZW1vdmVkIGZyb20gdGhlIERPTS4KICAgICAgICAgaWYgKCFjYXJldFJlY3QpCkBAIC00MzUs
NDcgKzQ3MCwxMDYgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVl
dFRleHRGaWVsZAogICAgICAgICB9CiAgICAgfQogCi0gICAgX2dldENhcmV0UmVjdChzdGFydE9m
ZnNldCkKKyAgICBfZ2V0Q2FyZXRQb3NpdGlvbigpCiAgICAgeworICAgICAgICAvLyBUaGUgd2lu
ZG93J3Mgc2VsZWN0aW9uIHJhbmdlIHdpbGwgb25seSBjb250YWluIHRoZSBjdXJyZW50IGxpbmUn
cyBwb3NpdGlvbmluZyBpbiBtdWx0aWxpbmUgdGV4dCwgc28gYSBuZXcKKyAgICAgICAgLy8gcmFu
Z2UgbXVzdCBiZSBjcmVhdGVkIGJldHdlZW4gdGhlIGVuZCBvZiB0aGUgY3VycmVudCByYW5nZSBh
bmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3QgbGluZSBvZiB0ZXh0IGluCisgICAgICAgIC8v
IG9yZGVyIHRvIGdldCBhbiBhY2N1cmF0ZSBjaGFyYWN0ZXIgcG9zaXRpb24gZm9yIHRoZSBjYXJl
dC4KICAgICAgICAgbGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAg
ICAgaWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisg
ICAgICAgIGxldCBsaW5lUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKKyAgICAgICAg
bGV0IG11bHRpbGluZVJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgbXVs
dGlsaW5lUmFuZ2Uuc2V0U3RhcnQodGhpcy5fZWxlbWVudCwgMCk7CisgICAgICAgIG11bHRpbGlu
ZVJhbmdlLnNldEVuZChsaW5lUmFuZ2UuZW5kQ29udGFpbmVyLCBsaW5lUmFuZ2UuZW5kT2Zmc2V0
KTsKKyAgICAgICAgcmV0dXJuIG11bHRpbGluZVJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoOworICAg
IH0KIAorICAgIF9nZXRDYXJldFJlY3QoY2FyZXRQb3NpdGlvbikKKyAgICB7CiAgICAgICAgIGxl
dCBpc0hpZGRlbiA9IChjbGllbnRSZWN0KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2xpZW50
UmVjdC54ID09PSAwICYmIGNsaWVudFJlY3QueSA9PT0gMDsKICAgICAgICAgfTsKIAotICAgICAg
ICBpZiAoc2VsZWN0aW9uLnJhbmdlQ291bnQpIHsKLSAgICAgICAgICAgIGxldCByYW5nZSA9IHNl
bGVjdGlvbi5nZXRSYW5nZUF0KDApLmNsb25lUmFuZ2UoKTsKLSAgICAgICAgICAgIHJhbmdlLnNl
dFN0YXJ0KHJhbmdlLnN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCk7Ci0gICAgICAgICAgICBs
ZXQgY2xpZW50UmVjdCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotCi0gICAgICAg
ICAgICBpZiAoIWlzSGlkZGVuKGNsaWVudFJlY3QpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhp
cyBoYXBwZW5zIGFmdGVyIGRlbGV0aW5nIHZhbHVlLiBIb3dldmVyLCB3aGVuIGZvY3VzaW5nCi0g
ICAgICAgICAgICAgICAgLy8gb24gYW4gZW1wdHkgdmFsdWUgY2xpZW50UmVjdCBpcyB2aXNpYmxl
LgotICAgICAgICAgICAgICAgIHJldHVybiBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChjbGll
bnRSZWN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBsZXQgY2FyZXRSYW5n
ZSA9IHRoaXMuX3JhbmdlQXRDYXJldFBvc2l0aW9uKGNhcmV0UG9zaXRpb24pOworICAgICAgICBs
ZXQgY2FyZXRDbGllbnRSZWN0ID0gY2FyZXRSYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsK
KyAgICAgICAgaWYgKCFpc0hpZGRlbihjYXJldENsaWVudFJlY3QpKQorICAgICAgICAgICAgcmV0
dXJuIFdJLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGNhcmV0Q2xpZW50UmVjdCk7CiAKLSAgICAg
ICAgbGV0IGNsaWVudFJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OwotICAgICAgICBpZiAoaXNIaWRkZW4oY2xpZW50UmVjdCkpCisgICAgICAgIGxldCBlbGVtZW50
Q2xpZW50UmVjdCA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAg
ICAgIGlmIChpc0hpZGRlbihlbGVtZW50Q2xpZW50UmVjdCkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKIAogICAgICAgICBjb25zdCBsZWZ0UGFkZGluZyA9IHBhcnNlSW50KGdldENvbXB1dGVk
U3R5bGUodGhpcy5fZWxlbWVudCkucGFkZGluZ0xlZnQpIHx8IDA7Ci0gICAgICAgIHJldHVybiBu
ZXcgV0kuUmVjdChjbGllbnRSZWN0LmxlZnQgKyBsZWZ0UGFkZGluZywgY2xpZW50UmVjdC50b3As
IGNsaWVudFJlY3Qud2lkdGgsIGNsaWVudFJlY3QuaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIG5l
dyBXSS5SZWN0KGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBsZWZ0UGFkZGluZywgZWxlbWVudENs
aWVudFJlY3QudG9wLCBlbGVtZW50Q2xpZW50UmVjdC53aWR0aCwgZWxlbWVudENsaWVudFJlY3Qu
aGVpZ2h0KTsKKyAgICB9CisKKyAgICBfcmFuZ2VBdENhcmV0UG9zaXRpb24oY2FyZXRQb3NpdGlv
bikgeworICAgICAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMuX2VsZW1lbnQuY2hpbGROb2Rlcykg
eworICAgICAgICAgICAgbGV0IHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudDsKKyAgICAg
ICAgICAgIGlmIChjYXJldFBvc2l0aW9uIDw9IHRleHRDb250ZW50Lmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgIGxldCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgICAg
ICAgICAgcmFuZ2Uuc2V0U3RhcnQobm9kZSwgY2FyZXRQb3NpdGlvbik7CisgICAgICAgICAgICAg
ICAgcmFuZ2Uuc2V0RW5kKG5vZGUsIGNhcmV0UG9zaXRpb24pOworICAgICAgICAgICAgICAgIHJl
dHVybiByYW5nZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FyZXRQb3NpdGlvbiAt
PSB0ZXh0Q29udGVudC5sZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGVyZSBh
cmUgbm8gbm9kZXMsIG9yIHRoZSBjYXJldCBwb3NpdGlvbiBpcyBncmVhdGVyIHRoYW4gdGhlIHRv
dGFsIHRleHQgY29udGVudCwgcHJvdmlkZSB0aGUgcmFuZ2Ugb2YgYQorICAgICAgICAvLyBjYXJl
dCBhdCB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgorICAgICAgICBsZXQgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHModGhpcy5f
ZWxlbWVudCk7CisgICAgICAgIHJhbmdlLmNvbGxhcHNlKCk7CisgICAgICAgIHJldHVybiByYW5n
ZTsKICAgICB9CiAKLSAgICBfYXBwbHlDb21wbGV0aW9uSGludCgpCisgICAgX2FwcGx5Q29tcGxl
dGlvbkhpbnQoe21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9ufSA9IHt9KQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIgfHwgIXRoaXMuc3VnZ2VzdGlvbkhpbnQp
CiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgLy8gbGV0IG5ld0NhcmV0UG9zaXRpb24g
PSBtb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbiA/IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKSAr
IHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoIDogbnVsbDsKKyAgICAgICAgdGhpcy5fY29tYmlu
ZUVkaXRvckVsZW1lbnRDaGlsZHJlbih7bmV3Q2FyZXRQb3NpdGlvbjogbW92ZUNhcmV0VG9FbmRP
ZkNvbXBsZXRpb24gPyB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCkgKyB0aGlzLnN1Z2dlc3Rpb25I
aW50Lmxlbmd0aCA6IG51bGx9KTsKKyAgICB9CisKKyAgICBfY29tYmluZUVkaXRvckVsZW1lbnRD
aGlsZHJlbih7bmV3Q2FyZXRQb3NpdGlvbn0gPSB7fSkKKyAgICB7CisgICAgICAgIG5ld0NhcmV0
UG9zaXRpb24gPz89IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKTsKKworICAgICAgICAvLyBTZXR0
aW5nIHRoZSB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudCB0byBpdHMgY3VycmVudCB0ZXh0Q29u
dGVudCB3aWxsIHRha2UgdGhlIHRleHQgZnJvbSB0aGUgbXVsdGlwbGUKKyAgICAgICAgLy8gcG90
ZW50aWFsIGNoaWxkIG5vZGVzIChwb3RlbnRpYWxseSBhIHN1Z2dlc3Rpb24gaGludCBub2RlIGFu
ZCBzb21lIG51bWJlciBvZiBleGlzdGluZyB0ZXh0IG5vZGVzKSBhbmQgdHVybgorICAgICAgICAv
LyB0aGVtIGludG8gYSBzaW5nbGUgdGV4dCBub2RlIHdpdGhpbiB0aGUgZWxlbWVudC4KICAgICAg
ICAgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7
CisKKyAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQubGVuZ3RoKSB7CisgICAg
ICAgICAgICBsZXQgdGV4dENoaWxkTm9kZSA9IHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZDsKKyAg
ICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRDaGlsZE5vZGUgaW5zdGFuY2VvZiBUZXh0LCB0
ZXh0Q2hpbGROb2RlKTsKKyAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNl
QW5kRXh0ZW50KHRleHRDaGlsZE5vZGUsIG5ld0NhcmV0UG9zaXRpb24sIHRleHRDaGlsZE5vZGUs
IG5ld0NhcmV0UG9zaXRpb24pOworICAgICAgICB9CiAgICAgfQogCiAgICAgX3JlQXR0YWNoU3Vn
Z2VzdGlvbkhpbnQoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5zdWdnZXN0
aW9uSGludC5sZW5ndGgsICJTdWdnZXN0aW9uIGhpbnQgc2hvdWxkIG5vdCBiZSBlbXB0eSB3aGVu
IGF0dGFjaGluZyB0aGUgc3VnZ2VzdGlvbiBoaW50IGVsZW1lbnQuIik7CisKICAgICAgICAgaWYg
KHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudC5wYXJlbnRFbGVtZW50ID09PSB0aGlzLl9lbGVt
ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
KHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudCk7CisgICAgICAgIGxldCBzZWxlY3Rpb24gPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmICghdGhpcy5fZWxlbWVudC50ZXh0Q29u
dGVudC5sZW5ndGggfHwgIXNlbGVjdGlvbi5yYW5nZUNvdW50KSB7CisgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZCh0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHJhbmdlID0gc2VsZWN0aW9uLmdl
dFJhbmdlQXQoMCk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmFuZ2UuZW5kQ29udGFpbmVy
IGluc3RhbmNlb2YgVGV4dCwgcmFuZ2UuZW5kQ29udGFpbmVyKTsKKyAgICAgICAgaWYgKCEocmFu
Z2UuZW5kQ29udGFpbmVyIGluc3RhbmNlb2YgVGV4dCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fc3VnZ2VzdGlvbkhpbnRF
bGVtZW50LCByYW5nZS5lbmRDb250YWluZXIuc3BsaXRUZXh0KHJhbmdlLmVuZE9mZnNldCkpOwog
ICAgIH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443703</attachid>
            <date>2021-11-09 10:21:36 -0800</date>
            <delta_ts>2021-11-12 10:06:29 -0800</delta_ts>
            <desc>Patch v1.1.1 - Remove stray commented-out code</desc>
            <filename>bug-227411-20211109102135.patch</filename>
            <type>text/plain</type>
            <size>23474</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
MWFlYjdkZjUyMTQxMGI3MjFjOWUyZGYxODU5NDU3OTliZDEwNDAzLi45OWIyN2EyZTRhZjU0NGVk
Y2RlMTBiMmEyYzdhYzBhZmViODhhYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMS0xMC0xMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGVzOiBBdXRvY29tcGxldGUgc2hvdWxkIHN1
cHBvcnQgbWlkLWxpbmUgY29tcGxldGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEF1dG9jb21wbGV0aW9uIGZvciBDU1MgcHJvcGVydHkgdmFsdWVz
IHdhcyBsYWNraW5nIGluIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gbWlkLWxpbmUgY29tcGxldGlv
bnMsIGluY2x1ZGluZworICAgICAgICB3aXRoaW4gZnVuY3Rpb25zLCBhbmQgYSBsYWNrIG9mIHN1
cHBvcnQgZm9yIG11bHRpLWxpbmUgQ1NTIHByb3BlcnR5IHZhbHVlcy4gVGhpcyByZXNvbHZlcyB0
aG9zZSBwYWluIHBvaW50cyBieQorICAgICAgICBtYWtpbmcgU3ByZWFkc2hlZXRUZXh0RmllbGQg
bXVsdGktbGluZSBhd2FyZSBhbmQgYWxsb3dpbmcgbWlkLWxpbmUgYXV0b2NvbXBsZXRpb24uCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5q
czoKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX25hbWVD
b21wbGV0aW9uRGF0YVByb3ZpZGVyKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9w
ZXJ0eS5wcm90b3R5cGUuX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcik6CisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzOgorICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQucHJvdG90eXBlLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24pOgorICAgICAgICBCZWNhdXNlIHN1
Z2dlc3Rpb25zIGNhbiBvY2N1ciBhbnl3aGVyZSB3aXRoaW4gdGhlIHZhbHVlLCB3ZSBuZWVkIHRv
IGl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9mIHRoZSBub2RlcyBhbmQKKyAgICAgICAgY29sbGVjdCB0
aGUgdGV4dCBvZiBhbnkgb2YgdGhlbSB0aGF0IGFyZSBub3QgdGhlIGNvbXBsZXRpb24gc3VnZ2Vz
dGlvbi4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLnNldCBz
dWdnZXN0aW9uSGludCk6CisgICAgICAgIFdoZW4gcmVtb3ZpbmcgdGhlIHN1Z2dlc3Rpb24gaGlu
dCBlbGVtZW50LCB3ZSBzaG91bGQgcmVjb21iaW5lIHRoZSB0ZXh0IG5vZGVzIHdlIG1heSBoYXZl
IHNwbGl0IHVwb24gaW5zZXJ0aW9uCisgICAgICAgIHRvIHByZXZlbnQgdGhlIHRleHQgY29udGVu
dCBmcm9tIGJlY29taW5nIGVuZGxlc3NseSBmcmFnbWVudGVkIGludG8gbXVsdGlwbGUgdGV4dCBu
b2RlcyB1bm5lY2Vzc2FyaWx5LgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5w
cm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgUmVzZXQgdGhlIGxhc3Qga25vd24gY2Fy
ZXQgcG9zaXRpb24gd2hlbiBlZGl0aW5nIHN0YXJ0cyBzbyB0aGF0IHdlIGRvbid0IG1pc3Rha2Ug
a2V5cyB0aGF0IGFyZSBhbHJlYWR5IGRvd24gYXMKKyAgICAgICAgaGF2aW5nIG1vdmVkIHRoZSBj
dXJzb3IgdG8gaXRzIGluaXRpYWwgcG9zaXRpb24uCisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0
VGV4dEZpZWxkLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRp
b24pOgorICAgICAgICBXZSBzaG91bGQgb25seSBhdHRlbXB0IHRvIHJlYXR0YWNoIHRoZSBzdWdn
ZXN0aW9uIGhpbnQgZWxlbWVudCBpZiB3ZSBoYXZlIGEgc3VnZ2VzdGlvbiBoaW50IHRvIHNob3cs
IG90aGVyd2lzZQorICAgICAgICB3ZSBjb3VsZCBlbmQgdXAgd2l0aCBhIHBoYW50b20gZW1wdHkg
c3VnZ2VzdGlvbiBoaW50IHRoYXQgaXNuJ3QgcHJvcGVybHkgcGxhY2VkIGxhdGVyLgorCisgICAg
ICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rp
b25zQ2xpY2tlZENvbXBsZXRpb24pOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSBleGlzdGluZyBj
b21wbGV0aW9uIGNvbW1pdHRpbmcgcGF0aCB0byByZWR1Y2UgZHVwbGljYXRlZCBsb2dpYy4KKwor
ICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVNb3VzZURv
d24pOgorICAgICAgICBXaGVuIHRoZSB1c2VyIGNsaWNrcyBpbnNpZGUgdGhlIHRleHQgZmllbGQg
d2hpbGUgc3VnZ2VzdGlvbnMgYXJlIHZpc2libGUgdHJlYXQgdGhhdCBhcyBpbnRlbnQgdG8gc3Rv
cAorICAgICAgICBhdXRvY29tcGxldGlvbiBzaW1pbGFyIHRvIHRoZSBlc2NhcGUga2V5LCBzaW5j
ZSB0aGUgbmV3IGN1cnNvciBsb2NhdGlvbiBjb3VsZCBiZSBhbnl3aGVyZSBpbiB0aGUgdGV4dCBm
aWVsZC4KKyAgICAgICAgVGhpcyBiZWhhdmlvciBhbHNvIG1hdGNoZXMgb3RoZXIgY29kZSBlZGl0
b3JzIGxpa2UgWGNvZGUsIHdoZXJlIGNsaWNraW5nIG91dHNpZGUgYSBjb21wbGV0aW9uIHBvcHVw
IHdpbGwgZGlzbWlzcworICAgICAgICB0aGUgY29tcGxldGlvbnMgbGlzdC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duKToKKyAgICAg
ICAgS2VlcCB0cmFjayBvZiB3aGVyZSB0aGUgY2FyZXQgd2FzIGFzIHdlbGwgYXMgaWYgdGhlIHRo
ZSBrZXkgZXZlbnQgd2FzIGhhbmRsZWQgYnkgdGhlIHN1Z2dlc3Rpb24gdmlldyBhdCB0aGUgdGlt
ZQorICAgICAgICBhIGtleSBpcyBwcmVzc2VkIHNvIHRoYXQgd2UgY2FuIGxhdGVyIGNvbXBhcmUg
dGhlIHBvc2l0aW9uIHRvIHRoYXQgb2Ygd2hlbiB0aGUga2V5IGlzIHJlbGVhc2VkIHRvIGRldGVy
bWluZSBpZgorICAgICAgICBjb21wbGV0aW9ucyBzaG91bGQgYmUgZGlzY2FyZGVkLgorCisgICAg
ICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUtleURvd25Gb3JT
dWdnZXN0aW9uVmlldyk6CisgICAgICAgIFdlIGNhbiBubyBsb25nZXIgYXNzdW1lIHRoYXQgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uJ3Mgb2Zmc2V0IHdpbGwgbWF0Y2ggdGhlIHZhbHVlJ3MgbGVuZ3Ro
LCBhcyB0aGUgb2Zmc2V0IGNvdWxkCisgICAgICAgIGJlIG9uIGFueSBsaW5lLCBvciB0aGUgc3Vn
Z2VzdGlvbiBjb3VsZCBiZSBpbiBtaWRkbGUgb2YgYSBsaW5lLiBCZWNhdXNlIGEgc3VnZ2VzdGlv
bkhpbnQgb25seSBjb250YWlucyB0ZXh0IHdoZW4KKyAgICAgICAgd2UgYXJlIGluIG1pZGRsZSBv
ZiBhdXRvY29tcGxldGlvbiwgaXQgYWxvbmUgaXMgYW4gaW5kaWNhdG9yIHRoYXQgcHJlc3Npbmcg
dGhlIHJpZ2h0IGFycm93IGtleSBzaG91bGQgY29tbWl0IHRoZQorICAgICAgICBjb21wbGV0aW9u
LiBgZG9jdW1lbnQuZXhlY0NvbW1hbmRgIGlzIGRlcHJlY2F0ZWQsIHNvIGluc3RlYWQgd2Ugbm93
IHVzZSB0aGUgZXhpc3RpbmcgY29tcGxldGlvbiBjb21taXR0aW5nIHBhdGgKKyAgICAgICAgdG8g
cmVkdWNlIGR1cGxpY2F0ZWQgbG9naWMgaGVyZS4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIGxl
ZnQgYXJyb3cga2V5IGlzIHN0aWxsIGV4cGxpY2l0bHkgaGFuZGxlZCBmb3IgZGlzbWlzc2luZyBh
dXRvY29tcGxldGlvbiwgYXMgdGhlIG5ldyBtZWNoYW5pc20gZm9yCisgICAgICAgIGRpc21pc3Np
bmcgYXV0b2NvbXBsZXRpb24gd29uJ3QgdHJpZ2dlciB1bmxlc3MgdGhlIGNhcmV0IGhhcyBtb3Zl
ZCwgYW5kIHRoZSBjYXJldCB3aWxsIG5vdCBtb3ZlIGlmIHlvdSBwcmVzcyB0aGUKKyAgICAgICAg
bGVmdCBhcnJvdyBrZXkgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IGZpZWxkLgorCisgICAgICAg
IChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUtleVVwKToKKyAgICAg
ICAgV2hlbiBhIGtleSBpcyByZWxlYXNlZCwgd2Ugc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiB0aGUg
Y2FyZXQgaGFzIG1vdmVkIGFzIGEgcmVzdWx0IG9mIHRoZSBrZXlzdHJva2UgdGhhdCB3ZSBoYXZl
CisgICAgICAgIG5vdCBhbHJlYWR5IGV4cGxpY2l0bHkgaGFuZGxlZC4gSWYgaXQgaGFzIG1vdmVk
IGFuZCB3YXMgbm90IGhhbmRsZWQsIHdlIGRpc21pc3MgdGhlIGF1dG9jb21wbGV0aW9uIHN1Z2dl
c3Rpb25zLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hh
bmRsZUlucHV0KToKKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBl
Ll91cGRhdGVDb21wbGV0aW9ucyk6CisgICAgICAgIFByb3ZpZGUgdGhlIGN1cnJlbnQgY2FyZXQg
cG9zaXRpb24gdG8gdGhlIGNvbXBsZXRpb24gcHJvdmlkZWQuCisKKyAgICAgICAgKFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fc2hvd1N1Z2dlc3Rpb25zVmlldyk6CisgICAgICAg
IEluIG9yZGVyIHRvIGNvcnJlY3RseSBhbGlnbiB0aGUgY29tcGxldGlvbiBsaXN0IHdpdGggdGhl
IGN1cnJlbnQgdGV4dCBjb250ZW50LCBpdCBtdXN0IGJlIG9mZnNldCBmcm9tIHRoZSBjYXJldAor
ICAgICAgICBwb3NpdGlvbiBleGNsdWRpbmcgdGhlIGN1cnJlbnQgcHJlZml4LgorCisgICAgICAg
IChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2dldENhcmV0UG9zaXRpb24pOgor
ICAgICAgICBBZGRlZCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBjYXJldCBpbiB0aGUgY29tcGxl
dGUgdGV4dCB2YWx1ZSwgYWNjb3VudGluZyBmb3IgbXVsdGktbGluZSB2YWx1ZXMgYW5kIG1pZC1s
aW5lCisgICAgICAgIHN1Z2dlc3Rpb25zLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRG
aWVsZC5wcm90b3R5cGUuX2dldENhcmV0UmVjdCk6CisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0
VGV4dEZpZWxkLnByb3RvdHlwZS5fcmFuZ2VBdENhcmV0UG9zaXRpb24pOgorICAgICAgICBGaW5k
IHRoZSByYW5nZSBmb3IgYSBjYXJldCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIFRoaXMgY29tcGxp
bWVudHMgYF9nZXRDYXJldFBvc2l0aW9uYCwgYW5kIGFsbG93cyB1cyB0byBjb3VudAorICAgICAg
ICBiYWNrIHNvbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYW5kIGNyZWF0ZSBhIHJhbmdlIG9mIHdo
aWNoIHdlIGxhdGVyIGdldCB0aGUgY2xpZW50IHJlY3RhbmdsZS4KKworICAgICAgICAoV0kuU3By
ZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBseUNvbXBsZXRpb25IaW50KToKKyAgICAg
ICAgQWRkIG9wdGlvbmFsIHN1cHBvcnQgZm9yIHVwZGF0aW5nIHRoZSBjYXJldCBwb3NpdGlvbiB0
byBiZSBhdCB0aGUgZW5kIG9mIHRoZSBuZXdseSBpbnNlcnRlZCB0ZXh0LgorCisgICAgICAgIChX
SS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hp
bGRyZW4pOgorICAgICAgICBBZGRlZCB0byBoYW5kbGUgY29tYmluaW5nIHRoZSBmcmFnbWVudGVk
IHRleHQgbm9kZXMgKGFuZCBwb3NzaWJseSBhIHN1Z2dlc3Rpb24gaGludCBlbGVtZW50KSBiYWNr
IGludG8gYSBzaW5nbGUKKyAgICAgICAgdGV4dCBub2RlIHdoaWxlIG1haW50YWluaW5nIHRoZSBj
dXJyZW50IGN1cnNvciBwb3NpdGlvbiBvciBvcHRpb25hbGx5IG1vdmluZyB0aGUgY3Vyc29yIHRv
IGEgbmV3IGxvY2F0aW9uIChlLmcuCisgICAgICAgIHRoZSBlbmQgb2YgYSBjb21wbGV0aW9uKS4K
KworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9yZUF0dGFjaFN1
Z2dlc3Rpb25IaW50KToKKyAgICAgICAgTm93IHRoYXQgY29tcGxldGlvbnMgYXJlIG5vdCBndWFy
YW50ZWVkIHRvIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHZhbHVlLCB3ZSBtYXkgbmVlZCB0byBzcGxp
dCB0aGUgdGV4dCBub2RlIHRvCisgICAgICAgIGluc2VydCB0aGUgc3VnZ2VzdGlvbiBoaW50IG5v
ZGUuCisKIDIwMjEtMTAtMTEgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogYWRkIFRhYkJhciBjb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0
U3R5bGVQcm9wZXJ0eS5qcwppbmRleCBjMDMxYzBjOTdhNjdiZDcyYmExMzcwZDk0NDU5NjU1YmVj
NWFkMDRjLi4xY2YyN2U5YTUwMDI2ZWZhNWNiNDNmMzdlYzU2NmI5MTYwOTk1ZjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dFN0eWxlUHJvcGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCkBAIC05NjMsOSArOTYzLDkgQEAg
V0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3Bl
cnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfbmFtZUNvbXBs
ZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2FsbG93RW1wdHlQcmVmaXh9ID0ge30pCisgICAgX25h
bWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5
UHJlZml4fSA9IHt9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0
aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKHRleHQsIHthbGxvd0VtcHR5UHJlZml4fSk7Cisg
ICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5
TmFtZSh0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeH0pOwogICAgIH0KIAog
ICAgIF9oYW5kbGVWYWx1ZUJlZm9yZUlucHV0KGV2ZW50KQpAQCAtOTg3LDEwICs5ODcsOSBAQCBX
SS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5zcHJlYWRzaGVldFRleHRGaWVsZERp
ZENvbW1pdCh0aGlzLl92YWx1ZVRleHRGaWVsZCwge2RpcmVjdGlvbjogImZvcndhcmQifSk7CiAg
ICAgfQogCi0gICAgX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7YWxsb3dFbXB0
eVByZWZpeH0gPSB7fSkKKyAgICBfdmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtj
YXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9KQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IDx3ZWJraXQub3JnL2IvMjI3NDExPiBTdHlsZXMgc2lkZWJhciBwYW5lbCBzaG91bGQg
c3VwcG9ydCBtaWRsaW5lIGFuZCBtdWx0aWxpbmUgY29tcGxldGlvbnMuCi0gICAgICAgIHJldHVy
biBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUodGV4dCwg
dGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7YWRkaXRpb25hbEZ1bmN0aW9u
VmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29t
cGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7CisgICAgICAgIHJldHVybiBXSS5DU1NLZXl3
b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUodGV4dCwgdGhpcy5fbmFtZUVs
ZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7Y2FyZXRQb3NpdGlvbiwgYWRkaXRpb25hbEZ1bmN0
aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0aW9uYWxGdW5jdGlvblZhbHVl
Q29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7CiAgICAgfQogCiAgICAgX3NldHVwSnVt
cFRvU3ltYm9sKGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCmluZGV4
IDEzNGQ2NGU5ZmE3N2Y5OTE5YTFmNTUzYTIwOWYwYzVjOTAyMTg3ODUuLjkzMWZlMWM3ZDBjZDM2
NjM1OTJjZDM1Yjc3NDE3YzExMWVjOTQ0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZp
ZWxkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NCw5ICs0NCwxMiBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5faGFuZGxlQmx1ci5iaW5kKHRoaXMpKTsK
ICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5f
aGFuZGxlS2V5RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2hhbmRsZUtleVVwLmJpbmQodGhpcykpOwogICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5faGFuZGxlSW5w
dXQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25LZXlVcCA9IGZhbHNlOworICAg
ICAgICB0aGlzLl9rZXlEb3duQ2FyZXRQb3NpdGlvbiA9IC0xOwogICAgICAgICB0aGlzLl92YWx1
ZUJlZm9yZUVkaXRpbmcgPSAiIjsKICAgICAgICAgdGhpcy5fY29tcGxldGlvblByZWZpeCA9ICIi
OwogICAgICAgICB0aGlzLl9jb250cm9sU3BhY2VLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdJLktl
eWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXSS5L
ZXlib2FyZFNob3J0Y3V0LktleS5TcGFjZSk7CkBAIC02Myw4ICs2NiwxNCBAQCBXSS5TcHJlYWRz
aGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICB2YWx1ZVdp
dGhvdXRTdWdnZXN0aW9uKCkKICAgICB7Ci0gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuX2VsZW1l
bnQudGV4dENvbnRlbnQ7Ci0gICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwLCB2YWx1ZS5sZW5n
dGggLSB0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCk7CisgICAgICAgIC8vIFRoZSBzdWdnZXN0
aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSB3aXRoaW4gdGhlIGVsZW1lbnQsIGFuZCB0aGUgdGV4
dCBvZiB0aGUgZWxlbWVudCBjYW4gc3BhbiBtdWx0aXBsZSBub2Rlcy4KKyAgICAgICAgbGV0IHZh
bHVlV2l0aG91dFN1Z2dlc3Rpb24gPSAiIjsKKyAgICAgICAgZm9yIChsZXQgY2hpbGROb2RlIG9m
IHRoaXMuX2VsZW1lbnQuY2hpbGROb2RlcykgeworICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSA9
PT0gdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgdmFsdWVXaXRob3V0U3VnZ2VzdGlvbiArPSBjaGlsZE5vZGUudGV4dENv
bnRlbnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlV2l0aG91dFN1Z2dlc3Rpb247
CiAgICAgfQogCiAgICAgZ2V0IHN1Z2dlc3Rpb25IaW50KCkKQEAgLTc0LDEyICs4MywyMCBAQCBX
SS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAg
ICBzZXQgc3VnZ2VzdGlvbkhpbnQodmFsdWUpCiAgICAgeworICAgICAgICBpZiAodGhpcy5fc3Vn
Z2VzdGlvbkhpbnRFbGVtZW50LnRleHRDb250ZW50ID09PSB2YWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICB0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQudGV4dENvbnRlbnQg
PSB2YWx1ZTsKIAotICAgICAgICBpZiAodmFsdWUpCisgICAgICAgIGlmICh2YWx1ZSkgewogICAg
ICAgICAgICAgdGhpcy5fcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQucmVtb3ZlKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zdWdnZXN0aW9uSGludEVs
ZW1lbnQucmVtb3ZlKCk7CisKKyAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIHN1Z2dlc3Rpb24gaGlu
dCBlbGVtZW50IG1heSBsZWF2ZSB0aGUgY29udGVudHMgb2YgYF9lbGVtZW50YCBmcmFnbWVudGVk
IGludG8gbXVsdGlwbGUgdGV4dCBub2Rlcy4KKyAgICAgICAgdGhpcy5fY29tYmluZUVkaXRvckVs
ZW1lbnRDaGlsZHJlbigpOwogICAgIH0KIAogICAgIHN0YXJ0RWRpdGluZygpCkBAIC05Myw2ICsx
MTAsOCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZp
ZWxkCiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVlOwogICAgICAgICB0aGlzLl92YWx1ZUJl
Zm9yZUVkaXRpbmcgPSB0aGlzLnZhbHVlOwogCisgICAgICAgIHRoaXMuX2tleURvd25DYXJldFBv
c2l0aW9uID0gLTE7CisKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJlZGl0
aW5nIik7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY29udGVudEVkaXRhYmxlID0gInBsYWludGV4
dC1vbmx5IjsKICAgICAgICAgdGhpcy5fZWxlbWVudC5zcGVsbGNoZWNrID0gZmFsc2U7CkBAIC0x
NDIsNyArMTYxLDggQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVl
dFRleHRGaWVsZAogICAgIHsKICAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNlbGVjdGVk
VGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CiAKLSAgICAgICAgdGhp
cy5fcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpOworICAgICAgICBpZiAodGhpcy5zdWdnZXN0aW9u
SGludC5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCk7
CiAKICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5z
cHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAg
IHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlKHRoaXMpOwpAQCAt
MTUwLDI2ICsxNzAsOSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAKICAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29tcGxldGlv
bihzdWdnZXN0aW9uc1ZpZXcsIHNlbGVjdGVkVGV4dCkKICAgICB7Ci0gICAgICAgIC8vIENvbnNp
ZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKLSAgICAgICAgLy8KLSAgICAgICAgLy8gICBib3Jk
ZXI6IDFweCBzb2xpZCByb3wKLSAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICByb3N5YnJv
d24KLSAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICByb3lhbGJsdWUKLSAgICAgICAgLy8K
LSAgICAgICAgLy8gQ2xpY2tpbmcgb24gInJvc3licm93biIgc2hvdWxkIHJlcGxhY2UgInJvIiB3
aXRoICJyb3N5YnJvd24iLgotICAgICAgICAvLwotICAgICAgICAvLyAgICAgICAgICAgcHJlZml4
OiAgMXB4IHNvbGlkIHJvCi0gICAgICAgIC8vIGNvbXBsZXRpb25QcmVmaXg6ICAgICAgICAgICAg
cm8KLSAgICAgICAgLy8gICAgICAgIG5ld1ByZWZpeDogIDFweCBzb2xpZAotICAgICAgICAvLyAg
ICAgc2VsZWN0ZWRUZXh0OiAgICAgICAgICAgIHJvc3licm93bgotICAgICAgICBsZXQgcHJlZml4
ID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBuZXdQcmVmaXgg
PSBwcmVmaXguc2xpY2UoMCwgLXRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKTsKLQotICAg
ICAgICB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50ID0gbmV3UHJlZml4ICsgc2VsZWN0ZWRUZXh0
OwotCi0gICAgICAgIC8vIFBsYWNlIHRleHQgY2FyZXQgYXQgdGhlIGVuZC4KLSAgICAgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGhpcy5fZWxlbWVudCwgc2VsZWN0
ZWRUZXh0Lmxlbmd0aCwgdGhpcy5fZWxlbWVudCwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCk7CisgICAg
ICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxlY3RlZFRleHQuc2xpY2UodGhpcy5fY29tcGxl
dGlvblByZWZpeC5sZW5ndGgpOwogCisgICAgICAgIHRoaXMuX2FwcGx5Q29tcGxldGlvbkhpbnQo
e21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uOiB0cnVlfSk7CiAgICAgICAgIHRoaXMuZGlzY2Fy
ZENvbXBsZXRpb24oKTsKIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRo
aXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24i
KQpAQCAtMjAwLDggKzIwMywxMSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNw
cmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBfaGFuZGxlTW91c2VEb3duKGV2ZW50KQogICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcpCi0gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKKyAgICAgICAgaWYgKCF0aGlzLl9lZGl0aW5nKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICB0aGlzLmRpc2Nh
cmRDb21wbGV0aW9uKCk7CiAgICAgfQogCiAgICAgX2hhbmRsZUJsdXIoZXZlbnQpCkBAIC0yMjYs
OCArMjMyLDEyIEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRU
ZXh0RmllbGQKICAgICAgICAgaWYgKCF0aGlzLl9lZGl0aW5nKQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIHRoaXMuX3ByZXZlbnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktleVVwID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuX2tleURvd25DYXJldFBvc2l0aW9uID0gdGhpcy5fZ2V0Q2Fy
ZXRQb3NpdGlvbigpOworCiAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9uc1ZpZXcpIHsKICAg
ICAgICAgICAgIGxldCBjb25zdW1lZCA9IHRoaXMuX2hhbmRsZUtleURvd25Gb3JTdWdnZXN0aW9u
VmlldyhldmVudCk7CisgICAgICAgICAgICB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRp
b25zT25LZXlVcCA9IGNvbnN1bWVkOwogICAgICAgICAgICAgaWYgKGNvbnN1bWVkKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjkyLDYgKzMwMiw3IEBAIFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgICAg
IGlmICh0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudmlzaWJsZSkKICAgICAgICAgICAgICAgICB0aGlz
Ll9zdWdnZXN0aW9uc1ZpZXcuaGlkZSgpOwogICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5fcHJldmVudERpc2NhcmRpbmdDb21wbGV0aW9uc09uS2V5VXAgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIGNvbnN0IGZvcmNlQ29tcGxldGlvbnMgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZUNvbXBsZXRpb25zKGZvcmNlQ29tcGxldGlvbnMpOwogICAgICAg
ICAgICAgfQpAQCAtMzI3LDEyICszMzgsMTIgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBj
bGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAiQXJyb3dSaWdodCIgJiYgdGhpcy5z
dWdnZXN0aW9uSGludCkgeworICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAiQXJyb3dSaWdodCIg
JiYgdGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGgpIHsKICAgICAgICAgICAgIGxldCBzZWxlY3Rp
b24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAKLSAgICAgICAgICAgIGlmIChzZWxlY3Rpb24u
aXNDb2xsYXBzZWQgJiYgKHNlbGVjdGlvbi5mb2N1c09mZnNldCA9PT0gdGhpcy52YWx1ZVdpdGhv
dXRTdWdnZXN0aW9uKCkubGVuZ3RoIHx8IHNlbGVjdGlvbi5mb2N1c05vZGUgPT09IHRoaXMuX3N1
Z2dlc3Rpb25IaW50RWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb2xs
YXBzZWQpIHsKICAgICAgICAgICAgICAgICBldmVudC5zdG9wKCk7Ci0gICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydFRleHQiLCBmYWxzZSwgdGhpcy5zdWdnZXN0aW9u
SGludCk7CisgICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlDb21wbGV0aW9uSGludCh7bW92ZUNh
cmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9KTsKIAogICAgICAgICAgICAgICAgIC8vIFdoZW4g
Y29tcGxldGluZyAiYmFja2dyb3VuZCIsIGRvbid0IGhpZGUgdGhlIGNvbXBsZXRpb24gcG9wb3Zl
ci4KICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBzaG93aW5nIHRoZSBwb3BvdmVyIHdpdGgg
cHJvcGVydGllcyBzdWNoIGFzICJiYWNrZ3JvdW5kLWNvbG9yIiBhbmQgImJhY2tncm91bmQtaW1h
Z2UiLgpAQCAtMzYyLDE2ICszNzMsMzUgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFz
cyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUg
JiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0
VGV4dEZpZWxkRGlkQ2hhbmdlKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgX2hhbmRsZUtleVVw
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZWRpdGluZykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAvLyBTb21lIGtleSBldmVudHMsIGxpa2UgdGhlIGFycm93IGtleXMgYW5k
IEN0cmwrQSAobW92ZSB0byBsaW5lIHN0YXJ0KSwgd2lsbCBtb3ZlIHRoZSBjYXJldCB3aXRob3V0
IGNvbW1pdHRpbmcKKyAgICAgICAgLy8gYW55IGlucHV0IHRvIHRoZSB0ZXh0IGZpZWxkLiBJbiB0
aG9zZSBzaXR1YXRpb25zIHdlIHNob3VsZCBkaXNjYXJkIGNvbXBsZXRpb24gaWYgdGhleSBhcmUg
YXZhaWxhYmxlLiBJdCBpcworICAgICAgICAvLyBhbHNvIHBvc3NpYmxlIHRoYXQgd2UgcmVjZWl2
ZSBhIEtleVVwIGV2ZW50IGZvciBhIGtleSB0aGF0IHdhcyBub3QgcHJlc3NlZCBpbnNpZGUgdGhp
cyB0ZXh0IGZpZWxkLCBpbiB3aGljaAorICAgICAgICAvLyBjYXNlIHRoZSBfa2V5RG93bkNhcmV0
UG9zaXRpb24gd2lsbCBzdGlsbCBiZSAtMS4gVGhpcyBjYW4gb2NjdXIgd2hlbiB0aGUgdXNlciB0
eXBlcyBhIGA6YCB0byBiZWdpbiBlZGl0aW5nCisgICAgICAgIC8vIHRoZSB2YWx1ZSBmb3IgYSBw
cm9wZXJ0eSwgYW5kIHRoZSBLZXlVcCBldmVudHMgZm9yIGVhY2ggb2YgdGhvc2Uga2V5cyB3aWxs
IGJlIGhhbmRsZWQgaGVyZSwgZXZlbiB0aG91Z2ggdGhlCisgICAgICAgIC8vIGNvcnJlc3BvbmRp
bmcgS2V5RG93biBldmVudHMgd2FzIG5ldmVyIGhhbmRsZWQgYnkgdGhpcyB0ZXh0IGZpZWxkLgor
ICAgICAgICBpZiAoIXRoaXMuX3N1Z2dlc3Rpb25zVmlldyB8fCB0aGlzLl9wcmV2ZW50RGlzY2Fy
ZGluZ0NvbXBsZXRpb25zT25LZXlVcCB8fCB0aGlzLl9rZXlEb3duQ2FyZXRQb3NpdGlvbiA9PT0g
dGhpcy5fZ2V0Q2FyZXRQb3NpdGlvbigpIHx8IHRoaXMuX2tleURvd25DYXJldFBvc2l0aW9uID09
PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmRpc2NhcmRDb21wbGV0
aW9uKCk7CisgICAgfQorCiAgICAgX2hhbmRsZUlucHV0KGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9lZGl0aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMu
X3ByZXZlbnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktleVVwID0gdHJ1ZTsKICAgICAgICAgdGhp
cy5fdXBkYXRlQ29tcGxldGlvbnMoKTsKIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYg
dHlwZW9mIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAi
ZnVuY3Rpb24iKQpAQCAtMzg0LDcgKzQxNCw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0g
Y2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBsZXQgdmFsdWVXaXRob3V0U3VnZ2VzdGlvbiA9IHRoaXMudmFsdWVXaXRob3V0U3VnZ2VzdGlv
bigpOwotICAgICAgICBsZXQge2NvbXBsZXRpb25zLCBwcmVmaXh9ID0gdGhpcy5fY29tcGxldGlv
blByb3ZpZGVyKHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24sIHthbGxvd0VtcHR5UHJlZml4OiBmb3Jj
ZUNvbXBsZXRpb25zfSk7CisgICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0gPSB0aGlz
Ll9jb21wbGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbiwge2FsbG93RW1wdHlQ
cmVmaXg6IGZvcmNlQ29tcGxldGlvbnMsIGNhcmV0UG9zaXRpb246IHRoaXMuX2dldENhcmV0UG9z
aXRpb24oKX0pOwogICAgICAgICB0aGlzLl9jb21wbGV0aW9uUHJlZml4ID0gcHJlZml4OwogCiAg
ICAgICAgIGlmICghY29tcGxldGlvbnMubGVuZ3RoKSB7CkBAIC00MjIsOSArNDUyLDE0IEBAIFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAg
IF9zaG93U3VnZ2VzdGlvbnNWaWV3KCkKICAgICB7Ci0gICAgICAgIGxldCBwcmVmaXggPSB0aGlz
LnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IHN0YXJ0T2Zmc2V0ID0gcHJl
Zml4Lmxlbmd0aCAtIHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoOwotICAgICAgICBsZXQg
Y2FyZXRSZWN0ID0gdGhpcy5fZ2V0Q2FyZXRSZWN0KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgLy8g
QWRqdXN0IHRoZSB1c2VkIGNhcmV0IHBvc2l0aW9uIHRvIGNvcnJlY3RseSBhbGlnbiBhdXRvY29t
cGxldGlvbiByZXN1bHRzIHdpdGggZXhpc3RpbmcgdGV4dC4gVGhlIHN1Z2dlc3Rpb25zCisgICAg
ICAgIC8vIHNob3VsZCBhcHBlYXIgYWxpZ25lZCBhcyBiZWxvdzoKKyAgICAgICAgLy8KKyAgICAg
ICAgLy8gYm9yZGVyOiAxcHggc29saWQgcm98CisgICAgICAgIC8vICAgICAgICAgICAgICAgICAg
IHJvc3licm93bgorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICByb3lhbGJsdWUKKyAgICAg
ICAgbGV0IGFkanVzdGVkQ2FyZXRQb3NpdGlvbiA9IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKSAt
IHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoOworICAgICAgICBsZXQgY2FyZXRSZWN0ID0g
dGhpcy5fZ2V0Q2FyZXRSZWN0KGFkanVzdGVkQ2FyZXRQb3NpdGlvbik7CiAKICAgICAgICAgLy8g
SGlkZSBjb21wbGV0aW9uIHBvcG92ZXIgd2hlbiB0aGUgYW5jaG9yIGVsZW1lbnQgaXMgcmVtb3Zl
ZCBmcm9tIHRoZSBET00uCiAgICAgICAgIGlmICghY2FyZXRSZWN0KQpAQCAtNDM1LDQ3ICs0NzAs
MTA1IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0Rmll
bGQKICAgICAgICAgfQogICAgIH0KIAotICAgIF9nZXRDYXJldFJlY3Qoc3RhcnRPZmZzZXQpCisg
ICAgX2dldENhcmV0UG9zaXRpb24oKQogICAgIHsKKyAgICAgICAgLy8gVGhlIHdpbmRvdydzIHNl
bGVjdGlvbiByYW5nZSB3aWxsIG9ubHkgY29udGFpbiB0aGUgY3VycmVudCBsaW5lJ3MgcG9zaXRp
b25pbmcgaW4gbXVsdGlsaW5lIHRleHQsIHNvIGEgbmV3CisgICAgICAgIC8vIHJhbmdlIG11c3Qg
YmUgY3JlYXRlZCBiZXR3ZWVuIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgcmFuZ2UgYW5kIHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIGZpcnN0IGxpbmUgb2YgdGV4dCBpbgorICAgICAgICAvLyBvcmRlciB0
byBnZXQgYW4gYWNjdXJhdGUgY2hhcmFjdGVyIHBvc2l0aW9uIGZvciB0aGUgY2FyZXQuCiAgICAg
ICAgIGxldCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmICgh
c2VsZWN0aW9uLnJhbmdlQ291bnQpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBs
ZXQgbGluZVJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgIGxldCBtdWx0
aWxpbmVSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIG11bHRpbGluZVJh
bmdlLnNldFN0YXJ0KHRoaXMuX2VsZW1lbnQsIDApOworICAgICAgICBtdWx0aWxpbmVSYW5nZS5z
ZXRFbmQobGluZVJhbmdlLmVuZENvbnRhaW5lciwgbGluZVJhbmdlLmVuZE9mZnNldCk7CisgICAg
ICAgIHJldHVybiBtdWx0aWxpbmVSYW5nZS50b1N0cmluZygpLmxlbmd0aDsKKyAgICB9CiAKKyAg
ICBfZ2V0Q2FyZXRSZWN0KGNhcmV0UG9zaXRpb24pCisgICAgewogICAgICAgICBsZXQgaXNIaWRk
ZW4gPSAoY2xpZW50UmVjdCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNsaWVudFJlY3QueCA9
PT0gMCAmJiBjbGllbnRSZWN0LnkgPT09IDA7CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHNl
bGVjdGlvbi5yYW5nZUNvdW50KSB7Ci0gICAgICAgICAgICBsZXQgcmFuZ2UgPSBzZWxlY3Rpb24u
Z2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCk7Ci0gICAgICAgICAgICByYW5nZS5zZXRTdGFydChy
YW5nZS5zdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQpOwotICAgICAgICAgICAgbGV0IGNsaWVu
dFJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLQotICAgICAgICAgICAgaWYg
KCFpc0hpZGRlbihjbGllbnRSZWN0KSkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaGFwcGVu
cyBhZnRlciBkZWxldGluZyB2YWx1ZS4gSG93ZXZlciwgd2hlbiBmb2N1c2luZwotICAgICAgICAg
ICAgICAgIC8vIG9uIGFuIGVtcHR5IHZhbHVlIGNsaWVudFJlY3QgaXMgdmlzaWJsZS4KLSAgICAg
ICAgICAgICAgICByZXR1cm4gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoY2xpZW50UmVjdCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgbGV0IGNhcmV0UmFuZ2UgPSB0aGlz
Ll9yYW5nZUF0Q2FyZXRQb3NpdGlvbihjYXJldFBvc2l0aW9uKTsKKyAgICAgICAgbGV0IGNhcmV0
Q2xpZW50UmVjdCA9IGNhcmV0UmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAg
IGlmICghaXNIaWRkZW4oY2FyZXRDbGllbnRSZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBXSS5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChjYXJldENsaWVudFJlY3QpOwogCi0gICAgICAgIGxldCBj
bGllbnRSZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAg
ICAgaWYgKGlzSGlkZGVuKGNsaWVudFJlY3QpKQorICAgICAgICBsZXQgZWxlbWVudENsaWVudFJl
Y3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBpZiAo
aXNIaWRkZW4oZWxlbWVudENsaWVudFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAK
ICAgICAgICAgY29uc3QgbGVmdFBhZGRpbmcgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKHRo
aXMuX2VsZW1lbnQpLnBhZGRpbmdMZWZ0KSB8fCAwOwotICAgICAgICByZXR1cm4gbmV3IFdJLlJl
Y3QoY2xpZW50UmVjdC5sZWZ0ICsgbGVmdFBhZGRpbmcsIGNsaWVudFJlY3QudG9wLCBjbGllbnRS
ZWN0LndpZHRoLCBjbGllbnRSZWN0LmhlaWdodCk7CisgICAgICAgIHJldHVybiBuZXcgV0kuUmVj
dChlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgbGVmdFBhZGRpbmcsIGVsZW1lbnRDbGllbnRSZWN0
LnRvcCwgZWxlbWVudENsaWVudFJlY3Qud2lkdGgsIGVsZW1lbnRDbGllbnRSZWN0LmhlaWdodCk7
CisgICAgfQorCisgICAgX3JhbmdlQXRDYXJldFBvc2l0aW9uKGNhcmV0UG9zaXRpb24pIHsKKyAg
ICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLl9lbGVtZW50LmNoaWxkTm9kZXMpIHsKKyAgICAg
ICAgICAgIGxldCB0ZXh0Q29udGVudCA9IG5vZGUudGV4dENvbnRlbnQ7CisgICAgICAgICAgICBp
ZiAoY2FyZXRQb3NpdGlvbiA8PSB0ZXh0Q29udGVudC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAg
ICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICAgICAgICAgIHJh
bmdlLnNldFN0YXJ0KG5vZGUsIGNhcmV0UG9zaXRpb24pOworICAgICAgICAgICAgICAgIHJhbmdl
LnNldEVuZChub2RlLCBjYXJldFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmFu
Z2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhcmV0UG9zaXRpb24gLT0gdGV4dENv
bnRlbnQubGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIG5v
ZGVzLCBvciB0aGUgY2FyZXQgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSB0b3RhbCB0ZXh0
IGNvbnRlbnQsIHByb3ZpZGUgdGhlIHJhbmdlIG9mIGEKKyAgICAgICAgLy8gY2FyZXQgYXQgdGhl
IGVuZCBvZiB0aGUgZWxlbWVudC4KKyAgICAgICAgbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRoaXMuX2VsZW1lbnQp
OworICAgICAgICByYW5nZS5jb2xsYXBzZSgpOworICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAg
fQogCi0gICAgX2FwcGx5Q29tcGxldGlvbkhpbnQoKQorICAgIF9hcHBseUNvbXBsZXRpb25IaW50
KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbn0gPSB7fSkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fY29tcGxldGlvblByb3ZpZGVyIHx8ICF0aGlzLnN1Z2dlc3Rpb25IaW50KQogICAgICAg
ICAgICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hpbGRy
ZW4oe25ld0NhcmV0UG9zaXRpb246IG1vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uID8gdGhpcy5f
Z2V0Q2FyZXRQb3NpdGlvbigpICsgdGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGggOiBudWxsfSk7
CisgICAgfQorCisgICAgX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hpbGRyZW4oe25ld0NhcmV0UG9z
aXRpb259ID0ge30pCisgICAgeworICAgICAgICBuZXdDYXJldFBvc2l0aW9uID8/PSB0aGlzLl9n
ZXRDYXJldFBvc2l0aW9uKCk7CisKKyAgICAgICAgLy8gU2V0dGluZyB0aGUgdGV4dENvbnRlbnQg
b2YgdGhlIGVsZW1lbnQgdG8gaXRzIGN1cnJlbnQgdGV4dENvbnRlbnQgd2lsbCB0YWtlIHRoZSB0
ZXh0IGZyb20gdGhlIG11bHRpcGxlCisgICAgICAgIC8vIHBvdGVudGlhbCBjaGlsZCBub2RlcyAo
cG90ZW50aWFsbHkgYSBzdWdnZXN0aW9uIGhpbnQgbm9kZSBhbmQgc29tZSBudW1iZXIgb2YgZXhp
c3RpbmcgdGV4dCBub2RlcykgYW5kIHR1cm4KKyAgICAgICAgLy8gdGhlbSBpbnRvIGEgc2luZ2xl
IHRleHQgbm9kZSB3aXRoaW4gdGhlIGVsZW1lbnQuCiAgICAgICAgIHRoaXMuX2VsZW1lbnQudGV4
dENvbnRlbnQgPSB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50OworCisgICAgICAgIGlmICh0aGlz
Ll9lbGVtZW50LnRleHRDb250ZW50Lmxlbmd0aCkgeworICAgICAgICAgICAgbGV0IHRleHRDaGls
ZE5vZGUgPSB0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICBjb25zb2xlLmFz
c2VydCh0ZXh0Q2hpbGROb2RlIGluc3RhbmNlb2YgVGV4dCwgdGV4dENoaWxkTm9kZSk7CisgICAg
ICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0ZXh0Q2hpbGRO
b2RlLCBuZXdDYXJldFBvc2l0aW9uLCB0ZXh0Q2hpbGROb2RlLCBuZXdDYXJldFBvc2l0aW9uKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIF9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCkKICAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoLCAiU3Vn
Z2VzdGlvbiBoaW50IHNob3VsZCBub3QgYmUgZW1wdHkgd2hlbiBhdHRhY2hpbmcgdGhlIHN1Z2dl
c3Rpb24gaGludCBlbGVtZW50LiIpOworCiAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9uSGlu
dEVsZW1lbnQucGFyZW50RWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZCh0aGlzLl9zdWdnZXN0aW9uSGlu
dEVsZW1lbnQpOworICAgICAgICBsZXQgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigp
OworICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQubGVuZ3RoIHx8ICFzZWxl
Y3Rpb24ucmFuZ2VDb3VudCkgeworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmQodGhp
cy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGxldCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHJhbmdlLmVuZENvbnRhaW5lciBpbnN0YW5jZW9mIFRleHQsIHJh
bmdlLmVuZENvbnRhaW5lcik7CisgICAgICAgIGlmICghKHJhbmdlLmVuZENvbnRhaW5lciBpbnN0
YW5jZW9mIFRleHQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2VsZW1l
bnQuaW5zZXJ0QmVmb3JlKHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudCwgcmFuZ2UuZW5kQ29u
dGFpbmVyLnNwbGl0VGV4dChyYW5nZS5lbmRPZmZzZXQpKTsKICAgICB9CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444077</attachid>
            <date>2021-11-12 10:06:32 -0800</date>
            <delta_ts>2021-11-15 09:48:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227411-20211112100631.patch</filename>
            <type>text/plain</type>
            <size>23537</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
MWFlYjdkZjUyMTQxMGI3MjFjOWUyZGYxODU5NDU3OTliZDEwNDAzLi45ODI0MDcxZjZiMTBhMWY1
ODZjNjM5MTI2Y2FkMDIyODZhZjFlNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMS0xMC0xMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGVzOiBBdXRvY29tcGxldGUgc2hvdWxkIHN1
cHBvcnQgbWlkLWxpbmUgY29tcGxldGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJv
dXNzby4KKworICAgICAgICBBdXRvY29tcGxldGlvbiBmb3IgQ1NTIHByb3BlcnR5IHZhbHVlcyB3
YXMgbGFja2luZyBpbiB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIG1pZC1saW5lIGNvbXBsZXRpb25z
LCBpbmNsdWRpbmcKKyAgICAgICAgd2l0aGluIGZ1bmN0aW9ucywgYW5kIGEgbGFjayBvZiBzdXBw
b3J0IGZvciBtdWx0aS1saW5lIENTUyBwcm9wZXJ0eSB2YWx1ZXMuIFRoaXMgcmVzb2x2ZXMgdGhv
c2UgcGFpbiBwb2ludHMgYnkKKyAgICAgICAgbWFraW5nIFNwcmVhZHNoZWV0VGV4dEZpZWxkIG11
bHRpLWxpbmUgYXdhcmUgYW5kIGFsbG93aW5nIG1pZC1saW5lIGF1dG9jb21wbGV0aW9uLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6
CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9uYW1lQ29t
cGxldGlvbkRhdGFQcm92aWRlcik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkucHJvdG90eXBlLl92YWx1ZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIpOgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qczoKKyAgICAgICAgKFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxk
LnByb3RvdHlwZS52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKToKKyAgICAgICAgQmVjYXVzZSBzdWdn
ZXN0aW9ucyBjYW4gb2NjdXIgYW55d2hlcmUgd2l0aGluIHRoZSB2YWx1ZSwgd2UgbmVlZCB0byBp
dGVyYXRlIHRocm91Z2ggZWFjaCBvZiB0aGUgbm9kZXMgYW5kCisgICAgICAgIGNvbGxlY3QgdGhl
IHRleHQgb2YgYW55IG9mIHRoZW0gdGhhdCBhcmUgbm90IHRoZSBjb21wbGV0aW9uIHN1Z2dlc3Rp
b24uCisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5zZXQgc3Vn
Z2VzdGlvbkhpbnQpOgorICAgICAgICBXaGVuIHJlbW92aW5nIHRoZSBzdWdnZXN0aW9uIGhpbnQg
ZWxlbWVudCwgd2Ugc2hvdWxkIHJlY29tYmluZSB0aGUgdGV4dCBub2RlcyB3ZSBtYXkgaGF2ZSBz
cGxpdCB1cG9uIGluc2VydGlvbgorICAgICAgICB0byBwcmV2ZW50IHRoZSB0ZXh0IGNvbnRlbnQg
ZnJvbSBiZWNvbWluZyBlbmRsZXNzbHkgZnJhZ21lbnRlZCBpbnRvIG11bHRpcGxlIHRleHQgbm9k
ZXMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJv
dG90eXBlLnN0YXJ0RWRpdGluZyk6CisgICAgICAgIFJlc2V0IHRoZSBsYXN0IGtub3duIGNhcmV0
IHBvc2l0aW9uIHdoZW4gZWRpdGluZyBzdGFydHMgc28gdGhhdCB3ZSBkb24ndCBtaXN0YWtlIGtl
eXMgdGhhdCBhcmUgYWxyZWFkeSBkb3duIGFzCisgICAgICAgIGhhdmluZyBtb3ZlZCB0aGUgY3Vy
c29yIHRvIGl0cyBpbml0aWFsIHBvc2l0aW9uLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRl
eHRGaWVsZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9u
KToKKyAgICAgICAgV2Ugc2hvdWxkIG9ubHkgYXR0ZW1wdCB0byByZWF0dGFjaCB0aGUgc3VnZ2Vz
dGlvbiBoaW50IGVsZW1lbnQgaWYgd2UgaGF2ZSBhIHN1Z2dlc3Rpb24gaGludCB0byBzaG93LCBv
dGhlcndpc2UKKyAgICAgICAgd2UgY291bGQgZW5kIHVwIHdpdGggYSBwaGFudG9tIGVtcHR5IHN1
Z2dlc3Rpb24gaGludCB0aGF0IGlzbid0IHByb3Blcmx5IHBsYWNlZCBsYXRlci4KKworICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLmNvbXBsZXRpb25TdWdnZXN0aW9u
c0NsaWNrZWRDb21wbGV0aW9uKToKKyAgICAgICAgVXBkYXRlZCB0byB1c2UgZXhpc3RpbmcgY29t
cGxldGlvbiBjb21taXR0aW5nIHBhdGggdG8gcmVkdWNlIGR1cGxpY2F0ZWQgbG9naWMuCisKKyAg
ICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlTW91c2VEb3du
KToKKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3MgaW5zaWRlIHRoZSB0ZXh0IGZpZWxkIHdo
aWxlIHN1Z2dlc3Rpb25zIGFyZSB2aXNpYmxlIHRyZWF0IHRoYXQgYXMgaW50ZW50IHRvIHN0b3AK
KyAgICAgICAgYXV0b2NvbXBsZXRpb24gc2ltaWxhciB0byB0aGUgZXNjYXBlIGtleSwgc2luY2Ug
dGhlIG5ldyBjdXJzb3IgbG9jYXRpb24gY291bGQgYmUgYW55d2hlcmUgaW4gdGhlIHRleHQgZmll
bGQuCisgICAgICAgIFRoaXMgYmVoYXZpb3IgYWxzbyBtYXRjaGVzIG90aGVyIGNvZGUgZWRpdG9y
cyBsaWtlIFhjb2RlLCB3aGVyZSBjbGlja2luZyBvdXRzaWRlIGEgY29tcGxldGlvbiBwb3B1cCB3
aWxsIGRpc21pc3MKKyAgICAgICAgdGhlIGNvbXBsZXRpb25zIGxpc3QuCisKKyAgICAgICAgKFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAg
IEtlZXAgdHJhY2sgb2Ygd2hlcmUgdGhlIGNhcmV0IHdhcyBhcyB3ZWxsIGFzIGlmIHRoZSB0aGUg
a2V5IGV2ZW50IHdhcyBoYW5kbGVkIGJ5IHRoZSBzdWdnZXN0aW9uIHZpZXcgYXQgdGhlIHRpbWUK
KyAgICAgICAgYSBrZXkgaXMgcHJlc3NlZCBzbyB0aGF0IHdlIGNhbiBsYXRlciBjb21wYXJlIHRo
ZSBwb3NpdGlvbiB0byB0aGF0IG9mIHdoZW4gdGhlIGtleSBpcyByZWxlYXNlZCB0byBkZXRlcm1p
bmUgaWYKKyAgICAgICAgY29tcGxldGlvbnMgc2hvdWxkIGJlIGRpc2NhcmRlZC4KKworICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duRm9yU3Vn
Z2VzdGlvblZpZXcpOgorICAgICAgICBXZSBjYW4gbm8gbG9uZ2VyIGFzc3VtZSB0aGF0IHRoZSBj
dXJyZW50IHNlbGVjdGlvbidzIG9mZnNldCB3aWxsIG1hdGNoIHRoZSB2YWx1ZSdzIGxlbmd0aCwg
YXMgdGhlIG9mZnNldCBjb3VsZAorICAgICAgICBiZSBvbiBhbnkgbGluZSwgb3IgdGhlIHN1Z2dl
c3Rpb24gY291bGQgYmUgaW4gbWlkZGxlIG9mIGEgbGluZS4gQmVjYXVzZSBhIHN1Z2dlc3Rpb25I
aW50IG9ubHkgY29udGFpbnMgdGV4dCB3aGVuCisgICAgICAgIHdlIGFyZSBpbiBtaWRkbGUgb2Yg
YXV0b2NvbXBsZXRpb24sIGl0IGFsb25lIGlzIGFuIGluZGljYXRvciB0aGF0IHByZXNzaW5nIHRo
ZSByaWdodCBhcnJvdyBrZXkgc2hvdWxkIGNvbW1pdCB0aGUKKyAgICAgICAgY29tcGxldGlvbi4g
YGRvY3VtZW50LmV4ZWNDb21tYW5kYCBpcyBkZXByZWNhdGVkLCBzbyBpbnN0ZWFkIHdlIG5vdyB1
c2UgdGhlIGV4aXN0aW5nIGNvbXBsZXRpb24gY29tbWl0dGluZyBwYXRoCisgICAgICAgIHRvIHJl
ZHVjZSBkdXBsaWNhdGVkIGxvZ2ljIGhlcmUuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBsZWZ0
IGFycm93IGtleSBpcyBzdGlsbCBleHBsaWNpdGx5IGhhbmRsZWQgZm9yIGRpc21pc3NpbmcgYXV0
b2NvbXBsZXRpb24sIGFzIHRoZSBuZXcgbWVjaGFuaXNtIGZvcgorICAgICAgICBkaXNtaXNzaW5n
IGF1dG9jb21wbGV0aW9uIHdvbid0IHRyaWdnZXIgdW5sZXNzIHRoZSBjYXJldCBoYXMgbW92ZWQs
IGFuZCB0aGUgY2FyZXQgd2lsbCBub3QgbW92ZSBpZiB5b3UgcHJlc3MgdGhlCisgICAgICAgIGxl
ZnQgYXJyb3cga2V5IGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dCBmaWVsZC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlVcCk6CisgICAgICAg
IFdoZW4gYSBrZXkgaXMgcmVsZWFzZWQsIHdlIHNob3VsZCBjaGVjayB0byBzZWUgaWYgdGhlIGNh
cmV0IGhhcyBtb3ZlZCBhcyBhIHJlc3VsdCBvZiB0aGUga2V5c3Ryb2tlIHRoYXQgd2UgaGF2ZQor
ICAgICAgICBub3QgYWxyZWFkeSBleHBsaWNpdGx5IGhhbmRsZWQuIElmIGl0IGhhcyBtb3ZlZCBh
bmQgd2FzIG5vdCBoYW5kbGVkLCB3ZSBkaXNtaXNzIHRoZSBhdXRvY29tcGxldGlvbiBzdWdnZXN0
aW9ucy4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5k
bGVJbnB1dCk6CisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5f
dXBkYXRlQ29tcGxldGlvbnMpOgorICAgICAgICBQcm92aWRlIHRoZSBjdXJyZW50IGNhcmV0IHBv
c2l0aW9uIHRvIHRoZSBjb21wbGV0aW9uIHByb3ZpZGVkLgorCisgICAgICAgIChXSS5TcHJlYWRz
aGVldFRleHRGaWVsZC5wcm90b3R5cGUuX3Nob3dTdWdnZXN0aW9uc1ZpZXcpOgorICAgICAgICBJ
biBvcmRlciB0byBjb3JyZWN0bHkgYWxpZ24gdGhlIGNvbXBsZXRpb24gbGlzdCB3aXRoIHRoZSBj
dXJyZW50IHRleHQgY29udGVudCwgaXQgbXVzdCBiZSBvZmZzZXQgZnJvbSB0aGUgY2FyZXQKKyAg
ICAgICAgcG9zaXRpb24gZXhjbHVkaW5nIHRoZSBjdXJyZW50IHByZWZpeC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9nZXRDYXJldFBvc2l0aW9uKToKKyAg
ICAgICAgQWRkZWQgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgY2FyZXQgaW4gdGhlIGNvbXBsZXRl
IHRleHQgdmFsdWUsIGFjY291bnRpbmcgZm9yIG11bHRpLWxpbmUgdmFsdWVzIGFuZCBtaWQtbGlu
ZQorICAgICAgICBzdWdnZXN0aW9ucy4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQucHJvdG90eXBlLl9nZXRDYXJldFJlY3QpOgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRl
eHRGaWVsZC5wcm90b3R5cGUuX3JhbmdlQXRDYXJldFBvc2l0aW9uKToKKyAgICAgICAgRmluZCB0
aGUgcmFuZ2UgZm9yIGEgY2FyZXQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBUaGlzIGNvbXBsaW1l
bnRzIGBfZ2V0Q2FyZXRQb3NpdGlvbmAsIGFuZCBhbGxvd3MgdXMgdG8gY291bnQKKyAgICAgICAg
YmFjayBzb21lIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFuZCBjcmVhdGUgYSByYW5nZSBvZiB3aGlj
aCB3ZSBsYXRlciBnZXQgdGhlIGNsaWVudCByZWN0YW5nbGUuCisKKyAgICAgICAgKFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fYXBwbHlDb21wbGV0aW9uSGludCk6CisgICAgICAg
IEFkZCBvcHRpb25hbCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgY2FyZXQgcG9zaXRpb24gdG8g
YmUgYXQgdGhlIGVuZCBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgdGV4dC4KKworICAgICAgICAoV0ku
U3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxk
cmVuKToKKyAgICAgICAgQWRkZWQgdG8gaGFuZGxlIGNvbWJpbmluZyB0aGUgZnJhZ21lbnRlZCB0
ZXh0IG5vZGVzIChhbmQgcG9zc2libHkgYSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVudCkgYmFjayBp
bnRvIGEgc2luZ2xlCisgICAgICAgIHRleHQgbm9kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgY3Vy
cmVudCBjdXJzb3IgcG9zaXRpb24gb3Igb3B0aW9uYWxseSBtb3ZpbmcgdGhlIGN1cnNvciB0byBh
IG5ldyBsb2NhdGlvbiAoZS5nLgorICAgICAgICB0aGUgZW5kIG9mIGEgY29tcGxldGlvbikuCisK
KyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fcmVBdHRhY2hTdWdn
ZXN0aW9uSGludCk6CisgICAgICAgIE5vdyB0aGF0IGNvbXBsZXRpb25zIGFyZSBub3QgZ3VhcmFu
dGVlZCB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZSB2YWx1ZSwgd2UgbWF5IG5lZWQgdG8gc3BsaXQg
dGhlIHRleHQgbm9kZSB0bworICAgICAgICBpbnNlcnQgdGhlIHN1Z2dlc3Rpb24gaGludCBub2Rl
LgorCiAyMDIxLTEwLTExICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGFkZCBUYWJCYXIgY29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdJLldlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0
eWxlUHJvcGVydHkuanMKaW5kZXggYzAzMWMwYzk3YTY3YmQ3MmJhMTM3MGQ5NDQ1OTY1NWJlYzVh
ZDA0Yy4uMWNmMjdlOWE1MDAyNmVmYTVjYjQzZjM3ZWM1NjZiOTE2MDk5NWY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRT
dHlsZVByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwpAQCAtOTYzLDkgKzk2Myw5IEBAIFdJ
LlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAgICAgfQogCi0gICAgX25hbWVDb21wbGV0
aW9uRGF0YVByb3ZpZGVyKHRleHQsIHthbGxvd0VtcHR5UHJlZml4fSA9IHt9KQorICAgIF9uYW1l
Q29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVBy
ZWZpeH0gPSB7fSkKICAgICB7Ci0gICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSh0ZXh0LCB7YWxsb3dFbXB0eVByZWZpeH0pOworICAg
ICAgICByZXR1cm4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5h
bWUodGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXh9KTsKICAgICB9CiAKICAg
ICBfaGFuZGxlVmFsdWVCZWZvcmVJbnB1dChldmVudCkKQEAgLTk4NywxMCArOTg3LDkgQEAgV0ku
U3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRD
b21taXQodGhpcy5fdmFsdWVUZXh0RmllbGQsIHtkaXJlY3Rpb246ICJmb3J3YXJkIn0pOwogICAg
IH0KIAotICAgIF92YWx1ZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2FsbG93RW1wdHlQ
cmVmaXh9ID0ge30pCisgICAgX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7Y2Fy
ZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeH0gPSB7fSkKICAgICB7Ci0gICAgICAgIC8vIEZJ
WE1FOiA8d2Via2l0Lm9yZy9iLzIyNzQxMT4gU3R5bGVzIHNpZGViYXIgcGFuZWwgc2hvdWxkIHN1
cHBvcnQgbWlkbGluZSBhbmQgbXVsdGlsaW5lIGNvbXBsZXRpb25zLgotICAgICAgICByZXR1cm4g
V0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlKHRleHQsIHRo
aXMuX25hbWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKSwge2FkZGl0aW9uYWxGdW5jdGlvblZh
bHVlQ29tcGxldGlvbnNQcm92aWRlcjogdGhpcy5hZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBs
ZXRpb25zUHJvdmlkZXIuYmluZCh0aGlzKX0pOworICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29y
ZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlKHRleHQsIHRoaXMuX25hbWVFbGVt
ZW50LnRleHRDb250ZW50LnRyaW0oKSwge2NhcmV0UG9zaXRpb24sIGFkZGl0aW9uYWxGdW5jdGlv
blZhbHVlQ29tcGxldGlvbnNQcm92aWRlcjogdGhpcy5hZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNv
bXBsZXRpb25zUHJvdmlkZXIuYmluZCh0aGlzKX0pOwogICAgIH0KIAogICAgIF9zZXR1cEp1bXBU
b1N5bWJvbChlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qcwppbmRleCAx
MzRkNjRlOWZhNzdmOTkxOWExZjU1M2EyMDlmMGM1YzkwMjE4Nzg1Li44YjNiOTNkMWY0YTU1MzM5
MzM4ODhiOTAwZWYyMTFlZDNlNWVkZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVs
ZC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDQsOSArNDQsMTIgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVl
dFRleHRGaWVsZAogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2hhbmRsZUJsdXIuYmluZCh0aGlzKSk7CiAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2hh
bmRsZUtleURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigia2V5dXAiLCB0aGlzLl9oYW5kbGVLZXlVcC5iaW5kKHRoaXMpKTsKICAgICAgICAg
dGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIHRoaXMuX2hhbmRsZUlucHV0
LmJpbmQodGhpcykpOwogCiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSBmYWxzZTsKKyAgICAgICAg
dGhpcy5fcHJldmVudERpc2NhcmRpbmdDb21wbGV0aW9uc09uS2V5VXAgPSBmYWxzZTsKKyAgICAg
ICAgdGhpcy5fa2V5RG93bkNhcmV0UG9zaXRpb24gPSAtMTsKICAgICAgICAgdGhpcy5fdmFsdWVC
ZWZvcmVFZGl0aW5nID0gIiI7CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVmaXggPSAiIjsK
ICAgICAgICAgdGhpcy5fY29udHJvbFNwYWNlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXli
b2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgV0kuS2V5
Ym9hcmRTaG9ydGN1dC5LZXkuU3BhY2UpOwpAQCAtNjMsOCArNjYsMTQgQEAgV0kuU3ByZWFkc2hl
ZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgdmFsdWVXaXRo
b3V0U3VnZ2VzdGlvbigpCiAgICAgewotICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLl9lbGVtZW50
LnRleHRDb250ZW50OwotICAgICAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgdmFsdWUubGVuZ3Ro
IC0gdGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGgpOworICAgICAgICAvLyBUaGUgc3VnZ2VzdGlv
biBjb3VsZCBhcHBlYXIgYW55d2hlcmUgd2l0aGluIHRoZSBlbGVtZW50LCBhbmQgdGhlIHRleHQg
b2YgdGhlIGVsZW1lbnQgY2FuIHNwYW4gbXVsdGlwbGUgbm9kZXMuCisgICAgICAgIGxldCB2YWx1
ZVdpdGhvdXRTdWdnZXN0aW9uID0gIiI7CisgICAgICAgIGZvciAobGV0IGNoaWxkTm9kZSBvZiB0
aGlzLl9lbGVtZW50LmNoaWxkTm9kZXMpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUgPT09
IHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24gKz0gY2hpbGROb2RlLnRleHRDb250
ZW50OworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uOwog
ICAgIH0KIAogICAgIGdldCBzdWdnZXN0aW9uSGludCgpCkBAIC03NCwxMiArODMsMjAgQEAgV0ku
U3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAg
c2V0IHN1Z2dlc3Rpb25IaW50KHZhbHVlKQogICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3N1Z2dl
c3Rpb25IaW50RWxlbWVudC50ZXh0Q29udGVudCA9PT0gdmFsdWUpCisgICAgICAgICAgICByZXR1
cm47CisKICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50LnRleHRDb250ZW50ID0g
dmFsdWU7CiAKLSAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICBpZiAodmFsdWUpIHsKICAgICAg
ICAgICAgIHRoaXMuX3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50LnJlbW92ZSgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVt
ZW50LnJlbW92ZSgpOworCisgICAgICAgIC8vIFJlbW92aW5nIHRoZSBzdWdnZXN0aW9uIGhpbnQg
ZWxlbWVudCBtYXkgbGVhdmUgdGhlIGNvbnRlbnRzIG9mIGBfZWxlbWVudGAgZnJhZ21lbnRlZCBp
bnRvIG11bHRpcGxlIHRleHQgbm9kZXMuCisgICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JFbGVt
ZW50Q2hpbGRyZW4oKTsKICAgICB9CiAKICAgICBzdGFydEVkaXRpbmcoKQpAQCAtOTMsNiArMTEw
LDggQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVs
ZAogICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdmFsdWVCZWZv
cmVFZGl0aW5nID0gdGhpcy52YWx1ZTsKIAorICAgICAgICB0aGlzLl9rZXlEb3duQ2FyZXRQb3Np
dGlvbiA9IC0xOworCiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZWRpdGlu
ZyIpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNvbnRlbnRFZGl0YWJsZSA9ICJwbGFpbnRleHQt
b25seSI7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3BlbGxjaGVjayA9IGZhbHNlOwpAQCAtMTQy
LDcgKzE2MSw4IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRU
ZXh0RmllbGQKICAgICB7CiAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxlY3RlZFRl
eHQuc2xpY2UodGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGgpOwogCi0gICAgICAgIHRoaXMu
X3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKTsKKyAgICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkhp
bnQubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpOwog
CiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3By
ZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0
aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSh0aGlzKTsKQEAgLTE1
MCwyNiArMTcwLDkgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVl
dFRleHRGaWVsZAogCiAgICAgY29tcGxldGlvblN1Z2dlc3Rpb25zQ2xpY2tlZENvbXBsZXRpb24o
c3VnZ2VzdGlvbnNWaWV3LCBzZWxlY3RlZFRleHQpCiAgICAgewotICAgICAgICAvLyBDb25zaWRl
ciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgYm9yZGVy
OiAxcHggc29saWQgcm98Ci0gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgcm9zeWJyb3du
Ci0gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgcm95YWxibHVlCi0gICAgICAgIC8vCi0g
ICAgICAgIC8vIENsaWNraW5nIG9uICJyb3N5YnJvd24iIHNob3VsZCByZXBsYWNlICJybyIgd2l0
aCAicm9zeWJyb3duIi4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gICAgICAgICAgIHByZWZpeDog
IDFweCBzb2xpZCBybwotICAgICAgICAvLyBjb21wbGV0aW9uUHJlZml4OiAgICAgICAgICAgIHJv
Ci0gICAgICAgIC8vICAgICAgICBuZXdQcmVmaXg6ICAxcHggc29saWQKLSAgICAgICAgLy8gICAg
IHNlbGVjdGVkVGV4dDogICAgICAgICAgICByb3N5YnJvd24KLSAgICAgICAgbGV0IHByZWZpeCA9
IHRoaXMudmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpOwotICAgICAgICBsZXQgbmV3UHJlZml4ID0g
cHJlZml4LnNsaWNlKDAsIC10aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7Ci0KLSAgICAg
ICAgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IG5ld1ByZWZpeCArIHNlbGVjdGVkVGV4dDsK
LQotICAgICAgICAvLyBQbGFjZSB0ZXh0IGNhcmV0IGF0IHRoZSBlbmQuCi0gICAgICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRoaXMuX2VsZW1lbnQsIHNlbGVjdGVk
VGV4dC5sZW5ndGgsIHRoaXMuX2VsZW1lbnQsIHNlbGVjdGVkVGV4dC5sZW5ndGgpOworICAgICAg
ICB0aGlzLnN1Z2dlc3Rpb25IaW50ID0gc2VsZWN0ZWRUZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRp
b25QcmVmaXgubGVuZ3RoKTsKIAorICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KHtt
b3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbjogdHJ1ZX0pOwogICAgICAgICB0aGlzLmRpc2NhcmRD
b21wbGV0aW9uKCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlz
Ll9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikK
QEAgLTIwMCw4ICsyMDMsMTEgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJl
YWRzaGVldFRleHRGaWVsZAogCiAgICAgX2hhbmRsZU1vdXNlRG93bihldmVudCkKICAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9lZGl0aW5nKQotICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0
aW9uKCk7CisgICAgICAgIGlmICghdGhpcy5fZWRpdGluZykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgdGhpcy5kaXNjYXJk
Q29tcGxldGlvbigpOwogICAgIH0KIAogICAgIF9oYW5kbGVCbHVyKGV2ZW50KQpAQCAtMjI2LDgg
KzIzMiwxMiBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4
dEZpZWxkCiAgICAgICAgIGlmICghdGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVybjsK
IAorICAgICAgICB0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25LZXlVcCA9IGZh
bHNlOworICAgICAgICB0aGlzLl9rZXlEb3duQ2FyZXRQb3NpdGlvbiA9IHRoaXMuX2dldENhcmV0
UG9zaXRpb24oKTsKKwogICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdGlvbnNWaWV3KSB7CiAgICAg
ICAgICAgICBsZXQgY29uc3VtZWQgPSB0aGlzLl9oYW5kbGVLZXlEb3duRm9yU3VnZ2VzdGlvblZp
ZXcoZXZlbnQpOworICAgICAgICAgICAgdGhpcy5fcHJldmVudERpc2NhcmRpbmdDb21wbGV0aW9u
c09uS2V5VXAgPSBjb25zdW1lZDsKICAgICAgICAgICAgIGlmIChjb25zdW1lZCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI5Miw2ICszMDIsNyBAQCBXSS5TcHJlYWRz
aGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgICAgICBp
ZiAodGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnZpc2libGUpCiAgICAgICAgICAgICAgICAgdGhpcy5f
c3VnZ2VzdGlvbnNWaWV3LmhpZGUoKTsKICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHRoaXMuX3ByZXZlbnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktleVVwID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBjb25zdCBmb3JjZUNvbXBsZXRpb25zID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVDb21wbGV0aW9ucyhmb3JjZUNvbXBsZXRpb25zKTsKICAgICAgICAg
ICAgIH0KQEAgLTMyNywxMiArMzM4LDEyIEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xh
c3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkFycm93UmlnaHQiICYmIHRoaXMuc3Vn
Z2VzdGlvbkhpbnQpIHsKKyAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkFycm93UmlnaHQiICYm
IHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoKSB7CiAgICAgICAgICAgICBsZXQgc2VsZWN0aW9u
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogCi0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmlz
Q29sbGFwc2VkICYmIChzZWxlY3Rpb24uZm9jdXNPZmZzZXQgPT09IHRoaXMudmFsdWVXaXRob3V0
U3VnZ2VzdGlvbigpLmxlbmd0aCB8fCBzZWxlY3Rpb24uZm9jdXNOb2RlID09PSB0aGlzLl9zdWdn
ZXN0aW9uSGludEVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ29sbGFw
c2VkKSB7CiAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcCgpOwotICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRUZXh0IiwgZmFsc2UsIHRoaXMuc3VnZ2VzdGlvbkhp
bnQpOworICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5Q29tcGxldGlvbkhpbnQoe21vdmVDYXJl
dFRvRW5kT2ZDb21wbGV0aW9uOiB0cnVlfSk7CiAKICAgICAgICAgICAgICAgICAvLyBXaGVuIGNv
bXBsZXRpbmcgImJhY2tncm91bmQiLCBkb24ndCBoaWRlIHRoZSBjb21wbGV0aW9uIHBvcG92ZXIu
CiAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgc2hvd2luZyB0aGUgcG9wb3ZlciB3aXRoIHBy
b3BlcnRpZXMgc3VjaCBhcyAiYmFja2dyb3VuZC1jb2xvciIgYW5kICJiYWNrZ3JvdW5kLWltYWdl
Ii4KQEAgLTM2MiwxNiArMzczLDM5IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3Mg
U3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYm
IHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0g
ImZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRl
eHRGaWVsZERpZENoYW5nZSh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIF9oYW5kbGVLZXlVcCgp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VkaXRpbmcgfHwgIXRoaXMuX3N1Z2dlc3Rpb25z
VmlldykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBDZXJ0YWluIGFjdGlvbnMs
IGxpa2UgQ3RybCtTcGFjZSB3aWxsIGhhbmRsZSB1cGRhdGluZyBvciBkaXNjYXJkaW5nIGNvbXBs
ZXRpb25zIGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKHRoaXMuX3ByZXZlbnREaXNjYXJkaW5n
Q29tcGxldGlvbnNPbktleVVwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFNv
bWUga2V5IGV2ZW50cywgbGlrZSB0aGUgYXJyb3cga2V5cyBhbmQgQ3RybCtBIChtb3ZlIHRvIGxp
bmUgc3RhcnQpLCB3aWxsIG1vdmUgdGhlIGNhcmV0IHdpdGhvdXQgY29tbWl0dGluZworICAgICAg
ICAvLyBhbnkgaW5wdXQgdG8gdGhlIHRleHQgZmllbGQuIEluIHRob3NlIHNpdHVhdGlvbnMgd2Ug
c2hvdWxkIGRpc2NhcmQgY29tcGxldGlvbiBpZiB0aGV5IGFyZSBhdmFpbGFibGUuIEl0IGlzCisg
ICAgICAgIC8vIGFsc28gcG9zc2libGUgdGhhdCB3ZSByZWNlaXZlIGEgS2V5VXAgZXZlbnQgZm9y
IGEga2V5IHRoYXQgd2FzIG5vdCBwcmVzc2VkIGluc2lkZSB0aGlzIHRleHQgZmllbGQsIGluIHdo
aWNoCisgICAgICAgIC8vIGNhc2UgdGhlIF9rZXlEb3duQ2FyZXRQb3NpdGlvbiB3aWxsIHN0aWxs
IGJlIC0xLiBUaGlzIGNhbiBvY2N1ciB3aGVuIHRoZSB1c2VyIHR5cGVzIGEgYDpgIHRvIGJlZ2lu
IGVkaXRpbmcKKyAgICAgICAgLy8gdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5LCBhbmQgdGhlIEtl
eVVwIGV2ZW50cyBmb3IgZWFjaCBvZiB0aG9zZSBrZXlzIHdpbGwgYmUgaGFuZGxlZCBoZXJlLCBl
dmVuIHRob3VnaCB0aGUKKyAgICAgICAgLy8gY29ycmVzcG9uZGluZyBLZXlEb3duIGV2ZW50cyB3
YXMgbmV2ZXIgaGFuZGxlZCBieSB0aGlzIHRleHQgZmllbGQuCisgICAgICAgIGlmICh0aGlzLl9r
ZXlEb3duQ2FyZXRQb3NpdGlvbiA9PT0gdGhpcy5fZ2V0Q2FyZXRQb3NpdGlvbigpIHx8IHRoaXMu
X2tleURvd25DYXJldFBvc2l0aW9uID09PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLmRpc2NhcmRDb21wbGV0aW9uKCk7CisgICAgfQorCiAgICAgX2hhbmRsZUlucHV0
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lZGl0aW5nKQogICAgICAgICAgICAg
cmV0dXJuOwogCisgICAgICAgIHRoaXMuX3ByZXZlbnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktl
eVVwID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ29tcGxldGlvbnMoKTsKIAogICAgICAg
ICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0
VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24iKQpAQCAtMzg0LDcgKzQxOCw3IEBAIFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgdmFsdWVXaXRob3V0U3VnZ2VzdGlvbiA9IHRo
aXMudmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpOwotICAgICAgICBsZXQge2NvbXBsZXRpb25zLCBw
cmVmaXh9ID0gdGhpcy5fY29tcGxldGlvblByb3ZpZGVyKHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24s
IHthbGxvd0VtcHR5UHJlZml4OiBmb3JjZUNvbXBsZXRpb25zfSk7CisgICAgICAgIGxldCB7Y29t
cGxldGlvbnMsIHByZWZpeH0gPSB0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0
U3VnZ2VzdGlvbiwge2FsbG93RW1wdHlQcmVmaXg6IGZvcmNlQ29tcGxldGlvbnMsIGNhcmV0UG9z
aXRpb246IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKX0pOwogICAgICAgICB0aGlzLl9jb21wbGV0
aW9uUHJlZml4ID0gcHJlZml4OwogCiAgICAgICAgIGlmICghY29tcGxldGlvbnMubGVuZ3RoKSB7
CkBAIC00MjIsOSArNDU2LDE0IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3By
ZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIF9zaG93U3VnZ2VzdGlvbnNWaWV3KCkKICAgICB7Ci0g
ICAgICAgIGxldCBwcmVmaXggPSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAg
ICAgbGV0IHN0YXJ0T2Zmc2V0ID0gcHJlZml4Lmxlbmd0aCAtIHRoaXMuX2NvbXBsZXRpb25QcmVm
aXgubGVuZ3RoOwotICAgICAgICBsZXQgY2FyZXRSZWN0ID0gdGhpcy5fZ2V0Q2FyZXRSZWN0KHN0
YXJ0T2Zmc2V0KTsKKyAgICAgICAgLy8gQWRqdXN0IHRoZSB1c2VkIGNhcmV0IHBvc2l0aW9uIHRv
IGNvcnJlY3RseSBhbGlnbiBhdXRvY29tcGxldGlvbiByZXN1bHRzIHdpdGggZXhpc3RpbmcgdGV4
dC4gVGhlIHN1Z2dlc3Rpb25zCisgICAgICAgIC8vIHNob3VsZCBhcHBlYXIgYWxpZ25lZCBhcyBi
ZWxvdzoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gYm9yZGVyOiAxcHggc29saWQgcm98CisgICAg
ICAgIC8vICAgICAgICAgICAgICAgICAgIHJvc3licm93bgorICAgICAgICAvLyAgICAgICAgICAg
ICAgICAgICByb3lhbGJsdWUKKyAgICAgICAgbGV0IGFkanVzdGVkQ2FyZXRQb3NpdGlvbiA9IHRo
aXMuX2dldENhcmV0UG9zaXRpb24oKSAtIHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoOwor
ICAgICAgICBsZXQgY2FyZXRSZWN0ID0gdGhpcy5fZ2V0Q2FyZXRSZWN0KGFkanVzdGVkQ2FyZXRQ
b3NpdGlvbik7CiAKICAgICAgICAgLy8gSGlkZSBjb21wbGV0aW9uIHBvcG92ZXIgd2hlbiB0aGUg
YW5jaG9yIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00uCiAgICAgICAgIGlmICghY2Fy
ZXRSZWN0KQpAQCAtNDM1LDQ3ICs0NzQsMTA0IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0g
Y2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgfQogICAgIH0KIAotICAgIF9nZXRD
YXJldFJlY3Qoc3RhcnRPZmZzZXQpCisgICAgX2dldENhcmV0UG9zaXRpb24oKQogICAgIHsKICAg
ICAgICAgbGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgaWYg
KCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAg
IC8vIFRoZSB3aW5kb3cncyBzZWxlY3Rpb24gcmFuZ2Ugd2lsbCBvbmx5IGNvbnRhaW4gdGhlIGN1
cnJlbnQgbGluZSdzIHBvc2l0aW9uaW5nIGluIG11bHRpbGluZSB0ZXh0LCBzbyBhIG5ldworICAg
ICAgICAvLyByYW5nZSBtdXN0IGJlIGNyZWF0ZWQgYmV0d2VlbiB0aGUgZW5kIG9mIHRoZSBjdXJy
ZW50IHJhbmdlIGFuZCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRleHQgaW4K
KyAgICAgICAgLy8gb3JkZXIgdG8gZ2V0IGFuIGFjY3VyYXRlIGNoYXJhY3RlciBwb3NpdGlvbiBm
b3IgdGhlIGNhcmV0LgorICAgICAgICBsZXQgbGluZVJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdl
QXQoMCk7CisgICAgICAgIGxldCBtdWx0aWxpbmVSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgICAgIG11bHRpbGluZVJhbmdlLnNldFN0YXJ0KHRoaXMuX2VsZW1lbnQsIDApOwor
ICAgICAgICBtdWx0aWxpbmVSYW5nZS5zZXRFbmQobGluZVJhbmdlLmVuZENvbnRhaW5lciwgbGlu
ZVJhbmdlLmVuZE9mZnNldCk7CisgICAgICAgIHJldHVybiBtdWx0aWxpbmVSYW5nZS50b1N0cmlu
ZygpLmxlbmd0aDsKKyAgICB9CiAKKyAgICBfZ2V0Q2FyZXRSZWN0KGNhcmV0UG9zaXRpb24pCisg
ICAgewogICAgICAgICBsZXQgaXNIaWRkZW4gPSAoY2xpZW50UmVjdCkgPT4gewogICAgICAgICAg
ICAgcmV0dXJuIGNsaWVudFJlY3QueCA9PT0gMCAmJiBjbGllbnRSZWN0LnkgPT09IDA7CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKHNlbGVjdGlvbi5yYW5nZUNvdW50KSB7Ci0gICAgICAgICAg
ICBsZXQgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCk7Ci0gICAg
ICAgICAgICByYW5nZS5zZXRTdGFydChyYW5nZS5zdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQp
OwotICAgICAgICAgICAgbGV0IGNsaWVudFJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKTsKKyAgICAgICAgbGV0IGNhcmV0UmFuZ2UgPSB0aGlzLl9yYW5nZUF0Q2FyZXRQb3NpdGlv
bihjYXJldFBvc2l0aW9uKTsKKyAgICAgICAgbGV0IGNhcmV0Q2xpZW50UmVjdCA9IGNhcmV0UmFu
Z2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGlmICghaXNIaWRkZW4oY2FyZXRD
bGllbnRSZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVj
dChjYXJldENsaWVudFJlY3QpOwogCi0gICAgICAgICAgICBpZiAoIWlzSGlkZGVuKGNsaWVudFJl
Y3QpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGFmdGVyIGRlbGV0aW5nIHZh
bHVlLiBIb3dldmVyLCB3aGVuIGZvY3VzaW5nCi0gICAgICAgICAgICAgICAgLy8gb24gYW4gZW1w
dHkgdmFsdWUgY2xpZW50UmVjdCBpcyB2aXNpYmxlLgotICAgICAgICAgICAgICAgIHJldHVybiBX
SS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChjbGllbnRSZWN0KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGxldCBjbGllbnRSZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgaWYgKGlzSGlkZGVuKGNsaWVudFJlY3QpKQorICAg
ICAgICBsZXQgZWxlbWVudENsaWVudFJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOworICAgICAgICBpZiAoaXNIaWRkZW4oZWxlbWVudENsaWVudFJlY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgY29uc3QgbGVmdFBhZGRpbmcgPSBwYXJz
ZUludChnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2VsZW1lbnQpLnBhZGRpbmdMZWZ0KSB8fCAwOwot
ICAgICAgICByZXR1cm4gbmV3IFdJLlJlY3QoY2xpZW50UmVjdC5sZWZ0ICsgbGVmdFBhZGRpbmcs
IGNsaWVudFJlY3QudG9wLCBjbGllbnRSZWN0LndpZHRoLCBjbGllbnRSZWN0LmhlaWdodCk7Cisg
ICAgICAgIHJldHVybiBuZXcgV0kuUmVjdChlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgbGVmdFBh
ZGRpbmcsIGVsZW1lbnRDbGllbnRSZWN0LnRvcCwgZWxlbWVudENsaWVudFJlY3Qud2lkdGgsIGVs
ZW1lbnRDbGllbnRSZWN0LmhlaWdodCk7CisgICAgfQorCisgICAgX3JhbmdlQXRDYXJldFBvc2l0
aW9uKGNhcmV0UG9zaXRpb24pIHsKKyAgICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLl9lbGVt
ZW50LmNoaWxkTm9kZXMpIHsKKyAgICAgICAgICAgIGxldCB0ZXh0Q29udGVudCA9IG5vZGUudGV4
dENvbnRlbnQ7CisgICAgICAgICAgICBpZiAoY2FyZXRQb3NpdGlvbiA8PSB0ZXh0Q29udGVudC5s
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KG5vZGUsIGNhcmV0UG9zaXRpb24p
OworICAgICAgICAgICAgICAgIHJhbmdlLnNldEVuZChub2RlLCBjYXJldFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmFuZ2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNhcmV0UG9zaXRpb24gLT0gdGV4dENvbnRlbnQubGVuZ3RoOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSWYgdGhlcmUgYXJlIG5vIG5vZGVzLCBvciB0aGUgY2FyZXQgcG9zaXRpb24gaXMgZ3Jl
YXRlciB0aGFuIHRoZSB0b3RhbCB0ZXh0IGNvbnRlbnQsIHByb3ZpZGUgdGhlIHJhbmdlIG9mIGEK
KyAgICAgICAgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiB0aGUgZWxlbWVudC4KKyAgICAgICAgbGV0
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9k
ZUNvbnRlbnRzKHRoaXMuX2VsZW1lbnQpOworICAgICAgICByYW5nZS5jb2xsYXBzZSgpOworICAg
ICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfQogCi0gICAgX2FwcGx5Q29tcGxldGlvbkhpbnQoKQor
ICAgIF9hcHBseUNvbXBsZXRpb25IaW50KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbn0gPSB7
fSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY29tcGxldGlvblByb3ZpZGVyIHx8ICF0aGlz
LnN1Z2dlc3Rpb25IaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMuX2Nv
bWJpbmVFZGl0b3JFbGVtZW50Q2hpbGRyZW4oe25ld0NhcmV0UG9zaXRpb246IG1vdmVDYXJldFRv
RW5kT2ZDb21wbGV0aW9uID8gdGhpcy5fZ2V0Q2FyZXRQb3NpdGlvbigpICsgdGhpcy5zdWdnZXN0
aW9uSGludC5sZW5ndGggOiBudWxsfSk7CisgICAgfQorCisgICAgX2NvbWJpbmVFZGl0b3JFbGVt
ZW50Q2hpbGRyZW4oe25ld0NhcmV0UG9zaXRpb259ID0ge30pCisgICAgeworICAgICAgICBuZXdD
YXJldFBvc2l0aW9uID8/PSB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCk7CisKKyAgICAgICAgLy8g
U2V0dGluZyB0aGUgdGV4dENvbnRlbnQgb2YgdGhlIGVsZW1lbnQgdG8gaXRzIGN1cnJlbnQgdGV4
dENvbnRlbnQgd2lsbCB0YWtlIHRoZSB0ZXh0IGZyb20gdGhlIG11bHRpcGxlCisgICAgICAgIC8v
IHBvdGVudGlhbCBjaGlsZCBub2RlcyAocG90ZW50aWFsbHkgYSBzdWdnZXN0aW9uIGhpbnQgbm9k
ZSBhbmQgc29tZSBudW1iZXIgb2YgZXhpc3RpbmcgdGV4dCBub2RlcykgYW5kIHR1cm4KKyAgICAg
ICAgLy8gdGhlbSBpbnRvIGEgc2luZ2xlIHRleHQgbm9kZSB3aXRoaW4gdGhlIGVsZW1lbnQuCiAg
ICAgICAgIHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9lbGVtZW50LnRleHRDb250
ZW50OworCisgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LnRleHRDb250ZW50Lmxlbmd0aCkgewor
ICAgICAgICAgICAgbGV0IHRleHRDaGlsZE5vZGUgPSB0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQ7
CisgICAgICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0ZXh0
Q2hpbGROb2RlLCBuZXdDYXJldFBvc2l0aW9uLCB0ZXh0Q2hpbGROb2RlLCBuZXdDYXJldFBvc2l0
aW9uKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIF9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCkK
ICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3Ro
LCAiU3VnZ2VzdGlvbiBoaW50IHNob3VsZCBub3QgYmUgZW1wdHkgd2hlbiBhdHRhY2hpbmcgdGhl
IHN1Z2dlc3Rpb24gaGludCBlbGVtZW50LiIpOworCiAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0
aW9uSGludEVsZW1lbnQucGFyZW50RWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudCkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZCh0aGlzLl9zdWdnZXN0
aW9uSGludEVsZW1lbnQpOworICAgICAgICBsZXQgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVj
dGlvbigpOworICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQubGVuZ3RoIHx8
ICFzZWxlY3Rpb24ucmFuZ2VDb3VudCkgeworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmQodGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGxldCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwor
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJhbmdlLmVuZENvbnRhaW5lciBpbnN0YW5jZW9mIFRl
eHQsIHJhbmdlLmVuZENvbnRhaW5lcik7CisgICAgICAgIGlmICghKHJhbmdlLmVuZENvbnRhaW5l
ciBpbnN0YW5jZW9mIFRleHQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
X2VsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudCwgcmFuZ2Uu
ZW5kQ29udGFpbmVyLnNwbGl0VGV4dChyYW5nZS5lbmRPZmZzZXQpKTsKICAgICB9CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444267</attachid>
            <date>2021-11-15 09:48:50 -0800</date>
            <delta_ts>2021-11-15 22:01:47 -0800</delta_ts>
            <desc>Patch v1.2.1 - For landing</desc>
            <filename>bug-227411-20211115094849.patch</filename>
            <type>text/plain</type>
            <size>23568</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
ZDM3MWNkMjRlNDU1MjQwZmI0MWIxN2RiMGYyNTBkNjMzNDI3NjY1Li4xNjMzMWNlOGEwZmRjNGY3
NjQ4MzU0MjI4OGViZmUyMDg4NjYyOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMS0xMS0xNSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGVzOiBBdXRvY29tcGxldGUgc2hvdWxkIHN1
cHBvcnQgbWlkLWxpbmUgY29tcGxldGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJv
dXNzby4KKworICAgICAgICBBdXRvY29tcGxldGlvbiBmb3IgQ1NTIHByb3BlcnR5IHZhbHVlcyB3
YXMgbGFja2luZyBpbiB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIG1pZC1saW5lIGNvbXBsZXRpb25z
LCBpbmNsdWRpbmcKKyAgICAgICAgd2l0aGluIGZ1bmN0aW9ucywgYW5kIGEgbGFjayBvZiBzdXBw
b3J0IGZvciBtdWx0aS1saW5lIENTUyBwcm9wZXJ0eSB2YWx1ZXMuIFRoaXMgcmVzb2x2ZXMgdGhv
c2UgcGFpbiBwb2ludHMgYnkKKyAgICAgICAgbWFraW5nIFNwcmVhZHNoZWV0VGV4dEZpZWxkIG11
bHRpLWxpbmUgYXdhcmUgYW5kIGFsbG93aW5nIG1pZC1saW5lIGF1dG9jb21wbGV0aW9uLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6
CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9uYW1lQ29t
cGxldGlvbkRhdGFQcm92aWRlcik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkucHJvdG90eXBlLl92YWx1ZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIpOgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qczoKKyAgICAgICAgKFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxk
LnByb3RvdHlwZS52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKToKKyAgICAgICAgQmVjYXVzZSBzdWdn
ZXN0aW9ucyBjYW4gb2NjdXIgYW55d2hlcmUgd2l0aGluIHRoZSB2YWx1ZSwgd2UgbmVlZCB0byBp
dGVyYXRlIHRocm91Z2ggZWFjaCBvZiB0aGUgbm9kZXMgYW5kCisgICAgICAgIGNvbGxlY3QgdGhl
IHRleHQgb2YgYW55IG9mIHRoZW0gdGhhdCBhcmUgbm90IHRoZSBjb21wbGV0aW9uIHN1Z2dlc3Rp
b24uCisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5zZXQgc3Vn
Z2VzdGlvbkhpbnQpOgorICAgICAgICBXaGVuIHJlbW92aW5nIHRoZSBzdWdnZXN0aW9uIGhpbnQg
ZWxlbWVudCwgd2Ugc2hvdWxkIHJlY29tYmluZSB0aGUgdGV4dCBub2RlcyB3ZSBtYXkgaGF2ZSBz
cGxpdCB1cG9uIGluc2VydGlvbgorICAgICAgICB0byBwcmV2ZW50IHRoZSB0ZXh0IGNvbnRlbnQg
ZnJvbSBiZWNvbWluZyBlbmRsZXNzbHkgZnJhZ21lbnRlZCBpbnRvIG11bHRpcGxlIHRleHQgbm9k
ZXMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJv
dG90eXBlLnN0YXJ0RWRpdGluZyk6CisgICAgICAgIFJlc2V0IHRoZSBsYXN0IGtub3duIGNhcmV0
IHBvc2l0aW9uIHdoZW4gZWRpdGluZyBzdGFydHMgc28gdGhhdCB3ZSBkb24ndCBtaXN0YWtlIGtl
eXMgdGhhdCBhcmUgYWxyZWFkeSBkb3duIGFzCisgICAgICAgIGhhdmluZyBtb3ZlZCB0aGUgY3Vy
c29yIHRvIGl0cyBpbml0aWFsIHBvc2l0aW9uLgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRl
eHRGaWVsZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9u
KToKKyAgICAgICAgV2Ugc2hvdWxkIG9ubHkgYXR0ZW1wdCB0byByZWF0dGFjaCB0aGUgc3VnZ2Vz
dGlvbiBoaW50IGVsZW1lbnQgaWYgd2UgaGF2ZSBhIHN1Z2dlc3Rpb24gaGludCB0byBzaG93LCBv
dGhlcndpc2UKKyAgICAgICAgd2UgY291bGQgZW5kIHVwIHdpdGggYSBwaGFudG9tIGVtcHR5IHN1
Z2dlc3Rpb24gaGludCB0aGF0IGlzbid0IHByb3Blcmx5IHBsYWNlZCBsYXRlci4KKworICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLmNvbXBsZXRpb25TdWdnZXN0aW9u
c0NsaWNrZWRDb21wbGV0aW9uKToKKyAgICAgICAgVXBkYXRlZCB0byB1c2UgZXhpc3RpbmcgY29t
cGxldGlvbiBjb21taXR0aW5nIHBhdGggdG8gcmVkdWNlIGR1cGxpY2F0ZWQgbG9naWMuCisKKyAg
ICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlTW91c2VEb3du
KToKKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3MgaW5zaWRlIHRoZSB0ZXh0IGZpZWxkIHdo
aWxlIHN1Z2dlc3Rpb25zIGFyZSB2aXNpYmxlIHRyZWF0IHRoYXQgYXMgaW50ZW50IHRvIHN0b3AK
KyAgICAgICAgYXV0b2NvbXBsZXRpb24gc2ltaWxhciB0byB0aGUgZXNjYXBlIGtleSwgc2luY2Ug
dGhlIG5ldyBjdXJzb3IgbG9jYXRpb24gY291bGQgYmUgYW55d2hlcmUgaW4gdGhlIHRleHQgZmll
bGQuCisgICAgICAgIFRoaXMgYmVoYXZpb3IgYWxzbyBtYXRjaGVzIG90aGVyIGNvZGUgZWRpdG9y
cyBsaWtlIFhjb2RlLCB3aGVyZSBjbGlja2luZyBvdXRzaWRlIGEgY29tcGxldGlvbiBwb3B1cCB3
aWxsIGRpc21pc3MKKyAgICAgICAgdGhlIGNvbXBsZXRpb25zIGxpc3QuCisKKyAgICAgICAgKFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAg
IEtlZXAgdHJhY2sgb2Ygd2hlcmUgdGhlIGNhcmV0IHdhcyBhcyB3ZWxsIGFzIGlmIHRoZSB0aGUg
a2V5IGV2ZW50IHdhcyBoYW5kbGVkIGJ5IHRoZSBzdWdnZXN0aW9uIHZpZXcgYXQgdGhlIHRpbWUK
KyAgICAgICAgYSBrZXkgaXMgcHJlc3NlZCBzbyB0aGF0IHdlIGNhbiBsYXRlciBjb21wYXJlIHRo
ZSBwb3NpdGlvbiB0byB0aGF0IG9mIHdoZW4gdGhlIGtleSBpcyByZWxlYXNlZCB0byBkZXRlcm1p
bmUgaWYKKyAgICAgICAgY29tcGxldGlvbnMgc2hvdWxkIGJlIGRpc2NhcmRlZC4KKworICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duRm9yU3Vn
Z2VzdGlvblZpZXcpOgorICAgICAgICBXZSBjYW4gbm8gbG9uZ2VyIGFzc3VtZSB0aGF0IHRoZSBj
dXJyZW50IHNlbGVjdGlvbidzIG9mZnNldCB3aWxsIG1hdGNoIHRoZSB2YWx1ZSdzIGxlbmd0aCwg
YXMgdGhlIG9mZnNldCBjb3VsZAorICAgICAgICBiZSBvbiBhbnkgbGluZSwgb3IgdGhlIHN1Z2dl
c3Rpb24gY291bGQgYmUgaW4gbWlkZGxlIG9mIGEgbGluZS4gQmVjYXVzZSBhIHN1Z2dlc3Rpb25I
aW50IG9ubHkgY29udGFpbnMgdGV4dCB3aGVuCisgICAgICAgIHdlIGFyZSBpbiBtaWRkbGUgb2Yg
YXV0b2NvbXBsZXRpb24sIGl0IGFsb25lIGlzIGFuIGluZGljYXRvciB0aGF0IHByZXNzaW5nIHRo
ZSByaWdodCBhcnJvdyBrZXkgc2hvdWxkIGNvbW1pdCB0aGUKKyAgICAgICAgY29tcGxldGlvbi4g
YGRvY3VtZW50LmV4ZWNDb21tYW5kYCBpcyBkZXByZWNhdGVkLCBzbyBpbnN0ZWFkIHdlIG5vdyB1
c2UgdGhlIGV4aXN0aW5nIGNvbXBsZXRpb24gY29tbWl0dGluZyBwYXRoCisgICAgICAgIHRvIHJl
ZHVjZSBkdXBsaWNhdGVkIGxvZ2ljIGhlcmUuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBsZWZ0
IGFycm93IGtleSBpcyBzdGlsbCBleHBsaWNpdGx5IGhhbmRsZWQgZm9yIGRpc21pc3NpbmcgYXV0
b2NvbXBsZXRpb24sIGFzIHRoZSBuZXcgbWVjaGFuaXNtIGZvcgorICAgICAgICBkaXNtaXNzaW5n
IGF1dG9jb21wbGV0aW9uIHdvbid0IHRyaWdnZXIgdW5sZXNzIHRoZSBjYXJldCBoYXMgbW92ZWQs
IGFuZCB0aGUgY2FyZXQgd2lsbCBub3QgbW92ZSBpZiB5b3UgcHJlc3MgdGhlCisgICAgICAgIGxl
ZnQgYXJyb3cga2V5IGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dCBmaWVsZC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlVcCk6CisgICAgICAg
IFdoZW4gYSBrZXkgaXMgcmVsZWFzZWQsIHdlIHNob3VsZCBjaGVjayB0byBzZWUgaWYgdGhlIGNh
cmV0IGhhcyBtb3ZlZCBhcyBhIHJlc3VsdCBvZiB0aGUga2V5c3Ryb2tlIHRoYXQgd2UgaGF2ZQor
ICAgICAgICBub3QgYWxyZWFkeSBleHBsaWNpdGx5IGhhbmRsZWQuIElmIGl0IGhhcyBtb3ZlZCBh
bmQgd2FzIG5vdCBoYW5kbGVkLCB3ZSBkaXNtaXNzIHRoZSBhdXRvY29tcGxldGlvbiBzdWdnZXN0
aW9ucy4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5k
bGVJbnB1dCk6CisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5f
dXBkYXRlQ29tcGxldGlvbnMpOgorICAgICAgICBQcm92aWRlIHRoZSBjdXJyZW50IGNhcmV0IHBv
c2l0aW9uIHRvIHRoZSBjb21wbGV0aW9uIHByb3ZpZGVkLgorCisgICAgICAgIChXSS5TcHJlYWRz
aGVldFRleHRGaWVsZC5wcm90b3R5cGUuX3Nob3dTdWdnZXN0aW9uc1ZpZXcpOgorICAgICAgICBJ
biBvcmRlciB0byBjb3JyZWN0bHkgYWxpZ24gdGhlIGNvbXBsZXRpb24gbGlzdCB3aXRoIHRoZSBj
dXJyZW50IHRleHQgY29udGVudCwgaXQgbXVzdCBiZSBvZmZzZXQgZnJvbSB0aGUgY2FyZXQKKyAg
ICAgICAgcG9zaXRpb24gZXhjbHVkaW5nIHRoZSBjdXJyZW50IHByZWZpeC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9nZXRDYXJldFBvc2l0aW9uKToKKyAg
ICAgICAgQWRkZWQgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgY2FyZXQgaW4gdGhlIGNvbXBsZXRl
IHRleHQgdmFsdWUsIGFjY291bnRpbmcgZm9yIG11bHRpLWxpbmUgdmFsdWVzIGFuZCBtaWQtbGlu
ZQorICAgICAgICBzdWdnZXN0aW9ucy4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQucHJvdG90eXBlLl9nZXRDYXJldFJlY3QpOgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFRl
eHRGaWVsZC5wcm90b3R5cGUuX3JhbmdlQXRDYXJldFBvc2l0aW9uKToKKyAgICAgICAgRmluZCB0
aGUgcmFuZ2UgZm9yIGEgY2FyZXQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBUaGlzIGNvbXBsaW1l
bnRzIGBfZ2V0Q2FyZXRQb3NpdGlvbmAsIGFuZCBhbGxvd3MgdXMgdG8gY291bnQKKyAgICAgICAg
YmFjayBzb21lIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFuZCBjcmVhdGUgYSByYW5nZSBvZiB3aGlj
aCB3ZSBsYXRlciBnZXQgdGhlIGNsaWVudCByZWN0YW5nbGUuCisKKyAgICAgICAgKFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fYXBwbHlDb21wbGV0aW9uSGludCk6CisgICAgICAg
IEFkZCBvcHRpb25hbCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgY2FyZXQgcG9zaXRpb24gdG8g
YmUgYXQgdGhlIGVuZCBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgdGV4dC4KKworICAgICAgICAoV0ku
U3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxk
cmVuKToKKyAgICAgICAgQWRkZWQgdG8gaGFuZGxlIGNvbWJpbmluZyB0aGUgZnJhZ21lbnRlZCB0
ZXh0IG5vZGVzIChhbmQgcG9zc2libHkgYSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVudCkgYmFjayBp
bnRvIGEgc2luZ2xlCisgICAgICAgIHRleHQgbm9kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgY3Vy
cmVudCBjdXJzb3IgcG9zaXRpb24gb3Igb3B0aW9uYWxseSBtb3ZpbmcgdGhlIGN1cnNvciB0byBh
IG5ldyBsb2NhdGlvbiAoZS5nLgorICAgICAgICB0aGUgZW5kIG9mIGEgY29tcGxldGlvbikuCisK
KyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fcmVBdHRhY2hTdWdn
ZXN0aW9uSGludCk6CisgICAgICAgIE5vdyB0aGF0IGNvbXBsZXRpb25zIGFyZSBub3QgZ3VhcmFu
dGVlZCB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZSB2YWx1ZSwgd2UgbWF5IG5lZWQgdG8gc3BsaXQg
dGhlIHRleHQgbm9kZSB0bworICAgICAgICBpbnNlcnQgdGhlIHN1Z2dlc3Rpb24gaGludCBub2Rl
LgorCiAyMDIxLTExLTEyICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBFeHRyYWN0IHJldXNhYmxlIGxvZ2ljIGZyb20gUmVzb3Vy
Y2VRdWVyeUNvbnRyb2xsZXIsIFJlc291cmNlUXVlcnlSZXN1bHQgYW5kIFJlc291cmNlUXVlcnlN
YXRjaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCmluZGV4IGMwMzFj
MGM5N2E2N2JkNzJiYTEzNzBkOTQ0NTk2NTViZWM1YWQwNGMuLjFjZjI3ZTlhNTAwMjZlZmE1Y2I0
M2YzN2VjNTY2YjkxNjA5OTVmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkuanMKQEAgLTk2Myw5ICs5NjMsOSBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkg
PSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgfQogICAgIH0KIAotICAgIF9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7YWxs
b3dFbXB0eVByZWZpeH0gPSB7fSkKKyAgICBfbmFtZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIodGV4
dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXh9ID0ge30pCiAgICAgewotICAgICAg
ICByZXR1cm4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUo
dGV4dCwge2FsbG93RW1wdHlQcmVmaXh9KTsKKyAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRD
b21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKHRleHQsIHtjYXJldFBvc2l0aW9uLCBh
bGxvd0VtcHR5UHJlZml4fSk7CiAgICAgfQogCiAgICAgX2hhbmRsZVZhbHVlQmVmb3JlSW5wdXQo
ZXZlbnQpCkBAIC05ODcsMTAgKzk4Nyw5IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9
IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICB0aGlzLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ29tbWl0KHRoaXMuX3ZhbHVlVGV4dEZpZWxk
LCB7ZGlyZWN0aW9uOiAiZm9yd2FyZCJ9KTsKICAgICB9CiAKLSAgICBfdmFsdWVDb21wbGV0aW9u
RGF0YVByb3ZpZGVyKHRleHQsIHthbGxvd0VtcHR5UHJlZml4fSA9IHt9KQorICAgIF92YWx1ZUNv
bXBsZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVm
aXh9ID0ge30pCiAgICAgewotICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMjc0MTE+
IFN0eWxlcyBzaWRlYmFyIHBhbmVsIHNob3VsZCBzdXBwb3J0IG1pZGxpbmUgYW5kIG11bHRpbGlu
ZSBjb21wbGV0aW9ucy4KLSAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JQYXJ0aWFsUHJvcGVydHlWYWx1ZSh0ZXh0LCB0aGlzLl9uYW1lRWxlbWVudC50ZXh0Q29udGVu
dC50cmltKCksIHthZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI6IHRo
aXMuYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyLmJpbmQodGhpcyl9
KTsKKyAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJv
cGVydHlWYWx1ZSh0ZXh0LCB0aGlzLl9uYW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCksIHtj
YXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI6
IHRoaXMuYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyLmJpbmQodGhp
cyl9KTsKICAgICB9CiAKICAgICBfc2V0dXBKdW1wVG9TeW1ib2woZWxlbWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0
VGV4dEZpZWxkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U3ByZWFkc2hlZXRUZXh0RmllbGQuanMKaW5kZXggMTM0ZDY0ZTlmYTc3Zjk5MTlhMWY1NTNhMjA5
ZjBjNWM5MDIxODc4NS4uMWQyYWI0YTJlOTg0NDRiNzVlYWI1MDA2MzdiZjQ0YjJmM2IwY2IyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3By
ZWFkc2hlZXRUZXh0RmllbGQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDkgKzQ0LDEyIEBAIFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgdGhpcy5f
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQo
dGhpcykpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0
aGlzLl9oYW5kbGVCbHVyLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlEb3duLmJpbmQodGhpcykpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5faGFu
ZGxlS2V5VXAuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiaW5wdXQiLCB0aGlzLl9oYW5kbGVJbnB1dC5iaW5kKHRoaXMpKTsKIAogICAgICAgICB0
aGlzLl9lZGl0aW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3ByZXZlbnREaXNjYXJkaW5nQ29t
cGxldGlvbnNPbktleVVwID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2tleURvd25DYXJldFBvc2l0
aW9uID0gLTE7CiAgICAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyA9ICIiOwogICAgICAg
ICB0aGlzLl9jb21wbGV0aW9uUHJlZml4ID0gIiI7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xTcGFj
ZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdJLktleWJvYXJkU2hvcnRjdXQuS2V5LlNwYWNlKTsK
QEAgLTYzLDggKzY2LDE0IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFk
c2hlZXRUZXh0RmllbGQKIAogICAgIHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKQogICAgIHsKLSAg
ICAgICAgbGV0IHZhbHVlID0gdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudDsKLSAgICAgICAgcmV0
dXJuIHZhbHVlLnNsaWNlKDAsIHZhbHVlLmxlbmd0aCAtIHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVu
Z3RoKTsKKyAgICAgICAgLy8gVGhlIHN1Z2dlc3Rpb24gY291bGQgYXBwZWFyIGFueXdoZXJlIHdp
dGhpbiB0aGUgZWxlbWVudCwgYW5kIHRoZSB0ZXh0IG9mIHRoZSBlbGVtZW50IGNhbiBzcGFuIG11
bHRpcGxlIG5vZGVzLgorICAgICAgICBsZXQgdmFsdWVXaXRob3V0U3VnZ2VzdGlvbiA9ICIiOwor
ICAgICAgICBmb3IgKGxldCBjaGlsZE5vZGUgb2YgdGhpcy5fZWxlbWVudC5jaGlsZE5vZGVzKSB7
CisgICAgICAgICAgICBpZiAoY2hpbGROb2RlID09PSB0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1l
bnQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB2YWx1ZVdpdGhvdXRT
dWdnZXN0aW9uICs9IGNoaWxkTm9kZS50ZXh0Q29udGVudDsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdmFsdWVXaXRob3V0U3VnZ2VzdGlvbjsKICAgICB9CiAKICAgICBnZXQgc3VnZ2VzdGlv
bkhpbnQoKQpAQCAtNzQsMTIgKzgzLDIwIEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xh
c3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIHNldCBzdWdnZXN0aW9uSGludCh2YWx1ZSkK
ICAgICB7CisgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQudGV4dENvbnRl
bnQgPT09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRoaXMuX3N1Z2dl
c3Rpb25IaW50RWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlOwogCi0gICAgICAgIGlmICh2YWx1
ZSkKKyAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dl
c3Rpb25IaW50KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25I
aW50RWxlbWVudC5yZW1vdmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxlbWVudC5yZW1vdmUoKTsKKworICAgICAgICAv
LyBSZW1vdmluZyB0aGUgc3VnZ2VzdGlvbiBoaW50IGVsZW1lbnQgbWF5IGxlYXZlIHRoZSBjb250
ZW50cyBvZiBgX2VsZW1lbnRgIGZyYWdtZW50ZWQgaW50byBtdWx0aXBsZSB0ZXh0IG5vZGVzLgor
ICAgICAgICB0aGlzLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVuKCk7CiAgICAgfQogCiAg
ICAgc3RhcnRFZGl0aW5nKCkKQEAgLTkzLDYgKzExMCw4IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZp
ZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgdGhpcy5fZWRpdGluZyA9
IHRydWU7CiAgICAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyA9IHRoaXMudmFsdWU7CiAK
KyAgICAgICAgdGhpcy5fa2V5RG93bkNhcmV0UG9zaXRpb24gPSAtMTsKKwogICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImVkaXRpbmciKTsKICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jb250ZW50RWRpdGFibGUgPSAicGxhaW50ZXh0LW9ubHkiOwogICAgICAgICB0aGlzLl9lbGVt
ZW50LnNwZWxsY2hlY2sgPSBmYWxzZTsKQEAgLTE0Miw3ICsxNjEsOCBAQCBXSS5TcHJlYWRzaGVl
dFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgewogICAgICAgICB0
aGlzLnN1Z2dlc3Rpb25IaW50ID0gc2VsZWN0ZWRUZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25Q
cmVmaXgubGVuZ3RoKTsKIAotICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCk7
CisgICAgICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCkKKyAgICAgICAgICAgIHRo
aXMuX3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKTsKIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdh
dGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdl
ID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRU
ZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7CkBAIC0xNTAsMjYgKzE3MCw5IEBAIFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIGNvbXBsZXRp
b25TdWdnZXN0aW9uc0NsaWNrZWRDb21wbGV0aW9uKHN1Z2dlc3Rpb25zVmlldywgc2VsZWN0ZWRU
ZXh0KQogICAgIHsKLSAgICAgICAgLy8gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOgot
ICAgICAgICAvLwotICAgICAgICAvLyAgIGJvcmRlcjogMXB4IHNvbGlkIHJvfAotICAgICAgICAv
LyAgICAgICAgICAgICAgICAgICAgIHJvc3licm93bgotICAgICAgICAvLyAgICAgICAgICAgICAg
ICAgICAgIHJveWFsYmx1ZQotICAgICAgICAvLwotICAgICAgICAvLyBDbGlja2luZyBvbiAicm9z
eWJyb3duIiBzaG91bGQgcmVwbGFjZSAicm8iIHdpdGggInJvc3licm93biIuCi0gICAgICAgIC8v
Ci0gICAgICAgIC8vICAgICAgICAgICBwcmVmaXg6ICAxcHggc29saWQgcm8KLSAgICAgICAgLy8g
Y29tcGxldGlvblByZWZpeDogICAgICAgICAgICBybwotICAgICAgICAvLyAgICAgICAgbmV3UHJl
Zml4OiAgMXB4IHNvbGlkCi0gICAgICAgIC8vICAgICBzZWxlY3RlZFRleHQ6ICAgICAgICAgICAg
cm9zeWJyb3duCi0gICAgICAgIGxldCBwcmVmaXggPSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rp
b24oKTsKLSAgICAgICAgbGV0IG5ld1ByZWZpeCA9IHByZWZpeC5zbGljZSgwLCAtdGhpcy5fY29t
cGxldGlvblByZWZpeC5sZW5ndGgpOwotCi0gICAgICAgIHRoaXMuX2VsZW1lbnQudGV4dENvbnRl
bnQgPSBuZXdQcmVmaXggKyBzZWxlY3RlZFRleHQ7Ci0KLSAgICAgICAgLy8gUGxhY2UgdGV4dCBj
YXJldCBhdCB0aGUgZW5kLgotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFu
ZEV4dGVudCh0aGlzLl9lbGVtZW50LCBzZWxlY3RlZFRleHQubGVuZ3RoLCB0aGlzLl9lbGVtZW50
LCBzZWxlY3RlZFRleHQubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNl
bGVjdGVkVGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CiAKKyAgICAg
ICAgdGhpcy5fYXBwbHlDb21wbGV0aW9uSGludCh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246
IHRydWV9KTsKICAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogCiAgICAgICAgIGlm
ICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0
RmllbGREaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCkBAIC0yMDAsOCArMjAzLDExIEBAIFdJLlNw
cmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIF9o
YW5kbGVNb3VzZURvd24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZWRpdGluZykK
LSAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBpZiAoIXRoaXMu
X2VkaXRpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7CisgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKICAgICB9CiAKICAg
ICBfaGFuZGxlQmx1cihldmVudCkKQEAgLTIyNiw4ICsyMzIsMTIgQEAgV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICBpZiAoIXRoaXMu
X2VkaXRpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhpcy5fcHJldmVudERp
c2NhcmRpbmdDb21wbGV0aW9uc09uS2V5VXAgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fa2V5RG93
bkNhcmV0UG9zaXRpb24gPSB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCk7CisKICAgICAgICAgaWYg
KHRoaXMuX3N1Z2dlc3Rpb25zVmlldykgewogICAgICAgICAgICAgbGV0IGNvbnN1bWVkID0gdGhp
cy5faGFuZGxlS2V5RG93bkZvclN1Z2dlc3Rpb25WaWV3KGV2ZW50KTsKKyAgICAgICAgICAgIHRo
aXMuX3ByZXZlbnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktleVVwID0gY29uc3VtZWQ7CiAgICAg
ICAgICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0yOTIsNiArMzAyLDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJl
YWRzaGVldFRleHRGaWVsZAogICAgICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25zVmlldy52
aXNpYmxlKQogICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zVmlldy5oaWRlKCk7CiAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9wcmV2ZW50RGlzY2FyZGlu
Z0NvbXBsZXRpb25zT25LZXlVcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY29uc3QgZm9yY2VD
b21wbGV0aW9ucyA9IHRydWU7CiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29tcGxldGlv
bnMoZm9yY2VDb21wbGV0aW9ucyk7CiAgICAgICAgICAgICB9CkBAIC0zMjcsMTIgKzMzOCwxMiBA
QCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChldmVudC5r
ZXkgPT09ICJBcnJvd1JpZ2h0IiAmJiB0aGlzLnN1Z2dlc3Rpb25IaW50KSB7CisgICAgICAgIGlm
IChldmVudC5rZXkgPT09ICJBcnJvd1JpZ2h0IiAmJiB0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0
aCkgewogICAgICAgICAgICAgbGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
IAotICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJiAoc2VsZWN0aW9uLmZv
Y3VzT2Zmc2V0ID09PSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKS5sZW5ndGggfHwgc2Vs
ZWN0aW9uLmZvY3VzTm9kZSA9PT0gdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50KSkgeworICAg
ICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NvbGxhcHNlZCkgewogICAgICAgICAgICAgICAgIGV2
ZW50LnN0b3AoKTsKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0
VGV4dCIsIGZhbHNlLCB0aGlzLnN1Z2dlc3Rpb25IaW50KTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9hcHBseUNvbXBsZXRpb25IaW50KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbjogdHJ1ZX0p
OwogCiAgICAgICAgICAgICAgICAgLy8gV2hlbiBjb21wbGV0aW5nICJiYWNrZ3JvdW5kIiwgZG9u
J3QgaGlkZSB0aGUgY29tcGxldGlvbiBwb3BvdmVyLgogICAgICAgICAgICAgICAgIC8vIENvbnRp
bnVlIHNob3dpbmcgdGhlIHBvcG92ZXIgd2l0aCBwcm9wZXJ0aWVzIHN1Y2ggYXMgImJhY2tncm91
bmQtY29sb3IiIGFuZCAiYmFja2dyb3VuZC1pbWFnZSIuCkBAIC0zNjIsMTYgKzM3MywzOSBAQCBX
SS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAg
ICAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3By
ZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAg
ICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKKyAgICBfaGFuZGxlS2V5VXAoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9lZGl0aW5nIHx8ICF0aGlzLl9zdWdnZXN0aW9uc1ZpZXcpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgLy8gQ2VydGFpbiBhY3Rpb25zLCBsaWtlIEN0cmwrU3BhY2Ugd2lsbCBoYW5k
bGUgdXBkYXRpbmcgb3IgZGlzY2FyZGluZyBjb21wbGV0aW9ucyBhcyBuZWNlc3NhcnkuCisgICAg
ICAgIGlmICh0aGlzLl9wcmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25LZXlVcCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBTb21lIGtleSBldmVudHMsIGxpa2UgdGhlIGFy
cm93IGtleXMgYW5kIEN0cmwrQSAobW92ZSB0byBsaW5lIHN0YXJ0KSwgd2lsbCBtb3ZlIHRoZSBj
YXJldCB3aXRob3V0IGNvbW1pdHRpbmcKKyAgICAgICAgLy8gYW55IGlucHV0IHRvIHRoZSB0ZXh0
IGZpZWxkLiBJbiB0aG9zZSBzaXR1YXRpb25zIHdlIHNob3VsZCBkaXNjYXJkIGNvbXBsZXRpb24g
aWYgdGhleSBhcmUgYXZhaWxhYmxlLiBJdCBpcworICAgICAgICAvLyBhbHNvIHBvc3NpYmxlIHRo
YXQgd2UgcmVjZWl2ZSBhIEtleVVwIGV2ZW50IGZvciBhIGtleSB0aGF0IHdhcyBub3QgcHJlc3Nl
ZCBpbnNpZGUgdGhpcyB0ZXh0IGZpZWxkLCBpbiB3aGljaAorICAgICAgICAvLyBjYXNlIHRoZSBf
a2V5RG93bkNhcmV0UG9zaXRpb24gd2lsbCBzdGlsbCBiZSAtMS4gVGhpcyBjYW4gb2NjdXIgd2hl
biB0aGUgdXNlciB0eXBlcyBhIGA6YCB0byBiZWdpbiBlZGl0aW5nCisgICAgICAgIC8vIHRoZSB2
YWx1ZSBmb3IgYSBwcm9wZXJ0eSwgYW5kIHRoZSBLZXlVcCBldmVudHMgZm9yIGVhY2ggb2YgdGhv
c2Uga2V5cyB3aWxsIGJlIGhhbmRsZWQgaGVyZSwgZXZlbiB0aG91Z2ggdGhlCisgICAgICAgIC8v
IGNvcnJlc3BvbmRpbmcgS2V5RG93biBldmVudHMgd2FzIG5ldmVyIGhhbmRsZWQgYnkgdGhpcyB0
ZXh0IGZpZWxkLgorICAgICAgICBpZiAodGhpcy5fa2V5RG93bkNhcmV0UG9zaXRpb24gPT09IC0x
IHx8IHRoaXMuX2tleURvd25DYXJldFBvc2l0aW9uID09PSB0aGlzLl9nZXRDYXJldFBvc2l0aW9u
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlv
bigpOworICAgIH0KKwogICAgIF9oYW5kbGVJbnB1dChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICB0aGlzLl9w
cmV2ZW50RGlzY2FyZGluZ0NvbXBsZXRpb25zT25LZXlVcCA9IHRydWU7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZUNvbXBsZXRpb25zKCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5
cGVvZiB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1
bmN0aW9uIikKQEAgLTM4NCw3ICs0MTgsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNs
YXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
bGV0IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24gPSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24o
KTsKLSAgICAgICAgbGV0IHtjb21wbGV0aW9ucywgcHJlZml4fSA9IHRoaXMuX2NvbXBsZXRpb25Q
cm92aWRlcih2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uLCB7YWxsb3dFbXB0eVByZWZpeDogZm9yY2VD
b21wbGV0aW9uc30pOworICAgICAgICBsZXQge2NvbXBsZXRpb25zLCBwcmVmaXh9ID0gdGhpcy5f
Y29tcGxldGlvblByb3ZpZGVyKHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24sIHthbGxvd0VtcHR5UHJl
Zml4OiBmb3JjZUNvbXBsZXRpb25zLCBjYXJldFBvc2l0aW9uOiB0aGlzLl9nZXRDYXJldFBvc2l0
aW9uKCl9KTsKICAgICAgICAgdGhpcy5fY29tcGxldGlvblByZWZpeCA9IHByZWZpeDsKIAogICAg
ICAgICBpZiAoIWNvbXBsZXRpb25zLmxlbmd0aCkgewpAQCAtNDIyLDkgKzQ1NiwxNCBAQCBXSS5T
cHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBf
c2hvd1N1Z2dlc3Rpb25zVmlldygpCiAgICAgewotICAgICAgICBsZXQgcHJlZml4ID0gdGhpcy52
YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBzdGFydE9mZnNldCA9IHByZWZp
eC5sZW5ndGggLSB0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aDsKLSAgICAgICAgbGV0IGNh
cmV0UmVjdCA9IHRoaXMuX2dldENhcmV0UmVjdChzdGFydE9mZnNldCk7CisgICAgICAgIC8vIEFk
anVzdCB0aGUgdXNlZCBjYXJldCBwb3NpdGlvbiB0byBjb3JyZWN0bHkgYWxpZ24gYXV0b2NvbXBs
ZXRpb24gcmVzdWx0cyB3aXRoIGV4aXN0aW5nIHRleHQuIFRoZSBzdWdnZXN0aW9ucworICAgICAg
ICAvLyBzaG91bGQgYXBwZWFyIGFsaWduZWQgYXMgYmVsb3c6CisgICAgICAgIC8vCisgICAgICAg
IC8vIGJvcmRlcjogMXB4IHNvbGlkIHJvfAorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBy
b3N5YnJvd24KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgcm95YWxibHVlCisgICAgICAg
IGxldCBhZGp1c3RlZENhcmV0UG9zaXRpb24gPSB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCkgLSB0
aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aDsKKyAgICAgICAgbGV0IGNhcmV0UmVjdCA9IHRo
aXMuX2dldENhcmV0UmVjdChhZGp1c3RlZENhcmV0UG9zaXRpb24pOwogCiAgICAgICAgIC8vIEhp
ZGUgY29tcGxldGlvbiBwb3BvdmVyIHdoZW4gdGhlIGFuY2hvciBlbGVtZW50IGlzIHJlbW92ZWQg
ZnJvbSB0aGUgRE9NLgogICAgICAgICBpZiAoIWNhcmV0UmVjdCkKQEAgLTQzNSw0NyArNDc0LDEw
NCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxk
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfZ2V0Q2FyZXRSZWN0KHN0YXJ0T2Zmc2V0KQorICAg
IF9nZXRDYXJldFBvc2l0aW9uKCkKICAgICB7CiAgICAgICAgIGxldCBzZWxlY3Rpb24gPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAvLyBUaGUgd2luZG93J3Mgc2VsZWN0aW9u
IHJhbmdlIHdpbGwgb25seSBjb250YWluIHRoZSBjdXJyZW50IGxpbmUncyBwb3NpdGlvbmluZyBp
biBtdWx0aWxpbmUgdGV4dCwgc28gYSBuZXcKKyAgICAgICAgLy8gcmFuZ2UgbXVzdCBiZSBjcmVh
dGVkIGJldHdlZW4gdGhlIGVuZCBvZiB0aGUgY3VycmVudCByYW5nZSBhbmQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgZmlyc3QgbGluZSBvZiB0ZXh0IGluCisgICAgICAgIC8vIG9yZGVyIHRvIGdldCBh
biBhY2N1cmF0ZSBjaGFyYWN0ZXIgcG9zaXRpb24gZm9yIHRoZSBjYXJldC4KKyAgICAgICAgbGV0
IGxpbmVSYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAgICAgICBsZXQgbXVsdGls
aW5lUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICBtdWx0aWxpbmVSYW5n
ZS5zZXRTdGFydCh0aGlzLl9lbGVtZW50LCAwKTsKKyAgICAgICAgbXVsdGlsaW5lUmFuZ2Uuc2V0
RW5kKGxpbmVSYW5nZS5lbmRDb250YWluZXIsIGxpbmVSYW5nZS5lbmRPZmZzZXQpOworICAgICAg
ICByZXR1cm4gbXVsdGlsaW5lUmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7CisgICAgfQogCisgICAg
X2dldENhcmV0UmVjdChjYXJldFBvc2l0aW9uKQorICAgIHsKICAgICAgICAgbGV0IGlzSGlkZGVu
ID0gKGNsaWVudFJlY3QpID0+IHsKICAgICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0LnggPT09
IDAgJiYgY2xpZW50UmVjdC55ID09PSAwOwogICAgICAgICB9OwogCi0gICAgICAgIGlmIChzZWxl
Y3Rpb24ucmFuZ2VDb3VudCkgewotICAgICAgICAgICAgbGV0IHJhbmdlID0gc2VsZWN0aW9uLmdl
dFJhbmdlQXQoMCkuY2xvbmVSYW5nZSgpOwotICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQocmFu
Z2Uuc3RhcnRDb250YWluZXIsIHN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgICAgIGxldCBjbGllbnRS
ZWN0ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGxldCBjYXJldFJh
bmdlID0gdGhpcy5fcmFuZ2VBdENhcmV0UG9zaXRpb24oY2FyZXRQb3NpdGlvbik7CisgICAgICAg
IGxldCBjYXJldENsaWVudFJlY3QgPSBjYXJldFJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworICAgICAgICBpZiAoIWlzSGlkZGVuKGNhcmV0Q2xpZW50UmVjdCkpCisgICAgICAgICAgICBy
ZXR1cm4gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoY2FyZXRDbGllbnRSZWN0KTsKIAotICAg
ICAgICAgICAgaWYgKCFpc0hpZGRlbihjbGllbnRSZWN0KSkgewotICAgICAgICAgICAgICAgIC8v
IFRoaXMgaGFwcGVucyBhZnRlciBkZWxldGluZyB2YWx1ZS4gSG93ZXZlciwgd2hlbiBmb2N1c2lu
ZwotICAgICAgICAgICAgICAgIC8vIG9uIGFuIGVtcHR5IHZhbHVlIGNsaWVudFJlY3QgaXMgdmlz
aWJsZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3Qo
Y2xpZW50UmVjdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgY2xp
ZW50UmVjdCA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgICAg
IGlmIChpc0hpZGRlbihjbGllbnRSZWN0KSkKKyAgICAgICAgbGV0IGVsZW1lbnRDbGllbnRSZWN0
ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgaWYgKGlz
SGlkZGVuKGVsZW1lbnRDbGllbnRSZWN0KSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAg
ICAgICAgIGNvbnN0IGxlZnRQYWRkaW5nID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlz
Ll9lbGVtZW50KS5wYWRkaW5nTGVmdCkgfHwgMDsKLSAgICAgICAgcmV0dXJuIG5ldyBXSS5SZWN0
KGNsaWVudFJlY3QubGVmdCArIGxlZnRQYWRkaW5nLCBjbGllbnRSZWN0LnRvcCwgY2xpZW50UmVj
dC53aWR0aCwgY2xpZW50UmVjdC5oZWlnaHQpOworICAgICAgICByZXR1cm4gbmV3IFdJLlJlY3Qo
ZWxlbWVudENsaWVudFJlY3QubGVmdCArIGxlZnRQYWRkaW5nLCBlbGVtZW50Q2xpZW50UmVjdC50
b3AsIGVsZW1lbnRDbGllbnRSZWN0LndpZHRoLCBlbGVtZW50Q2xpZW50UmVjdC5oZWlnaHQpOwor
ICAgIH0KKworICAgIF9yYW5nZUF0Q2FyZXRQb3NpdGlvbihjYXJldFBvc2l0aW9uKSB7CisgICAg
ICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy5fZWxlbWVudC5jaGlsZE5vZGVzKSB7CisgICAgICAg
ICAgICBsZXQgdGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50OworICAgICAgICAgICAgaWYg
KGNhcmV0UG9zaXRpb24gPD0gdGV4dENvbnRlbnQubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAg
bGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICByYW5n
ZS5zZXRTdGFydChub2RlLCBjYXJldFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICByYW5nZS5z
ZXRFbmQobm9kZSwgY2FyZXRQb3NpdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmdl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXJldFBvc2l0aW9uIC09IHRleHRDb250
ZW50Lmxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBub2Rl
cywgb3IgdGhlIGNhcmV0IHBvc2l0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdG90YWwgdGV4dCBj
b250ZW50LCBwcm92aWRlIHRoZSByYW5nZSBvZiBhCisgICAgICAgIC8vIGNhcmV0IGF0IHRoZSBl
bmQgb2YgdGhlIGVsZW1lbnQuCisgICAgICAgIGxldCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0aGlzLl9lbGVtZW50KTsK
KyAgICAgICAgcmFuZ2UuY29sbGFwc2UoKTsKKyAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0K
IAotICAgIF9hcHBseUNvbXBsZXRpb25IaW50KCkKKyAgICBfYXBwbHlDb21wbGV0aW9uSGludCh7
bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb259ID0ge30pCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX2NvbXBsZXRpb25Qcm92aWRlciB8fCAhdGhpcy5zdWdnZXN0aW9uSGludCkKICAgICAgICAg
ICAgIHJldHVybjsKIAorICAgICAgICB0aGlzLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVu
KHtuZXdDYXJldFBvc2l0aW9uOiBtb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbiA/IHRoaXMuX2dl
dENhcmV0UG9zaXRpb24oKSArIHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoIDogbnVsbH0pOwor
ICAgIH0KKworICAgIF9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVuKHtuZXdDYXJldFBvc2l0
aW9ufSA9IHt9KQorICAgIHsKKyAgICAgICAgbmV3Q2FyZXRQb3NpdGlvbiA/Pz0gdGhpcy5fZ2V0
Q2FyZXRQb3NpdGlvbigpOworCisgICAgICAgIC8vIFNldHRpbmcgdGhlIHRleHRDb250ZW50IG9m
IHRoZSBlbGVtZW50IHRvIGl0cyBjdXJyZW50IHRleHRDb250ZW50IHdpbGwgdGFrZSB0aGUgdGV4
dCBmcm9tIHRoZSBtdWx0aXBsZQorICAgICAgICAvLyBwb3RlbnRpYWwgY2hpbGQgbm9kZXMgKHBv
dGVudGlhbGx5IGEgc3VnZ2VzdGlvbiBoaW50IG5vZGUgYW5kIHNvbWUgbnVtYmVyIG9mIGV4aXN0
aW5nIHRleHQgbm9kZXMpIGFuZCB0dXJuCisgICAgICAgIC8vIHRoZW0gaW50byBhIHNpbmdsZSB0
ZXh0IG5vZGUgd2l0aGluIHRoZSBlbGVtZW50LgogICAgICAgICB0aGlzLl9lbGVtZW50LnRleHRD
b250ZW50ID0gdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudDsKKworICAgICAgICBpZiAodGhpcy5f
ZWxlbWVudC50ZXh0Q29udGVudC5sZW5ndGgpIHsKKyAgICAgICAgICAgIGxldCB0ZXh0Q2hpbGRO
b2RlID0gdGhpcy5fZWxlbWVudC5maXJzdENoaWxkOworICAgICAgICAgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dENoaWxkTm9kZSwgbmV3Q2FyZXRQb3NpdGlv
biwgdGV4dENoaWxkTm9kZSwgbmV3Q2FyZXRQb3NpdGlvbik7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBfcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpCiAgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCwgIlN1Z2dlc3Rpb24gaGludCBzaG91bGQg
bm90IGJlIGVtcHR5IHdoZW4gYXR0YWNoaW5nIHRoZSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVudC4i
KTsKKwogICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50LnBhcmVudEVsZW1l
bnQgPT09IHRoaXMuX2VsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmQodGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50KTsKKyAgICAgICAg
bGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgaWYgKCF0aGlz
Ll9lbGVtZW50LnRleHRDb250ZW50Lmxlbmd0aCB8fCAhc2VsZWN0aW9uLnJhbmdlQ291bnQpIHsK
KyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kKHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxl
bWVudCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgcmFu
Z2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKKworICAgICAgICBjb25zb2xlLmFzc2VydChy
YW5nZS5lbmRDb250YWluZXIgaW5zdGFuY2VvZiBUZXh0LCByYW5nZS5lbmRDb250YWluZXIpOwor
ICAgICAgICBpZiAoIShyYW5nZS5lbmRDb250YWluZXIgaW5zdGFuY2VvZiBUZXh0KSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlz
Ll9zdWdnZXN0aW9uSGludEVsZW1lbnQsIHJhbmdlLmVuZENvbnRhaW5lci5zcGxpdFRleHQocmFu
Z2UuZW5kT2Zmc2V0KSk7CiAgICAgfQogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>