<?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>191483</bug_id>
          
          <creation_ts>2018-11-09 12:53:28 -0800</creation_ts>
          <short_desc>Web Inspector: TreeOutline should re-use multiple-selection logic from Table</short_desc>
          <delta_ts>2018-12-05 18:53:40 -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=191766</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=192443</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>191770</dependson>
    
    <dependson>191977</dependson>
          <blocked>192115</blocked>
    
    <blocked>192059</blocked>
    
    <blocked>192090</blocked>
    
    <blocked>192091</blocked>
    
    <blocked>192093</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1477067</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-09 12:53:28 -0800</bug_when>
    <thetext>Summary:
TreeOutline should re-use multiple-selection logic from Table.

This will involve creating a new class, ItemSelectionController, which owns an IndexSet of selected items and provides a set of selection operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477068</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-09 12:53:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/45953305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482156</commentid>
    <comment_count>2</comment_count>
      <attachid>355791</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-27 15:12:37 -0800</bug_when>
    <thetext>Created attachment 355791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482238</commentid>
    <comment_count>3</comment_count>
      <attachid>355791</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-27 16:40:11 -0800</bug_when>
    <thetext>Comment on attachment 355791
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/SelectionController.js:-211
&gt; -        if (event.key === &quot;a&quot; &amp;&amp; event.commandOrControlKey()) {

Oops :P

&gt; Source/WebInspectorUI/UserInterface/Views/TreeElement.js:-293
&gt; -        element.treeElement.selectOnMouseDown(event);

Is `selectOnMouseDown` called anywhere else?  I know it&apos;s used by `WI.DOMTreeElement` and `WI.ShaderProgramTreeElement`.

&gt; Source/WebInspectorUI/UserInterface/Views/TreeElement.js:514
&gt;          let deselectedElement = treeOutline.selectedTreeElement;

This variable is never used, so you could remove it.

&gt; Source/WebInspectorUI/UserInterface/Views/TreeElement.js:517
&gt; +            treeOutline.selectTreeElementInternal(this, suppressOnSelect, selectedByUser);

This will have a slightly different effect than what was here before.  It will no longer fire an event when the element is already selected, which was not the case previously (it would fire an event even it was already selected (`allowsRepeatSelection` had to have also been `true`).  You should move this outside of the `if` (or just remove the `if` altogether):

    this.selected = true;
    treeOutline.selectTreeElementInternal(this, suppressOnSelect, selectedByUser);

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:59
&gt; +        this._treeElementIndexCache = new Map;

Perhaps this would be a good opportunity to create an `IndexMap` (some sort of specialized `BiMap`)?

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:102
&gt; +        const extendSelection = false;

This defaults to `false`, so you don&apos;t need to specify it in the `selectItem` call.

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:278
&gt; +            this.treeOutline._selectionController.didInsertItem(insertionIndex);

Wow we do this all over the place... why is the `this.treeOutline` this needed?  Would `this._selectionController` not suffice?  Do we nest `WI.TreeOutline` somewhere?

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:576
&gt; +        if (this.selectedTreeElement) {

This check isn&apos;t necessary, as you should&apos;ve already bailed above if `!this.selectedTreeElement`.

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:631
&gt; +            handled = this._selectionController.handleKeyDown(event);

Ah I see how you&apos;re using the return value.  Nice!

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:921
&gt; +            

???

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:1015
&gt; +            let closestIndex = this._treeElementIndexCache.get(current);

Is there a real need for this cache, other than in an effort to boost performance?  It seems to me that since we clear it each time we remember/forget `WI.TreeElement`s, there&apos;s not much to be gained by having it.  I&apos;d just remove it unless it&apos;s necessary.

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:1038
&gt; +        for (let treeElement = this.children[0]; treeElement; treeElement = treeElement.traverseNextTreeElement(skipUnrevealed, null, dontPopulate), ++current) {

Style: wow this is ugly.  I&apos;d rework this as a `while`:

    const skipUnrevealed = false;
    const stayWithin = null;
    const dontPopulate = true;

    let current = 0;
    let treeElement = this.children[0];
    while (treeElement) {
        if (current === index)
            return treeElement;

        treeElement = treeElement.traverseNextTreeElement(skipUnrevealed, stayWithin, dontPopulate);
        ++current;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482254</commentid>
    <comment_count>4</comment_count>
      <attachid>355791</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-27 16:58:13 -0800</bug_when>
    <thetext>Comment on attachment 355791
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:59
&gt;&gt; +        this._treeElementIndexCache = new Map;
&gt; 
&gt; Perhaps this would be a good opportunity to create an `IndexMap` (some sort of specialized `BiMap`)?

I considered this. Once the dust settles I&apos;ll take a look at cleaning up/optimizing TreeOutline a bit.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:921
&gt;&gt; +            
&gt; 
&gt; ???

Oops, this is old.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:1015
&gt;&gt; +            let closestIndex = this._treeElementIndexCache.get(current);
&gt; 
&gt; Is there a real need for this cache, other than in an effort to boost performance?  It seems to me that since we clear it each time we remember/forget `WI.TreeElement`s, there&apos;s not much to be gained by having it.  I&apos;d just remove it unless it&apos;s necessary.

I&apos;d like to leave it in for now. We can revisit/remove it later if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482255</commentid>
    <comment_count>5</comment_count>
      <attachid>355823</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-27 16:58:23 -0800</bug_when>
    <thetext>Created attachment 355823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482277</commentid>
    <comment_count>6</comment_count>
      <attachid>355823</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-27 17:43:17 -0800</bug_when>
    <thetext>Comment on attachment 355823
Patch

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

r=me, awesome work!

&gt; Source/WebInspectorUI/UserInterface/Views/TreeElement.js:192
&gt; +        return true;

Add &quot;// Overridden by subclasses if needed.&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:278
&gt; +        if (this.allowsMultipleSelection) {
&gt; +            let insertionIndex = this._indexOfTreeElement(child.previousSibling) || 0;
&gt; +            this.treeOutline._selectionController.didInsertItem(insertionIndex);
&gt; +        }

I think this should be always called.  Whenever we add a new item, even if we&apos;re not allowing multiple selection, we should update the index of any selected item(s) anywhere in the tree.  As an example, if I&apos;ve selected item 3, and I insert at item 1, my selection should be updated to item 4.

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:602
&gt; +                if (this.selectedTreeElement.expanded) {
&gt; +                    nextSelectedElement = this.selectedTreeElement.children[0];
&gt; +                    while (nextSelectedElement &amp;&amp; !nextSelectedElement.selectable)
&gt; +                        nextSelectedElement = nextSelectedElement.nextSibling;
&gt; +                    handled = nextSelectedElement ? true : false;

This doesn&apos;t match Finder&apos;s functionality.  Are we sure we want to add this?

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:835
&gt; +        while (treeElement = treeElement.traverseNextTreeElement(skipUnrevealed, null, dontPopulate)) {

NIT: use `const stayWithin = null;` for this argument instead.

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:852
&gt; +        while (treeElement = treeElement.traversePreviousTreeElement(skipUnrevealed, null, dontPopulate)) {

Ditto (835)

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:862
&gt; +    selectTreeElementInternal(treeElement, suppressNotification = false, selectedByUser = false)

I&apos;d rather you use an optional object instead of defaulted parameters:

    selectTreeElementInternal(treeElement, {suppressNotification, selectedByUser} = {})</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482291</commentid>
    <comment_count>7</comment_count>
      <attachid>355830</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-27 17:52:17 -0800</bug_when>
    <thetext>Created attachment 355830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482292</commentid>
    <comment_count>8</comment_count>
      <attachid>355831</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-27 17:56:55 -0800</bug_when>
    <thetext>Created attachment 355831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482296</commentid>
    <comment_count>9</comment_count>
      <attachid>355831</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-27 18:02:18 -0800</bug_when>
    <thetext>Comment on attachment 355831
Patch

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

r=me, well done!

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:-302
&gt; -        element.select();

Considering your changes to `WI.TreeOutline`, you could remove this entire event listener.

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:601
&gt; +                if (this.selectedTreeElement.expanded) {
&gt; +                    nextSelectedElement = this.selectedTreeElement.children[0];
&gt; +                    while (nextSelectedElement &amp;&amp; !nextSelectedElement.selectable)
&gt; +                        nextSelectedElement = nextSelectedElement.nextSibling;
&gt; +                    handled = nextSelectedElement ? true : false;

This doesn&apos;t match Finder&apos;s functionality.  Are we sure we want to add this?

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:873
&gt; +    selectTreeElementInternal(treeElement, suppressNotification = false, selectedByUser = false)

I&apos;d rather you use an optional object instead of defaulted parameters:

    selectTreeElementInternal(treeElement, {suppressNotification, selectedByUser} = {})

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:875
&gt; +        if (this._processingSelectionControllerSelectionDidChange)

All of this early-return interleaving is a bit crazy.  We definitely need some tests for all of these different cases 😅</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482320</commentid>
    <comment_count>10</comment_count>
      <attachid>355831</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-27 18:55:49 -0800</bug_when>
    <thetext>Comment on attachment 355831
Patch

Clearing flags on attachment: 355831

Committed r238599: &lt;https://trac.webkit.org/changeset/238599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482321</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-27 18:55:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483873</commentid>
    <comment_count>12</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2018-11-30 17:35:31 -0800</bug_when>
    <thetext>Next time please consider doing something like this behind the experimental flag.

This broke debugger completely and introduced several bugs in the Elements tab.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355791</attachid>
            <date>2018-11-27 15:12:37 -0800</date>
            <delta_ts>2018-11-27 16:58:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191483-20181127151233.patch</filename>
            <type>text/plain</type>
            <size>25628</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
ZjkyM2JkYmYxNDg2ODM5ZGMzY2IyYWZmYTM1OTViM2EzOGYyYTE2Li4xNzgwOTJiMWI2ZTA5N2Uw
NDRmOWUyMGNiYzU5Mjg3ZDgwYjRkMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxOC0xMS0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVHJlZU91dGxpbmUgc2hvdWxkIHJlLXVzZSBtdWx0
aXBsZS1zZWxlY3Rpb24gbG9naWMgZnJvbSBUYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NTk1MzMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgVHJlZU91dGxpbmUgdG8gdXNlIFNlbGVjdGlvbkNvbnRyb2xsZXIuIEFkb3B0aW5n
IFNlbGVjdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgaW4gVHJlZU91dGxpbmUgaXMgbm90IGFzIHN0
cmFpZ2h0Zm9yd2FyZCBhcyBpdCB3YXMgaW4gVGFibGUuIFNlbGVjdGVkIGl0ZW1zCisgICAgICAg
IGFyZSB0cmFja2VkIGJ5IGluZGV4LCBhbmQgVHJlZUVsZW1lbnQgbGFja3MgYW4gZXhwbGljaXQg
aW5kZXguIEFzIGEgY29uc2VxdWVuY2UKKyAgICAgICAgVHJlZUVsZW1lbnQgaW5kZXhlcyBhcmUg
Y2FsY3VhbHRlZCBhcyBuZWVkZWQgYW5kIGNhY2hlZC4gVGhlIGNhY2hlIGlzIGNsZWFyZWQKKyAg
ICAgICAgd2hlbmV2ZXIgYW4gZWxlbWVudCBpcyBhZGRlZCBvciByZW1vdmVkLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzOgorICAg
ICAgICAoV0kuU2VsZWN0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXSS5TZWxlY3Rpb25Db250
cm9sbGVyLnByb3RvdHlwZS5kaWRJbnNlcnRJdGVtKToKKyAgICAgICAgKFdJLlNlbGVjdGlvbkNv
bnRyb2xsZXIucHJvdG90eXBlLmRpZFJlbW92ZUl0ZW0pOgorICAgICAgICAoV0kuU2VsZWN0aW9u
Q29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlS2V5RG93bik6CisgICAgICAgIERyaXZlLWJ5IHN5
bnRheCBlcnJvciBmaXguCisgICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVyLnByb3RvdHlw
ZS5fYWRqdXN0SW5kZXhlc0FmdGVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dGFj
aCk6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0KToKKyAgICAgICAg
KFdJLlRyZWVFbGVtZW50LnByb3RvdHlwZS5kZXNlbGVjdCk6CisgICAgICAgIFJvdXRlIGl0ZW0g
c2VsZWN0aW9uIHRocm91Z2ggdGhlIHBhcmVudCBUcmVlT3V0bGluZSwgaW4gb3JkZXIgdG8gZ28g
dGhvdWdoCisgICAgICAgIHRoZSBUcmVlT3V0bGluZSdzIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisK
KyAgICAgICAgKFdJLlRyZWVFbGVtZW50LnRyZWVFbGVtZW50TW91c2VEb3duKTogRGVsZXRlZC4K
KyAgICAgICAgTW92ZWQgaGFuZGxlciB0byBUcmVlT3V0bGluZSwgd2hpY2ggb3ducyB0aGUgU2Vs
ZWN0aW9uQ29udHJvbGxlciB0aGF0CisgICAgICAgIG5lZWRzIHRvIHJlc3BvbmQgdG8gbW91c2Ug
ZXZlbnRzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qczoK
KyAgICAgICAgKFdJLlRyZWVPdXRsaW5lKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5nZXQgYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24pOgorICAgICAgICAoV0kuVHJlZU91dGxp
bmUucHJvdG90eXBlLnNldCBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbik6CisgICAgICAgIChXSS5U
cmVlT3V0bGluZS5wcm90b3R5cGUuZ2V0IHNlbGVjdGVkVHJlZUVsZW1lbnQpOgorICAgICAgICAo
V0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnNldCBzZWxlY3RlZFRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5pbnNlcnRDaGlsZCk6CisgICAgICAgIChXSS5U
cmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRBdEluZGV4KToKKyAgICAgICAgKFdJLlRy
ZWVPdXRsaW5lLnByb3RvdHlwZS5fcmVtZW1iZXJUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5U
cmVlT3V0bGluZS5wcm90b3R5cGUuX2ZvcmdldFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLlRy
ZWVPdXRsaW5lLnByb3RvdHlwZS5fdHJlZUtleURvd24pOgorICAgICAgICAoV0kuVHJlZU91dGxp
bmUucHJvdG90eXBlLnNlbGVjdGlvbkNvbnRyb2xsZXJOdW1iZXJPZkl0ZW1zKToKKyAgICAgICAg
KFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3Rpb25Db250cm9sbGVyU2VsZWN0aW9uRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3Rpb25Db250
cm9sbGVyTmV4dFNlbGVjdGFibGVJbmRleCk6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5wcm90
b3R5cGUuc2VsZWN0aW9uQ29udHJvbGxlclByZXZpb3VzU2VsZWN0YWJsZUluZGV4KToKKyAgICAg
ICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3RUcmVlRWxlbWVudEludGVybmFsKToK
KyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5kaWRTZWxlY3RUcmVlRWxlbWVudCk6
CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQuX2lu
ZGV4T2ZUcmVlRWxlbWVudC5wcmV2aW91c0VsZW1lbnQpOgorICAgICAgICAoV0kuVHJlZU91dGxp
bmUuX2dlbmVyYXRlU3R5bGVSdWxlc0lmTmVlZGVkKToKKwogMjAxOC0xMS0yNyAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRk
IHN1cHBvcnQgZm9yIGZvcmNpbmcgY29sb3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcwppbmRleCBhYjI0MTdi
NTc5NTEyOTMxYmIwZWM5YjdiNTI0N2E1ZWNlNzkzZDNmLi5kZGZiZjUzNDU2YTEyMGRkNTUxOWNl
Mjg2OWZkMGFjYjVlM2IzMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRy
b2xsZXIuanMKQEAgLTE5MiwxNSArMTkyLDE3IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBj
bGFzcyBTZWxlY3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMu
X3NlbGVjdGVkSW5kZXhlcy5jbGVhcigpOwogICAgIH0KIAorICAgIGRpZEluc2VydEl0ZW0oaW5k
ZXgpCisgICAgeworICAgICAgICB0aGlzLl9hZGp1c3RJbmRleGVzQWZ0ZXIoaW5kZXggLSAxLCAx
KTsKKyAgICB9CisKICAgICBkaWRSZW1vdmVJdGVtKGluZGV4KQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuaGFzU2VsZWN0ZWRJdGVtKGluZGV4KSkKICAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RJ
dGVtKGluZGV4KTsKIAotICAgICAgICB3aGlsZSAoaW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4
ZXMuaW5kZXhHcmVhdGVyVGhhbihpbmRleCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVk
SW5kZXhlcy5kZWxldGUoaW5kZXgpOwotICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVz
LmFkZChpbmRleCAtIDEpOwotICAgICAgICB9CisgICAgICAgIHRoaXMuX2FkanVzdEluZGV4ZXNB
ZnRlcihpbmRleCwgLTEpOwogICAgIH0KIAogICAgIGhhbmRsZUtleURvd24oZXZlbnQpCkBAIC0y
MDgsNyArMjEwLDcgQEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNv
bnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLm51bWJlck9mSXRl
bXMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9
PT0gImEiICYmIGV2ZW50LmNvbW1hbmRPckNvbnRyb2xLZXkoKSkgeworICAgICAgICBpZiAoZXZl
bnQua2V5ID09PSAiYSIgJiYgZXZlbnQuY29tbWFuZE9yQ29udHJvbEtleSkgewogICAgICAgICAg
ICAgdGhpcy5zZWxlY3RBbGwoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CkBAIC0zNzIsNCArMzc0LDEyIEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxl
Y3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGxldCBzZWxlY3RlZEl0
ZW1zID0gaW5kZXhlcy5kaWZmZXJlbmNlKG9sZFNlbGVjdGVkSW5kZXhlcyk7CiAgICAgICAgIHRo
aXMuX2RlbGVnYXRlLnNlbGVjdGlvbkNvbnRyb2xsZXJTZWxlY3Rpb25EaWRDaGFuZ2UodGhpcywg
ZGVzZWxlY3RlZEl0ZW1zLCBzZWxlY3RlZEl0ZW1zKTsKICAgICB9CisKKyAgICBfYWRqdXN0SW5k
ZXhlc0FmdGVyKGluZGV4LCBkZWx0YSkKKyAgICB7CisgICAgICAgIHdoaWxlIChpbmRleCA9IHRo
aXMuX3NlbGVjdGVkSW5kZXhlcy5pbmRleEdyZWF0ZXJUaGFuKGluZGV4KSkgeworICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVzLmRlbGV0ZShpbmRleCk7CisgICAgICAgICAgICB0aGlz
Ll9zZWxlY3RlZEluZGV4ZXMuYWRkKGluZGV4ICsgZGVsdGEpOworICAgICAgICB9CisgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVHJlZUVsZW1lbnQuanMKaW5kZXggNWMwOWEyZmYwMmE3MzM5MGExNjQ5ODAxZTU0YmNhNWQ2
M2QxZmQ1Ni4uODgyNWVkMDE1Mzg5NmQyYzY0OTI1Y2IwMjQ4Yzk3OTA1MGNmOTA2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1l
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJl
ZUVsZW1lbnQuanMKQEAgLTIzOSw3ICsyMzksNiBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRy
ZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rl
ZCkKICAgICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgic2Vs
ZWN0ZWQiKTsKIAotICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIFdJLlRyZWVFbGVtZW50LnRyZWVFbGVtZW50TW91c2VEb3duKTsKICAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFdJ
LlRyZWVFbGVtZW50LnRyZWVFbGVtZW50VG9nZ2xlZCk7CiAgICAgICAgICAgICB0aGlzLl9saXN0
SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCBXSS5UcmVlRWxlbWVudC50cmVl
RWxlbWVudERvdWJsZUNsaWNrZWQpOwogCkBAIC0yNzksMjAgKzI3OCw2IEBAIFdJLlRyZWVFbGVt
ZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUuc29vbi51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKCk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHRyZWVFbGVtZW50TW91c2VEb3duKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dmFyIGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0OwotICAgICAgICBpZiAoIWVsZW1lbnQg
fHwgIWVsZW1lbnQudHJlZUVsZW1lbnQgfHwgIWVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0YWJs
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoZWxlbWVudC50cmVlRWxlbWVu
dC5pc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KSkgewotICAgICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0T25Nb3VzZURvd24oZXZlbnQpOwot
ICAgIH0KLQogICAgIHN0YXRpYyB0cmVlRWxlbWVudFRvZ2dsZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICBsZXQgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7CkBAIC01MjYsMjkgKzUxMSwx
NCBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICAgICAgdHJlZU91dGxpbmUucHJvY2Vzc2luZ1NlbGVjdGlvbkNoYW5nZSA9IHRydWU7
CiAKLSAgICAgICAgLy8gUHJldmVudCBkaXNwYXRjaGluZyBhIFNlbGVjdGlvbkRpZENoYW5nZSBl
dmVudCBmb3IgdGhlIGRlc2VsZWN0ZWQgZWxlbWVudCBpZgotICAgICAgICAvLyBpdCB3aWxsIGJl
IGRpc3BhdGNoZWQgZm9yIHRoZSBzZWxlY3RlZCBlbGVtZW50LgotICAgICAgICBpZiAoIXN1cHBy
ZXNzT25TZWxlY3QpCi0gICAgICAgICAgICBzdXBwcmVzc09uRGVzZWxlY3QgPSB0cnVlOwotCiAg
ICAgICAgIGxldCBkZXNlbGVjdGVkRWxlbWVudCA9IHRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVs
ZW1lbnQ7CiAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZCkgewotICAgICAgICAgICAgaWYgKHRy
ZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgdHJlZU91dGxp
bmUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVjdChzdXBwcmVzc09uRGVzZWxlY3QpOwotCiAg
ICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRyZWVPdXRsaW5l
LnNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzOwotCi0gICAgICAgICAgICBpZiAodGhpcy5fbGlz
dEl0ZW1Ob2RlKQotICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3Qu
YWRkKCJzZWxlY3RlZCIpOworICAgICAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1l
bnRJbnRlcm5hbCh0aGlzLCBzdXBwcmVzc09uU2VsZWN0LCBzZWxlY3RlZEJ5VXNlcik7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoIXN1cHByZXNzT25TZWxlY3QpIHsKLSAgICAgICAgICAgIGlm
ICh0aGlzLm9uc2VsZWN0KQotICAgICAgICAgICAgICAgIHRoaXMub25zZWxlY3QodGhpcywgc2Vs
ZWN0ZWRCeVVzZXIpOwotCi0gICAgICAgICAgICB0cmVlT3V0bGluZS5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hhbmdlLCB7c2VsZWN0
ZWRCeVVzZXJ9KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXN1cHByZXNzT25TZWxlY3QgJiYg
dGhpcy5vbnNlbGVjdCkKKyAgICAgICAgICAgIHRoaXMub25zZWxlY3QodGhpcywgc2VsZWN0ZWRC
eVVzZXIpOwogCiAgICAgICAgIHRyZWVPdXRsaW5lLnByb2Nlc3NpbmdTZWxlY3Rpb25DaGFuZ2Ug
PSBmYWxzZTsKIApAQCAtNTcxLDE3ICs1NDEsMTAgQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBU
cmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5z
ZWxlY3RUcmVlRWxlbWVudEludGVybmFsKG51bGwsIHN1cHByZXNzT25EZXNlbGVjdCk7CiAKLSAg
ICAgICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkKLSAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVt
Tm9kZS5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOwotCi0gICAgICAgIGlmICghc3VwcHJl
c3NPbkRlc2VsZWN0KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5vbmRlc2VsZWN0KQotICAgICAg
ICAgICAgICAgIHRoaXMub25kZXNlbGVjdCh0aGlzKTsKLQotICAgICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2Vs
ZWN0aW9uRGlkQ2hhbmdlKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXN1cHByZXNzT25EZXNl
bGVjdCAmJiB0aGlzLm9uZGVzZWxlY3QpCisgICAgICAgICAgICB0aGlzLm9uZGVzZWxlY3QodGhp
cyk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwppbmRleCAy
MWFjM2MyMjdkZDYzMWRlNmYzNzk4MjdmYzE4NzgxNWM5MmMxYzk2Li5iYzRhNDE3MWE5NmE0OGY0
NTBiMDEwYTRjMWUyMmI4M2Y5YTY3YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM3LDcgKzM3LDYgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4
dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0bWVudS5iaW5kKHRoaXMpKTsKIAogICAgICAgICB0
aGlzLmNoaWxkcmVuID0gW107Ci0gICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51
bGw7CiAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgPSB0aGlzLmVsZW1lbnQ7CiAgICAg
ICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhp
cy5fa25vd25UcmVlRWxlbWVudHMgPSBbXTsKQEAgLTU1LDYgKzU0LDEzIEBAIFdJLlRyZWVPdXRs
aW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5f
Y3VzdG9tSW5kZW50ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3NlbGVjdGFibGUgPSBzZWxlY3Rh
YmxlOwogCisgICAgICAgIHRoaXMuX2NhY2hlZE51bWJlck9mRGVzY2VuZGVudHMgPSAwOworICAg
ICAgICB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyID0gbmV3IFdJLlNlbGVjdGlvbkNvbnRyb2xs
ZXIodGhpcyk7CisgICAgICAgIHRoaXMuX3RyZWVFbGVtZW50SW5kZXhDYWNoZSA9IG5ldyBNYXA7
CisKKyAgICAgICAgdGhpcy5faXRlbVdhc1NlbGVjdGVkQnlVc2VyID0gZmFsc2U7CisgICAgICAg
IHRoaXMuX3N1cHByZXNzTmV4dFNlbGVjdGlvbkRpZENoYW5nZUV2ZW50ID0gZmFsc2U7CisKICAg
ICAgICAgdGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJlZUVsZW1lbnRzID0gbnVsbDsKICAgICAg
ICAgdGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVtZW50cyA9IG51bGw7CiAgICAgICAg
IHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29udGFpbmVyID0gbnVsbDsKQEAgLTY0LDYgKzcwLDcg
QEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUudGFiSW5kZXggPSAwOwogICAgICAgICB0
aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl90
cmVlS2V5RG93bi5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0
Tm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24u
YmluZCh0aGlzKSk7CiAKICAgICAgICAgV0kuVHJlZU91dGxpbmUuX2dlbmVyYXRlU3R5bGVSdWxl
c0lmTmVlZGVkKCk7CiAKQEAgLTczLDYgKzgwLDI5IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3Mg
VHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCisgICAgZ2V0
IGFsbG93c011bHRpcGxlU2VsZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
ZWxlY3Rpb25Db250cm9sbGVyLmFsbG93c011bHRpcGxlU2VsZWN0aW9uOworICAgIH0KKworICAg
IHNldCBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbihmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5f
c2VsZWN0aW9uQ29udHJvbGxlci5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IGZsYWc7CisgICAg
fQorCisgICAgZ2V0IHNlbGVjdGVkVHJlZUVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgbGV0IHNl
bGVjdGVkSW5kZXggPSB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyLmxhc3RTZWxlY3RlZEl0ZW07
CisgICAgICAgIHJldHVybiB0aGlzLl90cmVlRWxlbWVudEF0SW5kZXgoc2VsZWN0ZWRJbmRleCkg
fHwgbnVsbDsKKyAgICB9CisKKyAgICBzZXQgc2VsZWN0ZWRUcmVlRWxlbWVudCh0cmVlRWxlbWVu
dCkKKyAgICB7CisgICAgICAgIGxldCBpbmRleCA9IHRoaXMuX2luZGV4T2ZUcmVlRWxlbWVudCh0
cmVlRWxlbWVudCk7CisgICAgICAgIGNvbnN0IGV4dGVuZFNlbGVjdGlvbiA9IGZhbHNlOworICAg
ICAgICB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyLnNlbGVjdEl0ZW0oaW5kZXgsIGV4dGVuZFNl
bGVjdGlvbik7CisgICAgfQorCiAgICAgZ2V0IGhpZGRlbigpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5faGlkZGVuOwpAQCAtMjQyLDYgKzI3MiwxMSBAQCBXSS5UcmVlT3V0bGluZSA9IGNs
YXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgaWYgKGlzRmlyc3RD
aGlsZCAmJiB0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKKworICAg
ICAgICBpZiAodGhpcy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbikgeworICAgICAgICAgICAgbGV0
IGluc2VydGlvbkluZGV4ID0gdGhpcy5faW5kZXhPZlRyZWVFbGVtZW50KGNoaWxkLnByZXZpb3Vz
U2libGluZykgfHwgMDsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3NlbGVjdGlvbkNv
bnRyb2xsZXIuZGlkSW5zZXJ0SXRlbShpbnNlcnRpb25JbmRleCk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICByZW1vdmVDaGlsZEF0SW5kZXgoY2hpbGRJbmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0
LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCkBAIC0yNzIsNiArMzA3LDcgQEAgV0kuVHJlZU91dGxp
bmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodHJl
ZU91dGxpbmUpIHsKICAgICAgICAgICAgIHRyZWVPdXRsaW5lLl9mb3JnZXRUcmVlRWxlbWVudChj
aGlsZCk7CiAgICAgICAgICAgICB0cmVlT3V0bGluZS5fZm9yZ2V0Q2hpbGRyZW5SZWN1cnNpdmUo
Y2hpbGQpOworICAgICAgICAgICAgdHJlZU91dGxpbmUuX3NlbGVjdGlvbkNvbnRyb2xsZXIuZGlk
UmVtb3ZlSXRlbShjaGlsZEluZGV4KTsKICAgICAgICAgfQogCiAgICAgICAgIGNoaWxkLl9kZXRh
Y2goKTsKQEAgLTM3OCw2ICs0MTQsOSBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRs
aW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfcmVtZW1iZXJUcmVlRWxlbWVudChlbGVtZW50
KQogICAgIHsKKyAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRJbmRleENhY2hlLmNsZWFyKCk7Cisg
ICAgICAgIHRoaXMuX2NhY2hlZE51bWJlck9mRGVzY2VuZGVudHMrKzsKKwogICAgICAgICBpZiAo
IXRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCiAgICAgICAgICAg
ICB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJdID0gW107CiAKQEAg
LTM5Miw2ICs0MzEsOSBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVu
ZHMgV0kuT2JqZWN0CiAKICAgICBfZm9yZ2V0VHJlZUVsZW1lbnQoZWxlbWVudCkKICAgICB7Cisg
ICAgICAgIHRoaXMuX3RyZWVFbGVtZW50SW5kZXhDYWNoZS5jbGVhcigpOworICAgICAgICB0aGlz
Ll9jYWNoZWROdW1iZXJPZkRlc2NlbmRlbnRzLS07CisKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0
ZWRUcmVlRWxlbWVudCA9PT0gZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5kZXNlbGVj
dCh0cnVlKTsKICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51bGw7CkBA
IC01MjMsNzAgKzU2NSw3MSBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuX2NoaWxk
cmVuTGlzdE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCF0aGlzLnNl
bGVjdGVkVHJlZUVsZW1lbnQgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBl
dmVudC5jdHJsS2V5KQorICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCB8fCBl
dmVudC5jb21tYW5kT3JDb250cm9sS2V5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGxldCBpc1JUTCA9IFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERp
cmVjdGlvbi5SVEw7CiAKICAgICAgICAgdmFyIGhhbmRsZWQgPSBmYWxzZTsKICAgICAgICAgdmFy
IG5leHRTZWxlY3RlZEVsZW1lbnQ7Ci0gICAgICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09
PSAiVXAiICYmICFldmVudC5hbHRLZXkpIHsKLSAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1l
bnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50
KHRydWUpOwotICAgICAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRT
ZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKLSAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRF
bGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVudC50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQo
dHJ1ZSk7Ci0gICAgICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUg
OiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93
biIgJiYgIWV2ZW50LmFsdEtleSkgewotICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9
IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudCh0cnVlKTsK
LSAgICAgICAgICAgIHdoaWxlIChuZXh0U2VsZWN0ZWRFbGVtZW50ICYmICFuZXh0U2VsZWN0ZWRF
bGVtZW50LnNlbGVjdGFibGUpCi0gICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9
IG5leHRTZWxlY3RlZEVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQodHJ1ZSk7Ci0gICAg
ICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKLSAg
ICAgICAgfSBlbHNlIGlmICgoIWlzUlRMICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJMZWZ0
IikgfHwgKGlzUlRMICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJSaWdodCIpKSB7Ci0gICAg
ICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZGVkKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50LmNvbGxhcHNlUmVjdXJzaXZlbHkoKTsKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5jb2xsYXBz
ZSgpOwotICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNl
IGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50ICYmICF0aGlzLnNlbGVjdGVkVHJl
ZUVsZW1lbnQucGFyZW50LnJvb3QpIHsKLSAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudC5zZWxl
Y3RhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlz
LnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50OwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
bmV4dFNlbGVjdGVkRWxlbWVudCAmJiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3Rl
ZEVsZW1lbnQucGFyZW50OwotICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVj
dGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRo
aXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJlbnQuY29sbGFwc2UoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIGlmICgoIWlzUlRMICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJSaWdo
dCIpIHx8IChpc1JUTCAmJiBldmVudC5rZXlJZGVudGlmaWVyID09PSAiTGVmdCIpKSB7Ci0gICAg
ICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXZlYWxlZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnJldmVhbCgpOwotICAgICAgICAg
ICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVj
dGVkVHJlZUVsZW1lbnQuaGFzQ2hpbGRyZW4pIHsKLSAgICAgICAgICAgICAgICBoYW5kbGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBh
bmRlZCkgeworCisgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpIHsKKyAgICAg
ICAgICAgIGlmICgoIWlzUlRMICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJMZWZ0IikgfHwg
KGlzUlRMICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJSaWdodCIpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRlZCkgewogICAgICAgICAg
ICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQotICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZFJlY3Vyc2l2ZWx5KCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY29sbGFwc2VSZWN1cnNpdmVseSgp
OwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LnNlbGVjdGVkVHJlZUVsZW1lbnQuZXhwYW5kKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY29sbGFwc2UoKTsKKyAgICAgICAgICAgICAgICAgICAg
aGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVk
VHJlZUVsZW1lbnQucGFyZW50ICYmICF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50LnJv
b3QpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50LnNlbGVjdGFibGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNlbGVj
dGVkVHJlZUVsZW1lbnQucGFyZW50OworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5l
eHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNlbGVj
dGVkRWxlbWVudC5wYXJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gbmV4
dFNlbGVjdGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50KQorICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudC5jb2xsYXBzZSgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKCFpc1JUTCAmJiBldmVudC5r
ZXlJZGVudGlmaWVyID09PSAiUmlnaHQiKSB8fCAoaXNSVEwgJiYgZXZlbnQua2V5SWRlbnRpZmll
ciA9PT0gIkxlZnQiKSkgeworICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRyZWVF
bGVtZW50LnJldmVhbGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRy
ZWVFbGVtZW50LnJldmVhbCgpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5oYXND
aGlsZHJlbikgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRlZCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRU
cmVlRWxlbWVudC5jaGlsZHJlblswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChu
ZXh0U2VsZWN0ZWRFbGVtZW50ICYmICFuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdGFibGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxl
Y3RlZEVsZW1lbnQubmV4dFNpYmxpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVk
ID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFu
ZFJlY3Vyc2l2ZWx5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZCgpOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
IGlmIChldmVudC5rZXlDb2RlID09PSA4IC8qIEJhY2tzcGFjZSAqLyB8fCBldmVudC5rZXlDb2Rl
ID09PSA0NiAvKiBEZWxldGUgKi8pIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rl
ZFRyZWVFbGVtZW50Lm9uZGVsZXRlKQorICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhp
cy5zZWxlY3RlZFRyZWVFbGVtZW50Lm9uZGVsZXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFo
YW5kbGVkICYmIHRoaXMudHJlZU91dGxpbmUub25kZWxldGUpCisgICAgICAgICAgICAgICAgICAg
IGhhbmRsZWQgPSB0aGlzLnRyZWVPdXRsaW5lLm9uZGVsZXRlKHRoaXMuc2VsZWN0ZWRUcmVlRWxl
bWVudCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzRW50ZXJLZXkoZXZlbnQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbmVudGVyKQorICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lm9uZW50ZXIo
KTsKKyAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZWQgJiYgdGhpcy50cmVlT3V0bGluZS5vbmVu
dGVyKQorICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50cmVlT3V0bGluZS5vbmVu
dGVyKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2
ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMjAiIC8qIFNwYWNlICovKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbnNwYWNlKQorICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVkID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lm9uc3BhY2UoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWhhbmRsZWQgJiYgdGhpcy50cmVlT3V0bGluZS5vbnNwYWNlKQor
ICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50cmVlT3V0bGluZS5vbnNwYWNlKHRo
aXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBp
ZiAoZXZlbnQua2V5Q29kZSA9PT0gOCAvKiBCYWNrc3BhY2UgKi8gfHwgZXZlbnQua2V5Q29kZSA9
PT0gNDYgLyogRGVsZXRlICovKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVF
bGVtZW50Lm9uZGVsZXRlKQotICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnNlbGVjdGVk
VHJlZUVsZW1lbnQub25kZWxldGUoKTsKLSAgICAgICAgICAgIGlmICghaGFuZGxlZCAmJiB0aGlz
LnRyZWVPdXRsaW5lLm9uZGVsZXRlKQotICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnRy
ZWVPdXRsaW5lLm9uZGVsZXRlKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaXNFbnRlcktleShldmVudCkpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLnNlbGVj
dGVkVHJlZUVsZW1lbnQub25lbnRlcikKLSAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5z
ZWxlY3RlZFRyZWVFbGVtZW50Lm9uZW50ZXIoKTsKLSAgICAgICAgICAgIGlmICghaGFuZGxlZCAm
JiB0aGlzLnRyZWVPdXRsaW5lLm9uZW50ZXIpCi0gICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRo
aXMudHJlZU91dGxpbmUub25lbnRlcih0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpOwotICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMjAiIC8qIFNwYWNlICov
KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lm9uc3BhY2UpCi0g
ICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbnNwYWNl
KCk7Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZWQgJiYgdGhpcy50cmVlT3V0bGluZS5vbnNwYWNl
KQotICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnRyZWVPdXRsaW5lLm9uc3BhY2UodGhp
cy5zZWxlY3RlZFRyZWVFbGVtZW50KTsKICAgICAgICAgfQogCisgICAgICAgIGlmICghaGFuZGxl
ZCkKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyLmhhbmRs
ZUtleURvd24oZXZlbnQpOworCiAgICAgICAgIGlmIChuZXh0U2VsZWN0ZWRFbGVtZW50KSB7CiAg
ICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50LnJldmVhbCgpOwogICAgICAgICAgICAgbmV4
dFNlbGVjdGVkRWxlbWVudC5zZWxlY3QoZmFsc2UsIHRydWUpOwpAQCAtNzU3LDggKzgwMCw4MSBA
QCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgICAgICB0aGlzLl92aXJ0dWFsaXplZFNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSAo
Zmlyc3RJdGVtICsgZXh0cmFSb3dzKSAqIHRoaXMuX3ZpcnR1YWxpemVkVHJlZUl0ZW1IZWlnaHQ7
CiAgICAgfQogCisgICAgLy8gU2VsZWN0aW9uQ29udHJvbGxlciBkZWxlZ2F0ZQorCisgICAgc2Vs
ZWN0aW9uQ29udHJvbGxlck51bWJlck9mSXRlbXMoY29udHJvbGxlcikKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9jYWNoZWROdW1iZXJPZkRlc2NlbmRlbnRzOworICAgIH0KKworICAgIHNl
bGVjdGlvbkNvbnRyb2xsZXJTZWxlY3Rpb25EaWRDaGFuZ2UoY29udHJvbGxlciwgZGVzZWxlY3Rl
ZEl0ZW1zLCBzZWxlY3RlZEl0ZW1zKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgaW5kZXggb2Yg
ZGVzZWxlY3RlZEl0ZW1zKSB7CisgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90
cmVlRWxlbWVudEF0SW5kZXgoaW5kZXgpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHJl
ZUVsZW1lbnQsICJNaXNzaW5nIFRyZWVFbGVtZW50IGZvciBkZXNlbGVjdGVkIGluZGV4ICIgKyBp
bmRleCk7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgdHJl
ZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7Cisg
ICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpbmRleCBvZiBzZWxlY3RlZEl0ZW1zKSB7Cisg
ICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEF0SW5kZXgoaW5k
ZXgpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQsICJNaXNzaW5nIFRy
ZWVFbGVtZW50IGZvciBzZWxlY3RlZCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgaWYg
KHRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5f
ZGlzcGF0Y2hTZWxlY3Rpb25EaWRDaGFuZ2VFdmVudCgpOworICAgIH0KKworICAgIHNlbGVjdGlv
bkNvbnRyb2xsZXJOZXh0U2VsZWN0YWJsZUluZGV4KGNvbnRyb2xsZXIsIGluZGV4KQorICAgIHsK
KyAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRBdEluZGV4KGluZGV4
KTsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBOYU47CisK
KyAgICAgICAgY29uc3Qgc2tpcFVucmV2ZWFsZWQgPSB0cnVlOworICAgICAgICBjb25zdCBkb250
UG9wdWxhdGUgPSB0cnVlOworCisgICAgICAgIHdoaWxlICh0cmVlRWxlbWVudCA9IHRyZWVFbGVt
ZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBVbnJldmVhbGVkLCBudWxsLCBkb250UG9w
dWxhdGUpKSB7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQuc2VsZWN0YWJsZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhPZlRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBOYU47CisgICAgfQorCisgICAgc2VsZWN0aW9u
Q29udHJvbGxlclByZXZpb3VzU2VsZWN0YWJsZUluZGV4KGNvbnRyb2xsZXIsIGluZGV4KQorICAg
IHsKKyAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRBdEluZGV4KGlu
ZGV4KTsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBOYU47
CisKKyAgICAgICAgY29uc3Qgc2tpcFVucmV2ZWFsZWQgPSB0cnVlOworICAgICAgICBjb25zdCBk
b250UG9wdWxhdGUgPSB0cnVlOworCisgICAgICAgIHdoaWxlICh0cmVlRWxlbWVudCA9IHRyZWVF
bGVtZW50LnRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwgbnVsbCwg
ZG9udFBvcHVsYXRlKSkgeworICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnNlbGVjdGFibGUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4T2ZUcmVlRWxlbWVudCh0cmVlRWxl
bWVudCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gTmFOOworICAgIH0KKwogICAgIC8v
IFByb3RlY3RlZAogCisgICAgc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbCh0cmVlRWxlbWVudCwg
c3VwcHJlc3NOb3RpZmljYXRpb24gPSBmYWxzZSwgc2VsZWN0ZWRCeVVzZXIgPSBmYWxzZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2l0ZW1XYXNTZWxlY3RlZEJ5VXNlciA9IHNlbGVjdGVkQnlVc2Vy
OworICAgICAgICB0aGlzLl9zdXBwcmVzc05leHRTZWxlY3Rpb25EaWRDaGFuZ2VFdmVudCA9IHN1
cHByZXNzTm90aWZpY2F0aW9uOworCisgICAgICAgIGlmICh0aGlzLmFsbG93c1JlcGVhdFNlbGVj
dGlvbiAmJiB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPT09IHRyZWVFbGVtZW50KSB7CisgICAg
ICAgICAgICB0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkRpZENoYW5nZUV2ZW50KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQgPSB0cmVlRWxlbWVudDsKKyAgICB9CisKICAgICB0cmVlRWxlbWVudEZyb21FdmVudChldmVu
dCkKICAgICB7CiAgICAgICAgIGxldCBzY3JvbGxDb250YWluZXIgPSB0aGlzLmVsZW1lbnQucGFy
ZW50RWxlbWVudDsKQEAgLTc5OSw2ICs5MTUsMTMgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBU
cmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0cmVlRWxlbWVudC5wb3B1bGF0
ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCk7CiAgICAgfQogCisgICAgZGlkU2VsZWN0
VHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5hbGxvd3NN
dWx0aXBsZVNlbGVjdGlvbikgeworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisKICAg
ICAvLyBQcml2YXRlCiAKICAgICBzdGF0aWMgX2dlbmVyYXRlU3R5bGVSdWxlc0lmTmVlZGVkKCkK
QEAgLTg1NSw2ICs5NzgsODMgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250ZXh0TWVu
dS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICB0aGlzLnBvcHVsYXRlQ29udGV4dE1l
bnUoY29udGV4dE1lbnUsIGV2ZW50LCB0cmVlRWxlbWVudCk7CiAgICAgfQorCisgICAgX2hhbmRs
ZU1vdXNlRG93bihldmVudCkKKyAgICB7CisgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMu
dHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAoIXRyZWVFbGVtZW50IHx8
ICF0cmVlRWxlbWVudC5zZWxlY3RhYmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmICh0cmVlRWxlbWVudC5pc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KSkg
eworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBpbmRleCA9IHRoaXMuX2luZGV4T2ZUcmVlRWxl
bWVudCh0cmVlRWxlbWVudCk7CisgICAgICAgIGlmIChpc05hTihpbmRleCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5oYW5kbGVJdGVt
TW91c2VEb3duKGluZGV4LCBldmVudCk7CisgICAgfQorCisgICAgX2luZGV4T2ZUcmVlRWxlbWVu
dCh0cmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHByZXZpb3VzRWxlbWVudChl
bGVtZW50KSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5wcmV2aW91c1NpYmxpbmcpIHsKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmc7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5jaGlsZHJlbi5sYXN0VmFsdWU7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnQgJiYgZWxlbWVudC5w
YXJlbnQucm9vdCA/IG51bGwgOiBlbGVtZW50LnBhcmVudDsKKyAgICAgICAgICAgIHJldHVybiBl
bGVtZW50OworICAgICAgICB9CisKKyAgICAgICAgbGV0IGluZGV4ID0gMDsKKyAgICAgICAgbGV0
IGN1cnJlbnQgPSB0cmVlRWxlbWVudDsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAg
ICAgICAgIGxldCBjbG9zZXN0SW5kZXggPSB0aGlzLl90cmVlRWxlbWVudEluZGV4Q2FjaGUuZ2V0
KGN1cnJlbnQpOworICAgICAgICAgICAgaWYgKCFpc05hTihjbG9zZXN0SW5kZXgpKSB7CisgICAg
ICAgICAgICAgICAgaW5kZXggKz0gY2xvc2VzdEluZGV4OworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjdXJyZW50ID0gcHJldmlvdXNFbGVtZW50
KGN1cnJlbnQpOworICAgICAgICAgICAgaWYgKGN1cnJlbnQpCisgICAgICAgICAgICAgICAgaW5k
ZXgrKzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fdHJlZUVsZW1lbnRJbmRleENh
Y2hlLmhhcyh0cmVlRWxlbWVudCkpCisgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudEluZGV4
Q2FjaGUuc2V0KHRyZWVFbGVtZW50LCBpbmRleCk7CisKKyAgICAgICAgcmV0dXJuIGluZGV4Owor
ICAgIH0KKworICAgIF90cmVlRWxlbWVudEF0SW5kZXgoaW5kZXgpCisgICAgeworICAgICAgICBj
b25zdCBza2lwVW5yZXZlYWxlZCA9IGZhbHNlOworICAgICAgICBjb25zdCBkb250UG9wdWxhdGUg
PSB0cnVlOworCisgICAgICAgIGxldCBjdXJyZW50ID0gMDsKKyAgICAgICAgZm9yIChsZXQgdHJl
ZUVsZW1lbnQgPSB0aGlzLmNoaWxkcmVuWzBdOyB0cmVlRWxlbWVudDsgdHJlZUVsZW1lbnQgPSB0
cmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwgbnVsbCwg
ZG9udFBvcHVsYXRlKSwgKytjdXJyZW50KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudCA9PT0g
aW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgX2Rpc3BhdGNoU2VsZWN0aW9uRGlk
Q2hhbmdlRXZlbnQoKQorICAgIHsKKyAgICAgICAgbGV0IHNlbGVjdGVkQnlVc2VyID0gdGhpcy5f
aXRlbVdhc1NlbGVjdGVkQnlVc2VyOworICAgICAgICB0aGlzLl9pdGVtV2FzU2VsZWN0ZWRCeVVz
ZXIgPSBmYWxzZTsKKworICAgICAgICBpZiAodGhpcy5fc3VwcHJlc3NOZXh0U2VsZWN0aW9uRGlk
Q2hhbmdlRXZlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX3N1cHByZXNzTmV4dFNlbGVjdGlvbkRp
ZENoYW5nZUV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UcmVlT3V0bGluZS5FdmVu
dC5TZWxlY3Rpb25EaWRDaGFuZ2UsIHtzZWxlY3RlZEJ5VXNlcn0pOworICAgIH0KIH07CiAKIFdJ
LlRyZWVPdXRsaW5lLl9zdHlsZUVsZW1lbnQgPSBudWxsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355823</attachid>
            <date>2018-11-27 16:58:23 -0800</date>
            <delta_ts>2018-11-27 17:52:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191483-20181127165819.patch</filename>
            <type>text/plain</type>
            <size>23075</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
ZjkyM2JkYmYxNDg2ODM5ZGMzY2IyYWZmYTM1OTViM2EzOGYyYTE2Li4xNzgwOTJiMWI2ZTA5N2Uw
NDRmOWUyMGNiYzU5Mjg3ZDgwYjRkMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxOC0xMS0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVHJlZU91dGxpbmUgc2hvdWxkIHJlLXVzZSBtdWx0
aXBsZS1zZWxlY3Rpb24gbG9naWMgZnJvbSBUYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NTk1MzMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgVHJlZU91dGxpbmUgdG8gdXNlIFNlbGVjdGlvbkNvbnRyb2xsZXIuIEFkb3B0aW5n
IFNlbGVjdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgaW4gVHJlZU91dGxpbmUgaXMgbm90IGFzIHN0
cmFpZ2h0Zm9yd2FyZCBhcyBpdCB3YXMgaW4gVGFibGUuIFNlbGVjdGVkIGl0ZW1zCisgICAgICAg
IGFyZSB0cmFja2VkIGJ5IGluZGV4LCBhbmQgVHJlZUVsZW1lbnQgbGFja3MgYW4gZXhwbGljaXQg
aW5kZXguIEFzIGEgY29uc2VxdWVuY2UKKyAgICAgICAgVHJlZUVsZW1lbnQgaW5kZXhlcyBhcmUg
Y2FsY3VhbHRlZCBhcyBuZWVkZWQgYW5kIGNhY2hlZC4gVGhlIGNhY2hlIGlzIGNsZWFyZWQKKyAg
ICAgICAgd2hlbmV2ZXIgYW4gZWxlbWVudCBpcyBhZGRlZCBvciByZW1vdmVkLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzOgorICAg
ICAgICAoV0kuU2VsZWN0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXSS5TZWxlY3Rpb25Db250
cm9sbGVyLnByb3RvdHlwZS5kaWRJbnNlcnRJdGVtKToKKyAgICAgICAgKFdJLlNlbGVjdGlvbkNv
bnRyb2xsZXIucHJvdG90eXBlLmRpZFJlbW92ZUl0ZW0pOgorICAgICAgICAoV0kuU2VsZWN0aW9u
Q29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlS2V5RG93bik6CisgICAgICAgIERyaXZlLWJ5IHN5
bnRheCBlcnJvciBmaXguCisgICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVyLnByb3RvdHlw
ZS5fYWRqdXN0SW5kZXhlc0FmdGVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dGFj
aCk6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0KToKKyAgICAgICAg
KFdJLlRyZWVFbGVtZW50LnByb3RvdHlwZS5kZXNlbGVjdCk6CisgICAgICAgIFJvdXRlIGl0ZW0g
c2VsZWN0aW9uIHRocm91Z2ggdGhlIHBhcmVudCBUcmVlT3V0bGluZSwgaW4gb3JkZXIgdG8gZ28g
dGhvdWdoCisgICAgICAgIHRoZSBUcmVlT3V0bGluZSdzIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisK
KyAgICAgICAgKFdJLlRyZWVFbGVtZW50LnRyZWVFbGVtZW50TW91c2VEb3duKTogRGVsZXRlZC4K
KyAgICAgICAgTW92ZWQgaGFuZGxlciB0byBUcmVlT3V0bGluZSwgd2hpY2ggb3ducyB0aGUgU2Vs
ZWN0aW9uQ29udHJvbGxlciB0aGF0CisgICAgICAgIG5lZWRzIHRvIHJlc3BvbmQgdG8gbW91c2Ug
ZXZlbnRzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qczoK
KyAgICAgICAgKFdJLlRyZWVPdXRsaW5lKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5nZXQgYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24pOgorICAgICAgICAoV0kuVHJlZU91dGxp
bmUucHJvdG90eXBlLnNldCBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbik6CisgICAgICAgIChXSS5U
cmVlT3V0bGluZS5wcm90b3R5cGUuZ2V0IHNlbGVjdGVkVHJlZUVsZW1lbnQpOgorICAgICAgICAo
V0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnNldCBzZWxlY3RlZFRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5pbnNlcnRDaGlsZCk6CisgICAgICAgIChXSS5U
cmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRBdEluZGV4KToKKyAgICAgICAgKFdJLlRy
ZWVPdXRsaW5lLnByb3RvdHlwZS5fcmVtZW1iZXJUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5U
cmVlT3V0bGluZS5wcm90b3R5cGUuX2ZvcmdldFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLlRy
ZWVPdXRsaW5lLnByb3RvdHlwZS5fdHJlZUtleURvd24pOgorICAgICAgICAoV0kuVHJlZU91dGxp
bmUucHJvdG90eXBlLnNlbGVjdGlvbkNvbnRyb2xsZXJOdW1iZXJPZkl0ZW1zKToKKyAgICAgICAg
KFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3Rpb25Db250cm9sbGVyU2VsZWN0aW9uRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3Rpb25Db250
cm9sbGVyTmV4dFNlbGVjdGFibGVJbmRleCk6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5wcm90
b3R5cGUuc2VsZWN0aW9uQ29udHJvbGxlclByZXZpb3VzU2VsZWN0YWJsZUluZGV4KToKKyAgICAg
ICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxlY3RUcmVlRWxlbWVudEludGVybmFsKToK
KyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5kaWRTZWxlY3RUcmVlRWxlbWVudCk6
CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQuX2lu
ZGV4T2ZUcmVlRWxlbWVudC5wcmV2aW91c0VsZW1lbnQpOgorICAgICAgICAoV0kuVHJlZU91dGxp
bmUuX2dlbmVyYXRlU3R5bGVSdWxlc0lmTmVlZGVkKToKKwogMjAxOC0xMS0yNyAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRk
IHN1cHBvcnQgZm9yIGZvcmNpbmcgY29sb3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcwppbmRleCBhYjI0MTdi
NTc5NTEyOTMxYmIwZWM5YjdiNTI0N2E1ZWNlNzkzZDNmLi5kZGZiZjUzNDU2YTEyMGRkNTUxOWNl
Mjg2OWZkMGFjYjVlM2IzMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRy
b2xsZXIuanMKQEAgLTE5MiwxNSArMTkyLDE3IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBj
bGFzcyBTZWxlY3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMu
X3NlbGVjdGVkSW5kZXhlcy5jbGVhcigpOwogICAgIH0KIAorICAgIGRpZEluc2VydEl0ZW0oaW5k
ZXgpCisgICAgeworICAgICAgICB0aGlzLl9hZGp1c3RJbmRleGVzQWZ0ZXIoaW5kZXggLSAxLCAx
KTsKKyAgICB9CisKICAgICBkaWRSZW1vdmVJdGVtKGluZGV4KQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuaGFzU2VsZWN0ZWRJdGVtKGluZGV4KSkKICAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RJ
dGVtKGluZGV4KTsKIAotICAgICAgICB3aGlsZSAoaW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4
ZXMuaW5kZXhHcmVhdGVyVGhhbihpbmRleCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVk
SW5kZXhlcy5kZWxldGUoaW5kZXgpOwotICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVz
LmFkZChpbmRleCAtIDEpOwotICAgICAgICB9CisgICAgICAgIHRoaXMuX2FkanVzdEluZGV4ZXNB
ZnRlcihpbmRleCwgLTEpOwogICAgIH0KIAogICAgIGhhbmRsZUtleURvd24oZXZlbnQpCkBAIC0y
MDgsNyArMjEwLDcgQEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNv
bnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLm51bWJlck9mSXRl
bXMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9
PT0gImEiICYmIGV2ZW50LmNvbW1hbmRPckNvbnRyb2xLZXkoKSkgeworICAgICAgICBpZiAoZXZl
bnQua2V5ID09PSAiYSIgJiYgZXZlbnQuY29tbWFuZE9yQ29udHJvbEtleSkgewogICAgICAgICAg
ICAgdGhpcy5zZWxlY3RBbGwoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CkBAIC0zNzIsNCArMzc0LDEyIEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxl
Y3Rpb25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGxldCBzZWxlY3RlZEl0
ZW1zID0gaW5kZXhlcy5kaWZmZXJlbmNlKG9sZFNlbGVjdGVkSW5kZXhlcyk7CiAgICAgICAgIHRo
aXMuX2RlbGVnYXRlLnNlbGVjdGlvbkNvbnRyb2xsZXJTZWxlY3Rpb25EaWRDaGFuZ2UodGhpcywg
ZGVzZWxlY3RlZEl0ZW1zLCBzZWxlY3RlZEl0ZW1zKTsKICAgICB9CisKKyAgICBfYWRqdXN0SW5k
ZXhlc0FmdGVyKGluZGV4LCBkZWx0YSkKKyAgICB7CisgICAgICAgIHdoaWxlIChpbmRleCA9IHRo
aXMuX3NlbGVjdGVkSW5kZXhlcy5pbmRleEdyZWF0ZXJUaGFuKGluZGV4KSkgeworICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVzLmRlbGV0ZShpbmRleCk7CisgICAgICAgICAgICB0aGlz
Ll9zZWxlY3RlZEluZGV4ZXMuYWRkKGluZGV4ICsgZGVsdGEpOworICAgICAgICB9CisgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggNzVlNzcyMTMxMGU5ZGVjYTUzMTFmZjE3ZmYy
NTM3ZTU0NmJjNzllYi4uNmM5N2EwYTRjNDlmZWU4M2UwN2U5ZmNmZjE4MjExOWIyYjhmZWI0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTY2OSwxNiArNjY5LDE2IEBAIFdJLkRPTVRyZWVF
bGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzZWxlY3RPbk1vdXNlRG93bihldmVudCkK
KyAgICBjYW5TZWxlY3RPbk1vdXNlRG93bihldmVudCkKICAgICB7Ci0gICAgICAgIHN1cGVyLnNl
bGVjdE9uTW91c2VEb3duKGV2ZW50KTsKLQogICAgICAgICBpZiAodGhpcy5fZWRpdGluZykKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAv
LyBQcmV2ZW50IHNlbGVjdGluZyB0aGUgbmVhcmVzdCB3b3JkIG9uIGRvdWJsZSBjbGljay4KICAg
ICAgICAgaWYgKGV2ZW50LmRldGFpbCA+PSAyKQotICAgICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKICAgICBvbmRibGNsaWNrKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJv
Z3JhbVRyZWVFbGVtZW50LmpzCmluZGV4IDkyZGE2ODJiNzFmNzVlMTViMDU3MjYwMzAwYzdjYWM1
ZjVjNTM3OWYuLmZlZjY5MTczMTY1YmVlMGRjYWVmMDM4NjI4OTRkOTY4ZDUwYjE3YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclBy
b2dyYW1UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQuanMKQEAgLTQ4LDEyICs0OCw5IEBA
IFdJLlNoYWRlclByb2dyYW1UcmVlRWxlbWVudCA9IGNsYXNzIFNoYWRlclByb2dyYW1UcmVlRWxl
bWVudCBleHRlbmRzIFdJLkdlbmVyYWxUCiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX2hhbmRsZU1vdXNlT3V0LmJpbmQodGhpcykpOwogICAg
IH0KIAotICAgIHNlbGVjdE9uTW91c2VEb3duKGV2ZW50KQorICAgIGNhblNlbGVjdE9uTW91c2VE
b3duKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3N0YXR1c0VsZW1lbnQuY29udGFp
bnMoZXZlbnQudGFyZ2V0KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzdXBlci5z
ZWxlY3RPbk1vdXNlRG93bihldmVudCk7CisgICAgICAgIHJldHVybiAhdGhpcy5fc3RhdHVzRWxl
bWVudC5jb250YWlucyhldmVudC50YXJnZXQpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVF
bGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJl
ZUVsZW1lbnQuanMKaW5kZXggNWMwOWEyZmYwMmE3MzM5MGExNjQ5ODAxZTU0YmNhNWQ2M2QxZmQ1
Ni4uYTcwZjAwN2Q1MmY0ODBmNzRkZDlkMjlmMTJlMGE4MWZiYmFhOWEzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1l
bnQuanMKQEAgLTE4Nyw2ICsxODcsMTEgQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxl
bWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKICAgICB9
CiAKKyAgICBjYW5TZWxlY3RPbk1vdXNlRG93bihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIF9maXJlRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLnRyZWVPdXRsaW5lKQpAQCAtMjM5LDcgKzI0NCw2IEBAIFdJLlRyZWVFbGVtZW50ID0g
Y2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICh0aGlz
LnNlbGVjdGVkKQogICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3Qu
YWRkKCJzZWxlY3RlZCIpOwogCi0gICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgV0kuVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRNb3VzZURv
d24pOwogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgV0kuVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRUb2dnbGVkKTsKICAgICAgICAgICAgIHRo
aXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIFdJLlRyZWVFbGVt
ZW50LnRyZWVFbGVtZW50RG91YmxlQ2xpY2tlZCk7CiAKQEAgLTI3OSwyMCArMjgzLDYgQEAgV0ku
VHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS5zb29uLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdHJlZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCi0gICAgewot
ICAgICAgICB2YXIgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7Ci0gICAgICAgIGlmICgh
ZWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudC5z
ZWxlY3RhYmxlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChlbGVtZW50LnRy
ZWVFbGVtZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpKSB7Ci0gICAg
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RPbk1vdXNlRG93bihl
dmVudCk7Ci0gICAgfQotCiAgICAgc3RhdGljIHRyZWVFbGVtZW50VG9nZ2xlZChldmVudCkKICAg
ICB7CiAgICAgICAgIGxldCBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKQEAgLTUyNiwy
OSArNTE2LDExIEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgICAgICB0cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdl
ID0gdHJ1ZTsKIAotICAgICAgICAvLyBQcmV2ZW50IGRpc3BhdGNoaW5nIGEgU2VsZWN0aW9uRGlk
Q2hhbmdlIGV2ZW50IGZvciB0aGUgZGVzZWxlY3RlZCBlbGVtZW50IGlmCi0gICAgICAgIC8vIGl0
IHdpbGwgYmUgZGlzcGF0Y2hlZCBmb3IgdGhlIHNlbGVjdGVkIGVsZW1lbnQuCi0gICAgICAgIGlm
ICghc3VwcHJlc3NPblNlbGVjdCkKLSAgICAgICAgICAgIHN1cHByZXNzT25EZXNlbGVjdCA9IHRy
dWU7Ci0KLSAgICAgICAgbGV0IGRlc2VsZWN0ZWRFbGVtZW50ID0gdHJlZU91dGxpbmUuc2VsZWN0
ZWRUcmVlRWxlbWVudDsKLSAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7Ci0gICAgICAgICAg
ICBpZiAodHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgICAgICB0
cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LmRlc2VsZWN0KHN1cHByZXNzT25EZXNlbGVj
dCk7Ci0KLSAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICAgICAgdHJl
ZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXM7Ci0KLSAgICAgICAgICAgIGlmICh0
aGlzLl9saXN0SXRlbU5vZGUpCi0gICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNs
YXNzTGlzdC5hZGQoInNlbGVjdGVkIik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXN1cHBy
ZXNzT25TZWxlY3QpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLm9uc2VsZWN0KQotICAgICAgICAg
ICAgICAgIHRoaXMub25zZWxlY3QodGhpcywgc2VsZWN0ZWRCeVVzZXIpOworICAgICAgICB0aGlz
LnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRJ
bnRlcm5hbCh0aGlzLCBzdXBwcmVzc09uU2VsZWN0LCBzZWxlY3RlZEJ5VXNlcik7CiAKLSAgICAg
ICAgICAgIHRyZWVPdXRsaW5lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UcmVlT3V0bGlu
ZS5FdmVudC5TZWxlY3Rpb25EaWRDaGFuZ2UsIHtzZWxlY3RlZEJ5VXNlcn0pOwotICAgICAgICB9
CisgICAgICAgIGlmICghc3VwcHJlc3NPblNlbGVjdCAmJiB0aGlzLm9uc2VsZWN0KQorICAgICAg
ICAgICAgdGhpcy5vbnNlbGVjdCh0aGlzLCBzZWxlY3RlZEJ5VXNlcik7CiAKICAgICAgICAgdHJl
ZU91dGxpbmUucHJvY2Vzc2luZ1NlbGVjdGlvbkNoYW5nZSA9IGZhbHNlOwogCkBAIC01NzEsMTcg
KzU0MywxMCBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdGhpcy5zZWxlY3Rl
ZCA9IGZhbHNlOwotICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQg
PSBudWxsOwotCi0gICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCi0gICAgICAgICAgICB0
aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKTsKLQotICAgICAg
ICBpZiAoIXN1cHByZXNzT25EZXNlbGVjdCkgewotICAgICAgICAgICAgaWYgKHRoaXMub25kZXNl
bGVjdCkKLSAgICAgICAgICAgICAgICB0aGlzLm9uZGVzZWxlY3QodGhpcyk7CisgICAgICAgIHRo
aXMudHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbChudWxsLCBzdXBwcmVzc09u
RGVzZWxlY3QpOwogCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5UcmVlT3V0bGluZS5FdmVudC5TZWxlY3Rpb25EaWRDaGFuZ2UpOwotICAg
ICAgICB9CisgICAgICAgIGlmICghc3VwcHJlc3NPbkRlc2VsZWN0ICYmIHRoaXMub25kZXNlbGVj
dCkKKyAgICAgICAgICAgIHRoaXMub25kZXNlbGVjdCh0aGlzKTsKIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IDIxYWMzYzIyN2RkNjMxZGU2ZjM3OTgy
N2ZjMTg3ODE1YzkyYzFjOTYuLjc5OGQyZWUzOGI1NDgzNGY2ZGQ4ODZiZGIyNzkwNWFmMTI5Zjhm
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAxMywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNiBAQCBXSS5UcmVl
T3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNv
bnRleHRtZW51LmJpbmQodGhpcykpOwogCiAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAg
ICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fY2hp
bGRyZW5MaXN0Tm9kZSA9IHRoaXMuZWxlbWVudDsKICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0
Tm9kZS5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50cyA9
IFtdOwpAQCAtNTUsNiArNTQsMTMgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGlu
ZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9jdXN0b21JbmRlbnQgPSBmYWxzZTsK
ICAgICAgICAgdGhpcy5fc2VsZWN0YWJsZSA9IHNlbGVjdGFibGU7CiAKKyAgICAgICAgdGhpcy5f
Y2FjaGVkTnVtYmVyT2ZEZXNjZW5kZW50cyA9IDA7CisgICAgICAgIHRoaXMuX3NlbGVjdGlvbkNv
bnRyb2xsZXIgPSBuZXcgV0kuU2VsZWN0aW9uQ29udHJvbGxlcih0aGlzKTsKKyAgICAgICAgdGhp
cy5fdHJlZUVsZW1lbnRJbmRleENhY2hlID0gbmV3IE1hcDsKKworICAgICAgICB0aGlzLl9pdGVt
V2FzU2VsZWN0ZWRCeVVzZXIgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0U2Vs
ZWN0aW9uRGlkQ2hhbmdlRXZlbnQgPSBmYWxzZTsKKwogICAgICAgICB0aGlzLl92aXJ0dWFsaXpl
ZFZpc2libGVUcmVlRWxlbWVudHMgPSBudWxsOwogICAgICAgICB0aGlzLl92aXJ0dWFsaXplZEF0
dGFjaGVkVHJlZUVsZW1lbnRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRTY3Jv
bGxDb250YWluZXIgPSBudWxsOwpAQCAtNjQsNiArNzAsNyBAQCBXSS5UcmVlT3V0bGluZSA9IGNs
YXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fY2hpbGRy
ZW5MaXN0Tm9kZS50YWJJbmRleCA9IDA7CiAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUu
YWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3RyZWVLZXlEb3duLmJpbmQodGhpcyks
IHRydWUpOworICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKIAogICAgICAg
ICBXSS5UcmVlT3V0bGluZS5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQoKTsKIApAQCAtNzMs
NiArODAsMjggQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKKyAgICBnZXQgYWxsb3dzTXVsdGlwbGVTZWxlY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkNvbnRyb2xsZXIuYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb247CisgICAgfQorCisgICAgc2V0IGFsbG93c011bHRpcGxlU2Vs
ZWN0aW9uKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyLmFs
bG93c011bHRpcGxlU2VsZWN0aW9uID0gZmxhZzsKKyAgICB9CisKKyAgICBnZXQgc2VsZWN0ZWRU
cmVlRWxlbWVudCgpCisgICAgeworICAgICAgICBsZXQgc2VsZWN0ZWRJbmRleCA9IHRoaXMuX3Nl
bGVjdGlvbkNvbnRyb2xsZXIubGFzdFNlbGVjdGVkSXRlbTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3RyZWVFbGVtZW50QXRJbmRleChzZWxlY3RlZEluZGV4KSB8fCBudWxsOworICAgIH0KKworICAg
IHNldCBzZWxlY3RlZFRyZWVFbGVtZW50KHRyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAgbGV0
IGluZGV4ID0gdGhpcy5faW5kZXhPZlRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKKyAgICAgICAg
dGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5zZWxlY3RJdGVtKGluZGV4KTsKKyAgICB9CisKICAg
ICBnZXQgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oaWRkZW47CkBAIC0y
NDIsNiArMjcxLDExIEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgICAgICBpZiAoaXNGaXJzdENoaWxkICYmIHRoaXMuZXhwYW5kZWQp
CiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOworCisgICAgICAgIGlmICh0aGlzLmFsbG93c011
bHRpcGxlU2VsZWN0aW9uKSB7CisgICAgICAgICAgICBsZXQgaW5zZXJ0aW9uSW5kZXggPSB0aGlz
Ll9pbmRleE9mVHJlZUVsZW1lbnQoY2hpbGQucHJldmlvdXNTaWJsaW5nKSB8fCAwOworICAgICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS5fc2VsZWN0aW9uQ29udHJvbGxlci5kaWRJbnNlcnRJdGVt
KGluc2VydGlvbkluZGV4KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJlbW92ZUNoaWxkQXRJ
bmRleChjaGlsZEluZGV4LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGlu
ZykKQEAgLTI3Miw2ICszMDYsNyBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5l
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICh0cmVlT3V0bGluZSkgewogICAgICAgICAg
ICAgdHJlZU91dGxpbmUuX2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsKICAgICAgICAgICAgIHRy
ZWVPdXRsaW5lLl9mb3JnZXRDaGlsZHJlblJlY3Vyc2l2ZShjaGlsZCk7CisgICAgICAgICAgICB0
cmVlT3V0bGluZS5fc2VsZWN0aW9uQ29udHJvbGxlci5kaWRSZW1vdmVJdGVtKGNoaWxkSW5kZXgp
OwogICAgICAgICB9CiAKICAgICAgICAgY2hpbGQuX2RldGFjaCgpOwpAQCAtMzc4LDYgKzQxMyw5
IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgIF9yZW1lbWJlclRyZWVFbGVtZW50KGVsZW1lbnQpCiAgICAgeworICAgICAgICB0aGlz
Ll90cmVlRWxlbWVudEluZGV4Q2FjaGUuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fY2FjaGVkTnVt
YmVyT2ZEZXNjZW5kZW50cysrOworCiAgICAgICAgIGlmICghdGhpcy5fa25vd25UcmVlRWxlbWVu
dHNbZWxlbWVudC5pZGVudGlmaWVyXSkKICAgICAgICAgICAgIHRoaXMuX2tub3duVHJlZUVsZW1l
bnRzW2VsZW1lbnQuaWRlbnRpZmllcl0gPSBbXTsKIApAQCAtMzkyLDYgKzQzMCw5IEBAIFdJLlRy
ZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9m
b3JnZXRUcmVlRWxlbWVudChlbGVtZW50KQogICAgIHsKKyAgICAgICAgdGhpcy5fdHJlZUVsZW1l
bnRJbmRleENhY2hlLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX2NhY2hlZE51bWJlck9mRGVzY2Vu
ZGVudHMtLTsKKwogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID09PSBlbGVt
ZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmRlc2VsZWN0KHRydWUpOwogICAgICAgICAgICAg
dGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKQEAgLTUyMywyNCArNTY0LDE1IEBAIFdJ
LlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCB8fCBl
dmVudC5zaGlmdEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkpCisgICAgICAg
IGlmICghdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50IHx8IGV2ZW50LmNvbW1hbmRPckNvbnRyb2xL
ZXkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbGV0IGlzUlRMID0gV0kucmVzb2x2
ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTDsKIAogICAgICAg
ICB2YXIgaGFuZGxlZCA9IGZhbHNlOwogICAgICAgICB2YXIgbmV4dFNlbGVjdGVkRWxlbWVudDsK
LSAgICAgICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIgJiYgIWV2ZW50LmFsdEtl
eSkgewotICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVl
RWxlbWVudC50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQodHJ1ZSk7Ci0gICAgICAgICAgICB3
aGlsZSAobmV4dFNlbGVjdGVkRWxlbWVudCAmJiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3Rh
YmxlKQotICAgICAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSBuZXh0U2VsZWN0ZWRF
bGVtZW50LnRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudCh0cnVlKTsKLSAgICAgICAgICAgIGhh
bmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOwotICAgICAgICB9IGVs
c2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIiAmJiAhZXZlbnQuYWx0S2V5KSB7
Ci0gICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVt
ZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KHRydWUpOwotICAgICAgICAgICAgd2hpbGUgKG5l
eHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKLSAg
ICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVudC50
cmF2ZXJzZU5leHRUcmVlRWxlbWVudCh0cnVlKTsKLSAgICAgICAgICAgIGhhbmRsZWQgPSBuZXh0
U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOwotICAgICAgICB9IGVsc2UgaWYgKCghaXNS
VEwgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkxlZnQiKSB8fCAoaXNSVEwgJiYgZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIlJpZ2h0IikpIHsKKworICAgICAgICBpZiAoKCFpc1JUTCAmJiBl
dmVudC5rZXlJZGVudGlmaWVyID09PSAiTGVmdCIpIHx8IChpc1JUTCAmJiBldmVudC5rZXlJZGVu
dGlmaWVyID09PSAiUmlnaHQiKSkgewogICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVl
RWxlbWVudC5leHBhbmRlZCkgewogICAgICAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpCiAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5jb2xsYXBzZVJlY3Vy
c2l2ZWx5KCk7CkBAIC01NjMsNyArNTk1LDEyIEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJl
ZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1
ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0No
aWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgaWYgKCF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuZXhwYW5kZWQpIHsKKyAgICAgICAgICAg
ICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZGVkKSB7CisgICAgICAgICAg
ICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQu
Y2hpbGRyZW5bMF07CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0U2VsZWN0ZWRFbGVt
ZW50ICYmICFuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdGFibGUpCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVudC5uZXh0U2li
bGluZzsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IG5leHRTZWxlY3RlZEVsZW1lbnQg
PyB0cnVlIDogZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LmFsdEtleSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRSZWN1cnNpdmVseSgpOwogICAgICAgICAgICAgICAgICAg
ICBlbHNlCkBAIC01ODcsNiArNjI0LDkgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0
bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnRy
ZWVPdXRsaW5lLm9uc3BhY2UodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KTsKICAgICAgICAgfQog
CisgICAgICAgIGlmICghaGFuZGxlZCkKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLl9zZWxl
Y3Rpb25Db250cm9sbGVyLmhhbmRsZUtleURvd24oZXZlbnQpOworCiAgICAgICAgIGlmIChuZXh0
U2VsZWN0ZWRFbGVtZW50KSB7CiAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50LnJldmVh
bCgpOwogICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3QoZmFsc2UsIHRydWUp
OwpAQCAtNzU3LDggKzc5Nyw4MSBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5l
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl92aXJ0dWFsaXplZFNjcm9sbENv
bnRhaW5lci5zY3JvbGxUb3AgPSAoZmlyc3RJdGVtICsgZXh0cmFSb3dzKSAqIHRoaXMuX3ZpcnR1
YWxpemVkVHJlZUl0ZW1IZWlnaHQ7CiAgICAgfQogCisgICAgLy8gU2VsZWN0aW9uQ29udHJvbGxl
ciBkZWxlZ2F0ZQorCisgICAgc2VsZWN0aW9uQ29udHJvbGxlck51bWJlck9mSXRlbXMoY29udHJv
bGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWROdW1iZXJPZkRlc2NlbmRl
bnRzOworICAgIH0KKworICAgIHNlbGVjdGlvbkNvbnRyb2xsZXJTZWxlY3Rpb25EaWRDaGFuZ2Uo
Y29udHJvbGxlciwgZGVzZWxlY3RlZEl0ZW1zLCBzZWxlY3RlZEl0ZW1zKQorICAgIHsKKyAgICAg
ICAgZm9yIChsZXQgaW5kZXggb2YgZGVzZWxlY3RlZEl0ZW1zKSB7CisgICAgICAgICAgICBsZXQg
dHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEF0SW5kZXgoaW5kZXgpOworICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQsICJNaXNzaW5nIFRyZWVFbGVtZW50IGZvciBk
ZXNlbGVjdGVkIGluZGV4ICIgKyBpbmRleCk7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQp
CisgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoInNlbGVjdGVkIik7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpbmRleCBv
ZiBzZWxlY3RlZEl0ZW1zKSB7CisgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90
cmVlRWxlbWVudEF0SW5kZXgoaW5kZXgpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHJl
ZUVsZW1lbnQsICJNaXNzaW5nIFRyZWVFbGVtZW50IGZvciBzZWxlY3RlZCBpbmRleCAiICsgaW5k
ZXgpOworICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHRyZWVF
bGVtZW50Lmxpc3RJdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25EaWRDaGFuZ2VFdmVudCgpOwor
ICAgIH0KKworICAgIHNlbGVjdGlvbkNvbnRyb2xsZXJOZXh0U2VsZWN0YWJsZUluZGV4KGNvbnRy
b2xsZXIsIGluZGV4KQorICAgIHsKKyAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy5fdHJl
ZUVsZW1lbnRBdEluZGV4KGluZGV4KTsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKKyAgICAg
ICAgICAgIHJldHVybiBOYU47CisKKyAgICAgICAgY29uc3Qgc2tpcFVucmV2ZWFsZWQgPSB0cnVl
OworICAgICAgICBjb25zdCBkb250UG9wdWxhdGUgPSB0cnVlOworCisgICAgICAgIHdoaWxlICh0
cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBVbnJl
dmVhbGVkLCBudWxsLCBkb250UG9wdWxhdGUpKSB7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1l
bnQuc2VsZWN0YWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhPZlRyZWVF
bGVtZW50KHRyZWVFbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBOYU47Cisg
ICAgfQorCisgICAgc2VsZWN0aW9uQ29udHJvbGxlclByZXZpb3VzU2VsZWN0YWJsZUluZGV4KGNv
bnRyb2xsZXIsIGluZGV4KQorICAgIHsKKyAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy5f
dHJlZUVsZW1lbnRBdEluZGV4KGluZGV4KTsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKKyAg
ICAgICAgICAgIHJldHVybiBOYU47CisKKyAgICAgICAgY29uc3Qgc2tpcFVucmV2ZWFsZWQgPSB0
cnVlOworICAgICAgICBjb25zdCBkb250UG9wdWxhdGUgPSB0cnVlOworCisgICAgICAgIHdoaWxl
ICh0cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50LnRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudChz
a2lwVW5yZXZlYWxlZCwgbnVsbCwgZG9udFBvcHVsYXRlKSkgeworICAgICAgICAgICAgaWYgKHRy
ZWVFbGVtZW50LnNlbGVjdGFibGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4
T2ZUcmVlRWxlbWVudCh0cmVlRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
TmFOOworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCisgICAgc2VsZWN0VHJlZUVsZW1lbnRJ
bnRlcm5hbCh0cmVlRWxlbWVudCwgc3VwcHJlc3NOb3RpZmljYXRpb24gPSBmYWxzZSwgc2VsZWN0
ZWRCeVVzZXIgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2l0ZW1XYXNTZWxlY3RlZEJ5
VXNlciA9IHNlbGVjdGVkQnlVc2VyOworICAgICAgICB0aGlzLl9zdXBwcmVzc05leHRTZWxlY3Rp
b25EaWRDaGFuZ2VFdmVudCA9IHN1cHByZXNzTm90aWZpY2F0aW9uOworCisgICAgICAgIGlmICh0
aGlzLmFsbG93c1JlcGVhdFNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPT09
IHRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkRpZENo
YW5nZUV2ZW50KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKKyAgICB9CisKICAgICB0cmVl
RWxlbWVudEZyb21FdmVudChldmVudCkKICAgICB7CiAgICAgICAgIGxldCBzY3JvbGxDb250YWlu
ZXIgPSB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudDsKQEAgLTg1NSw2ICs5NjgsOTMgQEAgV0ku
VHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQp
OwogICAgICAgICB0aGlzLnBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50LCB0
cmVlRWxlbWVudCk7CiAgICAgfQorCisgICAgX2hhbmRsZU1vdXNlRG93bihldmVudCkKKyAgICB7
CisgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMudHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZl
bnQpOworICAgICAgICBpZiAoIXRyZWVFbGVtZW50IHx8ICF0cmVlRWxlbWVudC5zZWxlY3RhYmxl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0cmVlRWxlbWVudC5pc0V2ZW50
V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KSkgeworICAgICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdHJlZUVsZW1lbnQuY2FuU2VsZWN0T25Nb3VzZURvd24oZXZlbnQpKSB7CisgICAgICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5faW5kZXhPZlRyZWVFbGVtZW50KHRyZWVF
bGVtZW50KTsKKyAgICAgICAgaWYgKGlzTmFOKGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyLmhhbmRsZUl0ZW1Nb3VzZURvd24o
aW5kZXgsIGV2ZW50KTsKKyAgICB9CisKKyAgICBfaW5kZXhPZlRyZWVFbGVtZW50KHRyZWVFbGVt
ZW50KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcHJldmlvdXNFbGVtZW50KGVsZW1lbnQpIHsK
KyAgICAgICAgICAgIGlmIChlbGVtZW50LnByZXZpb3VzU2libGluZykgeworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50LnByZXZpb3VzU2libGluZzsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50LmNoaWxkcmVuLmxhc3RWYWx1ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudCAmJiBlbGVtZW50LnBhcmVudC5yb290
ID8gbnVsbCA6IGVsZW1lbnQucGFyZW50OworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Cisg
ICAgICAgIH0KKworICAgICAgICBsZXQgaW5kZXggPSAwOworICAgICAgICBsZXQgY3VycmVudCA9
IHRyZWVFbGVtZW50OworICAgICAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICAgICAgbGV0
IGNsb3Nlc3RJbmRleCA9IHRoaXMuX3RyZWVFbGVtZW50SW5kZXhDYWNoZS5nZXQoY3VycmVudCk7
CisgICAgICAgICAgICBpZiAoIWlzTmFOKGNsb3Nlc3RJbmRleCkpIHsKKyAgICAgICAgICAgICAg
ICBpbmRleCArPSBjbG9zZXN0SW5kZXg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2aW91c0VsZW1lbnQoY3VycmVudCk7
CisgICAgICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgICAgICBpbmRleCsrOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl90cmVlRWxlbWVudEluZGV4Q2FjaGUuaGFzKHRy
ZWVFbGVtZW50KSkKKyAgICAgICAgICAgIHRoaXMuX3RyZWVFbGVtZW50SW5kZXhDYWNoZS5zZXQo
dHJlZUVsZW1lbnQsIGluZGV4KTsKKworICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorCisg
ICAgX3RyZWVFbGVtZW50QXRJbmRleChpbmRleCkKKyAgICB7CisgICAgICAgIGNvbnN0IHNraXBV
bnJldmVhbGVkID0gZmFsc2U7CisgICAgICAgIGNvbnN0IHN0YXlXaXRoaW4gPSBudWxsOworICAg
ICAgICBjb25zdCBkb250UG9wdWxhdGUgPSB0cnVlOworCisgICAgICAgIGxldCBjdXJyZW50ID0g
MDsKKyAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy5jaGlsZHJlblswXTsKKyAgICAgICAg
d2hpbGUgKHRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudCA9PT0gaW5kZXgp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OworCisgICAgICAgICAgICB0cmVl
RWxlbWVudCA9IHRyZWVFbGVtZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBVbnJldmVh
bGVkLCBzdGF5V2l0aGluLCBkb250UG9wdWxhdGUpOworICAgICAgICAgICAgKytjdXJyZW50Owor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgX2Rpc3BhdGNo
U2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQoKQorICAgIHsKKyAgICAgICAgbGV0IHNlbGVjdGVkQnlV
c2VyID0gdGhpcy5faXRlbVdhc1NlbGVjdGVkQnlVc2VyOworICAgICAgICB0aGlzLl9pdGVtV2Fz
U2VsZWN0ZWRCeVVzZXIgPSBmYWxzZTsKKworICAgICAgICBpZiAodGhpcy5fc3VwcHJlc3NOZXh0
U2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX3N1cHByZXNzTmV4
dFNlbGVjdGlvbkRpZENoYW5nZUV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UcmVl
T3V0bGluZS5FdmVudC5TZWxlY3Rpb25EaWRDaGFuZ2UsIHtzZWxlY3RlZEJ5VXNlcn0pOworICAg
IH0KIH07CiAKIFdJLlRyZWVPdXRsaW5lLl9zdHlsZUVsZW1lbnQgPSBudWxsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355830</attachid>
            <date>2018-11-27 17:52:17 -0800</date>
            <delta_ts>2018-11-27 17:56:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191483-20181127175213.patch</filename>
            <type>text/plain</type>
            <size>24837</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
ZjkyM2JkYmYxNDg2ODM5ZGMzY2IyYWZmYTM1OTViM2EzOGYyYTE2Li4yMDMwNDc0OGMxZTdhMzY5
YWI1YWVkNjhhZWY1NGRlZTIxMjVhOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxOC0xMS0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVHJlZU91dGxpbmUgc2hvdWxkIHJlLXVzZSBtdWx0
aXBsZS1zZWxlY3Rpb24gbG9naWMgZnJvbSBUYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NTk1MzMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgVHJlZU91dGxpbmUgdG8gdXNlIFNlbGVjdGlvbkNvbnRyb2xsZXIuIEFkb3B0aW5n
IFNlbGVjdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgaW4gVHJlZU91dGxpbmUgaXMgbm90IGFzIHN0
cmFpZ2h0Zm9yd2FyZCBhcyBpdCB3YXMgaW4gVGFibGUuIFNlbGVjdGVkIGl0ZW1zCisgICAgICAg
IGFyZSB0cmFja2VkIGJ5IGluZGV4LCBhbmQgVHJlZUVsZW1lbnQgbGFja3MgYW4gZXhwbGljaXQg
aW5kZXguIEFzIGEgY29uc2VxdWVuY2UKKyAgICAgICAgVHJlZUVsZW1lbnQgaW5kZXhlcyBhcmUg
Y2FsY3VhbHRlZCBhcyBuZWVkZWQgYW5kIGNhY2hlZC4gVGhlIGNhY2hlIGlzIGNsZWFyZWQKKyAg
ICAgICAgd2hlbmV2ZXIgYW4gZWxlbWVudCBpcyBhZGRlZCBvciByZW1vdmVkLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzOgorICAg
ICAgICAoV0kuU2VsZWN0aW9uQ29udHJvbGxlci5wcm90b3R5cGUuZGlkSW5zZXJ0SXRlbSk6Cisg
ICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVyLnByb3RvdHlwZS5kaWRSZW1vdmVJdGVtKToK
KyAgICAgICAgKFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUtleURvd24p
OgorICAgICAgICBEcml2ZS1ieSBzeW50YXggZXJyb3IgZml4LgorICAgICAgICAoV0kuU2VsZWN0
aW9uQ29udHJvbGxlci5wcm90b3R5cGUuX2FkanVzdEluZGV4ZXNBZnRlcik6CisgICAgICAgIChX
SS5TZWxlY3Rpb25Db250cm9sbGVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUu
Y2FuU2VsZWN0T25Nb3VzZURvd24pOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlLnNlbGVjdE9uTW91c2VEb3duKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXSS5ET01UcmVlT3V0bGluZS5w
cm90b3R5cGUuX29ubW91c2Vkb3duKToKKyAgICAgICAgSXRlbSBzZWxlY3Rpb24gaXMgbm93IGhh
bmRsZWQgYnkgU2VsZWN0aW9uQ29udHJvbGxlci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuU2hhZGVyUHJv
Z3JhbVRyZWVFbGVtZW50LnByb3RvdHlwZS5jYW5TZWxlY3RPbk1vdXNlRG93bik6CisgICAgICAg
IChXSS5TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdE9uTW91c2VEb3du
KTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQu
anM6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUuY2FuU2VsZWN0T25Nb3VzZURv
d24pOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hdHRhY2gpOgorICAgICAg
ICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdCk6CisgICAgICAgIChXSS5UcmVlRWxl
bWVudC5wcm90b3R5cGUuZGVzZWxlY3QpOgorICAgICAgICBSb3V0ZSBpdGVtIHNlbGVjdGlvbiB0
aHJvdWdoIHRoZSBwYXJlbnQgVHJlZU91dGxpbmUsIGluIG9yZGVyIHRvIGdvIHRob3VnaAorICAg
ICAgICB0aGUgVHJlZU91dGxpbmUncyBTZWxlY3Rpb25Db250cm9sbGVyLgorCisgICAgICAgIChX
SS5UcmVlRWxlbWVudC50cmVlRWxlbWVudE1vdXNlRG93bik6IERlbGV0ZWQuCisgICAgICAgIE1v
dmVkIGhhbmRsZXIgdG8gVHJlZU91dGxpbmUsIHdoaWNoIG93bnMgdGhlIFNlbGVjdGlvbkNvbnRy
b2xsZXIgdGhhdAorICAgICAgICBuZWVkcyB0byByZXNwb25kIHRvIG1vdXNlIGV2ZW50cy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
SS5UcmVlT3V0bGluZSk6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5wcm90b3R5cGUuZ2V0IGFs
bG93c011bHRpcGxlU2VsZWN0aW9uKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5zZXQgYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24pOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUu
cHJvdG90eXBlLmdldCBzZWxlY3RlZFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLlRyZWVPdXRs
aW5lLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5UcmVl
T3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUu
cHJvdG90eXBlLnJlbW92ZUNoaWxkQXRJbmRleCk6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5w
cm90b3R5cGUuX3JlbWVtYmVyVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUu
cHJvdG90eXBlLl9mb3JnZXRUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5w
cm90b3R5cGUuX3RyZWVLZXlEb3duKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5zZWxlY3Rpb25Db250cm9sbGVyTnVtYmVyT2ZJdGVtcyk6CisgICAgICAgIChXSS5UcmVlT3V0
bGluZS5wcm90b3R5cGUuc2VsZWN0aW9uQ29udHJvbGxlclNlbGVjdGlvbkRpZENoYW5nZSk6Cisg
ICAgICAgIChXSS5UcmVlT3V0bGluZS5wcm90b3R5cGUuc2VsZWN0aW9uQ29udHJvbGxlck5leHRT
ZWxlY3RhYmxlSW5kZXgpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnNlbGVj
dGlvbkNvbnRyb2xsZXJQcmV2aW91c1NlbGVjdGFibGVJbmRleCk6CisgICAgICAgIChXSS5UcmVl
T3V0bGluZS5wcm90b3R5cGUuc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbCk6CisgICAgICAgIChX
SS5UcmVlT3V0bGluZS5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQuX2luZGV4T2ZUcmVlRWxl
bWVudC5wcmV2aW91c0VsZW1lbnQpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUuX2dlbmVyYXRl
U3R5bGVSdWxlc0lmTmVlZGVkKToKKwogMjAxOC0xMS0yNyAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9y
IGZvcmNpbmcgY29sb3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rp
b25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcwppbmRleCBhYjI0MTdiNTc5NTEyOTMxYmIw
ZWM5YjdiNTI0N2E1ZWNlNzkzZDNmLi5kZGZiZjUzNDU2YTEyMGRkNTUxOWNlMjg2OWZkMGFjYjVl
M2IzMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKQEAg
LTE5MiwxNSArMTkyLDE3IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxlY3Rp
b25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5k
ZXhlcy5jbGVhcigpOwogICAgIH0KIAorICAgIGRpZEluc2VydEl0ZW0oaW5kZXgpCisgICAgewor
ICAgICAgICB0aGlzLl9hZGp1c3RJbmRleGVzQWZ0ZXIoaW5kZXggLSAxLCAxKTsKKyAgICB9CisK
ICAgICBkaWRSZW1vdmVJdGVtKGluZGV4KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuaGFzU2Vs
ZWN0ZWRJdGVtKGluZGV4KSkKICAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RJdGVtKGluZGV4KTsK
IAotICAgICAgICB3aGlsZSAoaW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4ZXMuaW5kZXhHcmVh
dGVyVGhhbihpbmRleCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhlcy5kZWxl
dGUoaW5kZXgpOwotICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVzLmFkZChpbmRleCAt
IDEpOwotICAgICAgICB9CisgICAgICAgIHRoaXMuX2FkanVzdEluZGV4ZXNBZnRlcihpbmRleCwg
LTEpOwogICAgIH0KIAogICAgIGhhbmRsZUtleURvd24oZXZlbnQpCkBAIC0yMDgsNyArMjEwLDcg
QEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLm51bWJlck9mSXRlbXMpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gImEiICYmIGV2
ZW50LmNvbW1hbmRPckNvbnRyb2xLZXkoKSkgeworICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAi
YSIgJiYgZXZlbnQuY29tbWFuZE9yQ29udHJvbEtleSkgewogICAgICAgICAgICAgdGhpcy5zZWxl
Y3RBbGwoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zNzIsNCAr
Mzc0LDEyIEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxlY3Rpb25Db250cm9s
bGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gaW5kZXhl
cy5kaWZmZXJlbmNlKG9sZFNlbGVjdGVkSW5kZXhlcyk7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRl
LnNlbGVjdGlvbkNvbnRyb2xsZXJTZWxlY3Rpb25EaWRDaGFuZ2UodGhpcywgZGVzZWxlY3RlZEl0
ZW1zLCBzZWxlY3RlZEl0ZW1zKTsKICAgICB9CisKKyAgICBfYWRqdXN0SW5kZXhlc0FmdGVyKGlu
ZGV4LCBkZWx0YSkKKyAgICB7CisgICAgICAgIHdoaWxlIChpbmRleCA9IHRoaXMuX3NlbGVjdGVk
SW5kZXhlcy5pbmRleEdyZWF0ZXJUaGFuKGluZGV4KSkgeworICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRJbmRleGVzLmRlbGV0ZShpbmRleCk7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZElu
ZGV4ZXMuYWRkKGluZGV4ICsgZGVsdGEpOworICAgICAgICB9CisgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVt
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUVsZW1lbnQuanMKaW5kZXggNzVlNzcyMTMxMGU5ZGVjYTUzMTFmZjE3ZmYyNTM3ZTU0NmJjNzll
Yi4uNmM5N2EwYTRjNDlmZWU4M2UwN2U5ZmNmZjE4MjExOWIyYjhmZWI0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUVsZW1lbnQuanMKQEAgLTY2OSwxNiArNjY5LDE2IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xh
c3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBzZWxlY3RPbk1vdXNlRG93bihldmVudCkKKyAgICBjYW5TZWxl
Y3RPbk1vdXNlRG93bihldmVudCkKICAgICB7Ci0gICAgICAgIHN1cGVyLnNlbGVjdE9uTW91c2VE
b3duKGV2ZW50KTsKLQogICAgICAgICBpZiAodGhpcy5fZWRpdGluZykKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBQcmV2ZW50IHNl
bGVjdGluZyB0aGUgbmVhcmVzdCB3b3JkIG9uIGRvdWJsZSBjbGljay4KICAgICAgICAgaWYgKGV2
ZW50LmRldGFpbCA+PSAyKQotICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBvbmRibGNsaWNrKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwppbmRleCA0YWQ0MzJl
MDlmNTdjNmU2Y2FlNGUyZDU3ZDM1YmVmYjhhNzQwN2NlLi5kNWVhYTE2MWY4YWZhNDkxMmJjNWNi
ZDU0NDljYTUyYjlkYTU0OGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwpAQCAtMjk4LDggKzI5
OCw2IEBAIFdJLkRPTVRyZWVPdXRsaW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBX
SS5UcmVlT3V0bGluZQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIGVsZW1lbnQuc2VsZWN0KCk7CiAg
ICAgfQogCiAgICAgX29ubW91c2Vtb3ZlKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3Jh
bVRyZWVFbGVtZW50LmpzCmluZGV4IDkyZGE2ODJiNzFmNzVlMTViMDU3MjYwMzAwYzdjYWM1ZjVj
NTM3OWYuLmZlZjY5MTczMTY1YmVlMGRjYWVmMDM4NjI4OTRkOTY4ZDUwYjE3YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dy
YW1UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQuanMKQEAgLTQ4LDEyICs0OCw5IEBAIFdJ
LlNoYWRlclByb2dyYW1UcmVlRWxlbWVudCA9IGNsYXNzIFNoYWRlclByb2dyYW1UcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkdlbmVyYWxUCiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZW91dCIsIHRoaXMuX2hhbmRsZU1vdXNlT3V0LmJpbmQodGhpcykpOwogICAgIH0K
IAotICAgIHNlbGVjdE9uTW91c2VEb3duKGV2ZW50KQorICAgIGNhblNlbGVjdE9uTW91c2VEb3du
KGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3N0YXR1c0VsZW1lbnQuY29udGFpbnMo
ZXZlbnQudGFyZ2V0KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzdXBlci5zZWxl
Y3RPbk1vdXNlRG93bihldmVudCk7CisgICAgICAgIHJldHVybiAhdGhpcy5fc3RhdHVzRWxlbWVu
dC5jb250YWlucyhldmVudC50YXJnZXQpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVt
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVs
ZW1lbnQuanMKaW5kZXggNWMwOWEyZmYwMmE3MzM5MGExNjQ5ODAxZTU0YmNhNWQ2M2QxZmQ1Ni4u
NGU0Yzc0NGQ1NDIxY2NkMzU3NzRlOWZhYjFkZmI2ZTk3ZjhkZDYxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQu
anMKQEAgLTE4Nyw2ICsxODcsMTIgQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKICAgICB9CiAK
KyAgICBjYW5TZWxlY3RPbk1vdXNlRG93bihldmVudCkKKyAgICB7CisgICAgICAgIC8vIE92ZXJy
aWRkZW4gYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIF9maXJlRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnRyZWVP
dXRsaW5lKQpAQCAtMjM5LDcgKzI0NSw2IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVs
ZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKQog
ICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJzZWxlY3Rl
ZCIpOwogCi0gICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgV0kuVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRNb3VzZURvd24pOwogICAgICAg
ICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV0kuVHJl
ZUVsZW1lbnQudHJlZUVsZW1lbnRUb2dnbGVkKTsKICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVt
Tm9kZS5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIFdJLlRyZWVFbGVtZW50LnRyZWVFbGVt
ZW50RG91YmxlQ2xpY2tlZCk7CiAKQEAgLTI3OSwyMCArMjg0LDYgQEAgV0kuVHJlZUVsZW1lbnQg
PSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5zb29uLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdHJlZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCi0gICAgewotICAgICAgICB2YXIg
ZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7Ci0gICAgICAgIGlmICghZWxlbWVudCB8fCAh
ZWxlbWVudC50cmVlRWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RhYmxlKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChlbGVtZW50LnRyZWVFbGVtZW50Lmlz
RXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpKSB7Ci0gICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RPbk1vdXNlRG93bihldmVudCk7Ci0gICAg
fQotCiAgICAgc3RhdGljIHRyZWVFbGVtZW50VG9nZ2xlZChldmVudCkKICAgICB7CiAgICAgICAg
IGxldCBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKQEAgLTUyNiwyOSArNTE3LDExIEBA
IFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgICAgICB0cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKIAot
ICAgICAgICAvLyBQcmV2ZW50IGRpc3BhdGNoaW5nIGEgU2VsZWN0aW9uRGlkQ2hhbmdlIGV2ZW50
IGZvciB0aGUgZGVzZWxlY3RlZCBlbGVtZW50IGlmCi0gICAgICAgIC8vIGl0IHdpbGwgYmUgZGlz
cGF0Y2hlZCBmb3IgdGhlIHNlbGVjdGVkIGVsZW1lbnQuCi0gICAgICAgIGlmICghc3VwcHJlc3NP
blNlbGVjdCkKLSAgICAgICAgICAgIHN1cHByZXNzT25EZXNlbGVjdCA9IHRydWU7Ci0KLSAgICAg
ICAgbGV0IGRlc2VsZWN0ZWRFbGVtZW50ID0gdHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVu
dDsKLSAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7Ci0gICAgICAgICAgICBpZiAodHJlZU91
dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgICAgICB0cmVlT3V0bGluZS5z
ZWxlY3RlZFRyZWVFbGVtZW50LmRlc2VsZWN0KHN1cHByZXNzT25EZXNlbGVjdCk7Ci0KLSAgICAg
ICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICAgICAgdHJlZU91dGxpbmUuc2Vs
ZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXM7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9saXN0SXRl
bU5vZGUpCi0gICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQo
InNlbGVjdGVkIik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXN1cHByZXNzT25TZWxlY3Qp
IHsKLSAgICAgICAgICAgIGlmICh0aGlzLm9uc2VsZWN0KQotICAgICAgICAgICAgICAgIHRoaXMu
b25zZWxlY3QodGhpcywgc2VsZWN0ZWRCeVVzZXIpOworICAgICAgICB0aGlzLnNlbGVjdGVkID0g
dHJ1ZTsKKyAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbCh0aGlz
LCBzdXBwcmVzc09uU2VsZWN0LCBzZWxlY3RlZEJ5VXNlcik7CiAKLSAgICAgICAgICAgIHRyZWVP
dXRsaW5lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UcmVlT3V0bGluZS5FdmVudC5TZWxl
Y3Rpb25EaWRDaGFuZ2UsIHtzZWxlY3RlZEJ5VXNlcn0pOwotICAgICAgICB9CisgICAgICAgIGlm
ICghc3VwcHJlc3NPblNlbGVjdCAmJiB0aGlzLm9uc2VsZWN0KQorICAgICAgICAgICAgdGhpcy5v
bnNlbGVjdCh0aGlzLCBzZWxlY3RlZEJ5VXNlcik7CiAKICAgICAgICAgdHJlZU91dGxpbmUucHJv
Y2Vzc2luZ1NlbGVjdGlvbkNoYW5nZSA9IGZhbHNlOwogCkBAIC01NzEsMTcgKzU0NCwxMCBAQCBX
SS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOwot
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgPSBudWxsOwotCi0g
ICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCi0gICAgICAgICAgICB0aGlzLl9saXN0SXRl
bU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKTsKLQotICAgICAgICBpZiAoIXN1cHBy
ZXNzT25EZXNlbGVjdCkgewotICAgICAgICAgICAgaWYgKHRoaXMub25kZXNlbGVjdCkKLSAgICAg
ICAgICAgICAgICB0aGlzLm9uZGVzZWxlY3QodGhpcyk7CisgICAgICAgIHRoaXMudHJlZU91dGxp
bmUuc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbChudWxsLCBzdXBwcmVzc09uRGVzZWxlY3QpOwog
Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5UcmVlT3V0bGluZS5FdmVudC5TZWxlY3Rpb25EaWRDaGFuZ2UpOwotICAgICAgICB9CisgICAg
ICAgIGlmICghc3VwcHJlc3NPbkRlc2VsZWN0ICYmIHRoaXMub25kZXNlbGVjdCkKKyAgICAgICAg
ICAgIHRoaXMub25kZXNlbGVjdCh0aGlzKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
cmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVPdXRsaW5lLmpzCmluZGV4IDIxYWMzYzIyN2RkNjMxZGU2ZjM3OTgyN2ZjMTg3ODE1Yzky
YzFjOTYuLjViZjQ5OTI3ZWI2OGUwODg0YTlmZTdlYTU1MzQxMjM1YzlhNzRlYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVP
dXRsaW5lLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAx
MywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNiBAQCBXSS5UcmVlT3V0bGluZSA9IGNs
YXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRtZW51LmJp
bmQodGhpcykpOwogCiAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgdGhpcy5z
ZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9k
ZSA9IHRoaXMuZWxlbWVudDsKICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5yZW1vdmVD
aGlsZHJlbigpOwogICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50cyA9IFtdOwpAQCAtNTUs
NiArNTQsMTQgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICB0aGlzLl9jdXN0b21JbmRlbnQgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5fc2VsZWN0YWJsZSA9IHNlbGVjdGFibGU7CiAKKyAgICAgICAgdGhpcy5fY2FjaGVkTnVtYmVy
T2ZEZXNjZW5kZW50cyA9IDA7CisgICAgICAgIHRoaXMuX3NlbGVjdGlvbkNvbnRyb2xsZXIgPSBu
ZXcgV0kuU2VsZWN0aW9uQ29udHJvbGxlcih0aGlzKTsKKyAgICAgICAgdGhpcy5fdHJlZUVsZW1l
bnRJbmRleENhY2hlID0gbmV3IE1hcDsKKworICAgICAgICB0aGlzLl9pdGVtV2FzU2VsZWN0ZWRC
eVVzZXIgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc2luZ1NlbGVjdGlvbkNvbnRyb2xs
ZXJTZWxlY3Rpb25EaWRDaGFuZ2UgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0
U2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQgPSBmYWxzZTsKKwogICAgICAgICB0aGlzLl92aXJ0dWFs
aXplZFZpc2libGVUcmVlRWxlbWVudHMgPSBudWxsOwogICAgICAgICB0aGlzLl92aXJ0dWFsaXpl
ZEF0dGFjaGVkVHJlZUVsZW1lbnRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRT
Y3JvbGxDb250YWluZXIgPSBudWxsOwpAQCAtNjQsNiArNzEsNyBAQCBXSS5UcmVlT3V0bGluZSA9
IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fY2hp
bGRyZW5MaXN0Tm9kZS50YWJJbmRleCA9IDA7CiAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGUuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3RyZWVLZXlEb3duLmJpbmQodGhp
cyksIHRydWUpOworICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKIAogICAg
ICAgICBXSS5UcmVlT3V0bGluZS5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQoKTsKIApAQCAt
NzMsNiArODEsMjggQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRz
IFdJLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKKyAgICBnZXQgYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkNvbnRyb2xsZXIu
YWxsb3dzTXVsdGlwbGVTZWxlY3Rpb247CisgICAgfQorCisgICAgc2V0IGFsbG93c011bHRpcGxl
U2VsZWN0aW9uKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVy
LmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gZmxhZzsKKyAgICB9CisKKyAgICBnZXQgc2VsZWN0
ZWRUcmVlRWxlbWVudCgpCisgICAgeworICAgICAgICBsZXQgc2VsZWN0ZWRJbmRleCA9IHRoaXMu
X3NlbGVjdGlvbkNvbnRyb2xsZXIubGFzdFNlbGVjdGVkSXRlbTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3RyZWVFbGVtZW50QXRJbmRleChzZWxlY3RlZEluZGV4KSB8fCBudWxsOworICAgIH0KKwor
ICAgIHNldCBzZWxlY3RlZFRyZWVFbGVtZW50KHRyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAg
bGV0IGluZGV4ID0gdGhpcy5faW5kZXhPZlRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5zZWxlY3RJdGVtKGluZGV4KTsKKyAgICB9CisK
ICAgICBnZXQgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oaWRkZW47CkBA
IC0yNDIsNiArMjcyLDkgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRl
bmRzIFdJLk9iamVjdAogCiAgICAgICAgIGlmIChpc0ZpcnN0Q2hpbGQgJiYgdGhpcy5leHBhbmRl
ZCkKICAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7CisKKyAgICAgICAgbGV0IGluc2VydGlvbklu
ZGV4ID0gdGhpcy5faW5kZXhPZlRyZWVFbGVtZW50KGNoaWxkLnByZXZpb3VzU2libGluZykgfHwg
MDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5fc2VsZWN0aW9uQ29udHJvbGxlci5kaWRJbnNl
cnRJdGVtKGluc2VydGlvbkluZGV4KTsKICAgICB9CiAKICAgICByZW1vdmVDaGlsZEF0SW5kZXgo
Y2hpbGRJbmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCkBA
IC0yNzIsNiArMzA1LDcgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodHJlZU91dGxpbmUpIHsKICAgICAgICAgICAgIHRy
ZWVPdXRsaW5lLl9mb3JnZXRUcmVlRWxlbWVudChjaGlsZCk7CiAgICAgICAgICAgICB0cmVlT3V0
bGluZS5fZm9yZ2V0Q2hpbGRyZW5SZWN1cnNpdmUoY2hpbGQpOworICAgICAgICAgICAgdHJlZU91
dGxpbmUuX3NlbGVjdGlvbkNvbnRyb2xsZXIuZGlkUmVtb3ZlSXRlbShjaGlsZEluZGV4KTsKICAg
ICAgICAgfQogCiAgICAgICAgIGNoaWxkLl9kZXRhY2goKTsKQEAgLTM3OCw2ICs0MTIsOSBAQCBX
SS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAg
ICBfcmVtZW1iZXJUcmVlRWxlbWVudChlbGVtZW50KQogICAgIHsKKyAgICAgICAgdGhpcy5fdHJl
ZUVsZW1lbnRJbmRleENhY2hlLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX2NhY2hlZE51bWJlck9m
RGVzY2VuZGVudHMrKzsKKwogICAgICAgICBpZiAoIXRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2Vs
ZW1lbnQuaWRlbnRpZmllcl0pCiAgICAgICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tl
bGVtZW50LmlkZW50aWZpZXJdID0gW107CiAKQEAgLTM5Miw2ICs0MjksOSBAQCBXSS5UcmVlT3V0
bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfZm9yZ2V0
VHJlZUVsZW1lbnQoZWxlbWVudCkKICAgICB7CisgICAgICAgIHRoaXMuX3RyZWVFbGVtZW50SW5k
ZXhDYWNoZS5jbGVhcigpOworICAgICAgICB0aGlzLl9jYWNoZWROdW1iZXJPZkRlc2NlbmRlbnRz
LS07CisKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9PT0gZWxlbWVudCkg
ewogICAgICAgICAgICAgZWxlbWVudC5kZXNlbGVjdCh0cnVlKTsKICAgICAgICAgICAgIHRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51bGw7CkBAIC01MjMsMjQgKzU2MywxNSBAQCBXSS5UcmVl
T3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlm
IChldmVudC50YXJnZXQgIT09IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgfHwgZXZlbnQu
c2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KQorICAgICAgICBpZiAo
IXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCB8fCBldmVudC5jb21tYW5kT3JDb250cm9sS2V5KQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCBpc1JUTCA9IFdJLnJlc29sdmVkTGF5
b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEw7CiAKICAgICAgICAgdmFy
IGhhbmRsZWQgPSBmYWxzZTsKICAgICAgICAgdmFyIG5leHRTZWxlY3RlZEVsZW1lbnQ7Ci0gICAg
ICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiICYmICFldmVudC5hbHRLZXkpIHsK
LSAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KHRydWUpOwotICAgICAgICAgICAgd2hpbGUg
KG5leHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkK
LSAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVu
dC50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQodHJ1ZSk7Ci0gICAgICAgICAgICBoYW5kbGVk
ID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlm
IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIgJiYgIWV2ZW50LmFsdEtleSkgewotICAg
ICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC50
cmF2ZXJzZU5leHRUcmVlRWxlbWVudCh0cnVlKTsKLSAgICAgICAgICAgIHdoaWxlIChuZXh0U2Vs
ZWN0ZWRFbGVtZW50ICYmICFuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdGFibGUpCi0gICAgICAg
ICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQudHJhdmVy
c2VOZXh0VHJlZUVsZW1lbnQodHJ1ZSk7Ci0gICAgICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVj
dGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmICgoIWlzUlRMICYm
IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJMZWZ0IikgfHwgKGlzUlRMICYmIGV2ZW50LmtleUlk
ZW50aWZpZXIgPT09ICJSaWdodCIpKSB7CisKKyAgICAgICAgaWYgKCghaXNSVEwgJiYgZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIkxlZnQiKSB8fCAoaXNSVEwgJiYgZXZlbnQua2V5SWRlbnRpZmll
ciA9PT0gIlJpZ2h0IikpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQuZXhwYW5kZWQpIHsKICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQogICAgICAg
ICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY29sbGFwc2VSZWN1cnNpdmVs
eSgpOwpAQCAtNTYzLDcgKzU5NCwxMiBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRs
aW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5oYXNDaGlsZHJl
bikgewogICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlm
ICghdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZGVkKSB7CisgICAgICAgICAgICAgICAg
aWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRlZCkgeworICAgICAgICAgICAgICAg
ICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmNoaWxk
cmVuWzBdOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVjdGVkRWxlbWVudCAm
JiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQubmV4dFNpYmxpbmc7
CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50ID8gdHJ1
ZSA6IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChldmVudC5hbHRLZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVk
VHJlZUVsZW1lbnQuZXhwYW5kUmVjdXJzaXZlbHkoKTsKICAgICAgICAgICAgICAgICAgICAgZWxz
ZQpAQCAtNTg3LDYgKzYyMyw5IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50cmVlT3V0
bGluZS5vbnNwYWNlKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7CiAgICAgICAgIH0KIAorICAg
ICAgICBpZiAoIWhhbmRsZWQpCisgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5fc2VsZWN0aW9u
Q29udHJvbGxlci5oYW5kbGVLZXlEb3duKGV2ZW50KTsKKwogICAgICAgICBpZiAobmV4dFNlbGVj
dGVkRWxlbWVudCkgewogICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudC5yZXZlYWwoKTsK
ICAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0KGZhbHNlLCB0cnVlKTsKQEAg
LTc1Nyw4ICs3OTYsOTYgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRTY3JvbGxDb250YWlu
ZXIuc2Nyb2xsVG9wID0gKGZpcnN0SXRlbSArIGV4dHJhUm93cykgKiB0aGlzLl92aXJ0dWFsaXpl
ZFRyZWVJdGVtSGVpZ2h0OwogICAgIH0KIAorICAgIC8vIFNlbGVjdGlvbkNvbnRyb2xsZXIgZGVs
ZWdhdGUKKworICAgIHNlbGVjdGlvbkNvbnRyb2xsZXJOdW1iZXJPZkl0ZW1zKGNvbnRyb2xsZXIp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkTnVtYmVyT2ZEZXNjZW5kZW50czsK
KyAgICB9CisKKyAgICBzZWxlY3Rpb25Db250cm9sbGVyU2VsZWN0aW9uRGlkQ2hhbmdlKGNvbnRy
b2xsZXIsIGRlc2VsZWN0ZWRJdGVtcywgc2VsZWN0ZWRJdGVtcykKKyAgICB7CisgICAgICAgIHRo
aXMuX3Byb2Nlc3NpbmdTZWxlY3Rpb25Db250cm9sbGVyU2VsZWN0aW9uRGlkQ2hhbmdlID0gdHJ1
ZTsKKworICAgICAgICBmb3IgKGxldCBpbmRleCBvZiBkZXNlbGVjdGVkSXRlbXMpIHsKKyAgICAg
ICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50QXRJbmRleChpbmRleCk7
CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCwgIk1pc3NpbmcgVHJlZUVs
ZW1lbnQgZm9yIGRlc2VsZWN0ZWQgaW5kZXggIiArIGluZGV4KTsKKyAgICAgICAgICAgIGlmICh0
cmVlRWxlbWVudCkgeworICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOworICAgICAgICAgICAgICAgIGlmICghdGhp
cy5fc3VwcHJlc3NOZXh0U2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQpCisgICAgICAgICAgICAgICAg
ICAgIHRyZWVFbGVtZW50LmRlc2VsZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKGxldCBpbmRleCBvZiBzZWxlY3RlZEl0ZW1zKSB7CisgICAgICAgICAgICBs
ZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEF0SW5kZXgoaW5kZXgpOworICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQsICJNaXNzaW5nIFRyZWVFbGVtZW50IGZv
ciBzZWxlY3RlZCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50
KSB7CisgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmNsYXNzTGlz
dC5hZGQoInNlbGVjdGVkIik7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9zdXBwcmVzc05l
eHRTZWxlY3Rpb25EaWRDaGFuZ2VFdmVudCkKKyAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1l
bnQuc2VsZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9w
cm9jZXNzaW5nU2VsZWN0aW9uQ29udHJvbGxlclNlbGVjdGlvbkRpZENoYW5nZSA9IGZhbHNlOwor
CisgICAgICAgIHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQoKTsKKyAgICB9
CisKKyAgICBzZWxlY3Rpb25Db250cm9sbGVyTmV4dFNlbGVjdGFibGVJbmRleChjb250cm9sbGVy
LCBpbmRleCkKKyAgICB7CisgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVt
ZW50QXRJbmRleChpbmRleCk7CisgICAgICAgIGlmICghdHJlZUVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm4gTmFOOworCisgICAgICAgIGNvbnN0IHNraXBVbnJldmVhbGVkID0gdHJ1ZTsKKyAg
ICAgICAgY29uc3Qgc3RheVdpdGhpbiA9IG51bGw7CisgICAgICAgIGNvbnN0IGRvbnRQb3B1bGF0
ZSA9IHRydWU7CisKKyAgICAgICAgd2hpbGUgKHRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQudHJh
dmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVucmV2ZWFsZWQsIHN0YXlXaXRoaW4sIGRvbnRQb3B1
bGF0ZSkpIHsKKyAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudC5zZWxlY3RhYmxlKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9pbmRleE9mVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICB9CisKKyAgICBzZWxlY3Rpb25D
b250cm9sbGVyUHJldmlvdXNTZWxlY3RhYmxlSW5kZXgoY29udHJvbGxlciwgaW5kZXgpCisgICAg
eworICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEF0SW5kZXgoaW5k
ZXgpOworICAgICAgICBpZiAoIXRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIE5hTjsK
KworICAgICAgICBjb25zdCBza2lwVW5yZXZlYWxlZCA9IHRydWU7CisgICAgICAgIGNvbnN0IHN0
YXlXaXRoaW4gPSBudWxsOworICAgICAgICBjb25zdCBkb250UG9wdWxhdGUgPSB0cnVlOworCisg
ICAgICAgIHdoaWxlICh0cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50LnRyYXZlcnNlUHJldmlvdXNU
cmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwgc3RheVdpdGhpbiwgZG9udFBvcHVsYXRlKSkgewor
ICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnNlbGVjdGFibGUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2luZGV4T2ZUcmVlRWxlbWVudCh0cmVlRWxlbWVudCk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gTmFOOworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCisgICAg
c2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbCh0cmVlRWxlbWVudCwgc3VwcHJlc3NOb3RpZmljYXRp
b24gPSBmYWxzZSwgc2VsZWN0ZWRCeVVzZXIgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLl9wcm9jZXNzaW5nU2VsZWN0aW9uQ29udHJvbGxlclNlbGVjdGlvbkRpZENoYW5nZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9pdGVtV2FzU2VsZWN0ZWRCeVVzZXIg
PSBzZWxlY3RlZEJ5VXNlcjsKKyAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0U2VsZWN0aW9uRGlk
Q2hhbmdlRXZlbnQgPSBzdXBwcmVzc05vdGlmaWNhdGlvbjsKKworICAgICAgICBpZiAodGhpcy5h
bGxvd3NSZXBlYXRTZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID09PSB0cmVl
RWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25EaWRDaGFuZ2VF
dmVudCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5z
ZWxlY3RlZFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CisgICAgfQorCiAgICAgdHJlZUVsZW1l
bnRGcm9tRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgc2Nyb2xsQ29udGFpbmVyID0g
dGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7CkBAIC04NTUsNiArOTgyLDkzIEBAIFdJLlRyZWVP
dXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgbGV0
IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKICAg
ICAgICAgdGhpcy5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCwgdHJlZUVs
ZW1lbnQpOwogICAgIH0KKworICAgIF9oYW5kbGVNb3VzZURvd24oZXZlbnQpCisgICAgeworICAg
ICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsK
KyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCB8fCAhdHJlZUVsZW1lbnQuc2VsZWN0YWJsZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJlZUVsZW1lbnQuaXNFdmVudFdpdGhp
bkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkpIHsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IXRyZWVFbGVtZW50LmNhblNlbGVjdE9uTW91c2VEb3duKGV2ZW50KSkgeworICAgICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGxldCBpbmRleCA9IHRoaXMuX2luZGV4T2ZUcmVlRWxlbWVudCh0cmVlRWxlbWVu
dCk7CisgICAgICAgIGlmIChpc05hTihpbmRleCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5oYW5kbGVJdGVtTW91c2VEb3duKGluZGV4
LCBldmVudCk7CisgICAgfQorCisgICAgX2luZGV4T2ZUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkK
KyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHByZXZpb3VzRWxlbWVudChlbGVtZW50KSB7CisgICAg
ICAgICAgICBpZiAoZWxlbWVudC5wcmV2aW91c1NpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmc7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5jaGlsZHJlbi5sYXN0VmFsdWU7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnQgJiYgZWxlbWVudC5wYXJlbnQucm9vdCA/IG51
bGwgOiBlbGVtZW50LnBhcmVudDsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAg
ICB9CisKKyAgICAgICAgbGV0IGluZGV4ID0gMDsKKyAgICAgICAgbGV0IGN1cnJlbnQgPSB0cmVl
RWxlbWVudDsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAgIGxldCBjbG9z
ZXN0SW5kZXggPSB0aGlzLl90cmVlRWxlbWVudEluZGV4Q2FjaGUuZ2V0KGN1cnJlbnQpOworICAg
ICAgICAgICAgaWYgKCFpc05hTihjbG9zZXN0SW5kZXgpKSB7CisgICAgICAgICAgICAgICAgaW5k
ZXggKz0gY2xvc2VzdEluZGV4OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBjdXJyZW50ID0gcHJldmlvdXNFbGVtZW50KGN1cnJlbnQpOworICAg
ICAgICAgICAgaWYgKGN1cnJlbnQpCisgICAgICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghdGhpcy5fdHJlZUVsZW1lbnRJbmRleENhY2hlLmhhcyh0cmVlRWxl
bWVudCkpCisgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudEluZGV4Q2FjaGUuc2V0KHRyZWVF
bGVtZW50LCBpbmRleCk7CisKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKworICAgIF90
cmVlRWxlbWVudEF0SW5kZXgoaW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBza2lwVW5yZXZl
YWxlZCA9IGZhbHNlOworICAgICAgICBjb25zdCBzdGF5V2l0aGluID0gbnVsbDsKKyAgICAgICAg
Y29uc3QgZG9udFBvcHVsYXRlID0gdHJ1ZTsKKworICAgICAgICBsZXQgY3VycmVudCA9IDA7Cisg
ICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuY2hpbGRyZW5bMF07CisgICAgICAgIHdoaWxl
ICh0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT09IGluZGV4KQorICAg
ICAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKKworICAgICAgICAgICAgdHJlZUVsZW1l
bnQgPSB0cmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwg
c3RheVdpdGhpbiwgZG9udFBvcHVsYXRlKTsKKyAgICAgICAgICAgICsrY3VycmVudDsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIF9kaXNwYXRjaFNlbGVj
dGlvbkRpZENoYW5nZUV2ZW50KCkKKyAgICB7CisgICAgICAgIGxldCBzZWxlY3RlZEJ5VXNlciA9
IHRoaXMuX2l0ZW1XYXNTZWxlY3RlZEJ5VXNlcjsKKyAgICAgICAgdGhpcy5faXRlbVdhc1NlbGVj
dGVkQnlVc2VyID0gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNzTmV4dFNlbGVj
dGlvbkRpZENoYW5nZUV2ZW50KSB7CisgICAgICAgICAgICB0aGlzLl9zdXBwcmVzc05leHRTZWxl
Y3Rpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVHJlZU91dGxp
bmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hhbmdlLCB7c2VsZWN0ZWRCeVVzZXJ9KTsKKyAgICB9CiB9
OwogCiBXSS5UcmVlT3V0bGluZS5fc3R5bGVFbGVtZW50ID0gbnVsbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355831</attachid>
            <date>2018-11-27 17:56:55 -0800</date>
            <delta_ts>2018-11-27 18:55:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191483-20181127175650.patch</filename>
            <type>text/plain</type>
            <size>24849</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
ZjkyM2JkYmYxNDg2ODM5ZGMzY2IyYWZmYTM1OTViM2EzOGYyYTE2Li4yMDMwNDc0OGMxZTdhMzY5
YWI1YWVkNjhhZWY1NGRlZTIxMjVhOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxOC0xMS0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVHJlZU91dGxpbmUgc2hvdWxkIHJlLXVzZSBtdWx0
aXBsZS1zZWxlY3Rpb24gbG9naWMgZnJvbSBUYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NTk1MzMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgVHJlZU91dGxpbmUgdG8gdXNlIFNlbGVjdGlvbkNvbnRyb2xsZXIuIEFkb3B0aW5n
IFNlbGVjdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgaW4gVHJlZU91dGxpbmUgaXMgbm90IGFzIHN0
cmFpZ2h0Zm9yd2FyZCBhcyBpdCB3YXMgaW4gVGFibGUuIFNlbGVjdGVkIGl0ZW1zCisgICAgICAg
IGFyZSB0cmFja2VkIGJ5IGluZGV4LCBhbmQgVHJlZUVsZW1lbnQgbGFja3MgYW4gZXhwbGljaXQg
aW5kZXguIEFzIGEgY29uc2VxdWVuY2UKKyAgICAgICAgVHJlZUVsZW1lbnQgaW5kZXhlcyBhcmUg
Y2FsY3VhbHRlZCBhcyBuZWVkZWQgYW5kIGNhY2hlZC4gVGhlIGNhY2hlIGlzIGNsZWFyZWQKKyAg
ICAgICAgd2hlbmV2ZXIgYW4gZWxlbWVudCBpcyBhZGRlZCBvciByZW1vdmVkLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzOgorICAg
ICAgICAoV0kuU2VsZWN0aW9uQ29udHJvbGxlci5wcm90b3R5cGUuZGlkSW5zZXJ0SXRlbSk6Cisg
ICAgICAgIChXSS5TZWxlY3Rpb25Db250cm9sbGVyLnByb3RvdHlwZS5kaWRSZW1vdmVJdGVtKToK
KyAgICAgICAgKFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUtleURvd24p
OgorICAgICAgICBEcml2ZS1ieSBzeW50YXggZXJyb3IgZml4LgorICAgICAgICAoV0kuU2VsZWN0
aW9uQ29udHJvbGxlci5wcm90b3R5cGUuX2FkanVzdEluZGV4ZXNBZnRlcik6CisgICAgICAgIChX
SS5TZWxlY3Rpb25Db250cm9sbGVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUu
Y2FuU2VsZWN0T25Nb3VzZURvd24pOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlLnNlbGVjdE9uTW91c2VEb3duKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXSS5ET01UcmVlT3V0bGluZS5w
cm90b3R5cGUuX29ubW91c2Vkb3duKToKKyAgICAgICAgSXRlbSBzZWxlY3Rpb24gaXMgbm93IGhh
bmRsZWQgYnkgU2VsZWN0aW9uQ29udHJvbGxlci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuU2hhZGVyUHJv
Z3JhbVRyZWVFbGVtZW50LnByb3RvdHlwZS5jYW5TZWxlY3RPbk1vdXNlRG93bik6CisgICAgICAg
IChXSS5TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdE9uTW91c2VEb3du
KTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQu
anM6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUuY2FuU2VsZWN0T25Nb3VzZURv
d24pOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hdHRhY2gpOgorICAgICAg
ICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdCk6CisgICAgICAgIChXSS5UcmVlRWxl
bWVudC5wcm90b3R5cGUuZGVzZWxlY3QpOgorICAgICAgICBSb3V0ZSBpdGVtIHNlbGVjdGlvbiB0
aHJvdWdoIHRoZSBwYXJlbnQgVHJlZU91dGxpbmUsIGluIG9yZGVyIHRvIGdvIHRob3VnaAorICAg
ICAgICB0aGUgVHJlZU91dGxpbmUncyBTZWxlY3Rpb25Db250cm9sbGVyLgorCisgICAgICAgIChX
SS5UcmVlRWxlbWVudC50cmVlRWxlbWVudE1vdXNlRG93bik6IERlbGV0ZWQuCisgICAgICAgIE1v
dmVkIGhhbmRsZXIgdG8gVHJlZU91dGxpbmUsIHdoaWNoIG93bnMgdGhlIFNlbGVjdGlvbkNvbnRy
b2xsZXIgdGhhdAorICAgICAgICBuZWVkcyB0byByZXNwb25kIHRvIG1vdXNlIGV2ZW50cy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
SS5UcmVlT3V0bGluZSk6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5wcm90b3R5cGUuZ2V0IGFs
bG93c011bHRpcGxlU2VsZWN0aW9uKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5zZXQgYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24pOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUu
cHJvdG90eXBlLmdldCBzZWxlY3RlZFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLlRyZWVPdXRs
aW5lLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5UcmVl
T3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUu
cHJvdG90eXBlLnJlbW92ZUNoaWxkQXRJbmRleCk6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5w
cm90b3R5cGUuX3JlbWVtYmVyVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUu
cHJvdG90eXBlLl9mb3JnZXRUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5w
cm90b3R5cGUuX3RyZWVLZXlEb3duKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5zZWxlY3Rpb25Db250cm9sbGVyTnVtYmVyT2ZJdGVtcyk6CisgICAgICAgIChXSS5UcmVlT3V0
bGluZS5wcm90b3R5cGUuc2VsZWN0aW9uQ29udHJvbGxlclNlbGVjdGlvbkRpZENoYW5nZSk6Cisg
ICAgICAgIChXSS5UcmVlT3V0bGluZS5wcm90b3R5cGUuc2VsZWN0aW9uQ29udHJvbGxlck5leHRT
ZWxlY3RhYmxlSW5kZXgpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnNlbGVj
dGlvbkNvbnRyb2xsZXJQcmV2aW91c1NlbGVjdGFibGVJbmRleCk6CisgICAgICAgIChXSS5UcmVl
T3V0bGluZS5wcm90b3R5cGUuc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbCk6CisgICAgICAgIChX
SS5UcmVlT3V0bGluZS5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQuX2luZGV4T2ZUcmVlRWxl
bWVudC5wcmV2aW91c0VsZW1lbnQpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUuX2dlbmVyYXRl
U3R5bGVSdWxlc0lmTmVlZGVkKToKKwogMjAxOC0xMS0yNyAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9y
IGZvcmNpbmcgY29sb3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rp
b25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcwppbmRleCBhYjI0MTdiNTc5NTEyOTMxYmIw
ZWM5YjdiNTI0N2E1ZWNlNzkzZDNmLi5kZGZiZjUzNDU2YTEyMGRkNTUxOWNlMjg2OWZkMGFjYjVl
M2IzMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMKQEAg
LTE5MiwxNSArMTkyLDE3IEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxlY3Rp
b25Db250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5k
ZXhlcy5jbGVhcigpOwogICAgIH0KIAorICAgIGRpZEluc2VydEl0ZW0oaW5kZXgpCisgICAgewor
ICAgICAgICB0aGlzLl9hZGp1c3RJbmRleGVzQWZ0ZXIoaW5kZXggLSAxLCAxKTsKKyAgICB9CisK
ICAgICBkaWRSZW1vdmVJdGVtKGluZGV4KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuaGFzU2Vs
ZWN0ZWRJdGVtKGluZGV4KSkKICAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RJdGVtKGluZGV4KTsK
IAotICAgICAgICB3aGlsZSAoaW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4ZXMuaW5kZXhHcmVh
dGVyVGhhbihpbmRleCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhlcy5kZWxl
dGUoaW5kZXgpOwotICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVzLmFkZChpbmRleCAt
IDEpOwotICAgICAgICB9CisgICAgICAgIHRoaXMuX2FkanVzdEluZGV4ZXNBZnRlcihpbmRleCwg
LTEpOwogICAgIH0KIAogICAgIGhhbmRsZUtleURvd24oZXZlbnQpCkBAIC0yMDgsNyArMjEwLDcg
QEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLm51bWJlck9mSXRlbXMpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gImEiICYmIGV2
ZW50LmNvbW1hbmRPckNvbnRyb2xLZXkoKSkgeworICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAi
YSIgJiYgZXZlbnQuY29tbWFuZE9yQ29udHJvbEtleSkgewogICAgICAgICAgICAgdGhpcy5zZWxl
Y3RBbGwoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zNzIsNCAr
Mzc0LDEyIEBAIFdJLlNlbGVjdGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBTZWxlY3Rpb25Db250cm9s
bGVyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gaW5kZXhl
cy5kaWZmZXJlbmNlKG9sZFNlbGVjdGVkSW5kZXhlcyk7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRl
LnNlbGVjdGlvbkNvbnRyb2xsZXJTZWxlY3Rpb25EaWRDaGFuZ2UodGhpcywgZGVzZWxlY3RlZEl0
ZW1zLCBzZWxlY3RlZEl0ZW1zKTsKICAgICB9CisKKyAgICBfYWRqdXN0SW5kZXhlc0FmdGVyKGlu
ZGV4LCBkZWx0YSkKKyAgICB7CisgICAgICAgIHdoaWxlIChpbmRleCA9IHRoaXMuX3NlbGVjdGVk
SW5kZXhlcy5pbmRleEdyZWF0ZXJUaGFuKGluZGV4KSkgeworICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRJbmRleGVzLmRlbGV0ZShpbmRleCk7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZElu
ZGV4ZXMuYWRkKGluZGV4ICsgZGVsdGEpOworICAgICAgICB9CisgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVt
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUVsZW1lbnQuanMKaW5kZXggNzVlNzcyMTMxMGU5ZGVjYTUzMTFmZjE3ZmYyNTM3ZTU0NmJjNzll
Yi4uNmM5N2EwYTRjNDlmZWU4M2UwN2U5ZmNmZjE4MjExOWIyYjhmZWI0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUVsZW1lbnQuanMKQEAgLTY2OSwxNiArNjY5LDE2IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xh
c3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBzZWxlY3RPbk1vdXNlRG93bihldmVudCkKKyAgICBjYW5TZWxl
Y3RPbk1vdXNlRG93bihldmVudCkKICAgICB7Ci0gICAgICAgIHN1cGVyLnNlbGVjdE9uTW91c2VE
b3duKGV2ZW50KTsKLQogICAgICAgICBpZiAodGhpcy5fZWRpdGluZykKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBQcmV2ZW50IHNl
bGVjdGluZyB0aGUgbmVhcmVzdCB3b3JkIG9uIGRvdWJsZSBjbGljay4KICAgICAgICAgaWYgKGV2
ZW50LmRldGFpbCA+PSAyKQotICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBvbmRibGNsaWNrKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwppbmRleCA0YWQ0MzJl
MDlmNTdjNmU2Y2FlNGUyZDU3ZDM1YmVmYjhhNzQwN2NlLi5kNWVhYTE2MWY4YWZhNDkxMmJjNWNi
ZDU0NDljYTUyYjlkYTU0OGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwpAQCAtMjk4LDggKzI5
OCw2IEBAIFdJLkRPTVRyZWVPdXRsaW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBX
SS5UcmVlT3V0bGluZQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIGVsZW1lbnQuc2VsZWN0KCk7CiAg
ICAgfQogCiAgICAgX29ubW91c2Vtb3ZlKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3Jh
bVRyZWVFbGVtZW50LmpzCmluZGV4IDkyZGE2ODJiNzFmNzVlMTViMDU3MjYwMzAwYzdjYWM1ZjVj
NTM3OWYuLmZlZjY5MTczMTY1YmVlMGRjYWVmMDM4NjI4OTRkOTY4ZDUwYjE3YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dy
YW1UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQuanMKQEAgLTQ4LDEyICs0OCw5IEBAIFdJ
LlNoYWRlclByb2dyYW1UcmVlRWxlbWVudCA9IGNsYXNzIFNoYWRlclByb2dyYW1UcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkdlbmVyYWxUCiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZW91dCIsIHRoaXMuX2hhbmRsZU1vdXNlT3V0LmJpbmQodGhpcykpOwogICAgIH0K
IAotICAgIHNlbGVjdE9uTW91c2VEb3duKGV2ZW50KQorICAgIGNhblNlbGVjdE9uTW91c2VEb3du
KGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3N0YXR1c0VsZW1lbnQuY29udGFpbnMo
ZXZlbnQudGFyZ2V0KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzdXBlci5zZWxl
Y3RPbk1vdXNlRG93bihldmVudCk7CisgICAgICAgIHJldHVybiAhdGhpcy5fc3RhdHVzRWxlbWVu
dC5jb250YWlucyhldmVudC50YXJnZXQpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVt
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVs
ZW1lbnQuanMKaW5kZXggNWMwOWEyZmYwMmE3MzM5MGExNjQ5ODAxZTU0YmNhNWQ2M2QxZmQ1Ni4u
NGU0Yzc0NGQ1NDIxY2NkMzU3NzRlOWZhYjFkZmI2ZTk3ZjhkZDYxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnQu
anMKQEAgLTE4Nyw2ICsxODcsMTIgQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKICAgICB9CiAK
KyAgICBjYW5TZWxlY3RPbk1vdXNlRG93bihldmVudCkKKyAgICB7CisgICAgICAgIC8vIE92ZXJy
aWRkZW4gYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIF9maXJlRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnRyZWVP
dXRsaW5lKQpAQCAtMjM5LDcgKzI0NSw2IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVs
ZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKQog
ICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJzZWxlY3Rl
ZCIpOwogCi0gICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgV0kuVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRNb3VzZURvd24pOwogICAgICAg
ICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV0kuVHJl
ZUVsZW1lbnQudHJlZUVsZW1lbnRUb2dnbGVkKTsKICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVt
Tm9kZS5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIFdJLlRyZWVFbGVtZW50LnRyZWVFbGVt
ZW50RG91YmxlQ2xpY2tlZCk7CiAKQEAgLTI3OSwyMCArMjg0LDYgQEAgV0kuVHJlZUVsZW1lbnQg
PSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5zb29uLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdHJlZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCi0gICAgewotICAgICAgICB2YXIg
ZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7Ci0gICAgICAgIGlmICghZWxlbWVudCB8fCAh
ZWxlbWVudC50cmVlRWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RhYmxlKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChlbGVtZW50LnRyZWVFbGVtZW50Lmlz
RXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpKSB7Ci0gICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RPbk1vdXNlRG93bihldmVudCk7Ci0gICAg
fQotCiAgICAgc3RhdGljIHRyZWVFbGVtZW50VG9nZ2xlZChldmVudCkKICAgICB7CiAgICAgICAg
IGxldCBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKQEAgLTUyNiwyOSArNTE3LDExIEBA
IFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgICAgICB0cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKIAot
ICAgICAgICAvLyBQcmV2ZW50IGRpc3BhdGNoaW5nIGEgU2VsZWN0aW9uRGlkQ2hhbmdlIGV2ZW50
IGZvciB0aGUgZGVzZWxlY3RlZCBlbGVtZW50IGlmCi0gICAgICAgIC8vIGl0IHdpbGwgYmUgZGlz
cGF0Y2hlZCBmb3IgdGhlIHNlbGVjdGVkIGVsZW1lbnQuCi0gICAgICAgIGlmICghc3VwcHJlc3NP
blNlbGVjdCkKLSAgICAgICAgICAgIHN1cHByZXNzT25EZXNlbGVjdCA9IHRydWU7Ci0KLSAgICAg
ICAgbGV0IGRlc2VsZWN0ZWRFbGVtZW50ID0gdHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVu
dDsKLSAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7Ci0gICAgICAgICAgICBpZiAodHJlZU91
dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgICAgICB0cmVlT3V0bGluZS5z
ZWxlY3RlZFRyZWVFbGVtZW50LmRlc2VsZWN0KHN1cHByZXNzT25EZXNlbGVjdCk7Ci0KLSAgICAg
ICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICAgICAgdHJlZU91dGxpbmUuc2Vs
ZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXM7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9saXN0SXRl
bU5vZGUpCi0gICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQo
InNlbGVjdGVkIik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXN1cHByZXNzT25TZWxlY3Qp
IHsKLSAgICAgICAgICAgIGlmICh0aGlzLm9uc2VsZWN0KQotICAgICAgICAgICAgICAgIHRoaXMu
b25zZWxlY3QodGhpcywgc2VsZWN0ZWRCeVVzZXIpOworICAgICAgICB0aGlzLnNlbGVjdGVkID0g
dHJ1ZTsKKyAgICAgICAgdHJlZU91dGxpbmUuc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbCh0aGlz
LCBzdXBwcmVzc09uU2VsZWN0LCBzZWxlY3RlZEJ5VXNlcik7CiAKLSAgICAgICAgICAgIHRyZWVP
dXRsaW5lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UcmVlT3V0bGluZS5FdmVudC5TZWxl
Y3Rpb25EaWRDaGFuZ2UsIHtzZWxlY3RlZEJ5VXNlcn0pOwotICAgICAgICB9CisgICAgICAgIGlm
ICghc3VwcHJlc3NPblNlbGVjdCAmJiB0aGlzLm9uc2VsZWN0KQorICAgICAgICAgICAgdGhpcy5v
bnNlbGVjdCh0aGlzLCBzZWxlY3RlZEJ5VXNlcik7CiAKICAgICAgICAgdHJlZU91dGxpbmUucHJv
Y2Vzc2luZ1NlbGVjdGlvbkNoYW5nZSA9IGZhbHNlOwogCkBAIC01NzEsMTcgKzU0NCwxMCBAQCBX
SS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOwot
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgPSBudWxsOwotCi0g
ICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCi0gICAgICAgICAgICB0aGlzLl9saXN0SXRl
bU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKTsKLQotICAgICAgICBpZiAoIXN1cHBy
ZXNzT25EZXNlbGVjdCkgewotICAgICAgICAgICAgaWYgKHRoaXMub25kZXNlbGVjdCkKLSAgICAg
ICAgICAgICAgICB0aGlzLm9uZGVzZWxlY3QodGhpcyk7CisgICAgICAgIHRoaXMudHJlZU91dGxp
bmUuc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbChudWxsLCBzdXBwcmVzc09uRGVzZWxlY3QpOwog
Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5UcmVlT3V0bGluZS5FdmVudC5TZWxlY3Rpb25EaWRDaGFuZ2UpOwotICAgICAgICB9CisgICAg
ICAgIGlmICghc3VwcHJlc3NPbkRlc2VsZWN0ICYmIHRoaXMub25kZXNlbGVjdCkKKyAgICAgICAg
ICAgIHRoaXMub25kZXNlbGVjdCh0aGlzKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
cmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVPdXRsaW5lLmpzCmluZGV4IDIxYWMzYzIyN2RkNjMxZGU2ZjM3OTgyN2ZjMTg3ODE1Yzky
YzFjOTYuLmRhMmQyYmRkODY5MGQxNTY3ZDgzMzhmZmQ0ZTA5MTE1MGZkMGEzMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVP
dXRsaW5lLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAx
MywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNiBAQCBXSS5UcmVlT3V0bGluZSA9IGNs
YXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRtZW51LmJp
bmQodGhpcykpOwogCiAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgdGhpcy5z
ZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9k
ZSA9IHRoaXMuZWxlbWVudDsKICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5yZW1vdmVD
aGlsZHJlbigpOwogICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50cyA9IFtdOwpAQCAtNTUs
NiArNTQsMTQgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICB0aGlzLl9jdXN0b21JbmRlbnQgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5fc2VsZWN0YWJsZSA9IHNlbGVjdGFibGU7CiAKKyAgICAgICAgdGhpcy5fY2FjaGVkTnVtYmVy
T2ZEZXNjZW5kZW50cyA9IDA7CisgICAgICAgIHRoaXMuX3NlbGVjdGlvbkNvbnRyb2xsZXIgPSBu
ZXcgV0kuU2VsZWN0aW9uQ29udHJvbGxlcih0aGlzKTsKKyAgICAgICAgdGhpcy5fdHJlZUVsZW1l
bnRJbmRleENhY2hlID0gbmV3IE1hcDsKKworICAgICAgICB0aGlzLl9pdGVtV2FzU2VsZWN0ZWRC
eVVzZXIgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc2luZ1NlbGVjdGlvbkNvbnRyb2xs
ZXJTZWxlY3Rpb25EaWRDaGFuZ2UgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0
U2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQgPSBmYWxzZTsKKwogICAgICAgICB0aGlzLl92aXJ0dWFs
aXplZFZpc2libGVUcmVlRWxlbWVudHMgPSBudWxsOwogICAgICAgICB0aGlzLl92aXJ0dWFsaXpl
ZEF0dGFjaGVkVHJlZUVsZW1lbnRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRT
Y3JvbGxDb250YWluZXIgPSBudWxsOwpAQCAtNjQsNiArNzEsNyBAQCBXSS5UcmVlT3V0bGluZSA9
IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fY2hp
bGRyZW5MaXN0Tm9kZS50YWJJbmRleCA9IDA7CiAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGUuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3RyZWVLZXlEb3duLmJpbmQodGhp
cyksIHRydWUpOworICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKIAogICAg
ICAgICBXSS5UcmVlT3V0bGluZS5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQoKTsKIApAQCAt
NzMsNiArODEsMjggQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRz
IFdJLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKKyAgICBnZXQgYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkNvbnRyb2xsZXIu
YWxsb3dzTXVsdGlwbGVTZWxlY3Rpb247CisgICAgfQorCisgICAgc2V0IGFsbG93c011bHRpcGxl
U2VsZWN0aW9uKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVy
LmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gZmxhZzsKKyAgICB9CisKKyAgICBnZXQgc2VsZWN0
ZWRUcmVlRWxlbWVudCgpCisgICAgeworICAgICAgICBsZXQgc2VsZWN0ZWRJbmRleCA9IHRoaXMu
X3NlbGVjdGlvbkNvbnRyb2xsZXIubGFzdFNlbGVjdGVkSXRlbTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3RyZWVFbGVtZW50QXRJbmRleChzZWxlY3RlZEluZGV4KSB8fCBudWxsOworICAgIH0KKwor
ICAgIHNldCBzZWxlY3RlZFRyZWVFbGVtZW50KHRyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAg
bGV0IGluZGV4ID0gdGhpcy5faW5kZXhPZlRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5zZWxlY3RJdGVtKGluZGV4KTsKKyAgICB9CisK
ICAgICBnZXQgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oaWRkZW47CkBA
IC0yNDIsNiArMjcyLDkgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRl
bmRzIFdJLk9iamVjdAogCiAgICAgICAgIGlmIChpc0ZpcnN0Q2hpbGQgJiYgdGhpcy5leHBhbmRl
ZCkKICAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7CisKKyAgICAgICAgbGV0IGluc2VydGlvbklu
ZGV4ID0gdGhpcy50cmVlT3V0bGluZS5faW5kZXhPZlRyZWVFbGVtZW50KGNoaWxkLnByZXZpb3Vz
U2libGluZykgfHwgMDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5fc2VsZWN0aW9uQ29udHJv
bGxlci5kaWRJbnNlcnRJdGVtKGluc2VydGlvbkluZGV4KTsKICAgICB9CiAKICAgICByZW1vdmVD
aGlsZEF0SW5kZXgoY2hpbGRJbmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVj
dFNpYmxpbmcpCkBAIC0yNzIsNiArMzA1LDcgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVl
T3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodHJlZU91dGxpbmUpIHsKICAg
ICAgICAgICAgIHRyZWVPdXRsaW5lLl9mb3JnZXRUcmVlRWxlbWVudChjaGlsZCk7CiAgICAgICAg
ICAgICB0cmVlT3V0bGluZS5fZm9yZ2V0Q2hpbGRyZW5SZWN1cnNpdmUoY2hpbGQpOworICAgICAg
ICAgICAgdHJlZU91dGxpbmUuX3NlbGVjdGlvbkNvbnRyb2xsZXIuZGlkUmVtb3ZlSXRlbShjaGls
ZEluZGV4KTsKICAgICAgICAgfQogCiAgICAgICAgIGNoaWxkLl9kZXRhY2goKTsKQEAgLTM3OCw2
ICs0MTIsOSBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICBfcmVtZW1iZXJUcmVlRWxlbWVudChlbGVtZW50KQogICAgIHsKKyAgICAg
ICAgdGhpcy5fdHJlZUVsZW1lbnRJbmRleENhY2hlLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX2Nh
Y2hlZE51bWJlck9mRGVzY2VuZGVudHMrKzsKKwogICAgICAgICBpZiAoIXRoaXMuX2tub3duVHJl
ZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCiAgICAgICAgICAgICB0aGlzLl9rbm93blRy
ZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJdID0gW107CiAKQEAgLTM5Miw2ICs0MjksOSBA
QCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAK
ICAgICBfZm9yZ2V0VHJlZUVsZW1lbnQoZWxlbWVudCkKICAgICB7CisgICAgICAgIHRoaXMuX3Ry
ZWVFbGVtZW50SW5kZXhDYWNoZS5jbGVhcigpOworICAgICAgICB0aGlzLl9jYWNoZWROdW1iZXJP
ZkRlc2NlbmRlbnRzLS07CisKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9
PT0gZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5kZXNlbGVjdCh0cnVlKTsKICAgICAg
ICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51bGw7CkBAIC01MjMsMjQgKzU2Mywx
NSBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KQor
ICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCB8fCBldmVudC5jb21tYW5kT3JD
b250cm9sS2V5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCBpc1JUTCA9IFdJ
LnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEw7CiAK
ICAgICAgICAgdmFyIGhhbmRsZWQgPSBmYWxzZTsKICAgICAgICAgdmFyIG5leHRTZWxlY3RlZEVs
ZW1lbnQ7Ci0gICAgICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiICYmICFldmVu
dC5hbHRLZXkpIHsKLSAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNlbGVj
dGVkVHJlZUVsZW1lbnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KHRydWUpOwotICAgICAg
ICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQu
c2VsZWN0YWJsZSkKLSAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNl
bGVjdGVkRWxlbWVudC50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQodHJ1ZSk7Ci0gICAgICAg
ICAgICBoYW5kbGVkID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKLSAgICAg
ICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIgJiYgIWV2ZW50LmFs
dEtleSkgewotICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRU
cmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudCh0cnVlKTsKLSAgICAgICAgICAgIHdo
aWxlIChuZXh0U2VsZWN0ZWRFbGVtZW50ICYmICFuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdGFi
bGUpCi0gICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVs
ZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQodHJ1ZSk7Ci0gICAgICAgICAgICBoYW5kbGVk
ID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlm
ICgoIWlzUlRMICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJMZWZ0IikgfHwgKGlzUlRMICYm
IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJSaWdodCIpKSB7CisKKyAgICAgICAgaWYgKCghaXNS
VEwgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkxlZnQiKSB8fCAoaXNSVEwgJiYgZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIlJpZ2h0IikpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVj
dGVkVHJlZUVsZW1lbnQuZXhwYW5kZWQpIHsKICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuYWx0
S2V5KQogICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY29sbGFw
c2VSZWN1cnNpdmVseSgpOwpAQCAtNTYzLDcgKzU5NCwxMiBAQCBXSS5UcmVlT3V0bGluZSA9IGNs
YXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgaGFuZGxl
ZCA9IHRydWU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVu
dC5oYXNDaGlsZHJlbikgewogICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZGVkKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRlZCkgeworICAg
ICAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVF
bGVtZW50LmNoaWxkcmVuWzBdOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVj
dGVkRWxlbWVudCAmJiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQu
bmV4dFNpYmxpbmc7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRF
bGVtZW50ID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuZXhwYW5kUmVjdXJzaXZlbHkoKTsKICAgICAgICAgICAg
ICAgICAgICAgZWxzZQpAQCAtNTg3LDYgKzYyMyw5IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3Mg
VHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICBoYW5kbGVkID0g
dGhpcy50cmVlT3V0bGluZS5vbnNwYWNlKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7CiAgICAg
ICAgIH0KIAorICAgICAgICBpZiAoIWhhbmRsZWQpCisgICAgICAgICAgICBoYW5kbGVkID0gdGhp
cy5fc2VsZWN0aW9uQ29udHJvbGxlci5oYW5kbGVLZXlEb3duKGV2ZW50KTsKKwogICAgICAgICBp
ZiAobmV4dFNlbGVjdGVkRWxlbWVudCkgewogICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVu
dC5yZXZlYWwoKTsKICAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0KGZhbHNl
LCB0cnVlKTsKQEAgLTc1Nyw4ICs3OTYsOTYgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVl
T3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRT
Y3JvbGxDb250YWluZXIuc2Nyb2xsVG9wID0gKGZpcnN0SXRlbSArIGV4dHJhUm93cykgKiB0aGlz
Ll92aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0OwogICAgIH0KIAorICAgIC8vIFNlbGVjdGlvbkNv
bnRyb2xsZXIgZGVsZWdhdGUKKworICAgIHNlbGVjdGlvbkNvbnRyb2xsZXJOdW1iZXJPZkl0ZW1z
KGNvbnRyb2xsZXIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkTnVtYmVyT2ZE
ZXNjZW5kZW50czsKKyAgICB9CisKKyAgICBzZWxlY3Rpb25Db250cm9sbGVyU2VsZWN0aW9uRGlk
Q2hhbmdlKGNvbnRyb2xsZXIsIGRlc2VsZWN0ZWRJdGVtcywgc2VsZWN0ZWRJdGVtcykKKyAgICB7
CisgICAgICAgIHRoaXMuX3Byb2Nlc3NpbmdTZWxlY3Rpb25Db250cm9sbGVyU2VsZWN0aW9uRGlk
Q2hhbmdlID0gdHJ1ZTsKKworICAgICAgICBmb3IgKGxldCBpbmRleCBvZiBkZXNlbGVjdGVkSXRl
bXMpIHsKKyAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50QXRJ
bmRleChpbmRleCk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCwgIk1p
c3NpbmcgVHJlZUVsZW1lbnQgZm9yIGRlc2VsZWN0ZWQgaW5kZXggIiArIGluZGV4KTsKKyAgICAg
ICAgICAgIGlmICh0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmxp
c3RJdGVtRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOworICAgICAgICAgICAg
ICAgIGlmICghdGhpcy5fc3VwcHJlc3NOZXh0U2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQpCisgICAg
ICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LmRlc2VsZWN0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpbmRleCBvZiBzZWxlY3RlZEl0ZW1zKSB7Cisg
ICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEF0SW5kZXgoaW5k
ZXgpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQsICJNaXNzaW5nIFRy
ZWVFbGVtZW50IGZvciBzZWxlY3RlZCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgaWYg
KHRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlz
Ll9zdXBwcmVzc05leHRTZWxlY3Rpb25EaWRDaGFuZ2VFdmVudCkKKyAgICAgICAgICAgICAgICAg
ICAgdHJlZUVsZW1lbnQuc2VsZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLl9wcm9jZXNzaW5nU2VsZWN0aW9uQ29udHJvbGxlclNlbGVjdGlvbkRpZENoYW5n
ZSA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uRGlkQ2hhbmdlRXZl
bnQoKTsKKyAgICB9CisKKyAgICBzZWxlY3Rpb25Db250cm9sbGVyTmV4dFNlbGVjdGFibGVJbmRl
eChjb250cm9sbGVyLCBpbmRleCkKKyAgICB7CisgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRo
aXMuX3RyZWVFbGVtZW50QXRJbmRleChpbmRleCk7CisgICAgICAgIGlmICghdHJlZUVsZW1lbnQp
CisgICAgICAgICAgICByZXR1cm4gTmFOOworCisgICAgICAgIGNvbnN0IHNraXBVbnJldmVhbGVk
ID0gdHJ1ZTsKKyAgICAgICAgY29uc3Qgc3RheVdpdGhpbiA9IG51bGw7CisgICAgICAgIGNvbnN0
IGRvbnRQb3B1bGF0ZSA9IHRydWU7CisKKyAgICAgICAgd2hpbGUgKHRyZWVFbGVtZW50ID0gdHJl
ZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVucmV2ZWFsZWQsIHN0YXlXaXRo
aW4sIGRvbnRQb3B1bGF0ZSkpIHsKKyAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudC5zZWxlY3Rh
YmxlKQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbmRleE9mVHJlZUVsZW1lbnQodHJl
ZUVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICB9CisKKyAg
ICBzZWxlY3Rpb25Db250cm9sbGVyUHJldmlvdXNTZWxlY3RhYmxlSW5kZXgoY29udHJvbGxlciwg
aW5kZXgpCisgICAgeworICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVu
dEF0SW5kZXgoaW5kZXgpOworICAgICAgICBpZiAoIXRyZWVFbGVtZW50KQorICAgICAgICAgICAg
cmV0dXJuIE5hTjsKKworICAgICAgICBjb25zdCBza2lwVW5yZXZlYWxlZCA9IHRydWU7CisgICAg
ICAgIGNvbnN0IHN0YXlXaXRoaW4gPSBudWxsOworICAgICAgICBjb25zdCBkb250UG9wdWxhdGUg
PSB0cnVlOworCisgICAgICAgIHdoaWxlICh0cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50LnRyYXZl
cnNlUHJldmlvdXNUcmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwgc3RheVdpdGhpbiwgZG9udFBv
cHVsYXRlKSkgeworICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnNlbGVjdGFibGUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4T2ZUcmVlRWxlbWVudCh0cmVlRWxlbWVudCk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gTmFOOworICAgIH0KKwogICAgIC8vIFByb3Rl
Y3RlZAogCisgICAgc2VsZWN0VHJlZUVsZW1lbnRJbnRlcm5hbCh0cmVlRWxlbWVudCwgc3VwcHJl
c3NOb3RpZmljYXRpb24gPSBmYWxzZSwgc2VsZWN0ZWRCeVVzZXIgPSBmYWxzZSkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9wcm9jZXNzaW5nU2VsZWN0aW9uQ29udHJvbGxlclNlbGVjdGlvbkRp
ZENoYW5nZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9pdGVtV2FzU2Vs
ZWN0ZWRCeVVzZXIgPSBzZWxlY3RlZEJ5VXNlcjsKKyAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0
U2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQgPSBzdXBwcmVzc05vdGlmaWNhdGlvbjsKKworICAgICAg
ICBpZiAodGhpcy5hbGxvd3NSZXBlYXRTZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3RlZFRyZWVFbGVt
ZW50ID09PSB0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hTZWxlY3Rp
b25EaWRDaGFuZ2VFdmVudCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CisgICAgfQorCiAg
ICAgdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgc2Nyb2xs
Q29udGFpbmVyID0gdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7CkBAIC04NTUsNiArOTgyLDkz
IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50
KGV2ZW50KTsKICAgICAgICAgdGhpcy5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBl
dmVudCwgdHJlZUVsZW1lbnQpOwogICAgIH0KKworICAgIF9oYW5kbGVNb3VzZURvd24oZXZlbnQp
CisgICAgeworICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50RnJvbUV2
ZW50KGV2ZW50KTsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCB8fCAhdHJlZUVsZW1lbnQuc2Vs
ZWN0YWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJlZUVsZW1lbnQu
aXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkpIHsKKyAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIXRyZWVFbGVtZW50LmNhblNlbGVjdE9uTW91c2VEb3duKGV2ZW50KSkgewor
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGxldCBpbmRleCA9IHRoaXMuX2luZGV4T2ZUcmVlRWxlbWVu
dCh0cmVlRWxlbWVudCk7CisgICAgICAgIGlmIChpc05hTihpbmRleCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5oYW5kbGVJdGVtTW91
c2VEb3duKGluZGV4LCBldmVudCk7CisgICAgfQorCisgICAgX2luZGV4T2ZUcmVlRWxlbWVudCh0
cmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHByZXZpb3VzRWxlbWVudChlbGVt
ZW50KSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5wcmV2aW91c1NpYmxpbmcpIHsKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmc7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5jaGlsZHJlbi5sYXN0VmFsdWU7CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnQgJiYgZWxlbWVudC5wYXJl
bnQucm9vdCA/IG51bGwgOiBlbGVtZW50LnBhcmVudDsKKyAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OworICAgICAgICB9CisKKyAgICAgICAgbGV0IGluZGV4ID0gMDsKKyAgICAgICAgbGV0IGN1
cnJlbnQgPSB0cmVlRWxlbWVudDsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAg
ICAgIGxldCBjbG9zZXN0SW5kZXggPSB0aGlzLl90cmVlRWxlbWVudEluZGV4Q2FjaGUuZ2V0KGN1
cnJlbnQpOworICAgICAgICAgICAgaWYgKCFpc05hTihjbG9zZXN0SW5kZXgpKSB7CisgICAgICAg
ICAgICAgICAgaW5kZXggKz0gY2xvc2VzdEluZGV4OworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjdXJyZW50ID0gcHJldmlvdXNFbGVtZW50KGN1
cnJlbnQpOworICAgICAgICAgICAgaWYgKGN1cnJlbnQpCisgICAgICAgICAgICAgICAgaW5kZXgr
KzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fdHJlZUVsZW1lbnRJbmRleENhY2hl
Lmhhcyh0cmVlRWxlbWVudCkpCisgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudEluZGV4Q2Fj
aGUuc2V0KHRyZWVFbGVtZW50LCBpbmRleCk7CisKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAg
IH0KKworICAgIF90cmVlRWxlbWVudEF0SW5kZXgoaW5kZXgpCisgICAgeworICAgICAgICBjb25z
dCBza2lwVW5yZXZlYWxlZCA9IGZhbHNlOworICAgICAgICBjb25zdCBzdGF5V2l0aGluID0gbnVs
bDsKKyAgICAgICAgY29uc3QgZG9udFBvcHVsYXRlID0gdHJ1ZTsKKworICAgICAgICBsZXQgY3Vy
cmVudCA9IDA7CisgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuY2hpbGRyZW5bMF07Cisg
ICAgICAgIHdoaWxlICh0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT09
IGluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKKworICAgICAgICAg
ICAgdHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChza2lw
VW5yZXZlYWxlZCwgc3RheVdpdGhpbiwgZG9udFBvcHVsYXRlKTsKKyAgICAgICAgICAgICsrY3Vy
cmVudDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIF9k
aXNwYXRjaFNlbGVjdGlvbkRpZENoYW5nZUV2ZW50KCkKKyAgICB7CisgICAgICAgIGxldCBzZWxl
Y3RlZEJ5VXNlciA9IHRoaXMuX2l0ZW1XYXNTZWxlY3RlZEJ5VXNlcjsKKyAgICAgICAgdGhpcy5f
aXRlbVdhc1NlbGVjdGVkQnlVc2VyID0gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuX3N1cHBy
ZXNzTmV4dFNlbGVjdGlvbkRpZENoYW5nZUV2ZW50KSB7CisgICAgICAgICAgICB0aGlzLl9zdXBw
cmVzc05leHRTZWxlY3Rpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hhbmdlLCB7c2VsZWN0ZWRCeVVzZXJ9
KTsKKyAgICB9CiB9OwogCiBXSS5UcmVlT3V0bGluZS5fc3R5bGVFbGVtZW50ID0gbnVsbDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>