<?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>82703</bug_id>
          
          <creation_ts>2012-03-30 01:28:17 -0700</creation_ts>
          <short_desc>Web Inspector: preload field values into local variables for better heap profiler performance</short_desc>
          <delta_ts>2012-03-30 06:25:19 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591948</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-03-30 01:28:17 -0700</bug_when>
    <thetext>We can achieve noticeable improvement in the heap profiler front-end performance by using local variables instead of object fields in several hot places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591952</commentid>
    <comment_count>1</comment_count>
      <attachid>134744</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-03-30 01:39:35 -0700</bug_when>
    <thetext>Created attachment 134744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591953</commentid>
    <comment_count>2</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-03-30 01:41:21 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=134744) [details]
&gt; Patch

WebKit/PerformanceTests/inspector/detailed-heapshots-smoke-test.html results:

Before the change:

RESULT heap-snapshot: take-snapshot= 4941 ms
RESULT heap-snapshot: transfer-snapshot= 8657 ms
RESULT heap-snapshot: _splitNodesAndContainmentEdges= 2213 ms
RESULT heap-snapshot: _buildRetainers= 2083 ms
RESULT heap-snapshot: _buildDominatedNodes= 188 ms
RESULT heap-snapshot: _markDetachedDOMTreeNodes= 7 ms
RESULT heap-snapshot: _markQueriableHeapObjects= 1601 ms
RESULT heap-snapshot: _calculateFlags= 1608 ms
RESULT heap-snapshot: _calculateObjectToWindowDistance= 2230 ms
RESULT heap-snapshot: show-snapshot= 11790 ms
RESULT heap-snapshot: _buildAggregates= 4702 ms
RESULT heap-snapshot: switch-to-containment-view= 5040 ms
RESULT heap-snapshot: full-summary-snapshot-time= 30428 ms
RESULT heap-snapshot: clear-snapshot= 63 ms
RESULT heap-delta: detailed-heapshots-smoke-test= 442 kB


After the change:

RESULT heap-snapshot: take-snapshot= 4850 ms
RESULT heap-snapshot: transfer-snapshot= 9187 ms
RESULT heap-snapshot: _splitNodesAndContainmentEdges= 879 ms
RESULT heap-snapshot: _buildRetainers= 527 ms
RESULT heap-snapshot: _buildDominatedNodes= 199 ms
RESULT heap-snapshot: _markDetachedDOMTreeNodes= 4 ms
RESULT heap-snapshot: _markQueriableHeapObjects= 1835 ms
RESULT heap-snapshot: _calculateFlags= 1839 ms
RESULT heap-snapshot: _calculateObjectToWindowDistance= 1238 ms
RESULT heap-snapshot: show-snapshot= 8601 ms
RESULT heap-snapshot: _buildAggregates= 4972 ms
RESULT heap-snapshot: switch-to-containment-view= 5336 ms
RESULT heap-snapshot: full-summary-snapshot-time= 27975 ms
RESULT heap-snapshot: clear-snapshot= 68 ms
RESULT heap-delta: detailed-heapshots-smoke-test= 299 kB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591956</commentid>
    <comment_count>3</comment_count>
      <attachid>134744</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-03-30 01:48:16 -0700</bug_when>
    <thetext>Comment on attachment 134744
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592120</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-03-30 06:25:19 -0700</bug_when>
    <thetext>Committed r112660: &lt;http://trac.webkit.org/changeset/112660&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134744</attachid>
            <date>2012-03-30 01:39:35 -0700</date>
            <delta_ts>2012-03-30 01:53:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82703-20120330123933.patch</filename>
            <type>text/plain</type>
            <size>11625</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JmOTNjYmNiY2ZiY2Nj
MDA0YTFjMzQ1ZGUyMDdkMDE3NDE2ZWY3ZS4uYjY4NWEzNjIwMGY3NGU3NjVkNTU2Yzk1M2U1YTI0
YmM5YjY5N2YzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTMwICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByZWxvYWQgZmllbGQgdmFsdWVzIGludG8gbG9jYWwgdmFyaWFibGVzIGZvciBiZXR0ZXIg
aGVhcCBwcm9maWxlciBwZXJmb3JtYW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODI3MDMKKworICAgICAgICBSZWFkaW5nIGZyb20gb2JqZWN0IGZp
ZWxkcyB0YWtlcyBhIG5vdGljYWJsZSB0aW1lIHdoZW4gdGhlIG9ubHkgb3RoZXIgdGhpbmcgeW91
IGRvCisgICAgICAgIGlzIGp1c3QgbWFuaXB1bGF0aW5nIG9uIGJpZyhzZXZlcmFsIG1pbGxpb24g
ZWxlbWVudHMpIFVpbnQzMkFycmF5IGFycmF5IGNlbGxzLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25h
cHNob3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5f
Y3JlYXRlQ29udGFpbm1lbnRFZGdlc0FycmF5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlLl9idWlsZFJldGFpbmVycyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYmZzKToKKwogMjAxMi0wMy0yOSAgQWxleGFuZHJ1
IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBGaWx0ZXJzXSBU
cmlnZ2VyIGEgcmVwYWludCBvbiBlbGVtZW50cyB3aXRoIGNoYW5nZWQgZmlsdGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4
IGQ4ZTE2ZmVkYjczZWE2M2FmZTA4ZWYwODQ2NzZmYWNhZWNkYzBjYjAuLmU3YTEyMTM1Yjk3NDA5
MWNiNjg2NTc1ZWRiODdlNmRiN2Q2OWFkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC04NjEsMjQgKzg2MSwzNSBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICBfY3JlYXRlQ29udGFp
bm1lbnRFZGdlc0FycmF5OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBDb3B5IGVkZ2Vz
IHRvIHRoZWlyIG93biBhcnJheS4KLSAgICAgICAgdGhpcy5fY29udGFpbm1lbnRFZGdlcyA9IG5l
dyBVaW50MzJBcnJheSh0aGlzLl9lZGdlQ291bnQgKiB0aGlzLl9lZGdlRmllbGRzQ291bnQpOwor
ICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXMgPSBu
ZXcgVWludDMyQXJyYXkodGhpcy5fZWRnZUNvdW50ICogdGhpcy5fZWRnZUZpZWxkc0NvdW50KTsK
KworICAgICAgICAvLyBQZWxvYWQgZmllbGRzIGludG8gbG9jYWwgdmFyaWFibGVzIGZvciBiZXR0
ZXIgcGVyZm9ybWFuY2UuCisgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOworICAgICAg
ICB2YXIgb25seU5vZGVzID0gdGhpcy5fb25seU5vZGVzOworICAgICAgICB2YXIgZmlyc3RFZGdl
SW5kZXhPZmZzZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGVk
Z2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgdmFyIGVkZ2VU
b05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICB2YXIgZWRnZXND
b3VudE9mZnNldCA9IHRoaXMuX2VkZ2VzQ291bnRPZmZzZXQ7CisgICAgICAgIHZhciBub2RlVHlw
ZU9mZnNldCA9IHRoaXMuX25vZGVUeXBlT2Zmc2V0OworICAgICAgICB2YXIgZmlyc3RFZGdlT2Zm
c2V0ID0gdGhpcy5fZmlyc3RFZGdlT2Zmc2V0OworCiAgICAgICAgIHZhciBlZGdlQXJyYXlJbmRl
eCA9IDA7CiAgICAgICAgIHZhciBzcmNJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7Ci0gICAg
ICAgIHdoaWxlIChzcmNJbmRleCA8IHRoaXMuX25vZGVzLmxlbmd0aCkgewotICAgICAgICAgICAg
dmFyIHNyY05vZGVOZXdJbmRleCA9IHRoaXMuX25vZGVzW3NyY0luZGV4ICsgdGhpcy5fbm9kZVR5
cGVPZmZzZXRdOworICAgICAgICB3aGlsZSAoc3JjSW5kZXggPCBub2Rlcy5sZW5ndGgpIHsKKyAg
ICAgICAgICAgIHZhciBzcmNOb2RlTmV3SW5kZXggPSBub2Rlc1tzcmNJbmRleCArIG5vZGVUeXBl
T2Zmc2V0XTsKICAgICAgICAgICAgIC8vIFNldCBpbmRleCBvZiBmaXJzdCBvdXRnb2luZyBlZ2Rl
IGluIHRoZSBfY29udGFpbm1lbnRFZGdlcyBhcnJheS4KLSAgICAgICAgICAgIHRoaXMuX29ubHlO
b2Rlc1tzcmNOb2RlTmV3SW5kZXggKyB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldF0gPSBlZGdl
QXJyYXlJbmRleDsKKyAgICAgICAgICAgIG9ubHlOb2Rlc1tzcmNOb2RlTmV3SW5kZXggKyBmaXJz
dEVkZ2VJbmRleE9mZnNldF0gPSBlZGdlQXJyYXlJbmRleDsKIAogICAgICAgICAgICAgLy8gTm93
IGNvcHkgYWxsIGVkZ2UgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICB2YXIgZWRnZXNDb3VudCA9
IHRoaXMuX25vZGVzW3NyY0luZGV4ICsgdGhpcy5fZWRnZXNDb3VudE9mZnNldF07Ci0gICAgICAg
ICAgICBzcmNJbmRleCArPSB0aGlzLl9maXJzdEVkZ2VPZmZzZXQ7Ci0gICAgICAgICAgICB2YXIg
bmV4dE5vZGVJbmRleCA9IHNyY0luZGV4ICsgZWRnZXNDb3VudCAqIHRoaXMuX2VkZ2VGaWVsZHND
b3VudDsKKyAgICAgICAgICAgIHZhciBlZGdlc0NvdW50ID0gbm9kZXNbc3JjSW5kZXggKyBlZGdl
c0NvdW50T2Zmc2V0XTsKKyAgICAgICAgICAgIHNyY0luZGV4ICs9IGZpcnN0RWRnZU9mZnNldDsK
KyAgICAgICAgICAgIHZhciBuZXh0Tm9kZUluZGV4ID0gc3JjSW5kZXggKyBlZGdlc0NvdW50ICog
ZWRnZUZpZWxkc0NvdW50OwogICAgICAgICAgICAgd2hpbGUgKHNyY0luZGV4IDwgbmV4dE5vZGVJ
bmRleCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5tZW50RWRnZXNbZWRnZUFycmF5
SW5kZXhdID0gdGhpcy5fbm9kZXNbc3JjSW5kZXhdOworICAgICAgICAgICAgICAgIGNvbnRhaW5t
ZW50RWRnZXNbZWRnZUFycmF5SW5kZXhdID0gbm9kZXNbc3JjSW5kZXhdOwogICAgICAgICAgICAg
ICAgIC8vIFRyYW5zbGF0ZSBkZXN0aW5hdGlvbiBub2RlIGluZGV4ZXMgZm9yIHRoZSBjb3BpZWQg
ZWRnZXMuCi0gICAgICAgICAgICAgICAgaWYgKGVkZ2VBcnJheUluZGV4ICUgdGhpcy5fZWRnZUZp
ZWxkc0NvdW50ID09PSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhciB0b05vZGVJbmRleCA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXNbZWRnZUFycmF5SW5k
ZXhdOwotICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb250YWlubWVudEVkZ2VzW2VkZ2VBcnJh
eUluZGV4XSA9IHRoaXMuX25vZGVzW3RvTm9kZUluZGV4ICsgdGhpcy5fbm9kZVR5cGVPZmZzZXRd
OworICAgICAgICAgICAgICAgIGlmIChlZGdlQXJyYXlJbmRleCAlIGVkZ2VGaWVsZHNDb3VudCA9
PT0gZWRnZVRvTm9kZU9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgdG9Ob2RlSW5k
ZXggPSBjb250YWlubWVudEVkZ2VzW2VkZ2VBcnJheUluZGV4XTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGFpbm1lbnRFZGdlc1tlZGdlQXJyYXlJbmRleF0gPSBub2Rlc1t0b05vZGVJbmRleCAr
IG5vZGVUeXBlT2Zmc2V0XTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgKytl
ZGdlQXJyYXlJbmRleDsKICAgICAgICAgICAgICAgICArK3NyY0luZGV4OwpAQCAtODg4LDQyICs4
OTksNTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAKICAgICBf
YnVpbGRSZXRhaW5lcnM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JldGFpbmlu
Z05vZGVzID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuX2VkZ2VDb3VudCk7Ci0gICAgICAgIHRoaXMu
X3JldGFpbmluZ0VkZ2VzID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuX2VkZ2VDb3VudCk7CisgICAg
ICAgIHZhciByZXRhaW5pbmdOb2RlcyA9IHRoaXMuX3JldGFpbmluZ05vZGVzID0gbmV3IFVpbnQz
MkFycmF5KHRoaXMuX2VkZ2VDb3VudCk7CisgICAgICAgIHZhciByZXRhaW5pbmdFZGdlcyA9IHRo
aXMuX3JldGFpbmluZ0VkZ2VzID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuX2VkZ2VDb3VudCk7CiAg
ICAgICAgIC8vIEluZGV4IG9mIHRoZSBmaXJzdCByZXRhaW5lciBpbiB0aGUgX3JldGFpbmluZ05v
ZGVzIGFuZCBfcmV0YWluaW5nRWRnZXMKICAgICAgICAgLy8gYXJyYXlzLiBBZGRyZXNzZWQgYnkg
cmV0YWluZWQgbm9kZSBpbmRleC4KLSAgICAgICAgdGhpcy5fZmlyc3RSZXRhaW5lckluZGV4ID0g
bmV3IFVpbnQzMkFycmF5KHRoaXMubm9kZUNvdW50ICsgMSk7Ci0KLSAgICAgICAgZm9yICh2YXIg
dG9Ob2RlRmllbGRJbmRleCA9IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQ7IHRvTm9kZUZpZWxkSW5k
ZXggPCB0aGlzLl9jb250YWlubWVudEVkZ2VzLmxlbmd0aDsgdG9Ob2RlRmllbGRJbmRleCArPSB0
aGlzLl9lZGdlRmllbGRzQ291bnQpIHsKLSAgICAgICAgICAgIHZhciB0b05vZGVJbmRleCA9IHRo
aXMuX2NvbnRhaW5tZW50RWRnZXNbdG9Ob2RlRmllbGRJbmRleF07Ci0gICAgICAgICAgICBpZiAo
dG9Ob2RlSW5kZXggJSB0aGlzLl9ub2RlRmllbGRDb3VudCkKKyAgICAgICAgdmFyIGZpcnN0UmV0
YWluZXJJbmRleCA9IHRoaXMuX2ZpcnN0UmV0YWluZXJJbmRleCA9IG5ldyBVaW50MzJBcnJheSh0
aGlzLm5vZGVDb3VudCArIDEpOworCisgICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzID0gdGhp
cy5fY29udGFpbm1lbnRFZGdlczsKKyAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMu
X2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9k
ZUZpZWxkQ291bnQ7CisgICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhpcy5fZWRnZVRv
Tm9kZU9mZnNldDsKKyAgICAgICAgdmFyIG9ubHlOb2RlcyA9IHRoaXMuX29ubHlOb2RlczsKKyAg
ICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZz
ZXQ7CisKKyAgICAgICAgZm9yICh2YXIgdG9Ob2RlRmllbGRJbmRleCA9IGVkZ2VUb05vZGVPZmZz
ZXQsIGwgPSBjb250YWlubWVudEVkZ2VzLmxlbmd0aDsgdG9Ob2RlRmllbGRJbmRleCA8IGw7IHRv
Tm9kZUZpZWxkSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICB2YXIgdG9O
b2RlSW5kZXggPSBjb250YWlubWVudEVkZ2VzW3RvTm9kZUZpZWxkSW5kZXhdOworICAgICAgICAg
ICAgaWYgKHRvTm9kZUluZGV4ICUgbm9kZUZpZWxkQ291bnQpCiAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJJbnZhbGlkIHRvTm9kZUluZGV4ICIgKyB0b05vZGVJbmRleCk7Ci0gICAg
ICAgICAgICArK3RoaXMuX2ZpcnN0UmV0YWluZXJJbmRleFt0b05vZGVJbmRleCAvIHRoaXMuX25v
ZGVGaWVsZENvdW50XTsKKyAgICAgICAgICAgICsrZmlyc3RSZXRhaW5lckluZGV4W3RvTm9kZUlu
ZGV4IC8gbm9kZUZpZWxkQ291bnRdOwogICAgICAgICB9Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
LCBmaXJzdFVudXNlZFJldGFpbmVyU2xvdCA9IDA7IGkgPCB0aGlzLm5vZGVDb3VudDsgaSsrKSB7
Ci0gICAgICAgICAgICB2YXIgcmV0YWluZXJzQ291bnQgPSB0aGlzLl9maXJzdFJldGFpbmVySW5k
ZXhbaV07Ci0gICAgICAgICAgICB0aGlzLl9maXJzdFJldGFpbmVySW5kZXhbaV0gPSBmaXJzdFVu
dXNlZFJldGFpbmVyU2xvdDsKLSAgICAgICAgICAgIHRoaXMuX3JldGFpbmluZ05vZGVzW2ZpcnN0
VW51c2VkUmV0YWluZXJTbG90XSA9IHJldGFpbmVyc0NvdW50OworICAgICAgICBmb3IgKHZhciBp
ID0gMCwgZmlyc3RVbnVzZWRSZXRhaW5lclNsb3QgPSAwLCBsID0gdGhpcy5ub2RlQ291bnQ7IGkg
PCBsOyBpKyspIHsKKyAgICAgICAgICAgIHZhciByZXRhaW5lcnNDb3VudCA9IGZpcnN0UmV0YWlu
ZXJJbmRleFtpXTsKKyAgICAgICAgICAgIGZpcnN0UmV0YWluZXJJbmRleFtpXSA9IGZpcnN0VW51
c2VkUmV0YWluZXJTbG90OworICAgICAgICAgICAgcmV0YWluaW5nTm9kZXNbZmlyc3RVbnVzZWRS
ZXRhaW5lclNsb3RdID0gcmV0YWluZXJzQ291bnQ7CiAgICAgICAgICAgICBmaXJzdFVudXNlZFJl
dGFpbmVyU2xvdCArPSByZXRhaW5lcnNDb3VudDsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9m
aXJzdFJldGFpbmVySW5kZXhbdGhpcy5ub2RlQ291bnRdID0gdGhpcy5fcmV0YWluaW5nTm9kZXMu
bGVuZ3RoOworICAgICAgICBmaXJzdFJldGFpbmVySW5kZXhbdGhpcy5ub2RlQ291bnRdID0gcmV0
YWluaW5nTm9kZXMubGVuZ3RoOwogCiAgICAgICAgIHZhciBzcmNOb2RlSW5kZXggPSAwOwotICAg
ICAgICB2YXIgbmV4dE5vZGVGaXJzdEVkZ2VJbmRleCA9IHRoaXMuX29ubHlOb2Rlc1t0aGlzLl9m
aXJzdEVkZ2VJbmRleE9mZnNldF07Ci0gICAgICAgIHdoaWxlIChzcmNOb2RlSW5kZXggPCB0aGlz
Ll9vbmx5Tm9kZXMubGVuZ3RoKSB7CisgICAgICAgIHZhciBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4
ID0gb25seU5vZGVzW2ZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgdmFyIG9ubHlOb2Rl
c0xlbmd0aCA9IG9ubHlOb2Rlcy5sZW5ndGg7CisgICAgICAgIHdoaWxlIChzcmNOb2RlSW5kZXgg
PCBvbmx5Tm9kZXNMZW5ndGgpIHsKICAgICAgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleCA9IG5l
eHROb2RlRmlyc3RFZGdlSW5kZXg7Ci0gICAgICAgICAgICB2YXIgbmV4dE5vZGVJbmRleCA9IHNy
Y05vZGVJbmRleCArIHRoaXMuX25vZGVGaWVsZENvdW50OwotICAgICAgICAgICAgdmFyIG5leHRO
b2RlRmlyc3RFZGdlSW5kZXggPSBuZXh0Tm9kZUluZGV4IDwgdGhpcy5fb25seU5vZGVzLmxlbmd0
aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9vbmx5Tm9k
ZXNbbmV4dE5vZGVJbmRleCArIHRoaXMuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0XQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9jb250YWlubWVudEVkZ2VzLmxl
bmd0aDsKLSAgICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4OyBl
ZGdlSW5kZXggPCBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4OyBlZGdlSW5kZXggKz0gdGhpcy5fZWRn
ZUZpZWxkc0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRvTm9kZUluZGV4ID0gdGhpcy5f
Y29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0XTsKLSAg
ICAgICAgICAgICAgICBpZiAodG9Ob2RlSW5kZXggJSB0aGlzLl9ub2RlRmllbGRDb3VudCkKKyAg
ICAgICAgICAgIHZhciBuZXh0Tm9kZUluZGV4ID0gc3JjTm9kZUluZGV4ICsgbm9kZUZpZWxkQ291
bnQ7CisgICAgICAgICAgICB2YXIgbmV4dE5vZGVGaXJzdEVkZ2VJbmRleCA9IG5leHROb2RlSW5k
ZXggPCBvbmx5Tm9kZXNMZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID8gb25seU5vZGVzW25leHROb2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGFpbm1lbnRFZGdlcy5s
ZW5ndGg7CisgICAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSBmaXJzdEVkZ2VJbmRleDsg
ZWRnZUluZGV4IDwgbmV4dE5vZGVGaXJzdEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9IGVkZ2VGaWVs
ZHNDb3VudCkgeworICAgICAgICAgICAgICAgIHZhciB0b05vZGVJbmRleCA9IGNvbnRhaW5tZW50
RWRnZXNbZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF07CisgICAgICAgICAgICAgICAgaWYg
KHRvTm9kZUluZGV4ICUgbm9kZUZpZWxkQ291bnQpCiAgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiSW52YWxpZCB0b05vZGVJbmRleCAiICsgdG9Ob2RlSW5kZXgpOwotICAgICAg
ICAgICAgICAgIHZhciBmaXJzdFJldGFpbmVyU2xvdEluZGV4ID0gdGhpcy5fZmlyc3RSZXRhaW5l
ckluZGV4W3RvTm9kZUluZGV4IC8gdGhpcy5fbm9kZUZpZWxkQ291bnRdOwotICAgICAgICAgICAg
ICAgIHZhciBuZXh0VW51c2VkUmV0YWluZXJTbG90SW5kZXggPSBmaXJzdFJldGFpbmVyU2xvdElu
ZGV4ICsgKC0tdGhpcy5fcmV0YWluaW5nTm9kZXNbZmlyc3RSZXRhaW5lclNsb3RJbmRleF0pOwot
ICAgICAgICAgICAgICAgIHRoaXMuX3JldGFpbmluZ05vZGVzW25leHRVbnVzZWRSZXRhaW5lclNs
b3RJbmRleF0gPSBzcmNOb2RlSW5kZXg7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmV0YWluaW5n
RWRnZXNbbmV4dFVudXNlZFJldGFpbmVyU2xvdEluZGV4XSA9IGVkZ2VJbmRleDsKKyAgICAgICAg
ICAgICAgICB2YXIgZmlyc3RSZXRhaW5lclNsb3RJbmRleCA9IGZpcnN0UmV0YWluZXJJbmRleFt0
b05vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XTsKKyAgICAgICAgICAgICAgICB2YXIgbmV4dFVu
dXNlZFJldGFpbmVyU2xvdEluZGV4ID0gZmlyc3RSZXRhaW5lclNsb3RJbmRleCArICgtLXJldGFp
bmluZ05vZGVzW2ZpcnN0UmV0YWluZXJTbG90SW5kZXhdKTsKKyAgICAgICAgICAgICAgICByZXRh
aW5pbmdOb2Rlc1tuZXh0VW51c2VkUmV0YWluZXJTbG90SW5kZXhdID0gc3JjTm9kZUluZGV4Owor
ICAgICAgICAgICAgICAgIHJldGFpbmluZ0VkZ2VzW25leHRVbnVzZWRSZXRhaW5lclNsb3RJbmRl
eF0gPSBlZGdlSW5kZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzcmNOb2RlSW5kZXgg
PSBuZXh0Tm9kZUluZGV4OwogICAgICAgICB9CkBAIC0xMDYwLDI2ICsxMDc5LDM1IEBAIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogCiAgICAgX2JmczogZnVuY3Rpb24o
bGlzdCkKICAgICB7CisgICAgICAgIC8vIFBlbG9hZCBmaWVsZHMgaW50byBsb2NhbCB2YXJpYWJs
ZXMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KKyAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9
IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0
aGlzLl9jb250YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlz
Ll9ub2RlRmllbGRDb3VudDsKKyAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhp
cy5fZmlyc3RFZGdlSW5kZXhPZmZzZXQ7CisgICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0g
dGhpcy5fZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgdmFyIGRpc3RhbmNlc1RvV2luZG93ID0g
dGhpcy5fZGlzdGFuY2VzVG9XaW5kb3c7CisgICAgICAgIHZhciBvbmx5Tm9kZXMgPSB0aGlzLl9v
bmx5Tm9kZXM7CisKICAgICAgICAgdmFyIGluZGV4ID0gMDsKLSAgICAgICAgdmFyIG5vZGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcyk7CiAgICAgICAgIHdoaWxlIChp
bmRleCA8IGxpc3QubGVuZ3RoKSB7CiAgICAgICAgICAgICB2YXIgbm9kZUluZGV4ID0gbGlzdFtp
bmRleCsrXTsgLy8gc2hpZnQgZ2VuZXJhdGVzIHRvbyBtdWNoIGdhcmJhZ2UuCiAgICAgICAgICAg
ICBpZiAoaW5kZXggPiAxMDAwMDApIHsKICAgICAgICAgICAgICAgICBsaXN0ID0gbGlzdC5zbGlj
ZShpbmRleCk7CiAgICAgICAgICAgICAgICAgaW5kZXggPSAwOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmFyIGRpc3RhbmNlID0gdGhpcy5fZGlzdGFuY2VzVG9XaW5kb3dbbm9kZUluZGV4
XSArIDE7Ci0gICAgICAgICAgICBub2RlLm5vZGVJbmRleCA9IG5vZGVJbmRleDsKLSAgICAgICAg
ICAgIHZhciBlZGdlc0NvdW50ID0gbm9kZS5lZGdlc0NvdW50OwotICAgICAgICAgICAgdmFyIGVk
Z2VUb05vZGVJbmRleCA9IG5vZGUuX2VkZ2VJbmRleGVzU3RhcnQoKSArIHRoaXMuX2VkZ2VUb05v
ZGVPZmZzZXQ7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzQ291bnQ7ICsr
aSkgewotICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRleCA9IHRoaXMuX2NvbnRhaW5t
ZW50RWRnZXNbZWRnZVRvTm9kZUluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2Rl
SW5kZXggJSB0aGlzLl9ub2RlRmllbGRDb3VudCkKKyAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9
IGRpc3RhbmNlc1RvV2luZG93W25vZGVJbmRleF0gKyAxOworCisgICAgICAgICAgICB2YXIgZmly
c3RFZGdlSW5kZXggPSBvbmx5Tm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRd
OworICAgICAgICAgICAgdmFyIGVkZ2VzRW5kID0gbm9kZUluZGV4IDwgb25seU5vZGVzLmxlbmd0
aAorICAgICAgICAgICAgICAgICAgICAgICAgID8gb25seU5vZGVzW25vZGVJbmRleCArIG5vZGVG
aWVsZENvdW50ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBjb250YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAgICAgICAgIGZvciAodmFyIGVkZ2VU
b05vZGVJbmRleCA9IGZpcnN0RWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldDsgZWRnZVRvTm9k
ZUluZGV4IDwgZWRnZXNFbmQ7IGVkZ2VUb05vZGVJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsK
KyAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlSW5kZXggPSBjb250YWlubWVudEVkZ2VzW2Vk
Z2VUb05vZGVJbmRleF07CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZUluZGV4ICUgbm9k
ZUZpZWxkQ291bnQpCiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxp
ZCBjaGlsZE5vZGVJbmRleDogIiArIGNoaWxkTm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBl
ZGdlVG9Ob2RlSW5kZXggKz0gdGhpcy5fZWRnZUZpZWxkc0NvdW50OwotICAgICAgICAgICAgICAg
IGlmIChjaGlsZE5vZGVJbmRleCBpbiB0aGlzLl9kaXN0YW5jZXNUb1dpbmRvdykKKyAgICAgICAg
ICAgICAgICBpZiAoY2hpbGROb2RlSW5kZXggaW4gZGlzdGFuY2VzVG9XaW5kb3cpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3RhbmNlc1Rv
V2luZG93W2NoaWxkTm9kZUluZGV4XSA9IGRpc3RhbmNlOworICAgICAgICAgICAgICAgIGRpc3Rh
bmNlc1RvV2luZG93W2NoaWxkTm9kZUluZGV4XSA9IGRpc3RhbmNlOwogICAgICAgICAgICAgICAg
IGxpc3QucHVzaChjaGlsZE5vZGVJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="139070"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>