<?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>151629</bug_id>
          
          <creation_ts>2015-11-26 20:49:54 -0800</creation_ts>
          <short_desc>Web Inspector: allow multiple UI components to add menu items upon getting a &quot;contextmenu&quot; event</short_desc>
          <delta_ts>2015-11-29 16:39:20 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>141742</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144550</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-26 20:49:54 -0800</bug_when>
    <thetext>Prerequisite for adding a debug-only global &quot;Reload Web Inspector&quot; context menu item. Also gives us a few more context menu items for free.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144551</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-26 20:50:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/23673554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144552</commentid>
    <comment_count>2</comment_count>
      <attachid>266192</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-26 21:00:38 -0800</bug_when>
    <thetext>Created attachment 266192
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144656</commentid>
    <comment_count>3</comment_count>
      <attachid>266192</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-11-28 13:26:46 -0800</bug_when>
    <thetext>Comment on attachment 266192
Proposed Fix

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

Nice!

&gt; Source/WebInspectorUI/UserInterface/Controllers/BreakpointPopoverController.js:43
&gt; +        let editBreakpoint = () =&gt; {

const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144657</commentid>
    <comment_count>4</comment_count>
      <attachid>266192</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-28 13:28:11 -0800</bug_when>
    <thetext>Comment on attachment 266192
Proposed Fix

Rejecting attachment 266192 from commit-queue.

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

Last 500 characters of output:
erface/Views/SourceCodeTextEditor.js
patching file Source/WebInspectorUI/UserInterface/Views/TabBarItem.js
patching file Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js
patching file Source/WebInspectorUI/UserInterface/Views/Toolbar.js
patching file Source/WebInspectorUI/UserInterface/Views/VisualStyleSelectorTreeItem.js

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

Full output: http://webkit-queues.webkit.org/results/489882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144661</commentid>
    <comment_count>5</comment_count>
      <attachid>266192</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-11-28 13:34:17 -0800</bug_when>
    <thetext>Comment on attachment 266192
Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Views/ContextMenu.js:164
&gt; +        if (!event[WebInspector.ContextMenu.ProposedMenuSymbol] &amp;&amp; !onlyExisting)
&gt; +            event[WebInspector.ContextMenu.ProposedMenuSymbol] = new WebInspector.ContextMenu(event);
&gt; +
&gt; +        return event[WebInspector.ContextMenu.ProposedMenuSymbol] || null;

It might make sense to append a separator item if the menu is already existing, that way appended menu items are auto separated. This will likely require the show code to prune prefix, trailing and double separator items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144700</commentid>
    <comment_count>6</comment_count>
      <attachid>266192</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-29 16:36:45 -0800</bug_when>
    <thetext>Comment on attachment 266192
Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ContextMenu.js:164
&gt;&gt; +        return event[WebInspector.ContextMenu.ProposedMenuSymbol] || null;
&gt; 
&gt; It might make sense to append a separator item if the menu is already existing, that way appended menu items are auto separated. This will likely require the show code to prune prefix, trailing and double separator items.

Since we use a _pendingSeparator flag, only one can ever be added between two items. The flag only takes effect on the next item if there was a previous item. So, I don&apos;t think this is an issue.

As for separator placement, it&apos;s really confusing at the moment where they should belong. Are there any good Cocoa documents with tips on how to organize context menus? My gut feeling is to have a section (or submenu) per &quot;context&quot; that could have been clicked. So, clicking in console would show object items, then console items, then global items. It would be straightforward to make it so that each UI component that appends to the menu gets its own divider.

Let&apos;s defer adjusting context menu ordering for now. In all my testing, &quot;Reload Web Inspector&quot; always showed up in a section with Inspect Element and separated from other menus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144701</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-29 16:39:20 -0800</bug_when>
    <thetext>Committed r192789: &lt;http://trac.webkit.org/changeset/192789&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266192</attachid>
            <date>2015-11-26 21:00:38 -0800</date>
            <delta_ts>2015-11-28 13:28:11 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-151629-20151126210019.patch</filename>
            <type>text/plain</type>
            <size>46632</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
NDEyZWVlZWRmZDFkM2U2M2ViODJmYTRmZDQ3OGNmZDY4ZjFjOGFlLi4zNjcwYzRkOTFiNDQ0MDY4
MDA4NjI0YzQ0MDhlNjI0OWQ5NDFlNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NyBAQAorMjAxNS0xMS0yNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBtdWx0aXBsZSBVSSBjb21wb25lbnRzIHRvIGFk
ZCBtZW51IGl0ZW1zIHVwb24gZ2V0dGluZyBhICJjb250ZXh0bWVudSIgZXZlbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTYyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBleGlzdGluZyBDb250
ZXh0IE1lbnUgc3lzdGVtIGFzc3VtZXMgdGhhdCBvbmx5IG9uZSBVSSBjb21wb25lbnQKKyAgICAg
ICAgd2lsbCBuZWVkIHRvIHByb3ZpZGUgY29udGV4dCBtZW51IGl0ZW1zLiBCdXQgaW4gc29tZSBz
Y2VuYXJpb3MsIHRoZXJlCisgICAgICAgIGFyZSBtdWx0aXBsZSBVSSBjb21wb25lbnRzIHRoYXQg
Y291bGQgcHJvdmlkZSByZWxldmFudCBtZW51IGl0ZW1zLiBGb3IKKyAgICAgICAgZXhhbXBsZSwg
cmlnaHQtY2xpY2tpbmcgb24gYW4gRE9NIGVsZW1lbnQgaW4gdGhlIGNvbnNvbGUgc2hvdWxkIHNo
b3cKKyAgICAgICAgbWVudSBpdGVtcyByZWxldmFudCB0byAxKSB0aGUgRE9NIGVsZW1lbnQsIDIp
IHRoZSBjb25zb2xlIGluIGdlbmVyYWwsCisgICAgICAgIGFuZCAzKSBnbG9iYWwgbWVudSBpdGVt
cy4gRXhpc3RpbmcgY29kZSBzaG93cyBtZW51IGl0ZW1zIHByb3ZpZGVkIGJ5CisgICAgICAgIHRo
ZSBmaXJzdCBvYmplY3QgdGhhdCBoYW5kbGVzIHRoZSBldmVudCBhbmQgY2FsbHMgQ29udGV4dE1l
bnUuc2hvdygpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBiZWhhdmlvciBzbyB0aGF0
IGEgY29udGV4dCBtZW51IGNhbiBiZSBidWlsdCB1cAorICAgICAgICBieSBtdWx0aXBsZSAnY29u
dGV4dG1lbnUnIGV2ZW50IGhhbmRsZXJzLiBBIENvbnRleHRNZW51IGluc3RhbmNlIGlzCisgICAg
ICAgIGhpZGRlbiBvbiB0aGUgJ2NvbnRleHRtZW51JyBldmVudCBvYmplY3Q7IGNsaWVudCBjb2Rl
IGNhbGxzIGEKKyAgICAgICAgZmFjdG9yeSBtZXRob2QgdGhhdCBkaWdzIG91dCB0aGlzIGV4aXN0
aW5nIGNvbnRleHQgbWVudSBvciBjcmVhdGVzIGEKKyAgICAgICAgbmV3IG9uZSBhcyBuZWVkZWQu
IFRvIGFjdHVhbGx5IHNob3cgdGhlIGNvbnRleHQgbWVudSB0aHJvdWdoIHRoZQorICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QgbWV0aG9kcywgdGhlIHRvcC1sZXZlbCBhcHAgY29udHJvbGxl
ciBhZGRzIGEKKyAgICAgICAgYnViYmxpbmcgbGlzdGVuZXIgZm9yICdjb250ZXh0bWVudScgYW5k
IHNob3dzIHRoZSBldmVudCdzIGNvbnRleHQKKyAgICAgICAgbWVudSBpZiBvbmUgaGFzIGJlZW4g
Y3JlYXRlZC4KKworICAgICAgICBBbG9uZyB0aGUgd2F5LCBkbyBzb21lIGNsZWFudXAuIERvIHMv
dmFyL2xldC8sIGFycm93aXplIHNvbWUgZnVuY3Rpb25zLAorICAgICAgICB1c2UgQXJyYXkue21h
cCxzb21lfSwgYW5kIHNpbXBsaWZ5IHNvbWUgb3RoZXIgY29kZSBhcyBhIHJlc3VsdC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgeWV0LCBzaW5jZSB3ZSBjYW4ndCB0cmlnZ2VyIGNvbnRleHQgbWVu
dSBlYXNpbHkgZnJvbQorICAgICAgICBhbiBpbnNwZWN0b3IgdGVzdC4gQWxsIGFmZmVjdGVkIGNv
bnRleHQgbWVudXMgd2VyZSBtYW51YWxseSB2ZXJpZmllZC4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJD
b250cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29u
dHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250
ZXh0TWVudUl0ZW1zLmVkaXRCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBlLmFwcGVuZENvbnRleHRN
ZW51SXRlbXMucmVtb3ZlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250ZXh0TWVu
dUl0ZW1zLnRvZ2dsZUJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJ
dGVtcy50b2dnbGVBdXRvQ29udGludWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJ
dGVtcy5yZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmNvbnRleHRt
ZW51KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtLnByb3RvdHlwZS5fYnVpbGRE
ZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUuYXBwZW5kSXRl
bSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtLnByb3RvdHlwZS5h
cHBlbmRTdWJNZW51SXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJ
dGVtLnByb3RvdHlwZS5hcHBlbmRDaGVja2JveEl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUuX3B1c2hJdGVtKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0ucHJvdG90eXBlLl9idWlsZERlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudS5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnUucHJvdG90eXBlLmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db250ZXh0TWVudS5wcm90b3R5cGUuX2J1aWxkRGVzY3JpcHRvcik6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUuX2NvbnRleHRNZW51RXZlbnRGaXJlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlLl9wb3B1bGF0ZUNvbnRl
eHRNZW51LmxvZ0VsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5l
LnByb3RvdHlwZS5fcG9wdWxhdGVDb250ZXh0TWVudSk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9EYXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUuX2NvbnRleHRNZW51SW5EYXRhVGFibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9icmVha3BvaW50VHJlZU91dGxpbmVDb250ZXh0
TWVudVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRUcmVlT3V0bGluZUNvbnRleHRNZW51VHJlZUVsZW1l
bnQucmVtb3ZlQWxsUmVzb3VyY2VCcmVha3BvaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9icmVha3BvaW50VHJlZU91
dGxpbmVDb250ZXh0TWVudVRyZWVFbGVtZW50LnRvZ2dsZUFsbFJlc291cmNlQnJlYWtwb2ludHMp
OiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5k
bGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVj
dFByZXZpZXdWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3
LnByb3RvdHlwZS5fY29udGV4dE1lbnVIYW5kbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5P
YmplY3RQcmV2aWV3Vmlldyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RU
cmVlQmFzZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVC
YXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9jb250ZXh0TWVudUhhbmRsZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hcHBlbmRN
ZW51c0l0ZW1zRm9yT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFz
ZVRyZWVFbGVtZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LnByb3RvdHlwZS50ZXh0RWRpdG9yR3V0dGVyQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yR3V0dGVyQ29u
dGV4dE1lbnUuY29udGludWVUb0xvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckd1dHRlckNvbnRl
eHRNZW51LmFkZEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yR3V0dGVyQ29udGV4dE1lbnUu
cmV2ZWFsSW5TaWRlYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckd1dHRlckNvbnRleHRNZW51LnJlbW92
ZUJyZWFrcG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckd1dHRlckNvbnRleHRNZW51LnRvZ2dsZUJy
ZWFrcG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJh
ckl0ZW0uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFySXRlbS5wcm90b3R5cGUuX2hh
bmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0ucHJvdG90eXBlLl9oYW5kbGVDb250
ZXh0TWVudUV2ZW50LmNsb3NlVGFiKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
YWJCYXJJdGVtLnByb3RvdHlwZS5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5jbG9zZU90aGVyVGFi
cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGVi
YXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5w
cm90b3R5cGUuX2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NvbnRleHRNZW51
TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyLnRvZ2dsZVJlcGxheUludGVyZmFjZSk6IERlbGV0ZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yVHJlZUl0ZW0ucHJv
dG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKwogMjAxNS0xMS0yNCAgQnJpYW4gQnVy
ZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzYXZlIEluc3Bl
Y3RvcidzIGJyZWFrcG9pbnRzIHRvIGxvY2FsU3RvcmFnZSB3aGVuZXZlciB0aGV5IGFyZSBtb2Rp
ZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWlu
LmpzCmluZGV4IDMyZDJhMzBlYzZkNjYwY2M1YTU0MWE2ZTk1MDU1MWVjYjM5ZTZhODYuLjEzZThk
NmU0MGE4MzhmYjVhZjRjNjc0YTViMjI2MmU4YzgxZGM2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTE5MCw2ICsxOTAsNyBA
QCBXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigia2V5dXAiLCB0aGlzLl93aW5kb3dLZXlVcC5iaW5kKHRoaXMpKTsKICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VNb3ZlZC5i
aW5kKHRoaXMpLCB0cnVlKTsKICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUi
LCB0aGlzLl9wYWdlSGlkZGVuLmJpbmQodGhpcykpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRNZW51UmVxdWVzdGVkLmJpbmQodGhpcykp
OwogCiAgICAgLy8gQWRkIHBsYXRmb3JtIHN0eWxlIGNsYXNzZXMgc28gdGhlIFVJIGNhbiBiZSB0
d2Vha2VkIHBlci1wbGF0Zm9ybS4KICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlBsYXRmb3JtLm5hbWUgKyAiLXBsYXRmb3JtIik7CkBAIC0xMzI1LDYgKzEzMjYs
MTQgQEAgV2ViSW5zcGVjdG9yLl9wYWdlSGlkZGVuID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgdGhp
cy5fc2F2ZUNvb2tpZUZvck9wZW5UYWJzKCk7CiB9OwogCitXZWJJbnNwZWN0b3IuX2NvbnRleHRN
ZW51UmVxdWVzdGVkID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgY29uc3Qgb25seUV4aXN0aW5n
ID0gdHJ1ZTsKKyAgICBsZXQgcHJvcG9zZWRDb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5Db250
ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQsIG9ubHlFeGlzdGluZyk7CisgICAgaWYgKHBy
b3Bvc2VkQ29udGV4dE1lbnUpCisgICAgICAgIHByb3Bvc2VkQ29udGV4dE1lbnUuc2hvdygpOwor
fTsKKwogV2ViSW5zcGVjdG9yLl91bmRvY2sgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QucmVxdWVzdFNldERvY2tTaWRlKCJ1bmRvY2tlZCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJl
YWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzCmluZGV4
IDhhZmIyMzhhZDYzN2VjOWU5ODYzNzczMTNjOWVlYmMwNzQ3MWUyMmQuLmMyOGQzZWI4MjZhN2I5
OTg2MzZmMWVmNGFjMTU0MTc5ZDcxMGUyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMKQEAgLTQwLDggKzQwLDcgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlciA9IGNsYXNzIEJyZWFrcG9pbnRQb3Bv
dmVyQ29udHJvbGxlciBleHQKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvY3VtZW50
LmJvZHkuY29udGFpbnMoYnJlYWtwb2ludERpc3BsYXlFbGVtZW50KSwgIkJyZWFrcG9pbnQgcG9w
b3ZlciBkaXNwbGF5IGVsZW1lbnQgbXVzdCBiZSBpbiB0aGUgRE9NLiIpOwogCi0gICAgICAgIGZ1
bmN0aW9uIGVkaXRCcmVha3BvaW50KCkKLSAgICAgICAgeworICAgICAgICBsZXQgZWRpdEJyZWFr
cG9pbnQgPSAoKSA9PiB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcG9wb3Zl
ciwgIkJyZWFrcG9pbnQgcG9wb3ZlciBhbHJlYWR5IGV4aXN0cy4iKTsKICAgICAgICAgICAgIGlm
ICh0aGlzLl9wb3BvdmVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTUzLDUwICs1Miw0
NiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJl
YWtwb2ludFBvcG92ZXJDb250cm9sbGVyIGV4dAogICAgICAgICAgICAgbGV0IGJvdW5kcyA9IFdl
Ykluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChicmVha3BvaW50RGlzcGxheUVsZW1l
bnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwogICAgICAgICAgICAgYm91bmRzLm9yaWdpbi54
IC09IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBsZWZ0IG9uZSBwaXhlbCBzbyBpdCBsb29rcyBtb3Jl
IGNlbnRlcmVkLgogICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQo
MiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1ldKTsKLSAgICAgICAgfQorICAgICAgICB9
OwogCi0gICAgICAgIGZ1bmN0aW9uIHJlbW92ZUJyZWFrcG9pbnQoKQotICAgICAgICB7CisgICAg
ICAgIGxldCByZW1vdmVCcmVha3BvaW50ID0gKCkgPT4gewogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAg
ICB9CisgICAgICAgIH07CiAKLSAgICAgICAgZnVuY3Rpb24gdG9nZ2xlQnJlYWtwb2ludCgpCi0g
ICAgICAgIHsKKyAgICAgICAgbGV0IHRvZ2dsZUJyZWFrcG9pbnQgPSAoKSA9PiB7CiAgICAgICAg
ICAgICBicmVha3BvaW50LmRpc2FibGVkID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAg
IH0KKyAgICAgICAgfTsKIAotICAgICAgICBmdW5jdGlvbiB0b2dnbGVBdXRvQ29udGludWUoKQot
ICAgICAgICB7CisgICAgICAgIGxldCB0b2dnbGVBdXRvQ29udGludWUgPSAoKSA9PiB7CiAgICAg
ICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9ICFicmVha3BvaW50LmF1dG9Db250aW51
ZTsKLSAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgICAgIGZ1bmN0aW9uIHJldmVhbE9yaWdp
bmFsU291cmNlQ29kZUxvY2F0aW9uKCkKLSAgICAgICAgeworICAgICAgICBsZXQgcmV2ZWFsT3Jp
Z2luYWxTb3VyY2VDb2RlTG9jYXRpb24gPSAoKSA9PiB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2ludC5z
b3VyY2VDb2RlTG9jYXRpb24pOwotICAgICAgICB9CisgICAgICAgIH07CiAKICAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtw
b2ludCkpCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRWRpdCBCcmVha3BvaW504oCmIiksIGVkaXRCcmVha3BvaW50LmJpbmQodGhpcykp
OworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkVkaXQgQnJlYWtwb2ludOKApiIpLCBlZGl0QnJlYWtwb2ludCk7CiAKICAgICAgICAgaWYg
KGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlICYmICFicmVha3BvaW50LmRpc2FibGVkKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlz
YWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0gICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FuY2Vs
IEF1dG9tYXRpYyBDb250aW51ZSIpLCB0b2dnbGVBdXRvQ29udGludWUuYmluZCh0aGlzKSk7Cisg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RGlzYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQpOworICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0
aWMgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlKTsKICAgICAgICAgfSBlbHNlIGlmICgh
YnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtw
b2ludC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2lu
dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50
LmJpbmQodGhpcykpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQpOwog
CiAgICAgICAgIGlmICghYnJlYWtwb2ludC5hdXRvQ29udGludWUgJiYgIWJyZWFrcG9pbnQuZGlz
YWJsZWQgJiYgYnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0aCkKLSAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZXQgdG8gQXV0b21hdGljYWxs
eSBDb250aW51ZSIpLCB0b2dnbGVBdXRvQ29udGludWUuYmluZCh0aGlzKSk7CisgICAgICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2V0IHRvIEF1
dG9tYXRpY2FsbHkgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlKTsKIAogICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJl
YWtwb2ludCkpIHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwot
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRlbGV0ZSBCcmVha3BvaW50IiksIHJlbW92ZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CisgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVs
ZXRlIEJyZWFrcG9pbnQiKSwgcmVtb3ZlQnJlYWtwb2ludCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoYnJlYWtwb2ludC5fc291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkp
IHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBp
biBPcmlnaW5hbCBSZXNvdXJjZSIpLCByZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbi5i
aW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2UiKSwgcmV2ZWFsT3JpZ2lu
YWxTb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVs
ZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVh
a3BvaW50VHJlZUVsZW1lbnQuanMKaW5kZXggMjI4OWMxYzM5YzU5ZGQ4ZDA1NzY0YjU1ZDU5YTky
NGU3YjBjOGQwOS4uZTY4ZjAyZDFhZDMyYjA2Yzk2ZTgyZWViYjNmZDUzMjg1OTZjYTVjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtw
b2ludFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtOTksOSArOTksOCBAQCBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVt
ZW50IGV4dGVuZHMgV2ViSW5zcAogCiAgICAgb25jb250ZXh0bWVudShldmVudCkKICAgICB7Ci0g
ICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZl
bnQpOworICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUu
Y3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRQ
b3BvdmVyQ29udHJvbGxlci5hcHBlbmRDb250ZXh0TWVudUl0ZW1zKGNvbnRleHRNZW51LCB0aGlz
Ll9icmVha3BvaW50LCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQpOwotICAgICAgICBjb250ZXh0
TWVudS5zaG93KCk7CiAgICAgfQogCiAgICAgb25hdHRhY2goKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNl
Y3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwppbmRleCAzOTc0MzdmYTEwYTI0ODViOWMxMmVlMGQ3
MTNhYTE4ZWZhYzEyZTZjLi42NzY1ZDkwODVkMzQ5NmNiN2JhY2NkZmJmZDVmYzZmMzBjMGYwMjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
U1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwpAQCAtNDMx
LDIyICs0MzEsMjAgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uID0g
Y2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gZXh0ZW4KICAgICAgICAgaWYgKHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51
KGV2ZW50KTsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAKICAgICAgICAgaWYgKCF0aGlzLl9zdHlsZS5p
bmhlcml0ZWQpIHsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJEdXBsaWNhdGUgU2VsZWN0b3IiKSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRHVwbGlj
YXRlIFNlbGVjdG9yIiksICgpID0+IHsKICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZGVsZWdh
dGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNzc1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uRm9j
dXNOZXh0TmV3SW5zcGVjdG9yUnVsZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fZGVsZWdhdGUuY3NzU3R5bGVEZWNsYXJhdGlvblNlY3Rpb25Gb2N1c05leHROZXdJ
bnNwZWN0b3JSdWxlKCk7CiAKICAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZS5ub2RlU3R5bGVz
LmFkZFJ1bGVXaXRoU2VsZWN0b3IodGhpcy5fY3VycmVudFNlbGVjdG9yVGV4dCk7Ci0gICAgICAg
ICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBSdWxl
IiksIGZ1bmN0aW9uKCkgeworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ29weSBSdWxlIiksICgpID0+IHsKICAgICAgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5jb3B5VGV4dCh0aGlzLl9zdHlsZS5nZW5lcmF0ZUNTU1J1bGVTdHJpbmco
KSk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUuc2hvdygp
OworICAgICAgICB9KTsKICAgICB9CiAKICAgICBfdG9nZ2xlUnVsZU9uT2ZmKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1l
bnUuanMKaW5kZXggNzEwZDBlNDM5ZDBmODAwZjMxMjQ4ZDA3ZmQ0YWNiNjJjOTE5Yzk5My4uNmE3
ZGZmMDk1YzNjNjUwYzEzNTM0NGNiODMwMmQxOTMwNDEyMTI3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanMK
QEAgLTczLDExICs3MywxMSBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtID0gY2xhc3Mg
Q29udGV4dE1lbnVJdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIHsKICAgICAg
ICAgc3dpdGNoICh0aGlzLl90eXBlKSB7CiAgICAgICAgIGNhc2UgIml0ZW0iOgotICAgICAgICAg
ICAgcmV0dXJuIHsgdHlwZTogIml0ZW0iLCBpZDogdGhpcy5faWQsIGxhYmVsOiB0aGlzLl9sYWJl
bCwgZW5hYmxlZDogIXRoaXMuX2Rpc2FibGVkIH07CisgICAgICAgICAgICByZXR1cm4ge3R5cGU6
ICJpdGVtIiwgaWQ6IHRoaXMuX2lkLCBsYWJlbDogdGhpcy5fbGFiZWwsIGVuYWJsZWQ6ICF0aGlz
Ll9kaXNhYmxlZH07CiAgICAgICAgIGNhc2UgInNlcGFyYXRvciI6Ci0gICAgICAgICAgICByZXR1
cm4geyB0eXBlOiAic2VwYXJhdG9yIiB9OworICAgICAgICAgICAgcmV0dXJuIHt0eXBlOiAic2Vw
YXJhdG9yIn07CiAgICAgICAgIGNhc2UgImNoZWNrYm94IjoKLSAgICAgICAgICAgIHJldHVybiB7
IHR5cGU6ICJjaGVja2JveCIsIGlkOiB0aGlzLl9pZCwgbGFiZWw6IHRoaXMuX2xhYmVsLCBjaGVj
a2VkOiAhIXRoaXMuX2NoZWNrZWQsIGVuYWJsZWQ6ICF0aGlzLl9kaXNhYmxlZCB9OworICAgICAg
ICAgICAgcmV0dXJuIHt0eXBlOiAiY2hlY2tib3giLCBpZDogdGhpcy5faWQsIGxhYmVsOiB0aGlz
Ll9sYWJlbCwgY2hlY2tlZDogISF0aGlzLl9jaGVja2VkLCBlbmFibGVkOiAhdGhpcy5fZGlzYWJs
ZWR9OwogICAgICAgICB9CiAgICAgfQogfTsKQEAgLTk1LDcgKzk1LDcgQEAgV2ViSW5zcGVjdG9y
LkNvbnRleHRTdWJNZW51SXRlbSA9IGNsYXNzIENvbnRleHRTdWJNZW51SXRlbSBleHRlbmRzIFdl
Ykluc3BlY3Rvci4KIAogICAgIGFwcGVuZEl0ZW0obGFiZWwsIGhhbmRsZXIsIGRpc2FibGVkKQog
ICAgIHsKLSAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRl
bSh0aGlzLl9jb250ZXh0TWVudSwgIml0ZW0iLCBsYWJlbCwgZGlzYWJsZWQpOworICAgICAgICBs
ZXQgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRoaXMuX2NvbnRleHRN
ZW51LCAiaXRlbSIsIGxhYmVsLCBkaXNhYmxlZCk7CiAgICAgICAgIHRoaXMuX3B1c2hJdGVtKGl0
ZW0pOwogICAgICAgICB0aGlzLl9jb250ZXh0TWVudS5fc2V0SGFuZGxlcihpdGVtLmlkKCksIGhh
bmRsZXIpOwogICAgICAgICByZXR1cm4gaXRlbTsKQEAgLTEwMywxNCArMTAzLDE0IEBAIFdlYklu
c3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0gPSBjbGFzcyBDb250ZXh0U3ViTWVudUl0ZW0gZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuCiAKICAgICBhcHBlbmRTdWJNZW51SXRlbShsYWJlbCwgZGlzYWJs
ZWQpCiAgICAgewotICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dFN1
Yk1lbnVJdGVtKHRoaXMuX2NvbnRleHRNZW51LCBsYWJlbCwgZGlzYWJsZWQpOworICAgICAgICBs
ZXQgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtKHRoaXMuX2NvbnRl
eHRNZW51LCBsYWJlbCwgZGlzYWJsZWQpOwogICAgICAgICB0aGlzLl9wdXNoSXRlbShpdGVtKTsK
ICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgfQogCiAgICAgYXBwZW5kQ2hlY2tib3hJdGVtKGxh
YmVsLCBoYW5kbGVyLCBjaGVja2VkLCBkaXNhYmxlZCkKICAgICB7Ci0gICAgICAgIHZhciBpdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUsICJj
aGVja2JveCIsIGxhYmVsLCBkaXNhYmxlZCwgY2hlY2tlZCk7CisgICAgICAgIGxldCBpdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUsICJjaGVj
a2JveCIsIGxhYmVsLCBkaXNhYmxlZCwgY2hlY2tlZCk7CiAgICAgICAgIHRoaXMuX3B1c2hJdGVt
KGl0ZW0pOwogICAgICAgICB0aGlzLl9jb250ZXh0TWVudS5fc2V0SGFuZGxlcihpdGVtLmlkKCks
IGhhbmRsZXIpOwogICAgICAgICByZXR1cm4gaXRlbTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBXZWJJ
bnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtID0gY2xhc3MgQ29udGV4dFN1Yk1lbnVJdGVtIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTZXBh
cmF0b3IpIHsKICAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnB1c2gobmV3IFdlYkluc3BlY3Rvci5D
b250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUsICJzZXBhcmF0b3IiKSk7Ci0gICAgICAg
ICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ1NlcGFyYXRvcjsKKyAgICAgICAgICAgIHRoaXMuX3Bl
bmRpbmdTZXBhcmF0b3IgPSBudWxsOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX2l0ZW1zLnB1
c2goaXRlbSk7CiAgICAgfQpAQCAtMTM4LDEwICsxMzgsOCBAQCBXZWJJbnNwZWN0b3IuQ29udGV4
dFN1Yk1lbnVJdGVtID0gY2xhc3MgQ29udGV4dFN1Yk1lbnVJdGVtIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLgogCiAgICAgX2J1aWxkRGVzY3JpcHRvcigpCiAgICAgewotICAgICAgICB2YXIgcmVzdWx0
ID0geyB0eXBlOiAic3ViTWVudSIsIGxhYmVsOiB0aGlzLl9sYWJlbCwgZW5hYmxlZDogIXRoaXMu
X2Rpc2FibGVkLCBzdWJJdGVtczogW10gfTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9pdGVtcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHJlc3VsdC5zdWJJdGVtcy5wdXNo
KHRoaXMuX2l0ZW1zW2ldLl9idWlsZERlc2NyaXB0b3IoKSk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIGxldCBzdWJJdGVtcyA9IHRoaXMuX2l0ZW1zLm1hcCgoaXRlbSkgPT4gaXRl
bS5fYnVpbGREZXNjcmlwdG9yKCkpOworICAgICAgICByZXR1cm4ge3R5cGU6ICJzdWJNZW51Iiwg
bGFiZWw6IHRoaXMuX2xhYmVsLCBlbmFibGVkOiAhdGhpcy5fZGlzYWJsZWQsIHN1Ykl0ZW1zfTsK
ICAgICB9CiB9OwogCkBAIC0xNTgsNiArMTU2LDE0IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dSA9IGNsYXNzIENvbnRleHRNZW51IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51
CiAKICAgICAvLyBTdGF0aWMKIAorICAgIHN0YXRpYyBjcmVhdGVGcm9tRXZlbnQoZXZlbnQsIG9u
bHlFeGlzdGluZyA9IGZhbHNlKQorICAgIHsKKyAgICAgICAgaWYgKCFldmVudFtXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUuUHJvcG9zZWRNZW51U3ltYm9sXSAmJiAhb25seUV4aXN0aW5nKQorICAg
ICAgICAgICAgZXZlbnRbV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LlByb3Bvc2VkTWVudVN5bWJv
bF0gPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKKworICAgICAgICByZXR1
cm4gZXZlbnRbV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LlByb3Bvc2VkTWVudVN5bWJvbF0gfHwg
bnVsbDsKKyAgICB9CisKICAgICBzdGF0aWMgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpCiAg
ICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51Ll9sYXN0Q29udGV4dE1l
bnUpCkBAIC0xODEsOCArMTg3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51ID0gY2xhc3Mg
Q29udGV4dE1lbnUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnUKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2V2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCk7
CiAKLSAgICAgICAgdmFyIG1lbnVPYmplY3QgPSB0aGlzLl9idWlsZERlc2NyaXB0b3IoKTsKLQor
ICAgICAgICBsZXQgbWVudU9iamVjdCA9IHRoaXMuX2J1aWxkRGVzY3JpcHRvcigpOwogICAgICAg
ICBpZiAobWVudU9iamVjdC5sZW5ndGgpIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db250
ZXh0TWVudS5fbGFzdENvbnRleHRNZW51ID0gdGhpczsKIApAQCAtMjA0LDcgKzIwOSw3IEBAIFdl
Ykluc3BlY3Rvci5Db250ZXh0TWVudSA9IGNsYXNzIENvbnRleHRNZW51IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkNvbnRleHRTdWJNZW51CiAgICAgewogICAgICAgICB0aGlzLl9ldmVudC50YXJnZXQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNob3dDb250ZXh0TWVudShldmVudCwgdGhpcy5fbWVudU9i
amVjdCk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9tZW51T2JqZWN0OworICAgICAgICB0aGlzLl9t
ZW51T2JqZWN0ID0gbnVsbDsKIAogICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRp
b24oKTsKICAgICB9CkBAIC0yMTksMTAgKzIyNCw3IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dSA9IGNsYXNzIENvbnRleHRNZW51IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51
CiAKICAgICBfYnVpbGREZXNjcmlwdG9yKCkKICAgICB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBb
XTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7ICsraSkK
LSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX2l0ZW1zW2ldLl9idWlsZERlc2NyaXB0b3Io
KSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB0aGlzLl9pdGVtcy5t
YXAoKGl0ZW0pID0+IGl0ZW0uX2J1aWxkRGVzY3JpcHRvcigpKTsKICAgICB9CiAKICAgICBfaXRl
bVNlbGVjdGVkKGlkKQpAQCAtMjMxLDMgKzIzMyw1IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dSA9IGNsYXNzIENvbnRleHRNZW51IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51
CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVyc1tpZF0uY2FsbCh0aGlzKTsKICAgICB9CiB9Owor
CitXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvcG9zZWRNZW51U3ltYm9sID0gU3ltYm9sKCJj
b250ZXh0LW1lbnUtcHJvcG9zZWQtbWVudSIpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TVRyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZU91dGxpbmUuanMKaW5kZXggMWU4MmEzZDY0ZmFkMzBkYmI5Y2VhMzM3YWFiM2Fm
Njc4YzgxY2JhNy4uNmNiMjhlYjEwMzg3ZTg3ZmJhOTMwOTBiMWU5ZmUxMGEyN2E5MTE0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZU91dGxpbmUuanMKQEAgLTQ4NSwxMyArNDg1LDEyIEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9y
LlRyZWVPdXRsCiAKICAgICBfY29udGV4dE1lbnVFdmVudEZpcmVkKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQp
OworICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChl
dmVudCk7CiAgICAgICAgIGlmICghdHJlZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShl
dmVudCk7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICB0aGlzLnBvcHVsYXRlQ29udGV4dE1l
bnUoY29udGV4dE1lbnUsIGV2ZW50LCB0cmVlRWxlbWVudCk7Ci0gICAgICAgIGNvbnRleHRNZW51
LnNob3coKTsKICAgICB9CiAKICAgICBfdXBkYXRlTW9kaWZpZWROb2RlcygpCkBAIC01MTIsNyAr
NTExLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lID0gY2xhc3MgRE9NVHJlZU91dGxp
bmUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZU91dGwKICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUoZG9tTm9kZSwgV2ViSW5zcGVjdG9yLlJ1bnRpbWVN
YW5hZ2VyLkNvbnNvbGVPYmplY3RHcm91cCwgZnVuY3Rpb24ocmVtb3RlT2JqZWN0KSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFyZW1vdGVPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vs
ZWN0ZWQgRWxlbWVudCIpOworICAgICAgICAgICAgICAgIGxldCB0ZXh0ID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTZWxlY3RlZCBFbGVtZW50Iik7CiAgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmNvbnNvbGVMb2dWaWV3Q29udHJvbGxlci5hcHBlbmRJbW1lZGlhdGVFeGVjdXRpb25XaXRo
UmVzdWx0KHRleHQsIHJlbW90ZU9iamVjdCwgdHJ1ZSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EYXRhR3JpZC5qcwppbmRleCBiNzhhMGI2NTc1YzY5MGU0ZGRhZTIxNzJhYjBmNDZjYjQ2YjVh
Njc1Li45ZTgzYmMwOTlkZTk4YmY4NGFiMWRjMTc4Y2QxMjc4ZDM2MjEwYmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5q
cwpAQCAtMTEwMSw5ICsxMTAxLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0
YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogCiAgICAgX2NvbnRleHRNZW51SW5EYXRh
VGFibGUoZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAKLSAgICAgICAg
dmFyIGdyaWROb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwor
ICAgICAgICBsZXQgZ3JpZE5vZGUgPSB0aGlzLmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRh
cmdldCk7CiAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkLl9yZWZyZXNoQ2FsbGJhY2sgJiYgKCFn
cmlkTm9kZSB8fCBncmlkTm9kZSAhPT0gdGhpcy5wbGFjZWhvbGRlck5vZGUpKQogICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2gi
KSwgdGhpcy5fcmVmcmVzaENhbGxiYWNrLmJpbmQodGhpcykpOwogCkBAIC0xMTE0LDE3ICsxMTE0
LDE1IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlZpZXcKICAgICAgICAgICAgICAgICBpZiAoZ3JpZE5vZGUgPT09IHRoaXMucGxh
Y2Vob2xkZXJOb2RlKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWRkIE5ldyIpLCB0aGlzLl9zdGFydEVkaXRpbmcuYmlu
ZCh0aGlzLCBldmVudC50YXJnZXQpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhOb2RlTmFtZSgidGQiKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtbklkZW50
aWZpZXIgPSBlbGVtZW50Ll9fY29sdW1uSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIGNvbHVtblRpdGxlID0gdGhpcy5kYXRhR3JpZC5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlm
aWVyKVsidGl0bGUiXTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBldmVudC50
YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidGQiKTsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IGNvbHVtbklkZW50aWZpZXIgPSBlbGVtZW50Ll9fY29sdW1uSWRlbnRpZmll
cjsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtblRpdGxlID0gdGhpcy5kYXRhR3JpZC5j
b2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKVsidGl0bGUiXTsKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVkaXQg4oCc
JXPigJ0iKS5mb3JtYXQoY29sdW1uVGl0bGUpLCB0aGlzLl9zdGFydEVkaXRpbmcuYmluZCh0aGlz
LCBldmVudC50YXJnZXQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAodGhpcy5kYXRhR3JpZC5fZGVsZXRlQ2FsbGJhY2sgJiYgZ3JpZE5vZGUgIT09
IHRoaXMucGxhY2Vob2xkZXJOb2RlKQogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUiKSwgdGhpcy5fZGVsZXRlQ2FsbGJh
Y2suYmluZCh0aGlzLCBncmlkTm9kZSkpOwogICAgICAgICB9Ci0KLSAgICAgICAgY29udGV4dE1l
bnUuc2hvdygpOwogICAgIH0KIAogICAgIF9jbGlja0luRGF0YVRhYmxlKGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJT
aWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwppbmRleCA3NGE1NmNmMjI3MWI3Zjc1OGVmMzcyMzEz
Njg2OTg4MDIwOTk4ZWM1Li4yYjNmMDA3OTUzMDU4MTNhYjFiMDQ5YmVhYTQzZGMzN2E0NDgyMjY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwpAQCAtNTc5LDMyICs1NzksMjMg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgaWYgKCEodHJlZUVsZW1lbnQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCkgJiYgISh0cmVlRWxlbWVu
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNC
ZW5lYXRoVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpOwotICAgICAgICB2YXIgc2hvdWxkRGlzYWJs
ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnRzW2ldLmRpc2FibGVkKSB7Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkRGlzYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgbGV0IGJyZWFrcG9pbnRzID0g
dGhpcy5fYnJlYWtwb2ludHNCZW5lYXRoVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpOworICAgICAg
ICBsZXQgc2hvdWxkRGlzYWJsZSA9IGJyZWFrcG9pbnRzLnNvbWUoKGJyZWFrcG9pbnQpID0+ICFi
cmVha3BvaW50LmRpc2FibGVkKTsKIAotICAgICAgICBmdW5jdGlvbiByZW1vdmVBbGxSZXNvdXJj
ZUJyZWFrcG9pbnRzKCkKLSAgICAgICAgeworICAgICAgICBsZXQgcmVtb3ZlQWxsUmVzb3VyY2VC
cmVha3BvaW50cyA9ICgpID0+IHsKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbEJyZWFrcG9p
bnRzKGJyZWFrcG9pbnRzKTsKLSAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgICAgIGZ1bmN0
aW9uIHRvZ2dsZUFsbFJlc291cmNlQnJlYWtwb2ludHMoKQotICAgICAgICB7CisgICAgICAgIGxl
dCB0b2dnbGVBbGxSZXNvdXJjZUJyZWFrcG9pbnRzID0gKCkgPT4gewogICAgICAgICAgICAgdGhp
cy5fdG9nZ2xlQWxsQnJlYWtwb2ludHMoYnJlYWtwb2ludHMsIHNob3VsZERpc2FibGUpOwotICAg
ICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYklu
c3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdl
Ykluc3BlY3Rvci5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBp
ZiAoc2hvdWxkRGlzYWJsZSkKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnRzIiksIHRvZ2dsZUFsbFJlc291
cmNlQnJlYWtwb2ludHMuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZSBCcmVha3BvaW50cyIpLCB0b2dn
bGVBbGxSZXNvdXJjZUJyZWFrcG9pbnRzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3Bv
aW50cyIpLCB0b2dnbGVBbGxSZXNvdXJjZUJyZWFrcG9pbnRzLmJpbmQodGhpcykpOwotICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIEJy
ZWFrcG9pbnRzIiksIHJlbW92ZUFsbFJlc291cmNlQnJlYWtwb2ludHMuYmluZCh0aGlzKSk7Ci0g
ICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludHMiKSwgdG9nZ2xl
QWxsUmVzb3VyY2VCcmVha3BvaW50cyk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludHMiKSwgcmVtb3ZlQWxsUmVz
b3VyY2VCcmVha3BvaW50cyk7CiAgICAgfQogCiAgICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQodHJl
ZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwppbmRleCBkNjE4
NzRhNjljNjdmNTBmZDIxZjE1ODVmODhiOWY2MzE1NmJlZmE5Li5kZGRmODNhODI0NDMyZmZiMzk1
MjIxN2UzZmEzNDk3NTE1MGUzM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwpAQCAtMzUyLDE1
ICszNTIsMTIgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3ID0gY2xhc3MgTG9nQ29udGVu
dFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFYKICAgICAgICAgaWYgKGV2ZW50LnRh
cmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJhIikpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250
ZXh0TWVudShldmVudCk7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5D
b250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIgTG9nIiksIHRoaXMuX2NsZWFy
TG9nLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsK
IAotICAgICAgICB2YXIgY2xlYXJMb2dPblJlbG9hZFVJU3RyaW5nID0gV2ViSW5zcGVjdG9yLmxv
Z01hbmFnZXIuY2xlYXJMb2dPbk5hdmlnYXRlU2V0dGluZy52YWx1ZSA/IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiS2VlcCBMb2cgb24gTmF2aWdhdGlvbiIpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDbGVhciBMb2cgb24gTmF2aWdhdGlvbiIpOwotCisgICAgICAgIGxldCBjbGVhckxvZ09uUmVs
b2FkVUlTdHJpbmcgPSBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5jbGVhckxvZ09uTmF2aWdhdGVT
ZXR0aW5nLnZhbHVlID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJLZWVwIExvZyBvbiBOYXZpZ2F0
aW9uIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIExvZyBvbiBOYXZpZ2F0aW9uIik7
CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oY2xlYXJMb2dPblJlbG9hZFVJU3RyaW5n
LCB0aGlzLl90b2dnbGVDbGVhckxvZ09uTmF2aWdhdGVTZXR0aW5nLmJpbmQodGhpcykpOwotCi0g
ICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9CiAKICAgICBfbW91c2Vkb3duKGV2ZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
T2JqZWN0UHJldmlld1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9PYmplY3RQcmV2aWV3Vmlldy5qcwppbmRleCA3YWU4NzNlNjA4MjllNzlmYzIyZTZi
MWEwZTMwN2NjOGU4ZDIwNDBhLi41MjJmMzc2M2QwMWFmOThhYTdkNjJhNDQwYTRlNzI3MmRlMTg0
MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9PYmplY3RQcmV2aWV3Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9PYmplY3RQcmV2aWV3Vmlldy5qcwpAQCAtMjYxLDIwICsyNjEsMTggQEAg
V2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3ID0gY2xhc3MgT2JqZWN0UHJldmlld1ZpZXcg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2IKIAogICAgIF9jb250ZXh0TWVudUhhbmRsZXIoZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51KGV2ZW50KTsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAKLSAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZyBWYWx1ZSIpLCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHZhciByZW1vdGVPYmplY3QgPSB0aGlzLl9yZW1vdGVPYmplY3Q7Ci0g
ICAgICAgICAgICB2YXIgaXNJbXBvc3NpYmxlID0gIXRoaXMuX3Byb3BlcnR5UGF0aCB8fCB0aGlz
Ll9wcm9wZXJ0eVBhdGguaXNGdWxsUGF0aEltcG9zc2libGUoKTsKLSAgICAgICAgICAgIHZhciB0
ZXh0ID0gaXNJbXBvc3NpYmxlID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RlZCBWYWx1
ZSIpIDogdGhpcy5fcHJvcGVydHlQYXRoLmRpc3BsYXlQYXRoKFdlYkluc3BlY3Rvci5Qcm9wZXJ0
eVBhdGguVHlwZS5WYWx1ZSk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJMb2cgVmFsdWUiKSwgKCkgPT4geworICAgICAgICAgICAgbGV0IHJl
bW90ZU9iamVjdCA9IHRoaXMuX3JlbW90ZU9iamVjdDsKKyAgICAgICAgICAgIGxldCBpc0ltcG9z
c2libGUgPSAhdGhpcy5fcHJvcGVydHlQYXRoIHx8IHRoaXMuX3Byb3BlcnR5UGF0aC5pc0Z1bGxQ
YXRoSW1wb3NzaWJsZSgpOworICAgICAgICAgICAgbGV0IHRleHQgPSBpc0ltcG9zc2libGUgPyBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdGVkIFZhbHVlIikgOiB0aGlzLl9wcm9wZXJ0eVBh
dGguZGlzcGxheVBhdGgoV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlKTsKIAog
ICAgICAgICAgICAgaWYgKCFpc0ltcG9zc2libGUpCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnF1aWNrQ29uc29sZS5wcm9tcHQucHVzaEhpc3RvcnlJdGVtKHRleHQpOwogCiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuY29uc29sZUxvZ1ZpZXdDb250cm9sbGVyLmFwcGVuZEltbWVkaWF0
ZUV4ZWN1dGlvbldpdGhSZXN1bHQodGV4dCwgdGhpcy5fcmVtb3RlT2JqZWN0LCBpc0ltcG9zc2li
bGUpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotCi0gICAgICAgIGNvbnRleHRNZW51LnNob3co
KTsgICAgICAgIAorICAgICAgICB9KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVt
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0
VHJlZUJhc2VUcmVlRWxlbWVudC5qcwppbmRleCBkODRkNjdhYzA4ZWE4NDY3OTM0Yzk4NjZjYjVj
Y2Y0ZjUyMjUwYWFlLi4yYjY4NDlmYzQ1MjQ3OWI2ZTBmZjcxZjFjMzQ0YWE5ZWYzYjkxNzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmpl
Y3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanMKQEAgLTE4Miw3ICsx
ODIsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCA9IGNsYXNzIE9i
amVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgZXh0ZW5kcwogCiAgICAgX2NvbnRleHRNZW51SGFuZGxl
cihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUoZXZlbnQpOworICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKIAogICAgICAgICBpZiAo
dHlwZW9mIHRoaXMudHJlZU91dGxpbmUub2JqZWN0VHJlZUVsZW1lbnRBZGRDb250ZXh0TWVudUl0
ZW1zID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9iamVj
dFRyZWVFbGVtZW50QWRkQ29udGV4dE1lbnVJdGVtcyh0aGlzLCBjb250ZXh0TWVudSk7CkBAIC0x
OTAsMzAgKzE5MCwyNCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCA9
IGNsYXNzIE9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgZXh0ZW5kcwogICAgICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAgICB9ICAgICAgICAgICAgIAog
Ci0gICAgICAgIHZhciByZXNvbHZlZFZhbHVlID0gdGhpcy5yZXNvbHZlZFZhbHVlKCk7Ci0gICAg
ICAgIGlmICghcmVzb2x2ZWRWYWx1ZSkgewotICAgICAgICAgICAgaWYgKCFjb250ZXh0TWVudS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOworICAgICAgICBp
ZiAoIXRoaXMucmVzb2x2ZWRWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
CiAKICAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5ICYmIHRoaXMuX3Byb3BlcnR5LnN5bWJvbCkK
ICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMb2cgU3ltYm9sIiksIHRoaXMuX2xvZ1N5bWJvbFByb3BlcnR5LmJpbmQodGhpcykpOwogCiAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2cg
VmFsdWUiKSwgdGhpcy5fbG9nVmFsdWUuYmluZCh0aGlzKSk7CiAKLSAgICAgICAgdmFyIHByb3Bl
cnR5UGF0aCA9IHRoaXMucmVzb2x2ZWRWYWx1ZVByb3BlcnR5UGF0aCgpOworICAgICAgICBsZXQg
cHJvcGVydHlQYXRoID0gdGhpcy5yZXNvbHZlZFZhbHVlUHJvcGVydHlQYXRoKCk7CiAgICAgICAg
IGlmIChwcm9wZXJ0eVBhdGggJiYgIXByb3BlcnR5UGF0aC5pc0Z1bGxQYXRoSW1wb3NzaWJsZSgp
KSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29weSBQYXRoIHRvIFByb3BlcnR5IiksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgUGF0aCB0
byBQcm9wZXJ0eSIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNvcHlUZXh0KHByb3BlcnR5UGF0aC5kaXNwbGF5UGF0aChXZWJJbnNwZWN0b3IuUHJvcGVy
dHlQYXRoLlR5cGUuVmFsdWUpKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRv
cigpOwogCiAgICAgICAgIHRoaXMuX2FwcGVuZE1lbnVzSXRlbXNGb3JPYmplY3QoY29udGV4dE1l
bnUsIHJlc29sdmVkVmFsdWUpOwotCi0gICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9
CiAKICAgICBfYXBwZW5kTWVudXNJdGVtc0Zvck9iamVjdChjb250ZXh0TWVudSwgcmVzb2x2ZWRW
YWx1ZSkKQEAgLTIyNiwxMiArMjIwLDEyIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRy
ZWVFbGVtZW50ID0gY2xhc3MgT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCBleHRlbmRzCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSByZXNw
b25zZS5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlID0g
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5zY3JpcHRGb3JJZGVudGlmaWVyKGxvY2F0aW9u
LnNjcmlwdElkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHJlc3Bv
bnNlLmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnNjcmlwdEZvcklkZW50aWZpZXIobG9jYXRpb24u
c2NyaXB0SWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxv
Y2F0aW9uKGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VD
b2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlv
bi5jb2x1bW5OdW1iZXIgfHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd1NvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRl
eHRFZGl0b3IuanMKaW5kZXggZmY4ZmIwMzNjNDZlYTk0ZDI1NTdiMDdhNGYxMzU1ZWVkMmUwYzkz
MC4uZTZiZWE3MTQzNWNkMTY3OGRiNGUwYmNjMjEzNjM0ZGE1ZGZlMDMxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRF
ZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTk3MSw0NiArOTcxLDM2IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVu
ZHMgV2ViSW5zcGVjCiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKIAotICAgICAg
ICBmdW5jdGlvbiBjb250aW51ZVRvTG9jYXRpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmNvbnRpbnVlVG9Mb2NhdGlvbihzY3JpcHQuaWQs
IHNvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyLCBzb3VyY2VDb2RlTG9jYXRpb24uY29sdW1u
TnVtYmVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFkZEJyZWFrcG9pbnQoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMudGV4dEVkaXRvckJyZWFrcG9p
bnRBZGRlZCh0aGlzLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICBsZXQgYWRk
QnJlYWtwb2ludCA9ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy50ZXh0RWRp
dG9yQnJlYWtwb2ludEFkZGVkKHRoaXMsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAg
ICAgICAgICB0aGlzLnNldEJyZWFrcG9pbnRJbmZvRm9yTGluZUFuZENvbHVtbihkYXRhLmxpbmVO
dW1iZXIsIGRhdGEuY29sdW1uTnVtYmVyLCBkYXRhLmJyZWFrcG9pbnRJbmZvKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIHJldmVhbEluU2lkZWJhcigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5zaG93RGVidWdnZXJUYWIoYnJlYWtwb2ludCk7Ci0gICAgICAg
IH0KKyAgICAgICAgfTsKIAotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRleHRNZW51KGV2ZW50KTsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2ViSW5z
cGVjdG9yLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAKICAgICAgICAgLy8g
UGF1c2VkLiBBZGQgQ29udGludWUgdG8gSGVyZSBvcHRpb24gb25seSBpZiB3ZSBoYXZlIGEgc2Ny
aXB0IGlkZW50aWZpZXIgZm9yIHRoZSBsb2NhdGlvbi4KICAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1hbmFnZXIucGF1c2VkKSB7Ci0gICAgICAgICAgICB2YXIgZWRpdG9yTGluZUlu
Zm8gPSB7bGluZU51bWJlciwgY29sdW1uTnVtYmVyfTsKLSAgICAgICAgICAgIHZhciB1bmZvcm1h
dHRlZExpbmVJbmZvID0gdGhpcy5fdW5mb3JtYXR0ZWRMaW5lSW5mb0ZvckVkaXRvckxpbmVJbmZv
KGVkaXRvckxpbmVJbmZvKTsKLSAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlTG9jYXRpb24gPSB0
aGlzLl9zb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih1bmZvcm1hdHRlZExpbmVJ
bmZvLmxpbmVOdW1iZXIsIHVuZm9ybWF0dGVkTGluZUluZm8uY29sdW1uTnVtYmVyKTsKKyAgICAg
ICAgICAgIGxldCBlZGl0b3JMaW5lSW5mbyA9IHtsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJ9Owor
ICAgICAgICAgICAgbGV0IHVuZm9ybWF0dGVkTGluZUluZm8gPSB0aGlzLl91bmZvcm1hdHRlZExp
bmVJbmZvRm9yRWRpdG9yTGluZUluZm8oZWRpdG9yTGluZUluZm8pOworICAgICAgICAgICAgbGV0
IHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3NvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxv
Y2F0aW9uKHVuZm9ybWF0dGVkTGluZUluZm8ubGluZU51bWJlciwgdW5mb3JtYXR0ZWRMaW5lSW5m
by5jb2x1bW5OdW1iZXIpOwogCisgICAgICAgICAgICBsZXQgc2NyaXB0OwogICAgICAgICAgICAg
aWYgKHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlNjcmlwdCkKLSAgICAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gc291cmNlQ29kZUxvY2F0aW9u
LnNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgc2NyaXB0ID0gc291cmNlQ29kZUxvY2F0aW9u
LnNvdXJjZUNvZGU7CiAgICAgICAgICAgICBlbHNlIGlmIChzb3VyY2VDb2RlTG9jYXRpb24uc291
cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKLSAgICAgICAgICAgICAg
ICB2YXIgc2NyaXB0ID0gc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUuc2NyaXB0Rm9yTG9j
YXRpb24oc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBzY3JpcHQgPSBzb3Vy
Y2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS5zY3JpcHRGb3JMb2NhdGlvbihzb3VyY2VDb2RlTG9j
YXRpb24pOwogCiAgICAgICAgICAgICBpZiAoc2NyaXB0KSB7Ci0KLSAgICAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGludWUgdG8g
SGVyZSIpLCBjb250aW51ZVRvTG9jYXRpb24pOworICAgICAgICAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250aW51ZSB0byBIZXJlIiksICgp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5j
b250aW51ZVRvTG9jYXRpb24oc2NyaXB0LmlkLCBzb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJl
ciwgc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSBbXTsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGl0b3JCcmVha3BvaW50cy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgdmFyIGxpbmVJbmZvID0gZWRpdG9yQnJlYWtwb2ludHNbaV07Ci0gICAgICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IHRoaXMuX2JyZWFrcG9pbnRGb3JFZGl0b3JMaW5lSW5mbyhs
aW5lSW5mbyk7CisgICAgICAgIGxldCBicmVha3BvaW50cyA9IFtdOworICAgICAgICBmb3IgKGxl
dCBsaW5lSW5mbyBvZiBlZGl0b3JCcmVha3BvaW50cykgeworICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSB0aGlzLl9icmVha3BvaW50Rm9yRWRpdG9yTGluZUluZm8obGluZUluZm8pOwogICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCk7CiAgICAgICAgICAgICBpZiAoYnJl
YWtwb2ludCkKICAgICAgICAgICAgICAgICBicmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOwpA
QCAtMTAxOCw5ICsxMDA4LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0g
Y2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgICAgICAv
LyBObyBicmVha3BvaW50cy4KICAgICAgICAgaWYgKCFicmVha3BvaW50cy5sZW5ndGgpIHsKLQog
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkFkZCBCcmVha3BvaW50IiksIGFkZEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0gICAgICAgICAg
ICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTAzMCw0MyArMTAxOCwzMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Ig
PSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgICAg
ICAgICBpZiAoIVdlYkluc3BlY3Rvci5pc1Nob3dpbmdEZWJ1Z2dlclRhYigpKSB7CiAgICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBpbiBE
ZWJ1Z2dlciBUYWIiKSwgcmV2ZWFsSW5TaWRlYmFyKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV2ZWFsIGluIERlYnVnZ2Vy
IFRhYiIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93RGVi
dWdnZXJUYWIoYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIE11bHRpcGxlIGJyZWFrcG9pbnRzLgotICAgICAgICB2
YXIgc2hvdWxkRGlzYWJsZSA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJy
ZWFrcG9pbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnRzW2ld
LmRpc2FibGVkKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkRGlzYWJsZSA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiByZW1vdmVCcmVha3BvaW50cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzW2ldOworICAgICAgICBsZXQgcmVtb3ZlQnJl
YWtwb2ludHMgPSAoKSA9PiB7CisgICAgICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIGJy
ZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1h
bmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpKQogICAgICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfTsKIAotICAgICAgICBm
dW5jdGlvbiB0b2dnbGVCcmVha3BvaW50cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAg
YnJlYWtwb2ludHNbaV0uZGlzYWJsZWQgPSBzaG91bGREaXNhYmxlOwotICAgICAgICB9CisgICAg
ICAgIGxldCBzaG91bGREaXNhYmxlID0gYnJlYWtwb2ludHMuc29tZSgoYnJlYWtwb2ludCkgPT4g
IWJyZWFrcG9pbnQuZGlzYWJsZWQpOworICAgICAgICBsZXQgdG9nZ2xlQnJlYWtwb2ludHMgPSAo
c2hvdWxkRGlzYWJsZSkgPT4geworICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBi
cmVha3BvaW50cykKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gc2hvdWxk
RGlzYWJsZTsKKyAgICAgICAgfTsKIAogICAgICAgICBpZiAoc2hvdWxkRGlzYWJsZSkKLSAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNh
YmxlIEJyZWFrcG9pbnRzIiksIHRvZ2dsZUJyZWFrcG9pbnRzLmJpbmQodGhpcykpOworICAgICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc2Fi
bGUgQnJlYWtwb2ludHMiKSwgdG9nZ2xlQnJlYWtwb2ludHMpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5h
YmxlIEJyZWFrcG9pbnRzIiksIHRvZ2dsZUJyZWFrcG9pbnRzLmJpbmQodGhpcykpOwotICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIEJy
ZWFrcG9pbnRzIiksIHJlbW92ZUJyZWFrcG9pbnRzLmJpbmQodGhpcykpOwotICAgICAgICBjb250
ZXh0TWVudS5zaG93KCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnRzIiksIHRvZ2dsZUJyZWFrcG9pbnRz
KTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRlbGV0ZSBCcmVha3BvaW50cyIpLCByZW1vdmVCcmVha3BvaW50cyk7CiAgICAgfQogCiAgICAg
dGV4dEVkaXRvckJyZWFrcG9pbnRBZGRlZCh0ZXh0RWRpdG9yLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UYWJCYXJJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGFiQmFySXRlbS5qcwppbmRleCBiMjFlYzk3YWM3MDZiNWE3MjVkZjMxMjMzOWVlYTI1
MTg4YjViNzEwLi5mY2FjZGYyODcxZDNhNGY0Y2VkOTkzNmMwOTdjOTRmMzRlYzgyZDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJ
dGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhckl0ZW0uanMKQEAgLTE4MCwzNCArMTgwLDI0IEBAIFdlYkluc3BlY3Rvci5UYWJCYXJJdGVt
ID0gY2xhc3MgVGFiQmFySXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
aWYgKCF0aGlzLl9wYXJlbnRUYWJCYXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dmFyIGhhc090aGVyTm9uUGlubmVkVGFicyA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpdGVt
IG9mIHRoaXMuX3BhcmVudFRhYkJhci50YWJCYXJJdGVtcykgewotICAgICAgICAgICAgaWYgKGl0
ZW0gPT09IHRoaXMgfHwgaXRlbS5waW5uZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBoYXNPdGhlck5vblBpbm5lZFRhYnMgPSB0cnVlOwotICAgICAgICAgICAgYnJl
YWs7IAotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2xvc2VUYWIoKQotICAgICAgICB7
CisgICAgICAgIGxldCBjbG9zZVRhYiA9ICgpID0+IHsKICAgICAgICAgICAgIHRoaXMuX3BhcmVu
dFRhYkJhci5yZW1vdmVUYWJCYXJJdGVtKHRoaXMpOwotICAgICAgICB9CisgICAgICAgIH07CiAK
LSAgICAgICAgZnVuY3Rpb24gY2xvc2VPdGhlclRhYnMoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2YXIgdGFiQmFySXRlbXMgPSB0aGlzLl9wYXJlbnRUYWJCYXIudGFiQmFySXRlbXM7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBpID0gdGFiQmFySXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkp
IHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRhYkJhckl0ZW1zW2ldOworICAgICAgICBs
ZXQgY2xvc2VPdGhlclRhYnMgPSAoKSA9PiB7CisgICAgICAgICAgICBsZXQgdGFiQmFySXRlbXMg
PSB0aGlzLl9wYXJlbnRUYWJCYXIudGFiQmFySXRlbXM7CisgICAgICAgICAgICBmb3IgKGxldCBp
ID0gdGFiQmFySXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgICAg
ICBsZXQgaXRlbSA9IHRhYkJhckl0ZW1zW2ldOwogICAgICAgICAgICAgICAgIGlmIChpdGVtID09
PSB0aGlzIHx8IGl0ZW0ucGlubmVkKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICB0aGlzLl9wYXJlbnRUYWJCYXIucmVtb3ZlVGFiQmFySXRlbShpdGVtKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgICAgIHZhciBjb250
ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwotICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xvc2UgVGFiIiks
IGNsb3NlVGFiLmJpbmQodGhpcyksICFoYXNPdGhlck5vblBpbm5lZFRhYnMpOwotICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xvc2UgT3RoZXIg
VGFicyIpLCBjbG9zZU90aGVyVGFicy5iaW5kKHRoaXMpLCAhaGFzT3RoZXJOb25QaW5uZWRUYWJz
KTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOworICAgICAgICBsZXQgaGFzT3RoZXJOb25Q
aW5uZWRUYWJzID0gdGhpcy5fcGFyZW50VGFiQmFyLnRhYkJhckl0ZW1zLnNvbWUoKGl0ZW0pID0+
IGl0ZW0gIT09IHRoaXMgJiYgIWl0ZW0ucGlubmVkKTsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51
ID0gV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CisgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbG9zZSBU
YWIiKSwgY2xvc2VUYWIsICFoYXNPdGhlck5vblBpbm5lZFRhYnMpOworICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xvc2UgT3RoZXIgVGFicyIp
LCBjbG9zZU90aGVyVGFicywgIWhhc090aGVyTm9uUGlubmVkVGFicyk7CiAgICAgfQogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qcwppbmRleCBlOTA2YjgxZjQwN2YzZGIxZDk2
Yjc4YjQ5ZmY3NjY3MmQ5YTc3ZDQ3Li43M2FiNDc5MGRjNGQxMTM5Y2Y4Mjk5M2ViNzdlNmIzZDQ1
MDA4YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qcwpAQCAtOTQ0LDE2ICs5
NDQsMTUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsID0gY2xhc3MgVGltZWxp
bmVTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgaWYgKCF3aW5kb3cuUmVw
bGF5QWdlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZnVuY3Rpb24gdG9nZ2xl
UmVwbGF5SW50ZXJmYWNlKCkgeworICAgICAgICBsZXQgdG9nZ2xlUmVwbGF5SW50ZXJmYWNlID0g
KCkgPT4gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dSZXBsYXlJbnRlcmZhY2VTZXR0
aW5nLnZhbHVlID0gIVdlYkluc3BlY3Rvci5zaG93UmVwbGF5SW50ZXJmYWNlU2V0dGluZy52YWx1
ZTsKLSAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5l
dyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOworICAgICAgICBsZXQgY29udGV4dE1l
bnUgPSBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKICAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5zaG93UmVwbGF5SW50ZXJmYWNlU2V0dGluZy52YWx1ZSkK
ICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJIaWRlIFJlcGxheSBDb250cm9scyIpLCB0b2dnbGVSZXBsYXlJbnRlcmZhY2UpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2hvdyBSZXBsYXkgQ29udHJvbHMiKSwgdG9nZ2xlUmVwbGF5SW50ZXJmYWNlKTsK
LSAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0KIAogICAgIF9yZXBsYXlDYXB0dXJl
QnV0dG9uQ2xpY2tlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVG9vbGJhci5qcwppbmRleCA0YTVmNzZmMTQzOGMzN2NlZTVlNTMwNzRkMWUx
NTY0OWI1ZjU1ZTg1Li41ODBkOWVmNjZlYjZmN2FjZTc1NDE2NWQxNTY2MTA3ZTg4ZTZjNTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29s
YmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rv
b2xiYXIuanMKQEAgLTE5OSw3ICsxOTksNyBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNz
IFRvb2xiYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogCiAgICAgX2hhbmRs
ZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKKyAgICAgICAgbGV0IGNvbnRl
eHRNZW51ID0gV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7
CiAKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiSWNvbiBhbmQgVGV4dCAoVmVydGljYWwpIiksIHRoaXMuX2NoYW5nZURpc3BsYXlN
b2RlLmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExh
YmVsVmVydGljYWwpLCB0aGlzLl9kaXNwbGF5TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIu
RGlzcGxheU1vZGUuSWNvbkFuZExhYmVsVmVydGljYWwpOwogICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRDaGVja2JveEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJY29uIGFuZCBUZXh0IChI
b3Jpem9udGFsKSIpLCB0aGlzLl9jaGFuZ2VEaXNwbGF5TW9kZS5iaW5kKHRoaXMsIFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpLCB0aGlzLl9k
aXNwbGF5TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExh
YmVsSG9yaXpvbnRhbCk7CkBAIC0yMTAsOCArMjEwLDYgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIg
PSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU21hbGwgSWNv
bnMiKSwgdGhpcy5fdG9nZ2xlU21hbGxJY29ucy5iaW5kKHRoaXMpLCB0aGlzLl9zaXplTW9kZSA9
PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2l6ZU1vZGUuU21hbGwpOwogICAgICAgICB9Ci0KLSAg
ICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0KIAogICAgIF9jaGFuZ2VEaXNwbGF5TW9k
ZShkaXNwbGF5TW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRl
bS5qcwppbmRleCA3ODMwMTc0Nzk4MTljOTZmMThjZjIxN2U2YzkxODc0MDQ0YTc3ODg2Li45MzE0
YmE4N2E0NDlkYjdjMjk0ZWU4YTQxYTYwNGQ4ZWUyODE0ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yVHJl
ZUl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVTZWxlY3RvclRyZWVJdGVtLmpzCkBAIC0xMzIsMjcgKzEzMiwyNSBAQCBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclRyZWVJdGVtID0gY2xhc3MgVmlzdWFsU3R5bGVT
ZWxlY3RvclRyZWVJdGVtIGV4dAogCiAgICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQp
CiAgICAgewotICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51KGV2ZW50KTsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAKICAgICAgICAgaWYgKHRoaXMucmVw
cmVzZW50ZWRPYmplY3Qub3duZXJSdWxlKSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBTb3VyY2UiKSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2hvdyBTb3VyY2UiKSwgKCkgPT4gewogICAgICAgICAgICAgICAgIGlmIChldmVudC5tZXRh
S2V5KQogICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd09yaWdpbmFsVW5mb3Jt
YXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24odGhpcy5yZXByZXNlbnRlZE9iamVjdC5vd25lclJ1bGUu
c291cmNlQ29kZUxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5zaG93U291cmNlQ29kZUxvY2F0aW9uKHRoaXMucmVwcmVzZW50
ZWRPYmplY3Qub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgICAgICAgICB9LmJp
bmQodGhpcykpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBSdWxlIiksIGZ1bmN0
aW9uKCkgeworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29weSBSdWxlIiksICgpID0+IHsKICAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5jb3B5VGV4dCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdlbmVyYXRlQ1NTUnVsZVN0cmlu
ZygpKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSk7CiAKLSAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc2V0IiksIGZ1bmN0
aW9uKCkgeworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVzZXQiKSwgKCkgPT4gewogICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVj
dC5yZXNldFRleHQoKTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yVHJlZUl0ZW0uRXZlbnQuU3R5bGVUZXh0
UmVzZXQpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotCi0gICAgICAgIGNvbnRleHRNZW51LnNo
b3coKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgX2hhbmRsZUNoZWNrYm94Q2hhbmdlZChl
dmVudCkK
</data>
<flag name="review"
          id="291200"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="291201"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>