<?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>142141</bug_id>
          
          <creation_ts>2015-02-28 19:08:49 -0800</creation_ts>
          <short_desc>Web Inspector: Refactoring: separate ConsoleSession from ConsoleGroup</short_desc>
          <delta_ts>2015-03-03 10:11:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>mkwst</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1073134</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-02-28 19:08:49 -0800</bug_when>
    <thetext>Currently, ConsoleGroup is used for both sessions and console groups (created via console.group()), even though they look quite different. Console sessions can’t be collapsed and they don’t have a title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073135</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-02-28 19:09:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/19998033&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073136</commentid>
    <comment_count>2</comment_count>
      <attachid>247622</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-02-28 19:27:00 -0800</bug_when>
    <thetext>Created attachment 247622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073139</commentid>
    <comment_count>3</comment_count>
      <attachid>247622</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-02-28 19:42:46 -0800</bug_when>
    <thetext>Comment on attachment 247622
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/ConsoleGroup.js:-63
&gt; -            this.messagesElement.parentNode.insertBefore(element, this.messagesElement);

This line really had kept me puzzled for some time. Since we don’t use any templates, our views are quite verbose and fairly hard to read. We should avoid using parentNode and insertBefore to keep our views easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073347</commentid>
    <comment_count>4</comment_count>
      <attachid>247622</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-02 09:33:51 -0800</bug_when>
    <thetext>Comment on attachment 247622
Patch

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

It is good to split these, but there really needs to be a model and view split as well. Right now these objects are both the model and the view and that complicates things and makes them untestable.

&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptLogViewController.js:-115
&gt; -        // Reuse the top group if it has no messages.
&gt; -        if (this._topConsoleGroup &amp;&amp; !this._topConsoleGroup.hasMessages()) {
&gt; -            // Make sure the session is visible.
&gt; -            this._topConsoleGroup.element.scrollIntoView();
&gt; -            return;
&gt; -        }

Seems good to do still. I remember visually this was causing multiple dividers to stack. We clear on reload by default now, so you might need to turn that off.

&gt; Source/WebInspectorUI/UserInterface/Views/ConsoleGroup.js:42
&gt; +    render: function(msg)

msg should be spelled out. Is this a WebInspector.ConsoleMessage?

ConsoleGroup should really be a model object and we should have a ConsoleGroupView that encapsulates the DOM element handling.

&gt; Source/WebInspectorUI/UserInterface/Views/ConsoleGroup.js:44
&gt; +        var group = document.createElement(&quot;div&quot;);

groupElement would be a better name.

&gt; Source/WebInspectorUI/UserInterface/Views/ConsoleSession.js:29
&gt; +WebInspector.ConsoleSession = function()

We will likely want a ConsoleSession model object that holds ConsoleMessage model objects. And corresponding view objects — ConsoleSessionView and ConsoleMessageView. This new object current mixes the two — like ConsoleGroup did.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073506</commentid>
    <comment_count>5</comment_count>
      <attachid>247715</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-03-02 16:24:18 -0800</bug_when>
    <thetext>Created attachment 247715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073509</commentid>
    <comment_count>6</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-03-02 16:28:16 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 247622 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247622&amp;action=review
&gt; 
&gt; It is good to split these, but there really needs to be a model and view
&gt; split as well. Right now these objects are both the model and the view and
&gt; that complicates things and makes them untestable.

Yes, that’s what I’m going to do next. This patch is just about simplifying Session view.

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptLogViewController.js:-115
&gt; &gt; -        // Reuse the top group if it has no messages.
&gt; &gt; -        if (this._topConsoleGroup &amp;&amp; !this._topConsoleGroup.hasMessages()) {
&gt; &gt; -            // Make sure the session is visible.
&gt; &gt; -            this._topConsoleGroup.element.scrollIntoView();
&gt; &gt; -            return;
&gt; &gt; -        }
&gt; 
&gt; Seems good to do still. I remember visually this was causing multiple
&gt; dividers to stack. We clear on reload by default now, so you might need to
&gt; turn that off.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ConsoleGroup.js:42
&gt; &gt; +    render: function(msg)
&gt; 
&gt; msg should be spelled out. Is this a WebInspector.ConsoleMessage?

Yes, it is.

&gt; 
&gt; ConsoleGroup should really be a model object and we should have a
&gt; ConsoleGroupView that encapsulates the DOM element handling.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ConsoleGroup.js:44
&gt; &gt; +        var group = document.createElement(&quot;div&quot;);
&gt; 
&gt; groupElement would be a better name.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ConsoleSession.js:29
&gt; &gt; +WebInspector.ConsoleSession = function()
&gt; 
&gt; We will likely want a ConsoleSession model object that holds ConsoleMessage
&gt; model objects. And corresponding view objects — ConsoleSessionView and
&gt; ConsoleMessageView. This new object current mixes the two — like
&gt; ConsoleGroup did.

Separating models from the views of ConsoleMessage, ConsoleGroup, ConsoleSession is what I’m going to do next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073699</commentid>
    <comment_count>7</comment_count>
      <attachid>247715</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-03 10:11:19 -0800</bug_when>
    <thetext>Comment on attachment 247715
Patch

Clearing flags on attachment: 247715

Committed r180941: &lt;http://trac.webkit.org/changeset/180941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073700</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-03 10:11:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247622</attachid>
            <date>2015-02-28 19:27:00 -0800</date>
            <delta_ts>2015-03-03 09:25:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>13434</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDdkMzNlOTcuLjA4MzM0M2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTAyLTI4ICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZmFj
dG9yaW5nOiBzZXBhcmF0ZSBDb25zb2xlU2Vzc2lvbiBmcm9tIENvbnNvbGVHcm91cAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMTQxCisKKyAgICAg
ICAgQ29uc29sZVNlc3Npb24gZG9lc24ndCBoYXZlIGEgdGl0bGUgYW5kIGl0J3Mgbm90IGNvbGxh
cHNpYmxlIGVpdGhlci4KKyAgICAgICAgU2ltcGxpZnkgQ29uc29sZVNlc3Npb24gYnkgcmVtb3Zp
bmcgZXhjZXNzaXZlIG1hcmt1cC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1Zp
ZXdDb250cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRMb2dWaWV3
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250
cm9sbGVyLnByb3RvdHlwZS5zdGFydE5ld1Nlc3Npb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuX2FwcGVuZENvbnNvbGVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIu
cHJvdG90eXBlLmdldCB0b3BDb25zb2xlR3JvdXApOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29s
ZUdyb3VwLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwLnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUuYWRkTWVzc2FnZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwLnByb3RvdHlwZS5hcHBlbmQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUuaGFzTWVzc2FnZXMpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVNlc3Npb24uanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlU2Vzc2lvbi5wcm90b3R5cGUuYWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVNlc3Npb24ucHJvdG90eXBlLmFwcGVuZCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5jc3M6CisgICAgICAgICguY29uc29sZS1zZXNzaW9u
ICsgLmNvbnNvbGUtc2Vzc2lvbik6CisgICAgICAgICguY29uc29sZS1ncm91cC5uZXctc2Vzc2lv
biAuY29uc29sZS1ncm91cC1tZXNzYWdlcyAuY29uc29sZS1pdGVtOmZpcnN0LWNoaWxkKTogRGVs
ZXRlZC4KKyAgICAgICAgKC5jb25zb2xlLWdyb3VwLm5ldy1zZXNzaW9uKTogRGVsZXRlZC4KKwog
MjAxNS0wMi0yNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFVzZSBNYXBzIGluIFJlc291cmNlQ29sbGVjdGlvbiBpbnN0ZWFk
IG9mIG9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3
Q29udHJvbGxlci5qcwppbmRleCBiNzU0NzUyLi45MTJiZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmll
d0NvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzCkBAIC00NSw3ICs0NSw3
IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIgPSBmdW5jdGlvbihl
bGVtZW50LCBzY3JvbGxFbGVtZW50LCB0ZXh0CiAgICAgdGhpcy5fcHJldmlvdXNNZXNzYWdlID0g
bnVsbDsKICAgICB0aGlzLl9yZXBlYXRDb3VudFdhc0ludGVycnVwdGVkID0gZmFsc2U7CiAKLSAg
ICB0aGlzLl90b3BDb25zb2xlR3JvdXBzID0gW107CisgICAgdGhpcy5fc2Vzc2lvbnMgPSBbXTsK
IAogICAgIHRoaXMubWVzc2FnZXNDbGVhcktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZp
ZXIuQ29tbWFuZE9yQ29udHJvbCwgIksiLCB0aGlzLl9oYW5kbGVDbGVhclNob3J0Y3V0LmJpbmQo
dGhpcykpOwogICAgIHRoaXMubWVzc2FnZXNBbHRlcm5hdGVDbGVhcktleWJvYXJkU2hvcnRjdXQg
PSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgIkwiLCB0aGlzLl9oYW5kbGVDbGVhclNob3J0Y3V0
LmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOwpAQCAtNzQsMTEgKzc0LDYgQEAgV2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9wcm9tcHQ7CiAgICAgfSwKIAotICAgIGdldCB0b3BDb25zb2xlR3JvdXAoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RvcENvbnNvbGVHcm91cDsKLSAgICB9LAotCiAg
ICAgZ2V0IGN1cnJlbnRDb25zb2xlR3JvdXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2N1cnJlbnRDb25zb2xlR3JvdXA7CkBAIC05OCwzNiArOTMsMjYgQEAgV2ViSW5zcGVjdG9yLkph
dmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICBzdGFydE5ld1Nl
c3Npb246IGZ1bmN0aW9uKGNsZWFyUHJldmlvdXNTZXNzaW9ucykKICAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl90b3BDb25zb2xlR3JvdXBzLmxlbmd0aCAmJiBjbGVhclByZXZpb3VzU2Vzc2lvbnMp
IHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fdG9wQ29uc29sZUdyb3Vw
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUNoaWxk
KHRoaXMuX3RvcENvbnNvbGVHcm91cHNbaV0uZWxlbWVudCk7CisgICAgICAgIGlmICh0aGlzLl9z
ZXNzaW9ucy5sZW5ndGggJiYgY2xlYXJQcmV2aW91c1Nlc3Npb25zKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Nlc3Npb25zLmxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fc2Vzc2lvbnNbaV0uZWxlbWVu
dCk7CiAKLSAgICAgICAgICAgIHRoaXMuX3RvcENvbnNvbGVHcm91cHMgPSBbXTsKLSAgICAgICAg
ICAgIHRoaXMuX3RvcENvbnNvbGVHcm91cCA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9zZXNz
aW9ucyA9IFtdOwogICAgICAgICAgICAgdGhpcy5fY3VycmVudENvbnNvbGVHcm91cCA9IG51bGw7
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBSZXVzZSB0aGUgdG9wIGdyb3VwIGlmIGl0IGhhcyBu
byBtZXNzYWdlcy4KLSAgICAgICAgaWYgKHRoaXMuX3RvcENvbnNvbGVHcm91cCAmJiAhdGhpcy5f
dG9wQ29uc29sZUdyb3VwLmhhc01lc3NhZ2VzKCkpIHsKLSAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgc2Vzc2lvbiBpcyB2aXNpYmxlLgotICAgICAgICAgICAgdGhpcy5fdG9wQ29uc29sZUdy
b3VwLmVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBoYXNQcmV2aW91c1Nlc3Npb24gPSAhIXRoaXMuX3RvcENvbnNv
bGVHcm91cDsKLSAgICAgICAgdmFyIGNvbnNvbGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29u
c29sZUdyb3VwKG51bGwsIGhhc1ByZXZpb3VzU2Vzc2lvbik7CisgICAgICAgIHZhciBjb25zb2xl
U2Vzc2lvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24oKTsKIAogICAgICAgICB0
aGlzLl9wcmV2aW91c01lc3NhZ2UgPSBudWxsOwogICAgICAgICB0aGlzLl9yZXBlYXRDb3VudFdh
c0ludGVycnVwdGVkID0gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fdG9wQ29uc29sZUdyb3Vwcy5w
dXNoKGNvbnNvbGVHcm91cCk7Ci0gICAgICAgIHRoaXMuX3RvcENvbnNvbGVHcm91cCA9IGNvbnNv
bGVHcm91cDsKLSAgICAgICAgdGhpcy5fY3VycmVudENvbnNvbGVHcm91cCA9IGNvbnNvbGVHcm91
cDsKKyAgICAgICAgdGhpcy5fc2Vzc2lvbnMucHVzaChjb25zb2xlU2Vzc2lvbik7CisgICAgICAg
IHRoaXMuX2N1cnJlbnRDb25zb2xlR3JvdXAgPSBjb25zb2xlU2Vzc2lvbjsKIAotICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGNvbnNvbGVHcm91cC5lbGVtZW50KTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChjb25zb2xlU2Vzc2lvbi5lbGVtZW50KTsKIAogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldyBzZXNzaW9uIGlzIHZpc2libGUuCi0gICAgICAgIGNv
bnNvbGVHcm91cC5lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgIGNvbnNvbGVTZXNz
aW9uLmVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKICAgICB9LAogCiAgICAgYXBwZW5kQ29uc29s
ZU1lc3NhZ2U6IGZ1bmN0aW9uKGNvbnNvbGVNZXNzYWdlKQpAQCAtMjc0LDExICsyNTksMTEgQEAg
V2ViSW5zcGVjdG9yLkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobXNnLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwIHx8IG1zZy50eXBlID09PSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNl
ZCkgewogICAgICAgICAgICAgICAgIHZhciBncm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29s
ZUdyb3VwKHRoaXMuX2N1cnJlbnRDb25zb2xlR3JvdXApOwotICAgICAgICAgICAgICAgIHRoaXMu
X2N1cnJlbnRDb25zb2xlR3JvdXAubWVzc2FnZXNFbGVtZW50LmFwcGVuZENoaWxkKGdyb3VwLmVs
ZW1lbnQpOworICAgICAgICAgICAgICAgIHZhciBncm91cEVsZW1lbnQgPSBncm91cC5yZW5kZXIo
bXNnKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q29uc29sZUdyb3VwLmFwcGVuZChn
cm91cEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDb25zb2xlR3JvdXAg
PSBncm91cDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fY3VycmVudENvbnNv
bGVHcm91cC5hZGRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICB0aGlzLl9jdXJyZW50Q29uc29sZUdyb3VwLmFkZE1lc3NhZ2UobXNnKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtc2cudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VUeXBlLlJlc3VsdCB8fCB3YXNTY3JvbGxlZFRvQm90dG9tKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDk2YjVmODQuLjJlYzQw
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
QEAgLTM0OCw2ICszNDgsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xlQ29tbWFu
ZFJlc3VsdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNvbGVHcm91
cC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNvbGVQcm9tcHQuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xlU2Vzc2lvbi5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnRlbnRCcm93c2VyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db250ZW50Rmxvd1RyZWVFbGVt
ZW50LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVHcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVHcm91cC5qcwppbmRleCA5YWFlZGFhLi5mZjU3NWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b25zb2xlR3JvdXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29uc29sZUdyb3VwLmpzCkBAIC0yNywyNCArMjcsMTEgQEAKICAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCA9IGZ1bmN0aW9uKHBhcmVudEdyb3VwLCBp
c05ld1Nlc3Npb24pCitXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwID0gZnVuY3Rpb24ocGFyZW50
R3JvdXApCiB7CiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhp
cy5wYXJlbnRHcm91cCA9IHBhcmVudEdyb3VwOwotCi0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xl
LWdyb3VwIjsKLSAgICBlbGVtZW50Lmdyb3VwID0gdGhpczsKLSAgICB0aGlzLmVsZW1lbnQgPSBl
bGVtZW50OwotCi0gICAgaWYgKGlzTmV3U2Vzc2lvbikKLSAgICAgICAgZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJuZXctc2Vzc2lvbiIpOwotCi0gICAgdmFyIG1lc3NhZ2VzRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIG1lc3NhZ2VzRWxlbWVudC5jbGFzc05hbWUg
PSAiY29uc29sZS1ncm91cC1tZXNzYWdlcyI7Ci0gICAgZWxlbWVudC5hcHBlbmRDaGlsZChtZXNz
YWdlc0VsZW1lbnQpOwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50ID0gbWVzc2FnZXNFbGVtZW50
OwogfTsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUgPSB7CkBAIC01Miwy
NyArMzksNDUgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUgPSB7CiAKICAg
ICAvLyBQdWJsaWMKIAorICAgIHJlbmRlcjogZnVuY3Rpb24obXNnKQorICAgIHsKKyAgICAgICAg
dmFyIGdyb3VwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGdyb3Vw
LmNsYXNzTmFtZSA9ICJjb25zb2xlLWdyb3VwIjsKKyAgICAgICAgZ3JvdXAuZ3JvdXAgPSB0aGlz
OworICAgICAgICB0aGlzLmVsZW1lbnQgPSBncm91cDsKKworICAgICAgICB2YXIgdGl0bGUgPSBt
c2cudG9NZXNzYWdlRWxlbWVudCgpOworICAgICAgICB0aXRsZS5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5JdGVtV3JhcHBlclN0eWxlQ2xhc3NOYW1lKTsKKyAgICAg
ICAgdGl0bGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90aXRsZUNsaWNrZWQuYmlu
ZCh0aGlzKSk7CisgICAgICAgIHRpdGxlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRo
aXMuX3RpdGxlTW91c2VEb3duLmJpbmQodGhpcykpOworICAgICAgICBpZiAoZ3JvdXAgJiYgbXNn
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdy
b3VwQ29sbGFwc2VkKQorICAgICAgICAgICAgZ3JvdXAuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2Vk
Iik7CisKKyAgICAgICAgZ3JvdXAuYXBwZW5kQ2hpbGQodGl0bGUpOworCisgICAgICAgIHZhciBt
ZXNzYWdlc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
dGhpcy5fbWVzc2FnZXNFbGVtZW50ID0gbWVzc2FnZXNFbGVtZW50OworICAgICAgICBtZXNzYWdl
c0VsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtZ3JvdXAtbWVzc2FnZXMiOworICAgICAgICBn
cm91cC5hcHBlbmRDaGlsZChtZXNzYWdlc0VsZW1lbnQpOworCisgICAgICAgIHJldHVybiBncm91
cDsKKyAgICB9LAorCiAgICAgYWRkTWVzc2FnZTogZnVuY3Rpb24obXNnKQogICAgIHsKLSAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
ZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBw
ZXJTdHlsZUNsYXNzTmFtZTsKLQotICAgICAgICBtc2cuZGVjb3JhdGVNZXNzYWdlRWxlbWVudChl
bGVtZW50KTsKLQotICAgICAgICBpZiAobXNnLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwIHx8IG1zZy50eXBlID09PSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZCkgewotICAg
ICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxl
bWVudCwgdGhpcy5tZXNzYWdlc0VsZW1lbnQpOwotICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RpdGxlQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICAg
ICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fdGl0bGVN
b3VzZURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICB2YXIgZ3JvdXBFbGVtZW50ID0gZWxl
bWVudC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJjb25zb2xlLWdyb3VwIik7Ci0gICAg
ICAgICAgICBpZiAoZ3JvdXBFbGVtZW50ICYmIG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZCkKLSAgICAgICAgICAg
ICAgICBncm91cEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgICAgIHZhciBlbGVtZW50ID0gbXNnLnRvTWVzc2FnZUVsZW1lbnQoKTsKKyAgICAg
ICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5JdGVt
V3JhcHBlclN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5hcHBlbmQoZWxlbWVudCk7Cisg
ICAgfSwKKworICAgIGFwcGVuZDogZnVuY3Rpb24obXNnRWxlbWVudCkKKyAgICB7CisgICAgICAg
IHRoaXMuX21lc3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChtc2dFbGVtZW50KTsKICAgICB9LAog
CiAgICAgaGFzTWVzc2FnZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhIXRo
aXMubWVzc2FnZXNFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoOworICAgICAgICByZXR1cm4gISF0
aGlzLl9tZXNzYWdlc0VsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGg7CiAgICAgfSwKIAogICAgIC8v
IFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29uc29sZVNlc3Npb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZmI4MjAyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3Bl
Y3Rvci5Db25zb2xlU2Vzc2lvbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CisKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtc2Vzc2lvbiI7Cisg
ICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKKyAgICB0aGlzLl9tZXNzYWdlc0VsZW1lbnQgPSBl
bGVtZW50OworfTsKKworV2ViSW5zcGVjdG9yLkNvbnNvbGVTZXNzaW9uLnByb3RvdHlwZSA9IHsK
KyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnNvbGVTZXNzaW9uLAorCisgICAgYWRk
TWVzc2FnZTogZnVuY3Rpb24obXNnKQorICAgIHsKKyAgICAgICAgdmFyIG1lc3NhZ2VFbGVtZW50
ID0gbXNnLnRvTWVzc2FnZUVsZW1lbnQoKTsKKyAgICAgICAgbWVzc2FnZUVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNz
TmFtZSk7CisgICAgICAgIHRoaXMuX21lc3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdl
RWxlbWVudCk7CisgICAgfSwKKworICAgIGFwcGVuZDogZnVuY3Rpb24obWVzc2FnZUVsZW1lbnQp
CisgICAgeworICAgICAgICB0aGlzLl9tZXNzYWdlc0VsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2Fn
ZUVsZW1lbnQpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5Db25zb2xlU2Vzc2lvbi5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50
Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dD
b250ZW50Vmlldy5jc3MKaW5kZXggOWJhMDBiOS4uZDgxNDUxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuY3NzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRW
aWV3LmNzcwpAQCAtNTQsMTAgKzU0LDYgQEAKICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdi
KDI0MCwgMjQwLCAyNDApOwogfQogCi0uY29uc29sZS1ncm91cC5uZXctc2Vzc2lvbiAuY29uc29s
ZS1ncm91cC1tZXNzYWdlcyAuY29uc29sZS1pdGVtOmZpcnN0LWNoaWxkIHsKLSAgICBib3JkZXIt
dG9wOiBub25lOwotfQotCiAuY29uc29sZS1pdGVtLnNlbGVjdGVkOjphZnRlciB7CiAgICAgcG9z
aXRpb246IGFic29sdXRlOwogICAgIGRpc3BsYXk6IGJsb2NrOwpAQCAtMTcxLDcgKzE2Nyw3IEBA
CiAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogfQogCi0uY29uc29sZS1ncm91cC5uZXctc2Vzc2lv
biB7CisuY29uc29sZS1zZXNzaW9uICsgLmNvbnNvbGUtc2Vzc2lvbiB7CiAgICAgYm9yZGVyLXRv
cDogM3B4IGRhc2hlZCByZ2IoMjQwLCAyNDAsIDI0MCk7CiB9CiAK
</data>
<flag name="review"
          id="272543"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247715</attachid>
            <date>2015-03-02 16:24:18 -0800</date>
            <delta_ts>2015-03-03 10:11:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>13915</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDdkMzNlOTcuLjgyNWE0NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE1LTAzLTAyICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZmFj
dG9yaW5nOiBzZXBhcmF0ZSBDb25zb2xlU2Vzc2lvbiBmcm9tIENvbnNvbGVHcm91cAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMTQxCisKKyAgICAg
ICAgQ29uc29sZVNlc3Npb24gZG9lc24ndCBoYXZlIGEgdGl0bGUgYW5kIGl0J3Mgbm90IGNvbGxh
cHNpYmxlIGVpdGhlci4KKyAgICAgICAgU2ltcGxpZnkgQ29uc29sZVNlc3Npb24gYnkgcmVtb3Zp
bmcgZXhjZXNzaXZlIG1hcmt1cC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1Zp
ZXdDb250cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRMb2dWaWV3
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250
cm9sbGVyLnByb3RvdHlwZS5zdGFydE5ld1Nlc3Npb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuX2FwcGVuZENvbnNvbGVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIu
cHJvdG90eXBlLmdldCB0b3BDb25zb2xlR3JvdXApOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29s
ZUdyb3VwLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwLnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUuYWRkTWVzc2FnZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwLnByb3RvdHlwZS5hcHBlbmQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUuaGFzTWVzc2FnZXMpOiBEZWxldGVk
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVNlc3Npb24uanM6IEFkZGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVTZXNzaW9uKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db25zb2xlU2Vzc2lvbi5wcm90b3R5cGUuYWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24ucHJvdG90eXBlLmFwcGVuZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24ucHJvdG90eXBlLmhhc01lc3NhZ2VzKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmNzczoKKyAgICAgICAgKC5j
b25zb2xlLXNlc3Npb24gKyAuY29uc29sZS1zZXNzaW9uKToKKyAgICAgICAgKC5jb25zb2xlLWdy
b3VwLm5ldy1zZXNzaW9uIC5jb25zb2xlLWdyb3VwLW1lc3NhZ2VzIC5jb25zb2xlLWl0ZW06Zmly
c3QtY2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoLmNvbnNvbGUtZ3JvdXAubmV3LXNlc3Npb24p
OiBEZWxldGVkLgorCiAyMDE1LTAyLTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVXNlIE1hcHMgaW4gUmVzb3VyY2VDb2xs
ZWN0aW9uIGluc3RlYWQgb2Ygb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2
YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzCmluZGV4IGI3NTQ3NTIuLjE2Y2M3ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ph
dmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIuanMK
QEAgLTQ1LDcgKzQ1LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxl
ciA9IGZ1bmN0aW9uKGVsZW1lbnQsIHNjcm9sbEVsZW1lbnQsIHRleHQKICAgICB0aGlzLl9wcmV2
aW91c01lc3NhZ2UgPSBudWxsOwogICAgIHRoaXMuX3JlcGVhdENvdW50V2FzSW50ZXJydXB0ZWQg
PSBmYWxzZTsKIAotICAgIHRoaXMuX3RvcENvbnNvbGVHcm91cHMgPSBbXTsKKyAgICB0aGlzLl9z
ZXNzaW9ucyA9IFtdOwogCiAgICAgdGhpcy5tZXNzYWdlc0NsZWFyS2V5Ym9hcmRTaG9ydGN1dCA9
IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiSyIsIHRoaXMuX2hhbmRsZUNsZWFy
U2hvcnRjdXQuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5tZXNzYWdlc0FsdGVybmF0ZUNsZWFyS2V5
Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCAiTCIsIHRoaXMuX2hhbmRs
ZUNsZWFyU2hvcnRjdXQuYmluZCh0aGlzKSwgdGhpcy5fZWxlbWVudCk7CkBAIC03NCwxMSArNzQs
NiBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21wdDsKICAgICB9LAogCi0gICAgZ2V0IHRvcENv
bnNvbGVHcm91cCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdG9wQ29uc29sZUdyb3Vw
OwotICAgIH0sCi0KICAgICBnZXQgY3VycmVudENvbnNvbGVHcm91cCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY3VycmVudENvbnNvbGVHcm91cDsKQEAgLTk4LDM2ICs5MywzNCBAQCBX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAog
ICAgIHN0YXJ0TmV3U2Vzc2lvbjogZnVuY3Rpb24oY2xlYXJQcmV2aW91c1Nlc3Npb25zKQogICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX3RvcENvbnNvbGVHcm91cHMubGVuZ3RoICYmIGNsZWFyUHJl
dmlvdXNTZXNzaW9ucykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl90
b3BDb25zb2xlR3JvdXBzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQucmVtb3ZlQ2hpbGQodGhpcy5fdG9wQ29uc29sZUdyb3Vwc1tpXS5lbGVtZW50KTsKKyAgICAg
ICAgaWYgKHRoaXMuX3Nlc3Npb25zLmxlbmd0aCAmJiBjbGVhclByZXZpb3VzU2Vzc2lvbnMpIHsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2Vzc2lvbnMubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9zZXNz
aW9uc1tpXS5lbGVtZW50KTsKIAotICAgICAgICAgICAgdGhpcy5fdG9wQ29uc29sZUdyb3VwcyA9
IFtdOwotICAgICAgICAgICAgdGhpcy5fdG9wQ29uc29sZUdyb3VwID0gbnVsbDsKKyAgICAgICAg
ICAgIHRoaXMuX3Nlc3Npb25zID0gW107CiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q29uc29s
ZUdyb3VwID0gbnVsbDsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFJldXNlIHRoZSB0b3AgZ3Jv
dXAgaWYgaXQgaGFzIG5vIG1lc3NhZ2VzLgotICAgICAgICBpZiAodGhpcy5fdG9wQ29uc29sZUdy
b3VwICYmICF0aGlzLl90b3BDb25zb2xlR3JvdXAuaGFzTWVzc2FnZXMoKSkgeworICAgICAgICB2
YXIgbGFzdFNlc3Npb24gPSB0aGlzLl9zZXNzaW9ucy5sYXN0VmFsdWU7CisgICAgICAgIC8vIFJl
dXNlIHRoZSBsYXN0IHNlc3Npb24gaWYgaXQgaGFzIG5vIG1lc3NhZ2VzLgorICAgICAgICBpZiAo
bGFzdFNlc3Npb24gJiYgIWxhc3RTZXNzaW9uLmhhc01lc3NhZ2VzKCkpIHsKICAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgc2Vzc2lvbiBpcyB2aXNpYmxlLgotICAgICAgICAgICAgdGhpcy5f
dG9wQ29uc29sZUdyb3VwLmVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKKyAgICAgICAgICAgIGxh
c3RTZXNzaW9uLmVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIHZhciBoYXNQcmV2aW91c1Nlc3Npb24gPSAhIXRoaXMuX3Rv
cENvbnNvbGVHcm91cDsKLSAgICAgICAgdmFyIGNvbnNvbGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29uc29sZUdyb3VwKG51bGwsIGhhc1ByZXZpb3VzU2Vzc2lvbik7CisgICAgICAgIHZhciBj
b25zb2xlU2Vzc2lvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24oKTsKIAogICAg
ICAgICB0aGlzLl9wcmV2aW91c01lc3NhZ2UgPSBudWxsOwogICAgICAgICB0aGlzLl9yZXBlYXRD
b3VudFdhc0ludGVycnVwdGVkID0gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fdG9wQ29uc29sZUdy
b3Vwcy5wdXNoKGNvbnNvbGVHcm91cCk7Ci0gICAgICAgIHRoaXMuX3RvcENvbnNvbGVHcm91cCA9
IGNvbnNvbGVHcm91cDsKLSAgICAgICAgdGhpcy5fY3VycmVudENvbnNvbGVHcm91cCA9IGNvbnNv
bGVHcm91cDsKKyAgICAgICAgdGhpcy5fc2Vzc2lvbnMucHVzaChjb25zb2xlU2Vzc2lvbik7Cisg
ICAgICAgIHRoaXMuX2N1cnJlbnRDb25zb2xlR3JvdXAgPSBjb25zb2xlU2Vzc2lvbjsKIAotICAg
ICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGNvbnNvbGVHcm91cC5lbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChjb25zb2xlU2Vzc2lvbi5lbGVtZW50KTsK
IAogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldyBzZXNzaW9uIGlzIHZpc2libGUuCi0gICAg
ICAgIGNvbnNvbGVHcm91cC5lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgIGNvbnNv
bGVTZXNzaW9uLmVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKICAgICB9LAogCiAgICAgYXBwZW5k
Q29uc29sZU1lc3NhZ2U6IGZ1bmN0aW9uKGNvbnNvbGVNZXNzYWdlKQpAQCAtMjc0LDExICsyNjcs
MTEgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobXNnLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwIHx8IG1zZy50eXBl
ID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENv
bGxhcHNlZCkgewogICAgICAgICAgICAgICAgIHZhciBncm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q29uc29sZUdyb3VwKHRoaXMuX2N1cnJlbnRDb25zb2xlR3JvdXApOwotICAgICAgICAgICAgICAg
IHRoaXMuX2N1cnJlbnRDb25zb2xlR3JvdXAubWVzc2FnZXNFbGVtZW50LmFwcGVuZENoaWxkKGdy
b3VwLmVsZW1lbnQpOworICAgICAgICAgICAgICAgIHZhciBncm91cEVsZW1lbnQgPSBncm91cC5y
ZW5kZXIobXNnKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q29uc29sZUdyb3VwLmFw
cGVuZChncm91cEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDb25zb2xl
R3JvdXAgPSBncm91cDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fY3VycmVu
dENvbnNvbGVHcm91cC5hZGRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICB0aGlzLl9jdXJyZW50Q29uc29sZUdyb3VwLmFkZE1lc3NhZ2UobXNnKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChtc2cudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdCB8fCB3YXNTY3JvbGxlZFRvQm90dG9tKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDk2YjVmODQu
LjJlYzQwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKQEAgLTM0OCw2ICszNDgsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xl
Q29tbWFuZFJlc3VsdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNv
bGVHcm91cC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNvbGVQcm9t
cHQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xlU2Vzc2lvbi5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnRlbnRCcm93c2VyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVu
dFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db250ZW50Rmxvd1Ry
ZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVHcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVHcm91cC5qcwppbmRleCA5YWFlZGFhLi43
OWViNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db25zb2xlR3JvdXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29uc29sZUdyb3VwLmpzCkBAIC0yNywyNCArMjcsMTEgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCA9IGZ1bmN0aW9uKHBhcmVudEdy
b3VwLCBpc05ld1Nlc3Npb24pCitXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwID0gZnVuY3Rpb24o
cGFyZW50R3JvdXApCiB7CiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAg
ICAgdGhpcy5wYXJlbnRHcm91cCA9IHBhcmVudEdyb3VwOwotCi0gICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJj
b25zb2xlLWdyb3VwIjsKLSAgICBlbGVtZW50Lmdyb3VwID0gdGhpczsKLSAgICB0aGlzLmVsZW1l
bnQgPSBlbGVtZW50OwotCi0gICAgaWYgKGlzTmV3U2Vzc2lvbikKLSAgICAgICAgZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJuZXctc2Vzc2lvbiIpOwotCi0gICAgdmFyIG1lc3NhZ2VzRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIG1lc3NhZ2VzRWxlbWVudC5jbGFz
c05hbWUgPSAiY29uc29sZS1ncm91cC1tZXNzYWdlcyI7Ci0gICAgZWxlbWVudC5hcHBlbmRDaGls
ZChtZXNzYWdlc0VsZW1lbnQpOwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50ID0gbWVzc2FnZXNF
bGVtZW50OwogfTsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUgPSB7CkBA
IC01MiwyNyArMzksNDAgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUgPSB7
CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGFkZE1lc3NhZ2U6IGZ1bmN0aW9uKG1zZykKKyAgICBy
ZW5kZXI6IGZ1bmN0aW9uKG1lc3NhZ2UpCiAgICAgewotICAgICAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5JdGVtV3JhcHBlclN0eWxlQ2xhc3NOYW1lOwor
ICAgICAgICB2YXIgZ3JvdXBFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgIGdyb3VwRWxlbWVudC5jbGFzc05hbWUgPSAiY29uc29sZS1ncm91cCI7CisgICAg
ICAgIGdyb3VwRWxlbWVudC5ncm91cCA9IHRoaXM7CisgICAgICAgIHRoaXMuZWxlbWVudCA9IGdy
b3VwRWxlbWVudDsKKworICAgICAgICB2YXIgdGl0bGVFbGVtZW50ID0gbWVzc2FnZS50b01lc3Nh
Z2VFbGVtZW50KCk7CisgICAgICAgIHRpdGxlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5JdGVtV3JhcHBlclN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
dGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdGl0bGVDbGlja2Vk
LmJpbmQodGhpcykpOworICAgICAgICB0aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgdGhpcy5fdGl0bGVNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIGlmIChn
cm91cEVsZW1lbnQgJiYgbWVzc2FnZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZCkKKyAgICAgICAgICAgIGdyb3VwRWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKIAotICAgICAgICBtc2cuZGVjb3JhdGVN
ZXNzYWdlRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgZ3JvdXBFbGVtZW50LmFwcGVuZENoaWxk
KHRpdGxlRWxlbWVudCk7CiAKLSAgICAgICAgaWYgKG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cCB8fCBtc2cudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQp
IHsKLSAgICAgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVm
b3JlKGVsZW1lbnQsIHRoaXMubWVzc2FnZXNFbGVtZW50KTsKLSAgICAgICAgICAgIGVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90aXRsZUNsaWNrZWQuYmluZCh0aGlzKSk7
Ci0gICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X3RpdGxlTW91c2VEb3duLmJpbmQodGhpcykpOwotICAgICAgICAgICAgdmFyIGdyb3VwRWxlbWVu
dCA9IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiY29uc29sZS1ncm91cCIp
OwotICAgICAgICAgICAgaWYgKGdyb3VwRWxlbWVudCAmJiBtc2cudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQpCi0gICAg
ICAgICAgICAgICAgZ3JvdXBFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxhcHNlZCIpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFwcGVuZENoaWxk
KGVsZW1lbnQpOworICAgICAgICB2YXIgbWVzc2FnZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX21lc3NhZ2VzRWxlbWVudCA9IG1lc3NhZ2Vz
RWxlbWVudDsKKyAgICAgICAgbWVzc2FnZXNFbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLWdy
b3VwLW1lc3NhZ2VzIjsKKyAgICAgICAgZ3JvdXBFbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2Vz
RWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIGdyb3VwRWxlbWVudDsKKyAgICB9LAorCisgICAg
YWRkTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50
ID0gbWVzc2FnZS50b01lc3NhZ2VFbGVtZW50KCk7CisgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgIHRoaXMuYXBwZW5kKGVsZW1lbnQpOwogICAgIH0sCiAKLSAgICBoYXNNZXNz
YWdlczogZnVuY3Rpb24oKQorICAgIGFwcGVuZDogZnVuY3Rpb24obWVzc2FnZUVsZW1lbnQpCiAg
ICAgewotICAgICAgICByZXR1cm4gISF0aGlzLm1lc3NhZ2VzRWxlbWVudC5jaGlsZE5vZGVzLmxl
bmd0aDsKKyAgICAgICAgdGhpcy5fbWVzc2FnZXNFbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VF
bGVtZW50KTsKICAgICB9LAogCiAgICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVNlc3Npb24uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjFkOGQwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVNl
c3Npb24uanMKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkNvbnNvbGVTZXNzaW9uID0gZnVuY3Rpb24o
KQoreworICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC5jbGFzc05h
bWUgPSAiY29uc29sZS1zZXNzaW9uIjsKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OworICAg
IHRoaXMuX21lc3NhZ2VzRWxlbWVudCA9IGVsZW1lbnQ7Cit9OworCitXZWJJbnNwZWN0b3IuQ29u
c29sZVNlc3Npb24ucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
Q29uc29sZVNlc3Npb24sCisKKyAgICBhZGRNZXNzYWdlOiBmdW5jdGlvbihtZXNzYWdlKQorICAg
IHsKKyAgICAgICAgdmFyIG1lc3NhZ2VFbGVtZW50ID0gbWVzc2FnZS50b01lc3NhZ2VFbGVtZW50
KCk7CisgICAgICAgIG1lc3NhZ2VFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkxv
Z0NvbnRlbnRWaWV3Lkl0ZW1XcmFwcGVyU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9t
ZXNzYWdlc0VsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2FnZUVsZW1lbnQpOworICAgIH0sCisKKyAg
ICBhcHBlbmQ6IGZ1bmN0aW9uKG1lc3NhZ2VFbGVtZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5f
bWVzc2FnZXNFbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VFbGVtZW50KTsKKyAgICB9LAorCisg
ICAgaGFzTWVzc2FnZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRoaXMu
X21lc3NhZ2VzRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsKKyAgICB9Cit9OworCitXZWJJbnNw
ZWN0b3IuQ29uc29sZVNlc3Npb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuY3NzCmluZGV4IDliYTAwYjkuLmQ4
MTQ1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xvZ0NvbnRlbnRWaWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5jc3MKQEAgLTU0LDEwICs1NCw2IEBACiAgICAg
Ym9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYigyNDAsIDI0MCwgMjQwKTsKIH0KIAotLmNvbnNvbGUt
Z3JvdXAubmV3LXNlc3Npb24gLmNvbnNvbGUtZ3JvdXAtbWVzc2FnZXMgLmNvbnNvbGUtaXRlbTpm
aXJzdC1jaGlsZCB7Ci0gICAgYm9yZGVyLXRvcDogbm9uZTsKLX0KLQogLmNvbnNvbGUtaXRlbS5z
ZWxlY3RlZDo6YWZ0ZXIgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBkaXNwbGF5OiBi
bG9jazsKQEAgLTE3MSw3ICsxNjcsNyBAQAogICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKIH0KIAot
LmNvbnNvbGUtZ3JvdXAubmV3LXNlc3Npb24geworLmNvbnNvbGUtc2Vzc2lvbiArIC5jb25zb2xl
LXNlc3Npb24gewogICAgIGJvcmRlci10b3A6IDNweCBkYXNoZWQgcmdiKDI0MCwgMjQwLCAyNDAp
OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>