<?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>117378</bug_id>
          
          <creation_ts>2013-06-08 20:50:07 -0700</creation_ts>
          <short_desc>Split the 3 paths of SelectorDataList::execute() into 3 separate functions</short_desc>
          <delta_ts>2013-06-09 13:58:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>898448</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-08 20:50:07 -0700</bug_when>
    <thetext>Split the 3 paths of SelectorDataList::execute() into 3 separate functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898449</commentid>
    <comment_count>1</comment_count>
      <attachid>204107</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-08 20:57:52 -0700</bug_when>
    <thetext>Created attachment 204107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898461</commentid>
    <comment_count>2</comment_count>
      <attachid>204111</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-09 00:00:38 -0700</bug_when>
    <thetext>Created attachment 204111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898465</commentid>
    <comment_count>3</comment_count>
      <attachid>204111</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-06-09 02:01:05 -0700</bug_when>
    <thetext>Comment on attachment 204111
Patch

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

&gt; Source/WebCore/ChangeLog:23
&gt; +2013-06-08  Benjamin Poulain  &lt;bpoulain@apple.com&gt;
&gt; +
&gt; +        Scrolling with platformWidget and delegateScrolling is incorrectly clamped
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=117369
&gt; +        &lt;rdar://problem/13985064&gt;

Please remove this change log entry before you land it.

&gt; Source/WebCore/dom/SelectorQuery.cpp:-106
&gt; -    // We need to return the matches in document order. To use id lookup while there is possiblity of multiple matches
&gt; -    // we would need to sort the results. For now, just traverse the document in that case.
&gt; -    if (m_selectors.size() != 1)
&gt; -        return 0;

Should we assert this instead?

&gt; Source/WebCore/dom/SelectorQuery.cpp:132
&gt; +        const Vector&lt;Element*&gt;* elements = rootNode-&gt;treeScope()-&gt;getAllElementsById(idToMatch);

Should we also split this block into a separate function?

&gt; Source/WebCore/dom/SelectorQuery.cpp:148
&gt; +    if (!element || !(isTreeScopeRoot(rootNode) || element-&gt;isDescendantOf(rootNode)))
&gt; +        return;
&gt; +    if (selectorMatches(selectorData, element, rootNode))

Maybe cleaner to combine these two if statements as in:
if (element &amp;&amp; (isTreeScopeRoot(rootNode) || element-&gt;isDescendantOf(rootNode)) &amp;&amp; selectorMatches(selectorData, element, rootNode))
    matchedElements.append(element);

&gt; Source/WebCore/dom/SelectorQuery.cpp:186
&gt; +    unsigned selectorCount = m_selectors.size();
&gt; +    if (selectorCount == 1) {

Since this local variable is only used in one place, we can just do m_selectors.size() == 1 instead.

&gt; Source/WebCore/dom/SelectorQuery.cpp:194
&gt; +        if (const CSSSelector* idSelector = selectorForIdLookup(rootNode, selectorData.selector)) {
&gt; +            executeFastPathForIdSelector&lt;firstMatchOnly&gt;(rootNode, selectorData, idSelector, matchedElements);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        executeSingleSelectorData&lt;firstMatchOnly&gt;(rootNode, selectorData, matchedElements);
&gt; +        return;

Since we have a single statement inside if, it might be beter to simply use else instead:
if (const CSSSelector* idSelector = ~)
    executeFastPathForIdSelector&lt;...);
else
    executeSingleSelectorData&lt;...);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898500</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-09 13:00:06 -0700</bug_when>
    <thetext>Damn, mixed with the previous patch. Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898503</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-09 13:58:00 -0700</bug_when>
    <thetext>Committed r151359: &lt;http://trac.webkit.org/changeset/151359&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204107</attachid>
            <date>2013-06-08 20:57:52 -0700</date>
            <delta_ts>2013-06-09 00:00:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117378-20130608205616.patch</filename>
            <type>text/plain</type>
            <size>8636</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNiYjZkZDE4Y2QyYzM3
YmE0NWM4YjE1YzI2YTk3N2NhMzFkMjM4YS4uODk5MDI4MTNkNmE1ODNmMmNjMmQxYzA2NTY0NGUx
OGUzOTE3ZTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEzLTA2LTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCisgICAgICAgIFNwbGl0IHRoZSAz
IHBhdGhzIG9mIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGUoKSBpbnRvIDMgc2VwYXJhdGUgZnVu
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTczNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
cGxpdCB0aG9zZSB0byBoYXZlIHNldmVyYWwgc21hbGwgZXhlY3V0ZSgpIGZ1Y250aW9ucyBpbnN0
ZWFkIG9mIGEgZ2lhbnQgb25lLgorCisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JGb3JJZExvb2t1cCk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1RyZWVTY29wZVJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6
ZXhlY3V0ZUZhc3RQYXRoRm9ySWRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKToKKyAgICAgICAgKiBkb20v
U2VsZWN0b3JRdWVyeS5oOgorCisyMDEzLTA2LTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgorCiAgICAgICAgIFNjcm9sbGluZyB3aXRoIHBsYXRmb3JtV2lkZ2V0IGFu
ZCBkZWxlZ2F0ZVNjcm9sbGluZyBpcyBpbmNvcnJlY3RseSBjbGFtcGVkCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczNjkKICAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEzOTg1MDY0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4
IDk1ZjRjMjhjZjNlM2YwMjUwOTg4YjQyODcxYzRkNzRkMzk5OWM0N2QuLmI2NTM5MDU0NTQ3YzJi
OGVkYjJiOTg2ZDQ2ZGI3MWU5NWRhNWM0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVy
eS5jcHAKQEAgLTk4LDE3ICs5OCwxMyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IFNlbGVjdG9yRGF0
YUxpc3Q6OnF1ZXJ5Rmlyc3QoTm9kZSogcm9vdE5vZGUpIGNvbnN0CiAgICAgcmV0dXJuIHRvRWxl
bWVudChyZXN1bHQuZmlyc3QoKS5nZXQoKSk7CiB9CiAKLWNvbnN0IENTU1NlbGVjdG9yKiBTZWxl
Y3RvckRhdGFMaXN0OjpzZWxlY3RvckZvcklkTG9va3VwKE5vZGUqIHJvb3ROb2RlKSBjb25zdAor
c3RhdGljIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvckZvcklkTG9va3VwKGNvbnN0IE5vZGUq
IHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiB7Ci0gICAgLy8gV2UgbmVl
ZCB0byByZXR1cm4gdGhlIG1hdGNoZXMgaW4gZG9jdW1lbnQgb3JkZXIuIFRvIHVzZSBpZCBsb29r
dXAgd2hpbGUgdGhlcmUgaXMgcG9zc2libGl0eSBvZiBtdWx0aXBsZSBtYXRjaGVzCi0gICAgLy8g
d2Ugd291bGQgbmVlZCB0byBzb3J0IHRoZSByZXN1bHRzLiBGb3Igbm93LCBqdXN0IHRyYXZlcnNl
IHRoZSBkb2N1bWVudCBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKG1fc2VsZWN0b3JzLnNpemUoKSAh
PSAxKQotICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIXJvb3ROb2RlLT5pbkRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChyb290Tm9kZS0+ZG9jdW1lbnQoKS0+aW5RdWly
a3NNb2RlKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yID0gbV9zZWxlY3RvcnNbMF0uc2VsZWN0b3I7IHNlbGVjdG9yOyBzZWxlY3RvciA9
IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICBmb3IgKDsgc2VsZWN0b3I7IHNlbGVjdG9y
ID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewogICAgICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKQogICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yOwogICAg
ICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9y
KQpAQCAtMTE3LDUyICsxMTMsNTYgQEAgY29uc3QgQ1NTU2VsZWN0b3IqIFNlbGVjdG9yRGF0YUxp
c3Q6OnNlbGVjdG9yRm9ySWRMb29rdXAoTm9kZSogcm9vdE5vZGUpIGNvbnN0CiAgICAgcmV0dXJu
IDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1RyZWVTY29wZVJvb3QoTm9kZSogbm9kZSkK
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc1RyZWVTY29wZVJvb3QoY29uc3QgTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQobm9kZSk7CiAgICAgcmV0dXJuIG5vZGUtPmlzRG9jdW1lbnROb2RlKCkgfHwg
bm9kZS0+aXNTaGFkb3dSb290KCk7CiB9CiAKIHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5
Pgotdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKE5vZGUqIHJvb3ROb2RlLCBWZWN0b3I8
UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGVtZW50cykgY29uc3QKK0FMV0FZU19JTkxJTkUgdm9p
ZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlRmFzdFBhdGhGb3JJZFNlbGVjdG9yKGNvbnN0IE5v
ZGUqIHJvb3ROb2RlLCBjb25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9yRGF0YSwgY29uc3QgQ1NT
U2VsZWN0b3IqIGlkU2VsZWN0b3IsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1l
bnRzKSBjb25zdAogewotICAgIGlmIChjb25zdCBDU1NTZWxlY3RvciogaWRTZWxlY3RvciA9IHNl
bGVjdG9yRm9ySWRMb29rdXAocm9vdE5vZGUpKSB7Ci0gICAgICAgIEFTU0VSVChtX3NlbGVjdG9y
cy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRUb01hdGNoID0g
aWRTZWxlY3Rvci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKHJvb3ROb2RlLT50cmVl
U2NvcGUoKS0+Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKGlkVG9NYXRjaCkpKSB7Ci0g
ICAgICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBlbGVtZW50cyA9IHJvb3ROb2RlLT50
cmVlU2NvcGUoKS0+Z2V0QWxsRWxlbWVudHNCeUlkKGlkVG9NYXRjaCk7Ci0gICAgICAgICAgICBB
U1NFUlQoZWxlbWVudHMpOwotICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gZWxlbWVudHMtPnNp
emUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewot
ICAgICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50cy0+YXQoaSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNlbGVjdG9yTWF0Y2hlcyhtX3NlbGVjdG9yc1swXSwgZWxlbWVudCwg
cm9vdE5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZWRFbGVtZW50cy5hcHBlbmQo
ZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdE1hdGNoT25seSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgRWxlbWVudCogZWxl
bWVudCA9IHJvb3ROb2RlLT50cmVlU2NvcGUoKS0+Z2V0RWxlbWVudEJ5SWQoaWRUb01hdGNoKTsK
LSAgICAgICAgaWYgKCFlbGVtZW50IHx8ICEoaXNUcmVlU2NvcGVSb290KHJvb3ROb2RlKSB8fCBl
bGVtZW50LT5pc0Rlc2NlbmRhbnRPZihyb290Tm9kZSkpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBpZiAoc2VsZWN0b3JNYXRjaGVzKG1fc2VsZWN0b3JzWzBdLCBlbGVtZW50LCByb290
Tm9kZSkpCi0gICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2Vs
ZWN0b3JzLnNpemUoKTsKLSAgICBpZiAoc2VsZWN0b3JDb3VudCA9PSAxKSB7Ci0gICAgICAgIGNv
bnN0IFNlbGVjdG9yRGF0YSYgc2VsZWN0b3IgPSBtX3NlbGVjdG9yc1swXTsKLSAgICAgICAgZm9y
IChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdE5v
ZGUpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50LCBy
b290Tm9kZSkpIHsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVs
ZW1lbnQsIHJvb3ROb2RlKSkgeworICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0gMSk7
CisgICAgQVNTRVJUKGlkU2VsZWN0b3IpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRUb01h
dGNoID0gaWRTZWxlY3Rvci0+dmFsdWUoKTsKKyAgICBpZiAoVU5MSUtFTFkocm9vdE5vZGUtPnRy
ZWVTY29wZSgpLT5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoaWRUb01hdGNoKSkpIHsK
KyAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZWxlbWVudHMgPSByb290Tm9kZS0+dHJl
ZVNjb3BlKCktPmdldEFsbEVsZW1lbnRzQnlJZChpZFRvTWF0Y2gpOworICAgICAgICBBU1NFUlQo
ZWxlbWVudHMpOworICAgICAgICBzaXplX3QgY291bnQgPSBlbGVtZW50cy0+c2l6ZSgpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50cy0+YXQoaSk7CisgICAgICAgICAgICBpZiAoc2VsZWN0
b3JNYXRjaGVzKHNlbGVjdG9yRGF0YSwgZWxlbWVudCwgcm9vdE5vZGUpKSB7CiAgICAgICAgICAg
ICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBp
ZiAoZmlyc3RNYXRjaE9ubHkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQorICAgIH0KKyAgICBFbGVtZW50KiBlbGVtZW50ID0gcm9vdE5vZGUt
PnRyZWVTY29wZSgpLT5nZXRFbGVtZW50QnlJZChpZFRvTWF0Y2gpOworICAgIGlmICghZWxlbWVu
dCB8fCAhKGlzVHJlZVNjb3BlUm9vdChyb290Tm9kZSkgfHwgZWxlbWVudC0+aXNEZXNjZW5kYW50
T2Yocm9vdE5vZGUpKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChzZWxlY3Rvck1hdGNoZXMo
c2VsZWN0b3JEYXRhLCBlbGVtZW50LCByb290Tm9kZSkpCisgICAgICAgIG1hdGNoZWRFbGVtZW50
cy5hcHBlbmQoZWxlbWVudCk7Cit9CisKK3RlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5Pgor
QUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3Rv
ckRhdGEoY29uc3QgTm9kZSogcm9vdE5vZGUsIGNvbnN0IFNlbGVjdG9yRGF0YSYgc2VsZWN0b3JE
YXRhLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGVtZW50cykgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOworCisgICAgZm9yIChFbGVtZW50KiBl
bGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdE5vZGUpOyBlbGVtZW50
OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50LCByb290Tm9kZSkpIHsK
KyAgICAgICAgaWYgKHNlbGVjdG9yTWF0Y2hlcyhzZWxlY3RvckRhdGEsIGVsZW1lbnQsIHJvb3RO
b2RlKSkgeworICAgICAgICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAg
ICAgICAgICAgIGlmIChmaXJzdE1hdGNoT25seSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICB9Cit9CisKK3RlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5PgorQUxX
QVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVj
dG9yRGF0YShjb25zdCBOb2RlKiByb290Tm9kZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBtYXRj
aGVkRWxlbWVudHMpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2Vs
ZWN0b3JzLnNpemUoKTsKICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVy
c2FsOjpmaXJzdFdpdGhpbihyb290Tm9kZSk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJh
dmVyc2FsOjpuZXh0KGVsZW1lbnQsIHJvb3ROb2RlKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2VsZWN0b3JDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoc2VsZWN0
b3JNYXRjaGVzKG1fc2VsZWN0b3JzW2ldLCBlbGVtZW50LCByb290Tm9kZSkpIHsKQEAgLTE3NSw2
ICsxNzUsMjMgQEAgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKE5vZGUqIHJvb3ROb2Rl
LCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGUKICAgICB9CiB9CiAKK3RlbXBsYXRl
IDxib29sIGZpcnN0TWF0Y2hPbmx5Pgordm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKE5v
ZGUqIHJvb3ROb2RlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGVtZW50cykgY29u
c3QKK3sKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0gbV9zZWxlY3RvcnMuc2l6ZSgpOwor
ICAgIGlmIChzZWxlY3RvckNvdW50ID09IDEpIHsKKyAgICAgICAgY29uc3QgU2VsZWN0b3JEYXRh
JiBzZWxlY3RvckRhdGEgPSBtX3NlbGVjdG9yc1swXTsKKyAgICAgICAgaWYgKGNvbnN0IENTU1Nl
bGVjdG9yKiBpZFNlbGVjdG9yID0gc2VsZWN0b3JGb3JJZExvb2t1cChyb290Tm9kZSwgc2VsZWN0
b3JEYXRhLnNlbGVjdG9yKSkgeworICAgICAgICAgICAgZXhlY3V0ZUZhc3RQYXRoRm9ySWRTZWxl
Y3RvcjxmaXJzdE1hdGNoT25seT4ocm9vdE5vZGUsIHNlbGVjdG9yRGF0YSwgaWRTZWxlY3Rvciwg
bWF0Y2hlZEVsZW1lbnRzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGE8Zmlyc3RNYXRjaE9ubHk+KHJvb3ROb2RlLCBz
ZWxlY3RvckRhdGEsIG1hdGNoZWRFbGVtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhPGZpcnN0TWF0Y2hPbmx5Pihyb290Tm9k
ZSwgbWF0Y2hlZEVsZW1lbnRzKTsKK30KKwogU2VsZWN0b3JRdWVyeTo6U2VsZWN0b3JRdWVyeShj
b25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKICAgICA6IG1fc2VsZWN0b3JMaXN0
KHNlbGVjdG9yTGlzdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rv
clF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCmluZGV4IDdiMDc1
YTc1YThhMzI4OGI2N2U5MGNhZTIyMGE2NGIzNjA4ZmEzZTEuLjM2NGJlZjU4OGMwNmI3ZTRhYjUw
NjcyY2ZjYjJhNmNiZjYxYjA4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxl
Y3RvclF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaApAQCAt
NTgsMTAgKzU4LDEzIEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIGJvb2wgc2VsZWN0b3JNYXRj
aGVzKGNvbnN0IFNlbGVjdG9yRGF0YSYsIEVsZW1lbnQqLCBjb25zdCBOb2RlKikgY29uc3Q7Ci0g
ICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yRm9ySWRMb29rdXAoTm9kZSogcm9vdE5vZGUp
IGNvbnN0OwogICAgIHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5PgogICAgIHZvaWQgZXhl
Y3V0ZShOb2RlKiByb290Tm9kZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JikgY29uc3Q7CiAKKyAg
ICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdE1hdGNoT25seT4gdm9pZCBleGVjdXRlRmFzdFBhdGhGb3JJ
ZFNlbGVjdG9yKGNvbnN0IE5vZGUqIHJvb3ROb2RlLCBjb25zdCBTZWxlY3RvckRhdGEmLCBjb25z
dCBDU1NTZWxlY3RvciogaWRTZWxlY3RvciwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JikgY29uc3Q7
CisgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRjaE9ubHk+IHZvaWQgZXhlY3V0ZVNpbmdsZVNl
bGVjdG9yRGF0YShjb25zdCBOb2RlKiByb290Tm9kZSwgY29uc3QgU2VsZWN0b3JEYXRhJiwgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+JikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRj
aE9ubHk+IHZvaWQgZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnN0IE5vZGUqIHJv
b3ROb2RlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKKwogICAgIFZlY3RvcjxTZWxl
Y3RvckRhdGE+IG1fc2VsZWN0b3JzOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204111</attachid>
            <date>2013-06-09 00:00:38 -0700</date>
            <delta_ts>2013-06-09 02:01:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117378-20130608235902.patch</filename>
            <type>text/plain</type>
            <size>11058</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM4MmE2MzAwMDdiNjIz
ZjU1NTYzNGQ5MTY0NDk4OWYxY2IyMGRjOS4uODk5MDI4MTNkNmE1ODNmMmNjMmQxYzA2NTY0NGUx
OGUzOTE3ZTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA2LTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IHRoZSAz
IHBhdGhzIG9mIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGUoKSBpbnRvIDMgc2VwYXJhdGUgZnVu
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTczNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
cGxpdCB0aG9zZSB0byBoYXZlIHNldmVyYWwgc21hbGwgZXhlY3V0ZSgpIGZ1Y250aW9ucyBpbnN0
ZWFkIG9mIGEgZ2lhbnQgb25lLgorCisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JGb3JJZExvb2t1cCk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1RyZWVTY29wZVJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6
ZXhlY3V0ZUZhc3RQYXRoRm9ySWRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKToKKyAgICAgICAgKiBkb20v
U2VsZWN0b3JRdWVyeS5oOgorCisyMDEzLTA2LTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbGluZyB3aXRoIHBsYXRmb3JtV2lkZ2V0IGFu
ZCBkZWxlZ2F0ZVNjcm9sbGluZyBpcyBpbmNvcnJlY3RseSBjbGFtcGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczNjkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEzOTg1MDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBwYXRjaCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
NDI1MjYgY2xhbXBzIHRoZSBpbnB1dCBwb3NpdGlvbgorICAgICAgICBpbiB0aGUgU2Nyb2xsVmll
dyBzY3JvbGwgcmFuZ2UuIFRoaXMgd2FzIGRvbmUgZm9yIHRoZSBwYXRoIHRvIHRoZSBTY3JvbGxp
bmdDb29yZGluYXRvci4KKworICAgICAgICBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgY2hhbmdlIGlz
IFNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKCkgY2FuIGRlbGVnYXRlIHRoZSBzY3JvbGxp
bmcKKyAgICAgICAgdG8gZWl0aGVyIGEgcGxhdGZvcm1XaWRnZXQsIG9yIHRocm91Z2ggZGVsZWdh
dGVTY3JvbGxpbmcuIEFmdGVyIHIxNDI1MjYsIHRoZSBwb3NpdGlvbiBpcyBjbGFtcGVkLAorICAg
ICAgICBhbmQgd2UgZG8gbm90IGxldCB0aG9zZSBleHRlcm5hbCBzY3JvbGxpbmcgbWVjaGFuaW1z
IGhhbmRsZSB0aGUgb3V0LW9mLWJvdW5kIHNjcm9sbGluZy4KKworICAgICAgICBUaGlzIHBhdGNo
IGZpeGVzIHRoZSBpc3N1ZSBieSBtb3ZpbmcgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBjYWxsIHRv
IFNjcm9sbFZpZXcsCisgICAgICAgIGFmdGVyIHRoZSBkZWxlZ2F0ZSBoYW5kbGluZyBjb2RlLgor
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJl
cXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisKIDIwMTMtMDYtMDggIFBldGVyIEdhbCAgPGdh
bHBldGVyQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbY3VybF0gQWxsb3cgaGVhZGVycyB3
aXRoIGVtcHR5IHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JR
dWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggOTVm
NGMyOGNmM2UzZjAyNTA5ODhiNDI4NzFjNGQ3NGQzOTk5YzQ3ZC4uZTZmYjUzNGNjMjkxZmIxNjVm
MTdiOWViMTU5NmRjZDhiNmMxNzBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNw
cApAQCAtOTgsNjQgKzk4LDQzIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JEYXRhTGlz
dDo6cXVlcnlGaXJzdChOb2RlKiByb290Tm9kZSkgY29uc3QKICAgICByZXR1cm4gdG9FbGVtZW50
KHJlc3VsdC5maXJzdCgpLmdldCgpKTsKIH0KIAotY29uc3QgQ1NTU2VsZWN0b3IqIFNlbGVjdG9y
RGF0YUxpc3Q6OnNlbGVjdG9yRm9ySWRMb29rdXAoTm9kZSogcm9vdE5vZGUpIGNvbnN0CitzdGF0
aWMgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yRm9ySWRMb29rdXAoY29uc3QgTm9kZSogcm9v
dE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKLSAgICAvLyBXZSBuZWVkIHRv
IHJldHVybiB0aGUgbWF0Y2hlcyBpbiBkb2N1bWVudCBvcmRlci4gVG8gdXNlIGlkIGxvb2t1cCB3
aGlsZSB0aGVyZSBpcyBwb3NzaWJsaXR5IG9mIG11bHRpcGxlIG1hdGNoZXMKLSAgICAvLyB3ZSB3
b3VsZCBuZWVkIHRvIHNvcnQgdGhlIHJlc3VsdHMuIEZvciBub3csIGp1c3QgdHJhdmVyc2UgdGhl
IGRvY3VtZW50IGluIHRoYXQgY2FzZS4KLSAgICBpZiAobV9zZWxlY3RvcnMuc2l6ZSgpICE9IDEp
Ci0gICAgICAgIHJldHVybiAwOwogICAgIGlmICghcm9vdE5vZGUtPmluRG9jdW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHJvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01v
ZGUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IgPSBtX3NlbGVjdG9yc1swXS5zZWxlY3Rvcjsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2Vs
ZWN0b3ItPnRhZ0hpc3RvcnkoKSkgeworCisgICAgZG8gewogICAgICAgICBpZiAoc2VsZWN0b3It
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKQogICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9y
OwogICAgICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNl
bGVjdG9yKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgICAgICBzZWxlY3RvciA9IHNl
bGVjdG9yLT50YWdIaXN0b3J5KCk7CisgICAgfSB3aGlsZSAoc2VsZWN0b3IpOworCiAgICAgcmV0
dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1RyZWVTY29wZVJvb3QoTm9kZSogbm9k
ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1RyZWVTY29wZVJvb3QoY29uc3QgTm9kZSogbm9kZSkK
IHsKICAgICBBU1NFUlQobm9kZSk7CiAgICAgcmV0dXJuIG5vZGUtPmlzRG9jdW1lbnROb2RlKCkg
fHwgbm9kZS0+aXNTaGFkb3dSb290KCk7CiB9CiAKIHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hP
bmx5Pgotdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKE5vZGUqIHJvb3ROb2RlLCBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGVtZW50cykgY29uc3QKK0FMV0FZU19JTkxJTkUg
dm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlRmFzdFBhdGhGb3JJZFNlbGVjdG9yKGNvbnN0
IE5vZGUqIHJvb3ROb2RlLCBjb25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9yRGF0YSwgY29uc3Qg
Q1NTU2VsZWN0b3IqIGlkU2VsZWN0b3IsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVs
ZW1lbnRzKSBjb25zdAogewotICAgIGlmIChjb25zdCBDU1NTZWxlY3RvciogaWRTZWxlY3RvciA9
IHNlbGVjdG9yRm9ySWRMb29rdXAocm9vdE5vZGUpKSB7Ci0gICAgICAgIEFTU0VSVChtX3NlbGVj
dG9ycy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRUb01hdGNo
ID0gaWRTZWxlY3Rvci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKHJvb3ROb2RlLT50
cmVlU2NvcGUoKS0+Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKGlkVG9NYXRjaCkpKSB7
Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBlbGVtZW50cyA9IHJvb3ROb2Rl
LT50cmVlU2NvcGUoKS0+Z2V0QWxsRWxlbWVudHNCeUlkKGlkVG9NYXRjaCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoZWxlbWVudHMpOwotICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gZWxlbWVudHMt
PnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50cy0+YXQoaSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yTWF0Y2hlcyhtX3NlbGVjdG9yc1swXSwgZWxlbWVu
dCwgcm9vdE5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZWRFbGVtZW50cy5hcHBl
bmQoZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdE1hdGNoT25seSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHJvb3ROb2RlLT50cmVlU2NvcGUoKS0+Z2V0RWxlbWVudEJ5SWQoaWRUb01hdGNo
KTsKLSAgICAgICAgaWYgKCFlbGVtZW50IHx8ICEoaXNUcmVlU2NvcGVSb290KHJvb3ROb2RlKSB8
fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihyb290Tm9kZSkpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBpZiAoc2VsZWN0b3JNYXRjaGVzKG1fc2VsZWN0b3JzWzBdLCBlbGVtZW50LCBy
b290Tm9kZSkpCi0gICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1f
c2VsZWN0b3JzLnNpemUoKTsKLSAgICBpZiAoc2VsZWN0b3JDb3VudCA9PSAxKSB7Ci0gICAgICAg
IGNvbnN0IFNlbGVjdG9yRGF0YSYgc2VsZWN0b3IgPSBtX3NlbGVjdG9yc1swXTsKLSAgICAgICAg
Zm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9v
dE5vZGUpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50
LCByb290Tm9kZSkpIHsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3Is
IGVsZW1lbnQsIHJvb3ROb2RlKSkgeworICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0g
MSk7CisgICAgQVNTRVJUKGlkU2VsZWN0b3IpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRU
b01hdGNoID0gaWRTZWxlY3Rvci0+dmFsdWUoKTsKKyAgICBpZiAoVU5MSUtFTFkocm9vdE5vZGUt
PnRyZWVTY29wZSgpLT5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoaWRUb01hdGNoKSkp
IHsKKyAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZWxlbWVudHMgPSByb290Tm9kZS0+
dHJlZVNjb3BlKCktPmdldEFsbEVsZW1lbnRzQnlJZChpZFRvTWF0Y2gpOworICAgICAgICBBU1NF
UlQoZWxlbWVudHMpOworICAgICAgICBzaXplX3QgY291bnQgPSBlbGVtZW50cy0+c2l6ZSgpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50cy0+YXQoaSk7CisgICAgICAgICAgICBpZiAoc2Vs
ZWN0b3JNYXRjaGVzKHNlbGVjdG9yRGF0YSwgZWxlbWVudCwgcm9vdE5vZGUpKSB7CiAgICAgICAg
ICAgICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKICAgICAgICAgICAgICAg
ICBpZiAoZmlyc3RNYXRjaE9ubHkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2
Myw2ICsxNDIsMzEgQEAgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKE5vZGUqIHJvb3RO
b2RlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGUKICAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByb290Tm9kZS0+dHJlZVNj
b3BlKCktPmdldEVsZW1lbnRCeUlkKGlkVG9NYXRjaCk7CisgICAgaWYgKCFlbGVtZW50IHx8ICEo
aXNUcmVlU2NvcGVSb290KHJvb3ROb2RlKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihyb290
Tm9kZSkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHNlbGVjdG9yTWF0Y2hlcyhzZWxlY3Rv
ckRhdGEsIGVsZW1lbnQsIHJvb3ROb2RlKSkKKyAgICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVu
ZChlbGVtZW50KTsKK30KKwordGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRjaE9ubHk+CitBTFdBWVNf
SU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVjdG9yRGF0YShj
b25zdCBOb2RlKiByb290Tm9kZSwgY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEsIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBjb25zdAoreworICAgIEFTU0VS
VChtX3NlbGVjdG9ycy5zaXplKCkgPT0gMSk7CisKKyAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQg
PSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290Tm9kZSk7IGVsZW1lbnQ7IGVsZW1l
bnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQsIHJvb3ROb2RlKSkgeworICAgICAg
ICBpZiAoc2VsZWN0b3JNYXRjaGVzKHNlbGVjdG9yRGF0YSwgZWxlbWVudCwgcm9vdE5vZGUpKSB7
CisgICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgICAgICAg
ICAgaWYgKGZpcnN0TWF0Y2hPbmx5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KK30KKwordGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRjaE9ubHk+CitBTFdBWVNfSU5M
SU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRh
KGNvbnN0IE5vZGUqIHJvb3ROb2RlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGVt
ZW50cykgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0gbV9zZWxlY3RvcnMu
c2l6ZSgpOwogICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZp
cnN0V2l0aGluKHJvb3ROb2RlKTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6
Om5leHQoZWxlbWVudCwgcm9vdE5vZGUpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzZWxlY3RvckNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNo
ZXMobV9zZWxlY3RvcnNbaV0sIGVsZW1lbnQsIHJvb3ROb2RlKSkgewpAQCAtMTc1LDYgKzE3OSwy
MyBAQCB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGUoTm9kZSogcm9vdE5vZGUsIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZQogICAgIH0KIH0KIAordGVtcGxhdGUgPGJvb2wg
Zmlyc3RNYXRjaE9ubHk+CitBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhl
Y3V0ZShOb2RlKiByb290Tm9kZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBtYXRjaGVkRWxlbWVu
dHMpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2VsZWN0b3JzLnNp
emUoKTsKKyAgICBpZiAoc2VsZWN0b3JDb3VudCA9PSAxKSB7CisgICAgICAgIGNvbnN0IFNlbGVj
dG9yRGF0YSYgc2VsZWN0b3JEYXRhID0gbV9zZWxlY3RvcnNbMF07CisgICAgICAgIGlmIChjb25z
dCBDU1NTZWxlY3RvciogaWRTZWxlY3RvciA9IHNlbGVjdG9yRm9ySWRMb29rdXAocm9vdE5vZGUs
IHNlbGVjdG9yRGF0YS5zZWxlY3RvcikpIHsKKyAgICAgICAgICAgIGV4ZWN1dGVGYXN0UGF0aEZv
cklkU2VsZWN0b3I8Zmlyc3RNYXRjaE9ubHk+KHJvb3ROb2RlLCBzZWxlY3RvckRhdGEsIGlkU2Vs
ZWN0b3IsIG1hdGNoZWRFbGVtZW50cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhPGZpcnN0TWF0Y2hPbmx5Pihyb290
Tm9kZSwgc2VsZWN0b3JEYXRhLCBtYXRjaGVkRWxlbWVudHMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YTxmaXJzdE1hdGNoT25seT4o
cm9vdE5vZGUsIG1hdGNoZWRFbGVtZW50cyk7Cit9CisKIFNlbGVjdG9yUXVlcnk6OlNlbGVjdG9y
UXVlcnkoY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCiAgICAgOiBtX3NlbGVj
dG9yTGlzdChzZWxlY3Rvckxpc3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaAppbmRl
eCA3YjA3NWE3NWE4YTMyODhiNjdlOTBjYWUyMjBhNjRiMzYwOGZhM2UxLi4zNjRiZWY1ODhjMDZi
N2U0YWI1MDY3MmNmY2IyYTZjYmY2MWIwODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmgKQEAgLTU4LDEwICs1OCwxMyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBib29sIHNlbGVj
dG9yTWF0Y2hlcyhjb25zdCBTZWxlY3RvckRhdGEmLCBFbGVtZW50KiwgY29uc3QgTm9kZSopIGNv
bnN0OwotICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvckZvcklkTG9va3VwKE5vZGUqIHJv
b3ROb2RlKSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdE1hdGNoT25seT4KICAgICB2
b2lkIGV4ZWN1dGUoTm9kZSogcm9vdE5vZGUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0
OwogCisgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRjaE9ubHk+IHZvaWQgZXhlY3V0ZUZhc3RQ
YXRoRm9ySWRTZWxlY3Rvcihjb25zdCBOb2RlKiByb290Tm9kZSwgY29uc3QgU2VsZWN0b3JEYXRh
JiwgY29uc3QgQ1NTU2VsZWN0b3IqIGlkU2VsZWN0b3IsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYp
IGNvbnN0OworICAgIHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5PiB2b2lkIGV4ZWN1dGVT
aW5nbGVTZWxlY3RvckRhdGEoY29uc3QgTm9kZSogcm9vdE5vZGUsIGNvbnN0IFNlbGVjdG9yRGF0
YSYsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0OworICAgIHRlbXBsYXRlIDxib29sIGZp
cnN0TWF0Y2hPbmx5PiB2b2lkIGV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YShjb25zdCBO
b2RlKiByb290Tm9kZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JikgY29uc3Q7CisKICAgICBWZWN0
b3I8U2VsZWN0b3JEYXRhPiBtX3NlbGVjdG9yczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCA2NGQwMWFhMzk5MTUwZDUyMGZmOGQwYmU4ODg3YWJhMGYwZDVhZmZlLi45NTA3
ZTkxZjRkYTZlZDNlMjRlM2M0ZGJmODlmYjdkMzllNGRhZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC0xOTAxLDE2ICsxOTAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKIHsKICAgICBUZW1wb3JhcnlD
aGFuZ2U8Ym9vbD4gY2hhbmdlSW5Qcm9ncmFtbWF0aWNTY3JvbGwobV9pblByb2dyYW1tYXRpY1Nj
cm9sbCwgdHJ1ZSk7CiAgICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9uQW5jaG9yID0gMDsKLQot
ICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRo
aW5SYW5nZShzY3JvbGxQb2ludCk7Ci0KLSAgICBpZiAobmV3U2Nyb2xsUG9zaXRpb24gPT0gc2Ny
b2xsUG9zaXRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlcXVlc3RTY3JvbGxQ
b3NpdGlvblVwZGF0ZShuZXdTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKG5ld1Njcm9sbFBvc2l0aW9uKTsKKyAgICBT
Y3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb2ludCk7CiB9CiAKIHZvaWQgRnJh
bWVWaWV3OjpkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAppbmRleCAxMWUxMjZhNzgyZmY3MTYzZjE1MGQ2MjRiNTAzMmY4YmYw
NWEyODRkLi4zMTNlMjY3ODdlZDJjZGQzZDhiOTQ5YjA2ZDI0MGM4MzU5YzM4NzliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNDI1LDYgKzQyNSw5IEBAIHZvaWQg
U2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50
KQogICAgIGlmIChuZXdTY3JvbGxQb3NpdGlvbiA9PSBzY3JvbGxQb3NpdGlvbigpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAocmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKG5ld1Njcm9s
bFBvc2l0aW9uKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdXBkYXRlU2Nyb2xsYmFycyhJbnRT
aXplKG5ld1Njcm9sbFBvc2l0aW9uLngoKSwgbmV3U2Nyb2xsUG9zaXRpb24ueSgpKSk7CiB9CiAK
</data>
<flag name="review"
          id="225631"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>