<?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>89783</bug_id>
          
          <creation_ts>2012-06-22 14:23:32 -0700</creation_ts>
          <short_desc>REGRESSION(r120979): getElementsByTagName is 12% slower</short_desc>
          <delta_ts>2012-06-23 16:01:29 -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>DOM</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>adamk</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655762</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 14:23:32 -0700</bug_when>
    <thetext>Bindings/get-elements-by-tag-name:
http://webkit-perf.appspot.com/graph.html#tests=[[3030063,2001,3001]]&amp;sel=1340301988349.4067,1340400396485&amp;displayrange=7&amp;datatype=running

Dromaeo/dom-query:
http://webkit-perf.appspot.com/graph.html#tests=[[33030,2001,3001]]&amp;sel=1340301988349.4067,1340400396485&amp;displayrange=7&amp;datatype=running</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655767</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 14:27:17 -0700</bug_when>
    <thetext>r120978:

rniwa-macpro:webkit3 rniwa$ Tools/Scripts/run-perf-tests PerformanceTests/Bindings/get-elements-by-tag-name.html
Running 1 tests
Running Bindings/get-elements-by-tag-name.html (1 of 1)
DESCRIPTION: This benchmark covers &apos;getElementsByTagName (not in document)&apos;, &apos;getElementsByTagName&apos;, &apos;getElementsByName (not in document)&apos; and &apos;getElementsByName&apos; in Dromaeo/dom-query.html, and other DOM methods that return a NodeList.
RESULT Bindings: get-elements-by-tag-name= 202.852774047 runs/s
median= 202.78833967 runs/s, stdev= 0.179787510207 runs/s, min= 202.53164557 runs/s, max= 203.303684879 runs/s

rniwa-macpro:webkit3 rniwa$ Tools/Scripts/run-perf-tests PerformanceTests/Bindings/get-elements-by-tag-name.html
Running 1 tests
Running Bindings/get-elements-by-tag-name.html (1 of 1)
DESCRIPTION: This benchmark covers &apos;getElementsByTagName (not in document)&apos;, &apos;getElementsByTagName&apos;, &apos;getElementsByName (not in document)&apos; and &apos;getElementsByName&apos; in Dromaeo/dom-query.html, and other DOM methods that return a NodeList.
RESULT Bindings: get-elements-by-tag-name= 211.241877558 runs/s
median= 211.64021164 runs/s, stdev= 1.18863533758 runs/s, min= 206.451612903 runs/s, max= 212.201591512 runs/s

rniwa-macpro:webkit3 rniwa$ Tools/Scripts/run-perf-tests PerformanceTests/Bindings/get-elements-by-tag-name.html
Running 1 tests
Running Bindings/get-elements-by-tag-name.html (1 of 1)
DESCRIPTION: This benchmark covers &apos;getElementsByTagName (not in document)&apos;, &apos;getElementsByTagName&apos;, &apos;getElementsByName (not in document)&apos; and &apos;getElementsByName&apos; in Dromaeo/dom-query.html, and other DOM methods that return a NodeList.
RESULT Bindings: get-elements-by-tag-name= 209.901121292 runs/s
median= 211.081794195 runs/s, stdev= 3.60176160791 runs/s, min= 196.319018405 runs/s, max= 212.201591512 runs/s



r120979 with my patch I&apos;m about to post

rniwa-macpro:webkit rniwa$ Tools/Scripts/run-perf-tests PerformanceTests/Bindings/get-elements-by-tag-name.html
Running 1 tests
Running Bindings/get-elements-by-tag-name.html (1 of 1)
DESCRIPTION: This benchmark covers &apos;getElementsByTagName (not in document)&apos;, &apos;getElementsByTagName&apos;, &apos;getElementsByName (not in document)&apos; and &apos;getElementsByName&apos; in Dromaeo/dom-query.html, and other DOM methods that return a NodeList.
RESULT Bindings: get-elements-by-tag-name= 211.632166697 runs/s
median= 211.360634082 runs/s, stdev= 0.777945237496 runs/s, min= 210.803689065 runs/s, max= 213.77672209 runs/s
 
rniwa-macpro:webkit rniwa$ Tools/Scripts/run-perf-tests PerformanceTests/Bindings/get-elements-by-tag-name.html
Running 1 tests
Running Bindings/get-elements-by-tag-name.html (1 of 1)
DESCRIPTION: This benchmark covers &apos;getElementsByTagName (not in document)&apos;, &apos;getElementsByTagName&apos;, &apos;getElementsByName (not in document)&apos; and &apos;getElementsByName&apos; in Dromaeo/dom-query.html, and other DOM methods that return a NodeList.
RESULT Bindings: get-elements-by-tag-name= 214.982647722 runs/s
median= 215.462156943 runs/s, stdev= 3.92329100174 runs/s, min= 209.973753281 runs/s, max= 220.048899756 runs/s

rniwa-macpro:webkit rniwa$ Tools/Scripts/run-perf-tests PerformanceTests/Bindings/get-elements-by-tag-name.html
Running 1 tests
Running Bindings/get-elements-by-tag-name.html (1 of 1)
DESCRIPTION: This benchmark covers &apos;getElementsByTagName (not in document)&apos;, &apos;getElementsByTagName&apos;, &apos;getElementsByName (not in document)&apos; and &apos;getElementsByName&apos; in Dromaeo/dom-query.html, and other DOM methods that return a NodeList.
RESULT Bindings: get-elements-by-tag-name= 214.561723123 runs/s
median= 213.191300488 runs/s, stdev= 3.90098642596 runs/s, min= 210.526315789 runs/s, max= 221.13022113 runs/s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655783</commentid>
    <comment_count>2</comment_count>
      <attachid>149106</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 14:41:53 -0700</bug_when>
    <thetext>Created attachment 149106
Regain the performance by creating a custom hash function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655786</commentid>
    <comment_count>3</comment_count>
      <attachid>149106</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 14:42:42 -0700</bug_when>
    <thetext>Comment on attachment 149106
Regain the performance by creating a custom hash function

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

&gt; Source/WebCore/dom/NodeRareData.h:66
&gt; +        return WTF::DefaultHash&lt;StringType&gt;::Hash::hash(entry.name) + entry.type;

We can call IntHash on entry.type if we wanted since type is known at compilation time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655809</commentid>
    <comment_count>4</comment_count>
      <attachid>149106</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-06-22 15:01:27 -0700</bug_when>
    <thetext>Comment on attachment 149106
Regain the performance by creating a custom hash function

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

&gt; Source/WebCore/dom/NodeRareData.h:48
&gt; +    NodeListMapEntry(DynamicNodeList::NodeListType type, const AtomicString&amp; name)

Shouldn&apos;t this be StringType&amp; instead of AtomicString&amp; ?

&gt; Source/WebCore/dom/NodeRareData.h:55
&gt; +        return name == other.name &amp;&amp; type == other.type;

Reorder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655814</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 15:05:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 149106 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149106&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/NodeRareData.h:48
&gt; &gt; +    NodeListMapEntry(DynamicNodeList::NodeListType type, const AtomicString&amp; name)
&gt; 
&gt; Shouldn&apos;t this be StringType&amp; instead of AtomicString&amp; ?

Oops, nice catch!

&gt; &gt; Source/WebCore/dom/NodeRareData.h:55
&gt; &gt; +        return name == other.name &amp;&amp; type == other.type;
&gt; 
&gt; Reorder?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655823</commentid>
    <comment_count>6</comment_count>
      <attachid>149116</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 15:13:44 -0700</bug_when>
    <thetext>Created attachment 149116
Fixed per Erik&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655838</commentid>
    <comment_count>7</comment_count>
      <attachid>149122</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 15:27:02 -0700</bug_when>
    <thetext>Created attachment 149122
Fix a bad merge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655961</commentid>
    <comment_count>8</comment_count>
      <attachid>149122</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-22 17:48:51 -0700</bug_when>
    <thetext>Comment on attachment 149122
Fix a bad merge

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

Does this other optimizations, or is it really the hash function that’s the issue? It it’s just the hash function, then you can do a much smaller patch.

We can supply a custom hash function for the pairs in those maps without using a custom class instead of pair. The hash function struct is passed as the third argument to the HashMap class template. We can even make a single struct for both types of pairs, using function overloading or even function templates.

I have various review comments on the hash traits if you do want to make a custom class, but I am not sure you need one.

&gt; Source/WebCore/dom/NodeRareData.h:58
&gt; +    unsigned char type;

Do we get higher performance here by using an unsigned char rather than an unsigned?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655967</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 18:02:24 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Does this other optimizations, or is it really the hash function that’s the issue? It it’s just the hash function, then you can do a much smaller patch.

My understanding is that the hash function is the issue.

&gt; We can supply a custom hash function for the pairs in those maps without using a custom class instead of pair. The hash function struct is passed as the third argument to the HashMap class template. We can even make a single struct for both types of pairs, using function overloading or even function templates.

Ah, that&apos;s a good point. I can try that later.

&gt; &gt; Source/WebCore/dom/NodeRareData.h:58
&gt; &gt; +    unsigned char type;
&gt; 
&gt; Do we get higher performance here by using an unsigned char rather than an unsigned?

I don&apos;t think so but we wouldn&apos;t need unsigned int anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656034</commentid>
    <comment_count>10</comment_count>
      <attachid>149167</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-23 00:00:30 -0700</bug_when>
    <thetext>Created attachment 149167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656106</commentid>
    <comment_count>11</comment_count>
      <attachid>149167</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-23 08:33:21 -0700</bug_when>
    <thetext>Comment on attachment 149167
Patch

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

A few things that still look like mistakes.

&gt; Source/WebCore/dom/NodeRareData.h:62
&gt; +    template &lt;typename StringType&gt;
&gt; +    struct NodeListCacheMapEntryHash {
&gt; +        static unsigned hash(const std::pair&lt;StringType, unsigned char&gt;&amp; entry)
&gt; +        {
&gt; +            return WTF::DefaultHash&lt;StringType&gt;::Hash::hash(entry.first) + entry.second;
&gt; +        }
&gt; +
&gt; +        static bool equal(const std::pair&lt;StringType, unsigned char&gt;&amp; a, const std::pair&lt;StringType, unsigned char&gt;&amp; b) { return a == b; }
&gt; +
&gt; +        static const bool safeToCompareToEmptyOrDeleted = WTF::DefaultHash&lt;StringType&gt;::Hash::safeToCompareToEmptyOrDeleted;
&gt; +    };

We could make this smaller by deriving from WTF::PairHash and overriding only the hash function. There is no need to write a custom equal function or to set safeToCompareEmptyOrDeleted if we derive.

There is no need for the WTF:: prefix in WTF::DefaultHash; it can just be DefaultHash.

&gt; Source/WebCore/dom/NodeRareData.h:64
&gt; +    typedef HashMap&lt;std::pair&lt;AtomicString, unsigned char&gt;, DynamicSubtreeNodeList*, NodeListCacheMapEntryHash&lt;AtomicString&gt; &gt; NodeListAtomicNameCacheMap;

Why did we reorder the pair to put the string first? Why did we change from unsigned short to unsigned char. Maybe those are good changes, but nothing here says they were intentional or helpful changes.

&gt; Source/WebCore/dom/NodeRareData.h:169
&gt; -    std::pair&lt;unsigned short, AtomicString&gt; namedNodeListKey(DynamicNodeList::NodeListType listType, const AtomicString&amp; name)
&gt; +    std::pair&lt;AtomicString, unsigned short&gt; namedNodeListKey(DynamicNodeList::NodeListType listType, const AtomicString&amp; name)
&gt;      {
&gt; -        return std::pair&lt;unsigned short, AtomicString&gt;(listType, name);
&gt; +        return std::pair&lt;AtomicString, unsigned short&gt;(name, listType);
&gt;      }

We changed the maps to use unsigned char, but for some reason left it unsigned short here. That will result in conversions. I suggest just leaving this all alone, or making the types consistent if there is a good reason to change that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656125</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-23 12:40:41 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 149167 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149167&amp;action=review
&gt; 
&gt; A few things that still look like mistakes.
&gt; 
&gt; &gt; Source/WebCore/dom/NodeRareData.h:62
&gt; &gt; +    template &lt;typename StringType&gt;
&gt; &gt; +    struct NodeListCacheMapEntryHash {
&gt; &gt; +        static unsigned hash(const std::pair&lt;StringType, unsigned char&gt;&amp; entry)
&gt; &gt; +        {
&gt; &gt; +            return WTF::DefaultHash&lt;StringType&gt;::Hash::hash(entry.first) + entry.second;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        static bool equal(const std::pair&lt;StringType, unsigned char&gt;&amp; a, const std::pair&lt;StringType, unsigned char&gt;&amp; b) { return a == b; }
&gt; &gt; +
&gt; &gt; +        static const bool safeToCompareToEmptyOrDeleted = WTF::DefaultHash&lt;StringType&gt;::Hash::safeToCompareToEmptyOrDeleted;
&gt; &gt; +    };
&gt; 
&gt; We could make this smaller by deriving from WTF::PairHash and overriding only the hash function. There is no need to write a custom equal function or to set safeToCompareEmptyOrDeleted if we derive.

Unfortunately not because hash traits isn&apos;t defined for unsigned char. It was also the reason I used unsigned short in the original patch.

&gt; There is no need for the WTF:: prefix in WTF::DefaultHash; it can just be DefaultHash.

Fixed.

&gt; &gt; Source/WebCore/dom/NodeRareData.h:64
&gt; &gt; +    typedef HashMap&lt;std::pair&lt;AtomicString, unsigned char&gt;, DynamicSubtreeNodeList*, NodeListCacheMapEntryHash&lt;AtomicString&gt; &gt; NodeListAtomicNameCacheMap;
&gt; 
&gt; Why did we reorder the pair to put the string first? Why did we change from unsigned short to unsigned char. Maybe those are good changes, but nothing here says they were intentional or helpful changes.

Oops, that&apos;s a left-over from my old patch. Fixed.

&gt; &gt; Source/WebCore/dom/NodeRareData.h:169
&gt; &gt; -    std::pair&lt;unsigned short, AtomicString&gt; namedNodeListKey(DynamicNodeList::NodeListType listType, const AtomicString&amp; name)
&gt; &gt; +    std::pair&lt;AtomicString, unsigned short&gt; namedNodeListKey(DynamicNodeList::NodeListType listType, const AtomicString&amp; name)
&gt; &gt;      {
&gt; &gt; -        return std::pair&lt;unsigned short, AtomicString&gt;(listType, name);
&gt; &gt; +        return std::pair&lt;AtomicString, unsigned short&gt;(name, listType);
&gt; &gt;      }
&gt; 
&gt; We changed the maps to use unsigned char, but for some reason left it unsigned short here. That will result in conversions. I suggest just leaving this all alone, or making the types consistent if there is a good reason to change that.

Oops, that explains a slight slowdown (1-2%) from my previous patch. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656126</commentid>
    <comment_count>13</comment_count>
      <attachid>149178</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-23 12:48:05 -0700</bug_when>
    <thetext>Created attachment 149178
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656137</commentid>
    <comment_count>14</comment_count>
      <attachid>149178</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-23 14:30:48 -0700</bug_when>
    <thetext>Comment on attachment 149178
Patch for landing

Clearing flags on attachment: 149178

Committed r121103: &lt;http://trac.webkit.org/changeset/121103&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656138</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-23 14:30:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656144</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-23 16:01:29 -0700</bug_when>
    <thetext>Build fix landed in http://trac.webkit.org/changeset/121105.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149106</attachid>
            <date>2012-06-22 14:41:53 -0700</date>
            <delta_ts>2012-06-22 15:12:56 -0700</delta_ts>
            <desc>Regain the performance by creating a custom hash function</desc>
            <filename>bug-89783-20120622144638.patch</filename>
            <type>text/plain</type>
            <size>7221</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA2LTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEyMDk3OSk6
IGdldEVsZW1lbnRzQnlUYWdOYW1lIGlzIDEyJSBzbG93ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBoYXNoaW5nIHN0
ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgQXRvbWljU3RyaW5nPiBpcyB2ZXJ5IHNsb3cgY29tcGFy
ZWQgdG8ganVzdCBoYXNoaW5nIEF0b21pY1N0cmluZywKKyAgICAgICAgd2hpY2ggaW50ZXJuYWxs
eSBob2xkcyBhIGhhc2ggYWxyZWFkeS4gRml4ZWQgdGhlIHJlZ3Jlc3Npb24gYnkgcmVwbGFjaW5n
IHRoZSBwYWlyIGJ5IE5vZGVMaXN0TWFwRW50cnkgd2hpY2ggY29tcHV0ZXMKKyAgICAgICAgdGhl
IGhhc2ggbmFpdmVseSBhcyBBdG9taWNTdHJpbmcncyBoYXNoICsgbGlzdCB0eXBlLiBUaGlzIGlz
IG9rYXkgYmVjYXVzZSB3ZSBvbmx5IGhhdmUgNyBub2RlIGxpc3QgdHlwZXMgYXQgdGhlIG1vbWVu
dC4KKworICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RNYXBFbnRyeTo6Tm9kZUxpc3RNYXBFbnRyeSk6Cisg
ICAgICAgIChOb2RlTGlzdE1hcEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0TWFw
RW50cnk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RNYXBFbnRyeUhh
c2g6Omhhc2gpOgorICAgICAgICAoTm9kZUxpc3RNYXBFbnRyeUhhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZUxpc3RNYXBFbnRyeUhhc2g6OmVxdWFsKToKKyAgICAgICAgKE5vZGVMaXN0c05v
ZGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRDYWNoZVdp
dGhBdG9taWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRD
YWNoZVdpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpyZW1v
dmVDYWNoZVdpdGhBdG9taWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVE
YXRhOjpyZW1vdmVDYWNoZVdpdGhOYW1lKToKKwogMjAxMi0wNi0yMiAgSmVmZiBUaW1hbnVzICA8
dHdpekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBDaGFuZ2UgaW1wbGVtZW50
aW5nIGEgZmFzdC1wYXRoIGZvciBjb3B5aW5nIEdQVS1hY2NlbGVyYXRlZCBDYW52YXMyRCBpbnN0
YW5jZXMgdG8gV2ViR0wgdGV4dHVyZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CShyZXZpc2lvbiAxMjA5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDIxICs0Miw3OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorc3RydWN0IE5vZGVMaXN0TWFwRW50
cnkgeworICAgIE5vZGVMaXN0TWFwRW50cnkoKSA6IHR5cGUoMCkgeyB9CisgICAgTm9kZUxpc3RN
YXBFbnRyeShEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSB0eXBlLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIHR5cGUodHlwZSkK
KyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlTGlzdE1hcEVudHJ5JiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBuYW1lID09IG90aGVyLm5hbWUgJiYg
dHlwZSA9PSBvdGhlci50eXBlOworICAgIH0KKworICAgIFN0cmluZ1R5cGUgbmFtZTsKKyAgICB1
bnNpZ25lZCBjaGFyIHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4K
K3N0cnVjdCBOb2RlTGlzdE1hcEVudHJ5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgTm9kZUxpc3RNYXBFbnRyeTxTdHJpbmdUeXBlPiYgZW50cnkpCisgICAgeworICAgICAg
ICByZXR1cm4gV1RGOjpEZWZhdWx0SGFzaDxTdHJpbmdUeXBlPjo6SGFzaDo6aGFzaChlbnRyeS5u
YW1lKSArIGVudHJ5LnR5cGU7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
Tm9kZUxpc3RNYXBFbnRyeTxTdHJpbmdUeXBlPiYgYSwgY29uc3QgTm9kZUxpc3RNYXBFbnRyeTxT
dHJpbmdUeXBlPiYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IFdURjo6RGVmYXVsdEhhc2g8U3RyaW5n
VHlwZT46Okhhc2g6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkOworfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4gc3RydWN0IERl
ZmF1bHRIYXNoPFdlYkNvcmU6Ok5vZGVMaXN0TWFwRW50cnk8U3RyaW5nVHlwZT4gPiB7CisgICAg
dHlwZWRlZiBXZWJDb3JlOjpOb2RlTGlzdE1hcEVudHJ5SGFzaDxTdHJpbmdUeXBlPiBIYXNoOwor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4gc3RydWN0IEhhc2hUcmFpdHM8V2Vi
Q29yZTo6Tm9kZUxpc3RNYXBFbnRyeTxTdHJpbmdUeXBlPiA+IDogR2VuZXJpY0hhc2hUcmFpdHM8
V2ViQ29yZTo6Tm9kZUxpc3RNYXBFbnRyeTxTdHJpbmdUeXBlPiA+IHsKKyAgICB0eXBlZGVmIFdl
YkNvcmU6Ok5vZGVMaXN0TWFwRW50cnk8U3RyaW5nVHlwZT4gRW50cnlUeXBlOworCisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IEhhc2hUcmFpdHM8U3RyaW5nVHlwZT46
OmVtcHR5VmFsdWVJc1plcm87CisgICAgc3RhdGljIEVudHJ5VHlwZSBlbXB0eVZhbHVlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBFbnRyeVR5cGUoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0OjpD
aGlsZE5vZGVMaXN0VHlwZSwgSGFzaFRyYWl0czxTdHJpbmdUeXBlPjo6ZW1wdHlWYWx1ZSgpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gSGFzaFRy
YWl0czxTdHJpbmdUeXBlPjo6bmVlZHNEZXN0cnVjdGlvbjsKKyAgICBzdGF0aWMgY29uc3QgaW50
IG1pbmltdW1UYWJsZVNpemUgPSBIYXNoVHJhaXRzPFN0cmluZ1R5cGU+OjptaW5pbXVtVGFibGVT
aXplOworCisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEVudHJ5VHlwZSYg
ZW50cnkpIHsgSGFzaFRyYWl0czxTdHJpbmdUeXBlPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKGVu
dHJ5Lm5hbWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRW50cnlU
eXBlJiBlbnRyeSkgeyByZXR1cm4gSGFzaFRyYWl0czxTdHJpbmdUeXBlPjo6aXNEZWxldGVkVmFs
dWUoZW50cnkubmFtZSk7IH0KK307CisKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFz
cyBMYWJlbHNOb2RlTGlzdDsKIGNsYXNzIFJhZGlvTm9kZUxpc3Q7CiBjbGFzcyBUcmVlU2NvcGU7
Ci0KKyAgICAKIHN0cnVjdCBOb2RlTGlzdHNOb2RlRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTm9kZUxpc3RzTm9kZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBBdG9taWNT
dHJpbmc+LCBEeW5hbWljU3VidHJlZU5vZGVMaXN0Kj4gTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVN
YXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgU3RyaW5n
PiwgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCo+IE5vZGVMaXN0TmFtZUNhY2hlTWFwOworICAgIHR5
cGVkZWYgSGFzaE1hcDxOb2RlTGlzdE1hcEVudHJ5PEF0b21pY1N0cmluZz4sIER5bmFtaWNTdWJ0
cmVlTm9kZUxpc3QqPiBOb2RlTGlzdEF0b21pY05hbWVDYWNoZU1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8Tm9kZUxpc3RNYXBFbnRyeTxTdHJpbmc+LCBEeW5hbWljU3VidHJlZU5vZGVMaXN0Kj4g
Tm9kZUxpc3ROYW1lQ2FjaGVNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUs
IFRhZ05vZGVMaXN0Kj4gVGFnTm9kZUxpc3RDYWNoZU5TOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBQYXNzUmVmUHRyPFQ+IGFkZENhY2hlV2l0aEF0b21pY05hbWUoTm9kZSogbm9k
ZSwgRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gbV9hdG9taWNOYW1lQ2FjaGVzLmFkZChuYW1lZE5vZGVMaXN0S2V5
KGxpc3RUeXBlLCBuYW1lKSwgMCk7CisgICAgICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hdG9taWNOYW1lQ2FjaGVzLmFkZChOb2RlTGlzdE1hcEVu
dHJ5PEF0b21pY1N0cmluZz4obGlzdFR5cGUsIG5hbWUpLCAwKTsKICAgICAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQpOwogCkBAIC02OCw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBQYXNzUmVmUHRyPFQ+IGFkZENhY2hlV2l0aE5hbWUoTm9k
ZSogbm9kZSwgRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIE5vZGVMaXN0TmFtZUNhY2hlTWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9uYW1lQ2FjaGVzLmFkZChuYW1lZE5vZGVMaXN0S2V5KGxpc3RUeXBlLCBu
YW1lKSwgMCk7CisgICAgICAgIE5vZGVMaXN0TmFtZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9uYW1lQ2FjaGVzLmFkZChOb2RlTGlzdE1hcEVudHJ5PFN0cmluZz4obGlzdFR5cGUsIG5h
bWUpLCAwKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCkBAIC05MSwx
NCArMTQ4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQ2FjaGVXaXRoQXRvbWljTmFt
ZShEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBsaXN0LCBEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0
VHlwZSBsaXN0VHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChsaXN0LCBsaXN0ID09IG1fYXRvbWljTmFtZUNhY2hlcy5nZXQobmFtZWRO
b2RlTGlzdEtleShsaXN0VHlwZSwgbmFtZSkpKTsKLSAgICAgICAgbV9hdG9taWNOYW1lQ2FjaGVz
LnJlbW92ZShuYW1lZE5vZGVMaXN0S2V5KGxpc3RUeXBlLCBuYW1lKSk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQobGlzdCwgbGlzdCA9PSBtX2F0b21pY05hbWVDYWNoZXMuZ2V0KE5vZGVMaXN0TWFw
RW50cnk8QXRvbWljU3RyaW5nPihsaXN0VHlwZSwgbmFtZSkpKTsKKyAgICAgICAgbV9hdG9taWNO
YW1lQ2FjaGVzLnJlbW92ZShOb2RlTGlzdE1hcEVudHJ5PEF0b21pY1N0cmluZz4obGlzdFR5cGUs
IG5hbWUpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlV2l0aE5hbWUoRHluYW1pY1N1
YnRyZWVOb2RlTGlzdCogbGlzdCwgRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobGlz
dCwgbGlzdCA9PSBtX25hbWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxpc3RLZXkobGlzdFR5cGUsIG5h
bWUpKSk7Ci0gICAgICAgIG1fbmFtZUNhY2hlcy5yZW1vdmUobmFtZWROb2RlTGlzdEtleShsaXN0
VHlwZSwgbmFtZSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGxpc3QsIGxpc3QgPT0gbV9uYW1l
Q2FjaGVzLmdldChOb2RlTGlzdE1hcEVudHJ5PFN0cmluZz4obGlzdFR5cGUsIG5hbWUpKSk7Cisg
ICAgICAgIG1fbmFtZUNhY2hlcy5yZW1vdmUoTm9kZUxpc3RNYXBFbnRyeTxTdHJpbmc+KGxpc3RU
eXBlLCBuYW1lKSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVDYWNoZVdpdGhRdWFsaWZpZWRO
YW1lKER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKQEAgLTEyMiwxNiArMTc5
LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBOb2RlTGlzdHNOb2RlRGF0YSgpIHsgfQogCi0g
ICAgc3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBBdG9taWNTdHJpbmc+IG5hbWVkTm9kZUxpc3RL
ZXkoRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnBhaXI8dW5zaWduZWQgc2hv
cnQsIEF0b21pY1N0cmluZz4obGlzdFR5cGUsIG5hbWUpOwotICAgIH0KLQotICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCBzaG9ydCwgU3RyaW5nPiBuYW1lZE5vZGVMaXN0S2V5KER5bmFtaWNOb2RlTGlz
dDo6Tm9kZUxpc3RUeXBlIGxpc3RUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgewotICAg
ICAgICByZXR1cm4gc3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBTdHJpbmc+KGxpc3RUeXBlLCBu
YW1lKTsKLSAgICB9Ci0KICAgICBOb2RlTGlzdEF0b21pY05hbWVDYWNoZU1hcCBtX2F0b21pY05h
bWVDYWNoZXM7CiAgICAgTm9kZUxpc3ROYW1lQ2FjaGVNYXAgbV9uYW1lQ2FjaGVzOwogICAgIFRh
Z05vZGVMaXN0Q2FjaGVOUyBtX3RhZ05vZGVMaXN0Q2FjaGVOUzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149116</attachid>
            <date>2012-06-22 15:13:44 -0700</date>
            <delta_ts>2012-06-22 15:26:42 -0700</delta_ts>
            <desc>Fixed per Erik&apos;s comment</desc>
            <filename>bug-89783-20120622151828.patch</filename>
            <type>text/plain</type>
            <size>7178</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA2LTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEyMDk3OSk6
IGdldEVsZW1lbnRzQnlUYWdOYW1lIGlzIDEyJSBzbG93ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBoYXNoaW5nIHN0
ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgQXRvbWljU3RyaW5nPiBpcyB2ZXJ5IHNsb3cgY29tcGFy
ZWQgdG8ganVzdCBoYXNoaW5nIEF0b21pY1N0cmluZywKKyAgICAgICAgd2hpY2ggaW50ZXJuYWxs
eSBob2xkcyBhIGhhc2ggYWxyZWFkeS4gRml4ZWQgdGhlIHJlZ3Jlc3Npb24gYnkgcmVwbGFjaW5n
IHRoZSBwYWlyIGJ5IE5vZGVMaXN0TWFwRW50cnkgd2hpY2ggY29tcHV0ZXMKKyAgICAgICAgdGhl
IGhhc2ggbmFpdmVseSBhcyBBdG9taWNTdHJpbmcncyBoYXNoICsgbGlzdCB0eXBlLiBUaGlzIGlz
IG9rYXkgYmVjYXVzZSB3ZSBvbmx5IGhhdmUgNyBub2RlIGxpc3QgdHlwZXMgYXQgdGhlIG1vbWVu
dC4KKworICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RNYXBFbnRyeTo6Tm9kZUxpc3RNYXBFbnRyeSk6Cisg
ICAgICAgIChOb2RlTGlzdE1hcEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0TWFw
RW50cnk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RNYXBFbnRyeUhh
c2g6Omhhc2gpOgorICAgICAgICAoTm9kZUxpc3RNYXBFbnRyeUhhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZUxpc3RNYXBFbnRyeUhhc2g6OmVxdWFsKToKKyAgICAgICAgKE5vZGVMaXN0c05v
ZGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRDYWNoZVdp
dGhBdG9taWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRD
YWNoZVdpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpyZW1v
dmVDYWNoZVdpdGhBdG9taWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVE
YXRhOjpyZW1vdmVDYWNoZVdpdGhOYW1lKToKKwogMjAxMi0wNi0yMCAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTTG9jayBzaG91bGQgYmUgcGVy
LUpTR2xvYmFsRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkocmV2aXNpb24g
MTIxMDU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MiwyMSArNDIsNzggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3N0cnVjdCBOb2RlTGlzdE1hcEVudHJ5IHsKKyAgICBO
b2RlTGlzdE1hcEVudHJ5KCkgOiB0eXBlKDApIHsgfQorICAgIE5vZGVMaXN0TWFwRW50cnkoRHlu
YW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nVHlwZSYgbmFtZSkK
KyAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgbmFtZShuYW1lKQorICAgIHsgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVMaXN0TWFwRW50cnkmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gb3RoZXIudHlwZSAmJiBuYW1lID09IG90aGVy
Lm5hbWU7CisgICAgfQorCisgICAgdW5zaWduZWQgY2hhciB0eXBlOworICAgIFN0cmluZ1R5cGUg
bmFtZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorc3RydWN0IE5vZGVM
aXN0TWFwRW50cnlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBOb2RlTGlz
dE1hcEVudHJ5PFN0cmluZ1R5cGU+JiBlbnRyeSkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6
OkRlZmF1bHRIYXNoPFN0cmluZ1R5cGU+OjpIYXNoOjpoYXNoKGVudHJ5Lm5hbWUpICsgZW50cnku
dHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBOb2RlTGlzdE1hcEVu
dHJ5PFN0cmluZ1R5cGU+JiBhLCBjb25zdCBOb2RlTGlzdE1hcEVudHJ5PFN0cmluZ1R5cGU+JiBi
KSB7IHJldHVybiBhID09IGI7IH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gV1RGOjpEZWZhdWx0SGFzaDxTdHJpbmdUeXBlPjo6SGFzaDo6
c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7Cit9OworCit9CisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2Vi
Q29yZTo6Tm9kZUxpc3RNYXBFbnRyeTxTdHJpbmdUeXBlPiA+IHsKKyAgICB0eXBlZGVmIFdlYkNv
cmU6Ok5vZGVMaXN0TWFwRW50cnlIYXNoPFN0cmluZ1R5cGU+IEhhc2g7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpOb2RlTGlz
dE1hcEVudHJ5PFN0cmluZ1R5cGU+ID4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpOb2Rl
TGlzdE1hcEVudHJ5PFN0cmluZ1R5cGU+ID4geworICAgIHR5cGVkZWYgV2ViQ29yZTo6Tm9kZUxp
c3RNYXBFbnRyeTxTdHJpbmdUeXBlPiBFbnRyeVR5cGU7CisKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBlbXB0eVZhbHVlSXNaZXJvID0gSGFzaFRyYWl0czxTdHJpbmdUeXBlPjo6ZW1wdHlWYWx1ZUlz
WmVybzsKKyAgICBzdGF0aWMgRW50cnlUeXBlIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEVudHJ5VHlwZShXZWJDb3JlOjpEeW5hbWljTm9kZUxpc3Q6OkNoaWxkTm9kZUxpc3RU
eXBlLCBIYXNoVHJhaXRzPFN0cmluZ1R5cGU+OjplbXB0eVZhbHVlKCkpOworICAgIH0KKworICAg
IHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBIYXNoVHJhaXRzPFN0cmluZ1R5
cGU+OjpuZWVkc0Rlc3RydWN0aW9uOworICAgIHN0YXRpYyBjb25zdCBpbnQgbWluaW11bVRhYmxl
U2l6ZSA9IEhhc2hUcmFpdHM8U3RyaW5nVHlwZT46Om1pbmltdW1UYWJsZVNpemU7CisKKyAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW50cnlUeXBlJiBlbnRyeSkgeyBIYXNo
VHJhaXRzPFN0cmluZ1R5cGU+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUoZW50cnkubmFtZSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBFbnRyeVR5cGUmIGVudHJ5KSB7
IHJldHVybiBIYXNoVHJhaXRzPFN0cmluZ1R5cGU+Ojppc0RlbGV0ZWRWYWx1ZShlbnRyeS5uYW1l
KTsgfQorfTsKKworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIExhYmVsc05vZGVM
aXN0OwogY2xhc3MgUmFkaW9Ob2RlTGlzdDsKIGNsYXNzIFRyZWVTY29wZTsKLQotY2xhc3MgTm9k
ZUxpc3RzTm9kZURhdGEgeworICAgIAorc3RydWN0IE5vZGVMaXN0c05vZGVEYXRhIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShOb2RlTGlzdHNOb2RlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQg
c2hvcnQsIEF0b21pY1N0cmluZz4sIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqPiBOb2RlTGlzdEF0
b21pY05hbWVDYWNoZU1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVk
IHNob3J0LCBTdHJpbmc+LCBEeW5hbWljU3VidHJlZU5vZGVMaXN0Kj4gTm9kZUxpc3ROYW1lQ2Fj
aGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPE5vZGVMaXN0TWFwRW50cnk8QXRvbWljU3RyaW5n
PiwgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCo+IE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxOb2RlTGlzdE1hcEVudHJ5PFN0cmluZz4sIER5bmFtaWNTdWJ0
cmVlTm9kZUxpc3QqPiBOb2RlTGlzdE5hbWVDYWNoZU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8
UXVhbGlmaWVkTmFtZSwgVGFnTm9kZUxpc3QqPiBUYWdOb2RlTGlzdENhY2hlTlM7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFBhc3NSZWZQdHI8VD4gYWRkQ2FjaGVXaXRoQXRvbWlj
TmFtZShOb2RlKiBub2RlLCBEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgTm9kZUxpc3RBdG9taWNO
YW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2F0b21pY05hbWVDYWNoZXMuYWRkKG5h
bWVkTm9kZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpLCAwKTsKKyAgICAgICAgTm9kZUxpc3RBdG9t
aWNOYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2F0b21pY05hbWVDYWNoZXMuYWRk
KE5vZGVMaXN0TWFwRW50cnk8QXRvbWljU3RyaW5nPihsaXN0VHlwZSwgbmFtZSksIDApOwogICAg
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFQqPihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKQEAgLTY4LDcgKzEyNSw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFBhc3NSZWZQdHI8VD4gYWRkQ2Fj
aGVXaXRoTmFtZShOb2RlKiBub2RlLCBEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0
VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgTm9kZUxpc3ROYW1lQ2Fj
aGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX25hbWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RL
ZXkobGlzdFR5cGUsIG5hbWUpLCAwKTsKKyAgICAgICAgTm9kZUxpc3ROYW1lQ2FjaGVNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX25hbWVDYWNoZXMuYWRkKE5vZGVMaXN0TWFwRW50cnk8U3RyaW5n
PihsaXN0VHlwZSwgbmFtZSksIDApOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihyZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZCk7CiAKQEAgLTkxLDE0ICsxNDgsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVDYWNo
ZVdpdGhBdG9taWNOYW1lKER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QsIER5bmFtaWNOb2Rl
TGlzdDo6Tm9kZUxpc3RUeXBlIGxpc3RUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAg
ICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGxpc3QsIGxpc3QgPT0gbV9hdG9taWNOYW1lQ2Fj
aGVzLmdldChuYW1lZE5vZGVMaXN0S2V5KGxpc3RUeXBlLCBuYW1lKSkpOwotICAgICAgICBtX2F0
b21pY05hbWVDYWNoZXMucmVtb3ZlKG5hbWVkTm9kZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpKTsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0LCBsaXN0ID09IG1fYXRvbWljTmFtZUNhY2hlcy5n
ZXQoTm9kZUxpc3RNYXBFbnRyeTxBdG9taWNTdHJpbmc+KGxpc3RUeXBlLCBuYW1lKSkpOworICAg
ICAgICBtX2F0b21pY05hbWVDYWNoZXMucmVtb3ZlKE5vZGVMaXN0TWFwRW50cnk8QXRvbWljU3Ry
aW5nPihsaXN0VHlwZSwgbmFtZSkpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlQ2FjaGVXaXRo
TmFtZShEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBsaXN0LCBEeW5hbWljTm9kZUxpc3Q6Ok5vZGVM
aXN0VHlwZSBsaXN0VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChsaXN0LCBsaXN0ID09IG1fbmFtZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtl
eShsaXN0VHlwZSwgbmFtZSkpKTsKLSAgICAgICAgbV9uYW1lQ2FjaGVzLnJlbW92ZShuYW1lZE5v
ZGVMaXN0S2V5KGxpc3RUeXBlLCBuYW1lKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobGlzdCwg
bGlzdCA9PSBtX25hbWVDYWNoZXMuZ2V0KE5vZGVMaXN0TWFwRW50cnk8U3RyaW5nPihsaXN0VHlw
ZSwgbmFtZSkpKTsKKyAgICAgICAgbV9uYW1lQ2FjaGVzLnJlbW92ZShOb2RlTGlzdE1hcEVudHJ5
PFN0cmluZz4obGlzdFR5cGUsIG5hbWUpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZUNhY2hl
V2l0aFF1YWxpZmllZE5hbWUoRHluYW1pY1N1YnRyZWVOb2RlTGlzdCogbGlzdCwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQpA
QCAtMTUxLDE2ICsyMDgsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE5vZGVMaXN0c05vZGVE
YXRhKCkgeyB9CiAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIEF0b21pY1N0cmluZz4g
bmFtZWROb2RlTGlzdEtleShEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6cGFp
cjx1bnNpZ25lZCBzaG9ydCwgQXRvbWljU3RyaW5nPihsaXN0VHlwZSwgbmFtZSk7Ci0gICAgfQot
Ci0gICAgc3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBTdHJpbmc+IG5hbWVkTm9kZUxpc3RLZXko
RHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIFN0cmlu
Zz4obGlzdFR5cGUsIG5hbWUpOwotICAgIH0KLQogICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hl
TWFwIG1fYXRvbWljTmFtZUNhY2hlczsKICAgICBOb2RlTGlzdE5hbWVDYWNoZU1hcCBtX25hbWVD
YWNoZXM7CiAgICAgVGFnTm9kZUxpc3RDYWNoZU5TIG1fdGFnTm9kZUxpc3RDYWNoZU5TOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149122</attachid>
            <date>2012-06-22 15:27:02 -0700</date>
            <delta_ts>2012-06-23 00:00:26 -0700</delta_ts>
            <desc>Fix a bad merge</desc>
            <filename>bug-89783-20120622153147.patch</filename>
            <type>text/plain</type>
            <size>7179</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA2LTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEyMDk3OSk6
IGdldEVsZW1lbnRzQnlUYWdOYW1lIGlzIDEyJSBzbG93ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBoYXNoaW5nIHN0
ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgQXRvbWljU3RyaW5nPiBpcyB2ZXJ5IHNsb3cgY29tcGFy
ZWQgdG8ganVzdCBoYXNoaW5nIEF0b21pY1N0cmluZywKKyAgICAgICAgd2hpY2ggaW50ZXJuYWxs
eSBob2xkcyBhIGhhc2ggYWxyZWFkeS4gRml4ZWQgdGhlIHJlZ3Jlc3Npb24gYnkgcmVwbGFjaW5n
IHRoZSBwYWlyIGJ5IE5vZGVMaXN0TWFwRW50cnkgd2hpY2ggY29tcHV0ZXMKKyAgICAgICAgdGhl
IGhhc2ggbmFpdmVseSBhcyBBdG9taWNTdHJpbmcncyBoYXNoICsgbGlzdCB0eXBlLiBUaGlzIGlz
IG9rYXkgYmVjYXVzZSB3ZSBvbmx5IGhhdmUgNyBub2RlIGxpc3QgdHlwZXMgYXQgdGhlIG1vbWVu
dC4KKworICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RNYXBFbnRyeTo6Tm9kZUxpc3RNYXBFbnRyeSk6Cisg
ICAgICAgIChOb2RlTGlzdE1hcEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0TWFw
RW50cnk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RNYXBFbnRyeUhh
c2g6Omhhc2gpOgorICAgICAgICAoTm9kZUxpc3RNYXBFbnRyeUhhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZUxpc3RNYXBFbnRyeUhhc2g6OmVxdWFsKToKKyAgICAgICAgKE5vZGVMaXN0c05v
ZGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRDYWNoZVdp
dGhBdG9taWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRD
YWNoZVdpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpyZW1v
dmVDYWNoZVdpdGhBdG9taWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVE
YXRhOjpyZW1vdmVDYWNoZVdpdGhOYW1lKToKKwogMjAxMi0wNi0yMCAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTTG9jayBzaG91bGQgYmUgcGVy
LUpTR2xvYmFsRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkocmV2aXNpb24g
MTIxMDU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw2MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRl
IDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorc3RydWN0IE5vZGVMaXN0TWFwRW50cnkgeworICAgIE5v
ZGVMaXN0TWFwRW50cnkoKSA6IHR5cGUoMCkgeyB9CisgICAgTm9kZUxpc3RNYXBFbnRyeShEeW5h
bWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmdUeXBlJiBuYW1lKQor
ICAgICAgICA6IHR5cGUodHlwZSkKKyAgICAgICAgLCBuYW1lKG5hbWUpCisgICAgeyB9CisKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZUxpc3RNYXBFbnRyeSYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBvdGhlci50eXBlICYmIG5hbWUgPT0gb3RoZXIu
bmFtZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjaGFyIHR5cGU7CisgICAgU3RyaW5nVHlwZSBu
YW1lOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+CitzdHJ1Y3QgTm9kZUxp
c3RNYXBFbnRyeUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE5vZGVMaXN0
TWFwRW50cnk8U3RyaW5nVHlwZT4mIGVudHJ5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6
RGVmYXVsdEhhc2g8U3RyaW5nVHlwZT46Okhhc2g6Omhhc2goZW50cnkubmFtZSkgKyBlbnRyeS50
eXBlOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE5vZGVMaXN0TWFwRW50
cnk8U3RyaW5nVHlwZT4mIGEsIGNvbnN0IE5vZGVMaXN0TWFwRW50cnk8U3RyaW5nVHlwZT4mIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSBXVEY6OkRlZmF1bHRIYXNoPFN0cmluZ1R5cGU+OjpIYXNoOjpz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKK307CisKK30KKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGU+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJD
b3JlOjpOb2RlTGlzdE1hcEVudHJ5PFN0cmluZ1R5cGU+ID4geworICAgIHR5cGVkZWYgV2ViQ29y
ZTo6Tm9kZUxpc3RNYXBFbnRyeUhhc2g8U3RyaW5nVHlwZT4gSGFzaDsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFN0cmluZ1R5cGU+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6Ok5vZGVMaXN0
TWFwRW50cnk8U3RyaW5nVHlwZT4gPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6Ok5vZGVM
aXN0TWFwRW50cnk8U3RyaW5nVHlwZT4gPiB7CisgICAgdHlwZWRlZiBXZWJDb3JlOjpOb2RlTGlz
dE1hcEVudHJ5PFN0cmluZ1R5cGU+IEVudHJ5VHlwZTsKKworICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSBIYXNoVHJhaXRzPFN0cmluZ1R5cGU+OjplbXB0eVZhbHVlSXNa
ZXJvOworICAgIHN0YXRpYyBFbnRyeVR5cGUgZW1wdHlWYWx1ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gRW50cnlUeXBlKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdDo6Q2hpbGROb2RlTGlzdFR5
cGUsIEhhc2hUcmFpdHM8U3RyaW5nVHlwZT46OmVtcHR5VmFsdWUoKSk7CisgICAgfQorCisgICAg
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IEhhc2hUcmFpdHM8U3RyaW5nVHlw
ZT46Om5lZWRzRGVzdHJ1Y3Rpb247CisgICAgc3RhdGljIGNvbnN0IGludCBtaW5pbXVtVGFibGVT
aXplID0gSGFzaFRyYWl0czxTdHJpbmdUeXBlPjo6bWluaW11bVRhYmxlU2l6ZTsKKworICAgIHN0
YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShFbnRyeVR5cGUmIGVudHJ5KSB7IEhhc2hU
cmFpdHM8U3RyaW5nVHlwZT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShlbnRyeS5uYW1lKTsgfQor
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEVudHJ5VHlwZSYgZW50cnkpIHsg
cmV0dXJuIEhhc2hUcmFpdHM8U3RyaW5nVHlwZT46OmlzRGVsZXRlZFZhbHVlKGVudHJ5Lm5hbWUp
OyB9Cit9OworCit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgTGFiZWxzTm9kZUxp
c3Q7CiBjbGFzcyBSYWRpb05vZGVMaXN0OwogY2xhc3MgVHJlZVNjb3BlOwpAQCAtNDksMTQgKzEw
NiwxNCBAQCBjbGFzcyBUcmVlU2NvcGU7CiBjbGFzcyBOb2RlTGlzdHNOb2RlRGF0YSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZUxpc3RzTm9kZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVk
IHNob3J0LCBBdG9taWNTdHJpbmc+LCBEeW5hbWljU3VidHJlZU5vZGVMaXN0Kj4gTm9kZUxpc3RB
dG9taWNOYW1lQ2FjaGVNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjx1bnNpZ25l
ZCBzaG9ydCwgU3RyaW5nPiwgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCo+IE5vZGVMaXN0TmFtZUNh
Y2hlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxOb2RlTGlzdE1hcEVudHJ5PEF0b21pY1N0cmlu
Zz4sIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqPiBOb2RlTGlzdEF0b21pY05hbWVDYWNoZU1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8Tm9kZUxpc3RNYXBFbnRyeTxTdHJpbmc+LCBEeW5hbWljU3Vi
dHJlZU5vZGVMaXN0Kj4gTm9kZUxpc3ROYW1lQ2FjaGVNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PFF1YWxpZmllZE5hbWUsIFRhZ05vZGVMaXN0Kj4gVGFnTm9kZUxpc3RDYWNoZU5TOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBQYXNzUmVmUHRyPFQ+IGFkZENhY2hlV2l0aEF0b21p
Y05hbWUoTm9kZSogbm9kZSwgRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIE5vZGVMaXN0QXRvbWlj
TmFtZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hdG9taWNOYW1lQ2FjaGVzLmFkZChu
YW1lZE5vZGVMaXN0S2V5KGxpc3RUeXBlLCBuYW1lKSwgMCk7CisgICAgICAgIE5vZGVMaXN0QXRv
bWljTmFtZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hdG9taWNOYW1lQ2FjaGVzLmFk
ZChOb2RlTGlzdE1hcEVudHJ5PEF0b21pY1N0cmluZz4obGlzdFR5cGUsIG5hbWUpLCAwKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUKj4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCkBAIC02OCw3ICsxMjUsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBQYXNzUmVmUHRyPFQ+IGFkZENh
Y2hlV2l0aE5hbWUoTm9kZSogbm9kZSwgRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlz
dFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIE5vZGVMaXN0TmFtZUNh
Y2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9uYW1lQ2FjaGVzLmFkZChuYW1lZE5vZGVMaXN0
S2V5KGxpc3RUeXBlLCBuYW1lKSwgMCk7CisgICAgICAgIE5vZGVMaXN0TmFtZUNhY2hlTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gbV9uYW1lQ2FjaGVzLmFkZChOb2RlTGlzdE1hcEVudHJ5PFN0cmlu
Zz4obGlzdFR5cGUsIG5hbWUpLCAwKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQpOwogCkBAIC05MSwxNCArMTQ4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQ2Fj
aGVXaXRoQXRvbWljTmFtZShEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBsaXN0LCBEeW5hbWljTm9k
ZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0LCBsaXN0ID09IG1fYXRvbWljTmFtZUNh
Y2hlcy5nZXQobmFtZWROb2RlTGlzdEtleShsaXN0VHlwZSwgbmFtZSkpKTsKLSAgICAgICAgbV9h
dG9taWNOYW1lQ2FjaGVzLnJlbW92ZShuYW1lZE5vZGVMaXN0S2V5KGxpc3RUeXBlLCBuYW1lKSk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQobGlzdCwgbGlzdCA9PSBtX2F0b21pY05hbWVDYWNoZXMu
Z2V0KE5vZGVMaXN0TWFwRW50cnk8QXRvbWljU3RyaW5nPihsaXN0VHlwZSwgbmFtZSkpKTsKKyAg
ICAgICAgbV9hdG9taWNOYW1lQ2FjaGVzLnJlbW92ZShOb2RlTGlzdE1hcEVudHJ5PEF0b21pY1N0
cmluZz4obGlzdFR5cGUsIG5hbWUpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlV2l0
aE5hbWUoRHluYW1pY1N1YnRyZWVOb2RlTGlzdCogbGlzdCwgRHluYW1pY05vZGVMaXN0OjpOb2Rl
TGlzdFR5cGUgbGlzdFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQobGlzdCwgbGlzdCA9PSBtX25hbWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxpc3RL
ZXkobGlzdFR5cGUsIG5hbWUpKSk7Ci0gICAgICAgIG1fbmFtZUNhY2hlcy5yZW1vdmUobmFtZWRO
b2RlTGlzdEtleShsaXN0VHlwZSwgbmFtZSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGxpc3Qs
IGxpc3QgPT0gbV9uYW1lQ2FjaGVzLmdldChOb2RlTGlzdE1hcEVudHJ5PFN0cmluZz4obGlzdFR5
cGUsIG5hbWUpKSk7CisgICAgICAgIG1fbmFtZUNhY2hlcy5yZW1vdmUoTm9kZUxpc3RNYXBFbnRy
eTxTdHJpbmc+KGxpc3RUeXBlLCBuYW1lKSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVDYWNo
ZVdpdGhRdWFsaWZpZWROYW1lKER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkK
QEAgLTE1MSwxNiArMjA4LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBOb2RlTGlzdHNOb2Rl
RGF0YSgpIHsgfQogCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBBdG9taWNTdHJpbmc+
IG5hbWVkTm9kZUxpc3RLZXkoRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnBh
aXI8dW5zaWduZWQgc2hvcnQsIEF0b21pY1N0cmluZz4obGlzdFR5cGUsIG5hbWUpOwotICAgIH0K
LQotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgU3RyaW5nPiBuYW1lZE5vZGVMaXN0S2V5
KER5bmFtaWNOb2RlTGlzdDo6Tm9kZUxpc3RUeXBlIGxpc3RUeXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBTdHJp
bmc+KGxpc3RUeXBlLCBuYW1lKTsKLSAgICB9Ci0KICAgICBOb2RlTGlzdEF0b21pY05hbWVDYWNo
ZU1hcCBtX2F0b21pY05hbWVDYWNoZXM7CiAgICAgTm9kZUxpc3ROYW1lQ2FjaGVNYXAgbV9uYW1l
Q2FjaGVzOwogICAgIFRhZ05vZGVMaXN0Q2FjaGVOUyBtX3RhZ05vZGVMaXN0Q2FjaGVOUzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149167</attachid>
            <date>2012-06-23 00:00:30 -0700</date>
            <delta_ts>2012-06-23 12:48:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89783-20120623000513.patch</filename>
            <type>text/plain</type>
            <size>3669</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTIzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEyMDk3OSk6
IGdldEVsZW1lbnRzQnlUYWdOYW1lIGlzIDEyJSBzbG93ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBoYXNoaW5nIHN0
ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgQXRvbWljU3RyaW5nPiBpcyB2ZXJ5IHNsb3cgY29tcGFy
ZWQgdG8ganVzdCBoYXNoaW5nIEF0b21pY1N0cmluZywKKyAgICAgICAgd2hpY2ggaW50ZXJuYWxs
eSBob2xkcyBhIGhhc2ggYWxyZWFkeS4gRml4ZWQgdGhlIHJlZ3Jlc3Npb24gYnkgcmVwbGFjaW5n
IHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gYnkgdGhlIG9uZSB0aGF0CisgICAgICAgIGNvbXB1
dGVzIEF0b21pY1N0cmluZydzIGhhc2ggKyBsaXN0IHR5cGUuIFRoaXMgaXMgb2theSBiZWNhdXNl
IHdlIG9ubHkgaGF2ZSA3IG5vZGUgbGlzdCB0eXBlcyBhdCB0aGUgbW9tZW50LgorCisgICAgICAg
ICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoTm9kZUxpc3RzTm9kZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6Ok5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhh
c2g6Omhhc2gpOgorICAgICAgICAoTm9kZUxpc3RDYWNoZU1hcEVudHJ5SGFzaCk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6Tm9kZUxpc3RDYWNoZU1hcEVudHJ5SGFzaDo6
ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6Om5hbWVkTm9kZUxp
c3RLZXkpOgorCiAyMDEyLTA2LTIyICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFRleHQgd2l0aCB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzIGFuZCB0ZXh0
LWFsaWduOnJpZ2h0IGlzIGxlZnQgYWxpZ25lZApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAkocmV2aXNpb24gMTIxMDc3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSwyMCBAQCBjbGFzcyBUcmVlU2NvcGU7CiBj
bGFzcyBOb2RlTGlzdHNOb2RlRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZUxp
c3RzTm9kZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBBdG9taWNTdHJpbmc+LCBEeW5h
bWljU3VidHJlZU5vZGVMaXN0Kj4gTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA7Ci0gICAgdHlw
ZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgU3RyaW5nPiwgRHluYW1pY1N1
YnRyZWVOb2RlTGlzdCo+IE5vZGVMaXN0TmFtZUNhY2hlTWFwOworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBTdHJpbmdUeXBlPgorICAgIHN0cnVjdCBOb2RlTGlzdENhY2hlTWFwRW50cnlIYXNoIHsK
KyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qgc3RkOjpwYWlyPFN0cmluZ1R5cGUs
IHVuc2lnbmVkIGNoYXI+JiBlbnRyeSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6RGVmYXVsdEhhc2g8U3RyaW5nVHlwZT46Okhhc2g6Omhhc2goZW50cnkuZmlyc3QpICsgZW50
cnkuc2Vjb25kOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
c3RkOjpwYWlyPFN0cmluZ1R5cGUsIHVuc2lnbmVkIGNoYXI+JiBhLCBjb25zdCBzdGQ6OnBhaXI8
U3RyaW5nVHlwZSwgdW5zaWduZWQgY2hhcj4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorCisgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gV1RG
OjpEZWZhdWx0SGFzaDxTdHJpbmdUeXBlPjo6SGFzaDo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQ7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8QXRvbWljU3Ry
aW5nLCB1bnNpZ25lZCBjaGFyPiwgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCosIE5vZGVMaXN0Q2Fj
aGVNYXBFbnRyeUhhc2g8QXRvbWljU3RyaW5nPiA+IE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFw
OworICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCB1bnNpZ25lZCBjaGFyPiwg
RHluYW1pY1N1YnRyZWVOb2RlTGlzdCosIE5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g8U3RyaW5n
PiA+IE5vZGVMaXN0TmFtZUNhY2hlTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWRO
YW1lLCBUYWdOb2RlTGlzdCo+IFRhZ05vZGVMaXN0Q2FjaGVOUzsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CkBAIC0xNTEsMTQgKzE2MywxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE5v
ZGVMaXN0c05vZGVEYXRhKCkgeyB9CiAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIEF0
b21pY1N0cmluZz4gbmFtZWROb2RlTGlzdEtleShEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlw
ZSBsaXN0VHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIHN0ZDo6cGFpcjxBdG9t
aWNTdHJpbmcsIHVuc2lnbmVkIHNob3J0PiBuYW1lZE5vZGVMaXN0S2V5KER5bmFtaWNOb2RlTGlz
dDo6Tm9kZUxpc3RUeXBlIGxpc3RUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBBdG9taWNTdHJpbmc+
KGxpc3RUeXBlLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcs
IHVuc2lnbmVkIHNob3J0PihuYW1lLCBsaXN0VHlwZSk7CiAgICAgfQogCi0gICAgc3RkOjpwYWly
PHVuc2lnbmVkIHNob3J0LCBTdHJpbmc+IG5hbWVkTm9kZUxpc3RLZXkoRHluYW1pY05vZGVMaXN0
OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICBzdGQ6OnBh
aXI8U3RyaW5nLCB1bnNpZ25lZCBzaG9ydD4gbmFtZWROb2RlTGlzdEtleShEeW5hbWljTm9kZUxp
c3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgU3RyaW5nPihsaXN0VHlwZSwg
bmFtZSk7CisgICAgICAgIHJldHVybiBzdGQ6OnBhaXI8U3RyaW5nLCB1bnNpZ25lZCBzaG9ydD4o
bmFtZSwgbGlzdFR5cGUpOwogICAgIH0KIAogICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFw
IG1fYXRvbWljTmFtZUNhY2hlczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149178</attachid>
            <date>2012-06-23 12:48:05 -0700</date>
            <delta_ts>2012-06-23 14:30:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-89783-20120623125245.patch</filename>
            <type>text/plain</type>
            <size>3698</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTIzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEyMDk3OSk6
IGdldEVsZW1lbnRzQnlUYWdOYW1lIGlzIDEyJSBzbG93ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBoYXNoaW5nIHN0ZDo6
cGFpcjx1bnNpZ25lZCBzaG9ydCwgQXRvbWljU3RyaW5nPiBpcyB2ZXJ5IHNsb3cgY29tcGFyZWQg
dG8ganVzdCBoYXNoaW5nIEF0b21pY1N0cmluZywKKyAgICAgICAgd2hpY2ggaW50ZXJuYWxseSBo
b2xkcyBhIGhhc2ggYWxyZWFkeS4gRml4ZWQgdGhlIHJlZ3Jlc3Npb24gYnkgcmVwbGFjaW5nIHRo
ZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gYnkgdGhlIG9uZSB0aGF0CisgICAgICAgIGNvbXB1dGVz
IEF0b21pY1N0cmluZydzIGhhc2ggKyBsaXN0IHR5cGUuIFRoaXMgaXMgb2theSBiZWNhdXNlIHdl
IG9ubHkgaGF2ZSA3IG5vZGUgbGlzdCB0eXBlcyBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICog
ZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoTm9kZUxpc3RzTm9kZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6Ok5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g6
Omhhc2gpOgorICAgICAgICAoTm9kZUxpc3RDYWNoZU1hcEVudHJ5SGFzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6Tm9kZUxpc3RDYWNoZU1hcEVudHJ5SGFzaDo6ZXF1
YWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6Om5hbWVkTm9kZUxpc3RL
ZXkpOgorCiAyMDEyLTA2LTIyICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFRleHQgd2l0aCB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzIGFuZCB0ZXh0LWFs
aWduOnJpZ2h0IGlzIGxlZnQgYWxpZ25lZApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aAkocmV2aXNpb24gMTIxMDc3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSwxOCBAQCBjbGFzcyBUcmVlU2NvcGU7CiBjbGFz
cyBOb2RlTGlzdHNOb2RlRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZUxpc3Rz
Tm9kZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0eXBlZGVm
IEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBBdG9taWNTdHJpbmc+LCBEeW5hbWlj
U3VidHJlZU5vZGVMaXN0Kj4gTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA7Ci0gICAgdHlwZWRl
ZiBIYXNoTWFwPHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgU3RyaW5nPiwgRHluYW1pY1N1YnRy
ZWVOb2RlTGlzdCo+IE5vZGVMaXN0TmFtZUNhY2hlTWFwOworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBTdHJpbmdUeXBlPgorICAgIHN0cnVjdCBOb2RlTGlzdENhY2hlTWFwRW50cnlIYXNoIDogcHVi
bGljIFdURjo6UGFpckhhc2g8dW5zaWduZWQgY2hhciwgU3RyaW5nVHlwZT4geworICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgU3RyaW5n
VHlwZT4mIGVudHJ5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8
U3RyaW5nVHlwZT46Okhhc2g6Omhhc2goZW50cnkuc2Vjb25kKSArIGVudHJ5LmZpcnN0OworICAg
ICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25l
ZCBjaGFyLCBTdHJpbmdUeXBlPiYgYSwgY29uc3Qgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIFN0
cmluZ1R5cGU+JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBEZWZhdWx0SGFzaDxTdHJpbmdUeXBl
Pjo6SGFzaDo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7CisgICAgfTsKKworICAgIHR5
cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPiwgRHlu
YW1pY1N1YnRyZWVOb2RlTGlzdCosIE5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g8QXRvbWljU3Ry
aW5nPiA+IE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxz
dGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgU3RyaW5nPiwgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCos
IE5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g8U3RyaW5nPiA+IE5vZGVMaXN0TmFtZUNhY2hlTWFw
OwogICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBUYWdOb2RlTGlzdCo+IFRhZ05v
ZGVMaXN0Q2FjaGVOUzsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xNTEsMTQgKzE2
MSwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE5vZGVMaXN0c05vZGVEYXRhKCkgeyB9CiAK
LSAgICBzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIEF0b21pY1N0cmluZz4gbmFtZWROb2RlTGlz
dEtleShEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQorICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+
IG5hbWVkTm9kZUxpc3RLZXkoRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnBh
aXI8dW5zaWduZWQgc2hvcnQsIEF0b21pY1N0cmluZz4obGlzdFR5cGUsIG5hbWUpOworICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIEF0b21pY1N0cmluZz4obGlzdFR5cGUs
IG5hbWUpOwogICAgIH0KIAotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgU3RyaW5nPiBu
YW1lZE5vZGVMaXN0S2V5KER5bmFtaWNOb2RlTGlzdDo6Tm9kZUxpc3RUeXBlIGxpc3RUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCisgICAgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIFN0cmluZz4g
bmFtZWROb2RlTGlzdEtleShEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjx1bnNp
Z25lZCBzaG9ydCwgU3RyaW5nPihsaXN0VHlwZSwgbmFtZSk7CisgICAgICAgIHJldHVybiBzdGQ6
OnBhaXI8dW5zaWduZWQgY2hhciwgU3RyaW5nPihsaXN0VHlwZSwgbmFtZSk7CiAgICAgfQogCiAg
ICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXAgbV9hdG9taWNOYW1lQ2FjaGVzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>