<?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>114937</bug_id>
          
          <creation_ts>2013-04-22 00:09:34 -0700</creation_ts>
          <short_desc>Avoid walking up the tree in RenderBoxModelObject::setSelectionState</short_desc>
          <delta_ts>2013-04-22 02:15:06 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>113478</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>enrica</cc>
    
    <cc>hyatt</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>878992</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-22 00:09:34 -0700</bug_when>
    <thetext>Right now, RenderBoxModelObject::setSelectionState walks up the tree in order to set the selection states on its ancestors.

However, this is a very redundant operation since many render objects upon which setSelectionState is called share the same containing blocks.

Furthermore, there is no need to walk through the tree to look for newly selected objects the second time after updating selection states.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879033</commentid>
    <comment_count>1</comment_count>
      <attachid>199007</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-22 02:14:42 -0700</bug_when>
    <thetext>Created attachment 199007
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879034</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-22 02:15:06 -0700</bug_when>
    <thetext>This turned out to be a bad change. It causes a performance regression instead of progression :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199007</attachid>
            <date>2013-04-22 02:14:42 -0700</date>
            <delta_ts>2013-04-22 02:14:42 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>tmp6</filename>
            <type>text/plain</type>
            <size>13629</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODg2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTA0LTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEF2b2lkIHdhbGtpbmcgdXAgdGhl
IHRyZWUgaW4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNldFNlbGVjdGlvblN0YXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ5MzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIHRoZSB0cmF2
ZXJzYWwgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2tzIGluIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpz
ZXRTZWxlY3Rpb25TdGF0ZSBhbmQgbW92ZWQgaXQKKyAgICAgICAgdG8gUmVuZGVyVmlldzo6c2V0
U2VsZWN0aW9uLiBUaGlzIGVsaW1pbmF0ZXMgdGhlIG5lZWQgdG8gY29tcHV0ZSB0aGUgY29udGFp
bmluZyBibG9jayBmb3IgbWFueSByZW5kZXIgb2JqZWN0cworICAgICAgICB0aGF0IHNoYXJlIHRo
ZSBzYW1lIHBhcmVudC4KKworICAgICAgICBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24gbm93IGNv
bGxlY3RzIGNvbnRhaW5pbmcgYmxvY2tzIG9mIGVhY2ggcHJldmlvdXNseSBzZWxlY3RlZCByZW5k
ZXIgb2JqZWN0IGFuZCBuZXdseQorICAgICAgICBzZWxlY3RlZCBvYmplY3RzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpz
ZXRTZWxlY3Rpb25TdGF0ZSk6IFJlbW92ZWQgdGhlIGNvZGUuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmVuZGVyU2VsZWN0
aW9uSW5mb0ZvckNvbnRhaW5pbmdCbG9ja3MpOiBFeHRyYWN0ZWQgZnJvbSBSZW5kZXJWaWV3Ojpz
ZXRTZWxlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0Q29udGFpbmluZ0Jsb2Nrc0Fu
ZE9wdGlvbmFsbHlTZXRTZWxlY3Rpb25TdGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKTogU2VlIGFib3ZlLgorCiAyMDEzLTA0LTIyICBBbGJl
cnRvIEdhcmNpYSAgPGFnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggbXVsdGlwbGUg
ZGVmaW5pdGlvbiBvZiBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXllcigpIGluIHRoZSBCbGFja0Jl
cnJ5IHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJl
dmlzaW9uIDE0ODc2NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjg2LDYgKzY4NiwzMCBAQAogfQogI2VuZGlmCiAKK3R5cGVk
ZWYgSGFzaE1hcDxSZW5kZXJCbG9jayosIE93blB0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+
ID4gU2VsZWN0ZWRCbG9ja01hcDsKKworc3RhdGljIHZvaWQgY29sbGVjdFJlbmRlclNlbGVjdGlv
bkluZm9Gb3JDb250YWluaW5nQmxvY2tzKFNlbGVjdGVkQmxvY2tNYXAmIG1hcCwgUmVuZGVyT2Jq
ZWN0KiBzZWxlY3RlZE9iamVjdCkKK3sKKyAgICBmb3IgKFJlbmRlckJsb2NrKiBibG9jayA9IHNl
bGVjdGVkT2JqZWN0LT5jb250YWluaW5nQmxvY2soKTsgYmxvY2sgJiYgIWJsb2NrLT5pc1JlbmRl
clZpZXcoKTsgYmxvY2sgPSBibG9jay0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgT3du
UHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG1hcC5hZGQoYmxvY2ss
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGJsb2NrSW5mbykKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBibG9ja0luZm8gPSBhZG9wdFB0cihuZXcgUmVuZGVyQmxv
Y2tTZWxlY3Rpb25JbmZvKGJsb2NrKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBjb2xsZWN0
Q29udGFpbmluZ0Jsb2Nrc0FuZE9wdGlvbmFsbHlTZXRTZWxlY3Rpb25TdGF0ZShIYXNoU2V0PFJl
bmRlckJsb2NrKj4mIHNldCwgUmVuZGVyT2JqZWN0KiBzZWxlY3RlZE9iamVjdCwKKyAgICBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIG5ld1NlbGVjdGlvblN0YXRlID0gUmVuZGVyT2JqZWN0
OjpTZWxlY3Rpb25Ob25lLCBib29sIHNldFNlbGVjdGlvblN0YXRlVG9BbGxBbmNlc3RvcnMgPSBm
YWxzZSkKK3sKKyAgICBmb3IgKFJlbmRlckJsb2NrKiBibG9jayA9IHNlbGVjdGVkT2JqZWN0LT5j
b250YWluaW5nQmxvY2soKTsgYmxvY2sgJiYgIWJsb2NrLT5pc1JlbmRlclZpZXcoKTsgYmxvY2sg
PSBibG9jay0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgaWYgKG5ld1NlbGVjdGlvblN0
YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkKKyAgICAgICAgICAgIGJsb2NrLT5z
ZXRTZWxlY3Rpb25TdGF0ZShuZXdTZWxlY3Rpb25TdGF0ZSk7CisKKyAgICAgICAgaWYgKCFzZXQu
YWRkKGJsb2NrKS5pc05ld0VudHJ5ICYmICFzZXRTZWxlY3Rpb25TdGF0ZVRvQWxsQW5jZXN0b3Jz
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB2b2lkIFJlbmRlclZpZXc6OnNldFNl
bGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCog
ZW5kLCBpbnQgZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQog
ewogICAgIC8vIE1ha2Ugc3VyZSBib3RoIG91ciBzdGFydCBhbmQgZW5kIG9iamVjdHMgYXJlIGRl
ZmluZWQuCkBAIC03MDksMzEgKzczMywyOSBAQAogICAgIC8vIE9iamVjdHMgZWFjaCBoYXZlIGEg
c2luZ2xlIHNlbGVjdGlvbiByZWN0IHRvIGV4YW1pbmUuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJl
bmRlck9iamVjdCosIE93blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiA+IFNlbGVjdGVkT2JqZWN0
TWFwOwogICAgIFNlbGVjdGVkT2JqZWN0TWFwIG9sZFNlbGVjdGVkT2JqZWN0czsKLSAgICBTZWxl
Y3RlZE9iamVjdE1hcCBuZXdTZWxlY3RlZE9iamVjdHM7CisgICAgSGFzaFNldDxSZW5kZXJPYmpl
Y3QqPiBuZXdTZWxlY3RlZE9iamVjdHM7CiAKICAgICAvLyBCbG9ja3MgY29udGFpbiBzZWxlY3Rl
ZCBvYmplY3RzIGFuZCBmaWxsIGdhcHMgYmV0d2VlbiB0aGVtLCBlaXRoZXIgb24gdGhlIGxlZnQs
IHJpZ2h0LCBvciBpbiBiZXR3ZWVuIGxpbmVzIGFuZCBibG9ja3MuCiAgICAgLy8gSW4gb3JkZXIg
dG8gZ2V0IHRoZSByZXBhaW50IHJlY3QgcmlnaHQsIHdlIGhhdmUgdG8gZXhhbWluZSBsZWZ0LCBt
aWRkbGUsIGFuZCByaWdodCByZWN0cyBpbmRpdmlkdWFsbHksIHNpbmNlIG90aGVyd2lzZQogICAg
IC8vIHRoZSB1bmlvbiBvZiB0aG9zZSByZWN0cyBtaWdodCByZW1haW4gdGhlIHNhbWUgZXZlbiB3
aGVuIGNoYW5nZXMgaGF2ZSBvY2N1cnJlZC4KLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyQmxv
Y2sqLCBPd25QdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiA+IFNlbGVjdGVkQmxvY2tNYXA7
CiAgICAgU2VsZWN0ZWRCbG9ja01hcCBvbGRTZWxlY3RlZEJsb2NrczsKLSAgICBTZWxlY3RlZEJs
b2NrTWFwIG5ld1NlbGVjdGVkQmxvY2tzOworICAgIEhhc2hTZXQ8UmVuZGVyQmxvY2sqPiBhZGRp
dGlvbmFsQmxvY2tzVG9TZXRTZWxlY3Rpb25Ob25lOworICAgIEhhc2hTZXQ8UmVuZGVyQmxvY2sq
PiBuZXdTZWxlY3RlZEJsb2NrczsKIAogICAgIFJlbmRlck9iamVjdCogb3MgPSBtX3NlbGVjdGlv
blN0YXJ0OwogICAgIFJlbmRlck9iamVjdCogc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbiht
X3NlbGVjdGlvbkVuZCwgbV9zZWxlY3Rpb25FbmRQb3MpOworICAgIFJlbmRlck9iamVjdCogbGFz
dFBhcmVudCA9IDA7CiAgICAgd2hpbGUgKG9zICYmIG9zICE9IHN0b3ApIHsKICAgICAgICAgaWYg
KChvcy0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgb3MgPT0gbV9zZWxlY3Rpb25TdGFydCB8fCBv
cyA9PSBtX3NlbGVjdGlvbkVuZCkgJiYgb3MtPnNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9u
Tm9uZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRp
bmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3
ZWxsLgogICAgICAgICAgICAgb2xkU2VsZWN0ZWRPYmplY3RzLnNldChvcywgYWRvcHRQdHIobmV3
IFJlbmRlclNlbGVjdGlvbkluZm8ob3MsIHRydWUpKSk7Ci0gICAgICAgICAgICBpZiAoYmxvY2tS
ZXBhaW50TW9kZSA9PSBSZXBhaW50TmV3WE9ST2xkKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVy
QmxvY2sqIGNiID0gb3MtPmNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICAgICAgICAgIHdoaWxl
IChjYiAmJiAhY2ItPmlzUmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE93blB0
cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBvbGRTZWxlY3RlZEJsb2Nr
cy5hZGQoY2IsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGJsb2NrSW5mbykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBibG9ja0luZm8gPSBhZG9wdFB0cihuZXcgUmVuZGVyQmxvY2tTZWxlY3Rpb25J
bmZvKGNiKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNiID0gY2ItPmNvbnRhaW5pbmdCbG9jaygp
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsYXN0UGFyZW50ICE9IG9zLT5w
YXJlbnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChibG9ja1JlcGFpbnRNb2RlID09IFJlcGFp
bnROZXdYT1JPbGQpCisgICAgICAgICAgICAgICAgICAgIGNvbGxlY3RSZW5kZXJTZWxlY3Rpb25J
bmZvRm9yQ29udGFpbmluZ0Jsb2NrcyhvbGRTZWxlY3RlZEJsb2Nrcywgb3MpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdENvbnRhaW5pbmdCbG9ja3NB
bmRPcHRpb25hbGx5U2V0U2VsZWN0aW9uU3RhdGUoYWRkaXRpb25hbEJsb2Nrc1RvU2V0U2VsZWN0
aW9uTm9uZSwgb3MpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbGFzdFBhcmVudCA9IG9z
LT5wYXJlbnQoKTsKICAgICAgICAgfQogCiAgICAgICAgIG9zID0gb3MtPm5leHRJblByZU9yZGVy
KCk7CkBAIC03NDQsNiArNzY2LDE3IEBACiAgICAgZm9yIChTZWxlY3RlZE9iamVjdE1hcDo6aXRl
cmF0b3IgaSA9IG9sZFNlbGVjdGVkT2JqZWN0cy5iZWdpbigpOyBpICE9IG9sZE9iamVjdHNFbmQ7
ICsraSkKICAgICAgICAgaS0+a2V5LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlv
bk5vbmUpOwogCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB3aGV0aGVyIGl0IGlz
IE9LIHByb3BhZ2F0aW5nIHRvIGFuY2VzdG9yIFJlbmRlcklubGluZXMuCisgICAgLy8gVGhpcyBp
cyBhIHdvcmthcm91bmQgZm9yIGh0dHA6Ly93ZWJraXQub3JnL2IvMzIxMjMKKyAgICAvLyBUaGUg
Y29udGFpbmluZyBibG9jayBjYW4gYmUgbnVsbCBpbiBjYXNlIG9mIGFuIG9ycGhhbmVkIHRyZWUu
CisgICAgU2VsZWN0ZWRCbG9ja01hcDo6aXRlcmF0b3Igb2xkQmxvY2tzRW5kID0gb2xkU2VsZWN0
ZWRCbG9ja3MuZW5kKCk7CisgICAgZm9yIChTZWxlY3RlZEJsb2NrTWFwOjppdGVyYXRvciBpID0g
b2xkU2VsZWN0ZWRCbG9ja3MuYmVnaW4oKTsgaSAhPSBvbGRCbG9ja3NFbmQ7ICsraSkKKyAgICAg
ICAgaS0+a2V5LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbk5vbmUpOworCisg
ICAgSGFzaFNldDxSZW5kZXJCbG9jayo+OjppdGVyYXRvciBhZGRpdGlvbmFsT2xkQmxvY2tzRW5k
ID0gYWRkaXRpb25hbEJsb2Nrc1RvU2V0U2VsZWN0aW9uTm9uZS5lbmQoKTsKKyAgICBmb3IgKEhh
c2hTZXQ8UmVuZGVyQmxvY2sqPjo6aXRlcmF0b3IgaSA9IGFkZGl0aW9uYWxCbG9ja3NUb1NldFNl
bGVjdGlvbk5vbmUuYmVnaW4oKTsgaSAhPSBhZGRpdGlvbmFsT2xkQmxvY2tzRW5kOyArK2kpCisg
ICAgICAgICgqaSktPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uTm9uZSk7CisK
ICAgICAvLyBzZXQgc2VsZWN0aW9uIHN0YXJ0IGFuZCBlbmQKICAgICBtX3NlbGVjdGlvblN0YXJ0
ID0gc3RhcnQ7CiAgICAgbV9zZWxlY3Rpb25TdGFydFBvcyA9IHN0YXJ0UG9zOwpAQCAtNzUxLDQ2
ICs3ODQsNDMgQEAKICAgICBtX3NlbGVjdGlvbkVuZFBvcyA9IGVuZFBvczsKIAogICAgIC8vIFVw
ZGF0ZSB0aGUgc2VsZWN0aW9uIHN0YXR1cyBvZiBhbGwgb2JqZWN0cyBiZXR3ZWVuIG1fc2VsZWN0
aW9uU3RhcnQgYW5kIG1fc2VsZWN0aW9uRW5kCi0gICAgaWYgKHN0YXJ0ICYmIHN0YXJ0ID09IGVu
ZCkKKyAgICBpZiAoc3RhcnQgJiYgc3RhcnQgPT0gZW5kKSB7CiAgICAgICAgIHN0YXJ0LT5zZXRT
ZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbkJvdGgpOwotICAgIGVsc2UgewotICAgICAg
ICBpZiAoc3RhcnQpCisgICAgICAgIG5ld1NlbGVjdGVkT2JqZWN0cy5hZGQoc3RhcnQpOworICAg
ICAgICBjb2xsZWN0Q29udGFpbmluZ0Jsb2Nrc0FuZE9wdGlvbmFsbHlTZXRTZWxlY3Rpb25TdGF0
ZShuZXdTZWxlY3RlZEJsb2Nrcywgc3RhcnQsIFNlbGVjdGlvbkJvdGgpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChzdGFydCkgewogICAgICAgICAgICAgc3RhcnQtPnNldFNlbGVjdGlvblN0
YXRlSWZOZWVkZWQoU2VsZWN0aW9uU3RhcnQpOwotICAgICAgICBpZiAoZW5kKQorICAgICAgICAg
ICAgbmV3U2VsZWN0ZWRPYmplY3RzLmFkZChzdGFydCk7CisgICAgICAgICAgICBjb2xsZWN0Q29u
dGFpbmluZ0Jsb2Nrc0FuZE9wdGlvbmFsbHlTZXRTZWxlY3Rpb25TdGF0ZShuZXdTZWxlY3RlZEJs
b2Nrcywgc3RhcnQsIFNlbGVjdGlvblN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZW5k
KSB7CiAgICAgICAgICAgICBlbmQtPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9u
RW5kKTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGVkT2JqZWN0cy5hZGQoZW5kKTsKKyAgICAgICAg
ICAgIC8vIHNldFNlbGVjdGlvblN0YXRlIG9uIGNvbW1vbiBhbmNlc3RvcnMgb2Ygc3RhcnQgYW5k
IGVuZCBuZWVkIHRvIGNoYW5nZSB0aGUgc3RhdGUgZnJvbSBTZWxlY3Rpb25TdGFydCB0byBTZWxl
Y3Rpb25Cb3RoLgorICAgICAgICAgICAgYm9vbCBzZXRTZWxlY3Rpb25TdGF0ZVRvQWxsQW5jZXN0
b3JzID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbGxlY3RDb250YWluaW5nQmxvY2tzQW5kT3B0aW9u
YWxseVNldFNlbGVjdGlvblN0YXRlKG5ld1NlbGVjdGVkQmxvY2tzLCBlbmQsIFNlbGVjdGlvbkVu
ZCwgc2V0U2VsZWN0aW9uU3RhdGVUb0FsbEFuY2VzdG9ycyk7CisgICAgICAgIH0KKwogICAgIH0K
IAogICAgIFJlbmRlck9iamVjdCogbyA9IHN0YXJ0OwogICAgIHN0b3AgPSByZW5kZXJlckFmdGVy
UG9zaXRpb24oZW5kLCBlbmRQb3MpOwotCisgICAgbGFzdFBhcmVudCA9IDA7CiAgICAgd2hpbGUg
KG8gJiYgbyAhPSBzdG9wKSB7Ci0gICAgICAgIGlmIChvICE9IHN0YXJ0ICYmIG8gIT0gZW5kICYm
IG8tPmNhbkJlU2VsZWN0aW9uTGVhZigpKQorICAgICAgICBpZiAobyAhPSBzdGFydCAmJiBvICE9
IGVuZCAmJiBvLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSkgewogICAgICAgICAgICAgby0+c2V0U2Vs
ZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25JbnNpZGUpOworICAgICAgICAgICAgbmV3U2Vs
ZWN0ZWRPYmplY3RzLmFkZChvKTsKKyAgICAgICAgICAgIGlmIChsYXN0UGFyZW50ICE9IG8tPnBh
cmVudCgpKQorICAgICAgICAgICAgICAgIGNvbGxlY3RDb250YWluaW5nQmxvY2tzQW5kT3B0aW9u
YWxseVNldFNlbGVjdGlvblN0YXRlKG5ld1NlbGVjdGVkQmxvY2tzLCBvLCBTZWxlY3Rpb25JbnNp
ZGUpOworICAgICAgICAgICAgbGFzdFBhcmVudCA9IG8tPnBhcmVudCgpOworICAgICAgICB9CiAg
ICAgICAgIG8gPSBvLT5uZXh0SW5QcmVPcmRlcigpOwogICAgIH0KIAogICAgIGlmIChibG9ja1Jl
cGFpbnRNb2RlICE9IFJlcGFpbnROb3RoaW5nKQogICAgICAgICBsYXllcigpLT5jbGVhckJsb2Nr
U2VsZWN0aW9uR2Fwc0JvdW5kcygpOwogCi0gICAgLy8gTm93IHRoYXQgdGhlIHNlbGVjdGlvbiBz
dGF0ZSBoYXMgYmVlbiB1cGRhdGVkIGZvciB0aGUgbmV3IG9iamVjdHMsIHdhbGsgdGhlbSBhZ2Fp
biBhbmQKLSAgICAvLyBwdXQgdGhlbSBpbiB0aGUgbmV3IG9iamVjdHMgbGlzdC4KLSAgICBvID0g
c3RhcnQ7Ci0gICAgd2hpbGUgKG8gJiYgbyAhPSBzdG9wKSB7Ci0gICAgICAgIGlmICgoby0+Y2Fu
QmVTZWxlY3Rpb25MZWFmKCkgfHwgbyA9PSBzdGFydCB8fCBvID09IGVuZCkgJiYgby0+c2VsZWN0
aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7Ci0gICAgICAgICAgICBuZXdTZWxlY3RlZE9i
amVjdHMuc2V0KG8sIGFkb3B0UHRyKG5ldyBSZW5kZXJTZWxlY3Rpb25JbmZvKG8sIHRydWUpKSk7
Ci0gICAgICAgICAgICBSZW5kZXJCbG9jayogY2IgPSBvLT5jb250YWluaW5nQmxvY2soKTsKLSAg
ICAgICAgICAgIHdoaWxlIChjYiAmJiAhY2ItPmlzUmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAg
ICAgICAgT3duUHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1Nl
bGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAg
ICAgICAgIGlmIChibG9ja0luZm8pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGJsb2NrSW5mbyA9IGFkb3B0UHRyKG5ldyBSZW5kZXJCbG9ja1NlbGVjdGlvbklu
Zm8oY2IpKTsKLSAgICAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2soKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIG8gPSBvLT5uZXh0SW5QcmVPcmRlcigp
OwotICAgIH0KLQogICAgIGlmICghbV9mcmFtZVZpZXcgfHwgYmxvY2tSZXBhaW50TW9kZSA9PSBS
ZXBhaW50Tm90aGluZykKICAgICAgICAgcmV0dXJuOwogCkBAIC03OTksNDMgKzgyOSw0OCBAQAog
ICAgIC8vIEhhdmUgYW55IG9mIHRoZSBvbGQgc2VsZWN0ZWQgb2JqZWN0cyBjaGFuZ2VkIGNvbXBh
cmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9uPwogICAgIGZvciAoU2VsZWN0ZWRPYmplY3RNYXA6Oml0
ZXJhdG9yIGkgPSBvbGRTZWxlY3RlZE9iamVjdHMuYmVnaW4oKTsgaSAhPSBvbGRPYmplY3RzRW5k
OyArK2kpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmogPSBpLT5rZXk7Ci0gICAgICAgIFJl
bmRlclNlbGVjdGlvbkluZm8qIG5ld0luZm8gPSBuZXdTZWxlY3RlZE9iamVjdHMuZ2V0KG9iaik7
CiAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8qIG9sZEluZm8gPSBpLT52YWx1ZS5nZXQoKTsK
LSAgICAgICAgaWYgKCFuZXdJbmZvIHx8IG9sZEluZm8tPnJlY3QoKSAhPSBuZXdJbmZvLT5yZWN0
KCkgfHwgb2xkSW5mby0+c3RhdGUoKSAhPSBuZXdJbmZvLT5zdGF0ZSgpIHx8Ci0gICAgICAgICAg
ICAobV9zZWxlY3Rpb25TdGFydCA9PSBvYmogJiYgb2xkU3RhcnRQb3MgIT0gbV9zZWxlY3Rpb25T
dGFydFBvcykgfHwKLSAgICAgICAgICAgIChtX3NlbGVjdGlvbkVuZCA9PSBvYmogJiYgb2xkRW5k
UG9zICE9IG1fc2VsZWN0aW9uRW5kUG9zKSkgeworICAgICAgICBpZiAoIW5ld1NlbGVjdGVkT2Jq
ZWN0cy5jb250YWlucyhvYmopKSB7CiAgICAgICAgICAgICBvbGRJbmZvLT5yZXBhaW50KCk7Ci0g
ICAgICAgICAgICBpZiAobmV3SW5mbykgewotICAgICAgICAgICAgICAgIG5ld0luZm8tPnJlcGFp
bnQoKTsKLSAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZE9iamVjdHMucmVtb3ZlKG9iaik7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBS
ZW5kZXJTZWxlY3Rpb25JbmZvIG5ld0luZm8ob2JqLCB0cnVlKTsKKyAgICAgICAgaWYgKG9sZElu
Zm8tPnJlY3QoKSAhPSBuZXdJbmZvLnJlY3QoKSB8fCBvbGRJbmZvLT5zdGF0ZSgpICE9IG5ld0lu
Zm8uc3RhdGUoKQorICAgICAgICAgICAgfHwgKG1fc2VsZWN0aW9uU3RhcnQgPT0gb2JqICYmIG9s
ZFN0YXJ0UG9zICE9IG1fc2VsZWN0aW9uU3RhcnRQb3MpCisgICAgICAgICAgICB8fCAobV9zZWxl
Y3Rpb25FbmQgPT0gb2JqICYmIG9sZEVuZFBvcyAhPSBtX3NlbGVjdGlvbkVuZFBvcykpIHsKKyAg
ICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKKyAgICAgICAgICAgIG5ld0luZm8ucmVwYWlu
dCgpOworICAgICAgICAgICAgbmV3U2VsZWN0ZWRPYmplY3RzLnJlbW92ZShvYmopOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgLy8gQW55IG5ldyBvYmplY3RzIHRoYXQgcmVtYWluIHdlcmUgbm90
IGZvdW5kIGluIHRoZSBvbGQgb2JqZWN0cyBkaWN0LCBhbmQgc28gdGhleSBuZWVkIHRvIGJlIHVw
ZGF0ZWQuCi0gICAgU2VsZWN0ZWRPYmplY3RNYXA6Oml0ZXJhdG9yIG5ld09iamVjdHNFbmQgPSBu
ZXdTZWxlY3RlZE9iamVjdHMuZW5kKCk7Ci0gICAgZm9yIChTZWxlY3RlZE9iamVjdE1hcDo6aXRl
cmF0b3IgaSA9IG5ld1NlbGVjdGVkT2JqZWN0cy5iZWdpbigpOyBpICE9IG5ld09iamVjdHNFbmQ7
ICsraSkKLSAgICAgICAgaS0+dmFsdWUtPnJlcGFpbnQoKTsKKyAgICBIYXNoU2V0PFJlbmRlck9i
amVjdCo+OjppdGVyYXRvciBuZXdPYmplY3RzRW5kID0gbmV3U2VsZWN0ZWRPYmplY3RzLmVuZCgp
OworICAgIGZvciAoSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6aXRlcmF0b3IgaSA9IG5ld1NlbGVj
dGVkT2JqZWN0cy5iZWdpbigpOyBpICE9IG5ld09iamVjdHNFbmQ7ICsraSkKKyAgICAgICBSZW5k
ZXJTZWxlY3Rpb25JbmZvKCppLCB0cnVlKS5yZXBhaW50KCk7CiAKICAgICAvLyBIYXZlIGFueSBv
ZiB0aGUgb2xkIGJsb2NrcyBjaGFuZ2VkPwotICAgIFNlbGVjdGVkQmxvY2tNYXA6Oml0ZXJhdG9y
IG9sZEJsb2Nrc0VuZCA9IG9sZFNlbGVjdGVkQmxvY2tzLmVuZCgpOworICAgIG9sZEJsb2Nrc0Vu
ZCA9IG9sZFNlbGVjdGVkQmxvY2tzLmVuZCgpOwogICAgIGZvciAoU2VsZWN0ZWRCbG9ja01hcDo6
aXRlcmF0b3IgaSA9IG9sZFNlbGVjdGVkQmxvY2tzLmJlZ2luKCk7IGkgIT0gb2xkQmxvY2tzRW5k
OyArK2kpIHsKICAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gaS0+a2V5OwotICAgICAgICBS
ZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8qIG5ld0luZm8gPSBuZXdTZWxlY3RlZEJsb2Nrcy5nZXQo
YmxvY2spOwogICAgICAgICBSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8qIG9sZEluZm8gPSBpLT52
YWx1ZS5nZXQoKTsKLSAgICAgICAgaWYgKCFuZXdJbmZvIHx8IG9sZEluZm8tPnJlY3RzKCkgIT0g
bmV3SW5mby0+cmVjdHMoKSB8fCBvbGRJbmZvLT5zdGF0ZSgpICE9IG5ld0luZm8tPnN0YXRlKCkp
IHsKKyAgICAgICAgaWYgKCFuZXdTZWxlY3RlZEJsb2Nrcy5jb250YWlucyhibG9jaykpIHsKICAg
ICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKLSAgICAgICAgICAgIGlmIChuZXdJbmZvKSB7
Ci0gICAgICAgICAgICAgICAgbmV3SW5mby0+cmVwYWludCgpOwotICAgICAgICAgICAgICAgIG5l
d1NlbGVjdGVkQmxvY2tzLnJlbW92ZShibG9jayk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICBjb250aW51ZTsgICAgICAgICAgICAKICAgICAgICAgfQorCisgICAgICAgIFJlbmRlckJsb2Nr
U2VsZWN0aW9uSW5mbyBuZXdJbmZvKGJsb2NrKTsKKyAgICAgICAgaWYgKG9sZEluZm8tPnJlY3Rz
KCkgIT0gbmV3SW5mby5yZWN0cygpIHx8IG9sZEluZm8tPnN0YXRlKCkgIT0gbmV3SW5mby5zdGF0
ZSgpKSB7CisgICAgICAgICAgICBvbGRJbmZvLT5yZXBhaW50KCk7CisgICAgICAgICAgICBuZXdJ
bmZvLnJlcGFpbnQoKTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGVkQmxvY2tzLnJlbW92ZShibG9j
ayk7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBBbnkgbmV3IGJsb2NrcyB0aGF0IHJlbWFp
biB3ZXJlIG5vdCBmb3VuZCBpbiB0aGUgb2xkIGJsb2NrcyBkaWN0LCBhbmQgc28gdGhleSBuZWVk
IHRvIGJlIHVwZGF0ZWQuCi0gICAgU2VsZWN0ZWRCbG9ja01hcDo6aXRlcmF0b3IgbmV3QmxvY2tz
RW5kID0gbmV3U2VsZWN0ZWRCbG9ja3MuZW5kKCk7Ci0gICAgZm9yIChTZWxlY3RlZEJsb2NrTWFw
OjppdGVyYXRvciBpID0gbmV3U2VsZWN0ZWRCbG9ja3MuYmVnaW4oKTsgaSAhPSBuZXdCbG9ja3NF
bmQ7ICsraSkKLSAgICAgICAgaS0+dmFsdWUtPnJlcGFpbnQoKTsKKyAgICBIYXNoU2V0PFJlbmRl
ckJsb2NrKj46Oml0ZXJhdG9yIG5ld0Jsb2Nrc0VuZCA9IG5ld1NlbGVjdGVkQmxvY2tzLmVuZCgp
OworICAgIGZvciAoSGFzaFNldDxSZW5kZXJCbG9jayo+OjppdGVyYXRvciBpID0gbmV3U2VsZWN0
ZWRCbG9ja3MuYmVnaW4oKTsgaSAhPSBuZXdCbG9ja3NFbmQ7ICsraSkKKyAgICAgICAgUmVuZGVy
QmxvY2tTZWxlY3Rpb25JbmZvKCppKS5yZXBhaW50KCk7CiAKICAgICBtX2ZyYW1lVmlldy0+ZW5k
RGVmZXJyZWRSZXBhaW50cygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNDg3NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzAsMTMgKzI3MCw2IEBACiAgICAgICAgIFJlbmRlck9iamVjdDo6c2V0U2VsZWN0
aW9uU3RhdGUoU2VsZWN0aW9uQm90aCk7CiAgICAgZWxzZQogICAgICAgICBSZW5kZXJPYmplY3Q6
OnNldFNlbGVjdGlvblN0YXRlKHN0YXRlKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29u
c2lkZXIgd2hldGhlciBpdCBpcyBPSyBwcm9wYWdhdGluZyB0byBhbmNlc3RvciBSZW5kZXJJbmxp
bmVzLgotICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwOi8vd2Via2l0Lm9yZy9i
LzMyMTIzCi0gICAgLy8gVGhlIGNvbnRhaW5pbmcgYmxvY2sgY2FuIGJlIG51bGwgaW4gY2FzZSBv
ZiBhbiBvcnBoYW5lZCB0cmVlLgotICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2sgPSB0
aGlzLT5jb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAoY29udGFpbmluZ0Jsb2NrICYmICFjb250
YWluaW5nQmxvY2stPmlzUmVuZGVyVmlldygpKQotICAgICAgICBjb250YWluaW5nQmxvY2stPnNl
dFNlbGVjdGlvblN0YXRlKHN0YXRlKTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykK
</data>

          </attachment>
      

    </bug>

</bugzilla>