<?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>87627</bug_id>
          
          <creation_ts>2012-05-28 00:12:56 -0700</creation_ts>
          <short_desc>[Performance] Optimize querySelector() and querySelectorAll() by removing redundant dummy style sheet creations</short_desc>
          <delta_ts>2012-05-29 09:22: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>CSS</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>
          
          <blocked>87625</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>634951</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-28 00:12:56 -0700</bug_when>
    <thetext>Currently Node::querySelector() and Node::querySelectorAll() have the following call path:

    PassRefPtr&lt;Element&gt; Node::querySelector(const String&amp; selectors, ExceptionCode&amp; ec)
    {
        CSSParser parser(document()); /* bottleneck (1) */
        CSSSelectorList querySelectorList;
        parser.parseSelector(selectors, querySelectorList);
        ...;
    }

    void CSSParser::parseSelector(const String&amp; string, CSSSelectorList&amp; selectorList)
    {
        RefPtr&lt;StyleSheetInternal&gt; dummyStyleSheet = StyleSheetInternal::create(); /* bottleneck (2) */
        setStyleSheet(dummyStyleSheet.get());
        ...;
    }

I&apos;ve found that &apos;CSSParser parser(document())&apos; and &apos;StyleSheetInternal::create()&apos; are bottlenecks of querySelector() and querySelectorAll().

We do not need to construct a CSSParser and a dummyStyleSheet every time. By caching the CSSParser with a dummyStyleSheet on Document, we can remove the CSSParser constructor and the dummyStyleSheet creation from the call path of querySelector() and querySelectorAll().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634952</commentid>
    <comment_count>1</comment_count>
      <attachid>144288</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-28 00:13:35 -0700</bug_when>
    <thetext>Created attachment 144288
Performance tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634953</commentid>
    <comment_count>2</comment_count>
      <attachid>144289</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-28 00:15:19 -0700</bug_when>
    <thetext>Created attachment 144289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635028</commentid>
    <comment_count>3</comment_count>
      <attachid>144289</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-05-28 02:12:30 -0700</bug_when>
    <thetext>Comment on attachment 144289
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:1127
&gt; +void CSSParser::parseSelectorWithDummyStyleSheet(const String&amp; string, CSSSelectorList&amp; selectorList)
&gt; +{
&gt; +    setDummyStyleSheet();
&gt; +    parseSelector(string, selectorList);
&gt;  }

Why does this case still need dummy stylesheet? Could you figure out how to get rid of it completely at least for selector parsing? I think it might be just matter of adding some null checks to code that deals with the stylesheet during the parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635105</commentid>
    <comment_count>4</comment_count>
      <attachid>144324</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-28 04:05:52 -0700</bug_when>
    <thetext>Created attachment 144324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635107</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-28 04:06:48 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 144289 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144289&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:1127
&gt; &gt; +void CSSParser::parseSelectorWithDummyStyleSheet(const String&amp; string, CSSSelectorList&amp; selectorList)
&gt; &gt; +{
&gt; &gt; +    setDummyStyleSheet();
&gt; &gt; +    parseSelector(string, selectorList);
&gt; &gt;  }
&gt; 
&gt; Why does this case still need dummy stylesheet? Could you figure out how to get rid of it completely at least for selector parsing? I think it might be just matter of adding some null checks to code that deals with the stylesheet during the parsing.

Makes sense. Removed a dummy style sheet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635169</commentid>
    <comment_count>6</comment_count>
      <attachid>144324</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-05-28 06:26:22 -0700</bug_when>
    <thetext>Comment on attachment 144324
Patch

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

&gt; Source/WebCore/ChangeLog:83
&gt; +        - We do not need to construct a CSSParser every time. This patch caches
&gt; +        the CSSParser on Document, by which we can remove the CSSParser constructor
&gt; +        from querySelector() and querySelectorAll().

This may be problematic as we grab bunch of settings and state from the document on CSSParser construction. If those change the cached parser instance will need to be invalidated. The cached instance could also be used more widely than just querySelector.

I think this part should be done in a separate patch. Lets focus on avoiding dummy stylesheet construction here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635552</commentid>
    <comment_count>7</comment_count>
      <attachid>144437</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-28 21:13:53 -0700</bug_when>
    <thetext>Created attachment 144437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635553</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-28 21:15:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This may be problematic as we grab bunch of settings and state from the document on CSSParser construction. If those change the cached parser instance will need to be invalidated. The cached instance could also be used more widely than just querySelector.
&gt; 
&gt; I think this part should be done in a separate patch. Lets focus on avoiding dummy stylesheet construction here.

Makes sense. I&apos;ll do it in a separate patch with more investigation (Caching a CSSParser on Document is important since it improves performance by 30%~).

I uploaded a patch that just removes a dummy style sheet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635674</commentid>
    <comment_count>9</comment_count>
      <attachid>144437</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-05-29 00:42:37 -0700</bug_when>
    <thetext>Comment on attachment 144437
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:12
&gt; +        Performance tests: https://bugs.webkit.org/attachment.cgi?id=144288

You should add a version of the performance test to PerformanceTests/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635726</commentid>
    <comment_count>10</comment_count>
      <attachid>144437</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-29 01:43:58 -0700</bug_when>
    <thetext>Comment on attachment 144437
Patch

Clearing flags on attachment: 144437

Committed r118736: &lt;http://trac.webkit.org/changeset/118736&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635727</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-29 01:44:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636102</commentid>
    <comment_count>12</comment_count>
      <attachid>144437</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-29 09:22:19 -0700</bug_when>
    <thetext>Comment on attachment 144437
Patch

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

&gt; Source/WebCore/css/CSSGrammar.y:963
&gt;          if (p-&gt;m_styleSheet)
&gt; -            $$-&gt;setTag(QualifiedName(namespacePrefix, $2,
&gt; -                                      p-&gt;m_styleSheet-&gt;determineNamespace(namespacePrefix)));
&gt; -        else // FIXME: Shouldn&apos;t this case be an error?
&gt; -            $$-&gt;setTag(QualifiedName(nullAtom, $2, p-&gt;m_defaultNamespace));
&gt; +            $$-&gt;setTag(QualifiedName(namespacePrefix, $2, p-&gt;m_styleSheet-&gt;determineNamespace(namespacePrefix)));
&gt; +        else
&gt; +            $$-&gt;setTag(QualifiedName(namespacePrefix, $2, p-&gt;m_defaultNamespace));

A better way to factor this to avoid repeating an if statement three times is to make a CSSParser member function that does this same job. Something like this:

    $$-&gt;setTag(p-&gt;namespacedName(namespacePrefix, $4));

Not sure about the function name namespacedName, but with the right function name this would be a better factoring between CSSGrammar.y and CSSParser.h/cpp, which exists to provide helper functions like that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>144288</attachid>
            <date>2012-05-28 00:13:35 -0700</date>
            <delta_ts>2012-05-28 00:13:35 -0700</delta_ts>
            <desc>Performance tests</desc>
            <filename>dom_queryselector_dummysheet.html</filename>
            <type>text/html</type>
            <size>5100</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD48L2hlYWQ+CjxzY3JpcHQ+CmlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwoKZnVuY3Rpb24gcnVuKHRpdGxlLCByZXBlYXROdW0sIGZ1bmMpIHsKICB2YXIgcmVzdWx0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwoKICB2YXIgcm91bmRzID0gNTsKICB2
YXIgdGltZXMgPSBbXTsKICBmb3IgKHZhciByID0gMDsgciA8IHJvdW5kczsgcisrKSB7CiAgICB2
YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogICAgZnVuYyhyZXBlYXROdW0pOwogICAgdGltZXMucHVz
aChEYXRlLm5vdygpIC0gc3RhcnQpOwogIH0KCiAgdGltZXMuc29ydChmdW5jdGlvbiAoYSwgYikg
eyByZXR1cm4gYSAtIGI7IH0pOwogIHZhciBzdW0gPSAwLCBtaW4gPSAobmV3IERhdGUoMjAyMiwg
MTIsIDMxKSkuZ2V0VGltZSgpLCBtYXggPSAtMTsKICB2YXIgbWVkaWFuID0gdGltZXNbTWF0aC5m
bG9vcih0aW1lcy5sZW5ndGggLyAyKV07CiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aW1lcy5sZW5n
dGg7IGkrKykgewogICAgaWYgKG1pbiA+IHRpbWVzW2ldKQogICAgICBtaW4gPSB0aW1lc1tpXTsK
ICAgIGlmIChtYXggPCB0aW1lc1tpXSkKICAgICAgbWF4ID0gdGltZXNbaV07CiAgICBzdW0gKz0g
dGltZXNbaV07CiAgfQoKICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUodGl0bGUgKyAiIDogbWVhbj0iICsgKHN1bSAvIHJvdW5kcykudG9GaXhlZCgyKSArICJtcywg
bWluPSIgKyBtaW4gKyAibXMsIG1lZGlhbj0iICsgbWVkaWFuICsgIm1zLCBtYXg9IiArIG1heCAr
ICJtcyIpKTsKICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KSk7Cn0KCndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgdmFyIHJlcGVhdE51bSA9IDEw
MDAwOwogIHZhciBkdXBsaWNhdGVOdW0gPSAxMDAwOwoKICB2YXIgaCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImgxIik7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoKTsKICB2YXIgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgZGl2LmlkID0gImhlYWRJZCI7CiAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOwogIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogIGRpdi5jbGFzc05hbWUgPSAiaGVhZENsYXNzIjsKICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGRpdik7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkdXBsaWNhdGVOdW07
IGkrKykgewogICAgaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgyIik7CiAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGgpOwoKICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgZGl2LmlkID0gImR1cGxpY2F0ZWRJZCI7CiAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRpdik7CgogICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CiAgICBkaXYuY2xhc3NOYW1lID0gImR1cGxpY2F0ZWRDbGFzcyI7CiAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRpdik7CiAgfQogIGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMyIp
OwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaCk7CiAgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgZGl2LmlkID0gInRhaWxJZCI7CiAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkaXYpOwogIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIGRp
di5jbGFzc05hbWUgPSAidGFpbENsYXNzIjsKICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRp
dik7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2hlYWRJZCIpJywgcmVwZWF0TnVt
LCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVt
OyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2hlYWRJZCIpCiAgICB9CiAg
fSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2R1cGxpY2F0ZWRJZCIpJywgcmVw
ZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVw
ZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2R1cGxpY2F0ZWRJ
ZCIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RhaWxJZCIp
JywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBq
IDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RhaWxJ
ZCIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2hlYWRJ
ZCIpJywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAw
OyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgi
I2hlYWRJZCIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgi
I2R1cGxpY2F0ZWRJZCIpJywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWRJZCIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgiI3RhaWxJZCIpJywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXRO
dW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI3RhaWxJZCIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiaDEiKScsIHJlcGVhdE51bSwgZnVuY3Rpb24ocmVwZWF0TnVt
KSB7CiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlcGVhdE51bTsgaisrKSB7CiAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoImgxIikKICAgIH0KICB9KTsKCiAgcnVuKCdkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJoMiIpJywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiaDIiKQogICAgfQogIH0pOwoKICBydW4oJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImgzIiknLCByZXBlYXROdW0sIGZ1bmN0aW9uKHJlcGVhdE51bSkgewogICAgZm9yICh2YXIgaiA9
IDA7IGogPCByZXBlYXROdW07IGorKykgewogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJo
MyIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaDEiKScs
IHJlcGVhdE51bSwgZnVuY3Rpb24ocmVwZWF0TnVtKSB7CiAgICBmb3IgKHZhciBqID0gMDsgaiA8
IHJlcGVhdE51bTsgaisrKSB7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImgxIikK
ICAgIH0KICB9KTsKCiAgcnVuKCdkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJoMiIpJywgcmVw
ZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVw
ZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaDIiKQogICAg
fQogIH0pOwoKICBydW4oJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImgzIiknLCByZXBlYXRO
dW0sIGZ1bmN0aW9uKHJlcGVhdE51bSkgewogICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXBlYXRO
dW07IGorKykgewogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJoMyIpCiAgICB9CiAg
fSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmhlYWRDbGFzcyIpJywgcmVwZWF0
TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0
TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmhlYWRDbGFzcyIpCiAg
ICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmR1cGxpY2F0ZWRDbGFz
cyIpJywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAw
OyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmR1
cGxpY2F0ZWRDbGFzcyIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiLnRhaWxDbGFzcyIpJywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiLnRhaWxDbGFzcyIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgiLmhlYWRDbGFzcyIpJywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0p
IHsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgiLmhlYWRDbGFzcyIpCiAgICB9CiAgfSk7CgogIHJ1bignZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmR1cGxpY2F0ZWRDbGFzcyIpJywgcmVwZWF0TnVtLCBm
dW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBq
KyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmR1cGxpY2F0ZWRDbGFzcyIp
CiAgICB9CiAgfSk7CgogIHJ1bignZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnRhaWxDbGFz
cyIpJywgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAw
OyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgi
LnRhaWxDbGFzcyIpCiAgICB9CiAgfSk7Cn0KPC9zY3JpcHQ+Cjxib2R5Pgo8ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144289</attachid>
            <date>2012-05-28 00:15:19 -0700</date>
            <delta_ts>2012-05-28 04:05:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87627-20120528161518.patch</filename>
            <type>text/plain</type>
            <size>14353</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I4YzIxZWUyODJhNzA3
YzhmOWZhM2VkNGEyOTQ5NjczYmQ0MmMwNS4uOTllZDE3NTI4NmI3NGZlZmI2NDI4NWU2ZjcxNGNm
ODBhM2UyOWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxMi0wNS0yNyAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1BlcmZvcm1hbmNl
XSBPcHRpbWl6ZSBxdWVyeVNlbGVjdG9yKCkgYW5kIHF1ZXJ5U2VsZWN0b3JBbGwoKSBieSByZW1v
dmluZworICAgICAgICByZWR1bmRhbnQgZHVtbXkgc3R5bGUgc2hlZXQgY3JlYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
cm92ZXMgcGVyZm9ybWFuY2Ugb2YgcXVlcnlTZWxlY3RvcigiI2lkIikgYnkgNDAlIH4gNTAlCisg
ICAgICAgIGluIFNhZmFyaSBhbmQgQ2hyb21pdW0uCisKKyAgICAgICAgUGVyZm9ybWFuY2UgdGVz
dHM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTE0NDI4OAorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSB0ZXN0IHJlc3VsdHMgaW4gbXkgZGVza3RvcDoKKworICAg
ICAgICBbU2FmYXJpL01hY10KKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2hlYWRJ
ZCIpIDogICAgICAgICAgICAgICAxMy42MCBtcyA9PiAgIDkuMDAgbXMgICs1MS4xMSUKKyAgICAg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2R1cGxpY2F0ZWRJZCIpIDogICAgICAgICAxNC42
MCBtcyA9PiAgMTAuNDAgbXMgICs0MC4zOCUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiI3RhaWxJZCIpIDogICAgICAgICAgICAgICAxMy44MCBtcyA9PiAgIDkuMjAgbXMgICs1MC4w
MCUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2hlYWRJZCIpIDogICAgICAg
ICAgICAxNi4wMCBtcyA9PiAgMTEuODAgbXMgICszNS41OSUKKyAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWRJZCIpIDogICAgIDQ4NS42MCBtcyA9PiA0NzIuODAg
bXMgICsyLjcxJQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjdGFpbElkIikg
OiAgICAgICAgICAgIDE5LjQwIG1zID0+ICAxMy42MCBtcyAgKzQyLjY1JQorICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJoMSIpIDogICAgICAgICAgICAgICAgICAgIDEzLjgwIG1zID0+
ICAxMC4wMCBtcyAgKzM4LjAwJQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoMiIp
IDogICAgICAgICAgICAgICAgICAgIDE0LjQwIG1zID0+ICAxMC40MCBtcyAgKzM4LjQ2JQorICAg
ICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoMyIpIDogICAgICAgICAgICAgICAgICAgMzIx
LjQwIG1zID0+IDMwNC42MCBtcyAgKzUuNTIlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoImgxIikgOiAgICAgICAgICAgICAgICAzMjQuNDAgbXMgPT4gMzEzLjYwIG1zICArMy40
NCUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaDIiKSA6ICAgICAgICAgICAg
ICAgIDQzMS40MCBtcyA9PiA0MjcuMjAgbXMgICswLjk4JQorICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCJoMyIpIDogICAgICAgICAgICAgICAgMzMwLjYwIG1zID0+IDMxNi4yMCBt
cyAgKzQuNTUlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oZWFkQ2xhc3MiKSA6
ICAgICAgICAgICAgMTYuNDAgbXMgPT4gIDExLjYwIG1zICArNDEuMzglCisgICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoIi5kdXBsaWNhdGVkQ2xhc3MiKSA6ICAgICAgMTcuMDAgbXMgPT4g
IDEyLjQwIG1zICArMzcuMTAlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50YWls
Q2xhc3MiKSA6ICAgICAgICAgICAzODAuNDAgbXMgPT4gMzYyLjYwIG1zICArNC45MSUKKyAgICAg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmhlYWRDbGFzcyIpIDogICAgICAgIDM5Ny44
MCBtcyA9PiAzODAuMDAgbXMgICs0LjY4JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIuZHVwbGljYXRlZENsYXNzIikgOiAgNjA5LjIwIG1zID0+IDU5Ny40MCBtcyAgKzEuOTgl
CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi50YWlsQ2xhc3MiKSA6ICAgICAg
ICA0MTMuNjAgbXMgPT4gMzkzLjgwIG1zICArNS4wMyUKKworICAgICAgICBbQ2hyb21pdW0vTGlu
dXhdCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNoZWFkSWQiKSA6ICAgICAgICAg
ICAgICAgMTYuNDAgbXMgPT4gIDExLjAwIG1zICArNDkuMDklCisgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNkdXBsaWNhdGVkSWQiKSA6ICAgICAgICAgMTguODAgbXMgPT4gIDEyLjQw
IG1zICArNTEuNjElCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0YWlsSWQiKSA6
ICAgICAgICAgICAgICAgMTYuMjAgbXMgPT4gIDEwLjgwIG1zICArNTAuMDAlCisgICAgICAgIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNoZWFkSWQiKSA6ICAgICAgICAgICAgMzEuMDAgbXMg
PT4gIDIxLjAwIG1zICArNDcuNjIlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
IiNkdXBsaWNhdGVkSWQiKSA6ICAgICA1NjQuMjAgbXMgPT4gNDkwLjIwIG1zICArMTUuMTAlCisg
ICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN0YWlsSWQiKSA6ICAgICAgICAgICAg
NDcuMjAgbXMgPT4gIDIzLjAwIG1zICArMTA1LjIyJQorICAgICAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJoMSIpIDogICAgICAgICAgICAgICAgICAgIDE3LjAwIG1zID0+ICAxMS44MCBtcyAg
KzQ0LjA3JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoMiIpIDogICAgICAgICAg
ICAgICAgICAgIDE3LjQwIG1zID0+ICAxMi4yMCBtcyAgKzQyLjYyJQorICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJoMyIpIDogICAgICAgICAgICAgICAgICAgMjg3LjAwIG1zID0+IDI2
My4wMCBtcyAgKzkuMTMlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImgxIikg
OiAgICAgICAgICAgICAgICAzMTkuMDAgbXMgPT4gMzUwLjIwIG1zICAtOC45MSUKKyAgICAgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaDIiKSA6ICAgICAgICAgICAgICAgIDUwNi44MCBt
cyA9PiA0ODguMDAgbXMgICszLjg1JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCJoMyIpIDogICAgICAgICAgICAgICAgMzIyLjIwIG1zID0+IDMwNy44MCBtcyAgKzQuNjglCisg
ICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oZWFkQ2xhc3MiKSA6ICAgICAgICAgICAg
MTguNjAgbXMgPT4gIDEzLjQwIG1zICArMzguODElCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIi5kdXBsaWNhdGVkQ2xhc3MiKSA6ICAgICAgMTkuODAgbXMgPT4gIDE0LjIwIG1zICAr
MzkuNDQlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50YWlsQ2xhc3MiKSA6ICAg
ICAgICAgICAzNjMuMjAgbXMgPT4gMzM1LjAwIG1zICArOC40MiUKKyAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgiLmhlYWRDbGFzcyIpIDogICAgICAgIDQ1Mi4yMCBtcyA9PiAzNjIu
MjAgbXMgICsyNC44NSUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmR1cGxp
Y2F0ZWRDbGFzcyIpIDogIDU2NC44MCBtcyA9PiA1NTcuNDAgbXMgICsxLjMzJQorICAgICAgICBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIudGFpbENsYXNzIikgOiAgICAgICAgNDAwLjQwIG1z
ID0+IDM3NC4yMCBtcyAgKzcuMDAlCisKKyAgICAgICAgQ3VycmVudGx5IE5vZGU6OnF1ZXJ5U2Vs
ZWN0b3IoKSBhbmQgTm9kZTo6cXVlcnlTZWxlY3RvckFsbCgpIGhhcyB0aGUgZm9sbG93aW5nCisg
ICAgICAgIGNhbGwgcGF0aDoKKworICAgICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IE5vZGU6OnF1
ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
ICAgICAgICB7CisgICAgICAgICAgICBDU1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KCkpOyAvKiBi
b3R0bGVuZWNrICgxKSAqLworICAgICAgICAgICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0
b3JMaXN0OworICAgICAgICAgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBxdWVy
eVNlbGVjdG9yTGlzdCk7CisgICAgICAgICAgICAuLi47CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIENTU1BhcnNlcjo6cGFyc2VTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTU2Vs
ZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxT
dHlsZVNoZWV0SW50ZXJuYWw+IGR1bW15U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRJbnRlcm5hbDo6
Y3JlYXRlKCk7IC8qIGJvdHRsZW5lY2sgKDIpICovCisgICAgICAgICAgICBzZXRTdHlsZVNoZWV0
KGR1bW15U3R5bGVTaGVldC5nZXQoKSk7CisgICAgICAgICAgICAuLi47CisgICAgICAgIH0KKwor
ICAgICAgICBJJ3ZlIGZvdW5kIHRoYXQgJ0NTU1BhcnNlciBwYXJzZXIoZG9jdW1lbnQoKSknIGFu
ZCAnU3R5bGVTaGVldEludGVybmFsOjpjcmVhdGUoKScKKyAgICAgICAgYXJlIGJvdHRsZW5lY2tz
IG9mIHF1ZXJ5U2VsZWN0b3IoKSBhbmQgcXVlcnlTZWxlY3RvckFsbCgpLgorCisgICAgICAgIFdl
IGRvIG5vdCBuZWVkIHRvIGNvbnN0cnVjdCBhIENTU1BhcnNlciBhbmQgY3JlYXRlIGEgZHVtbXlT
dHlsZVNoZWV0IGV2ZXJ5IHRpbWUuCisgICAgICAgIEJ5IGNhY2hpbmcgdGhlIENTU1BhcnNlciB3
aXRoIGEgZHVtbXlTdHlsZVNoZWV0IG9uIERvY3VtZW50LCB3ZSBjYW4gcmVtb3ZlIHRoZQorICAg
ICAgICBDU1NQYXJzZXIgY29uc3RydWN0b3IgYW5kIGR1bW15U3R5bGVTaGVldCBjcmVhdGlvbiBm
cm9tIHRoZSBjYWxsIHBhdGggb2YKKyAgICAgICAgcXVlcnlTZWxlY3RvcigpIGFuZCBxdWVyeVNl
bGVjdG9yQWxsKCkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHBsaWVzIHRoZSBvcHRpbXphdGlv
biB0byBOb2RlOjpxdWVyeVNlbGVjdG9yKCksIE5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwoKSwKKyAg
ICAgICAgYW5kIENvbnRlbnRTZWxlY3RvclF1ZXJ5OjpDb250ZW50U2VsZWN0b3JRdWVyeSgpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9TZWxlY3RvckFQSS8qLiBObyBjaGFuZ2UgaW4gdGhl
IHRlc3QgcmVzdWx0cy4KKworICAgICAgICAqIGNzcy9DU1NQYWdlUnVsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KToKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c2V0RHVtbXlTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTZWxl
Y3RvcldpdGhEdW1teVN0eWxlU2hlZXQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
UnVsZTo6c2V0U2VsZWN0b3JUZXh0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhcnNlcldpdGhEdW1teVN0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRNYXRjaGVzU2VsZWN0b3Ip
OgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlbGVjdG9yUXVlcnk6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKwog
MjAxMi0wNS0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXaGVuIHBhZ2VzIGFyZSBsb2FkZWQgZnJvbSBBcHBDYWNoZSB3aXRoIERlZmVycmVkTG9h
ZGluZywgd2lsbFNlbmRSZXF1ZXN0KCkgaXMgbmV2ZXIgY2FsbGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
Z2VSdWxlLmNwcAppbmRleCA3MGJiYWI3YmExMDcxOTNiYmI4YzczNmM0Yjc4YTQ5MTUxOGVhYjg4
Li45OGZkYTFlNWM0MmRlY2VmYzNiMjZlMjgyMGJjNTcyMTE3YTYyYTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWdlUnVsZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBDU1NQYWdlUnVsZTo6c2V0
U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgc2VsZWN0b3JUZXh0KQogewogICAgIENTU1BhcnNl
ciBwYXJzZXIocGFyc2VyQ29udGV4dCgpKTsKICAgICBDU1NTZWxlY3Rvckxpc3Qgc2VsZWN0b3JM
aXN0OwotICAgIHBhcnNlci5wYXJzZVNlbGVjdG9yKHNlbGVjdG9yVGV4dCwgc2VsZWN0b3JMaXN0
KTsKKyAgICBwYXJzZXIucGFyc2VTZWxlY3RvcldpdGhEdW1teVN0eWxlU2hlZXQoc2VsZWN0b3JU
ZXh0LCBzZWxlY3Rvckxpc3QpOwogICAgIGlmICghc2VsZWN0b3JMaXN0LmZpcnN0KCkpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA3MjViYzI0NWViZjU5
Yzg0MjQ3NTJlZGM4YWMxMmZjZGY1NjcyZjBiLi5mNWFhNDZlMmU2YzVjMDg1MDNhN2E1YTE0Mjlk
YTQyNDRjZThiZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTEwMywxMCArMTEw
MywxNCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBj
b25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQ1NTUGFyc2VyOjpwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NTZWxl
Y3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKK3ZvaWQgQ1NTUGFyc2VyOjpzZXREdW1teVN0eWxlU2hl
ZXQoKQogewogICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IGR1bW15U3R5bGVTaGVldCA9
IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CiAgICAgc2V0U3R5bGVTaGVldChkdW1teVN0
eWxlU2hlZXQuZ2V0KCkpOworfQorCit2b2lkIENTU1BhcnNlcjo6cGFyc2VTZWxlY3Rvcihjb25z
dCBTdHJpbmcmIHN0cmluZywgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCit7CiAgICAg
bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yID0gJnNlbGVjdG9yTGlzdDsKIAogICAgIHNl
dHVwUGFyc2VyKCJALXdlYmtpdC1zZWxlY3RvcnsiLCBzdHJpbmcsICJ9Iik7CkBAIC0xMTE0LDkg
KzExMTgsMTIgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICBjc3N5eXBhcnNlKHRoaXMp
OwogCiAgICAgbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yID0gMDsKK30KIAotICAgIC8v
IFRoZSBzdHlsZSBzaGVldCB3aWxsIGJlIGRlbGV0ZWQgcmlnaHQgYXdheSwgc28gaXQgd29uJ3Qg
b3V0bGl2ZSB0aGUgZG9jdW1lbnQuCi0gICAgQVNTRVJUKGR1bW15U3R5bGVTaGVldC0+aGFzT25l
UmVmKCkpOwordm9pZCBDU1NQYXJzZXI6OnBhcnNlU2VsZWN0b3JXaXRoRHVtbXlTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKK3sK
KyAgICBzZXREdW1teVN0eWxlU2hlZXQoKTsKKyAgICBwYXJzZVNlbGVjdG9yKHN0cmluZywgc2Vs
ZWN0b3JMaXN0KTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oU3R5bGVQ
cm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBSZWZQdHI8Q1NT
U3R5bGVTb3VyY2VEYXRhPiogc3R5bGVTb3VyY2VEYXRhLCBTdHlsZVNoZWV0Q29udGVudHMqIGNv
bnRleHRTdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGY1MjM5NDQxMzdmZDFh
ZWUxOGI0YWY3YmQyMGZhOWJjYTIyOGVkZmMuLjcxZDA2ZTBmM2VlNDRlOTIzM2JjNjBmNmU4YmY4
NTc0ODFlNjg0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTE1Miw3ICsxNTIsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUqLCBkb3Vi
bGUqIGNvbG9yVmFsdWVzLCBib29sIHBhcnNlQWxwaGEpOwogICAgIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHBhcnNlQ29sb3IoQ1NTUGFyc2VyVmFsdWUqID0gMCk7CiAgICAgYm9vbCBw
YXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlKiwgUkdCQTMyJik7CisgICAgdm9pZCBz
ZXREdW1teVN0eWxlU2hlZXQoKTsKICAgICB2b2lkIHBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5n
JiwgQ1NTU2VsZWN0b3JMaXN0Jik7CisgICAgdm9pZCBwYXJzZVNlbGVjdG9yV2l0aER1bW15U3R5
bGVTaGVldChjb25zdCBTdHJpbmcmLCBDU1NTZWxlY3Rvckxpc3QmKTsKIAogICAgIHN0YXRpYyBi
b29sIGZhc3RQYXJzZUNvbG9yKFJHQkEzMiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAppbmRleCA1YTc4MDI2NGEwNGQwM2JkMjU4
MjZlZmM4ZDFmMTY3NzlmZjJiMWRkLi4xY2QxZTIzZTM2MTA0MTgyMDc2N2ZlZjU3ZTNlYjk2ZmM4
Y2ZmMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcApAQCAtOTMsNyArOTMsNyBA
QCB2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgc2VsZWN0
b3JUZXh0KQogewogICAgIENTU1BhcnNlciBwKHBhcnNlckNvbnRleHQoKSk7CiAgICAgQ1NTU2Vs
ZWN0b3JMaXN0IHNlbGVjdG9yTGlzdDsKLSAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JUZXh0
LCBzZWxlY3Rvckxpc3QpOworICAgIHAucGFyc2VTZWxlY3RvcldpdGhEdW1teVN0eWxlU2hlZXQo
c2VsZWN0b3JUZXh0LCBzZWxlY3Rvckxpc3QpOwogICAgIGlmICghc2VsZWN0b3JMaXN0LmZpcnN0
KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTQ0Nzhh
ODczZmI1YTk5YjI0ZDQ3NjgxMzU5ZjA0NDRlMGIzMWUwMC4uMDUyOTRiYWY1NjU0ZGE4OTYzM2Q2
ZTZmODViODdmODc5ZmI2ZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03MzEsNiAr
NzMxLDE1IEBAIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVBY2Nlc3NLZXlNYXAoKQogICAgIG1f
ZWxlbWVudHNCeUFjY2Vzc0tleS5jbGVhcigpOwogfQogCitDU1NQYXJzZXIqIERvY3VtZW50Ojpl
bnN1cmVDU1NQYXJzZXJXaXRoRHVtbXlTdHlsZVNoZWV0KCkKK3sKKyAgICBpZiAoIW1fY3NzUGFy
c2VyV2l0aER1bW15U3R5bGVTaGVldCkgeworICAgICAgICBtX2Nzc1BhcnNlcldpdGhEdW1teVN0
eWxlU2hlZXQgPSBhZG9wdFB0cihuZXcgQ1NTUGFyc2VyKHRoaXMpKTsKKyAgICAgICAgbV9jc3NQ
YXJzZXJXaXRoRHVtbXlTdHlsZVNoZWV0LT5zZXREdW1teVN0eWxlU2hlZXQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG1fY3NzUGFyc2VyV2l0aER1bW15U3R5bGVTaGVldC5nZXQoKTsKK30KKwogTWVk
aWFRdWVyeU1hdGNoZXIqIERvY3VtZW50OjptZWRpYVF1ZXJ5TWF0Y2hlcigpCiB7CiAgICAgaWYg
KCFtX21lZGlhUXVlcnlNYXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0M2M1ZjU3NzRj
ZTcwZjRkNTU3MWYwZTcxYTAwZWE4MGU4MzY4MTNhLi44NGNlZWJkODI1OTQ3YjhlZTg0ZTczNWRk
MmZkZTk4MGY5NzQ2MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjAsNiArNjAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgQXR0cjsKIGNs
YXNzIENEQVRBU2VjdGlvbjsKK2NsYXNzIENTU1BhcnNlcjsKIGNsYXNzIENTU1N0eWxlRGVjbGFy
YXRpb247CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsK
QEAgLTI2OSw2ICsyNzAsOCBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5QWNj
ZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGludmFsaWRhdGVBY2Nlc3NLZXlN
YXAoKTsKIAorICAgIENTU1BhcnNlciogZW5zdXJlQ1NTUGFyc2VyV2l0aER1bW15U3R5bGVTaGVl
dCgpOworCiAgICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBEb2N1bWVudAogCiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CkBAIC0xNTIyLDYgKzE1
MjUsOCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGlkRGlzcGF0Y2hW
aWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkOwogI2VuZGlmCisKKyAgICBPd25QdHI8Q1NTUGFyc2Vy
PiBtX2Nzc1BhcnNlcldpdGhEdW1teVN0eWxlU2hlZXQ7CiB9OwogCiAvLyBQdXQgdGhlc2UgbWV0
aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwg
YnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDg0MzFjYmJhMDhmMTQ3YjAxYThiNTUzNGFkMDJiMjM5YTM0ZDRiYzEuLmRjY2E4N2QyZWVk
N2E3YzMwNWJmMDRjODBiZjc0MWFlMTZlMDk3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTE3NTMsNyArMTc1Myw3IEBAIGJvb2wgRWxlbWVudDo6d2Via2l0TWF0Y2hlc1NlbGVjdG9yKGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENTU1BhcnNlckNv
bnRleHQgcGFyc2VyQ29udGV4dChkb2N1bWVudCgpKTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKHBh
cnNlckNvbnRleHQpOwogICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3Q7Ci0gICAgcGFy
c2VyLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3IsIHNlbGVjdG9yTGlzdCk7CisgICAgcGFyc2VyLnBh
cnNlU2VsZWN0b3JXaXRoRHVtbXlTdHlsZVNoZWV0KHNlbGVjdG9yLCBzZWxlY3Rvckxpc3QpOwog
CiAgICAgaWYgKCFzZWxlY3Rvckxpc3QuZmlyc3QoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggOWExZjVjMGIwN2FmZDc3YjQ4MTlmZWMwNDA5ZTNiYjMz
MzJmYzM3Ni4uMTkyZDlkMTMxMGMwODcwZDE3YTg3YjZhNTkwMjY4ZTc3ODE5ZWE3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMTY3OCw5ICsxNjc4LDkgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBOb2Rl
OjpxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJgog
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBD
U1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KCkpOworCiAgICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5
U2VsZWN0b3JMaXN0OwotICAgIHBhcnNlci5wYXJzZVNlbGVjdG9yKHNlbGVjdG9ycywgcXVlcnlT
ZWxlY3Rvckxpc3QpOworICAgIGRvY3VtZW50KCktPmVuc3VyZUNTU1BhcnNlcldpdGhEdW1teVN0
eWxlU2hlZXQoKS0+cGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIHF1ZXJ5U2VsZWN0b3JMaXN0KTsK
IAogICAgIGlmICghcXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSB8fCBxdWVyeVNlbGVjdG9yTGlz
dC5oYXNVbmtub3duUHNldWRvRWxlbWVudHMoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CkBAIC0xNzAzLDkgKzE3MDMsOSBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNl
bGVjdG9yQWxsKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25DbwogICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBDU1NQYXJzZXIg
cChkb2N1bWVudCgpKTsKKwogICAgIENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlzdDsK
LSAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBxdWVyeVNlbGVjdG9yTGlzdCk7CisgICAg
ZG9jdW1lbnQoKS0+ZW5zdXJlQ1NTUGFyc2VyV2l0aER1bW15U3R5bGVTaGVldCgpLT5wYXJzZVNl
bGVjdG9yKHNlbGVjdG9ycywgcXVlcnlTZWxlY3Rvckxpc3QpOwogCiAgICAgaWYgKCFxdWVyeVNl
bGVjdG9yTGlzdC5maXJzdCgpIHx8IHF1ZXJ5U2VsZWN0b3JMaXN0Lmhhc1Vua25vd25Qc2V1ZG9F
bGVtZW50cygpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAppbmRleCBmMTJjNTk5
MjVmN2M5MzI0ZjZmZWZjYmViMjIzNTg5NTdkZjIxMWYzLi41YzBiZTdjN2FkNjAwNzM0YjJiNzE2
NjNlYWVjMjdiY2ViNjM1ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCkBAIC00NSw4ICs0NSw3IEBAIENvbnRlbnRTZWxl
Y3RvclF1ZXJ5OjpDb250ZW50U2VsZWN0b3JRdWVyeShjb25zdCBJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDU1NQYXJzZXIgcGFy
c2VyKGluc2VydGlvblBvaW50LT5kb2N1bWVudCgpKTsKLSAgICBwYXJzZXIucGFyc2VTZWxlY3Rv
cihpbnNlcnRpb25Qb2ludC0+c2VsZWN0KCksIG1fc2VsZWN0b3JMaXN0KTsKKyAgICBpbnNlcnRp
b25Qb2ludC0+ZG9jdW1lbnQoKS0+ZW5zdXJlQ1NTUGFyc2VyV2l0aER1bW15U3R5bGVTaGVldCgp
LT5wYXJzZVNlbGVjdG9yKGluc2VydGlvblBvaW50LT5zZWxlY3QoKSwgbV9zZWxlY3Rvckxpc3Qp
OwogCiAgICAgbV9pc1ZhbGlkU2VsZWN0b3IgPSBDb250ZW50U2VsZWN0b3JRdWVyeTo6dmFsaWRh
dGVTZWxlY3Rvckxpc3QoKTsKICAgICBpZiAobV9pc1ZhbGlkU2VsZWN0b3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144324</attachid>
            <date>2012-05-28 04:05:52 -0700</date>
            <delta_ts>2012-05-28 21:13:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87627-20120528200551.patch</filename>
            <type>text/plain</type>
            <size>13178</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I4YzIxZWUyODJhNzA3
YzhmOWZhM2VkNGEyOTQ5NjczYmQ0MmMwNS4uMTZhZjVlYjlhODc4M2UwN2RlYWI2ZWFiM2JhYzA2
YzFmOTdkNGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wNS0yNyAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1BlcmZvcm1hbmNl
XSBPcHRpbWl6ZSBxdWVyeVNlbGVjdG9yKCkgYW5kIHF1ZXJ5U2VsZWN0b3JBbGwoKSBieSByZW1v
dmluZworICAgICAgICByZWR1bmRhbnQgZHVtbXkgc3R5bGUgc2hlZXQgY3JlYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
cm92ZXMgcGVyZm9ybWFuY2Ugb2YgcXVlcnlTZWxlY3RvcigiI2lkIikgYnkgNDAlIH4gNTAlCisg
ICAgICAgIGluIFNhZmFyaSBhbmQgQ2hyb21pdW0uCisKKyAgICAgICAgUGVyZm9ybWFuY2UgdGVz
dHM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTE0NDI4OAorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSB0ZXN0IHJlc3VsdHMgaW4gbXkgZGVza3RvcDoKKworICAg
ICAgICBbU2FmYXJpL01hY10KKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2hlYWRJ
ZCIpIDogICAgICAgICAgICAgICAxMy42MCBtcyA9PiAgIDkuMDAgbXMgICs1MS4xMSUKKyAgICAg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2R1cGxpY2F0ZWRJZCIpIDogICAgICAgICAxNC42
MCBtcyA9PiAgMTAuNDAgbXMgICs0MC4zOCUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiI3RhaWxJZCIpIDogICAgICAgICAgICAgICAxMy44MCBtcyA9PiAgIDkuMjAgbXMgICs1MC4w
MCUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2hlYWRJZCIpIDogICAgICAg
ICAgICAxNi4wMCBtcyA9PiAgMTEuODAgbXMgICszNS41OSUKKyAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWRJZCIpIDogICAgIDQ4NS42MCBtcyA9PiA0NzIuODAg
bXMgICsyLjcxJQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjdGFpbElkIikg
OiAgICAgICAgICAgIDE5LjQwIG1zID0+ICAxMy42MCBtcyAgKzQyLjY1JQorICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJoMSIpIDogICAgICAgICAgICAgICAgICAgIDEzLjgwIG1zID0+
ICAxMC4wMCBtcyAgKzM4LjAwJQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoMiIp
IDogICAgICAgICAgICAgICAgICAgIDE0LjQwIG1zID0+ICAxMC40MCBtcyAgKzM4LjQ2JQorICAg
ICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoMyIpIDogICAgICAgICAgICAgICAgICAgMzIx
LjQwIG1zID0+IDMwNC42MCBtcyAgKzUuNTIlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoImgxIikgOiAgICAgICAgICAgICAgICAzMjQuNDAgbXMgPT4gMzEzLjYwIG1zICArMy40
NCUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaDIiKSA6ICAgICAgICAgICAg
ICAgIDQzMS40MCBtcyA9PiA0MjcuMjAgbXMgICswLjk4JQorICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCJoMyIpIDogICAgICAgICAgICAgICAgMzMwLjYwIG1zID0+IDMxNi4yMCBt
cyAgKzQuNTUlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oZWFkQ2xhc3MiKSA6
ICAgICAgICAgICAgMTYuNDAgbXMgPT4gIDExLjYwIG1zICArNDEuMzglCisgICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoIi5kdXBsaWNhdGVkQ2xhc3MiKSA6ICAgICAgMTcuMDAgbXMgPT4g
IDEyLjQwIG1zICArMzcuMTAlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50YWls
Q2xhc3MiKSA6ICAgICAgICAgICAzODAuNDAgbXMgPT4gMzYyLjYwIG1zICArNC45MSUKKyAgICAg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmhlYWRDbGFzcyIpIDogICAgICAgIDM5Ny44
MCBtcyA9PiAzODAuMDAgbXMgICs0LjY4JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIuZHVwbGljYXRlZENsYXNzIikgOiAgNjA5LjIwIG1zID0+IDU5Ny40MCBtcyAgKzEuOTgl
CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi50YWlsQ2xhc3MiKSA6ICAgICAg
ICA0MTMuNjAgbXMgPT4gMzkzLjgwIG1zICArNS4wMyUKKworICAgICAgICBbQ2hyb21pdW0vTGlu
dXhdCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNoZWFkSWQiKSA6ICAgICAgICAg
ICAgICAgMTYuNDAgbXMgPT4gIDExLjAwIG1zICArNDkuMDklCisgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNkdXBsaWNhdGVkSWQiKSA6ICAgICAgICAgMTguODAgbXMgPT4gIDEyLjQw
IG1zICArNTEuNjElCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0YWlsSWQiKSA6
ICAgICAgICAgICAgICAgMTYuMjAgbXMgPT4gIDEwLjgwIG1zICArNTAuMDAlCisgICAgICAgIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNoZWFkSWQiKSA6ICAgICAgICAgICAgMzEuMDAgbXMg
PT4gIDIxLjAwIG1zICArNDcuNjIlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
IiNkdXBsaWNhdGVkSWQiKSA6ICAgICA1NjQuMjAgbXMgPT4gNDkwLjIwIG1zICArMTUuMTAlCisg
ICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN0YWlsSWQiKSA6ICAgICAgICAgICAg
NDcuMjAgbXMgPT4gIDIzLjAwIG1zICArMTA1LjIyJQorICAgICAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJoMSIpIDogICAgICAgICAgICAgICAgICAgIDE3LjAwIG1zID0+ICAxMS44MCBtcyAg
KzQ0LjA3JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoMiIpIDogICAgICAgICAg
ICAgICAgICAgIDE3LjQwIG1zID0+ICAxMi4yMCBtcyAgKzQyLjYyJQorICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJoMyIpIDogICAgICAgICAgICAgICAgICAgMjg3LjAwIG1zID0+IDI2
My4wMCBtcyAgKzkuMTMlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImgxIikg
OiAgICAgICAgICAgICAgICAzMTkuMDAgbXMgPT4gMzUwLjIwIG1zICAtOC45MSUKKyAgICAgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaDIiKSA6ICAgICAgICAgICAgICAgIDUwNi44MCBt
cyA9PiA0ODguMDAgbXMgICszLjg1JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCJoMyIpIDogICAgICAgICAgICAgICAgMzIyLjIwIG1zID0+IDMwNy44MCBtcyAgKzQuNjglCisg
ICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oZWFkQ2xhc3MiKSA6ICAgICAgICAgICAg
MTguNjAgbXMgPT4gIDEzLjQwIG1zICArMzguODElCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIi5kdXBsaWNhdGVkQ2xhc3MiKSA6ICAgICAgMTkuODAgbXMgPT4gIDE0LjIwIG1zICAr
MzkuNDQlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50YWlsQ2xhc3MiKSA6ICAg
ICAgICAgICAzNjMuMjAgbXMgPT4gMzM1LjAwIG1zICArOC40MiUKKyAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgiLmhlYWRDbGFzcyIpIDogICAgICAgIDQ1Mi4yMCBtcyA9PiAzNjIu
MjAgbXMgICsyNC44NSUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmR1cGxp
Y2F0ZWRDbGFzcyIpIDogIDU2NC44MCBtcyA9PiA1NTcuNDAgbXMgICsxLjMzJQorICAgICAgICBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIudGFpbENsYXNzIikgOiAgICAgICAgNDAwLjQwIG1z
ID0+IDM3NC4yMCBtcyAgKzcuMDAlCisKKyAgICAgICAgQ3VycmVudGx5IE5vZGU6OnF1ZXJ5U2Vs
ZWN0b3IoKSBhbmQgTm9kZTo6cXVlcnlTZWxlY3RvckFsbCgpIGhhcyB0aGUgZm9sbG93aW5nCisg
ICAgICAgIGNhbGwgcGF0aDoKKworICAgICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IE5vZGU6OnF1
ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
ICAgICAgICB7CisgICAgICAgICAgICBDU1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KCkpOyAvKiBi
b3R0bGVuZWNrICgxKSAqLworICAgICAgICAgICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0
b3JMaXN0OworICAgICAgICAgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBxdWVy
eVNlbGVjdG9yTGlzdCk7CisgICAgICAgICAgICAuLi47CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIENTU1BhcnNlcjo6cGFyc2VTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTU2Vs
ZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxT
dHlsZVNoZWV0SW50ZXJuYWw+IGR1bW15U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRJbnRlcm5hbDo6
Y3JlYXRlKCk7IC8qIGJvdHRsZW5lY2sgKDIpICovCisgICAgICAgICAgICBzZXRTdHlsZVNoZWV0
KGR1bW15U3R5bGVTaGVldC5nZXQoKSk7CisgICAgICAgICAgICAuLi47CisgICAgICAgIH0KKwor
ICAgICAgICBJJ3ZlIGZvdW5kIHRoYXQgJ0NTU1BhcnNlciBwYXJzZXIoZG9jdW1lbnQoKSknIGFu
ZCAnU3R5bGVTaGVldEludGVybmFsOjpjcmVhdGUoKScKKyAgICAgICAgYXJlIGJvdHRsZW5lY2tz
IG9mIHF1ZXJ5U2VsZWN0b3IoKSBhbmQgcXVlcnlTZWxlY3RvckFsbCgpLgorCisgICAgICAgIC0g
VGhpcyBwYXRjaCByZW1vdmVzIGEgZHVtbXkgc3R5bGUgc2hlZXQuIFByZXZpb3VzbHkgdGhlIGR1
bW15IHN0eWxlIHNoZWV0CisgICAgICAgIHdhcyBuZWVkZWQgdG8gYXZvaWQgbnVsbCBjaGVja3Mg
b2YgbV9zdHlsZVNoZWV0IGluIENTU0dyYW1tZXIueS4KKyAgICAgICAgVGhpcyBwYXRjaCBmaXhl
cyBDU1NHcmFtbWVyLnkgc28gdGhhdCBpdCB3b3JrcyBmaW5lIHdpdGggYSBudWxsIG1fc3R5bGVT
aGVldC4KKworICAgICAgICAtIFdlIGRvIG5vdCBuZWVkIHRvIGNvbnN0cnVjdCBhIENTU1BhcnNl
ciBldmVyeSB0aW1lLiBUaGlzIHBhdGNoIGNhY2hlcworICAgICAgICB0aGUgQ1NTUGFyc2VyIG9u
IERvY3VtZW50LCBieSB3aGljaCB3ZSBjYW4gcmVtb3ZlIHRoZSBDU1NQYXJzZXIgY29uc3RydWN0
b3IKKyAgICAgICAgZnJvbSBxdWVyeVNlbGVjdG9yKCkgYW5kIHF1ZXJ5U2VsZWN0b3JBbGwoKS4K
KworICAgICAgICBUZXN0czogZmFzdC9kb20vU2VsZWN0b3JBUEkvKi4gTm8gY2hhbmdlIGluIHRo
ZSB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNl
bGVjdG9yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmVuc3VyZUNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRG9jdW1lbnQp
OgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlbGVjdG9yUXVlcnk6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKwog
MjAxMi0wNS0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXaGVuIHBhZ2VzIGFyZSBsb2FkZWQgZnJvbSBBcHBDYWNoZSB3aXRoIERlZmVycmVkTG9h
ZGluZywgd2lsbFNlbmRSZXF1ZXN0KCkgaXMgbmV2ZXIgY2FsbGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueQppbmRleCBiNjE2ODg1OGUxYmI4MmVhNmY5MzJkNGE5ZDY2MjlmZmE5NmU2Y2FhLi42NzM2
MzgzMjlhODJiZDkyYWMyY2EwMDZkN2Q3ZjQ0ZmY0NjUwZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKQEAgLTk1OCwxMCArOTU4LDkgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgICAgICBDU1NQ
YXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9
IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgaWYgKHAtPm1fc3R5bGVTaGVl
dCkKLSAgICAgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgs
ICQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5tX3N0eWxlU2hl
ZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpKSk7Ci0gICAgICAgIGVsc2Ug
Ly8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGNhc2UgYmUgYW4gZXJyb3I/Ci0gICAgICAgICAgICAk
JC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQyLCBwLT5tX2RlZmF1bHROYW1lc3Bh
Y2UpKTsKKyAgICAgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVm
aXgsICQyLCBwLT5tX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVm
aXgpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFt
ZShuYW1lc3BhY2VQcmVmaXgsICQyLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKICAgICB9CiAg
ICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAg
ICAgICAgJCQgPSAkMzsKQEAgLTEwOTAsMTYgKzEwODksMjAgQEAgYXR0cmliOgogICAgICAgICBB
dG9taWNTdHJpbmcgbmFtZXNwYWNlUHJlZml4ID0gJDM7CiAgICAgICAgIENTU1BhcnNlciogcCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5h
bWUobmFtZXNwYWNlUHJlZml4LCAkNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcC0+bV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSkp
OworICAgICAgICBpZiAocC0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgICAgJCQtPnNldEF0dHJp
YnV0ZShRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwgJDQsIHAtPm1fc3R5bGVTaGVldC0+
ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwg
JDQsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwogICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2Vs
ZWN0b3I6OlNldCk7CiAgICAgfQogICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxl
Y3RvciBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3Nw
YWNlICddJyB7CiAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSAkMzsKICAg
ICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAg
ICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRB
dHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsICQ0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwLT5tX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFj
ZShuYW1lc3BhY2VQcmVmaXgpKSk7CisgICAgICAgIGlmIChwLT5tX3N0eWxlU2hlZXQpCisgICAg
ICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCAk
NCwgcC0+bV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5h
bWUobmFtZXNwYWNlUHJlZml4LCAkNCwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7CiAgICAgICAg
ICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ1KTsKICAgICAgICAgJCQtPnNldFZh
bHVlKCQ3KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDcyNWJjMjQ1ZWJm
NTljODQyNDc1MmVkYzhhYzEyZmNkZjU2NzJmMGIuLmU2ZDUzNzUwOWYzYzMzYjQ3MWZlM2U0NmEx
MDgxZTNlYzFhM2YxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMTA1LDggKzEx
MDUsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBj
b25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqCiAKIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZVNl
bGVjdG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlz
dCkKIHsKLSAgICBSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBkdW1teVN0eWxlU2hlZXQgPSBT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOwotICAgIHNldFN0eWxlU2hlZXQoZHVtbXlTdHls
ZVNoZWV0LmdldCgpKTsKICAgICBtX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IgPSAmc2Vs
ZWN0b3JMaXN0OwogCiAgICAgc2V0dXBQYXJzZXIoIkAtd2Via2l0LXNlbGVjdG9yeyIsIHN0cmlu
ZywgIn0iKTsKQEAgLTExMTQsOSArMTExMiw2IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZVNlbGVj
dG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAg
ICAgY3NzeXlwYXJzZSh0aGlzKTsKIAogICAgIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3Rv
ciA9IDA7Ci0KLSAgICAvLyBUaGUgc3R5bGUgc2hlZXQgd2lsbCBiZSBkZWxldGVkIHJpZ2h0IGF3
YXksIHNvIGl0IHdvbid0IG91dGxpdmUgdGhlIGRvY3VtZW50LgotICAgIEFTU0VSVChkdW1teVN0
eWxlU2hlZXQtPmhhc09uZVJlZigpKTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFy
YXRpb24oU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiogc3R5bGVTb3VyY2VEYXRhLCBTdHlsZVNoZWV0
Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
OTQ0NzhhODczZmI1YTk5YjI0ZDQ3NjgxMzU5ZjA0NDRlMGIzMWUwMC4uNGUyNWFjODg2ZDRkODQ5
ZDNiODhkZDkwY2EyMmNkNTA1YWQwZWU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03
MzEsNiArNzMxLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVBY2Nlc3NLZXlNYXAoKQog
ICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5jbGVhcigpOwogfQogCitDU1NQYXJzZXIqIERvY3Vt
ZW50OjplbnN1cmVDU1NQYXJzZXIoKQoreworICAgIGlmICghbV9jc3NQYXJzZXIpCisgICAgICAg
IG1fY3NzUGFyc2VyID0gYWRvcHRQdHIobmV3IENTU1BhcnNlcih0aGlzKSk7CisgICAgcmV0dXJu
IG1fY3NzUGFyc2VyLmdldCgpOworfQorCiBNZWRpYVF1ZXJ5TWF0Y2hlciogRG9jdW1lbnQ6Om1l
ZGlhUXVlcnlNYXRjaGVyKCkKIHsKICAgICBpZiAoIW1fbWVkaWFRdWVyeU1hdGNoZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDQzYzVmNTc3NGNlNzBmNGQ1NTcxZjBlNzFhMDBlYTgwZTgzNjgx
M2EuLmMyNGUxMjRiY2Q2YjFhMTBjYTkxZDUyM2VjOTE5ODZjMzNhYzk3NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFY
T2JqZWN0Q2FjaGU7CiBjbGFzcyBBdHRyOwogY2xhc3MgQ0RBVEFTZWN0aW9uOworY2xhc3MgQ1NT
UGFyc2VyOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7
CiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwpAQCAtMjY5LDYgKzI3MCw4IEBAIHB1YmxpYzoK
ICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZUFjY2Vzc0tleU1hcCgpOwogCisgICAgQ1NTUGFyc2VyKiBlbnN1
cmVDU1NQYXJzZXIoKTsKKwogICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgRG9j
dW1lbnQKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwpAQCAt
MTUyMiw2ICsxNTI1LDggQEAgcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2Rp
ZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZDsKICNlbmRpZgorCisgICAgT3duUHRy
PENTU1BhcnNlcj4gbV9jc3NQYXJzZXI7CiB9OwogCiAvLyBQdXQgdGhlc2UgbWV0aG9kcyBoZXJl
LCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0IHdlIHJl
YWxseSB3YW50IHRvIGlubGluZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDlhMWY1YzBiMDdh
ZmQ3N2I0ODE5ZmVjMDQwOWUzYmIzMzMyZmMzNzYuLjc2MTJiZTc3NmJjNTcxZGNhYzJmM2JlOTBj
MzlhY2JjYzRhNWVkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE2NzgsOSArMTY3OCw5IEBAIFBh
c3NSZWZQdHI8RWxlbWVudD4gTm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVj
dG9ycywgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCgpKTsKKwogICAg
IENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlzdDsKLSAgICBwYXJzZXIucGFyc2VTZWxl
Y3RvcihzZWxlY3RvcnMsIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKKyAgICBkb2N1bWVudCgpLT5lbnN1
cmVDU1NQYXJzZXIoKS0+cGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIHF1ZXJ5U2VsZWN0b3JMaXN0
KTsKIAogICAgIGlmICghcXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSB8fCBxdWVyeVNlbGVjdG9y
TGlzdC5oYXNVbmtub3duUHNldWRvRWxlbWVudHMoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CkBAIC0xNzAzLDkgKzE3MDMsOSBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVy
eVNlbGVjdG9yQWxsKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25DbwogICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBDU1NQYXJz
ZXIgcChkb2N1bWVudCgpKTsKKwogICAgIENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlz
dDsKLSAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBxdWVyeVNlbGVjdG9yTGlzdCk7Cisg
ICAgZG9jdW1lbnQoKS0+ZW5zdXJlQ1NTUGFyc2VyKCktPnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3Jz
LCBxdWVyeVNlbGVjdG9yTGlzdCk7CiAKICAgICBpZiAoIXF1ZXJ5U2VsZWN0b3JMaXN0LmZpcnN0
KCkgfHwgcXVlcnlTZWxlY3Rvckxpc3QuaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCkpIHsKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCmluZGV4IGYxMmM1OTkyNWY3YzkzMjRmNmZlZmNi
ZWIyMjM1ODk1N2RmMjExZjMuLmQ4YTczZmY2M2QzMTQ1OWE5ZDM2NzU0NzcxYzJmZWU3YjM2NDlm
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0
b3JRdWVyeS5jcHAKQEAgLTQ1LDggKzQ1LDcgQEAgQ29udGVudFNlbGVjdG9yUXVlcnk6OkNvbnRl
bnRTZWxlY3RvclF1ZXJ5KGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENTU1BhcnNlciBwYXJzZXIoaW5zZXJ0aW9uUG9p
bnQtPmRvY3VtZW50KCkpOwotICAgIHBhcnNlci5wYXJzZVNlbGVjdG9yKGluc2VydGlvblBvaW50
LT5zZWxlY3QoKSwgbV9zZWxlY3Rvckxpc3QpOworICAgIGluc2VydGlvblBvaW50LT5kb2N1bWVu
dCgpLT5lbnN1cmVDU1NQYXJzZXIoKS0+cGFyc2VTZWxlY3RvcihpbnNlcnRpb25Qb2ludC0+c2Vs
ZWN0KCksIG1fc2VsZWN0b3JMaXN0KTsKIAogICAgIG1faXNWYWxpZFNlbGVjdG9yID0gQ29udGVu
dFNlbGVjdG9yUXVlcnk6OnZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CiAgICAgaWYgKG1faXNWYWxp
ZFNlbGVjdG9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144437</attachid>
            <date>2012-05-28 21:13:53 -0700</date>
            <delta_ts>2012-05-29 09:22:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87627-20120529131352.patch</filename>
            <type>text/plain</type>
            <size>8567</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVlOGFiNzhkYmFiYWM5
Y2JiZjk0MDNlY2RjYTFmNGNmZmZiYjNmYy4uYTBmNTY0MTFhMGRhMGViZjI0ZmY5MWQ5ZGY3MzA2
N2JhNDYzYzI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEyLTA1LTI3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUGVyZm9ybWFuY2Vd
IE9wdGltaXplIHF1ZXJ5U2VsZWN0b3IoKSBhbmQgcXVlcnlTZWxlY3RvckFsbCgpIGJ5IHJlbW92
aW5nCisgICAgICAgIHJlZHVuZGFudCBkdW1teSBzdHlsZSBzaGVldCBjcmVhdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NjI3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBy
b3ZlcyBwZXJmb3JtYW5jZSBvZiBxdWVyeVNlbGVjdG9yKCIjaWQiKSBieSA0LjIlIH4gMTcuNyUK
KyAgICAgICAgaW4gU2FmYXJpIGFuZCBDaHJvbWl1bS4KKworICAgICAgICBQZXJmb3JtYW5jZSB0
ZXN0czogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MTQ0Mjg4CisK
KyAgICAgICAgVGhlIHBlcmZvcm1hbmNlIHRlc3QgcmVzdWx0cyBpbiBteSBkZXNrdG9wOgorCisg
ICAgICAgIFtTYWZhcmkvTWFjXQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaGVh
ZElkIikgOiAgICAgICAgICAgICAgIDEzLjYwIG1zID0+ICAxMi40MCBtcyAgKzkuNjglCisgICAg
ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNkdXBsaWNhdGVkSWQiKSA6ICAgICAgICAgMTQu
ODAgbXMgPT4gIDE0LjIwIG1zICArNC4yMyUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiI3RhaWxJZCIpIDogICAgICAgICAgICAgICAxMy44MCBtcyA9PiAgMTIuMjAgbXMgICsxMy4x
MSUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2hlYWRJZCIpIDogICAgICAg
ICAgICAxNy44MCBtcyA9PiAgMTQuNjAgbXMgICsyMS45MiUKKyAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWRJZCIpIDogICAgIDUxMy44MCBtcyA9PiA0NzEuNjAg
bXMgICs4Ljk1JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjdGFpbElkIikg
OiAgICAgICAgICAgIDE5LjIwIG1zID0+ICAxNi40MCBtcyAgKzE3LjA3JQorICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJoMSIpIDogICAgICAgICAgICAgICAgICAgIDE0LjQwIG1zID0+
ICAxMy42MCBtcyAgKzUuODglCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImgyIikg
OiAgICAgICAgICAgICAgICAgICAgMTQuODAgbXMgPT4gIDEzLjgwIG1zICArNy4yNSUKKyAgICAg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaDMiKSA6ICAgICAgICAgICAgICAgICAgIDMxMi4w
MCBtcyA9PiAzMDYuNjAgbXMgICsxLjc2JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCJoMSIpIDogICAgICAgICAgICAgICAgMzIyLjAwIG1zID0+IDMxNC42MCBtcyAgKzIuMzUl
CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImgyIikgOiAgICAgICAgICAgICAg
ICA0ODEuMDAgbXMgPT4gNDIwLjYwIG1zICArMTQuMzYlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoImgzIikgOiAgICAgICAgICAgICAgICAzMjYuODAgbXMgPT4gMzE1LjgwIG1z
ICArMy40OCUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmhlYWRDbGFzcyIpIDog
ICAgICAgICAgICAxNi4yMCBtcyA9PiAgMTUuNDAgbXMgICs1LjE5JQorICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCIuZHVwbGljYXRlZENsYXNzIikgOiAgICAgIDE3LjAwIG1zID0+ICAx
NS40MCBtcyAgKzEwLjM5JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudGFpbENs
YXNzIikgOiAgICAgICAgICAgMzY5LjYwIG1zID0+IDM2Mi42MCBtcyAgKzEuOTMlCisgICAgICAg
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5oZWFkQ2xhc3MiKSA6ICAgICAgICAzODguMjAg
bXMgPT4gMzc3LjYwIG1zICArMi44MSUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgiLmR1cGxpY2F0ZWRDbGFzcyIpIDogIDYwNS4wMCBtcyA9PiA1ODEuMjAgbXMgICs0LjA5JQor
ICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIudGFpbENsYXNzIikgOiAgICAgICAg
NDAxLjYwIG1zID0+IDM5MS40MCBtcyAgKzIuNjElCisKKyAgICAgICAgW0Nocm9taXVtL0xpbnV4
XQorICAgICAgICBvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNoZWFkSWQiKSA6ICAgICAgICAgICAg
ICAgIDE2LjAwIG1zID0+ICAxMy42MCBtcyAgKzE3LjY1JQorICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCIjZHVwbGljYXRlZElkIikgOiAgICAgICAgIDE2LjgwIG1zID0+ICAxNS40MCBt
cyAgKzkuMDklCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0YWlsSWQiKSA6ICAg
ICAgICAgICAgICAgMTYuMDAgbXMgPT4gIDEzLjYwIG1zICArMTcuNjUlCisgICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNoZWFkSWQiKSA6ICAgICAgICAgICAgMjkuMDAgbXMgPT4g
IDI1LjAwIG1zICArMTYuMDAlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNk
dXBsaWNhdGVkSWQiKSA6ICAgICA1NjEuNDAgbXMgPT4gNTA1LjIwIG1zICArMTEuMTIlCisgICAg
ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN0YWlsSWQiKSA6ICAgICAgICAgICAgMzQu
MDAgbXMgPT4gIDI2LjgwIG1zICArMjYuODclCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoImgxIikgOiAgICAgICAgICAgICAgICAgICAgMTguMjAgbXMgPT4gIDE1LjgwIG1zICArMTUu
MTklCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImgyIikgOiAgICAgICAgICAgICAg
ICAgICAgMTkuMDAgbXMgPT4gIDE2LjYwIG1zICArMTQuNDYlCisgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoImgzIikgOiAgICAgICAgICAgICAgICAgICAyODAuNDAgbXMgPT4gMjc0LjAw
IG1zICArMi4zNCUKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaDEiKSA6ICAg
ICAgICAgICAgICAgIDMwMC4yMCBtcyA9PiAzNjUuMjAgbXMgIC0xNy44MCUKKyAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaDIiKSA6ICAgICAgICAgICAgICAgIDQ4Ny42MCBtcyA9
PiA1MDQuMjAgbXMgIC0zLjI5JQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJo
MyIpIDogICAgICAgICAgICAgICAgMzQ5LjQwIG1zID0+IDMyNC4wMCBtcyAgKzcuODQlCisgICAg
ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oZWFkQ2xhc3MiKSA6ICAgICAgICAgICAgMTgu
NDAgbXMgPT4gIDE2LjAwIG1zICArMTUuMDAlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIi5kdXBsaWNhdGVkQ2xhc3MiKSA6ICAgICAgMTkuNDAgbXMgPT4gIDE2LjIwIG1zICArMTku
NzUlCisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50YWlsQ2xhc3MiKSA6ICAgICAg
ICAgICAzNDkuNjAgbXMgPT4gMzQ1LjQwIG1zICArMS4yMiUKKyAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgiLmhlYWRDbGFzcyIpIDogICAgICAgIDM4Mi44MCBtcyA9PiAzNzguMjAg
bXMgICsxLjIyJQorICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuZHVwbGljYXRl
ZENsYXNzIikgOiAgNTUwLjgwIG1zID0+IDU3NC4yMCBtcyAgLTQuMDglCisgICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi50YWlsQ2xhc3MiKSA6ICAgICAgICAzODEuMDAgbXMgPT4g
Mzg3LjAwIG1zICAtMS41NSUKKworICAgICAgICBJJ3ZlIGZvdW5kIHRoYXQgU3R5bGVTaGVldElu
dGVybmFsOjpjcmVhdGUoKSBpbiBDU1NQYXJzZXI6OnBhcnNlU2VsZWN0b3IoKQorICAgICAgICBp
cyBhIGJvdHRsZW5lY2sgb2YgcXVlcnlTZWxlY3RvcigpIGFuZCBxdWVyeVNlbGVjdG9yQWxsKCku
CisKKyAgICAgICAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQorICAgICAgICB7CisgICAgICAg
ICAgICBSZWZQdHI8U3R5bGVTaGVldEludGVybmFsPiBkdW1teVN0eWxlU2hlZXQgPSBTdHlsZVNo
ZWV0SW50ZXJuYWw6OmNyZWF0ZSgpOworICAgICAgICAgICAgc2V0U3R5bGVTaGVldChkdW1teVN0
eWxlU2hlZXQuZ2V0KCkpOworICAgICAgICAgICAgLi4uOworICAgICAgICB9CisKKyAgICAgICAg
VGhpcyBwYXRjaCByZW1vdmVzIGEgZHVtbXkgc3R5bGUgc2hlZXQuIFByZXZpb3VzbHkgdGhlIGR1
bW15IHN0eWxlIHNoZWV0CisgICAgICAgIHdhcyBuZWVkZWQgdG8gYXZvaWQgbnVsbCBjaGVja3Mg
b2YgbV9zdHlsZVNoZWV0IGluIENTU0dyYW1tZXIueS4KKyAgICAgICAgVGhpcyBwYXRjaCBmaXhl
cyBDU1NHcmFtbWVyLnkgc28gdGhhdCBpdCB3b3JrcyBmaW5lIHdpdGggYSBudWxsIG1fc3R5bGVT
aGVldC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vU2VsZWN0b3JBUEkvKi4gTm8gY2hhbmdl
IGluIHRoZSB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVNlbGVjdG9yKToKKwogMjAxMi0wNS0yOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRnJhbWVMb2FkZXJDbGllbnQ6OnNoYWRvd0RPTUFs
bG93ZWQoKSB0byBhbGxvd1NoYWRvd0RPTSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCBi
NjE2ODg1OGUxYmI4MmVhNmY5MzJkNGE5ZDY2MjlmZmE5NmU2Y2FhLi42NzM2MzgzMjlhODJiZDky
YWMyY2EwMDZkN2Q3ZjQ0ZmY0NjUwZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTk1
OCwxMCArOTU4LDkgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBz
dGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgaWYgKHAtPm1fc3R5bGVTaGVldCkKLSAgICAgICAg
ICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsICQyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5tX3N0eWxlU2hlZXQtPmRldGVybWlu
ZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpKSk7Ci0gICAgICAgIGVsc2UgLy8gRklYTUU6IFNo
b3VsZG4ndCB0aGlzIGNhc2UgYmUgYW4gZXJyb3I/Ci0gICAgICAgICAgICAkJC0+c2V0VGFnKFF1
YWxpZmllZE5hbWUobnVsbEF0b20sICQyLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKKyAgICAg
ICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsICQyLCBwLT5t
X3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQ
cmVmaXgsICQyLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKICAgICB9CiAgICAgfCBuYW1lc3Bh
Y2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAk
MzsKQEAgLTEwOTAsMTYgKzEwODksMjAgQEAgYXR0cmliOgogICAgICAgICBBdG9taWNTdHJpbmcg
bmFtZXNwYWNlUHJlZml4ID0gJDM7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobmFtZXNwYWNl
UHJlZml4LCAkNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+bV9zdHls
ZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSkpOworICAgICAgICBp
ZiAocC0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZp
ZWROYW1lKG5hbWVzcGFjZVByZWZpeCwgJDQsIHAtPm1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFt
ZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJCQt
PnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwgJDQsIHAtPm1fZGVm
YXVsdE5hbWVzcGFjZSkpOwogICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7
CiAgICAgfQogICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxlY3RvciBhdHRyX25h
bWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNlICddJyB7CiAg
ICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSAkMzsKICAgICAgICAgQ1NTUGFy
c2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBw
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUoUXVh
bGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsICQ0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwLT5tX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQ
cmVmaXgpKSk7CisgICAgICAgIGlmIChwLT5tX3N0eWxlU2hlZXQpCisgICAgICAgICAgICAkJC0+
c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCAkNCwgcC0+bV9zdHls
ZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobmFtZXNwYWNl
UHJlZml4LCAkNCwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7CiAgICAgICAgICQkLT5zZXRNYXRj
aCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ1KTsKICAgICAgICAgJCQtPnNldFZhbHVlKCQ3KTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDA4ODlhZTgxNTk0M2U0M2M0MWYzYmQ3
MThlMmY3NzRmMmFkNjNjOWQuLmExZWY4OWY1MzMyZTIzOWU5OTc0NmI0ZjU5M2VlOTkzZTAxNThk
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMTA1LDggKzExMDUsNiBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcm
IHN0cmluZywgRG9jdW1lbnQqCiAKIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZVNlbGVjdG9yKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKIHsKLSAgICBS
ZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBkdW1teVN0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29u
dGVudHM6OmNyZWF0ZSgpOwotICAgIHNldFN0eWxlU2hlZXQoZHVtbXlTdHlsZVNoZWV0LmdldCgp
KTsKICAgICBtX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IgPSAmc2VsZWN0b3JMaXN0Owog
CiAgICAgc2V0dXBQYXJzZXIoIkAtd2Via2l0LXNlbGVjdG9yeyIsIHN0cmluZywgIn0iKTsKQEAg
LTExMTQsOSArMTExMiw2IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZVNlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAgICAgY3NzeXlwYXJz
ZSh0aGlzKTsKIAogICAgIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvciA9IDA7Ci0KLSAg
ICAvLyBUaGUgc3R5bGUgc2hlZXQgd2lsbCBiZSBkZWxldGVkIHJpZ2h0IGF3YXksIHNvIGl0IHdv
bid0IG91dGxpdmUgdGhlIGRvY3VtZW50LgotICAgIEFTU0VSVChkdW1teVN0eWxlU2hlZXQtPmhh
c09uZVJlZigpKTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oU3R5bGVQ
cm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBSZWZQdHI8Q1NT
U3R5bGVTb3VyY2VEYXRhPiogc3R5bGVTb3VyY2VEYXRhLCBTdHlsZVNoZWV0Q29udGVudHMqIGNv
bnRleHRTdHlsZVNoZWV0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>