<?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>122062</bug_id>
          
          <creation_ts>2013-09-28 08:10:21 -0700</creation_ts>
          <short_desc>Web Inspector: content view in back/forward list multiple times won&apos;t restore earlier positions</short_desc>
          <delta_ts>2013-10-02 16:32:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934270</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-09-28 08:10:21 -0700</bug_when>
    <thetext>The inspector implicitly saves content view&apos;s last-used scroll positions, but doesn&apos;t save multiple positions per content view. If the same content view has multiple entries in the back/forward list, such entries further back in the history which were associated with a specific line number/position will not have that position restored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934271</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-28 08:10:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/15105797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934272</commentid>
    <comment_count>2</comment_count>
      <attachid>212900</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-09-28 08:18:18 -0700</bug_when>
    <thetext>Created attachment 212900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934273</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-09-28 08:24:17 -0700</bug_when>
    <thetext>I extracted BackForwardEntry in the hopes that more functionality would be moved into there, such as taking different restore actions based on ContentView subclass. I&apos;m not sure if that would make this less coupled than the current version which stores an arbitrary callback.

In the next few patches, I want to merge BackForwardEntry with the cookies used for restoring across inspector close/opens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934276</commentid>
    <comment_count>4</comment_count>
      <attachid>212900</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-09-28 08:35:26 -0700</bug_when>
    <thetext>Comment on attachment 212900
Patch

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

&gt; Source/WebInspectorUI/UserInterface/ContentViewContainer.js:152
&gt; +        if (currentEntry &amp;&amp; currentEntry.contentView === contentView &amp;&amp; Object.shallowEqual(currentEntry.cookie, newEntry.cookie))

Object.shallowEqual will not compare the positionToReveal or textRangeToSelect objects. So a navigation to the same location will push another entry. Perhaps we need a more advanced Object.shallowEqual that does an a.equals(b) if the objects are the same type/constructor and has an equals function.

&gt; Source/WebInspectorUI/UserInterface/ContentViewContainer.js:440
&gt; +        entry.restorePositions();
&gt;          this._restoreScrollPositionsForContentView(contentView);

Should these lines flip, or do they not interfere in practice?

&gt; Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js:266
&gt; +        var cookie = {};
&gt; +        cookie.positionToReveal = positionToReveal;
&gt; +        cookie.textRangeToSelect = textRangeToSelect;
&gt; +        cookie.forceUnformatted = forceUnformatted;

This could be one line. I&apos;m not sure textRangeToSelect should be in the cookie. That doesn&apos;t get restored in Xcode when going back/forward. Also forceUnformatted seems weird to trigger. I would only expect position.

Also the position will highlight/flash when revealed. That might be weird on back/forward vs a direct navigation.

&gt; Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js:267
&gt; +        var restoreCallback = function(contentView, cookie) {

I&apos;d put a newline before this line to separate out the function so it isn&apos;t as hidden in a large block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934282</commentid>
    <comment_count>5</comment_count>
      <attachid>212900</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-09-28 08:52:10 -0700</bug_when>
    <thetext>Comment on attachment 212900
Patch

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

Looks good. The Object.shallowEqual issue is the only big issue.

&gt; Source/WebInspectorUI/UserInterface/BackForwardEntry.js:36
&gt; +    restorePositions: function()

I think restoreCookie would be a better name. There is nothing about &quot;positions&quot; that this explicitly restores.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934284</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-09-28 09:00:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I extracted BackForwardEntry in the hopes that more functionality would be moved into there, such as taking different restore actions based on ContentView subclass. I&apos;m not sure if that would make this less coupled than the current version which stores an arbitrary callback.
&gt; 
&gt; In the next few patches, I want to merge BackForwardEntry with the cookies used for restoring across inspector close/opens.

Where is the BackForwardEntry patch?

Making ContentViewController aware of specific ContentView subclasses would be a layering violation. The callback makes sense with how it is used by the sidebar. I do worry there are places where a resource content view will be shown that does not go through the sidebar and it will miss out of restore functionality. Adding a generic content view interface that each view can implement to provide a cookie and restore would be another approach. But getting the cookie from the contentView up-front to compare before it is shown would be a challenge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934298</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-09-28 10:09:35 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 212900 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212900&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/ContentViewContainer.js:152
&gt; &gt; +        if (currentEntry &amp;&amp; currentEntry.contentView === contentView &amp;&amp; Object.shallowEqual(currentEntry.cookie, newEntry.cookie))
&gt; 
&gt; Object.shallowEqual will not compare the positionToReveal or textRangeToSelect objects. So a navigation to the same location will push another entry. Perhaps we need a more advanced Object.shallowEqual that does an a.equals(b) if the objects are the same type/constructor and has an equals function.

Oh, good catch. Sometimes position is just a line number integer, other times a SourceCodePosition instance.

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/ContentViewContainer.js:440
&gt; &gt; +        entry.restorePositions();
&gt; &gt;          this._restoreScrollPositionsForContentView(contentView);
&gt; 
&gt; Should these lines flip, or do they not interfere in practice?

It&apos;s not clear that we should restore scroll positions when moving through entries that were created by clicking on links to specific lines. If you imagine the case when the back and forward history can be visualized, it would be confusing to see script.js:999, jump to it, but instead see some other position. I think Xcode does not save scroll positions for this reason.

&gt; &gt; Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js:266
&gt; &gt; +        var cookie = {};
&gt; &gt; +        cookie.positionToReveal = positionToReveal;
&gt; &gt; +        cookie.textRangeToSelect = textRangeToSelect;
&gt; &gt; +        cookie.forceUnformatted = forceUnformatted;
&gt; 
&gt; This could be one line. I&apos;m not sure textRangeToSelect should be in the cookie. That doesn&apos;t get restored in Xcode when going back/forward. Also forceUnformatted seems weird to trigger. I would only expect position.

OK

&gt; Also the position will highlight/flash when revealed. That might be weird on back/forward vs a direct navigation.

I didn&apos;t find it overly distracting. In fact it might be desired since the navigated-to line is not always revealed at the same vertical position within the editor.

&gt; &gt; Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js:267
&gt; &gt; +        var restoreCallback = function(contentView, cookie) {
&gt; 
&gt; I&apos;d put a newline before this line to separate out the function so it isn&apos;t as hidden in a large block.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934299</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-09-28 10:10:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 212900 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212900&amp;action=review
&gt;
&gt; &gt; Source/WebInspectorUI/UserInterface/BackForwardEntry.js:36
&gt; &gt; +    restorePositions: function()
&gt; 
&gt; I think restoreCookie would be a better name. There is nothing about &quot;positions&quot; that this explicitly restores.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934300</commentid>
    <comment_count>9</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-09-28 10:16:36 -0700</bug_when>
    <thetext>&gt; &gt; In the next few patches, I want to merge BackForwardEntry with the cookies used for restoring across inspector close/opens.
&gt; 
&gt; Where is the BackForwardEntry patch?

Oops, I meant to say &quot;bug(s)&quot;. See https://bugs.webkit.org/show_bug.cgi?id=122063
 
&gt; Making ContentViewController aware of specific ContentView subclasses would be a layering violation. The callback makes sense with how it is used by the sidebar. I do worry there are places where a resource content view will be shown that does not go through the sidebar and it will miss out of restore functionality. Adding a generic content view interface that each view can implement to provide a cookie and restore would be another approach. But getting the cookie from the contentView up-front to compare before it is shown would be a challenge.

So I&apos;ll keep the callback for now, but move to the cookie interface used for preserving content views across inspector close/open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934464</commentid>
    <comment_count>10</comment_count>
      <attachid>212954</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-09-29 23:30:32 -0700</bug_when>
    <thetext>Created attachment 212954
Take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935090</commentid>
    <comment_count>11</comment_count>
      <attachid>212954</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-01 10:42:56 -0700</bug_when>
    <thetext>Comment on attachment 212954
Take 2

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

&gt; Source/WebInspectorUI/ChangeLog:60
&gt; +        Need a short description (OOPS!).
&gt; +        Need the bug URL (OOPS!).

OOPS.

&gt; Source/WebInspectorUI/UserInterface/BackForwardEntry.js:37
&gt; +WebInspector.BackForwardEntry.prototype = {
&gt; +    constructor: WebInspector.BackForwardEntry,

Even if it isn&apos;t useful now, this should still inherit from WebInspector.Object.

&gt; Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js:264
&gt; +        var cookie = { lineNumber: positionToReveal.lineNumber, columnNumber: positionToReveal.columnNumber};

Nit, space after { should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935092</commentid>
    <comment_count>12</comment_count>
      <attachid>212954</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-01 10:44:01 -0700</bug_when>
    <thetext>Comment on attachment 212954
Take 2

Rejecting attachment 212954 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 212954, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebInspectorUI/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/2956007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935125</commentid>
    <comment_count>13</comment_count>
      <attachid>213108</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-10-01 12:15:04 -0700</bug_when>
    <thetext>Created attachment 213108
Take 2.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935151</commentid>
    <comment_count>14</comment_count>
      <attachid>213108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-01 12:54:11 -0700</bug_when>
    <thetext>Comment on attachment 213108
Take 2.1

Rejecting attachment 213108 from commit-queue.

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

Last 500 characters of output:
ucceeded at 393 (offset 2 lines).
1 out of 13 hunks FAILED -- saving rejects to file Source/WebInspectorUI/UserInterface/ContentViewContainer.js.rej
patching file Source/WebInspectorUI/UserInterface/Main.html
patching file Source/WebInspectorUI/UserInterface/Main.js
patching file Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js

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

Full output: http://webkit-queues.appspot.com/results/2832120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935298</commentid>
    <comment_count>15</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-10-01 18:14:59 -0700</bug_when>
    <thetext>I&apos;m not sure why commit-queue is angry as I just rebased, I&apos;ll look at it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935567</commentid>
    <comment_count>16</comment_count>
      <attachid>213203</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-10-02 14:55:05 -0700</bug_when>
    <thetext>Created attachment 213203
Take 2.1 (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935601</commentid>
    <comment_count>17</comment_count>
      <attachid>213203</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-02 16:31:58 -0700</bug_when>
    <thetext>Comment on attachment 213203
Take 2.1 (rebased)

Clearing flags on attachment: 213203

Committed r156809: &lt;http://trac.webkit.org/changeset/156809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935602</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-02 16:32:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212900</attachid>
            <date>2013-09-28 08:18:18 -0700</date>
            <delta_ts>2013-09-29 23:30:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122062-20130928101815.patch</filename>
            <type>text/plain</type>
            <size>12721</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA5
ZDI1MDhkNTUyNjU2NTdmMWMxMjg2YWJlNzgzNTIzNTQ2MjEzOWU1Li4xNWMxYTcwZWU5MTI2ZGY2
MjQ2YzcwNGZlZjYzMmQzZTNmYTBkYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxMy0wOS0yOCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2F2ZSBhbmQgcmVzdG9yZSBzb3VyY2Ug
cG9zaXRpb25zIGluIGJhY2svZm9yd2FyZCBoaXN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB0aGUgYmFjay9mb3J3YXJkIGVu
dHJpZXMgY29tcHJpc2VkIG9mIG9ubHkgdGhlIGNvbnRlbnQgdmlld3MsIGJ1dAorICAgICAgICBu
b3QgdGhlaXIgcG9zaXRpb25zIGlmIG5hdmlnYXRlZCB2aWEgaHlwZXJsaW5rIChpLmUuLCBoYW5k
bGluZyBzY3JpcHQuanM6NDIpLgorICAgICAgICBXaGVuIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0
aGUgc2FtZSBjb250ZW50IHZpZXcgYXBwZWFyZWQgaW4gdGhlIGJhY2svZm9yd2FyZAorICAgICAg
ICBsaXN0LCB0aGUgbW9zdCByZWNlbnQgbmF2aWdhdGlvbiB3YXMgZGlzcGxheWVkIHJhdGhlciB0
aGFuIHRoZSBsaW5rZWQgcG9zaXRpb24uCisKKyAgICAgICAgV2Ugbm93IHN0b3JlIGNvbnRleHQg
bmVjZXNzYXJ5IHRvIHJlLW5hdmlnYXRlIHN1Y2ggaHlwZXJsaW5rcyBieSBzdG9yaW5nIHZpZXct
CisgICAgICAgIHNwZWNpZmljIGRhdGEgaW5zaWRlIGEgY29va2llIG9iamVjdCwgYW5kIGludm9r
ZSBhIHN1cHBsaWVkIGNhbGxiYWNrIHRvIHRha2UKKyAgICAgICAgYW55IHBvc2l0aW9uIGluaXRp
YWxpemF0aW9uIGFjdGlvbnMsIHN1Y2ggYXMgY2FsbGluZyBUZXh0RWRpdG9yLnJldmVhbFBvc2l0
aW9uLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLnJlc3RvcmVQb3NpdGlvbnMpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLnNob3dDb250ZW50Vmlldyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLl91cGRhdGVDb250ZW50Vmlld05h
dmlnYXRpb25JdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJv
dG90eXBlLl91cGRhdGVGaW5kQmFubmVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRl
bnRWaWV3Q29udGFpbmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29u
dGFpbmVyLnByb3RvdHlwZS5nZXQgY3VycmVudEJhY2tGb3J3YXJkRW50cnkpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5zaG93Q29udGVudFZp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlw
ZS5zaG93QmFja0ZvcndhcmRFbnRyeUZvckluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX3ByZXBhcmVDb250ZW50Vmlld1RvU2hvdyk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUucmVzdG9yZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUuc2hvd1NvdXJjZUNvZGUpOgorCiAyMDEzLTA5LTI2ICBCcmlhbiBKLiBCdXJnICA8YnVy
Z0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNzb2NpYXRl
IG9sZCBjb250ZW50IHZpZXdzIHRoYXQgYXJlIHNwbGljZWQgZnJvbSBiYWNrL2ZvcndhcmQgbGlz
dApAQCAtMTQ3Miw3ICsxNTA0LDcgQEAKIAogMjAxMy0wNy0yMiAgRGllZ28gUGlubyBHYXJjaWEg
IDxkcGlub0BpZ2FsaWEuY29tPgogCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IFdoZW4gcmlnaHQt
Y2xpY2tpbmcgb24gYSBEYXRhR3JpZCBjb2x1bW4sIHNob3cgZWRpdGluZyAKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogV2hlbiByaWdodC1jbGlja2luZyBvbiBhIERhdGFHcmlkIGNvbHVtbiwgc2hv
dyBlZGl0aW5nCiAgICAgICAgIG1lbnUgb3B0aW9uIGFzICJFZGl0IDxjb2x1bW5OYW1lPiIgaW5z
dGVhZCBvZiBqdXN0ICJFZGl0IgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE4OTcwCiAKQEAgLTE3NDgsNyArMTc4MCw3IEBACiAKIDIwMTMtMDYtMjcg
IEphbWVzIENyYWlnICA8amFtZXNAY29va2llY3Jvb2suY29tPgogCi0gICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEFYOiBBZGQgY29udGFpbmVyIEFSSUEgcm9sZXMgKHRvb2xiYXIsIG1haW4sIGxhYmVs
ZWQgcmVnaW9ucywgZXRjLikgCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFYOiBBZGQgY29udGFp
bmVyIEFSSUEgcm9sZXMgKHRvb2xiYXIsIG1haW4sIGxhYmVsZWQgcmVnaW9ucywgZXRjLikKICAg
ICAgICAgc28gdGhlIGxheW91dCBpcyBtb3JlIGRpc2NvdmVyYWJsZSB0byBzY3JlZW4gcmVhZGVy
IHVzZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTgxMDQKIApAQCAtMTc3OSw3ICsxODExLDcgQEAKIAogICAgICAgICBNYWluIGNvbnNvbGUgbG9n
IGFyZWEgKGRpdi5jb25zb2xlLW1lc3NhZ2VzKSBpcyBub3cgYW4gQVJJQSBsaXZlIHJlZ2lvbiAo
cm9sZT0ibG9nIikKICAgICAgICAgc28gc2NyZWVuIHJlYWRlcnMgc3BlYWsgcGxhaW4gdGV4dCB1
cGRhdGVzLgotICAgICAgICAKKwogICAgICAgICBBbHNvIGFkZGVkIGNvbnRleHR1YWwgbGFiZWxz
IChlLmcuIGlucHV0L291dHB1dCkgYnV0IHNwZWVjaCBvdXRwdXQgdmVyaWZpY2F0aW9uIG9mCiAg
ICAgICAgIHRob3NlIGlzIGN1cnJlbnRseSBibG9ja2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTE4MDk2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0JhY2tGb3J3YXJkRW50cnkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYWNrRm9yd2FyZEVudHJ5LmpzCmluZGV4IDEzMWI1MmYzZjBmNTI3MzVlNzk2NGU5Zjk3ZjE4
NDUxNWYxNGFlZGYuLjk3YWVmN2YyMTJhZTA3Njk1NjdkZjY3MWE0M2NmYjE0NzZjZjU4YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJk
RW50cnkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFja0Zv
cndhcmRFbnRyeS5qcwpAQCAtMjQsOCArMjQsMTcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkgPSBmdW5jdGlvbihjb250ZW50Vmlldywgc291
cmNlQ29kZVBvc2l0aW9uKQorV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkgPSBmdW5jdGlv
bihjb250ZW50VmlldywgY29va2llLCByZXN0b3JlQ2FsbGJhY2spCiB7CiAJdGhpcy5jb250ZW50
VmlldyA9IGNvbnRlbnRWaWV3OwotCXRoaXMuc291cmNlQ29kZVBvc2l0aW9uID0gc291cmNlQ29k
ZVBvc2l0aW9uOwotfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisJdGhpcy5jb29raWUg
PSBjb29raWU7CisgICAgdGhpcy5yZXN0b3JlQ2FsbGJhY2sgPSByZXN0b3JlQ2FsbGJhY2s7Cit9
OworCitXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUgPSB7CisgICAgcmVz
dG9yZVBvc2l0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMucmVzdG9y
ZUNhbGxiYWNrICYmIHR5cGVvZiB0aGlzLnJlc3RvcmVDYWxsYmFjayA9PT0gImZ1bmN0aW9uIikK
KyAgICAgICAgICAgIHRoaXMucmVzdG9yZUNhbGxiYWNrLmNhbGwobnVsbCwgdGhpcy5jb250ZW50
VmlldywgdGhpcy5jb29raWUpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50QnJvd3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRCcm93c2VyLmpzCmluZGV4IDM3ZjUwYWY3YWJi
NWFmNzVmNTJjYzI3MDJkMzg0YTRkZTFmMzlhNTIuLmRiOTg3YThiMjBiNDViMDEzMDU3ZmYyNTM1
ZGNjMjc0ZDBiZmFiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRlbnRCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRlbnRCcm93c2VyLmpzCkBAIC0xNTcsOSArMTU3LDkgQEAgV2ViSW5zcGVj
dG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJl
cHJlc2VudGVkT2JqZWN0KTsKICAgICB9LAogCi0gICAgc2hvd0NvbnRlbnRWaWV3OiBmdW5jdGlv
bihjb250ZW50VmlldykKKyAgICBzaG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3
LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9j
b250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOworICAgICAg
ICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRl
bnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjayk7CiAgICAgfSwKIAogICAgIGNvbnRlbnRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5
RXhpc3RpbmcpCkBAIC00MTEsNyArNDExLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBHbyB0aHJvdWdoIGVhY2ggb2YgdGhlIGl0ZW1z
IG9mIHRoZSBuZXcgY29udGVudCB2aWV3IGFuZCBhZGQgYSBkaXZpZGVyIGJlZm9yZSB0aGVtLgog
ICAgICAgICBjdXJyZW50Q29udGVudFZpZXcubmF2aWdhdGlvbkl0ZW1zLmZvckVhY2goZnVuY3Rp
b24obmF2aWdhdGlvbkl0ZW0sIGluZGV4KSB7Ci0gICAgICAgICAgICAvLyBBZGQgZGl2aWRlcnMg
YmVmb3JlIGl0ZW1zIHVubGVzcyBpdCdzIHRoZSBmaXJzdCBpdGVtIGFuZCBub3QgYSBidXR0b24u
IAorICAgICAgICAgICAgLy8gQWRkIGRpdmlkZXJzIGJlZm9yZSBpdGVtcyB1bmxlc3MgaXQncyB0
aGUgZmlyc3QgaXRlbSBhbmQgbm90IGEgYnV0dG9uLgogICAgICAgICAgICAgaWYgKGluZGV4ICE9
PSAwIHx8IG5hdmlnYXRpb25JdGVtIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmln
YXRpb25JdGVtKSB7CiAgICAgICAgICAgICAgICAgdmFyIGRpdmlkZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbTsKICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uQmFy
Lmluc2VydE5hdmlnYXRpb25JdGVtKGRpdmlkZXIsIGluc2VydGlvbkluZGV4KyspOwpAQCAtNDMz
LDcgKzQzMyw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9maW5kQmFubmVyLm51bWJlck9mUmVzdWx0cyA9IG51bGw7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fZmlu
ZEJhbm5lci50YXJnZXRFbGVtZW50ID0gY3VycmVudENvbnRlbnRWaWV3LmVsZW1lbnQ7CiAgICAg
ICAgIHRoaXMuX2ZpbmRCYW5uZXIubnVtYmVyT2ZSZXN1bHRzID0gY3VycmVudENvbnRlbnRWaWV3
Lmhhc1BlcmZvcm1lZFNlYXJjaCA/IGN1cnJlbnRDb250ZW50Vmlldy5udW1iZXJPZlNlYXJjaFJl
c3VsdHMgOiBudWxsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250ZW50Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4IDQ5ZTM5ZTJiMjkzOWIx
ZTRmZDU3ODIyZmZjYzIxZDAyYjIwN2VmZWIuLmVlOWYyMDU3ZDA4ODMyZjk1N2U1M2YyYjVkNDc1
MzVmY2EzYjMxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCkBAIC02Nyw2ICs2NywxMyBAQCBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gdGhpcy5fYmFja0ZvcndhcmRMaXN0W3RoaXMuX2N1cnJlbnRJbmRleF0uY29udGVudFZp
ZXc7CiAgICAgfSwKIAorICAgIGdldCBjdXJyZW50QmFja0ZvcndhcmRFbnRyeSgpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fY3VycmVudEluZGV4IDwgMCB8fCB0aGlzLl9jdXJyZW50SW5kZXgg
PiB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxsOworICAgICAgICByZXR1cm4gdGhpcy5fYmFja0ZvcndhcmRMaXN0W3RoaXMuX2N1cnJlbnRJ
bmRleF07CisgICAgfSwKKwogICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwpA
QCAtMTI2LDcgKzEzMyw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjb250ZW50VmlldzsKICAgICB9LAogCi0gICAgc2hv
d0NvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBzaG93Q29udGVudFZpZXc6
IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcpKQpAQCAtMTM4LDE3ICsxNDUsMTggQEAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGNvbnRlbnRW
aWV3LnBhcmVudENvbnRhaW5lciAmJiBjb250ZW50Vmlldy5wYXJlbnRDb250YWluZXIgIT09IHRo
aXMpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICAvLyBEb24ndCBkbyBhbnl0
aGluZyBpZiB0aGUgY29udGVudCB2aWV3IGlzIGFscmVhZHkgdGhlIGN1cnJlbnQgY29udGVudCB2
aWV3LgotICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVu
dFZpZXc7Ci0gICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgPT09IGNvbnRlbnRWaWV3KQot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3OworICAgICAgICAvLyBEb24ndCBkbyBhbnl0
aGluZyBpZiB0aGUgbmV3IGNvbnRlbnQgdmlldyB3b3VsZCBjcmVhdGUgYW4gaWRlbnRpY2FsIGJh
Y2svZm9yd2FyZCBsaXN0IGVudHJ5LgorICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5j
dXJyZW50QmFja0ZvcndhcmRFbnRyeTsKKyAgICAgICAgdmFyIG5ld0VudHJ5ID0gbmV3IFdlYklu
c3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5KGNvbnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxs
YmFjayk7CisKKyAgICAgICAgaWYgKGN1cnJlbnRFbnRyeSAmJiBjdXJyZW50RW50cnkuY29udGVu
dFZpZXcgPT09IGNvbnRlbnRWaWV3ICYmIE9iamVjdC5zaGFsbG93RXF1YWwoY3VycmVudEVudHJ5
LmNvb2tpZSwgbmV3RW50cnkuY29va2llKSkKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50RW50
cnkuY29udGVudFZpZXc7CiAKICAgICAgICAgLy8gU2hvd2luZyBhIGNvbnRlbnQgdmlldyB3aWxs
IHRydW5jYXRlIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBhZnRlciB0aGUgY3VycmVudCBpbmRleCBh
bmQgaW5zZXJ0IHRoZSBjb250ZW50IHZpZXcKICAgICAgICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUg
bGlzdC4gRmluYWxseSwgdGhlIGN1cnJlbnQgaW5kZXggd2lsbCBiZSB1cGRhdGVkIHRvIHBvaW50
IHRvIHRoZSBlbmQgb2YgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogCiAgICAgICAgIC8vIEluY3Jl
bWVudCB0aGUgY3VycmVudCBpbmRleCB0byB3aGVyZSB3ZSB3aWxsIGluc2VydCB0aGUgY29udGVu
dCB2aWV3LgogICAgICAgICB2YXIgbmV3SW5kZXggPSB0aGlzLl9jdXJyZW50SW5kZXggKyAxOwot
ICAgICAgICB2YXIgbmV3RW50cnkgPSBuZXcgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnko
Y29udGVudFZpZXcsIG51bGwpOwogCiAgICAgICAgIC8vIEluc2VydCB0aGUgY29udGVudCB2aWV3
IGF0IHRoZSBuZXcgaW5kZXguIFRoaXMgd2lsbCByZW1vdmUgYW55IGNvbnRlbnQgdmlld3MgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBpbmRleC4KICAgICAgICAgdmFyIHJlbW92ZWRFbnRy
aWVzID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0LnNwbGljZShuZXdJbmRleCwgdGhpcy5fYmFja0Zv
cndhcmRMaXN0Lmxlbmd0aCAtIG5ld0luZGV4LCBuZXdFbnRyeSk7CkBAIC0xODQsMTMgKzE5Miwx
NSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEhpZGUgdGhlIGN1cnJlbnRseSB2aXNpYmxl
IGNvbnRlbnQgdmlldy4KLSAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3Vy
cmVudENvbnRlbnRWaWV3OwotICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3KQotICAgICAg
ICAgICAgdGhpcy5faGlkZUNvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50Vmlldyk7CisgICAgICAg
IHZhciBwcmV2aW91c0VudHJ5ID0gdGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKKyAgICAg
ICAgaWYgKHByZXZpb3VzRW50cnkpCisgICAgICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZpZXco
cHJldmlvdXNFbnRyeS5jb250ZW50Vmlldyk7CiAKICAgICAgICAgdGhpcy5fY3VycmVudEluZGV4
ID0gaW5kZXg7CisgICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJlbnRCYWNrRm9y
d2FyZEVudHJ5OworICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50RW50cnkpOwogCi0gICAg
ICAgIHRoaXMuX3Nob3dDb250ZW50Vmlldyh0aGlzLmN1cnJlbnRDb250ZW50Vmlldyk7CisgICAg
ICAgIHRoaXMuX3Nob3dDb250ZW50VmlldyhjdXJyZW50RW50cnkuY29udGVudFZpZXcpOwogCiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgIH0s
CkBAIC00MjQsNiArNDM0LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnBy
b3RvdHlwZSA9IHsKIAogICAgIF9wcmVwYXJlQ29udGVudFZpZXdUb1Nob3c6IGZ1bmN0aW9uKGNv
bnRlbnRWaWV3KQogICAgIHsKKyAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0Zv
cndhcmRFbnRyeTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkuY29udGVudFZpZXcgPT09
IGNvbnRlbnRWaWV3KTsKKyAgICAgICAgZW50cnkucmVzdG9yZVBvc2l0aW9ucygpOwogICAgICAg
ICB0aGlzLl9yZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yQ29udGVudFZpZXcoY29udGVudFZpZXcp
OwogCiAgICAgICAgIGNvbnRlbnRWaWV3LnZpc2libGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5l
bC5qcwppbmRleCAzZjU4NzA0NTA2ODdlY2FhYWU0MWUwZDBlY2VlNGIyOWJjODQ0MTk2Li5kMGQ4
NGFjYTkwZGY5M2FkZmZkNjM0MDU3ZTFjZjgzZmQ5NzJiYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5l
bC5qcwpAQCAtMjU5LDE2ICsyNTksMjEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJlcHJlc2VudGVkT2JqZWN0LmlzTWFpblJlc291
cmNlKCkpCiAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0
LnBhcmVudEZyYW1lOwogCi0gICAgICAgIHZhciBjb250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5j
b250ZW50QnJvd3Nlci5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVk
T2JqZWN0KTsKLQotICAgICAgICBpZiAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRnJhbWVDb250ZW50VmlldykKLSAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dTb3VyY2VD
b2RlKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVk
KTsKLSAgICAgICAgZWxzZSBpZiAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcpCi0gICAgICAgICAgICBjb250ZW50Vmlldy5zaG93
UmVzcG9uc2UocG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3Jt
YXR0ZWQpOwotICAgICAgICBlbHNlIGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5TY3JpcHRDb250ZW50VmlldykKLSAgICAgICAgICAgIGNvbnRlbnRWaWV3LnJldmVhbFBv
c2l0aW9uKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0
dGVkKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRW
aWV3KGNvbnRlbnRWaWV3KTsKKyAgICAgICAgdmFyIG5ld0NvbnRlbnRWaWV3ID0gV2ViSW5zcGVj
dG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVz
ZW50ZWRPYmplY3QpOworICAgICAgICB2YXIgY29va2llID0ge307CisgICAgICAgIGNvb2tpZS5w
b3NpdGlvblRvUmV2ZWFsID0gcG9zaXRpb25Ub1JldmVhbDsKKyAgICAgICAgY29va2llLnRleHRS
YW5nZVRvU2VsZWN0ID0gdGV4dFJhbmdlVG9TZWxlY3Q7CisgICAgICAgIGNvb2tpZS5mb3JjZVVu
Zm9ybWF0dGVkID0gZm9yY2VVbmZvcm1hdHRlZDsKKyAgICAgICAgdmFyIHJlc3RvcmVDYWxsYmFj
ayA9IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUpIHsKKyAgICAgICAgICAgIGlmIChjb250
ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3KQorICAgICAg
ICAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dTb3VyY2VDb2RlKGNvb2tpZS5wb3NpdGlvblRvUmV2
ZWFsLCBjb29raWUudGV4dFJhbmdlVG9TZWxlY3QsIGNvb2tpZS5mb3JjZVVuZm9ybWF0dGVkKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3KQorICAgICAgICAgICAgICAgIGNvbnRlbnRWaWV3
LnNob3dSZXNwb25zZShjb29raWUucG9zaXRpb25Ub1JldmVhbCwgY29va2llLnRleHRSYW5nZVRv
U2VsZWN0LCBjb29raWUuZm9yY2VVbmZvcm1hdHRlZCk7CisgICAgICAgICAgICBlbHNlIGlmIChj
b250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldykKKyAg
ICAgICAgICAgICAgICBjb250ZW50Vmlldy5yZXZlYWxQb3NpdGlvbihjb29raWUucG9zaXRpb25U
b1JldmVhbCwgY29va2llLnRleHRSYW5nZVRvU2VsZWN0LCBjb29raWUuZm9yY2VVbmZvcm1hdHRl
ZCk7CisgICAgICAgIH07CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNo
b3dDb250ZW50VmlldyhuZXdDb250ZW50VmlldywgY29va2llLCByZXN0b3JlQ2FsbGJhY2spOwog
ICAgIH0sCiAKICAgICBzaG93U291cmNlQ29kZUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VDb2Rl
TG9jYXRpb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212954</attachid>
            <date>2013-09-29 23:30:32 -0700</date>
            <delta_ts>2013-10-01 12:15:00 -0700</delta_ts>
            <desc>Take 2</desc>
            <filename>bug-122062-20130929233031.patch</filename>
            <type>text/plain</type>
            <size>32517</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA5
ZDI1MDhkNTUyNjU2NTdmMWMxMjg2YWJlNzgzNTIzNTQ2MjEzOWU1Li41NTRjZjA2MjEzOTIwZjMx
ZDNkNGUxNjcyZTE1ZTIzMmQxM2FhNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMTMtMDktMjkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNhdmUgYW5kIHJlc3RvcmUgc291cmNl
IHBvc2l0aW9ucyBpbiBiYWNrL2ZvcndhcmQgaGlzdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIGJhY2svZm9yd2FyZCBl
bnRyaWVzIGNvbXByaXNlZCBvZiBvbmx5IHRoZSBjb250ZW50IHZpZXdzLCBidXQKKyAgICAgICAg
bm90IHRoZWlyIHBvc2l0aW9ucyBpZiBuYXZpZ2F0ZWQgdmlhIGh5cGVybGluayAoaS5lLiwgaGFu
ZGxpbmcgc2NyaXB0LmpzOjQyKS4KKyAgICAgICAgV2hlbiBtdWx0aXBsZSBpbnN0YW5jZXMgb2Yg
dGhlIHNhbWUgY29udGVudCB2aWV3IGFwcGVhcmVkIGluIHRoZSBiYWNrL2ZvcndhcmQKKyAgICAg
ICAgbGlzdCwgdGhlIG1vc3QgcmVjZW50IG5hdmlnYXRpb24gd2FzIGRpc3BsYXllZCByYXRoZXIg
dGhhbiB0aGUgbGlua2VkIHBvc2l0aW9uLgorCisgICAgICAgIFdlIG5vdyBzdG9yZSBjb250ZXh0
IG5lY2Vzc2FyeSB0byByZS1uYXZpZ2F0ZSBzdWNoIGh5cGVybGlua3MgYnkgc3RvcmluZyB2aWV3
LQorICAgICAgICBzcGVjaWZpYyBkYXRhIGluc2lkZSBhIGNvb2tpZSBvYmplY3QsIGFuZCBpbnZv
a2UgYSBzdXBwbGllZCBjYWxsYmFjayB0byB0YWtlCisgICAgICAgIGFueSBwb3NpdGlvbiBpbml0
aWFsaXphdGlvbiBhY3Rpb25zLCBzdWNoIGFzIGNhbGxpbmcgVGV4dEVkaXRvci5yZXZlYWxQb3Np
dGlvbi4KKyAgICAgICAgVGhpcyBzdGF0ZSBpcyBlbmNhcHN1bGF0ZWQgaW50byBCYWNrRm9yd2Fy
ZEVudHJ5IGluc3RhbmNlcy4KKworICAgICAgICBGdW5jdGlvbnMgdGhhdCBzYXZlIGFuZCByZXN0
b3JlIHNjcm9sbCBwb3NpdGlvbnMgaW5zaWRlIGNvbnRlbnQgdmlld3MgaGF2ZSBiZWVuIGNoYW5n
ZWQgdG8gc3RvcmUgc3RhdGUgaW4gQmFja0ZvcndhcmRFbnRyeSBpbnN0YW5jZXMsIHNvIG11bHRp
cGxlIHNjcm9sbCBwb3NpdGlvbnMKKyAgICAgICAgY2FuIGJlIHNhdmVkIGZvciBhIGNvbnRlbnQg
dmlldyBhcHBlYXJpbmcgaW4gdGhlIG5hdmlnYXRpb24gaGlzdG9yeSBtb3JlIHRoYW4gb25jZS4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFja0ZvcndhcmRFbnRyeS5qczogQWRkZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUuZ2V0IGNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5LnByb3RvdHlwZS5nZXQgY29va2llKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5LnByb3RvdHlwZS5wcmVwYXJl
VG9TaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5LnByb3RvdHlw
ZS5wcmVwYXJlVG9IaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5
LnByb3RvdHlwZS5fcmVzdG9yZUZyb21Db29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJh
Y2tGb3J3YXJkRW50cnkucHJvdG90eXBlLl9yZXN0b3JlU2Nyb2xsUG9zaXRpb25zKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5LnByb3RvdHlwZS5fc2F2ZVNjcm9sbFBv
c2l0aW9ucyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250ZW50QnJvd3Nlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUuc2hvd0NvbnRlbnRW
aWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUuX3Vw
ZGF0ZUNvbnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZW50QnJvd3Nlci5wcm90b3R5cGUuX3VwZGF0ZUZpbmRCYW5uZXIpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLmdldCBjdXJyZW50Q29udGVudFZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5n
ZXQgY3VycmVudEJhY2tGb3J3YXJkRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5zaG93Q29udGVudFZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5zaG93QmFja0ZvcndhcmRF
bnRyeUZvckluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5l
ci5wcm90b3R5cGUucmVwbGFjZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuY2xvc2VBbGxDb250ZW50Vmlld3NPZlByb3Rv
dHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90
eXBlLmNsb3NlQWxsQ29udGVudFZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuZ29CYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuZ29Gb3J3YXJkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuc2hvd24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5oaWRkZW4pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5fc2hvd0Vu
dHJ5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5
cGUuX2hpZGVFbnRyeSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLm9wZW5V
UkwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLnJlc3Rv
cmVDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwu
cHJvdG90eXBlLnNob3dTb3VyY2VDb2RlKToKKworMjAxMy0wOS0yOSAgQnJpYW4gSi4gQnVyZyAg
PGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzc29j
aWF0ZSBvbGQgY29udGVudCB2aWV3cyB0aGF0IGFyZSBzcGxpY2VkIGZyb20gYmFjay9mb3J3YXJk
IGxpc3QKKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAg
ICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250ZW50Vmlld0NvbnRhaW5l
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5
cGUuc2hvd0NvbnRlbnRWaWV3KToKKworMjAxMy0wOS0yOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdA
Y3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2F2ZSBhbmQgcmVz
dG9yZSBzb3VyY2UgcG9zaXRpb25zIGluIGJhY2svZm9yd2FyZCBoaXN0b3J5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIwNjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB0aGUgYmFj
ay9mb3J3YXJkIGVudHJpZXMgY29tcHJpc2VkIG9mIG9ubHkgdGhlIGNvbnRlbnQgdmlld3MsIGJ1
dAorICAgICAgICBub3QgdGhlaXIgcG9zaXRpb25zIGlmIG5hdmlnYXRlZCB2aWEgaHlwZXJsaW5r
IChpLmUuLCBoYW5kbGluZyBzY3JpcHQuanM6NDIpLgorICAgICAgICBXaGVuIG11bHRpcGxlIGlu
c3RhbmNlcyBvZiB0aGUgc2FtZSBjb250ZW50IHZpZXcgYXBwZWFyZWQgaW4gdGhlIGJhY2svZm9y
d2FyZAorICAgICAgICBsaXN0LCB0aGUgbW9zdCByZWNlbnQgbmF2aWdhdGlvbiB3YXMgZGlzcGxh
eWVkIHJhdGhlciB0aGFuIHRoZSBsaW5rZWQgcG9zaXRpb24uCisKKyAgICAgICAgV2Ugbm93IHN0
b3JlIGNvbnRleHQgbmVjZXNzYXJ5IHRvIHJlLW5hdmlnYXRlIHN1Y2ggaHlwZXJsaW5rcyBieSBz
dG9yaW5nIHZpZXctCisgICAgICAgIHNwZWNpZmljIGRhdGEgaW5zaWRlIGEgY29va2llIG9iamVj
dCwgYW5kIGludm9rZSBhIHN1cHBsaWVkIGNhbGxiYWNrIHRvIHRha2UKKyAgICAgICAgYW55IHBv
c2l0aW9uIGluaXRpYWxpemF0aW9uIGFjdGlvbnMsIHN1Y2ggYXMgY2FsbGluZyBUZXh0RWRpdG9y
LnJldmVhbFBvc2l0aW9uLgorICAgICAgICBUaGlzIHN0YXRlIGlzIGVuY2Fwc3VsYXRlZCBpbnRv
IEJhY2tGb3J3YXJkRW50cnkgaW5zdGFuY2VzLgorCisgICAgICAgIEZ1bmN0aW9ucyB0aGF0IHNh
dmUgYW5kIHJlc3RvcmUgc2Nyb2xsIHBvc2l0aW9ucyBpbnNpZGUgY29udGVudCB2aWV3cyBoYXZl
IGJlZW4gY2hhbmdlZCB0byBzdG9yZSBzdGF0ZSBpbiBCYWNrRm9yd2FyZEVudHJ5IGluc3RhbmNl
cywgc28gbXVsdGlwbGUgc2Nyb2xsIHBvc2l0aW9ucworICAgICAgICBjYW4gYmUgc2F2ZWQgZm9y
IGEgY29udGVudCB2aWV3IGFwcGVhcmluZyBpbiB0aGUgbmF2aWdhdGlvbiBoaXN0b3J5IG1vcmUg
dGhhbiBvbmNlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLmdldCBjb250ZW50Vmlldyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUuZ2V0IGNvb2tp
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUucHJl
cGFyZVRvU2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90
b3R5cGUucHJlcGFyZVRvSGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRF
bnRyeS5wcm90b3R5cGUuX3Jlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5CYWNrRm9yd2FyZEVudHJ5LnByb3RvdHlwZS5fcmVzdG9yZVNjcm9sbFBvc2l0aW9ucyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUuX3NhdmVTY3Jv
bGxQb3NpdGlvbnMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWlu
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90
eXBlLnNob3dDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b250YWluZXIucHJvdG90eXBlLnNob3dCYWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5yZXBsYWNlQ29u
dGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnBy
b3RvdHlwZS5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuY2xvc2VBbGxDb250ZW50Vmll
d3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlw
ZS5zaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJv
dG90eXBlLmhpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWlu
ZXIucHJvdG90eXBlLl9zaG93RW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3Q29udGFpbmVyLnByb3RvdHlwZS5faGlkZUVudHJ5KToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01haW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iub3BlblVSTCk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUucmVzdG9yZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1Nv
dXJjZUNvZGUpOgorCiAyMDEzLTA5LTI2ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5n
dG9uLmVkdT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNzb2NpYXRlIG9sZCBjb250ZW50
IHZpZXdzIHRoYXQgYXJlIHNwbGljZWQgZnJvbSBiYWNrL2ZvcndhcmQgbGlzdApAQCAtMTQ3Miw3
ICsxNTgzLDcgQEAKIAogMjAxMy0wNy0yMiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2Fs
aWEuY29tPgogCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IFdoZW4gcmlnaHQtY2xpY2tpbmcgb24g
YSBEYXRhR3JpZCBjb2x1bW4sIHNob3cgZWRpdGluZyAKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2hlbiByaWdodC1jbGlja2luZyBvbiBhIERhdGFHcmlkIGNvbHVtbiwgc2hvdyBlZGl0aW5nCiAg
ICAgICAgIG1lbnUgb3B0aW9uIGFzICJFZGl0IDxjb2x1bW5OYW1lPiIgaW5zdGVhZCBvZiBqdXN0
ICJFZGl0IgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE4OTcwCiAKQEAgLTE3NDgsNyArMTg1OSw3IEBACiAKIDIwMTMtMDYtMjcgIEphbWVzIENyYWln
ICA8amFtZXNAY29va2llY3Jvb2suY29tPgogCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IEFYOiBB
ZGQgY29udGFpbmVyIEFSSUEgcm9sZXMgKHRvb2xiYXIsIG1haW4sIGxhYmVsZWQgcmVnaW9ucywg
ZXRjLikgCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFYOiBBZGQgY29udGFpbmVyIEFSSUEgcm9s
ZXMgKHRvb2xiYXIsIG1haW4sIGxhYmVsZWQgcmVnaW9ucywgZXRjLikKICAgICAgICAgc28gdGhl
IGxheW91dCBpcyBtb3JlIGRpc2NvdmVyYWJsZSB0byBzY3JlZW4gcmVhZGVyIHVzZXJzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgxMDQKIApAQCAt
MTc3OSw3ICsxODkwLDcgQEAKIAogICAgICAgICBNYWluIGNvbnNvbGUgbG9nIGFyZWEgKGRpdi5j
b25zb2xlLW1lc3NhZ2VzKSBpcyBub3cgYW4gQVJJQSBsaXZlIHJlZ2lvbiAocm9sZT0ibG9nIikK
ICAgICAgICAgc28gc2NyZWVuIHJlYWRlcnMgc3BlYWsgcGxhaW4gdGV4dCB1cGRhdGVzLgotICAg
ICAgICAKKwogICAgICAgICBBbHNvIGFkZGVkIGNvbnRleHR1YWwgbGFiZWxzIChlLmcuIGlucHV0
L291dHB1dCkgYnV0IHNwZWVjaCBvdXRwdXQgdmVyaWZpY2F0aW9uIG9mCiAgICAgICAgIHRob3Nl
IGlzIGN1cnJlbnRseSBibG9ja2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvMTE4MDk2CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJk
RW50cnkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYWNrRm9yd2Fy
ZEVudHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMWJlYjAwYjRjYzYyMTg4YmQ1ZTJiM2IwZDE0NTgwMTJl
NGM4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogIENvcHly
aWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkJhY2tGb3J3
YXJkRW50cnkgPSBmdW5jdGlvbihjb250ZW50VmlldywgY29va2llLCByZXN0b3JlQ2FsbGJhY2sp
Cit7CisgICAgdGhpcy5fY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKKyAgICAvLyBDb29raWVz
IGFyZSBjb21wYXJlZCB3aXRoIE9iamVjdC5zaGFsbG93RXF1YWwsIHNvIHNob3VsZCBub3Qgc3Rv
cmUgb2JqZWN0cyBvciBhcnJheXMuCisgICAgdGhpcy5fY29va2llID0gY29va2llIHx8IHt9Owor
ICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9ucyA9IFtdOworICAgIHRoaXMuX3Jlc3RvcmVDYWxsYmFj
ayA9IHJlc3RvcmVDYWxsYmFjazsKK307CisKK1dlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5
LnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJk
RW50cnksCisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBjb250ZW50VmlldygpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXc7CisgICAgfSwKKworICAgIGdldCBjb29r
aWUoKQorICAgIHsKKyAgICAgICAgLy8gQ29va2llcyBhcmUgaW1tdXRhYmxlOyB0aGV5IHJlcHJl
c2VudCBhIHNwZWNpZmljIG5hdmlnYXRpb24gYWN0aW9uLgorICAgICAgICByZXR1cm4gT2JqZWN0
LnNoYWxsb3dDb3B5KHRoaXMuX2Nvb2tpZSk7CisgICAgfSwKKworICAgIHByZXBhcmVUb1Nob3c6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3RvcmVGcm9tQ29va2llKCk7CisK
KyAgICAgICAgdGhpcy5jb250ZW50Vmlldy52aXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5j
b250ZW50Vmlldy5zaG93bigpOworICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LnVwZGF0ZUxheW91
dCgpOworICAgIH0sCisKKyAgICBwcmVwYXJlVG9IaWRlOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLmNvbnRlbnRWaWV3LnZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5jb250
ZW50Vmlldy5oaWRkZW4oKTsKKworICAgICAgICB0aGlzLl9zYXZlU2Nyb2xsUG9zaXRpb25zKCk7
CisgICAgfSwKKworICAgIC8vIFByaXZhdGUKKworICAgIF9yZXN0b3JlRnJvbUNvb2tpZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzdG9yZVNjcm9sbFBvc2l0aW9ucygpOwor
CisgICAgICAgIGlmICh0aGlzLl9yZXN0b3JlQ2FsbGJhY2sgJiYgdHlwZW9mIHRoaXMuX3Jlc3Rv
cmVDYWxsYmFjayA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmVDYWxs
YmFjay5jYWxsKG51bGwsIHRoaXMuY29udGVudFZpZXcsIHRoaXMuY29va2llKTsKKyAgICB9LAor
CisgICAgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IC8vIElmIG5vIHNjcm9sbCBwb3NpdGlvbnMgYXJlIHNhdmVkLCBkbyBub3RoaW5nLgorICAgICAg
ICBpZiAoIXRoaXMuX3Njcm9sbFBvc2l0aW9ucy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdmFyIHNjcm9sbGFibGVFbGVtZW50cyA9IHRoaXMuY29udGVudFZpZXcuc2Ny
b2xsYWJsZUVsZW1lbnRzIHx8IFtdOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zY3Jv
bGxQb3NpdGlvbnMubGVuZ3RoID09PSBzY3JvbGxhYmxlRWxlbWVudHMubGVuZ3RoKTsKKworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fc2Nyb2xsUG9zaXRpb25zW2ldOwor
ICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxhYmxlRWxlbWVudHNbaV07CisgICAgICAg
ICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIC8vIFJlc3RvcmUgdGhlIHRvcCBzY3JvbGwgcG9zaXRpb24gYnkgZWl0aGVyIHNjcm9sbGlu
ZyB0byB0aGUgYm90dG9tIG9yIHRvIHRoZSBzYXZlZCBwb3NpdGlvbi4KKyAgICAgICAgICAgIGVs
ZW1lbnQuc2Nyb2xsVG9wID0gcG9zaXRpb24uaXNTY3JvbGxlZFRvQm90dG9tID8gZWxlbWVudC5z
Y3JvbGxIZWlnaHQgOiBwb3NpdGlvbi5zY3JvbGxUb3A7CisKKyAgICAgICAgICAgIC8vIERvbid0
IHJlc3RvcmUgdGhlIGxlZnQgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gc2Nyb2xsZWQgdG8gdGhlIGJv
dHRvbS4gVGhpcyB3YXkgdGhlIHdoZW4gY29udGVudCBjaGFuZ2VzCisgICAgICAgICAgICAvLyB0
aGUgdXNlciB3b24ndCBiZSBsZWZ0IGluIGEgd2VpcmQgaG9yaXpvbnRhbCBwb3NpdGlvbi4KKyAg
ICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IHBvc2l0aW9uLmlzU2Nyb2xsZWRUb0JvdHRv
bSA/IDAgOiBwb3NpdGlvbi5zY3JvbGxMZWZ0OworICAgICAgICB9CisgICAgfSwKKworICAgIF9z
YXZlU2Nyb2xsUG9zaXRpb25zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2Nyb2xs
YWJsZUVsZW1lbnRzID0gdGhpcy5jb250ZW50Vmlldy5zY3JvbGxhYmxlRWxlbWVudHMgfHwgW107
CisgICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbnMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzY3JvbGxhYmxlRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZh
ciBlbGVtZW50ID0gc2Nyb2xsYWJsZUVsZW1lbnRzW2ldOworICAgICAgICAgICAgaWYgKCFlbGVt
ZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7IHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3AsIHNjcm9sbExlZnQ6IGVsZW1lbnQu
c2Nyb2xsTGVmdCB9OworICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudFZpZXcuc2hvdWxkS2Vl
cEVsZW1lbnRzU2Nyb2xsZWRUb0JvdHRvbSkKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi5pc1Nj
cm9sbGVkVG9Cb3R0b20gPSBlbGVtZW50LmlzU2Nyb2xsZWRUb0JvdHRvbSgpOworCisgICAgICAg
ICAgICBzY3JvbGxQb3NpdGlvbnMucHVzaChwb3NpdGlvbik7CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLl9zY3JvbGxQb3NpdGlvbnMgPSBzY3JvbGxQb3NpdGlvbnM7CisgICAgfQorfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRCcm93
c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dz
ZXIuanMKaW5kZXggMzdmNTBhZjdhYmI1YWY3NWY1MmNjMjcwMmQzODRhNGRlMWYzOWE1Mi4uZGI5
ODdhOGIyMGI0NWIwMTMwNTdmZjI1MzVkY2MyNzRkMGJmYWI3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKQEAgLTE1
Nyw5ICsxNTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3
Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOwogICAgIH0sCiAKLSAgICBz
aG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIHNob3dDb250ZW50Vmll
dzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnNob3dDb250ZW50Vmll
dyhjb250ZW50Vmlldyk7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKTsK
ICAgICB9LAogCiAgICAgY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24o
cmVwcmVzZW50ZWRPYmplY3QsIG9ubHlFeGlzdGluZykKQEAgLTQxMSw3ICs0MTEsNyBAQCBXZWJJ
bnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIEdvIHRo
cm91Z2ggZWFjaCBvZiB0aGUgaXRlbXMgb2YgdGhlIG5ldyBjb250ZW50IHZpZXcgYW5kIGFkZCBh
IGRpdmlkZXIgYmVmb3JlIHRoZW0uCiAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5uYXZpZ2F0
aW9uSXRlbXMuZm9yRWFjaChmdW5jdGlvbihuYXZpZ2F0aW9uSXRlbSwgaW5kZXgpIHsKLSAgICAg
ICAgICAgIC8vIEFkZCBkaXZpZGVycyBiZWZvcmUgaXRlbXMgdW5sZXNzIGl0J3MgdGhlIGZpcnN0
IGl0ZW0gYW5kIG5vdCBhIGJ1dHRvbi4gCisgICAgICAgICAgICAvLyBBZGQgZGl2aWRlcnMgYmVm
b3JlIGl0ZW1zIHVubGVzcyBpdCdzIHRoZSBmaXJzdCBpdGVtIGFuZCBub3QgYSBidXR0b24uCiAg
ICAgICAgICAgICBpZiAoaW5kZXggIT09IDAgfHwgbmF2aWdhdGlvbkl0ZW0gaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0pIHsKICAgICAgICAgICAgICAgICB2YXIg
ZGl2aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuRGl2aWRlck5hdmlnYXRpb25JdGVtOwogICAgICAg
ICAgICAgICAgIG5hdmlnYXRpb25CYXIuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0oZGl2aWRlciwgaW5z
ZXJ0aW9uSW5kZXgrKyk7CkBAIC00MzMsNyArNDMzLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRC
cm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIubnVtYmVy
T2ZSZXN1bHRzID0gbnVsbDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9maW5kQmFubmVyLnRhcmdldEVsZW1lbnQgPSBjdXJyZW50Q29u
dGVudFZpZXcuZWxlbWVudDsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5udW1iZXJPZlJlc3Vs
dHMgPSBjdXJyZW50Q29udGVudFZpZXcuaGFzUGVyZm9ybWVkU2VhcmNoID8gY3VycmVudENvbnRl
bnRWaWV3Lm51bWJlck9mU2VhcmNoUmVzdWx0cyA6IG51bGw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIu
anMKaW5kZXggNjA4M2IxN2ZjMDQ1NDVkOTJhNTNmMWYzMTIwOTNjZTE4MTU4YmU1Yy4uYWFhMjIw
ODA3ZDU4ZDU3YmVlYjAwYzc2YmI4ZTgyYWZjZjJiODA5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIu
anMKQEAgLTY0LDYgKzY0LDEzIEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5w
cm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAodGhpcy5fY3VycmVudEluZGV4IDwgMCB8
fCB0aGlzLl9jdXJyZW50SW5kZXggPiB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gMSkK
ICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5fYmFja0Zvcndh
cmRMaXN0W3RoaXMuX2N1cnJlbnRJbmRleF0uY29udGVudFZpZXc7CisgICAgfSwKKworICAgIGdl
dCBjdXJyZW50QmFja0ZvcndhcmRFbnRyeSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY3Vy
cmVudEluZGV4IDwgMCB8fCB0aGlzLl9jdXJyZW50SW5kZXggPiB0aGlzLl9iYWNrRm9yd2FyZExp
c3QubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICByZXR1cm4g
dGhpcy5fYmFja0ZvcndhcmRMaXN0W3RoaXMuX2N1cnJlbnRJbmRleF07CiAgICAgfSwKIApAQCAt
MTI2LDcgKzEzMyw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiBjb250ZW50VmlldzsKICAgICB9LAogCi0gICAgc2hvd0Nv
bnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBzaG93Q29udGVudFZpZXc6IGZ1
bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcpKQpAQCAtMTM4LDEwICsxNDUsMTEgQEAgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGNvbnRlbnRWaWV3
LnBhcmVudENvbnRhaW5lciAmJiBjb250ZW50Vmlldy5wYXJlbnRDb250YWluZXIgIT09IHRoaXMp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGlu
ZyBpZiB0aGUgY29udGVudCB2aWV3IGlzIGFscmVhZHkgdGhlIGN1cnJlbnQgY29udGVudCB2aWV3
LgotICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZp
ZXc7Ci0gICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgPT09IGNvbnRlbnRWaWV3KQotICAg
ICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3OworICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0g
dGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKKyAgICAgICAgdmFyIHByb3Zpc2lvbmFsRW50
cnkgPSBuZXcgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkoY29udGVudFZpZXcsIGNvb2tp
ZSwgcmVzdG9yZUNhbGxiYWNrKTsKKyAgICAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgd2Ug
d291bGQgaGF2ZSBhZGRlZCBhbiBpZGVudGljYWwgYmFjay9mb3J3YXJkIGxpc3QgZW50cnkuCisg
ICAgICAgIGlmIChjdXJyZW50RW50cnkgJiYgY3VycmVudEVudHJ5LmNvbnRlbnRWaWV3ID09PSBj
b250ZW50VmlldyAmJiBPYmplY3Quc2hhbGxvd0VxdWFsKHByb3Zpc2lvbmFsRW50cnkuY29va2ll
LCBjdXJyZW50RW50cnkuY29va2llKSkKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50RW50cnku
Y29udGVudFZpZXc7CiAKICAgICAgICAgLy8gU2hvd2luZyBhIGNvbnRlbnQgdmlldyB3aWxsIHRy
dW5jYXRlIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBhZnRlciB0aGUgY3VycmVudCBpbmRleCBhbmQg
aW5zZXJ0IHRoZSBjb250ZW50IHZpZXcKICAgICAgICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgbGlz
dC4gRmluYWxseSwgdGhlIGN1cnJlbnQgaW5kZXggd2lsbCBiZSB1cGRhdGVkIHRvIHBvaW50IHRv
IHRoZSBlbmQgb2YgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgpAQCAtMTUwLDI5ICsxNTgsMzAgQEAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dmFyIG5ld0luZGV4ID0gdGhpcy5fY3VycmVudEluZGV4ICsgMTsKIAogICAgICAgICAvLyBJbnNl
cnQgdGhlIGNvbnRlbnQgdmlldyBhdCB0aGUgbmV3IGluZGV4LiBUaGlzIHdpbGwgcmVtb3ZlIGFu
eSBjb250ZW50IHZpZXdzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgaW5kZXguCi0gICAg
ICAgIHZhciByZW1vdmVkSXRlbXMgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3Quc3BsaWNlKG5ld0lu
ZGV4LCB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gbmV3SW5kZXgsIGNvbnRlbnRWaWV3
KTsKKyAgICAgICAgdmFyIHJlbW92ZWRFbnRyaWVzID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0LnNw
bGljZShuZXdJbmRleCwgdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIG5ld0luZGV4LCBw
cm92aXNpb25hbEVudHJ5KTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChuZXdJbmRleCA9PT0g
dGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpOwotICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9iYWNrRm9yd2FyZExpc3RbbmV3SW5kZXhdID09PSBjb250ZW50Vmlldyk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtuZXdJbmRleF0gPT09IHBy
b3Zpc2lvbmFsRW50cnkpOwogCiAgICAgICAgIC8vIERpc2Fzc29jaWF0ZSB3aXRoIHRoZSByZW1v
dmVkIGNvbnRlbnQgdmlld3MuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVtb3ZlZEl0
ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVtb3ZlZEVu
dHJpZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIC8vIFNraXAgZGlzYXNzb2NpYXRpb24g
aWYgdGhpcyBjb250ZW50IHZpZXcgaXMgc3RpbGwgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0Lgot
ICAgICAgICAgICAgaWYgKHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5jb250YWlucyhyZW1vdmVkSXRl
bXNbaV0pKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB0aGlzLl9k
aXNhc3NvY2lhdGVGcm9tQ29udGVudFZpZXcocmVtb3ZlZEl0ZW1zW2ldKTsKKyAgICAgICAgICAg
IHZhciBzaG91bGREaXNzb2NpYXRlQ29udGVudFZpZXcgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3Qu
c29tZShmdW5jdGlvbihleGlzdGluZ0VudHJ5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4
aXN0aW5nRW50cnkuY29udGVudFZpZXcgPT09IHJlbW92ZWRFbnRyaWVzW2ldLmNvbnRlbnRWaWV3
OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoc2hvdWxkRGlzc29jaWF0ZUNvbnRl
bnRWaWV3KQorICAgICAgICAgICAgICAgIHRoaXMuX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50Vmll
dyhyZW1vdmVkRW50cmllc1tpXSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBc3NvY2lhdGUg
d2l0aCB0aGUgbmV3IGNvbnRlbnQgdmlldy4KICAgICAgICAgY29udGVudFZpZXcuX3BhcmVudENv
bnRhaW5lciA9IHRoaXM7CiAKLSAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeShuZXdJ
bmRleCk7CisgICAgICAgIHRoaXMuc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleChuZXdJbmRl
eCk7CiAKICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3OwogICAgIH0sCiAKLSAgICBzaG93QmFj
a0ZvcndhcmRFbnRyeTogZnVuY3Rpb24oaW5kZXgpCisgICAgc2hvd0JhY2tGb3J3YXJkRW50cnlG
b3JJbmRleDogZnVuY3Rpb24oaW5kZXgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChp
bmRleCA+PSAwICYmIGluZGV4IDw9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKTsK
ICAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5s
ZW5ndGggLSAxKQpAQCAtMTgyLDEzICsxOTEsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAv
LyBIaWRlIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBjb250ZW50IHZpZXcuCi0gICAgICAgIHZhciBj
dXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKLSAgICAgICAgaWYg
KGN1cnJlbnRDb250ZW50VmlldykKLSAgICAgICAgICAgIHRoaXMuX2hpZGVDb250ZW50Vmlldyhj
dXJyZW50Q29udGVudFZpZXcpOworICAgICAgICB2YXIgcHJldmlvdXNFbnRyeSA9IHRoaXMuY3Vy
cmVudEJhY2tGb3J3YXJkRW50cnk7CisgICAgICAgIGlmIChwcmV2aW91c0VudHJ5KQorICAgICAg
ICAgICAgdGhpcy5faGlkZUVudHJ5KHByZXZpb3VzRW50cnkpOwogCiAgICAgICAgIHRoaXMuX2N1
cnJlbnRJbmRleCA9IGluZGV4OworICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJy
ZW50QmFja0ZvcndhcmRFbnRyeTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY3VycmVudEVudHJ5
KTsKIAotICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXcodGhpcy5jdXJyZW50Q29udGVudFZp
ZXcpOworICAgICAgICB0aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5KTsKIAogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250
YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKTsKICAgICB9LApAQCAtMjEz
LDcgKzIyNCw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgdmFyIGN1cnJlbnRseVNob3dpbmcgPSAodGhpcy5jdXJyZW50Q29udGVu
dFZpZXcgPT09IG9sZENvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKGN1cnJlbnRseVNob3dpbmcp
Ci0gICAgICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZpZXcob2xkQ29udGVudFZpZXcpOworICAg
ICAgICAgICAgdGhpcy5faGlkZUVudHJ5KHRoaXMuY3VycmVudEJhY2tGb3J3YXJkRW50cnkpOwog
CiAgICAgICAgIC8vIERpc2Fzc29jaWF0ZSB3aXRoIHRoZSBvbGQgY29udGVudCB2aWV3LgogICAg
ICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZpZXcob2xkQ29udGVudFZpZXcpOwpA
QCAtMjIzLDEyICsyMzQsMTMgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiBvbGRD
b250ZW50VmlldyB3aXRoIG5ld0NvbnRlbnRWaWV3IGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4K
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV0gPT09IG9s
ZENvbnRlbnRWaWV3KQotICAgICAgICAgICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtpXSA9
IG5ld0NvbnRlbnRWaWV3OworICAgICAgICAgICAgaWYgKHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtp
XS5jb250ZW50VmlldyA9PT0gb2xkQ29udGVudFZpZXcpCisgICAgICAgICAgICAgICAgdGhpcy5f
YmFja0ZvcndhcmRMaXN0W2ldLmNvbnRlbnRWaWV3ID0gbmV3Q29udGVudFZpZXc7CiAgICAgICAg
IH0KIAorICAgICAgICAvLyBSZS1zaG93IHRoZSBjdXJyZW50IGVudHJ5LCBiZWNhdXNlIGl0cyBj
b250ZW50IHZpZXcgaW5zdGFuY2Ugd2FzIHJlcGxhY2VkLgogICAgICAgICBpZiAoY3VycmVudGx5
U2hvd2luZykgewotICAgICAgICAgICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3KG5ld0NvbnRlbnRW
aWV3KTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dFbnRyeSh0aGlzLmN1cnJlbnRCYWNrRm9yd2Fy
ZEVudHJ5KTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRD
aGFuZ2UpOwogICAgICAgICB9CiAgICAgfSwKQEAgLTI0NCw3ICsyNTYsNyBAQCBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBJZiB0aGV5
IGFsbCBhcmUgd2UgY2FuIHVzZSB0aGUgcXVpY2tlciBjbG9zZUFsbENvbnRlbnRWaWV3cyBtZXRo
b2QuCiAgICAgICAgIHZhciBhbGxTYW1lUHJvdG90eXBlID0gdHJ1ZTsKICAgICAgICAgZm9yICh2
YXIgaSA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewot
ICAgICAgICAgICAgaWYgKCEodGhpcy5fYmFja0ZvcndhcmRMaXN0W2ldIGluc3RhbmNlb2YgY29u
c3RydWN0b3IpKSB7CisgICAgICAgICAgICBpZiAoISh0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV0u
Y29udGVudFZpZXcgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvcikpIHsKICAgICAgICAgICAgICAgICBh
bGxTYW1lUHJvdG90eXBlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkBAIC0yNTksMTIgKzI3MSwxMiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250
YWluZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIEhpZGUgYW5kIGRpc2Fzc29jaWF0ZSB3
aXRoIGFsbCB0aGUgY29udGVudCB2aWV3cyB0aGF0IGFyZSBpbnN0YW5jZXMgb2YgdGhlIGNvbnN0
cnVjdG9yLgogICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0
aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlz
Ll9iYWNrRm9yd2FyZExpc3RbaV07Ci0gICAgICAgICAgICBpZiAoIShjb250ZW50VmlldyBpbnN0
YW5jZW9mIGNvbnN0cnVjdG9yKSkKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX2JhY2tG
b3J3YXJkTGlzdFtpXTsKKyAgICAgICAgICAgIGlmICghKGVudHJ5LmNvbnRlbnRWaWV3IGluc3Rh
bmNlb2YgY29uc3RydWN0b3IpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBpZiAoY29udGVudFZpZXcgPT09IG9sZEN1cnJlbnRDb250ZW50VmlldykKLSAgICAgICAg
ICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZpZXcoY29udGVudFZpZXcpOworICAgICAgICAgICAg
aWYgKGVudHJ5LmNvbnRlbnRWaWV3ID09PSBvbGRDdXJyZW50Q29udGVudFZpZXcpCisgICAgICAg
ICAgICAgICAgdGhpcy5faGlkZUVudHJ5KGVudHJ5KTsKIAogICAgICAgICAgICAgaWYgKHRoaXMu
X2N1cnJlbnRJbmRleCA+PSBpKSB7CiAgICAgICAgICAgICAgICAgLy8gRGVjcmVtZW50IHRoZSBj
dXJyZW50SW5kZXggc2luY2Ugd2Ugd2lsbCByZW1vdmUgYW4gaXRlbSBpbiB0aGUgYmFjay9mb3J3
YXJkIGFycmF5CkBAIC0yNzIsMTcgKzI4NCwxNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIC0tdGhpcy5fY3VycmVudElu
ZGV4OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9t
Q29udGVudFZpZXcoY29udGVudFZpZXcpOworICAgICAgICAgICAgdGhpcy5fZGlzYXNzb2NpYXRl
RnJvbUNvbnRlbnRWaWV3KGVudHJ5LmNvbnRlbnRWaWV3KTsKIAogICAgICAgICAgICAgLy8gUmVt
b3ZlIHRoZSBpdGVtIGZyb20gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogICAgICAgICAgICAgdGhp
cy5fYmFja0ZvcndhcmRMaXN0LnNwbGljZShpLCAxKTsKICAgICAgICAgfQogCi0gICAgICAgIHZh
ciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoY3VycmVudENvbnRlbnRWaWV3IHx8ICghY3VycmVudENvbnRlbnRWaWV3
ICYmIHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gLTEpKTsKKyAgICAgICAgdmFyIGN1cnJlbnRFbnRy
eSA9IHRoaXMuY3VycmVudEJhY2tGb3J3YXJkRW50cnk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGN1cnJlbnRFbnRyeSB8fCAoIWN1cnJlbnRFbnRyeSAmJiB0aGlzLl9jdXJyZW50SW5kZXggPT09
IC0xKSk7CiAKLSAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldyAmJiBjdXJyZW50Q29udGVu
dFZpZXcgIT09IG9sZEN1cnJlbnRDb250ZW50VmlldykgewotICAgICAgICAgICAgdGhpcy5fc2hv
d0NvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50Vmlldyk7CisgICAgICAgIGlmIChjdXJyZW50RW50
cnkgJiYgY3VycmVudEVudHJ5LmNvbnRlbnRWaWV3ICE9PSBvbGRDdXJyZW50Q29udGVudFZpZXcp
IHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50cnkpOwogICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSk7CiAgICAgICAgIH0K
ICAgICB9LApAQCAtMjk2LDEwICszMDgsMTAgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29u
dGFpbmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBIaWRlIGFuZCBkaXNhc3NvY2lhdGUg
d2l0aCBhbGwgdGhlIGNvbnRlbnQgdmlld3MuCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY29u
dGVudFZpZXcgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV07CisgICAgICAgICAgICB2YXIgZW50
cnkgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV07CiAgICAgICAgICAgICBpZiAoaSA9PT0gdGhp
cy5fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAgIHRoaXMuX2hpZGVDb250ZW50Vmlldyhj
b250ZW50Vmlldyk7Ci0gICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZp
ZXcoY29udGVudFZpZXcpOworICAgICAgICAgICAgICAgIHRoaXMuX2hpZGVFbnRyeShlbnRyeSk7
CisgICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZpZXcoZW50cnkuY29u
dGVudFZpZXcpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0ID0g
W107CkBAIC0zMjIsMzIgKzMzNCwzMiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWlu
ZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNhbkdvQmFjaygpKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5KHRo
aXMuX2N1cnJlbnRJbmRleCAtIDEpOworICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5
Rm9ySW5kZXgodGhpcy5fY3VycmVudEluZGV4IC0gMSk7CiAgICAgfSwKIAogICAgIGdvRm9yd2Fy
ZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNhbkdvRm9yd2FyZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5KHRo
aXMuX2N1cnJlbnRJbmRleCArIDEpOworICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5
Rm9ySW5kZXgodGhpcy5fY3VycmVudEluZGV4ICsgMSk7CiAgICAgfSwKIAogICAgIHNob3duOiBm
dW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5j
dXJyZW50Q29udGVudFZpZXc7Ci0gICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3KQorICAg
ICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKKyAg
ICAgICAgaWYgKCFjdXJyZW50RW50cnkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dGhpcy5fc2hvd0NvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50Vmlldyk7CisgICAgICAgIHRoaXMu
X3Nob3dFbnRyeShjdXJyZW50RW50cnkpOwogICAgIH0sCiAKICAgICBoaWRkZW46IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRD
b250ZW50VmlldzsKLSAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcpCisgICAgICAgIHZh
ciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5OworICAgICAgICBp
ZiAoIWN1cnJlbnRFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9o
aWRlQ29udGVudFZpZXcoY3VycmVudENvbnRlbnRWaWV3KTsKKyAgICAgICAgdGhpcy5faGlkZUVu
dHJ5KGN1cnJlbnRFbnRyeSk7CiAgICAgfSwKIAogICAgIC8vIFByaXZhdGUKQEAgLTM3OSw3MiAr
MzkxLDIwIEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGNvbnRlbnRWaWV3LmNsb3NlZCgpOwogICAgIH0sCiAKLSAgICBfc2F2ZVNjcm9s
bFBvc2l0aW9uc0ZvckNvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKLSAgICB7Ci0g
ICAgICAgIHZhciBzY3JvbGxhYmxlRWxlbWVudHMgPSBjb250ZW50Vmlldy5zY3JvbGxhYmxlRWxl
bWVudHMgfHwgW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Nyb2xsYWJsZUVsZW1l
bnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZWxlbWVudCA9IHNjcm9sbGFibGVF
bGVtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmIChjb250ZW50Vmlldy5zaG91bGRLZWVwRWxlbWVudHNT
Y3JvbGxlZFRvQm90dG9tKQotICAgICAgICAgICAgICAgIGVsZW1lbnQuX3NhdmVkSXNTY3JvbGxl
ZFRvQm90dG9tID0gZWxlbWVudC5pc1Njcm9sbGVkVG9Cb3R0b20oKTsKLSAgICAgICAgICAgIGVs
ZW1lbnQuX3NhdmVkU2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3A7Ci0gICAgICAgICAgICBl
bGVtZW50Ll9zYXZlZFNjcm9sbExlZnQgPSBlbGVtZW50LnNjcm9sbExlZnQ7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3JDb250ZW50VmlldzogZnVu
Y3Rpb24oY29udGVudFZpZXcpCisgICAgX3Nob3dFbnRyeTogZnVuY3Rpb24oZW50cnkpCiAgICAg
ewotICAgICAgICB2YXIgc2Nyb2xsYWJsZUVsZW1lbnRzID0gY29udGVudFZpZXcuc2Nyb2xsYWJs
ZUVsZW1lbnRzIHx8IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcm9sbGFibGVF
bGVtZW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxh
YmxlRWxlbWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHRvcCBzY3JvbGwgcG9z
aXRpb24gYnkgZWl0aGVyIHNjcm9sbGluZyB0byB0aGUgYm90dG9tIG9yIHRvIHRoZSBzYXZlZCBw
b3NpdGlvbi4KLSAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gZWxlbWVudC5fc2F2ZWRJ
c1Njcm9sbGVkVG9Cb3R0b20gPyBlbGVtZW50LnNjcm9sbEhlaWdodCA6IGVsZW1lbnQuX3NhdmVk
U2Nyb2xsVG9wOwotCi0gICAgICAgICAgICAvLyBEb24ndCByZXN0b3JlIHRoZSBsZWZ0IHNjcm9s
bCBwb3NpdGlvbiB3aGVuIHNjcm9sbGVkIHRvIHRoZSBib3R0b20uIFRoaXMgd2F5IHRoZSB3aGVu
IGNvbnRlbnQgY2hhbmdlcwotICAgICAgICAgICAgLy8gdGhlIHVzZXIgd29uJ3QgYmUgbGVmdCBp
biBhIHdlaXJkIGhvcml6b250YWwgcG9zaXRpb24uCi0gICAgICAgICAgICBlbGVtZW50LnNjcm9s
bExlZnQgPSBlbGVtZW50Ll9zYXZlZElzU2Nyb2xsZWRUb0JvdHRvbSA/IDAgOiBlbGVtZW50Ll9z
YXZlZFNjcm9sbExlZnQ7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX3Nob3dDb250ZW50Vmll
dzogZnVuY3Rpb24oY29udGVudFZpZXcpCi0gICAgewotICAgICAgICBpZiAoY29udGVudFZpZXcu
dmlzaWJsZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9hZGRDb250ZW50
Vmlld0VsZW1lbnQoY29udGVudFZpZXcpOwotCi0gICAgICAgIHRoaXMuX3ByZXBhcmVDb250ZW50
Vmlld1RvU2hvdyhjb250ZW50Vmlldyk7Ci0gICAgfSwKLQotICAgIF9wcmVwYXJlQ29udGVudFZp
ZXdUb1Nob3c6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVz
dG9yZVNjcm9sbFBvc2l0aW9uc0ZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsKLQotICAgICAg
ICBjb250ZW50Vmlldy52aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgY29udGVudFZpZXcuc2hvd24o
KTsKLSAgICAgICAgY29udGVudFZpZXcudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKLQotICAgIF9o
aWRlQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQotICAgIHsKLSAgICAgICAgaWYg
KCFjb250ZW50Vmlldy52aXNpYmxlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRo
aXMuX3ByZXBhcmVDb250ZW50Vmlld1RvSGlkZShjb250ZW50Vmlldyk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGVudHJ5IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkp
OwogCi0gICAgICAgIHRoaXMuX3JlbW92ZUNvbnRlbnRWaWV3RWxlbWVudChjb250ZW50Vmlldyk7
CisgICAgICAgIHRoaXMuX2FkZENvbnRlbnRWaWV3RWxlbWVudChlbnRyeS5jb250ZW50Vmlldyk7
CisgICAgICAgIGVudHJ5LnByZXBhcmVUb1Nob3coKTsKICAgICB9LAogCi0gICAgX3ByZXBhcmVD
b250ZW50Vmlld1RvSGlkZTogZnVuY3Rpb24oY29udGVudFZpZXcpCisgICAgX2hpZGVFbnRyeTog
ZnVuY3Rpb24oZW50cnkpCiAgICAgewotICAgICAgICBjb250ZW50Vmlldy52aXNpYmxlID0gZmFs
c2U7Ci0gICAgICAgIGNvbnRlbnRWaWV3LmhpZGRlbigpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dChlbnRyeSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5KTsKIAotICAg
ICAgICB0aGlzLl9zYXZlU2Nyb2xsUG9zaXRpb25zRm9yQ29udGVudFZpZXcoY29udGVudFZpZXcp
OworICAgICAgICBlbnRyeS5wcmVwYXJlVG9IaWRlKCk7CisgICAgICAgIHRoaXMuX3JlbW92ZUNv
bnRlbnRWaWV3RWxlbWVudChlbnRyeS5jb250ZW50Vmlldyk7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGY3MmE4ZDQy
MDcyZTk2ODgyMzZhYmRlNmRiNDBjNzU1NjAzYzNhYTEuLjVmNTJjNDRlMTRhZTk3OGNiMmQyNWVj
YjlhMDY5MDZiMmE3Y2M0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTIzOSw2ICsyMzksNyBAQAogICAgIDxzY3JpcHQgc3JjPSJUZXh0
RWRpdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRXZlbnRIYW5kbGVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU291cmNlQ29kZVRleHRFZGl0b3IuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJCYWNrRm9yd2FyZEVudHJ5LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udGVudFZpZXdDb250YWluZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNs
dXN0ZXJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5qcwppbmRleCA2YTBiYmU4Y2RmYjQ5Mzc2NmE4YmQ3ZGM5YzgzZTVi
NzE1MWY4ZDA3Li43ZTdlZjYyM2IyYzRhOWNiNWI0NTI5MmY4ZjhjOTg1ZWI2ZWJjMTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMKQEAgLTUxMSw3ICs1
MTEsOCBAQCBXZWJJbnNwZWN0b3Iub3BlblVSTCA9IGZ1bmN0aW9uKHVybCwgZnJhbWUsIGFsd2F5
c09wZW5FeHRlcm5hbGx5LCBsaW5lTnVtYmVyKQogICAgIC8vIFdlYkluc3BlY3Rvci5GcmFtZS5y
ZXNvdXJjZUZvclVSTCBkb2VzIG5vdCBjaGVjayB0aGUgbWFpbiByZXNvdXJjZSwgb25seSBzdWIt
cmVzb3VyY2VzLiBTbyBjaGVjayBib3RoLgogICAgIHZhciByZXNvdXJjZSA9IGZyYW1lLnVybCA9
PT0gdXJsID8gZnJhbWUubWFpblJlc291cmNlIDogZnJhbWUucmVzb3VyY2VGb3JVUkwodXJsLCBz
ZWFyY2hDaGlsZEZyYW1lcyk7CiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIHRoaXMucmVz
b3VyY2VTaWRlYmFyUGFuZWwuc2hvd1NvdXJjZUNvZGUocmVzb3VyY2UsIGxpbmVOdW1iZXIpOwor
ICAgICAgICB2YXIgcG9zaXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlv
bihsaW5lTnVtYmVyLCAwKTsKKyAgICAgICAgdGhpcy5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93
U291cmNlQ29kZShyZXNvdXJjZSwgcG9zaXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJj
ZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jl
c291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDNmNTg3MDQ1MDY4N2VjYWFhZTQxZTBkMGVjZWU0
YjI5YmM4NDQxOTYuLmQ1YWZmMDU4Y2EwNjZmODYzN2Y5MTk5ZTdiZjE1ZmVhZmNhZDc2NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lk
ZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jl
c291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC0yNDgsNiArMjQ4LDcgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHNob3dTb3VyY2VDb2RlOiBm
dW5jdGlvbihzb3VyY2VDb2RlLCBwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVjdCwg
Zm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwb3NpdGlv
blRvUmV2ZWFsIHx8IHBvc2l0aW9uVG9SZXZlYWwgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVBvc2l0aW9uLCBwb3NpdGlvblRvUmV2ZWFsKTsKICAgICAgICAgdmFyIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gc291cmNlQ29kZTsKIAogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KSB7CkBAIC0yNTksMTYgKzI2MCwyMyBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgJiYg
cmVwcmVzZW50ZWRPYmplY3QuaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgICAgIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QucGFyZW50RnJhbWU7CiAKLSAgICAgICAgdmFy
IGNvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICB2YXIgbmV3Q29u
dGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXBy
ZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgIHZhciBjb29raWUgPSB7
IGxpbmVOdW1iZXI6IHBvc2l0aW9uVG9SZXZlYWwubGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBw
b3NpdGlvblRvUmV2ZWFsLmNvbHVtbk51bWJlcn07CiAKLSAgICAgICAgaWYgKGNvbnRlbnRWaWV3
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcpCi0gICAgICAgICAgICBj
b250ZW50Vmlldy5zaG93U291cmNlQ29kZShwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1Nl
bGVjdCwgZm9yY2VVbmZvcm1hdHRlZCk7Ci0gICAgICAgIGVsc2UgaWYgKGNvbnRlbnRWaWV3IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3KQotICAgICAg
ICAgICAgY29udGVudFZpZXcuc2hvd1Jlc3BvbnNlKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5n
ZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKLSAgICAgICAgZWxzZSBpZiAoY29udGVudFZp
ZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcpCi0gICAgICAgICAg
ICBjb250ZW50Vmlldy5yZXZlYWxQb3NpdGlvbihwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VU
b1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCk7CisgICAgICAgIHZhciByZXN0b3JlQ2FsbGJhY2sg
PSBmdW5jdGlvbihjb250ZW50Vmlldywgc2F2ZWRDb29raWUpIHsKKyAgICAgICAgICAgIHZhciBs
aW5lTnVtYmVyID0gc2F2ZWRDb29raWUubGluZU51bWJlcjsKKyAgICAgICAgICAgIHZhciBjb2x1
bW5OdW1iZXIgPSBzYXZlZENvb2tpZS5jb2x1bW5OdW1iZXI7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbihsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93
Q29udGVudFZpZXcoY29udGVudFZpZXcpOworICAgICAgICAgICAgaWYgKGNvbnRlbnRWaWV3IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcpCisgICAgICAgICAgICAgICAg
Y29udGVudFZpZXcuc2hvd1NvdXJjZUNvZGUocG9zaXRpb24pCisgICAgICAgICAgICBlbHNlIGlm
IChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250
ZW50VmlldykKKyAgICAgICAgICAgICAgICBjb250ZW50Vmlldy5zaG93UmVzcG9uc2UocG9zaXRp
b24pCisgICAgICAgICAgICBlbHNlIGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5TY3JpcHRDb250ZW50VmlldykKKyAgICAgICAgICAgICAgICBjb250ZW50Vmlldy5yZXZl
YWxQb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgfTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iu
Y29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KG5ld0NvbnRlbnRWaWV3LCBjb29raWUsIHJl
c3RvcmVDYWxsYmFjayk7CiAgICAgfSwKIAogICAgIHNob3dTb3VyY2VDb2RlTG9jYXRpb246IGZ1
bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213108</attachid>
            <date>2013-10-01 12:15:04 -0700</date>
            <delta_ts>2013-10-02 14:55:02 -0700</delta_ts>
            <desc>Take 2.1</desc>
            <filename>bug-122062-20131001121503.patch</filename>
            <type>text/plain</type>
            <size>28427</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
MDIyNWM4OGIyZThkZmYzZjM5MmE5OTgwMTc3MzYyMWM3MzcyMmVhLi5iYjE2M2ZmM2YzNTllNTRh
MWZhNWMzYTRiNjk0MTgxNGVlYTExZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxMy0wOS0yOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2F2ZSBhbmQgcmVzdG9yZSBzb3VyY2Ug
cG9zaXRpb25zIGluIGJhY2svZm9yd2FyZCBoaXN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBU
aW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIGJhY2svZm9yd2FyZCBl
bnRyaWVzIGNvbXByaXNlZCBvZiBvbmx5IHRoZSBjb250ZW50CisgICAgICAgIHZpZXdzLCBidXQg
bm90IHRoZWlyIHBvc2l0aW9ucyBpZiBuYXZpZ2F0ZWQgdmlhIGh5cGVybGluayAoaS5lLiwKKyAg
ICAgICAgaGFuZGxpbmcgc2NyaXB0LmpzOjQyKS4gIFdoZW4gbXVsdGlwbGUgaW5zdGFuY2VzIG9m
IHRoZSBzYW1lCisgICAgICAgIGNvbnRlbnQgdmlldyBhcHBlYXJlZCBpbiB0aGUgYmFjay9mb3J3
YXJkIGxpc3QsIHRoZSBtb3N0IHJlY2VudAorICAgICAgICBuYXZpZ2F0aW9uIHdhcyBkaXNwbGF5
ZWQgcmF0aGVyIHRoYW4gdGhlIGxpbmtlZCBwb3NpdGlvbi4KKworICAgICAgICBXZSBub3cgc3Rv
cmUgY29udGV4dCBuZWNlc3NhcnkgdG8gcmUtbmF2aWdhdGUgc3VjaCBoeXBlcmxpbmtzIGJ5Cisg
ICAgICAgIHN0b3Jpbmcgdmlldy0gc3BlY2lmaWMgZGF0YSBpbnNpZGUgYSBjb29raWUgb2JqZWN0
LCBhbmQgaW52b2tlIGEKKyAgICAgICAgc3VwcGxpZWQgY2FsbGJhY2sgdG8gdGFrZSBhbnkgcG9z
aXRpb24gaW5pdGlhbGl6YXRpb24gYWN0aW9ucywKKyAgICAgICAgc3VjaCBhcyBjYWxsaW5nIFRl
eHRFZGl0b3IucmV2ZWFsUG9zaXRpb24uICBUaGlzIHN0YXRlIGlzCisgICAgICAgIGVuY2Fwc3Vs
YXRlZCBpbnRvIEJhY2tGb3J3YXJkRW50cnkgaW5zdGFuY2VzLgorCisgICAgICAgIEZ1bmN0aW9u
cyB0aGF0IHNhdmUgYW5kIHJlc3RvcmUgc2Nyb2xsIHBvc2l0aW9ucyBpbnNpZGUgY29udGVudAor
ICAgICAgICB2aWV3cyBoYXZlIGJlZW4gY2hhbmdlZCB0byBzdG9yZSBzdGF0ZSBpbiBCYWNrRm9y
d2FyZEVudHJ5CisgICAgICAgIGluc3RhbmNlcywgc28gbXVsdGlwbGUgc2Nyb2xsIHBvc2l0aW9u
cyBjYW4gYmUgc2F2ZWQgZm9yIGEgY29udGVudAorICAgICAgICB2aWV3IGFwcGVhcmluZyBpbiB0
aGUgbmF2aWdhdGlvbiBoaXN0b3J5IG1vcmUgdGhhbiBvbmNlLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5CYWNrRm9yd2FyZEVudHJ5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVu
dHJ5LnByb3RvdHlwZS5nZXQgY29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJh
Y2tGb3J3YXJkRW50cnkucHJvdG90eXBlLmdldCBjb29raWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLnByZXBhcmVUb1Nob3cpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLnByZXBhcmVUb0hpZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLl9yZXN0b3Jl
RnJvbUNvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90
b3R5cGUuX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJh
Y2tGb3J3YXJkRW50cnkucHJvdG90eXBlLl9zYXZlU2Nyb2xsUG9zaXRpb25zKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5zaG93Q29udGVudFZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5fdXBkYXRlQ29udGVudFZpZXdOYXZp
Z2F0aW9uSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3Rv
dHlwZS5fdXBkYXRlRmluZEJhbm5lcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250ZW50
Vmlld0NvbnRhaW5lci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lci5wcm90b3R5cGUuZ2V0IGN1cnJlbnRDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLmdldCBjdXJyZW50QmFja0Zvcndh
cmRFbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJv
dG90eXBlLnNob3dDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb250YWluZXIucHJvdG90eXBlLnNob3dCYWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5yZXBsYWNl
Q29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LnByb3RvdHlwZS5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuY2xvc2VBbGxDb250ZW50
Vmlld3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3Rv
dHlwZS5nb0JhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LnByb3RvdHlwZS5nb0ZvcndhcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyLnByb3RvdHlwZS5zaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIucHJvdG90eXBlLmhpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLl9zaG93RW50cnkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5faGlkZUVudHJ5KToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01haW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iub3BlblVSTCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUucmVzdG9yZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1NvdXJj
ZUNvZGUpOgorCiAyMDEzLTA5LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogcm93cyBpbiB0aGUgTGF5ZXIgc2lkZWJhciBwYW5l
bCBtYXkgaGF2ZSB0aGUgaW5jb3JyZWN0IGJhY2tncm91bmQgY29sb3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJkRW50cnkuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZhYWIyOGE3NGEyMDkxOGM3ZDc2ODVhMzIxODc1NGQyODY5MDliNGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYWNrRm9y
d2FyZEVudHJ5LmpzCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
MyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkgPSBm
dW5jdGlvbihjb250ZW50VmlldywgY29va2llLCByZXN0b3JlQ2FsbGJhY2spCit7CisgICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIHRoaXMuX2NvbnRlbnRWaWV3ID0gY29u
dGVudFZpZXc7CisgICAgLy8gQ29va2llcyBhcmUgY29tcGFyZWQgd2l0aCBPYmplY3Quc2hhbGxv
d0VxdWFsLCBzbyBzaG91bGQgbm90IHN0b3JlIG9iamVjdHMgb3IgYXJyYXlzLgorICAgIHRoaXMu
X2Nvb2tpZSA9IGNvb2tpZSB8fCB7fTsKKyAgICB0aGlzLl9zY3JvbGxQb3NpdGlvbnMgPSBbXTsK
KyAgICB0aGlzLl9yZXN0b3JlQ2FsbGJhY2sgPSByZXN0b3JlQ2FsbGJhY2s7Cit9OworCitXZWJJ
bnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5LAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGUsCisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBjb250ZW50
VmlldygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXc7CisgICAgfSwK
KworICAgIGdldCBjb29raWUoKQorICAgIHsKKyAgICAgICAgLy8gQ29va2llcyBhcmUgaW1tdXRh
YmxlOyB0aGV5IHJlcHJlc2VudCBhIHNwZWNpZmljIG5hdmlnYXRpb24gYWN0aW9uLgorICAgICAg
ICByZXR1cm4gT2JqZWN0LnNoYWxsb3dDb3B5KHRoaXMuX2Nvb2tpZSk7CisgICAgfSwKKworICAg
IHByZXBhcmVUb1Nob3c6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3RvcmVG
cm9tQ29va2llKCk7CisKKyAgICAgICAgdGhpcy5jb250ZW50Vmlldy52aXNpYmxlID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5jb250ZW50Vmlldy5zaG93bigpOworICAgICAgICB0aGlzLmNvbnRlbnRW
aWV3LnVwZGF0ZUxheW91dCgpOworICAgIH0sCisKKyAgICBwcmVwYXJlVG9IaWRlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LnZpc2libGUgPSBmYWxzZTsKKyAg
ICAgICAgdGhpcy5jb250ZW50Vmlldy5oaWRkZW4oKTsKKworICAgICAgICB0aGlzLl9zYXZlU2Ny
b2xsUG9zaXRpb25zKCk7CisgICAgfSwKKworICAgIC8vIFByaXZhdGUKKworICAgIF9yZXN0b3Jl
RnJvbUNvb2tpZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzdG9yZVNjcm9s
bFBvc2l0aW9ucygpOworCisgICAgICAgIGlmICh0aGlzLl9yZXN0b3JlQ2FsbGJhY2sgJiYgdHlw
ZW9mIHRoaXMuX3Jlc3RvcmVDYWxsYmFjayA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRo
aXMuX3Jlc3RvcmVDYWxsYmFjay5jYWxsKG51bGwsIHRoaXMuY29udGVudFZpZXcsIHRoaXMuY29v
a2llKTsKKyAgICB9LAorCisgICAgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIC8vIElmIG5vIHNjcm9sbCBwb3NpdGlvbnMgYXJlIHNhdmVkLCBkbyBu
b3RoaW5nLgorICAgICAgICBpZiAoIXRoaXMuX3Njcm9sbFBvc2l0aW9ucy5sZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHNjcm9sbGFibGVFbGVtZW50cyA9IHRoaXMu
Y29udGVudFZpZXcuc2Nyb2xsYWJsZUVsZW1lbnRzIHx8IFtdOworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9zY3JvbGxQb3NpdGlvbnMubGVuZ3RoID09PSBzY3JvbGxhYmxlRWxlbWVudHMu
bGVuZ3RoKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcm9sbGFibGVFbGVtZW50
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fc2Nyb2xs
UG9zaXRpb25zW2ldOworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxhYmxlRWxlbWVu
dHNbaV07CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHRvcCBzY3JvbGwgcG9zaXRpb24gYnkg
ZWl0aGVyIHNjcm9sbGluZyB0byB0aGUgYm90dG9tIG9yIHRvIHRoZSBzYXZlZCBwb3NpdGlvbi4K
KyAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gcG9zaXRpb24uaXNTY3JvbGxlZFRvQm90
dG9tID8gZWxlbWVudC5zY3JvbGxIZWlnaHQgOiBwb3NpdGlvbi5zY3JvbGxUb3A7CisKKyAgICAg
ICAgICAgIC8vIERvbid0IHJlc3RvcmUgdGhlIGxlZnQgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gc2Ny
b2xsZWQgdG8gdGhlIGJvdHRvbS4gVGhpcyB3YXkgdGhlIHdoZW4gY29udGVudCBjaGFuZ2VzCisg
ICAgICAgICAgICAvLyB0aGUgdXNlciB3b24ndCBiZSBsZWZ0IGluIGEgd2VpcmQgaG9yaXpvbnRh
bCBwb3NpdGlvbi4KKyAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IHBvc2l0aW9uLmlz
U2Nyb2xsZWRUb0JvdHRvbSA/IDAgOiBwb3NpdGlvbi5zY3JvbGxMZWZ0OworICAgICAgICB9Cisg
ICAgfSwKKworICAgIF9zYXZlU2Nyb2xsUG9zaXRpb25zOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB2YXIgc2Nyb2xsYWJsZUVsZW1lbnRzID0gdGhpcy5jb250ZW50Vmlldy5zY3JvbGxhYmxl
RWxlbWVudHMgfHwgW107CisgICAgICAgIHZhciBzY3JvbGxQb3NpdGlvbnMgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JvbGxhYmxlRWxlbWVudHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gc2Nyb2xsYWJsZUVsZW1lbnRzW2ldOworICAgICAg
ICAgICAgaWYgKCFlbGVtZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7IHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3AsIHNjcm9s
bExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCB9OworICAgICAgICAgICAgaWYgKHRoaXMuY29udGVu
dFZpZXcuc2hvdWxkS2VlcEVsZW1lbnRzU2Nyb2xsZWRUb0JvdHRvbSkKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi5pc1Njcm9sbGVkVG9Cb3R0b20gPSBlbGVtZW50LmlzU2Nyb2xsZWRUb0JvdHRv
bSgpOworCisgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbnMucHVzaChwb3NpdGlvbik7CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLl9zY3JvbGxQb3NpdGlvbnMgPSBzY3JvbGxQb3NpdGlvbnM7
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udGVudEJyb3dzZXIuanMKaW5kZXggMzdmNTBhZjdhYmI1YWY3NWY1MmNjMjcwMmQzODRh
NGRlMWYzOWE1Mi4uZGI5ODdhOGIyMGI0NWIwMTMwNTdmZjI1MzVkY2MyNzRkMGJmYWI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dz
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJy
b3dzZXIuanMKQEAgLTE1Nyw5ICsxNTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIu
c2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOwog
ICAgIH0sCiAKLSAgICBzaG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAg
IHNob3dDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNh
bGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVy
LnNob3dDb250ZW50Vmlldyhjb250ZW50Vmlldyk7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250
ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSwgcmVz
dG9yZUNhbGxiYWNrKTsKICAgICB9LAogCiAgICAgY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9i
amVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlFeGlzdGluZykKQEAgLTQxMSw3
ICs0MTEsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewogCiAg
ICAgICAgIC8vIEdvIHRocm91Z2ggZWFjaCBvZiB0aGUgaXRlbXMgb2YgdGhlIG5ldyBjb250ZW50
IHZpZXcgYW5kIGFkZCBhIGRpdmlkZXIgYmVmb3JlIHRoZW0uCiAgICAgICAgIGN1cnJlbnRDb250
ZW50Vmlldy5uYXZpZ2F0aW9uSXRlbXMuZm9yRWFjaChmdW5jdGlvbihuYXZpZ2F0aW9uSXRlbSwg
aW5kZXgpIHsKLSAgICAgICAgICAgIC8vIEFkZCBkaXZpZGVycyBiZWZvcmUgaXRlbXMgdW5sZXNz
IGl0J3MgdGhlIGZpcnN0IGl0ZW0gYW5kIG5vdCBhIGJ1dHRvbi4gCisgICAgICAgICAgICAvLyBB
ZGQgZGl2aWRlcnMgYmVmb3JlIGl0ZW1zIHVubGVzcyBpdCdzIHRoZSBmaXJzdCBpdGVtIGFuZCBu
b3QgYSBidXR0b24uCiAgICAgICAgICAgICBpZiAoaW5kZXggIT09IDAgfHwgbmF2aWdhdGlvbkl0
ZW0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0pIHsKICAgICAg
ICAgICAgICAgICB2YXIgZGl2aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuRGl2aWRlck5hdmlnYXRp
b25JdGVtOwogICAgICAgICAgICAgICAgIG5hdmlnYXRpb25CYXIuaW5zZXJ0TmF2aWdhdGlvbkl0
ZW0oZGl2aWRlciwgaW5zZXJ0aW9uSW5kZXgrKyk7CkBAIC00MzMsNyArNDMzLDcgQEAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Zp
bmRCYW5uZXIubnVtYmVyT2ZSZXN1bHRzID0gbnVsbDsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICB0aGlzLl9maW5kQmFubmVyLnRhcmdldEVsZW1l
bnQgPSBjdXJyZW50Q29udGVudFZpZXcuZWxlbWVudDsKICAgICAgICAgdGhpcy5fZmluZEJhbm5l
ci5udW1iZXJPZlJlc3VsdHMgPSBjdXJyZW50Q29udGVudFZpZXcuaGFzUGVyZm9ybWVkU2VhcmNo
ID8gY3VycmVudENvbnRlbnRWaWV3Lm51bWJlck9mU2VhcmNoUmVzdWx0cyA6IG51bGw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3
Q29udGFpbmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVu
dFZpZXdDb250YWluZXIuanMKaW5kZXggNjA4M2IxN2ZjMDQ1NDVkOTJhNTNmMWYzMTIwOTNjZTE4
MTU4YmU1Yy4uYWFhMjIwODA3ZDU4ZDU3YmVlYjAwYzc2YmI4ZTgyYWZjZjJiODA5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250
YWluZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVu
dFZpZXdDb250YWluZXIuanMKQEAgLTY0LDYgKzY0LDEzIEBAIFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAodGhpcy5fY3Vy
cmVudEluZGV4IDwgMCB8fCB0aGlzLl9jdXJyZW50SW5kZXggPiB0aGlzLl9iYWNrRm9yd2FyZExp
c3QubGVuZ3RoIC0gMSkKICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4g
dGhpcy5fYmFja0ZvcndhcmRMaXN0W3RoaXMuX2N1cnJlbnRJbmRleF0uY29udGVudFZpZXc7Cisg
ICAgfSwKKworICAgIGdldCBjdXJyZW50QmFja0ZvcndhcmRFbnRyeSgpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5fY3VycmVudEluZGV4IDwgMCB8fCB0aGlzLl9jdXJyZW50SW5kZXggPiB0aGlz
Ll9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwog
ICAgICAgICByZXR1cm4gdGhpcy5fYmFja0ZvcndhcmRMaXN0W3RoaXMuX2N1cnJlbnRJbmRleF07
CiAgICAgfSwKIApAQCAtMTI2LDcgKzEzMyw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nv
bnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjb250ZW50VmlldzsKICAgICB9
LAogCi0gICAgc2hvd0NvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBzaG93
Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFj
aykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpKQpAQCAtMTM4LDEwICsxNDUsMTEgQEAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKGNvbnRlbnRWaWV3LnBhcmVudENvbnRhaW5lciAmJiBjb250ZW50Vmlldy5wYXJlbnRDb250
YWluZXIgIT09IHRoaXMpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICAvLyBE
b24ndCBkbyBhbnl0aGluZyBpZiB0aGUgY29udGVudCB2aWV3IGlzIGFscmVhZHkgdGhlIGN1cnJl
bnQgY29udGVudCB2aWV3LgotICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5j
dXJyZW50Q29udGVudFZpZXc7Ci0gICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgPT09IGNv
bnRlbnRWaWV3KQotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3OworICAgICAgICB2YXIg
Y3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKKyAgICAgICAgdmFy
IHByb3Zpc2lvbmFsRW50cnkgPSBuZXcgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkoY29u
dGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKTsKKyAgICAgICAgLy8gRG9uJ3QgZG8g
YW55dGhpbmcgaWYgd2Ugd291bGQgaGF2ZSBhZGRlZCBhbiBpZGVudGljYWwgYmFjay9mb3J3YXJk
IGxpc3QgZW50cnkuCisgICAgICAgIGlmIChjdXJyZW50RW50cnkgJiYgY3VycmVudEVudHJ5LmNv
bnRlbnRWaWV3ID09PSBjb250ZW50VmlldyAmJiBPYmplY3Quc2hhbGxvd0VxdWFsKHByb3Zpc2lv
bmFsRW50cnkuY29va2llLCBjdXJyZW50RW50cnkuY29va2llKSkKKyAgICAgICAgICAgIHJldHVy
biBjdXJyZW50RW50cnkuY29udGVudFZpZXc7CiAKICAgICAgICAgLy8gU2hvd2luZyBhIGNvbnRl
bnQgdmlldyB3aWxsIHRydW5jYXRlIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBhZnRlciB0aGUgY3Vy
cmVudCBpbmRleCBhbmQgaW5zZXJ0IHRoZSBjb250ZW50IHZpZXcKICAgICAgICAgLy8gYXQgdGhl
IGVuZCBvZiB0aGUgbGlzdC4gRmluYWxseSwgdGhlIGN1cnJlbnQgaW5kZXggd2lsbCBiZSB1cGRh
dGVkIHRvIHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgpAQCAtMTUw
LDI5ICsxNTgsMzAgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIG5ld0luZGV4ID0gdGhpcy5fY3VycmVudEluZGV4ICsgMTsKIAog
ICAgICAgICAvLyBJbnNlcnQgdGhlIGNvbnRlbnQgdmlldyBhdCB0aGUgbmV3IGluZGV4LiBUaGlz
IHdpbGwgcmVtb3ZlIGFueSBjb250ZW50IHZpZXdzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0
aGUgaW5kZXguCi0gICAgICAgIHZhciByZW1vdmVkSXRlbXMgPSB0aGlzLl9iYWNrRm9yd2FyZExp
c3Quc3BsaWNlKG5ld0luZGV4LCB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gbmV3SW5k
ZXgsIGNvbnRlbnRWaWV3KTsKKyAgICAgICAgdmFyIHJlbW92ZWRFbnRyaWVzID0gdGhpcy5fYmFj
a0ZvcndhcmRMaXN0LnNwbGljZShuZXdJbmRleCwgdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0
aCAtIG5ld0luZGV4LCBwcm92aXNpb25hbEVudHJ5KTsKIAogICAgICAgICBjb25zb2xlLmFzc2Vy
dChuZXdJbmRleCA9PT0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpOwotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9iYWNrRm9yd2FyZExpc3RbbmV3SW5kZXhdID09PSBjb250
ZW50Vmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtu
ZXdJbmRleF0gPT09IHByb3Zpc2lvbmFsRW50cnkpOwogCiAgICAgICAgIC8vIERpc2Fzc29jaWF0
ZSB3aXRoIHRoZSByZW1vdmVkIGNvbnRlbnQgdmlld3MuCi0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcmVtb3ZlZEl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcmVtb3ZlZEVudHJpZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIC8vIFNraXAg
ZGlzYXNzb2NpYXRpb24gaWYgdGhpcyBjb250ZW50IHZpZXcgaXMgc3RpbGwgaW4gdGhlIGJhY2sv
Zm9yd2FyZCBsaXN0LgotICAgICAgICAgICAgaWYgKHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5jb250
YWlucyhyZW1vdmVkSXRlbXNbaV0pKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZpZXcocmVtb3ZlZEl0ZW1zW2ld
KTsKKyAgICAgICAgICAgIHZhciBzaG91bGREaXNzb2NpYXRlQ29udGVudFZpZXcgPSB0aGlzLl9i
YWNrRm9yd2FyZExpc3Quc29tZShmdW5jdGlvbihleGlzdGluZ0VudHJ5KSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGV4aXN0aW5nRW50cnkuY29udGVudFZpZXcgPT09IHJlbW92ZWRFbnRyaWVz
W2ldLmNvbnRlbnRWaWV3OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoc2hvdWxk
RGlzc29jaWF0ZUNvbnRlbnRWaWV3KQorICAgICAgICAgICAgICAgIHRoaXMuX2Rpc2Fzc29jaWF0
ZUZyb21Db250ZW50VmlldyhyZW1vdmVkRW50cmllc1tpXSk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBBc3NvY2lhdGUgd2l0aCB0aGUgbmV3IGNvbnRlbnQgdmlldy4KICAgICAgICAgY29udGVu
dFZpZXcuX3BhcmVudENvbnRhaW5lciA9IHRoaXM7CiAKLSAgICAgICAgdGhpcy5zaG93QmFja0Zv
cndhcmRFbnRyeShuZXdJbmRleCk7CisgICAgICAgIHRoaXMuc2hvd0JhY2tGb3J3YXJkRW50cnlG
b3JJbmRleChuZXdJbmRleCk7CiAKICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3OwogICAgIH0s
CiAKLSAgICBzaG93QmFja0ZvcndhcmRFbnRyeTogZnVuY3Rpb24oaW5kZXgpCisgICAgc2hvd0Jh
Y2tGb3J3YXJkRW50cnlGb3JJbmRleDogZnVuY3Rpb24oaW5kZXgpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChpbmRleCA+PSAwICYmIGluZGV4IDw9IHRoaXMuX2JhY2tGb3J3YXJkTGlz
dC5sZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuX2Jh
Y2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKQpAQCAtMTgyLDEzICsxOTEsMTUgQEAgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAvLyBIaWRlIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBjb250ZW50IHZpZXcu
Ci0gICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50Vmll
dzsKLSAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldykKLSAgICAgICAgICAgIHRoaXMuX2hp
ZGVDb250ZW50VmlldyhjdXJyZW50Q29udGVudFZpZXcpOworICAgICAgICB2YXIgcHJldmlvdXNF
bnRyeSA9IHRoaXMuY3VycmVudEJhY2tGb3J3YXJkRW50cnk7CisgICAgICAgIGlmIChwcmV2aW91
c0VudHJ5KQorICAgICAgICAgICAgdGhpcy5faGlkZUVudHJ5KHByZXZpb3VzRW50cnkpOwogCiAg
ICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IGluZGV4OworICAgICAgICB2YXIgY3VycmVudEVu
dHJ5ID0gdGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoY3VycmVudEVudHJ5KTsKIAotICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXcodGhpcy5j
dXJyZW50Q29udGVudFZpZXcpOworICAgICAgICB0aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5
KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKTsK
ICAgICB9LApAQCAtMjEzLDcgKzIyNCw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGN1cnJlbnRseVNob3dpbmcgPSAodGhp
cy5jdXJyZW50Q29udGVudFZpZXcgPT09IG9sZENvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKGN1
cnJlbnRseVNob3dpbmcpCi0gICAgICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZpZXcob2xkQ29u
dGVudFZpZXcpOworICAgICAgICAgICAgdGhpcy5faGlkZUVudHJ5KHRoaXMuY3VycmVudEJhY2tG
b3J3YXJkRW50cnkpOwogCiAgICAgICAgIC8vIERpc2Fzc29jaWF0ZSB3aXRoIHRoZSBvbGQgY29u
dGVudCB2aWV3LgogICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZpZXcob2xk
Q29udGVudFZpZXcpOwpAQCAtMjIzLDEyICsyMzQsMTMgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBSZXBsYWNlIGFsbCBvY2N1
cnJlbmNlcyBvZiBvbGRDb250ZW50VmlldyB3aXRoIG5ld0NvbnRlbnRWaWV3IGluIHRoZSBiYWNr
L2ZvcndhcmQgbGlzdC4KICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9iYWNrRm9y
d2FyZExpc3QubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9iYWNrRm9yd2Fy
ZExpc3RbaV0gPT09IG9sZENvbnRlbnRWaWV3KQotICAgICAgICAgICAgICAgIHRoaXMuX2JhY2tG
b3J3YXJkTGlzdFtpXSA9IG5ld0NvbnRlbnRWaWV3OworICAgICAgICAgICAgaWYgKHRoaXMuX2Jh
Y2tGb3J3YXJkTGlzdFtpXS5jb250ZW50VmlldyA9PT0gb2xkQ29udGVudFZpZXcpCisgICAgICAg
ICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0W2ldLmNvbnRlbnRWaWV3ID0gbmV3Q29udGVu
dFZpZXc7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBSZS1zaG93IHRoZSBjdXJyZW50IGVudHJ5
LCBiZWNhdXNlIGl0cyBjb250ZW50IHZpZXcgaW5zdGFuY2Ugd2FzIHJlcGxhY2VkLgogICAgICAg
ICBpZiAoY3VycmVudGx5U2hvd2luZykgewotICAgICAgICAgICAgdGhpcy5fc2hvd0NvbnRlbnRW
aWV3KG5ld0NvbnRlbnRWaWV3KTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dFbnRyeSh0aGlzLmN1
cnJlbnRCYWNrRm9yd2FyZEVudHJ5KTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50
Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgICAgICB9CiAgICAgfSwKQEAgLTI0NCw3ICsyNTYs
NyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAg
ICAgICAvLyBJZiB0aGV5IGFsbCBhcmUgd2UgY2FuIHVzZSB0aGUgcXVpY2tlciBjbG9zZUFsbENv
bnRlbnRWaWV3cyBtZXRob2QuCiAgICAgICAgIHZhciBhbGxTYW1lUHJvdG90eXBlID0gdHJ1ZTsK
ICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxOyBp
ID49IDA7IC0taSkgewotICAgICAgICAgICAgaWYgKCEodGhpcy5fYmFja0ZvcndhcmRMaXN0W2ld
IGluc3RhbmNlb2YgY29uc3RydWN0b3IpKSB7CisgICAgICAgICAgICBpZiAoISh0aGlzLl9iYWNr
Rm9yd2FyZExpc3RbaV0uY29udGVudFZpZXcgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvcikpIHsKICAg
ICAgICAgICAgICAgICBhbGxTYW1lUHJvdG90eXBlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yNTksMTIgKzI3MSwxMiBAQCBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIEhpZGUgYW5k
IGRpc2Fzc29jaWF0ZSB3aXRoIGFsbCB0aGUgY29udGVudCB2aWV3cyB0aGF0IGFyZSBpbnN0YW5j
ZXMgb2YgdGhlIGNvbnN0cnVjdG9yLgogICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5fYmFja0Zv
cndhcmRMaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICB2YXIgY29u
dGVudFZpZXcgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV07Ci0gICAgICAgICAgICBpZiAoIShj
b250ZW50VmlldyBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSkKKyAgICAgICAgICAgIHZhciBlbnRy
eSA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtpXTsKKyAgICAgICAgICAgIGlmICghKGVudHJ5LmNv
bnRlbnRWaWV3IGluc3RhbmNlb2YgY29uc3RydWN0b3IpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgICAgICBpZiAoY29udGVudFZpZXcgPT09IG9sZEN1cnJlbnRDb250ZW50
VmlldykKLSAgICAgICAgICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZpZXcoY29udGVudFZpZXcp
OworICAgICAgICAgICAgaWYgKGVudHJ5LmNvbnRlbnRWaWV3ID09PSBvbGRDdXJyZW50Q29udGVu
dFZpZXcpCisgICAgICAgICAgICAgICAgdGhpcy5faGlkZUVudHJ5KGVudHJ5KTsKIAogICAgICAg
ICAgICAgaWYgKHRoaXMuX2N1cnJlbnRJbmRleCA+PSBpKSB7CiAgICAgICAgICAgICAgICAgLy8g
RGVjcmVtZW50IHRoZSBjdXJyZW50SW5kZXggc2luY2Ugd2Ugd2lsbCByZW1vdmUgYW4gaXRlbSBp
biB0aGUgYmFjay9mb3J3YXJkIGFycmF5CkBAIC0yNzIsMTcgKzI4NCwxNyBAQCBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIC0t
dGhpcy5fY3VycmVudEluZGV4OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0aGlzLl9k
aXNhc3NvY2lhdGVGcm9tQ29udGVudFZpZXcoY29udGVudFZpZXcpOworICAgICAgICAgICAgdGhp
cy5fZGlzYXNzb2NpYXRlRnJvbUNvbnRlbnRWaWV3KGVudHJ5LmNvbnRlbnRWaWV3KTsKIAogICAg
ICAgICAgICAgLy8gUmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhlIGJhY2svZm9yd2FyZCBsaXN0Lgog
ICAgICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0LnNwbGljZShpLCAxKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50
VmlldzsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY3VycmVudENvbnRlbnRWaWV3IHx8ICghY3Vy
cmVudENvbnRlbnRWaWV3ICYmIHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gLTEpKTsKKyAgICAgICAg
dmFyIGN1cnJlbnRFbnRyeSA9IHRoaXMuY3VycmVudEJhY2tGb3J3YXJkRW50cnk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGN1cnJlbnRFbnRyeSB8fCAoIWN1cnJlbnRFbnRyeSAmJiB0aGlzLl9j
dXJyZW50SW5kZXggPT09IC0xKSk7CiAKLSAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldyAm
JiBjdXJyZW50Q29udGVudFZpZXcgIT09IG9sZEN1cnJlbnRDb250ZW50VmlldykgewotICAgICAg
ICAgICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50Vmlldyk7CisgICAgICAg
IGlmIChjdXJyZW50RW50cnkgJiYgY3VycmVudEVudHJ5LmNvbnRlbnRWaWV3ICE9PSBvbGRDdXJy
ZW50Q29udGVudFZpZXcpIHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50
cnkpOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5n
ZSk7CiAgICAgICAgIH0KICAgICB9LApAQCAtMjk2LDEwICszMDgsMTAgQEAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBIaWRlIGFu
ZCBkaXNhc3NvY2lhdGUgd2l0aCBhbGwgdGhlIGNvbnRlbnQgdmlld3MuCiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV07CisgICAg
ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV07CiAgICAgICAgICAg
ICBpZiAoaSA9PT0gdGhpcy5fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAgIHRoaXMuX2hp
ZGVDb250ZW50Vmlldyhjb250ZW50Vmlldyk7Ci0gICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lh
dGVGcm9tQ29udGVudFZpZXcoY29udGVudFZpZXcpOworICAgICAgICAgICAgICAgIHRoaXMuX2hp
ZGVFbnRyeShlbnRyeSk7CisgICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVu
dFZpZXcoZW50cnkuY29udGVudFZpZXcpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fYmFj
a0ZvcndhcmRMaXN0ID0gW107CkBAIC0zMjIsMzIgKzMzNCwzMiBAQCBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LmNhbkdvQmFjaygpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLnNob3dCYWNr
Rm9yd2FyZEVudHJ5KHRoaXMuX2N1cnJlbnRJbmRleCAtIDEpOworICAgICAgICB0aGlzLnNob3dC
YWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgodGhpcy5fY3VycmVudEluZGV4IC0gMSk7CiAgICAgfSwK
IAogICAgIGdvRm9yd2FyZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNh
bkdvRm9yd2FyZCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLnNob3dCYWNr
Rm9yd2FyZEVudHJ5KHRoaXMuX2N1cnJlbnRJbmRleCArIDEpOworICAgICAgICB0aGlzLnNob3dC
YWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgodGhpcy5fY3VycmVudEluZGV4ICsgMSk7CiAgICAgfSwK
IAogICAgIHNob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgY3VycmVudENvbnRl
bnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7Ci0gICAgICAgIGlmICghY3VycmVudENv
bnRlbnRWaWV3KQorICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0Zv
cndhcmRFbnRyeTsKKyAgICAgICAgaWYgKCFjdXJyZW50RW50cnkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50Vmlldyk7
CisgICAgICAgIHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50cnkpOwogICAgIH0sCiAKICAgICBo
aWRkZW46IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcg
PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKLSAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZp
ZXcpCisgICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJlbnRCYWNrRm9yd2FyZEVu
dHJ5OworICAgICAgICBpZiAoIWN1cnJlbnRFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZpZXcoY3VycmVudENvbnRlbnRWaWV3KTsKKyAgICAg
ICAgdGhpcy5faGlkZUVudHJ5KGN1cnJlbnRFbnRyeSk7CiAgICAgfSwKIAogICAgIC8vIFByaXZh
dGUKQEAgLTM3OSw3MiArMzkxLDIwIEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5l
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRlbnRWaWV3LmNsb3NlZCgpOwogICAgIH0sCiAK
LSAgICBfc2F2ZVNjcm9sbFBvc2l0aW9uc0ZvckNvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50
VmlldykKLSAgICB7Ci0gICAgICAgIHZhciBzY3JvbGxhYmxlRWxlbWVudHMgPSBjb250ZW50Vmll
dy5zY3JvbGxhYmxlRWxlbWVudHMgfHwgW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c2Nyb2xsYWJsZUVsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZWxlbWVu
dCA9IHNjcm9sbGFibGVFbGVtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChjb250ZW50Vmlldy5zaG91
bGRLZWVwRWxlbWVudHNTY3JvbGxlZFRvQm90dG9tKQotICAgICAgICAgICAgICAgIGVsZW1lbnQu
X3NhdmVkSXNTY3JvbGxlZFRvQm90dG9tID0gZWxlbWVudC5pc1Njcm9sbGVkVG9Cb3R0b20oKTsK
LSAgICAgICAgICAgIGVsZW1lbnQuX3NhdmVkU2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3A7
Ci0gICAgICAgICAgICBlbGVtZW50Ll9zYXZlZFNjcm9sbExlZnQgPSBlbGVtZW50LnNjcm9sbExl
ZnQ7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3JD
b250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCisgICAgX3Nob3dFbnRyeTogZnVuY3Rp
b24oZW50cnkpCiAgICAgewotICAgICAgICB2YXIgc2Nyb2xsYWJsZUVsZW1lbnRzID0gY29udGVu
dFZpZXcuc2Nyb2xsYWJsZUVsZW1lbnRzIHx8IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGVs
ZW1lbnQgPSBzY3JvbGxhYmxlRWxlbWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhl
IHRvcCBzY3JvbGwgcG9zaXRpb24gYnkgZWl0aGVyIHNjcm9sbGluZyB0byB0aGUgYm90dG9tIG9y
IHRvIHRoZSBzYXZlZCBwb3NpdGlvbi4KLSAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0g
ZWxlbWVudC5fc2F2ZWRJc1Njcm9sbGVkVG9Cb3R0b20gPyBlbGVtZW50LnNjcm9sbEhlaWdodCA6
IGVsZW1lbnQuX3NhdmVkU2Nyb2xsVG9wOwotCi0gICAgICAgICAgICAvLyBEb24ndCByZXN0b3Jl
IHRoZSBsZWZ0IHNjcm9sbCBwb3NpdGlvbiB3aGVuIHNjcm9sbGVkIHRvIHRoZSBib3R0b20uIFRo
aXMgd2F5IHRoZSB3aGVuIGNvbnRlbnQgY2hhbmdlcwotICAgICAgICAgICAgLy8gdGhlIHVzZXIg
d29uJ3QgYmUgbGVmdCBpbiBhIHdlaXJkIGhvcml6b250YWwgcG9zaXRpb24uCi0gICAgICAgICAg
ICBlbGVtZW50LnNjcm9sbExlZnQgPSBlbGVtZW50Ll9zYXZlZElzU2Nyb2xsZWRUb0JvdHRvbSA/
IDAgOiBlbGVtZW50Ll9zYXZlZFNjcm9sbExlZnQ7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAg
X3Nob3dDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCi0gICAgewotICAgICAgICBp
ZiAoY29udGVudFZpZXcudmlzaWJsZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0
aGlzLl9hZGRDb250ZW50Vmlld0VsZW1lbnQoY29udGVudFZpZXcpOwotCi0gICAgICAgIHRoaXMu
X3ByZXBhcmVDb250ZW50Vmlld1RvU2hvdyhjb250ZW50Vmlldyk7Ci0gICAgfSwKLQotICAgIF9w
cmVwYXJlQ29udGVudFZpZXdUb1Nob3c6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQotICAgIHsKLSAg
ICAgICAgdGhpcy5fcmVzdG9yZVNjcm9sbFBvc2l0aW9uc0ZvckNvbnRlbnRWaWV3KGNvbnRlbnRW
aWV3KTsKLQotICAgICAgICBjb250ZW50Vmlldy52aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgY29u
dGVudFZpZXcuc2hvd24oKTsKLSAgICAgICAgY29udGVudFZpZXcudXBkYXRlTGF5b3V0KCk7Ci0g
ICAgfSwKLQotICAgIF9oaWRlQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQotICAg
IHsKLSAgICAgICAgaWYgKCFjb250ZW50Vmlldy52aXNpYmxlKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHRoaXMuX3ByZXBhcmVDb250ZW50Vmlld1RvSGlkZShjb250ZW50Vmlldyk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGVudHJ5IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJh
Y2tGb3J3YXJkRW50cnkpOwogCi0gICAgICAgIHRoaXMuX3JlbW92ZUNvbnRlbnRWaWV3RWxlbWVu
dChjb250ZW50Vmlldyk7CisgICAgICAgIHRoaXMuX2FkZENvbnRlbnRWaWV3RWxlbWVudChlbnRy
eS5jb250ZW50Vmlldyk7CisgICAgICAgIGVudHJ5LnByZXBhcmVUb1Nob3coKTsKICAgICB9LAog
Ci0gICAgX3ByZXBhcmVDb250ZW50Vmlld1RvSGlkZTogZnVuY3Rpb24oY29udGVudFZpZXcpCisg
ICAgX2hpZGVFbnRyeTogZnVuY3Rpb24oZW50cnkpCiAgICAgewotICAgICAgICBjb250ZW50Vmll
dy52aXNpYmxlID0gZmFsc2U7Ci0gICAgICAgIGNvbnRlbnRWaWV3LmhpZGRlbigpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChlbnRyeSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CYWNrRm9yd2Fy
ZEVudHJ5KTsKIAotICAgICAgICB0aGlzLl9zYXZlU2Nyb2xsUG9zaXRpb25zRm9yQ29udGVudFZp
ZXcoY29udGVudFZpZXcpOworICAgICAgICBlbnRyeS5wcmVwYXJlVG9IaWRlKCk7CisgICAgICAg
IHRoaXMuX3JlbW92ZUNvbnRlbnRWaWV3RWxlbWVudChlbnRyeS5jb250ZW50Vmlldyk7CiAgICAg
fQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CmluZGV4IGY3MmE4ZDQyMDcyZTk2ODgyMzZhYmRlNmRiNDBjNzU1NjAzYzNhYTEuLjVmNTJjNDRl
MTRhZTk3OGNiMmQyNWVjYjlhMDY5MDZiMmE3Y2M0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTIzOSw2ICsyMzksNyBAQAogICAgIDxz
Y3JpcHQgc3JjPSJUZXh0RWRpdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRXZl
bnRIYW5kbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU291cmNlQ29kZVRleHRF
ZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJCYWNrRm9yd2FyZEVudHJ5Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udGVudFZpZXdDb250YWluZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNsdXN0ZXJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcwppbmRleCA2YTBiYmU4Y2RmYjQ5Mzc2
NmE4YmQ3ZGM5YzgzZTViNzE1MWY4ZDA3Li43ZTdlZjYyM2IyYzRhOWNiNWI0NTI5MmY4ZjhjOTg1
ZWI2ZWJjMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
anMKQEAgLTUxMSw3ICs1MTEsOCBAQCBXZWJJbnNwZWN0b3Iub3BlblVSTCA9IGZ1bmN0aW9uKHVy
bCwgZnJhbWUsIGFsd2F5c09wZW5FeHRlcm5hbGx5LCBsaW5lTnVtYmVyKQogICAgIC8vIFdlYklu
c3BlY3Rvci5GcmFtZS5yZXNvdXJjZUZvclVSTCBkb2VzIG5vdCBjaGVjayB0aGUgbWFpbiByZXNv
dXJjZSwgb25seSBzdWItcmVzb3VyY2VzLiBTbyBjaGVjayBib3RoLgogICAgIHZhciByZXNvdXJj
ZSA9IGZyYW1lLnVybCA9PT0gdXJsID8gZnJhbWUubWFpblJlc291cmNlIDogZnJhbWUucmVzb3Vy
Y2VGb3JVUkwodXJsLCBzZWFyY2hDaGlsZEZyYW1lcyk7CiAgICAgaWYgKHJlc291cmNlKSB7Ci0g
ICAgICAgIHRoaXMucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd1NvdXJjZUNvZGUocmVzb3VyY2Us
IGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgcG9zaXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVQb3NpdGlvbihsaW5lTnVtYmVyLCAwKTsKKyAgICAgICAgdGhpcy5yZXNvdXJjZVNp
ZGViYXJQYW5lbC5zaG93U291cmNlQ29kZShyZXNvdXJjZSwgcG9zaXRpb24pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDNmNTg3MDQ1MDY4N2Vj
YWFhZTQxZTBkMGVjZWU0YjI5YmM4NDQxOTYuLmU2NmFmMWJhYjA4YjhiNTZmMWFiYjEzZmNlN2Q3
YTk2YjM0NGZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC0yNDgsNiArMjQ4LDcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHNo
b3dTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3VyY2VDb2RlLCBwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0
UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFwb3NpdGlvblRvUmV2ZWFsIHx8IHBvc2l0aW9uVG9SZXZlYWwgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uLCBwb3NpdGlvblRvUmV2ZWFsKTsKICAgICAg
ICAgdmFyIHJlcHJlc2VudGVkT2JqZWN0ID0gc291cmNlQ29kZTsKIAogICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KSB7CkBAIC0yNTks
MTYgKzI2MCwyMyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UgJiYgcmVwcmVzZW50ZWRPYmplY3QuaXNNYWluUmVzb3VyY2UoKSkKICAgICAg
ICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QucGFyZW50RnJhbWU7
CiAKLSAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2Vy
LmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOworICAg
ICAgICB2YXIgbmV3Q29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAg
IHZhciBjb29raWUgPSB7bGluZU51bWJlcjogcG9zaXRpb25Ub1JldmVhbC5saW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXI6IHBvc2l0aW9uVG9SZXZlYWwuY29sdW1uTnVtYmVyfTsKIAotICAgICAgICBp
ZiAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50VmlldykK
LSAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dTb3VyY2VDb2RlKHBvc2l0aW9uVG9SZXZlYWws
IHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKLSAgICAgICAgZWxzZSBpZiAo
Y29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcpCi0gICAgICAgICAgICBjb250ZW50Vmlldy5zaG93UmVzcG9uc2UocG9zaXRpb25Ub1Jl
dmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpOwotICAgICAgICBlbHNl
IGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50Vmll
dykKLSAgICAgICAgICAgIGNvbnRlbnRWaWV3LnJldmVhbFBvc2l0aW9uKHBvc2l0aW9uVG9SZXZl
YWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKKyAgICAgICAgdmFyIHJl
c3RvcmVDYWxsYmFjayA9IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBzYXZlZENvb2tpZSkgeworICAg
ICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzYXZlZENvb2tpZS5saW5lTnVtYmVyOworICAgICAg
ICAgICAgdmFyIGNvbHVtbk51bWJlciA9IHNhdmVkQ29va2llLmNvbHVtbk51bWJlcjsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9u
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRl
bnRCcm93c2VyLnNob3dDb250ZW50Vmlldyhjb250ZW50Vmlldyk7CisgICAgICAgICAgICBpZiAo
Y29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50VmlldykKKyAg
ICAgICAgICAgICAgICBjb250ZW50Vmlldy5zaG93U291cmNlQ29kZShwb3NpdGlvbikKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291
cmNlQ2x1c3RlckNvbnRlbnRWaWV3KQorICAgICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dS
ZXNwb25zZShwb3NpdGlvbikKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRWaWV3IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3KQorICAgICAgICAgICAgICAgIGNv
bnRlbnRWaWV3LnJldmVhbFBvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICB9OworCisgICAgICAg
IFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcobmV3Q29udGVudFZp
ZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKTsKICAgICB9LAogCiAgICAgc2hvd1NvdXJjZUNv
ZGVMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlQ29kZUxvY2F0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213203</attachid>
            <date>2013-10-02 14:55:05 -0700</date>
            <delta_ts>2013-10-02 16:31:58 -0700</delta_ts>
            <desc>Take 2.1 (rebased)</desc>
            <filename>bug-122062-20131002145504.patch</filename>
            <type>text/plain</type>
            <size>28566</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
N2EzMmUwODBlZTJhNjM4NGQzMzdmYjY2ZjhkZGUxN2NlODc2MmQ2Li43ZGRiYTNiODFhY2UwMDc0
MDAyY2JmNDFmYWM5MGE1ODE3YmE1ZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxMy0xMC0wMiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2F2ZSBhbmQgcmVzdG9yZSBzb3VyY2Ug
cG9zaXRpb25zIGluIGJhY2svZm9yd2FyZCBoaXN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBU
aW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIGJhY2svZm9yd2FyZCBl
bnRyaWVzIGNvbXByaXNlZCBvZiBvbmx5IHRoZSBjb250ZW50CisgICAgICAgIHZpZXdzLCBidXQg
bm90IHRoZWlyIHBvc2l0aW9ucyBpZiBuYXZpZ2F0ZWQgdmlhIGh5cGVybGluayAoaS5lLiwKKyAg
ICAgICAgaGFuZGxpbmcgc2NyaXB0LmpzOjQyKS4gIFdoZW4gbXVsdGlwbGUgaW5zdGFuY2VzIG9m
IHRoZSBzYW1lCisgICAgICAgIGNvbnRlbnQgdmlldyBhcHBlYXJlZCBpbiB0aGUgYmFjay9mb3J3
YXJkIGxpc3QsIHRoZSBtb3N0IHJlY2VudAorICAgICAgICBuYXZpZ2F0aW9uIHdhcyBkaXNwbGF5
ZWQgcmF0aGVyIHRoYW4gdGhlIGxpbmtlZCBwb3NpdGlvbi4KKworICAgICAgICBXZSBub3cgc3Rv
cmUgY29udGV4dCBuZWNlc3NhcnkgdG8gcmUtbmF2aWdhdGUgc3VjaCBoeXBlcmxpbmtzIGJ5Cisg
ICAgICAgIHN0b3Jpbmcgdmlldy0gc3BlY2lmaWMgZGF0YSBpbnNpZGUgYSBjb29raWUgb2JqZWN0
LCBhbmQgaW52b2tlIGEKKyAgICAgICAgc3VwcGxpZWQgY2FsbGJhY2sgdG8gdGFrZSBhbnkgcG9z
aXRpb24gaW5pdGlhbGl6YXRpb24gYWN0aW9ucywKKyAgICAgICAgc3VjaCBhcyBjYWxsaW5nIFRl
eHRFZGl0b3IucmV2ZWFsUG9zaXRpb24uICBUaGlzIHN0YXRlIGlzCisgICAgICAgIGVuY2Fwc3Vs
YXRlZCBpbnRvIEJhY2tGb3J3YXJkRW50cnkgaW5zdGFuY2VzLgorCisgICAgICAgIEZ1bmN0aW9u
cyB0aGF0IHNhdmUgYW5kIHJlc3RvcmUgc2Nyb2xsIHBvc2l0aW9ucyBpbnNpZGUgY29udGVudAor
ICAgICAgICB2aWV3cyBoYXZlIGJlZW4gY2hhbmdlZCB0byBzdG9yZSBzdGF0ZSBpbiBCYWNrRm9y
d2FyZEVudHJ5CisgICAgICAgIGluc3RhbmNlcywgc28gbXVsdGlwbGUgc2Nyb2xsIHBvc2l0aW9u
cyBjYW4gYmUgc2F2ZWQgZm9yIGEgY29udGVudAorICAgICAgICB2aWV3IGFwcGVhcmluZyBpbiB0
aGUgbmF2aWdhdGlvbiBoaXN0b3J5IG1vcmUgdGhhbiBvbmNlLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5CYWNrRm9yd2FyZEVudHJ5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVu
dHJ5LnByb3RvdHlwZS5nZXQgY29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJh
Y2tGb3J3YXJkRW50cnkucHJvdG90eXBlLmdldCBjb29raWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLnByZXBhcmVUb1Nob3cpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLnByZXBhcmVUb0hpZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLl9yZXN0b3Jl
RnJvbUNvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90
b3R5cGUuX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJh
Y2tGb3J3YXJkRW50cnkucHJvdG90eXBlLl9zYXZlU2Nyb2xsUG9zaXRpb25zKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5zaG93Q29udGVudFZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5fdXBkYXRlQ29udGVudFZpZXdOYXZp
Z2F0aW9uSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3Rv
dHlwZS5fdXBkYXRlRmluZEJhbm5lcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250ZW50
Vmlld0NvbnRhaW5lci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lci5wcm90b3R5cGUuZ2V0IGN1cnJlbnRDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLmdldCBjdXJyZW50QmFja0Zvcndh
cmRFbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJv
dG90eXBlLnNob3dDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb250YWluZXIucHJvdG90eXBlLnNob3dCYWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5yZXBsYWNl
Q29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LnByb3RvdHlwZS5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuY2xvc2VBbGxDb250ZW50
Vmlld3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3Rv
dHlwZS5nb0JhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LnByb3RvdHlwZS5nb0ZvcndhcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyLnByb3RvdHlwZS5zaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIucHJvdG90eXBlLmhpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLl9zaG93RW50cnkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5faGlkZUVudHJ5KToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01haW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iub3BlblVSTCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUucmVzdG9yZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1NvdXJj
ZUNvZGUpOgorCiAyMDEzLTEwLTAyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IG5ld2x5IGFkZGVkIGNvbnNvbGUg
bWVzc2FnZXMgaW4gdGhlIEFjdGl2aXR5IFZpZXdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFja0ZvcndhcmRFbnRyeS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJkRW50cnkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmFhYjI4YTc0YTIwOTE4YzdkNzY4NWEzMjE4NzU0ZDI4NjkwOWI0YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJkRW50cnku
anMKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNp
dHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSA9IGZ1bmN0aW9uKGNv
bnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKK3sKKyAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgdGhpcy5fY29udGVudFZpZXcgPSBjb250ZW50VmlldzsK
KyAgICAvLyBDb29raWVzIGFyZSBjb21wYXJlZCB3aXRoIE9iamVjdC5zaGFsbG93RXF1YWwsIHNv
IHNob3VsZCBub3Qgc3RvcmUgb2JqZWN0cyBvciBhcnJheXMuCisgICAgdGhpcy5fY29va2llID0g
Y29va2llIHx8IHt9OworICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9ucyA9IFtdOworICAgIHRoaXMu
X3Jlc3RvcmVDYWxsYmFjayA9IHJlc3RvcmVDYWxsYmFjazsKK307CisKK1dlYkluc3BlY3Rvci5C
YWNrRm9yd2FyZEVudHJ5LnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkJhY2tGb3J3YXJkRW50cnksCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZSwKKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGNvbnRlbnRWaWV3KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50VmlldzsKKyAgICB9LAorCisgICAgZ2V0
IGNvb2tpZSgpCisgICAgeworICAgICAgICAvLyBDb29raWVzIGFyZSBpbW11dGFibGU7IHRoZXkg
cmVwcmVzZW50IGEgc3BlY2lmaWMgbmF2aWdhdGlvbiBhY3Rpb24uCisgICAgICAgIHJldHVybiBP
YmplY3Quc2hhbGxvd0NvcHkodGhpcy5fY29va2llKTsKKyAgICB9LAorCisgICAgcHJlcGFyZVRv
U2hvdzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzdG9yZUZyb21Db29raWUo
KTsKKworICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LnZpc2libGUgPSB0cnVlOworICAgICAgICB0
aGlzLmNvbnRlbnRWaWV3LnNob3duKCk7CisgICAgICAgIHRoaXMuY29udGVudFZpZXcudXBkYXRl
TGF5b3V0KCk7CisgICAgfSwKKworICAgIHByZXBhcmVUb0hpZGU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuY29udGVudFZpZXcudmlzaWJsZSA9IGZhbHNlOworICAgICAgICB0aGlz
LmNvbnRlbnRWaWV3LmhpZGRlbigpOworCisgICAgICAgIHRoaXMuX3NhdmVTY3JvbGxQb3NpdGlv
bnMoKTsKKyAgICB9LAorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3Jlc3RvcmVGcm9tQ29va2ll
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9yZXN0b3JlU2Nyb2xsUG9zaXRpb25z
KCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3Jlc3RvcmVDYWxsYmFjayAmJiB0eXBlb2YgdGhpcy5f
cmVzdG9yZUNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhpcy5fcmVzdG9y
ZUNhbGxiYWNrLmNhbGwobnVsbCwgdGhpcy5jb250ZW50VmlldywgdGhpcy5jb29raWUpOworICAg
IH0sCisKKyAgICBfcmVzdG9yZVNjcm9sbFBvc2l0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgLy8gSWYgbm8gc2Nyb2xsIHBvc2l0aW9ucyBhcmUgc2F2ZWQsIGRvIG5vdGhpbmcuCisg
ICAgICAgIGlmICghdGhpcy5fc2Nyb2xsUG9zaXRpb25zLmxlbmd0aCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB2YXIgc2Nyb2xsYWJsZUVsZW1lbnRzID0gdGhpcy5jb250ZW50Vmll
dy5zY3JvbGxhYmxlRWxlbWVudHMgfHwgW107CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3Njcm9sbFBvc2l0aW9ucy5sZW5ndGggPT09IHNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGgpOwor
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Nyb2xsYWJsZUVsZW1lbnRzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB0aGlzLl9zY3JvbGxQb3NpdGlvbnNb
aV07CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IHNjcm9sbGFibGVFbGVtZW50c1tpXTsKKyAg
ICAgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgLy8gUmVzdG9yZSB0aGUgdG9wIHNjcm9sbCBwb3NpdGlvbiBieSBlaXRoZXIgc2Ny
b2xsaW5nIHRvIHRoZSBib3R0b20gb3IgdG8gdGhlIHNhdmVkIHBvc2l0aW9uLgorICAgICAgICAg
ICAgZWxlbWVudC5zY3JvbGxUb3AgPSBwb3NpdGlvbi5pc1Njcm9sbGVkVG9Cb3R0b20gPyBlbGVt
ZW50LnNjcm9sbEhlaWdodCA6IHBvc2l0aW9uLnNjcm9sbFRvcDsKKworICAgICAgICAgICAgLy8g
RG9uJ3QgcmVzdG9yZSB0aGUgbGVmdCBzY3JvbGwgcG9zaXRpb24gd2hlbiBzY3JvbGxlZCB0byB0
aGUgYm90dG9tLiBUaGlzIHdheSB0aGUgd2hlbiBjb250ZW50IGNoYW5nZXMKKyAgICAgICAgICAg
IC8vIHRoZSB1c2VyIHdvbid0IGJlIGxlZnQgaW4gYSB3ZWlyZCBob3Jpem9udGFsIHBvc2l0aW9u
LgorICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxMZWZ0ID0gcG9zaXRpb24uaXNTY3JvbGxlZFRv
Qm90dG9tID8gMCA6IHBvc2l0aW9uLnNjcm9sbExlZnQ7CisgICAgICAgIH0KKyAgICB9LAorCisg
ICAgX3NhdmVTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBz
Y3JvbGxhYmxlRWxlbWVudHMgPSB0aGlzLmNvbnRlbnRWaWV3LnNjcm9sbGFibGVFbGVtZW50cyB8
fCBbXTsKKyAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9ucyA9IFtdOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxhYmxlRWxlbWVudHNbaV07CisgICAgICAgICAgICBpZiAo
IWVsZW1lbnQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHsgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcCwgc2Nyb2xsTGVmdDogZWxl
bWVudC5zY3JvbGxMZWZ0IH07CisgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50Vmlldy5zaG91
bGRLZWVwRWxlbWVudHNTY3JvbGxlZFRvQm90dG9tKQorICAgICAgICAgICAgICAgIHBvc2l0aW9u
LmlzU2Nyb2xsZWRUb0JvdHRvbSA9IGVsZW1lbnQuaXNTY3JvbGxlZFRvQm90dG9tKCk7CisKKyAg
ICAgICAgICAgIHNjcm9sbFBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9ucyA9IHNjcm9sbFBvc2l0aW9uczsKKyAgICB9Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVu
dEJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50
QnJvd3Nlci5qcwppbmRleCAzN2Y1MGFmN2FiYjVhZjc1ZjUyY2MyNzAyZDM4NGE0ZGUxZjM5YTUy
Li5kYjk4N2E4YjIwYjQ1YjAxMzA1N2ZmMjUzNWRjYzI3NGQwYmZhYjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50QnJvd3Nlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50QnJvd3Nlci5qcwpA
QCAtMTU3LDkgKzE1Nyw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVu
dFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgfSwKIAot
ICAgIHNob3dDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCisgICAgc2hvd0NvbnRl
bnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldywgY29va2llLCByZXN0b3JlQ2FsbGJhY2spCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRl
bnRWaWV3KGNvbnRlbnRWaWV3KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29u
dGFpbmVyLnNob3dDb250ZW50Vmlldyhjb250ZW50VmlldywgY29va2llLCByZXN0b3JlQ2FsbGJh
Y2spOwogICAgIH0sCiAKICAgICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5j
dGlvbihyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nKQpAQCAtNDExLDcgKzQxMSw3IEBA
IFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8g
R28gdGhyb3VnaCBlYWNoIG9mIHRoZSBpdGVtcyBvZiB0aGUgbmV3IGNvbnRlbnQgdmlldyBhbmQg
YWRkIGEgZGl2aWRlciBiZWZvcmUgdGhlbS4KICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3Lm5h
dmlnYXRpb25JdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKG5hdmlnYXRpb25JdGVtLCBpbmRleCkgewot
ICAgICAgICAgICAgLy8gQWRkIGRpdmlkZXJzIGJlZm9yZSBpdGVtcyB1bmxlc3MgaXQncyB0aGUg
Zmlyc3QgaXRlbSBhbmQgbm90IGEgYnV0dG9uLiAKKyAgICAgICAgICAgIC8vIEFkZCBkaXZpZGVy
cyBiZWZvcmUgaXRlbXMgdW5sZXNzIGl0J3MgdGhlIGZpcnN0IGl0ZW0gYW5kIG5vdCBhIGJ1dHRv
bi4KICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gMCB8fCBuYXZpZ2F0aW9uSXRlbSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSkgewogICAgICAgICAgICAgICAg
IHZhciBkaXZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW07CiAg
ICAgICAgICAgICAgICAgbmF2aWdhdGlvbkJhci5pbnNlcnROYXZpZ2F0aW9uSXRlbShkaXZpZGVy
LCBpbnNlcnRpb25JbmRleCsrKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBXZWJJbnNwZWN0b3IuQ29u
dGVudEJyb3dzZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5u
dW1iZXJPZlJlc3VsdHMgPSBudWxsOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIudGFyZ2V0RWxlbWVudCA9IGN1cnJl
bnRDb250ZW50Vmlldy5lbGVtZW50OwogICAgICAgICB0aGlzLl9maW5kQmFubmVyLm51bWJlck9m
UmVzdWx0cyA9IGN1cnJlbnRDb250ZW50Vmlldy5oYXNQZXJmb3JtZWRTZWFyY2ggPyBjdXJyZW50
Q29udGVudFZpZXcubnVtYmVyT2ZTZWFyY2hSZXN1bHRzIDogbnVsbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlld0NvbnRh
aW5lci5qcwppbmRleCBkNzNmMjgwNGRmN2M3ZjVkZDliNjFmM2NkZDdlZDBkY2I2ZmNmNGJjLi44
NTUwZTZhMTA1N2MyODcwNGI2ODNhNzRhNjIyZDcyY2QwMjA2MzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlld0NvbnRhaW5lci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlld0NvbnRh
aW5lci5qcwpAQCAtNjQsNiArNjQsMTMgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXgg
PCAwIHx8IHRoaXMuX2N1cnJlbnRJbmRleCA+IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGgg
LSAxKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiB0aGlzLl9iYWNr
Rm9yd2FyZExpc3RbdGhpcy5fY3VycmVudEluZGV4XS5jb250ZW50VmlldzsKKyAgICB9LAorCisg
ICAgZ2V0IGN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9jdXJyZW50SW5kZXggPCAwIHx8IHRoaXMuX2N1cnJlbnRJbmRleCA+IHRoaXMuX2JhY2tGb3J3
YXJkTGlzdC5sZW5ndGggLSAxKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9iYWNrRm9yd2FyZExpc3RbdGhpcy5fY3VycmVudEluZGV4XTsKICAgICB9LAog
CkBAIC0xMjYsNyArMTMzLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3OwogICAgIH0sCiAKLSAgICBz
aG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIHNob3dDb250ZW50Vmll
dzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcpOwogICAgICAgICBpZiAoIShjb250ZW50VmlldyBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5Db250ZW50VmlldykpCkBAIC0xMzgsMTAgKzE0NSwxMSBAQCBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAoY29udGVu
dFZpZXcucGFyZW50Q29udGFpbmVyICYmIGNvbnRlbnRWaWV3LnBhcmVudENvbnRhaW5lciAhPT0g
dGhpcykKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIC8vIERvbid0IGRvIGFu
eXRoaW5nIGlmIHRoZSBjb250ZW50IHZpZXcgaXMgYWxyZWFkeSB0aGUgY3VycmVudCBjb250ZW50
IHZpZXcuCi0gICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250
ZW50VmlldzsKLSAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldyA9PT0gY29udGVudFZpZXcp
Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudFZpZXc7CisgICAgICAgIHZhciBjdXJyZW50RW50
cnkgPSB0aGlzLmN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5OworICAgICAgICB2YXIgcHJvdmlzaW9u
YWxFbnRyeSA9IG5ldyBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeShjb250ZW50Vmlldywg
Y29va2llLCByZXN0b3JlQ2FsbGJhY2spOworICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBp
ZiB3ZSB3b3VsZCBoYXZlIGFkZGVkIGFuIGlkZW50aWNhbCBiYWNrL2ZvcndhcmQgbGlzdCBlbnRy
eS4KKyAgICAgICAgaWYgKGN1cnJlbnRFbnRyeSAmJiBjdXJyZW50RW50cnkuY29udGVudFZpZXcg
PT09IGNvbnRlbnRWaWV3ICYmIE9iamVjdC5zaGFsbG93RXF1YWwocHJvdmlzaW9uYWxFbnRyeS5j
b29raWUsIGN1cnJlbnRFbnRyeS5jb29raWUpKQorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRF
bnRyeS5jb250ZW50VmlldzsKIAogICAgICAgICAvLyBTaG93aW5nIGEgY29udGVudCB2aWV3IHdp
bGwgdHJ1bmNhdGUgdGhlIGJhY2svZm9yd2FyZCBsaXN0IGFmdGVyIHRoZSBjdXJyZW50IGluZGV4
IGFuZCBpbnNlcnQgdGhlIGNvbnRlbnQgdmlldwogICAgICAgICAvLyBhdCB0aGUgZW5kIG9mIHRo
ZSBsaXN0LiBGaW5hbGx5LCB0aGUgY3VycmVudCBpbmRleCB3aWxsIGJlIHVwZGF0ZWQgdG8gcG9p
bnQgdG8gdGhlIGVuZCBvZiB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCkBAIC0xNTAsMjkgKzE1OCwz
MCBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgbmV3SW5kZXggPSB0aGlzLl9jdXJyZW50SW5kZXggKyAxOwogCiAgICAgICAgIC8v
IEluc2VydCB0aGUgY29udGVudCB2aWV3IGF0IHRoZSBuZXcgaW5kZXguIFRoaXMgd2lsbCByZW1v
dmUgYW55IGNvbnRlbnQgdmlld3MgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBpbmRleC4K
LSAgICAgICAgdmFyIHJlbW92ZWRJdGVtcyA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5zcGxpY2Uo
bmV3SW5kZXgsIHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSBuZXdJbmRleCwgY29udGVu
dFZpZXcpOworICAgICAgICB2YXIgcmVtb3ZlZEVudHJpZXMgPSB0aGlzLl9iYWNrRm9yd2FyZExp
c3Quc3BsaWNlKG5ld0luZGV4LCB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gbmV3SW5k
ZXgsIHByb3Zpc2lvbmFsRW50cnkpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5ld0luZGV4
ID09PSB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gMSk7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtuZXdJbmRleF0gPT09IGNvbnRlbnRWaWV3KTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYmFja0ZvcndhcmRMaXN0W25ld0luZGV4XSA9
PT0gcHJvdmlzaW9uYWxFbnRyeSk7CiAKICAgICAgICAgLy8gRGlzYXNzb2NpYXRlIHdpdGggdGhl
IHJlbW92ZWQgY29udGVudCB2aWV3cy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1v
dmVkSXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1v
dmVkRW50cmllcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgLy8gU2tpcCBkaXNhc3NvY2lh
dGlvbiBpZiB0aGlzIGNvbnRlbnQgdmlldyBpcyBzdGlsbCBpbiB0aGUgYmFjay9mb3J3YXJkIGxp
c3QuCi0gICAgICAgICAgICBpZiAodGhpcy5fYmFja0ZvcndhcmRMaXN0LmNvbnRhaW5zKHJlbW92
ZWRJdGVtc1tpXSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHRo
aXMuX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50VmlldyhyZW1vdmVkSXRlbXNbaV0pOworICAgICAg
ICAgICAgdmFyIHNob3VsZERpc3NvY2lhdGVDb250ZW50VmlldyA9IHRoaXMuX2JhY2tGb3J3YXJk
TGlzdC5zb21lKGZ1bmN0aW9uKGV4aXN0aW5nRW50cnkpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZXhpc3RpbmdFbnRyeS5jb250ZW50VmlldyA9PT0gcmVtb3ZlZEVudHJpZXNbaV0uY29udGVu
dFZpZXc7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmIChzaG91bGREaXNzb2NpYXRl
Q29udGVudFZpZXcpCisgICAgICAgICAgICAgICAgdGhpcy5fZGlzYXNzb2NpYXRlRnJvbUNvbnRl
bnRWaWV3KHJlbW92ZWRFbnRyaWVzW2ldKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFzc29j
aWF0ZSB3aXRoIHRoZSBuZXcgY29udGVudCB2aWV3LgogICAgICAgICBjb250ZW50Vmlldy5fcGFy
ZW50Q29udGFpbmVyID0gdGhpczsKIAotICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5
KG5ld0luZGV4KTsKKyAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeUZvckluZGV4KG5l
d0luZGV4KTsKIAogICAgICAgICByZXR1cm4gY29udGVudFZpZXc7CiAgICAgfSwKIAotICAgIHNo
b3dCYWNrRm9yd2FyZEVudHJ5OiBmdW5jdGlvbihpbmRleCkKKyAgICBzaG93QmFja0ZvcndhcmRF
bnRyeUZvckluZGV4OiBmdW5jdGlvbihpbmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPD0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAt
IDEpOwogICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5fYmFja0ZvcndhcmRM
aXN0Lmxlbmd0aCAtIDEpCkBAIC0xODIsMTMgKzE5MSwxNSBAQCBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIC8vIEhpZGUgdGhlIGN1cnJlbnRseSB2aXNpYmxlIGNvbnRlbnQgdmlldy4KLSAgICAgICAg
dmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwotICAgICAg
ICBpZiAoY3VycmVudENvbnRlbnRWaWV3KQotICAgICAgICAgICAgdGhpcy5faGlkZUNvbnRlbnRW
aWV3KGN1cnJlbnRDb250ZW50Vmlldyk7CisgICAgICAgIHZhciBwcmV2aW91c0VudHJ5ID0gdGhp
cy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKKyAgICAgICAgaWYgKHByZXZpb3VzRW50cnkpCisg
ICAgICAgICAgICB0aGlzLl9oaWRlRW50cnkocHJldmlvdXNFbnRyeSk7CiAKICAgICAgICAgdGhp
cy5fY3VycmVudEluZGV4ID0gaW5kZXg7CisgICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlz
LmN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5OworICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50
RW50cnkpOwogCi0gICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlldyh0aGlzLmN1cnJlbnRDb250
ZW50Vmlldyk7CisgICAgICAgIHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50cnkpOwogCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgIH0sCkBA
IC0yMTMsNyArMjI0LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB2YXIgY3VycmVudGx5U2hvd2luZyA9ICh0aGlzLmN1cnJlbnRD
b250ZW50VmlldyA9PT0gb2xkQ29udGVudFZpZXcpOwogICAgICAgICBpZiAoY3VycmVudGx5U2hv
d2luZykKLSAgICAgICAgICAgIHRoaXMuX2hpZGVDb250ZW50VmlldyhvbGRDb250ZW50Vmlldyk7
CisgICAgICAgICAgICB0aGlzLl9oaWRlRW50cnkodGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRy
eSk7CiAKICAgICAgICAgLy8gRGlzYXNzb2NpYXRlIHdpdGggdGhlIG9sZCBjb250ZW50IHZpZXcu
CiAgICAgICAgIHRoaXMuX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50VmlldyhvbGRDb250ZW50Vmll
dyk7CkBAIC0yMjMsMTIgKzIzNCwxMyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWlu
ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9m
IG9sZENvbnRlbnRWaWV3IHdpdGggbmV3Q29udGVudFZpZXcgaW4gdGhlIGJhY2svZm9yd2FyZCBs
aXN0LgogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtpXSA9
PT0gb2xkQ29udGVudFZpZXcpCi0gICAgICAgICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0
W2ldID0gbmV3Q29udGVudFZpZXc7CisgICAgICAgICAgICBpZiAodGhpcy5fYmFja0ZvcndhcmRM
aXN0W2ldLmNvbnRlbnRWaWV3ID09PSBvbGRDb250ZW50VmlldykKKyAgICAgICAgICAgICAgICB0
aGlzLl9iYWNrRm9yd2FyZExpc3RbaV0uY29udGVudFZpZXcgPSBuZXdDb250ZW50VmlldzsKICAg
ICAgICAgfQogCisgICAgICAgIC8vIFJlLXNob3cgdGhlIGN1cnJlbnQgZW50cnksIGJlY2F1c2Ug
aXRzIGNvbnRlbnQgdmlldyBpbnN0YW5jZSB3YXMgcmVwbGFjZWQuCiAgICAgICAgIGlmIChjdXJy
ZW50bHlTaG93aW5nKSB7Ci0gICAgICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXcobmV3Q29u
dGVudFZpZXcpOworICAgICAgICAgICAgdGhpcy5fc2hvd0VudHJ5KHRoaXMuY3VycmVudEJhY2tG
b3J3YXJkRW50cnkpOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmll
d0RpZENoYW5nZSk7CiAgICAgICAgIH0KICAgICB9LApAQCAtMjQ0LDcgKzI1Niw3IEBAIFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIElm
IHRoZXkgYWxsIGFyZSB3ZSBjYW4gdXNlIHRoZSBxdWlja2VyIGNsb3NlQWxsQ29udGVudFZpZXdz
IG1ldGhvZC4KICAgICAgICAgdmFyIGFsbFNhbWVQcm90b3R5cGUgPSB0cnVlOwogICAgICAgICBm
b3IgKHZhciBpID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1p
KSB7Ci0gICAgICAgICAgICBpZiAoISh0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV0gaW5zdGFuY2Vv
ZiBjb25zdHJ1Y3RvcikpIHsKKyAgICAgICAgICAgIGlmICghKHRoaXMuX2JhY2tGb3J3YXJkTGlz
dFtpXS5jb250ZW50VmlldyBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSkgewogICAgICAgICAgICAg
ICAgIGFsbFNhbWVQcm90b3R5cGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KQEAgLTI2MCwxMiArMjcyLDEyIEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBiYWNrRm9yd2FyZExpc3REaWRD
aGFuZ2UgPSBmYWxzZTsKICAgICAgICAgLy8gSGlkZSBhbmQgZGlzYXNzb2NpYXRlIHdpdGggYWxs
IHRoZSBjb250ZW50IHZpZXdzIHRoYXQgYXJlIGluc3RhbmNlcyBvZiB0aGUgY29uc3RydWN0b3Iu
CiAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gMTsg
aSA+PSAwOyAtLWkpIHsKLSAgICAgICAgICAgIHZhciBjb250ZW50VmlldyA9IHRoaXMuX2JhY2tG
b3J3YXJkTGlzdFtpXTsKLSAgICAgICAgICAgIGlmICghKGNvbnRlbnRWaWV3IGluc3RhbmNlb2Yg
Y29uc3RydWN0b3IpKQorICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fYmFja0ZvcndhcmRM
aXN0W2ldOworICAgICAgICAgICAgaWYgKCEoZW50cnkuY29udGVudFZpZXcgaW5zdGFuY2VvZiBj
b25zdHJ1Y3RvcikpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlm
IChjb250ZW50VmlldyA9PT0gb2xkQ3VycmVudENvbnRlbnRWaWV3KQotICAgICAgICAgICAgICAg
IHRoaXMuX2hpZGVDb250ZW50Vmlldyhjb250ZW50Vmlldyk7CisgICAgICAgICAgICBpZiAoZW50
cnkuY29udGVudFZpZXcgPT09IG9sZEN1cnJlbnRDb250ZW50VmlldykKKyAgICAgICAgICAgICAg
ICB0aGlzLl9oaWRlRW50cnkoZW50cnkpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5fY3VycmVu
dEluZGV4ID49IGkpIHsKICAgICAgICAgICAgICAgICAvLyBEZWNyZW1lbnQgdGhlIGN1cnJlbnRJ
bmRleCBzaW5jZSB3ZSB3aWxsIHJlbW92ZSBhbiBpdGVtIGluIHRoZSBiYWNrL2ZvcndhcmQgYXJy
YXkKQEAgLTI3MywxOCArMjg1LDE4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5l
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgLS10aGlzLl9jdXJyZW50SW5kZXg7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRoaXMuX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50
Vmlldyhjb250ZW50Vmlldyk7CisgICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29u
dGVudFZpZXcoZW50cnkuY29udGVudFZpZXcpOwogCiAgICAgICAgICAgICAvLyBSZW1vdmUgdGhl
IGl0ZW0gZnJvbSB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCiAgICAgICAgICAgICB0aGlzLl9iYWNr
Rm9yd2FyZExpc3Quc3BsaWNlKGksIDEpOwogICAgICAgICAgICAgYmFja0ZvcndhcmRMaXN0RGlk
Q2hhbmdlID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBjdXJyZW50Q29udGVudFZp
ZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY3Vy
cmVudENvbnRlbnRWaWV3IHx8ICghY3VycmVudENvbnRlbnRWaWV3ICYmIHRoaXMuX2N1cnJlbnRJ
bmRleCA9PT0gLTEpKTsKKyAgICAgICAgdmFyIGN1cnJlbnRFbnRyeSA9IHRoaXMuY3VycmVudEJh
Y2tGb3J3YXJkRW50cnk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGN1cnJlbnRFbnRyeSB8fCAo
IWN1cnJlbnRFbnRyeSAmJiB0aGlzLl9jdXJyZW50SW5kZXggPT09IC0xKSk7CiAKLSAgICAgICAg
aWYgKGN1cnJlbnRDb250ZW50VmlldyAmJiAoY3VycmVudENvbnRlbnRWaWV3ICE9PSBvbGRDdXJy
ZW50Q29udGVudFZpZXcgfHwgYmFja0ZvcndhcmRMaXN0RGlkQ2hhbmdlKSkgewotICAgICAgICAg
ICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50Vmlldyk7CisgICAgICAgIGlm
IChjdXJyZW50RW50cnkgJiYgY3VycmVudEVudHJ5LmNvbnRlbnRWaWV3ICE9PSBvbGRDdXJyZW50
Q29udGVudFZpZXcgfHwgYmFja0ZvcndhcmRMaXN0RGlkQ2hhbmdlKSB7CisgICAgICAgICAgICB0
aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5KTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5D
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgICAgICB9CiAgICAgfSwKQEAgLTI5OCwx
MCArMzEwLDEwIEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgLy8gSGlkZSBhbmQgZGlzYXNzb2NpYXRlIHdpdGggYWxsIHRoZSBjb250
ZW50IHZpZXdzLgogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2JhY2tGb3J3YXJk
TGlzdC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gdGhpcy5f
YmFja0ZvcndhcmRMaXN0W2ldOworICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fYmFja0Zv
cndhcmRMaXN0W2ldOwogICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuX2N1cnJlbnRJbmRleCkK
LSAgICAgICAgICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZpZXcoY29udGVudFZpZXcpOwotICAg
ICAgICAgICAgdGhpcy5fZGlzYXNzb2NpYXRlRnJvbUNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsK
KyAgICAgICAgICAgICAgICB0aGlzLl9oaWRlRW50cnkoZW50cnkpOworICAgICAgICAgICAgdGhp
cy5fZGlzYXNzb2NpYXRlRnJvbUNvbnRlbnRWaWV3KGVudHJ5LmNvbnRlbnRWaWV3KTsKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdCA9IFtdOwpAQCAtMzI0LDMyICsz
MzYsMzIgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5jYW5Hb0JhY2soKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeSh0aGlzLl9jdXJyZW50SW5kZXgg
LSAxKTsKKyAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeUZvckluZGV4KHRoaXMuX2N1
cnJlbnRJbmRleCAtIDEpOwogICAgIH0sCiAKICAgICBnb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5jYW5Hb0ZvcndhcmQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeSh0aGlzLl9jdXJyZW50SW5kZXgg
KyAxKTsKKyAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeUZvckluZGV4KHRoaXMuX2N1
cnJlbnRJbmRleCArIDEpOwogICAgIH0sCiAKICAgICBzaG93bjogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3
OwotICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldykKKyAgICAgICAgdmFyIGN1cnJlbnRF
bnRyeSA9IHRoaXMuY3VycmVudEJhY2tGb3J3YXJkRW50cnk7CisgICAgICAgIGlmICghY3VycmVu
dEVudHJ5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3Nob3dDb250ZW50
VmlldyhjdXJyZW50Q29udGVudFZpZXcpOworICAgICAgICB0aGlzLl9zaG93RW50cnkoY3VycmVu
dEVudHJ5KTsKICAgICB9LAogCiAgICAgaGlkZGVuOiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7Ci0gICAg
ICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3KQorICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0g
dGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKKyAgICAgICAgaWYgKCFjdXJyZW50RW50cnkp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5faGlkZUNvbnRlbnRWaWV3KGN1
cnJlbnRDb250ZW50Vmlldyk7CisgICAgICAgIHRoaXMuX2hpZGVFbnRyeShjdXJyZW50RW50cnkp
OwogICAgIH0sCiAKICAgICAvLyBQcml2YXRlCkBAIC0zODEsNzIgKzM5MywyMCBAQCBXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICBjb250ZW50
Vmlldy5jbG9zZWQoKTsKICAgICB9LAogCi0gICAgX3NhdmVTY3JvbGxQb3NpdGlvbnNGb3JDb250
ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCi0gICAgewotICAgICAgICB2YXIgc2Nyb2xs
YWJsZUVsZW1lbnRzID0gY29udGVudFZpZXcuc2Nyb2xsYWJsZUVsZW1lbnRzIHx8IFtdOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxhYmxlRWxlbWVudHNbaV07Ci0gICAg
ICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBpZiAoY29udGVudFZpZXcuc2hvdWxkS2VlcEVsZW1lbnRzU2Nyb2xsZWRUb0JvdHRvbSkK
LSAgICAgICAgICAgICAgICBlbGVtZW50Ll9zYXZlZElzU2Nyb2xsZWRUb0JvdHRvbSA9IGVsZW1l
bnQuaXNTY3JvbGxlZFRvQm90dG9tKCk7Ci0gICAgICAgICAgICBlbGVtZW50Ll9zYXZlZFNjcm9s
bFRvcCA9IGVsZW1lbnQuc2Nyb2xsVG9wOwotICAgICAgICAgICAgZWxlbWVudC5fc2F2ZWRTY3Jv
bGxMZWZ0ID0gZWxlbWVudC5zY3JvbGxMZWZ0OwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9y
ZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3
KQorICAgIF9zaG93RW50cnk6IGZ1bmN0aW9uKGVudHJ5KQogICAgIHsKLSAgICAgICAgdmFyIHNj
cm9sbGFibGVFbGVtZW50cyA9IGNvbnRlbnRWaWV3LnNjcm9sbGFibGVFbGVtZW50cyB8fCBbXTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JvbGxhYmxlRWxlbWVudHMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0gc2Nyb2xsYWJsZUVsZW1lbnRzW2ldOwot
ICAgICAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSB0b3Agc2Nyb2xsIHBvc2l0aW9uIGJ5IGVpdGhlciBz
Y3JvbGxpbmcgdG8gdGhlIGJvdHRvbSBvciB0byB0aGUgc2F2ZWQgcG9zaXRpb24uCi0gICAgICAg
ICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IGVsZW1lbnQuX3NhdmVkSXNTY3JvbGxlZFRvQm90dG9t
ID8gZWxlbWVudC5zY3JvbGxIZWlnaHQgOiBlbGVtZW50Ll9zYXZlZFNjcm9sbFRvcDsKLQotICAg
ICAgICAgICAgLy8gRG9uJ3QgcmVzdG9yZSB0aGUgbGVmdCBzY3JvbGwgcG9zaXRpb24gd2hlbiBz
Y3JvbGxlZCB0byB0aGUgYm90dG9tLiBUaGlzIHdheSB0aGUgd2hlbiBjb250ZW50IGNoYW5nZXMK
LSAgICAgICAgICAgIC8vIHRoZSB1c2VyIHdvbid0IGJlIGxlZnQgaW4gYSB3ZWlyZCBob3Jpem9u
dGFsIHBvc2l0aW9uLgotICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxMZWZ0ID0gZWxlbWVudC5f
c2F2ZWRJc1Njcm9sbGVkVG9Cb3R0b20gPyAwIDogZWxlbWVudC5fc2F2ZWRTY3JvbGxMZWZ0Owot
ICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9zaG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRl
bnRWaWV3KQotICAgIHsKLSAgICAgICAgaWYgKGNvbnRlbnRWaWV3LnZpc2libGUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fYWRkQ29udGVudFZpZXdFbGVtZW50KGNvbnRl
bnRWaWV3KTsKLQotICAgICAgICB0aGlzLl9wcmVwYXJlQ29udGVudFZpZXdUb1Nob3coY29udGVu
dFZpZXcpOwotICAgIH0sCi0KLSAgICBfcHJlcGFyZUNvbnRlbnRWaWV3VG9TaG93OiBmdW5jdGlv
bihjb250ZW50VmlldykKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc3RvcmVTY3JvbGxQb3NpdGlv
bnNGb3JDb250ZW50Vmlldyhjb250ZW50Vmlldyk7Ci0KLSAgICAgICAgY29udGVudFZpZXcudmlz
aWJsZSA9IHRydWU7Ci0gICAgICAgIGNvbnRlbnRWaWV3LnNob3duKCk7Ci0gICAgICAgIGNvbnRl
bnRWaWV3LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCi0KLSAgICBfaGlkZUNvbnRlbnRWaWV3OiBm
dW5jdGlvbihjb250ZW50VmlldykKLSAgICB7Ci0gICAgICAgIGlmICghY29udGVudFZpZXcudmlz
aWJsZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9wcmVwYXJlQ29udGVu
dFZpZXdUb0hpZGUoY29udGVudFZpZXcpOworICAgICAgICBjb25zb2xlLmFzc2VydChlbnRyeSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5KTsKIAotICAgICAgICB0aGlz
Ll9yZW1vdmVDb250ZW50Vmlld0VsZW1lbnQoY29udGVudFZpZXcpOworICAgICAgICB0aGlzLl9h
ZGRDb250ZW50Vmlld0VsZW1lbnQoZW50cnkuY29udGVudFZpZXcpOworICAgICAgICBlbnRyeS5w
cmVwYXJlVG9TaG93KCk7CiAgICAgfSwKIAotICAgIF9wcmVwYXJlQ29udGVudFZpZXdUb0hpZGU6
IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIF9oaWRlRW50cnk6IGZ1bmN0aW9uKGVudHJ5KQog
ICAgIHsKLSAgICAgICAgY29udGVudFZpZXcudmlzaWJsZSA9IGZhbHNlOwotICAgICAgICBjb250
ZW50Vmlldy5oaWRkZW4oKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSk7CiAKLSAgICAgICAgdGhpcy5fc2F2ZVNj
cm9sbFBvc2l0aW9uc0ZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsKKyAgICAgICAgZW50cnku
cHJlcGFyZVRvSGlkZSgpOworICAgICAgICB0aGlzLl9yZW1vdmVDb250ZW50Vmlld0VsZW1lbnQo
ZW50cnkuY29udGVudFZpZXcpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBmNzJhOGQ0MjA3MmU5Njg4MjM2YWJkZTZk
YjQwYzc1NTYwM2MzYWExLi41ZjUyYzQ0ZTE0YWU5NzhjYjJkMjVlY2I5YTA2OTA2YjJhN2NjNDZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBA
IC0yMzksNiArMjM5LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVGV4dEVkaXRvci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkV2ZW50SGFuZGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlNvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iQmFja0ZvcndhcmRFbnRyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRlbnRWaWV3Q29udGFpbmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udGVu
dFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDbHVzdGVyQ29udGVudFZpZXcu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
anMKaW5kZXggNmEwYmJlOGNkZmI0OTM3NjZhOGJkN2RjOWM4M2U1YjcxNTFmOGQwNy4uN2U3ZWY2
MjNiMmM0YTljYjViNDUyOTJmOGY4Yzk4NWViNmViYzE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCkBAIC01MTEsNyArNTExLDggQEAgV2ViSW5zcGVj
dG9yLm9wZW5VUkwgPSBmdW5jdGlvbih1cmwsIGZyYW1lLCBhbHdheXNPcGVuRXh0ZXJuYWxseSwg
bGluZU51bWJlcikKICAgICAvLyBXZWJJbnNwZWN0b3IuRnJhbWUucmVzb3VyY2VGb3JVUkwgZG9l
cyBub3QgY2hlY2sgdGhlIG1haW4gcmVzb3VyY2UsIG9ubHkgc3ViLXJlc291cmNlcy4gU28gY2hl
Y2sgYm90aC4KICAgICB2YXIgcmVzb3VyY2UgPSBmcmFtZS51cmwgPT09IHVybCA/IGZyYW1lLm1h
aW5SZXNvdXJjZSA6IGZyYW1lLnJlc291cmNlRm9yVVJMKHVybCwgc2VhcmNoQ2hpbGRGcmFtZXMp
OwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICB0aGlzLnJlc291cmNlU2lkZWJhclBhbmVs
LnNob3dTb3VyY2VDb2RlKHJlc291cmNlLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIHBvc2l0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24obGluZU51bWJlciwgMCk7
CisgICAgICAgIHRoaXMucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd1NvdXJjZUNvZGUocmVzb3Vy
Y2UsIHBvc2l0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5l
bC5qcwppbmRleCAzZjU4NzA0NTA2ODdlY2FhYWU0MWUwZDBlY2VlNGIyOWJjODQ0MTk2Li5lNjZh
ZjFiYWIwOGI4YjU2ZjFhYmIxM2ZjZTdkN2E5NmIzNDRmYzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5l
bC5qcwpAQCAtMjQ4LDYgKzI0OCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICBzaG93U291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlQ29k
ZSwgcG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQp
CiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghcG9zaXRpb25Ub1JldmVhbCB8fCBwb3Np
dGlvblRvUmV2ZWFsIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbiwg
cG9zaXRpb25Ub1JldmVhbCk7CiAgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IHNvdXJj
ZUNvZGU7CiAKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNjcmlwdCkgewpAQCAtMjU5LDE2ICsyNjAsMjMgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJlcHJlc2VudGVkT2JqZWN0
LmlzTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHJlcHJl
c2VudGVkT2JqZWN0LnBhcmVudEZyYW1lOwogCi0gICAgICAgIHZhciBjb250ZW50VmlldyA9IFdl
Ykluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0
KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgdmFyIG5ld0NvbnRlbnRWaWV3ID0gV2ViSW5z
cGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVw
cmVzZW50ZWRPYmplY3QpOworICAgICAgICB2YXIgY29va2llID0ge2xpbmVOdW1iZXI6IHBvc2l0
aW9uVG9SZXZlYWwubGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBwb3NpdGlvblRvUmV2ZWFsLmNv
bHVtbk51bWJlcn07CiAKLSAgICAgICAgaWYgKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkZyYW1lQ29udGVudFZpZXcpCi0gICAgICAgICAgICBjb250ZW50Vmlldy5zaG93U291
cmNlQ29kZShwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1h
dHRlZCk7Ci0gICAgICAgIGVsc2UgaWYgKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3KQotICAgICAgICAgICAgY29udGVudFZpZXcu
c2hvd1Jlc3BvbnNlKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVu
Zm9ybWF0dGVkKTsKLSAgICAgICAgZWxzZSBpZiAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcpCi0gICAgICAgICAgICBjb250ZW50Vmlldy5yZXZl
YWxQb3NpdGlvbihwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZv
cm1hdHRlZCk7CisgICAgICAgIHZhciByZXN0b3JlQ2FsbGJhY2sgPSBmdW5jdGlvbihjb250ZW50
Vmlldywgc2F2ZWRDb29raWUpIHsKKyAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gc2F2ZWRD
b29raWUubGluZU51bWJlcjsKKyAgICAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSBzYXZlZENv
b2tpZS5jb2x1bW5OdW1iZXI7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogCi0g
ICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcoY29udGVu
dFZpZXcpOworICAgICAgICAgICAgaWYgKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkZyYW1lQ29udGVudFZpZXcpCisgICAgICAgICAgICAgICAgY29udGVudFZpZXcuc2hvd1Nv
dXJjZUNvZGUocG9zaXRpb24pCisgICAgICAgICAgICBlbHNlIGlmIChjb250ZW50VmlldyBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldykKKyAgICAgICAg
ICAgICAgICBjb250ZW50Vmlldy5zaG93UmVzcG9uc2UocG9zaXRpb24pCisgICAgICAgICAgICBl
bHNlIGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50
VmlldykKKyAgICAgICAgICAgICAgICBjb250ZW50Vmlldy5yZXZlYWxQb3NpdGlvbihwb3NpdGlv
bikKKyAgICAgICAgfTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hv
d0NvbnRlbnRWaWV3KG5ld0NvbnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjayk7CiAg
ICAgfSwKIAogICAgIHNob3dTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUNvZGVM
b2NhdGlvbikK
</data>

          </attachment>
      

    </bug>

</bugzilla>