<?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>136984</bug_id>
          
          <creation_ts>2014-09-21 14:31:51 -0700</creation_ts>
          <short_desc>Web Inspector: console view takes a long time to render if there are many messages</short_desc>
          <delta_ts>2026-01-12 09:02:58 -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>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=142011</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>155629</dependson>
          <blocked>152220</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>giovanni.piller</cc>
    
    <cc>graouts</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1036374</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-21 14:31:51 -0700</bug_when>
    <thetext>It seems like we try to load up all the messages before showing the full-size console view. This is a problem if there are 100&apos;s of message in the console. (A good test case is using 2nd level inspector while dumping protocol traffic via the switch in InspectorBackend.)

Since old output scrolls off the top, we should probably be showing the view immediately then incrementally rendering messages from newest to oldest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036375</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-09-21 14:31:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/18407035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071993</commentid>
    <comment_count>2</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-02-25 00:13:55 -0800</bug_when>
    <thetext>&gt; A good test case is using 2nd level inspector while dumping protocol traffic via the switch in InspectorBackend.

Could you explain how to do that? I’m not familiar with that switch.

I’m in the process of rewriting console views (LogContentView.js, JavaScriptLogView.js, ConsoleGroup.js, etc.) and I’d like to fix all issues related to console’s slugishness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072000</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-02-25 00:33:42 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; A good test case is using 2nd level inspector while dumping protocol traffic via the switch in InspectorBackend.
&gt; 
&gt; Could you explain how to do that? I’m not familiar with that switch.

He is referring to InspectorBackend.dumpInspectorProtocolMessages.

Set that to true, and the 2nd level inspector will dump to console all frontend &lt;-&gt; backend traffic.

---

Just a quick glance at the code:

  - InspectorConsoleAgent stores the last 1000 messages while no inspector is open
  - InspectorConsoleAgent::enable sends all of them to the frontend in order (old -&gt; new)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072477</commentid>
    <comment_count>4</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-02-26 13:59:58 -0800</bug_when>
    <thetext>I’ll do progressive rendering, batching by something between 10 and 32 messages. 32 is number of one-line messages fitting in the console on my 15 inch MacBook Pro: 
https://cldup.com/vzs8ntl1ew.png</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072478</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-02-26 14:03:16 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I’ll do progressive rendering, batching by something between 10 and 32
&gt; messages. 32 is number of one-line messages fitting in the console on my 15
&gt; inch MacBook Pro: 
&gt; https://cldup.com/vzs8ntl1ew.png

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072663</commentid>
    <comment_count>6</comment_count>
      <attachid>247503</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-02-26 22:47:29 -0800</bug_when>
    <thetext>Created attachment 247503
WIP

This patch does batch updates only 3 messages at the time because it’s easier to debug this way.

Before looking at the patch, please note that I was in the middle of ConsoleGroup refactoring, which was intersected with this patch.

Brian, let me know if it solves the original problem. Even with InspectorBackend.dumpInspectorProtocolMessages turned on, it was fairly fast for me, so I couldn’t quite reproduce it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072664</commentid>
    <comment_count>7</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-02-26 22:49:47 -0800</bug_when>
    <thetext>s/was intersected/was intersecting/

(I’ll learn English grammar one day)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074294</commentid>
    <comment_count>8</comment_count>
      <attachid>247503</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-04 16:59:59 -0800</bug_when>
    <thetext>Comment on attachment 247503
WIP

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

So this batch updates on new messages but it does not cap the max messages we should in the DOM. I think it would still be good to cap the max we put in the DOM in the first place so switching to the console is fast and won&apos;t eat memory and slow down the UI with too many DOM nodes in the tree.

&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptLogViewController.js:282
&gt; +        this._batchUpdateId = requestAnimationFrame(function() {

I would break out the inline function into a named function since it is large. It can still be a closure, just named. See NavigationSidebarPanel.js _checkForOldResources for an example (that uses setTimeout when we likely should consider using rAF more.)

At first I wondered what _batchUpdateId was, I thought it was some id you used but it is the rAF id. I would put &quot;TimeoutIdentifier&quot; or &quot;AnimationIdentifier&quot; as a suffix.

Also we spell out Identifier. https://trac.webkit.org/wiki/WebInspectorCodingStyleGuide#Namingthings

&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptLogViewController.js:315
&gt; +            //@nvasilyev: extra console.groupEnd() call can make console group go negative margin, not good.

We should just ignore the extra then. Would be good to file a separate bug for that.

&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptLogViewController.js:331
&gt;          if (this.delegate &amp;&amp; typeof this.delegate.didAppendConsoleMessage === &quot;function&quot;)
&gt;              this.delegate.didAppendConsoleMessage(msg);

I wonder if this should fire only after the batch update?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189457</commentid>
    <comment_count>9</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-05-02 12:00:13 -0700</bug_when>
    <thetext>With bug 155629 landed, now it&apos;s very straightforward to implement progressive rendering.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247503</attachid>
            <date>2015-02-26 22:47:29 -0800</date>
            <delta_ts>2015-02-26 22:47:29 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>18274</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5q
cwppbmRleCAzNjYzMGI5Li5hYzI2Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
SmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzCkBAIC0zMCw2ICszMCwxMCBAQCBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyID0gZnVuY3Rpb24oZWxlbWVudCwgc2Ny
b2xsRWxlbWVudCwgdGV4dAogICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRQcm9tcHQgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCk7CiAgICAgY29uc29sZS5hc3NlcnQoaGlzdG9y
eVNldHRpbmdJZGVudGlmaWVyKTsKIAorICAgIHRoaXMuX21lc3NhZ2VzID0gW107CisgICAgdGhp
cy5fZmlyc3RVbnJlbmRlcmVkID0gMDsKKyAgICB0aGlzLl9iYXRjaFVwZGF0ZUlkID0gMDsKKwog
ICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50OwogICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSBz
Y3JvbGxFbGVtZW50OwogCkBAIC00NSw3ICs0OSw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0
TG9nVmlld0NvbnRyb2xsZXIgPSBmdW5jdGlvbihlbGVtZW50LCBzY3JvbGxFbGVtZW50LCB0ZXh0
CiAgICAgdGhpcy5fcHJldmlvdXNNZXNzYWdlID0gbnVsbDsKICAgICB0aGlzLl9yZXBlYXRDb3Vu
dFdhc0ludGVycnVwdGVkID0gZmFsc2U7CiAKLSAgICB0aGlzLl90b3BDb25zb2xlR3JvdXBzID0g
W107CisgICAgdGhpcy5fc2Vzc2lvbnMgPSBbXTsKIAogICAgIHRoaXMubWVzc2FnZXNDbGVhcktl
eWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIksiLCB0
aGlzLl9oYW5kbGVDbGVhclNob3J0Y3V0LmJpbmQodGhpcykpOwogICAgIHRoaXMubWVzc2FnZXNB
bHRlcm5hdGVDbGVhcktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwg
IkwiLCB0aGlzLl9oYW5kbGVDbGVhclNob3J0Y3V0LmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQp
OwpAQCAtNjIsNiArNjYsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9s
bGVyID0gZnVuY3Rpb24oZWxlbWVudCwgc2Nyb2xsRWxlbWVudCwgdGV4dAogICAgIHRoaXMuc3Rh
cnROZXdTZXNzaW9uKCk7CiB9OwogCitXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250
cm9sbGVyLlVwZGF0ZUJhdGNoU2l6ZSA9IDM7IC8vRklYTUU6IHNtYWxsIG51bWJlciB0byBtYWtl
IGRlYnVnZ2luZyBlYXNpZXIuCiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9s
bGVyLkNhY2hlZFByb3BlcnRpZXNEdXJhdGlvbiA9IDMwMDAwOwogCiBXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKQEAgLTc2LDExICs4MSwxMyBA
QCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsK
IAogICAgIGdldCB0b3BDb25zb2xlR3JvdXAoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3RvcENvbnNvbGVHcm91cDsKKyAgICAgICAgLy8gTmV2ZXIgdXNlZCBhbnl3aGVyZS4KKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25zLmxhc3RWYWx1ZSB8fCBudWxsOwogICAgIH0sCiAKICAg
ICBnZXQgY3VycmVudENvbnNvbGVHcm91cCgpCiAgICAgeworICAgICAgICAvLyBOZXZlciB1c2Vk
IGFueXdoZXJlLgogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudENvbnNvbGVHcm91cDsKICAg
ICB9LAogCkBAIC05OCw0MiArMTA1LDM5IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0TG9nVmll
d0NvbnRyb2xsZXIucHJvdG90eXBlID0gewogCiAgICAgc3RhcnROZXdTZXNzaW9uOiBmdW5jdGlv
bihjbGVhclByZXZpb3VzU2Vzc2lvbnMpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fdG9wQ29u
c29sZUdyb3Vwcy5sZW5ndGggJiYgY2xlYXJQcmV2aW91c1Nlc3Npb25zKSB7Ci0gICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3RvcENvbnNvbGVHcm91cHMubGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl90b3BDb25z
b2xlR3JvdXBzW2ldLmVsZW1lbnQpOwotCi0gICAgICAgICAgICB0aGlzLl90b3BDb25zb2xlR3Jv
dXBzID0gW107Ci0gICAgICAgICAgICB0aGlzLl90b3BDb25zb2xlR3JvdXAgPSBudWxsOwotICAg
ICAgICAgICAgdGhpcy5fY3VycmVudENvbnNvbGVHcm91cCA9IG51bGw7CisgICAgICAgIGlmIChj
bGVhclByZXZpb3VzU2Vzc2lvbnMpIHsKKyAgICAgICAgICAgIHRoaXMuX2Fib3J0QmF0Y2hVcGRh
dGUoKTsKKyAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107CisgICAgICAgICAgICB0aGlz
Ll9maXJzdFVucmVuZGVyZWQgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gUmV1c2UgdGhl
IHRvcCBncm91cCBpZiBpdCBoYXMgbm8gbWVzc2FnZXMuCi0gICAgICAgIGlmICh0aGlzLl90b3BD
b25zb2xlR3JvdXAgJiYgIXRoaXMuX3RvcENvbnNvbGVHcm91cC5oYXNNZXNzYWdlcygpKSB7Ci0g
ICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHNlc3Npb24gaXMgdmlzaWJsZS4KLSAgICAgICAg
ICAgIHRoaXMuX3RvcENvbnNvbGVHcm91cC5lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7Ci0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLl9zZXNzaW9ucy5sZW5ndGggJiYgY2xl
YXJQcmV2aW91c1Nlc3Npb25zKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX3Nlc3Npb25zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25z
W2ldLmVsZW1lbnQucmVtb3ZlKCk7CisKKyAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25zID0gW107
CisgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q29uc29sZUdyb3VwID0gbnVsbDsKICAgICAgICAg
fQogCi0gICAgICAgIHZhciBoYXNQcmV2aW91c1Nlc3Npb24gPSAhIXRoaXMuX3RvcENvbnNvbGVH
cm91cDsKLSAgICAgICAgdmFyIGNvbnNvbGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29s
ZUdyb3VwKG51bGwsIGhhc1ByZXZpb3VzU2Vzc2lvbik7CisgICAgICAgIHZhciBjb25zb2xlU2Vz
c2lvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24oKTsKIAogICAgICAgICB0aGlz
Ll9wcmV2aW91c01lc3NhZ2UgPSBudWxsOwogICAgICAgICB0aGlzLl9yZXBlYXRDb3VudFdhc0lu
dGVycnVwdGVkID0gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fdG9wQ29uc29sZUdyb3Vwcy5wdXNo
KGNvbnNvbGVHcm91cCk7Ci0gICAgICAgIHRoaXMuX3RvcENvbnNvbGVHcm91cCA9IGNvbnNvbGVH
cm91cDsKLSAgICAgICAgdGhpcy5fY3VycmVudENvbnNvbGVHcm91cCA9IGNvbnNvbGVHcm91cDsK
KyAgICAgICAgdGhpcy5fc2Vzc2lvbnMucHVzaChjb25zb2xlU2Vzc2lvbik7CisgICAgICAgIHRo
aXMuX2N1cnJlbnRDb25zb2xlR3JvdXAgPSBjb25zb2xlU2Vzc2lvbjsKIAotICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKGNvbnNvbGVHcm91cC5lbGVtZW50KTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZChjb25zb2xlU2Vzc2lvbi5lbGVtZW50KTsKIAogICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhlIG5ldyBzZXNzaW9uIGlzIHZpc2libGUuCi0gICAgICAgIGNvbnNv
bGVHcm91cC5lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgIGNvbnNvbGVTZXNzaW9u
LmVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKICAgICB9LAogCiAgICAgYXBwZW5kQ29uc29sZU1l
c3NhZ2U6IGZ1bmN0aW9uKGNvbnNvbGVNZXNzYWdlKQogICAgIHsKICAgICAgICAgLy8gQ2xvbmUg
dGhlIG1lc3NhZ2Ugc2luY2UgdGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgY2xpZW50cyB1c2luZyB0
aGUgbWVzc2FnZSwKICAgICAgICAgLy8gYW5kIHNpbmNlIHRoZSBtZXNzYWdlIGhhcyBhIERPTSBl
bGVtZW50IGl0IGNhbid0IGJlIHR3byBwbGFjZXMgYXQgb25jZS4KKyAgICAgICAgLy8gQG52YXNp
bHlldjogQ2xvbmluZyBzZWVtcyB3YXN0ZWZ1bCwgd2Ugc2hvdWxkIGZyZWV6ZSB0aGUgY29uc29s
ZU1lc3NhZ2UgYW5kIGNsb25lIG9ubHkgd2hlbiBuZWVkZWQuCiAgICAgICAgIHZhciBtZXNzYWdl
Q2xvbmUgPSBjb25zb2xlTWVzc2FnZS5jbG9uZSgpOwogCiAgICAgICAgIHRoaXMuX2FwcGVuZENv
bnNvbGVNZXNzYWdlKG1lc3NhZ2VDbG9uZSk7CkBAIC0yNTksMTkgKzI2Myw2MSBAQCBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgIF9h
cHBlbmRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obXNnLCByZXBlYXRDb3VudFdhc0ludGVycnVw
dGVkKQogICAgIHsKLSAgICAgICAgdmFyIHdhc1Njcm9sbGVkVG9Cb3R0b20gPSB0aGlzLmlzU2Ny
b2xsZWRUb0JvdHRvbSgpOwotCiAgICAgICAgIHRoaXMuX2NsZWFyZWQgPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5fcmVwZWF0Q291bnRXYXNJbnRlcnJ1cHRlZCA9IHJlcGVhdENvdW50V2FzSW50ZXJy
dXB0ZWQgfHwgZmFsc2U7CiAKICAgICAgICAgaWYgKCFyZXBlYXRDb3VudFdhc0ludGVycnVwdGVk
KQogICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNNZXNzYWdlID0gbXNnOwogCisgICAgICAgIHRo
aXMuX21lc3NhZ2VzLnB1c2gobXNnKTsKKyAgICAgICAgdGhpcy5fYmF0Y2hVcGRhdGUoKTsKKyAg
ICB9LAorCisKKyAgICBfYmF0Y2hVcGRhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLl9iYXRjaFVwZGF0ZUlkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX2JhdGNoVXBkYXRlSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB2YXIgd2FzU2Nyb2xsZWRUb0JvdHRvbSA9IHRoaXMuaXNTY3JvbGxlZFRvQm90
dG9tKCk7CisKKyAgICAgICAgICAgIHZhciBtYXggPSBNYXRoLm1pbih0aGlzLl9tZXNzYWdlcy5s
ZW5ndGgsIHRoaXMuX2ZpcnN0VW5yZW5kZXJlZCArIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0TG9n
Vmlld0NvbnRyb2xsZXIuVXBkYXRlQmF0Y2hTaXplKTsKKyAgICAgICAgICAgIGNvbnNvbGUuaW5m
bygiVXBkYXRpbmcgbWVzc2FnZXMgZnJvbSAlaSB0byAlaSIsIHRoaXMuX2ZpcnN0VW5yZW5kZXJl
ZCwgbWF4KTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX2ZpcnN0VW5yZW5kZXJl
ZDsgaSA8IG1heDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLl9t
ZXNzYWdlc1tpXTsKKyAgICAgICAgICAgICAgICB0aGlzLl9kb0FwcGVuZENvbnNvbGVNZXNzYWdl
KG1lc3NhZ2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9maXJzdFVucmVu
ZGVyZWQgPSBpOworICAgICAgICAgICAgdGhpcy5fYmF0Y2hVcGRhdGVJZCA9IDA7CisKKyAgICAg
ICAgICAgIGlmICh3YXNTY3JvbGxlZFRvQm90dG9tKQorICAgICAgICAgICAgICAgIHRoaXMuc2Ny
b2xsVG9Cb3R0b20oKTsKKworICAgICAgICAgICAgaWYgKGkgPCB0aGlzLl9tZXNzYWdlcy5sZW5n
dGgpCisgICAgICAgICAgICAgICAgdGhpcy5fYmF0Y2hVcGRhdGUoKTsKKworICAgICAgICB9LmJp
bmQodGhpcykpOworICAgIH0sCisKKyAgICBfYWJvcnRCYXRjaFVwZGF0ZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2JhdGNoVXBkYXRlSWQpCisgICAgICAgICAgICBjYW5j
ZWxBbmltYXRpb25GcmFtZSh0aGlzLl9iYXRjaFVwZGF0ZUlkKTsKKworICAgICAgICB0aGlzLl9i
YXRjaFVwZGF0ZUlkID0gMDsKKyAgICB9LAorCisgICAgX2RvQXBwZW5kQ29uc29sZU1lc3NhZ2U6
IGZ1bmN0aW9uKG1zZykgewogICAgICAgICBpZiAobXNnLnR5cGUgPT09IFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5FbmRHcm91cCkgeworICAgICAgICAgICAgLy9AbnZh
c2lseWV2OiBleHRyYSBjb25zb2xlLmdyb3VwRW5kKCkgY2FsbCBjYW4gbWFrZSBjb25zb2xlIGdy
b3VwIGdvIG5lZ2F0aXZlIG1hcmdpbiwgbm90IGdvb2QuCiAgICAgICAgICAgICB2YXIgcGFyZW50
R3JvdXAgPSB0aGlzLl9jdXJyZW50Q29uc29sZUdyb3VwLnBhcmVudEdyb3VwOwogICAgICAgICAg
ICAgaWYgKHBhcmVudEdyb3VwKQogICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDb25zb2xl
R3JvdXAgPSBwYXJlbnRHcm91cDsKICAgICAgICAgfSBlbHNlIHsKKwogICAgICAgICAgICAgaWYg
KG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3Rh
cnRHcm91cCB8fCBtc2cudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQpIHsKICAgICAgICAgICAgICAgICB2YXIgZ3JvdXAg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCh0aGlzLl9jdXJyZW50Q29uc29sZUdyb3Vw
KTsKICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q29uc29sZUdyb3VwLm1lc3NhZ2VzRWxl
bWVudC5hcHBlbmRDaGlsZChncm91cC5lbGVtZW50KTsKQEAgLTI4MSw5ICszMjcsNiBAQCBXZWJJ
bnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX2N1cnJlbnRDb25zb2xlR3JvdXAuYWRkTWVzc2FnZShtc2cpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuUmVzdWx0IHx8IHdhc1Njcm9sbGVkVG9Cb3R0b20pCi0gICAgICAgICAg
ICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7Ci0KICAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYg
dHlwZW9mIHRoaXMuZGVsZWdhdGUuZGlkQXBwZW5kQ29uc29sZU1lc3NhZ2UgPT09ICJmdW5jdGlv
biIpCiAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmRpZEFwcGVuZENvbnNvbGVNZXNzYWdlKG1z
Zyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCmluZGV4IDJkNTY1NzYuLmRkNzFhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTM0Niw2ICszNDYsNyBAQAogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db25zb2xlQ29tbWFuZFJlc3VsdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0NvbnNvbGVHcm91cC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvbnNvbGVQcm9tcHQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db25zb2xlU2Vzc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Nv
bnRlbnRCcm93c2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVu
dEZsb3dET01UcmVlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tl
bmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNw
ZWN0b3JCYWNrZW5kLmpzCmluZGV4IDY1ODJmOTYuLjA3ZGY5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yQmFja2VuZC5qcwpAQCAtMzksNyArMzksNyBAQCBmdW5jdGlvbiBJbnNwZWN0b3JCYWNr
ZW5kQ2xhc3MoKQogICAgIHRoaXMuX2RlZmVycmVkU2NyaXB0cyA9IFtdOwogCiAgICAgdGhpcy5k
dW1wSW5zcGVjdG9yVGltZVN0YXRzID0gZmFsc2U7Ci0gICAgdGhpcy5kdW1wSW5zcGVjdG9yUHJv
dG9jb2xNZXNzYWdlcyA9IGZhbHNlOworICAgIHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVz
c2FnZXMgPSB0cnVlOwogICAgIHRoaXMud2FybkZvckxvbmdNZXNzYWdlSGFuZGxpbmcgPSBmYWxz
ZTsKICAgICB0aGlzLmxvbmdNZXNzYWdlSGFuZGxpbmdUaHJlc2hvbGQgPSAxMDsgLy8gbWlsbGlz
ZWNvbmRzLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29uc29sZUdyb3VwLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29uc29sZUdyb3VwLmpzCmluZGV4IDlhYWVkYWEuLjIxNTA3OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVH
cm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b25zb2xlR3JvdXAuanMKQEAgLTI5LDYgKzI5LDkgQEAKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVH
cm91cCA9IGZ1bmN0aW9uKHBhcmVudEdyb3VwLCBpc05ld1Nlc3Npb24pCiB7CisgICAgaWYgKGlz
TmV3U2Vzc2lvbikKKyAgICAgICAgY29uc29sZS53YXJuKCdpc05ld1Nlc3Npb24gcGFyYW1ldGVy
IGlzIGRlcHJlY2F0ZWQnKTsKKwogICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
IAogICAgIHRoaXMucGFyZW50R3JvdXAgPSBwYXJlbnRHcm91cDsKQEAgLTM4LDkgKzQxLDYgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCA9IGZ1bmN0aW9uKHBhcmVudEdyb3VwLCBpc05ld1Nl
c3Npb24pCiAgICAgZWxlbWVudC5ncm91cCA9IHRoaXM7CiAgICAgdGhpcy5lbGVtZW50ID0gZWxl
bWVudDsKIAotICAgIGlmIChpc05ld1Nlc3Npb24pCi0gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgibmV3LXNlc3Npb24iKTsKLQogICAgIHZhciBtZXNzYWdlc0VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICBtZXNzYWdlc0VsZW1lbnQuY2xhc3NOYW1lID0g
ImNvbnNvbGUtZ3JvdXAtbWVzc2FnZXMiOwogICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2Fn
ZXNFbGVtZW50KTsKQEAgLTUyLDYgKzUyLDEwIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAu
cHJvdG90eXBlID0gewogCiAgICAgLy8gUHVibGljCiAKKyAgICBhcHBlbmQ6IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKKyAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgfSwKKwogICAgIGFkZE1lc3NhZ2U6IGZ1bmN0aW9uKG1zZykKICAgICB7CiAgICAg
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC02MCw2
ICs2NCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAucHJvdG90eXBlID0gewogICAgICAg
ICBtc2cuZGVjb3JhdGVNZXNzYWdlRWxlbWVudChlbGVtZW50KTsKIAogICAgICAgICBpZiAobXNn
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdy
b3VwIHx8IG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5
cGUuU3RhcnRHcm91cENvbGxhcHNlZCkgeworICAgICAgICAgICAgY29uc29sZS5sb2coIlN0YXJ0
R3JvdXAiKTsKKyAgICAgICAgICAgIC8vRklYTUU6IFJld3JpdGUgdGhpcywgcmVtb3ZlIGVuY2xv
c2luZ05vZGVPclNlbGZXaXRoQ2xhc3MuCiAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVu
dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCB0aGlzLm1lc3NhZ2VzRWxlbWVudCk7
CiAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdGl0
bGVDbGlja2VkLmJpbmQodGhpcykpOwogICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLl90aXRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKQEAgLTcw
LDExICs3Niw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICAg
fSwKIAotICAgIGhhc01lc3NhZ2VzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
ISF0aGlzLm1lc3NhZ2VzRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsKLSAgICB9LAotCiAgICAg
Ly8gUHJpdmF0ZQogCiAgICAgX3RpdGxlTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKQEAgLTg0
LDYgKzg1LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUgPSB7CiAKICAg
ICBfdGl0bGVDbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7CisgICAgICAgIC8vRklYTUU6
IFJld3JpdGUgdGhpcywgcmVtb3ZlIGVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MuCiAgICAg
ICAgIHZhciBncm91cFRpdGxlRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JT
ZWxmV2l0aENsYXNzKCJjb25zb2xlLWdyb3VwLXRpdGxlIik7CiAgICAgICAgIGlmIChncm91cFRp
dGxlRWxlbWVudCkgewogICAgICAgICAgICAgdmFyIGdyb3VwRWxlbWVudCA9IGdyb3VwVGl0bGVF
bGVtZW50LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImNvbnNvbGUtZ3JvdXAiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNv
bGVTZXNzaW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29uc29sZVNlc3Npb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdh
MzhmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK1dlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZVZpZXcgPSBmdW5jdGlvbihtc2cpCit7CisgICAgdmFyIGVsZW0gPSBtc2cudG9N
ZXNzYWdlRWxlbWVudCgpOworICAgIGVsZW0uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTG9n
Q29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFtZSk7CisgICAgcmV0dXJuIGVsZW07
Cit9OworCisKK1dlYkluc3BlY3Rvci5Db25zb2xlU2Vzc2lvbiA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisKKyAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNv
bnNvbGUtc2Vzc2lvbiI7CisgICAgZWxlbWVudC5ncm91cCA9IHRoaXM7CisgICAgdGhpcy5lbGVt
ZW50ID0gZWxlbWVudDsKKworICAgIC8vIFNlc3Npb25zIGFyZSBhbHdheXMgdG9wLWxldmVsIGFu
ZCBkb24ndCBuZXN0LgorICAgIHRoaXMucGFyZW50R3JvdXAgPSBudWxsOworCisgICAgLy9AbnZh
c2lseWV2OiBJZGVhOiBtYWtlIHNlc3Npb25zIGNvbGxhcHNpYmxlLgorfTsKKworV2ViSW5zcGVj
dG9yLkNvbnNvbGVTZXNzaW9uLnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvbnNvbGVTZXNzaW9uLAorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgbWVzc2Fn
ZXNFbGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ7CisgICAgfSwK
KworICAgIGFwcGVuZDogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHRoaXMubWVz
c2FnZXNFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0sCisKKyAgICBhZGRNZXNz
YWdlOiBmdW5jdGlvbihtc2cpCisgICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IG1zZy50b01l
c3NhZ2VFbGVtZW50KCk7CisgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFtZSk7CisKKyAgICAgICAg
aWYgKG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUu
U3RhcnRHcm91cCB8fCBtc2cudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuaW5m
bygiU3RhcnRTZXNzaW9uIik7CisgICAgICAgICAgICAvL0ZJWE1FOiBDb3B5L3Bhc3RlIGZyb20g
Q29uc29sZUdyb3VwLCByZW1vdGUgbGF0ZXIuCisgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzRWxl
bWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCB0aGlzLm1lc3NhZ2VzRWxlbWVu
dCk7CisgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
dGl0bGVDbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl90aXRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgICAgIHZhciBncm91cEVsZW1lbnQgPSBlbGVtZW50LmVuY2xvc2luZ05vZGVPclNlbGZX
aXRoQ2xhc3MoImNvbnNvbGUtZ3JvdXAiKTsKKyAgICAgICAgICAgIGlmIChncm91cEVsZW1lbnQg
JiYgbXNnLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5T
dGFydEdyb3VwQ29sbGFwc2VkKQorICAgICAgICAgICAgICAgIGdyb3VwRWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJjb2xsYXBzZWQiKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLm1l
c3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9LAorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX3RpdGxlTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKworICAgIF90aXRsZUNsaWNrZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGdyb3VwVGl0bGVFbGVtZW50ID0g
ZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImNvbnNvbGUtZ3JvdXAt
dGl0bGUiKTsKKyAgICAgICAgaWYgKGdyb3VwVGl0bGVFbGVtZW50KSB7CisgICAgICAgICAgICB2
YXIgZ3JvdXBFbGVtZW50ID0gZ3JvdXBUaXRsZUVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2VsZldp
dGhDbGFzcygiY29uc29sZS1ncm91cCIpOworICAgICAgICAgICAgaWYgKGdyb3VwRWxlbWVudCkK
KyAgICAgICAgICAgICAgICBpZiAoZ3JvdXBFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiY29s
bGFwc2VkIikpCisgICAgICAgICAgICAgICAgICAgIGdyb3VwRWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJjb2xsYXBzZWQiKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGdyb3VwRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKKyAgICAgICAgICAg
IGdyb3VwVGl0bGVFbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQodHJ1ZSk7CisgICAgICAg
IH0KKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24ucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZp
ZXcuY3NzCmluZGV4IDM3MzE0NDAuLmFiNjAwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmNzcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5jc3MK
QEAgLTU0LDcgKzU0LDcgQEAKICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDI0MCwgMjQw
LCAyNDApOwogfQogCi0uY29uc29sZS1ncm91cC5uZXctc2Vzc2lvbiAuY29uc29sZS1ncm91cC1t
ZXNzYWdlcyAuY29uc29sZS1pdGVtOmZpcnN0LWNoaWxkIHsKKy5jb25zb2xlLXNlc3Npb24ubmV3
LXNlc3Npb24gLmNvbnNvbGUtZ3JvdXAtbWVzc2FnZXMgLmNvbnNvbGUtaXRlbTpmaXJzdC1jaGls
ZCB7CiAgICAgYm9yZGVyLXRvcDogbm9uZTsKIH0KIApAQCAtMTU3LDEyICsxNTcsMTMgQEAKICAg
ICBkaXNwbGF5OiBub25lOwogfQogCisuY29uc29sZS1zZXNzaW9uLAogLmNvbnNvbGUtZ3JvdXAg
ewogICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKIH0KIAotLmNvbnNvbGUtZ3JvdXAubmV3LXNlc3Np
b24gewotICAgIGJvcmRlci10b3A6IDNweCBkYXNoZWQgcmdiKDI0MCwgMjQwLCAyNDApOworLmNv
bnNvbGUtc2Vzc2lvbiArIC5jb25zb2xlLXNlc3Npb24geworICAgIGJvcmRlci10b3A6IDNweCBk
YXNoZWQgaHNsKDAsIDAlLCA5MCUpOwogfQogCiAuY29uc29sZS1lcnJvci1sZXZlbCB7CkBAIC0y
MzgsNTMgKzIzOSw1MyBAQAogICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiB9CiAKLS5jb25zb2xl
LWdyb3VwLW1lc3NhZ2VzIC5zZWN0aW9uIHsKKy5jb25zb2xlLXNlc3Npb24tbWVzc2FnZXMgLnNl
Y3Rpb24gewogICAgIG1hcmdpbjogMCAwIDAgMTJweDsKIH0KIAotLmNvbnNvbGUtZ3JvdXAtbWVz
c2FnZXMgLnNlY3Rpb24gLmhlYWRlciB7CisuY29uc29sZS1zZXNzaW9uLW1lc3NhZ2VzIC5zZWN0
aW9uIC5oZWFkZXIgewogICAgIHBhZGRpbmc6IDAgOHB4IDAgMDsKICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBub25lOwogICAgIGJvcmRlcjogbm9uZTsKICAgICBtaW4taGVpZ2h0OiAwOwogfQogCi0u
Y29uc29sZS1ncm91cC1tZXNzYWdlcyAuc2VjdGlvbiAuaGVhZGVyOjpiZWZvcmUgeworLmNvbnNv
bGUtc2Vzc2lvbi1tZXNzYWdlcyAuc2VjdGlvbiAuaGVhZGVyOjpiZWZvcmUgewogICAgIHRvcDog
M3B4OwogICAgIGxlZnQ6IDFweDsKIH0KIAotLmNvbnNvbGUtZ3JvdXAtbWVzc2FnZXMgLnNlY3Rp
b24gLmhlYWRlciAudGl0bGUgeworLmNvbnNvbGUtc2Vzc2lvbi1tZXNzYWdlcyAuc2VjdGlvbiAu
aGVhZGVyIC50aXRsZSB7CiAgICAgY29sb3I6IGJsYWNrOwogICAgIGZvbnQtd2VpZ2h0OiBub3Jt
YWw7CiAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogQEZJWE1FOiBtYXkgY2F1c2UgaW5jb25z
aXN0ZW5jaWVzIGluIGxpbmUtaGVpZ2h0cyBvZiBtb25vc3BhY2UgYW5kIG5vbi1tb25vc3BhY2Ug
dGV4dCAqLwogfQogCi0uY29uc29sZS1ncm91cC1tZXNzYWdlcyAuc2VjdGlvbiAucHJvcGVydGll
cyBsaSAuaW5mbyB7CisuY29uc29sZS1zZXNzaW9uLW1lc3NhZ2VzIC5zZWN0aW9uIC5wcm9wZXJ0
aWVzIGxpIC5pbmZvIHsKICAgICBwYWRkaW5nLXRvcDogMDsKICAgICBwYWRkaW5nLWJvdHRvbTog
MDsKICAgICBjb2xvcjogcmdiKDYwJSwgNjAlLCA2MCUpOwogfQogCi0uY29uc29sZS1ncm91cC1t
ZXNzYWdlcyAub3V0bGluZS1kaXNjbG9zdXJlIHsKKy5jb25zb2xlLXNlc3Npb24tbWVzc2FnZXMg
Lm91dGxpbmUtZGlzY2xvc3VyZSB7CiAgICAgb3V0bGluZTogbm9uZTsKICAgICBwYWRkaW5nLWxl
ZnQ6IDA7CiB9CiAKLS5jb25zb2xlLWdyb3VwLW1lc3NhZ2VzIC5vdXRsaW5lLWRpc2Nsb3N1cmUg
PiBvbCB7CisuY29uc29sZS1zZXNzaW9uLW1lc3NhZ2VzIC5vdXRsaW5lLWRpc2Nsb3N1cmUgPiBv
bCB7CiAgICAgcGFkZGluZzogMCAwIDAgMTJweCAhaW1wb3J0YW50OwogfQogCi0uY29uc29sZS1n
cm91cC1tZXNzYWdlcyAub3V0bGluZS1kaXNjbG9zdXJlLnNpbmdsZS1ub2RlIGxpIHsKKy5jb25z
b2xlLXNlc3Npb24tbWVzc2FnZXMgLm91dGxpbmUtZGlzY2xvc3VyZS5zaW5nbGUtbm9kZSBsaSB7
CiAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiB9CiAKLS5jb25zb2xlLWdyb3VwLW1lc3NhZ2VzIC5v
dXRsaW5lLWRpc2Nsb3N1cmUgbGkgLnNlbGVjdGlvbiB7CisuY29uc29sZS1zZXNzaW9uLW1lc3Nh
Z2VzIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkgLnNlbGVjdGlvbiB7CiAgICAgbWFyZ2luLWxlZnQ6
IC02cHg7CiAgICAgbWFyZ2luLXJpZ2h0OiAtNnB4OwogfQogCi0uY29uc29sZS1ncm91cC1tZXNz
YWdlcyAuYWRkLWF0dHJpYnV0ZSB7CisuY29uc29sZS1zZXNzaW9uLW1lc3NhZ2VzIC5hZGQtYXR0
cmlidXRlIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCg==
</data>
<flag name="review"
          id="272428"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
    <flag name="commit-queue"
          id="272429"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
      

    </bug>

</bugzilla>