<?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>36359</bug_id>
          
          <creation_ts>2010-03-19 05:10:46 -0700</creation_ts>
          <short_desc>Double clicking page&apos;s last editable inline element doesn&apos;t select a word.</short_desc>
          <delta_ts>2010-08-09 04:43:41 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>hamaji</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>201813</commentid>
    <comment_count>0</comment_count>
      <attachid>51144</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-19 05:10:46 -0700</bug_when>
    <thetext>Created attachment 51144
a test case (also compatible with DRT)

Double clicking certain type of inline element  with contentEditable causes assertion failure.
See attached test-case for concrete example.

reproduce:
- open the test html
- double-click &quot;here&quot; text

expected:
- selection covers &quot;here&quot;
actual:
- assertion failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201826</commentid>
    <comment_count>1</comment_count>
      <attachid>51149</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-19 06:11:31 -0700</bug_when>
    <thetext>Created attachment 51149
patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202907</commentid>
    <comment_count>2</comment_count>
      <attachid>51390</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-22 20:37:22 -0700</bug_when>
    <thetext>Created attachment 51390
v1; cleanup test result</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203060</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-03-23 08:46:44 -0700</bug_when>
    <thetext>Looks good to me. I&apos;m assuming you ran all the layout tests and they pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203857</commentid>
    <comment_count>4</comment_count>
      <attachid>51390</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-25 00:16:42 -0700</bug_when>
    <thetext>Comment on attachment 51390
v1; cleanup test result

&gt; @@ -175,7 +175,7 @@ static VisiblePosition nextBoundary(const VisiblePosition&amp; c, BoundarySearchFunc
&gt;      Node *de = d-&gt;documentElement();
&gt;      if (!de)
&gt;          return VisiblePosition();
&gt; -    Node *boundary = n-&gt;enclosingBlockFlowElement();
&gt; +    Node* boundary = n;
&gt;      if (!boundary)
&gt;          return VisiblePosition();
&gt;      bool isContentEditable = boundary-&gt;isContentEditable();

I&apos;m not a good reviewer for this bug, but putting r- because I think we need some more work to fix the bug completely.

- I think we should remove &quot;if (!boundary)&quot; because it was already checked.
- With this patch, &quot;here&quot; is selected after the double click. Without this patch, it seems &quot;here&quot; isn&apos;t selected so I think you also fixed this issue and we need a test case for this.
- With the following HTML

&lt;div&gt;&lt;span id=&quot;target&quot; contentEditable=&quot;true&quot;&gt;here&lt;/span&gt; double click&lt;/div&gt;

&quot;here&quot; isn&apos;t selected when we double-click the target node. Is this related bug?

- (this is just a question) don&apos;t we also need to modify previousBoundary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204376</commentid>
    <comment_count>5</comment_count>
      <attachid>51710</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-25 19:05:00 -0700</bug_when>
    <thetext>Created attachment 51710
v2; remove redundant null-check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204378</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-25 19:11:57 -0700</bug_when>
    <thetext>Hi hamaji, thank you for reviewing!

&gt; - I think we should remove &quot;if (!boundary)&quot; because it was already checked.
Fixed.

&gt; - With this patch, &quot;here&quot; is selected after the double click. Without this
&gt; patch, it seems &quot;here&quot; isn&apos;t selected so I think you also fixed this issue and
&gt; we need a test case for this.
Selecting a word by double-click is an  expected behaviour.
In other word, current behaviour is wrong even without assertion failure.

&gt; - With the following HTML
&gt; 
&gt; &lt;div&gt;&lt;span id=&quot;target&quot; contentEditable=&quot;true&quot;&gt;here&lt;/span&gt; double click&lt;/div&gt;
&gt; 
&gt; &quot;here&quot; isn&apos;t selected when we double-click the target node. Is this related
&gt; bug?
Yes, as mentioned above. I&apos;ll change the summary line of this bug...

&gt; 
&gt; - (this is just a question) don&apos;t we also need to modify previousBoundary?
Yes, this cause a similar problem, which is filed on Bug 36360.
I&apos;ll fix that after this one is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225183</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-13 00:24:44 -0700</bug_when>
    <thetext>Another two-line editing patch that&apos;s been up for review for almost two months.  @enrica or @ojan, any interest in reviewing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228296</commentid>
    <comment_count>8</comment_count>
      <attachid>51710</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-20 03:15:48 -0700</bug_when>
    <thetext>Comment on attachment 51710
v2; remove redundant null-check

This looks ok.
I&apos;ll set r+ tomorrow if no one make comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228599</commentid>
    <comment_count>9</comment_count>
      <attachid>51710</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-20 15:27:06 -0700</bug_when>
    <thetext>Comment on attachment 51710
v2; remove redundant null-check

Sorry the review took so long.

Doesn&apos;t previousBoundary have the same bug? Would be good to understand why it doesn&apos;t or to fix it and add a testcase for that as well. r- for the previousBoundary issue.

LayoutTests/editing/selection/doubleclick-inline-last-contenteditable.html:45
 +  function flushLog()
This doesn&apos;t seem necessary since you only call log once in this test. You can move the logging logic into the log function.

LayoutTests/editing/selection/doubleclick-inline-last-contenteditable.html:29
 +      eventSender.leapForward(1);
These leapForward calls are not necessary to test double-click selecting a word. Just the mouseMoveTo, mouseDown and mouseUp calls are needed.

LayoutTests/editing/selection/doubleclick-inline-last-contenteditable.html:21
 +      pos.y += target.clientHeight/2;
nit: webkit style: there should be spaces around the /</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228755</commentid>
    <comment_count>10</comment_count>
      <attachid>56673</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-20 22:52:55 -0700</bug_when>
    <thetext>Created attachment 56673
took the feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228756</commentid>
    <comment_count>11</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-20 22:57:29 -0700</bug_when>
    <thetext>Hi Ojan, thank you for reviewing!

&gt; Doesn&apos;t previousBoundary have the same bug? Would be good to understand why it doesn&apos;t or to fix it and add a testcase for that as well. r- for the previousBoundary issue.
Yes. Although I&apos;ve filed the case to Bug 36360, It would be better to tackle these to same patch
because they&apos;ve caused from almost same problem, as you mentioned.
So I updated the patch to tackle both.
I&apos;ll close Bug 36360 after this patch is landed.

&gt; 
&gt; LayoutTests/editing/selection/doubleclick-inline-last-contenteditable.html:45
&gt;  +  function flushLog()
&gt; This doesn&apos;t seem necessary since you only call log once in this test. You can move the logging logic into the log function.
Fixed.

&gt; 
&gt; LayoutTests/editing/selection/doubleclick-inline-last-contenteditable.html:29
&gt;  +      eventSender.leapForward(1);
&gt; These leapForward calls are not necessary to test double-click selecting a word. Just the mouseMoveTo, mouseDown and mouseUp calls are needed.
Fixed.

&gt; 
&gt; LayoutTests/editing/selection/doubleclick-inline-last-contenteditable.html:21
&gt;  +      pos.y += target.clientHeight/2;
&gt; nit: webkit style: there should be spaces around the /
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229202</commentid>
    <comment_count>12</comment_count>
      <attachid>56673</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-21 18:36:53 -0700</bug_when>
    <thetext>Comment on attachment 56673
took the feedback

LayoutTests/editing/selection/doubleclick-inline-first-contenteditable.html:14
 +      while (n) {
You only need this code if you have positioned elements. For this test, you can just directly use target.offsetLeft, target.clientLeft, etc. No while loop needed.

LayoutTests/editing/selection/doubleclick-inline-first-contenteditable.html:30
 +      eventSender.leapForward(50);
You shouldn&apos;t need this leapFoward for a doubleclick. Did you find it didn&apos;t work without it?

Can you combine the two tests into one using HTML like the following: &lt;div&gt;&lt;span id=&quot;target&quot; contentEditable=&quot;true&quot;&gt;first&lt;/span&gt; double click &lt;span id=&quot;target&quot; contentEditable=&quot;true&quot;&gt;last&lt;/span&gt;&lt;/div&gt;

I tested that locally and it reproduced the bug for both cases.

WebCore/editing/visible_units.cpp:164
 +              // editing boundary. So we lookup editable node from the candidates.
I think this works correctly, but is a bit messy to fix it up after the fact. The best fix I can think of would be to modify TextIterator to have a TextIteratorBehavior that tells it to avoid crossing editing boundaries. I&apos;m sure this won&apos;t be the only case where we&apos;ll want TextIterators to respect editing boundaries. That&apos;s a complicated change though. I&apos;m OK with just adding FIXME here for now, but I&apos;d like feedback from other reviewers. r- for now for the test changes and adding this fixme.

Enrica, Mitz, does this seem OK to you? Do you agree that long-term we should make TextIterator editing-boundary-aware?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229203</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-21 18:38:23 -0700</bug_when>
    <thetext>+darin in case he has thoughts on editing boundaries + TextIterator. I would guess that we have a lot of bugs with contentEditable inline elements where TextIterator crosses editing boundaries and shouldn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229568</commentid>
    <comment_count>14</comment_count>
      <attachid>56842</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-23 19:06:23 -0700</bug_when>
    <thetext>Created attachment 56842
patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229572</commentid>
    <comment_count>15</comment_count>
      <attachid>56842</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-23 19:20:06 -0700</bug_when>
    <thetext>Comment on attachment 56842
patch v4

cancel v4 which misses some points</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229703</commentid>
    <comment_count>16</comment_count>
      <attachid>56873</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-24 05:14:08 -0700</bug_when>
    <thetext>Created attachment 56873
patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229705</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-24 05:15:27 -0700</bug_when>
    <thetext>Attachment 56873 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/editing/visible_units.cpp:81:  Declaration has space between type name and * in Document *d  [whitespace/declaration] [3]
WebCore/editing/visible_units.cpp:166:  Declaration has space between type name and * in Document *d  [whitespace/declaration] [3]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229707</commentid>
    <comment_count>18</comment_count>
      <attachid>56875</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-24 05:20:11 -0700</bug_when>
    <thetext>Created attachment 56875
patch v6 - fix lint violation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229708</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-24 05:20:41 -0700</bug_when>
    <thetext>Hi Ojan, thank you for feedback!

&gt; LayoutTests/editing/selection/doubleclick-inline-first-contenteditable.html:14
&gt;  +      while (n) {
&gt; You only need this code if you have positioned elements. For this test, you can just directly use target.offsetLeft, target.clientLeft, etc. No while loop needed.
Fixed.

&gt; LayoutTests/editing/selection/doubleclick-inline-first-contenteditable.html:30
&gt;  +      eventSender.leapForward(50);
&gt; You shouldn&apos;t need this leapFoward for a doubleclick. Did you find it didn&apos;t work without it?
Fixed.
&gt; 
&gt; Can you combine the two tests into one using HTML like the following: &lt;div&gt;&lt;span id=&quot;target&quot; contentEditable=&quot;true&quot;&gt;first&lt;/span&gt; double click &lt;span id=&quot;target&quot; contentEditable=&quot;true&quot;&gt;last&lt;/span&gt;&lt;/div&gt;
&gt;
Fixed to combine 2 into 1.
 
&gt; WebCore/editing/visible_units.cpp:164
&gt;  +              // editing boundary. So we lookup editable node from the candidates.
&gt; I think this works correctly, but is a bit messy to fix it up after the fact. The best fix I can think of would be to modify TextIterator to have a TextIteratorBehavior that tells it to avoid crossing editing boundaries. I&apos;m sure this won&apos;t be the only case where we&apos;ll want TextIterators to respect editing boundaries. That&apos;s a complicated change though. I&apos;m OK with just adding FIXME here for now, but I&apos;d like feedback from other reviewers. r- for now for the test changes and adding this fixme.
It seems good idea to make TextIterator aware editing-boundary.
So I did it for SimplifiedBackwardsTextIterator which we are using in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231023</commentid>
    <comment_count>20</comment_count>
      <attachid>56875</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-26 17:58:08 -0700</bug_when>
    <thetext>Comment on attachment 56875
patch v6 - fix lint violation

WebCore/ChangeLog:16
 +          TextIteratorEndsAtEditingBoundary.
These last two sentences are a bit confusing. How about something like this (assuming this is correct)?

Also, added TextIteratorEndsAtEditingBoundary to BackwardsCharacterIterator, otherwise, the VisiblePosition returned by BackwardsCharacterIterator might cross an editing boundary.

WebCore/dom/Node.cpp:1522
 +      Node* documentElement = document()-&gt;documentElement();
I know the if-statement below works if documentElement is null, but I would prefer to be more explicit, both for readability and in case the code below changed. Can you add a null-check here like there was in the old code?

WebCore/editing/TextIterator.cpp:954
 +      ASSERT(m_behavior == TextIteratorDefaultBehavior || m_behavior == TextIteratorEndsAtEditingBoundary);
I like this assert. Can you add one like this to the start of the TextIterator constructor as well and put a FIXME to add support for TextIteratorEndsAtEditingBoundary to TextIterator?

WebCore/editing/visible_units.cpp:165
 +      Node* boundary = pos.node()-&gt;editingBoundary();
This can return null. We should return VisiblePositon() in that case to match the old code.

WebCore/editing/visible_units.cpp:80
 +      Node* boundary = pos.node()-&gt;editingBoundary();
This can return null. We should return VisiblePositon() in that case to match the old code.

WebCore/dom/Node.cpp:1517
 +  Node* Node::editingBoundary() const
I like that you moved this into a shared function, but I don&apos;t think this belongs in Node. Really, there shouldn&apos;t be editing code in Node. The code that&apos;s there now needs to move elsewhere some day. For now, this could just live in visible_units.cpp. There are a couple editing methods there and I&apos;m not sure this will be needed elsewhere. If it turns out to be needed elsewhere, we might need to find a better home for it. The editing code in general needs a better home for a lot of code. 

WebCore/editing/TextIterator.cpp:1044
 +                  Node* parentNode = guardEditingBoundary(parentCrossingShadowBoundaries(m_node));
I think this code is correct, but it took me a good deal of looking at the code to figure out why. The key point is that we need to guard for crossing editing boundaries every time we set m_node. How about instead of this method we add something like the following:

void SimplifiedBackwardsTextIterator::setCurrentNode(Node* node)
{
    if (!m_node || !node)
        m_node = 0;

    if (m_behavior == TextIteratorEndsAtEditingBoundary
        &amp;&amp; m_node-&gt;isContentEditable() != node-&gt;isContentEditable())
        m_node = 0;

    m_node = node;
}

Then this code could be:
Node* parentNode = guardEditingBoundary(parentCrossingShadowBoundaries(m_node));
if (!parentNode)
    break;
setCurrentNode(parentNode)
if (!m_node)
// NOTE: I&apos;m not sure if we should break here, or if we should break right before the last line in the while loop.
    break;

And then below, it would just be setCurrentNode(next).

I&apos;m not too familiar with this code, so tell me if this makes no sense. I just want something that&apos;s a bit more clear that we need to guard whenever we set m_node.

If you don&apos;t want to do all this, the safer, smaller change would be to avoid trying to mix these two checks into one. Instead, add a crossesEditingBoundary method that returns a bool. Then break if parentNode crosses an editing boundary. I realize it&apos;s equivalent, but it puts the crossesEditingBoundary call right before setting m_node that way.

WebCore/editing/TextIterator.cpp:1144
 +      if (!m_node || !node)
I don&apos;t feel like this should early return for !m_node (and node for that matter). It&apos;s just there so the next if-statement doesn&apos;t crash, right? Instead, the if-statement below should check m_node and node.

That way, you can make it so that all the places we set m_node actually call setCurrentNode instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231025</commentid>
    <comment_count>21</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-26 18:00:13 -0700</bug_when>
    <thetext>darin, hamaji, mitz, I&apos;m not too familiar with the TextIterator code. You all have modified/reviewed it most recently. Mind taking a look to make sure the TextIterator changes are sane?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231184</commentid>
    <comment_count>22</comment_count>
      <attachid>57210</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-27 01:40:09 -0700</bug_when>
    <thetext>Created attachment 57210
patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231185</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-27 01:47:58 -0700</bug_when>
    <thetext>Hi Ojan, thank you for reviewing!

&gt;  +          TextIteratorEndsAtEditingBoundary.
&gt; These last two sentences are a bit confusing. How about something like this (assuming this is correct)?
&gt; 
&gt; Also, added TextIteratorEndsAtEditingBoundary to BackwardsCharacterIterator, otherwise, the VisiblePosition returned by BackwardsCharacterIterator might cross an editing boundary.
Ya, this is what I meant. I replaced with this one. Thank you for your suggestion!

&gt; 
&gt; WebCore/dom/Node.cpp:1522
&gt;  +      Node* documentElement = document()-&gt;documentElement();
&gt; I know the if-statement below works if documentElement is null, but I would prefer to be more explicit, both for readability and in case the code below changed. Can you add a null-check here like there was in the old code?
Fixed. The function itself was moved to Position::ascentEditingBoundary()

&gt; 
&gt; WebCore/editing/TextIterator.cpp:954
&gt;  +      ASSERT(m_behavior == TextIteratorDefaultBehavior || m_behavior == TextIteratorEndsAtEditingBoundary);
&gt; I like this assert. Can you add one like this to the start of the TextIterator constructor as well and put a FIXME to add support for TextIteratorEndsAtEditingBoundary to TextIterator?
Fixed.

&gt; 
&gt; WebCore/editing/visible_units.cpp:165
&gt;  +      Node* boundary = pos.node()-&gt;editingBoundary();
&gt; This can return null. We should return VisiblePositon() in that case to match the old code.
Fixed.

&gt; 
&gt; WebCore/editing/visible_units.cpp:80
&gt;  +      Node* boundary = pos.node()-&gt;editingBoundary();
&gt; This can return null. We should return VisiblePositon() in that case to match the old code.
Fixed.

&gt; 
&gt; WebCore/dom/Node.cpp:1517
&gt;  +  Node* Node::editingBoundary() const
&gt; I like that you moved this into a shared function, but I don&apos;t think this belongs in Node. Really, there shouldn&apos;t be editing code in Node. The code that&apos;s there now needs to move elsewhere some day. For now, this could just live in visible_units.cpp. There are a couple editing methods there and I&apos;m not sure this will be needed elsewhere. If it turns out to be needed elsewhere, we might need to find a better home for it. The editing code in general needs a better home for a lot of code. 
Agreed that Node should not have editing related methods.
I moved this to Position class where there are many editing related method around.

&gt; 
&gt; WebCore/editing/TextIterator.cpp:1044
&gt;  +                  Node* parentNode = guardEditingBoundary(parentCrossingShadowBoundaries(m_node));
&gt; I think this code is correct, but it took me a good deal of looking at the code to figure out why. The key point is that we need to guard for crossing editing boundaries every time we set m_node. How about instead of this method we add something like the following:
Sounds nice. I introduced setCurrentNode().

&gt; 
&gt; WebCore/editing/TextIterator.cpp:1144
&gt;  +      if (!m_node || !node)
&gt; I don&apos;t feel like this should early return for !m_node (and node for that matter). It&apos;s just there so the next if-statement doesn&apos;t crash, right? Instead, the if-statement below should check m_node and node.
Fixed to make null checks separate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231445</commentid>
    <comment_count>24</comment_count>
      <attachid>57210</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-27 13:40:34 -0700</bug_when>
    <thetext>Comment on attachment 57210
patch v7

I&apos;d like darin or mitz to comment since I&apos;m not as familiar with this code.

Just a few nits left from me.

Does the SimplifiedBackwardsTextIterator on TextIterator.cpp line 195 need TextIteratorEndsAtEditingBoundary as well?

WebCore/editing/TextIterator.cpp:1152
 +       if (!node)
Indentation is off.

WebCore/editing/TextIterator.cpp:1154
 +      if (!m_node)
I didn&apos;t quite mean that you&apos;d split up the null-checks here. What I meant was that if the m_node null-check were part of the if-statement on line 1156 instead, then you could use setCurrentNode for the initial setting of m_node in the constructor. Then, the only places where m_node is set would be in setCurrentNode and clearCurrentNode. So, specifically, something like this:

bool SimplifiedBackwardsTextIterator::setCurrentNode(Node* node)
{
    if (!node)
        return false;
    if (m_node &amp;&amp; m_behavior == TextIteratorEndsAtEditingBoundary &amp;&amp; willCrossEditingBoundary(node))
        return false;
    m_node = node;
    return true;
}

WebCore/editing/TextIterator.h:187
 +      bool willCrossEditingBoundary(Node* node) const;
Nit: I prefer the name crossesEditingBoundary

WebCore/dom/Position.h:145
 +      Node* ascentEditingBoundary() const;
This should probably be placed next to atEditingBoundary in the header file as well.

WebCore/dom/Position.cpp:335
 +      if (!m_anchorNode-&gt;document())
Just to clarify, I didn&apos;t mean that each null-check had to go on it&apos;s own line. It would be fine to combine 333 and 335 into one if-statement.

WebCore/dom/Position.cpp:331
 +  Node* Position::ascentEditingBoundary() const
How about parentEditingBoundary? I understand what you mean by &quot;ascent&quot;, but I don&apos;t think I would get it from calling code without looking at this function to figure out what it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231556</commentid>
    <comment_count>25</comment_count>
      <attachid>57292</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-27 21:59:19 -0700</bug_when>
    <thetext>Created attachment 57292
patch v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231558</commentid>
    <comment_count>26</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-27 22:05:29 -0700</bug_when>
    <thetext>Hi Ojan, thank you for reviewing.
Although It might be better to take a look from others,
I updated the patch to follow last feedback anyway.

&gt; Does the SimplifiedBackwardsTextIterator on TextIterator.cpp line 195 need TextIteratorEndsAtEditingBoundary as well?
It doesn&apos;t need such check because m_pastStartNode is used to stop m_node going next,
and m_node is already guarded by editing boundary in setCurrentNode().
The point is that previousInPostOrderCrossingShadowBoundaries() computes 
another kind of boundary what we should care other than editing-boundary.

&gt; 
&gt; WebCore/editing/TextIterator.cpp:1152
&gt;  +       if (!node)
&gt; Indentation is off.
Fixed

&gt; 
&gt; WebCore/editing/TextIterator.cpp:1154
&gt;  +      if (!m_node)
&gt; I didn&apos;t quite mean that you&apos;d split up the null-checks here. 
Fixed to move it out of the method, and use it in the ctor.

&gt; WebCore/editing/TextIterator.h:187
&gt;  +      bool willCrossEditingBoundary(Node* node) const;
&gt; Nit: I prefer the name crossesEditingBoundary
Fixed to rename crossesEditingBoundary().

&gt; 
&gt; WebCore/dom/Position.h:145
&gt;  +      Node* ascentEditingBoundary() const;
&gt; This should probably be placed next to atEditingBoundary in the header file as well.
Fixed.

&gt; 
&gt; WebCore/dom/Position.cpp:335
&gt;  +      if (!m_anchorNode-&gt;document())
&gt; Just to clarify, I didn&apos;t mean that each null-check had to go on it&apos;s own line. It would be fine to combine 333 and 335 into one if-statement.
Fixed to combine them.

&gt; 
&gt; WebCore/dom/Position.cpp:331
&gt;  +  Node* Position::ascentEditingBoundary() const
&gt; How about parentEditingBoundary? I understand what you mean by &quot;ascent&quot;, but I don&apos;t think I would get it from calling code without looking at this function to figure out what it does.
Agreed, and fixed to rename parentEditingBoundary().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238559</commentid>
    <comment_count>27</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-15 14:55:33 -0700</bug_when>
    <thetext>darin, mitz, mind taking a look at this? This patch looks good to me, but I&apos;m hesitant to r+ since I haven&apos;t hacked on TextIterator too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258553</commentid>
    <comment_count>28</comment_count>
      <attachid>57292</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-30 23:15:28 -0700</bug_when>
    <thetext>Comment on attachment 57292
patch v8

LayoutTests/editing/selection/doubleclick-inline-first-last-contenteditable-expected.txt:1
 +  here to double click, and there
Very confusing output.
Can you use the js-test-pre.js / js-test-post.js framework, and create a better test case?

That would also avoid having to write your custom log() function.
WebCore/editing/TextIterator.cpp:275
 +      // FIXME: should support TextIteratorEndsAtEditingBoundary
You should file a bug for that, and refer to it here.

WebCore/editing/TextIterator.cpp:950
 +      : m_behavior(TextIteratorDefaultBehavior), m_node(0), m_positionNode(0)
Each initialization belongs in its own line.

WebCore/editing/TextIterator.cpp:955
 +      : m_behavior(behavior), m_node(0), m_positionNode(0)
Ditto.

WebCore/editing/TextIterator.h:187
 +      bool crossesEditingBoundary(Node* node) const;
You can omit the &quot;node&quot; name here.

WebCore/editing/TextIterator.h:188
 +      bool setCurrentNode(Node* node);
Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261114</commentid>
    <comment_count>29</comment_count>
      <attachid>63698</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-08-05 23:30:13 -0700</bug_when>
    <thetext>Created attachment 63698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261118</commentid>
    <comment_count>30</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-08-05 23:33:21 -0700</bug_when>
    <thetext>Thank you for reviewing,  zimmermann!
I updated the patch.

&gt; LayoutTests/editing/selection/doubleclick-inline-first-last-contenteditable-expected.txt:1
&gt;  +  here to double click, and there
&gt; Very confusing output.
&gt; Can you use the js-test-pre.js / js-test-post.js framework, and create a better test case?

I see. I rewrote it with script test facility.

&gt; 
&gt; That would also avoid having to write your custom log() function.
&gt; WebCore/editing/TextIterator.cpp:275
&gt;  +      // FIXME: should support TextIteratorEndsAtEditingBoundary
&gt; You should file a bug for that, and refer to it here.

Filed at Bug 43609 and pointed it.

&gt; 
&gt; WebCore/editing/TextIterator.cpp:950
&gt;  +      : m_behavior(TextIteratorDefaultBehavior), m_node(0), m_positionNode(0)
&gt; Each initialization belongs in its own line.
Done

&gt; 
&gt; WebCore/editing/TextIterator.cpp:955
&gt;  +      : m_behavior(behavior), m_node(0), m_positionNode(0)
&gt; Ditto.
Done.

&gt; 
&gt; WebCore/editing/TextIterator.h:187
&gt;  +      bool crossesEditingBoundary(Node* node) const;
&gt; You can omit the &quot;node&quot; name here.
Done.

&gt; 
&gt; WebCore/editing/TextIterator.h:188
&gt;  +      bool setCurrentNode(Node* node);
&gt; Ditto.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261139</commentid>
    <comment_count>31</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-06 00:29:45 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Created an attachment (id=63698) [details]
&gt; Patch

Are you sure all of your change is well tested?  I&apos;m afraid about changes in visible_units and TextIterator because I&apos;ve been finding many bugs in those areas and I suspect that there aren&apos;t enough tests right now.

Your test seems to only test with mouse events, but your change will affect WebKit&apos;s behavior on keyboard events and window.getSelection().modify calls.  I&apos;ll really appreciate if you could add more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261520</commentid>
    <comment_count>32</comment_count>
      <attachid>63698</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-06 15:18:22 -0700</bug_when>
    <thetext>Comment on attachment 63698
Patch

&gt; +    // http://webkit.org/b/43609: should support TextIteratorEndsAtEditingBoundary 

Please add &quot;FIXME:&quot; at the start of this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262091</commentid>
    <comment_count>33</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-08-09 04:43:41 -0700</bug_when>
    <thetext>Committed r64974: &lt;http://trac.webkit.org/changeset/64974&gt;

(In reply to comment #31)
&gt; Your test seems to only test with mouse events, but your change will affect WebKit&apos;s behavior on keyboard events and window.getSelection().modify calls.  I&apos;ll really appreciate if you could add more tests.
Hi Ryosuke, thank you for your advice!
I&apos;ve added some more test that covers modify() and boundary detection across &lt;divs&gt;s, not only &lt;span&gt;s.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51144</attachid>
            <date>2010-03-19 05:10:46 -0700</date>
            <delta_ts>2010-03-19 05:10:46 -0700</delta_ts>
            <desc>a test case (also compatible with DRT)</desc>
            <filename>doubleclick-inline-last-contenteditable.html</filename>
            <type>text/html</type>
            <size>202</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RvdWJsZWNsaWNrLWlubGluZS1j
b250ZW50ZWRpdGFibGUuanMiPjwvc2NyaXB0Pgo8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CjxkaXY+
ZG91YmxlIGNsaWNrIDxzcGFuIGlkPSJ0YXJnZXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+aGVy
ZTwvc3Bhbj48L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51149</attachid>
            <date>2010-03-19 06:11:31 -0700</date>
            <delta_ts>2010-03-22 20:37:17 -0700</delta_ts>
            <desc>patch v0</desc>
            <filename>bug-36359-20100319221129.patch</filename>
            <type>text/plain</type>
            <size>4529</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNTc5ODhmLi5iZDVlZWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MTkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYz
NTk+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgbGFzdCBlZGl0YWJsZSBpbmxpbmUg
ZWxlbWVudCBjYXVzZXMgYXNzZXJ0aW9uIGZhaWx1cmUuCisKKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMTggIEppYW4g
TGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBU
aXRvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLWlubGluZS1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFi
bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYzY0
MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorQUxFUlQ6IDg5LDgKK2RvdWJsZSBjbGljayBoZXJlCitQQVNTCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1sYXN0
LWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2staW5saW5lLWxhc3QtY29udGVudGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNWZhZjQ1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1sYXN0LWNvbnRlbnRlZGl0
YWJsZS5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBnZXRQb3NpdGlvbk9mTm9kZShpZCkKK3sKKyAgICB2
YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworCisgICAgdmFyIHBvcyA9
IHt4OiAwLCB5OiAwfTsKKworICAgIHZhciBuID0gdGFyZ2V0OworICAgIHdoaWxlIChuKSB7Cisg
ICAgICAgIHBvcy54ICs9IG4ub2Zmc2V0TGVmdCArIG4uY2xpZW50TGVmdDsKKyAgICAgICAgcG9z
LnkgKz0gbi5vZmZzZXRUb3AgKyBuLmNsaWVudFRvcDsKKyAgICAgICAgbiA9IG4ub2Zmc2V0UGFy
ZW50OworICAgIH0KKworICAgIHBvcy54ICs9IHRhcmdldC5jbGllbnRXaWR0aC8yOworICAgIHBv
cy55ICs9IHRhcmdldC5jbGllbnRIZWlnaHQvMjsKKyAgICByZXR1cm4gcG9zOworfQorCitmdW5j
dGlvbiBkb3VibGVDbGlja1Bvc2l0aW9uKHBvcykKK3sKKyAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhwb3MueCwgcG9zLnkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworfQorCit2YXIgbG9nTWVzc2FnZXMgPSBbXTsKKworZnVuY3Rpb24gbG9nKG1zZykK
K3sKKyAgICBsb2dNZXNzYWdlcy5wdXNoKG1zZyk7Cit9CisKKy8vIEJlY2F1c2UgZXh0cmEgRE9N
IG5vZGVzIGhpZGUgdGhlIHByb2JsZW0sIHdlIGVtaXQgdGhlIGxvZ3MgYWZ0ZXIgYWxsIHRlc3Rz
IGFyZSBmaW5pc2hlZC4KK2Z1bmN0aW9uIGZsdXNoTG9nKCkKK3sKKyAgICB2YXIgY29uc29sZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByZSIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bG9nTWVzc2FnZXMubGVuZ3RoOyArK2kpCisgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IChs
b2dNZXNzYWdlc1tpXSArICJcbiIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29u
c29sZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBzZWwgPSBkb2N1bWVudC5n
ZXRTZWxlY3Rpb24oKTsKKyAKKyAgICB2YXIgcG9zID0gZ2V0UG9zaXRpb25PZk5vZGUoInRhcmdl
dCIpOworICAgIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKTsKKyAgICBhbGVydChwb3MueCArICAi
LCIgKyBwb3MueSk7CisKKyAgICB2YXIgZXhwZWN0ZWQgPSAiaGVyZSI7CisgICAgaWYgKGV4cGVj
dGVkID09IHNlbC50b1N0cmluZygpKQorICAgICAgIGxvZygiUEFTUyIpOworICAgIGVsc2UKKyAg
ICAgICBsb2coIkZBSUw6IiArIHNlbC50b1N0cmluZygpICsgIiAhPSAiICsgZXhwZWN0ZWQpOwor
CisgICAgZmx1c2hMb2coKTsKK30KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgor
PGRpdj5kb3VibGUgY2xpY2sgPHNwYW4gaWQ9InRhcmdldCIgY29udGVudEVkaXRhYmxlPSJ0cnVl
Ij5oZXJlPC9zcGFuPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2NlYTYxLi41NzQ4NmVlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDEwLTAzLTE5ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzM2MzU5PgorICAgICAgICBEb3VibGUgY2xpY2tpbmcgcGFnZSdz
IGxhc3QgZWRpdGFibGUgaW5saW5lIGVsZW1lbnQgY2F1c2VzIGFzc2VydGlvbiBmYWlsdXJlLgor
CisgICAgICAgIG5leHRCb3VuZGFyeSgpIGFzc3VtZWQgdGhhdCBlZGl0YWJsZSBib3VuZGFyaWVz
IGFyZSBvbiBibG9jay1sZXZlbAorICAgICAgICBlbGVtZW50cywgQnV0IGl0IGNhbiBhcHBlYXIg
b24gaW5saW5lLWxldmVsIGVsZW1lbnRzLiBTbyB3ZSBzdGFydAorICAgICAgICBib3VuZGFyeSBs
b29rLXVwIGZyb20gdGhlIGdpdmVuIG5vZGUsIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5pbmdCbG9j
aworICAgICAgICBvZiB0aGUgZ2l2ZW4gbm9kZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbAorICAg
ICAgICAKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bmV4dEJvdW5kYXJ5KToKKwogMjAxMC0wMy0xOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MzM4PiBSZW1v
dmUgdW51c2VkIFJlbmRlclJlcGxhY2VkOjphZGp1c3RPdmVyZmxvd0ZvckJveFNoYWRvd0FuZFJl
ZmxlY3QoKSBkZWNsYXJhdGlvbgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVf
dW5pdHMuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCmluZGV4IDNkODVh
ZDEuLjBlYmVmZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNw
cAorKysgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTE3NSw3ICsxNzUs
NyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogICAgIE5vZGUgKmRlID0gZC0+ZG9jdW1lbnRF
bGVtZW50KCk7CiAgICAgaWYgKCFkZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OwotICAgIE5vZGUgKmJvdW5kYXJ5ID0gbi0+ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpOwor
ICAgIE5vZGUqIGJvdW5kYXJ5ID0gbjsKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSA9IGJvdW5k
YXJ5LT5pc0NvbnRlbnRFZGl0YWJsZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51390</attachid>
            <date>2010-03-22 20:37:22 -0700</date>
            <delta_ts>2010-03-25 19:04:55 -0700</delta_ts>
            <desc>v1; cleanup test result</desc>
            <filename>bug-36359-20100323123721.patch</filename>
            <type>text/plain</type>
            <size>4483</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNTc5ODhmLi5iZDVlZWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MTkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYz
NTk+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgbGFzdCBlZGl0YWJsZSBpbmxpbmUg
ZWxlbWVudCBjYXVzZXMgYXNzZXJ0aW9uIGZhaWx1cmUuCisKKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMTggIEppYW4g
TGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBU
aXRvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLWlubGluZS1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFi
bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZDFk
MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorZG91YmxlIGNsaWNrIGhlcmUKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWxhc3QtY29udGVudGVkaXRh
YmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yNzdlZDEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWxhc3QtY29udGVudGVkaXRhYmxlLmh0bWwKQEAg
LTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworZnVuY3Rpb24gZ2V0UG9zaXRpb25PZk5vZGUoaWQpCit7CisgICAgdmFyIHRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKworICAgIHZhciBwb3MgPSB7eDogMCwgeTogMH07
CisKKyAgICB2YXIgbiA9IHRhcmdldDsKKyAgICB3aGlsZSAobikgeworICAgICAgICBwb3MueCAr
PSBuLm9mZnNldExlZnQgKyBuLmNsaWVudExlZnQ7CisgICAgICAgIHBvcy55ICs9IG4ub2Zmc2V0
VG9wICsgbi5jbGllbnRUb3A7CisgICAgICAgIG4gPSBuLm9mZnNldFBhcmVudDsKKyAgICB9CisK
KyAgICBwb3MueCArPSB0YXJnZXQuY2xpZW50V2lkdGgvMjsKKyAgICBwb3MueSArPSB0YXJnZXQu
Y2xpZW50SGVpZ2h0LzI7CisgICAgcmV0dXJuIHBvczsKK30KKworZnVuY3Rpb24gZG91YmxlQ2xp
Y2tQb3NpdGlvbihwb3MpCit7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zLngsIHBv
cy55KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFw
Rm9yd2FyZCgxKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIu
bGVhcEZvcndhcmQoNTApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50
U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKwor
dmFyIGxvZ01lc3NhZ2VzID0gW107CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgbG9nTWVz
c2FnZXMucHVzaChtc2cpOworfQorCisvLyBCZWNhdXNlIGV4dHJhIERPTSBub2RlcyBoaWRlIHRo
ZSBwcm9ibGVtLCB3ZSBlbWl0IHRoZSBsb2dzIGFmdGVyIGFsbCB0ZXN0cyBhcmUgZmluaXNoZWQu
CitmdW5jdGlvbiBmbHVzaExvZygpCit7CisgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJwcmUiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvZ01lc3NhZ2VzLmxl
bmd0aDsgKytpKQorICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAobG9nTWVzc2FnZXNbaV0g
KyAiXG4iKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOworfQorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7
CisgCisgICAgdmFyIHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKCJ0YXJnZXQiKTsKKyAgICBkb3Vi
bGVDbGlja1Bvc2l0aW9uKHBvcyk7CisKKyAgICB2YXIgZXhwZWN0ZWQgPSAiaGVyZSI7CisgICAg
aWYgKGV4cGVjdGVkID09IHNlbC50b1N0cmluZygpKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAg
ICBlbHNlCisgICAgICAgIGxvZygiRkFJTDoiICsgc2VsLnRvU3RyaW5nKCkgKyAiICE9ICIgKyBl
eHBlY3RlZCk7CisKKyAgICBmbHVzaExvZygpOworfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8ZGl2PmRvdWJsZSBjbGljayA8c3BhbiBpZD0idGFyZ2V0IiBjb250ZW50RWRp
dGFibGU9InRydWUiPmhlcmU8L3NwYW4+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBjY2VhNjEu
LjU3NDg2ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMtMTkgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNTk+CisgICAgICAgIERvdWJsZSBjbGlj
a2luZyBwYWdlJ3MgbGFzdCBlZGl0YWJsZSBpbmxpbmUgZWxlbWVudCBjYXVzZXMgYXNzZXJ0aW9u
IGZhaWx1cmUuCisKKyAgICAgICAgbmV4dEJvdW5kYXJ5KCkgYXNzdW1lZCB0aGF0IGVkaXRhYmxl
IGJvdW5kYXJpZXMgYXJlIG9uIGJsb2NrLWxldmVsCisgICAgICAgIGVsZW1lbnRzLCBCdXQgaXQg
Y2FuIGFwcGVhciBvbiBpbmxpbmUtbGV2ZWwgZWxlbWVudHMuIFNvIHdlIHN0YXJ0CisgICAgICAg
IGJvdW5kYXJ5IGxvb2stdXAgZnJvbSB0aGUgZ2l2ZW4gbm9kZSwgaW5zdGVhZCBvZiB0aGUgY29u
dGFpbmluZ0Jsb2NrCisgICAgICAgIG9mIHRoZSBnaXZlbiBub2RlLgorCisgICAgICAgIFRlc3Q6
IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1sYXN0LWNvbnRlbnRlZGl0YWJs
ZS5odG1sCisgICAgICAgIAorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkpOgorCiAyMDEwLTAzLTE4ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MzYzMzg+IFJlbW92ZSB1bnVzZWQgUmVuZGVyUmVwbGFjZWQ6OmFkanVzdE92ZXJmbG93Rm9yQm94
U2hhZG93QW5kUmVmbGVjdCgpIGRlY2xhcmF0aW9uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvdmlzaWJsZV91bml0cy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAK
aW5kZXggM2Q4NWFkMS4uMGViZWZmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2li
bGVfdW5pdHMuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcApAQCAt
MTc1LDcgKzE3NSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jCiAgICAgTm9kZSAqZGUgPSBk
LT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIWRlKQogICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7Ci0gICAgTm9kZSAqYm91bmRhcnkgPSBuLT5lbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KCk7CisgICAgTm9kZSogYm91bmRhcnkgPSBuOwogICAgIGlmICghYm91bmRhcnkpCiAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICBib29sIGlzQ29udGVudEVkaXRh
YmxlID0gYm91bmRhcnktPmlzQ29udGVudEVkaXRhYmxlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51710</attachid>
            <date>2010-03-25 19:05:00 -0700</date>
            <delta_ts>2010-05-20 22:52:48 -0700</delta_ts>
            <desc>v2; remove redundant null-check</desc>
            <filename>bug-36359-20100326110458.patch</filename>
            <type>text/plain</type>
            <size>4720</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNTc5ODhmLi5iZDVlZWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MTkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYz
NTk+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgbGFzdCBlZGl0YWJsZSBpbmxpbmUg
ZWxlbWVudCBjYXVzZXMgYXNzZXJ0aW9uIGZhaWx1cmUuCisKKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMTggIEppYW4g
TGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBU
aXRvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLWlubGluZS1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFi
bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZDFk
MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorZG91YmxlIGNsaWNrIGhlcmUKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWxhc3QtY29udGVudGVkaXRh
YmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yNzdlZDEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWxhc3QtY29udGVudGVkaXRhYmxlLmh0bWwKQEAg
LTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworZnVuY3Rpb24gZ2V0UG9zaXRpb25PZk5vZGUoaWQpCit7CisgICAgdmFyIHRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKworICAgIHZhciBwb3MgPSB7eDogMCwgeTogMH07
CisKKyAgICB2YXIgbiA9IHRhcmdldDsKKyAgICB3aGlsZSAobikgeworICAgICAgICBwb3MueCAr
PSBuLm9mZnNldExlZnQgKyBuLmNsaWVudExlZnQ7CisgICAgICAgIHBvcy55ICs9IG4ub2Zmc2V0
VG9wICsgbi5jbGllbnRUb3A7CisgICAgICAgIG4gPSBuLm9mZnNldFBhcmVudDsKKyAgICB9CisK
KyAgICBwb3MueCArPSB0YXJnZXQuY2xpZW50V2lkdGgvMjsKKyAgICBwb3MueSArPSB0YXJnZXQu
Y2xpZW50SGVpZ2h0LzI7CisgICAgcmV0dXJuIHBvczsKK30KKworZnVuY3Rpb24gZG91YmxlQ2xp
Y2tQb3NpdGlvbihwb3MpCit7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zLngsIHBv
cy55KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFw
Rm9yd2FyZCgxKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIu
bGVhcEZvcndhcmQoNTApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50
U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKwor
dmFyIGxvZ01lc3NhZ2VzID0gW107CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgbG9nTWVz
c2FnZXMucHVzaChtc2cpOworfQorCisvLyBCZWNhdXNlIGV4dHJhIERPTSBub2RlcyBoaWRlIHRo
ZSBwcm9ibGVtLCB3ZSBlbWl0IHRoZSBsb2dzIGFmdGVyIGFsbCB0ZXN0cyBhcmUgZmluaXNoZWQu
CitmdW5jdGlvbiBmbHVzaExvZygpCit7CisgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJwcmUiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvZ01lc3NhZ2VzLmxl
bmd0aDsgKytpKQorICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAobG9nTWVzc2FnZXNbaV0g
KyAiXG4iKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOworfQorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7
CisgCisgICAgdmFyIHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKCJ0YXJnZXQiKTsKKyAgICBkb3Vi
bGVDbGlja1Bvc2l0aW9uKHBvcyk7CisKKyAgICB2YXIgZXhwZWN0ZWQgPSAiaGVyZSI7CisgICAg
aWYgKGV4cGVjdGVkID09IHNlbC50b1N0cmluZygpKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAg
ICBlbHNlCisgICAgICAgIGxvZygiRkFJTDoiICsgc2VsLnRvU3RyaW5nKCkgKyAiICE9ICIgKyBl
eHBlY3RlZCk7CisKKyAgICBmbHVzaExvZygpOworfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8ZGl2PmRvdWJsZSBjbGljayA8c3BhbiBpZD0idGFyZ2V0IiBjb250ZW50RWRp
dGFibGU9InRydWUiPmhlcmU8L3NwYW4+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBjY2VhNjEu
LjU3NDg2ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMtMTkgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNTk+CisgICAgICAgIERvdWJsZSBjbGlj
a2luZyBwYWdlJ3MgbGFzdCBlZGl0YWJsZSBpbmxpbmUgZWxlbWVudCBjYXVzZXMgYXNzZXJ0aW9u
IGZhaWx1cmUuCisKKyAgICAgICAgbmV4dEJvdW5kYXJ5KCkgYXNzdW1lZCB0aGF0IGVkaXRhYmxl
IGJvdW5kYXJpZXMgYXJlIG9uIGJsb2NrLWxldmVsCisgICAgICAgIGVsZW1lbnRzLCBCdXQgaXQg
Y2FuIGFwcGVhciBvbiBpbmxpbmUtbGV2ZWwgZWxlbWVudHMuIFNvIHdlIHN0YXJ0CisgICAgICAg
IGJvdW5kYXJ5IGxvb2stdXAgZnJvbSB0aGUgZ2l2ZW4gbm9kZSwgaW5zdGVhZCBvZiB0aGUgY29u
dGFpbmluZ0Jsb2NrCisgICAgICAgIG9mIHRoZSBnaXZlbiBub2RlLgorCisgICAgICAgIFRlc3Q6
IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1sYXN0LWNvbnRlbnRlZGl0YWJs
ZS5odG1sCisgICAgICAgIAorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkpOgorCiAyMDEwLTAzLTE4ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MzYzMzg+IFJlbW92ZSB1bnVzZWQgUmVuZGVyUmVwbGFjZWQ6OmFkanVzdE92ZXJmbG93Rm9yQm94
U2hhZG93QW5kUmVmbGVjdCgpIGRlY2xhcmF0aW9uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvdmlzaWJsZV91bml0cy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAK
aW5kZXggM2Q4NWFkMS4uYTZlODYyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2li
bGVfdW5pdHMuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcApAQCAt
MTc1LDEwICsxNzUsOSBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogICAgIE5vZGUgKmRlID0g
ZC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFkZSkKICAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOwotICAgIE5vZGUgKmJvdW5kYXJ5ID0gbi0+ZW5jbG9zaW5nQmxvY2tGbG93
RWxlbWVudCgpOwotICAgIGlmICghYm91bmRhcnkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsKLSAgICBib29sIGlzQ29udGVudEVkaXRhYmxlID0gYm91bmRhcnktPmlzQ29udGVu
dEVkaXRhYmxlKCk7CisKKyAgICBib29sIGlzQ29udGVudEVkaXRhYmxlID0gbi0+aXNDb250ZW50
RWRpdGFibGUoKTsKKyAgICBOb2RlKiBib3VuZGFyeSA9IG47CiAgICAgd2hpbGUgKGJvdW5kYXJ5
ICYmIGJvdW5kYXJ5ICE9IGRlICYmIGJvdW5kYXJ5LT5wYXJlbnROb2RlKCkgJiYgaXNDb250ZW50
RWRpdGFibGUgPT0gYm91bmRhcnktPnBhcmVudE5vZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkK
ICAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56673</attachid>
            <date>2010-05-20 22:52:55 -0700</date>
            <delta_ts>2010-05-23 19:06:15 -0700</delta_ts>
            <desc>took the feedback</desc>
            <filename>bug-36359-20100521145253.patch</filename>
            <type>text/plain</type>
            <size>8612</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzhhNjBmMTk2MjlhMzYxODYyOGM2MmE5NDA5NGU2ODlhODJkZTExLi5kNmM5YmMx
Y2Y5ZWRhYmRjODc2MTE1NzBmZGVjMjI4NzY5ZDI5MTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDUtMjAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFi
bGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNlbGVjdCBhIHdvcmQuIAorICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5nIHBhZ2UncyBsYXN0
IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZS4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1jb250ZW50
ZWRpdGFibGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay1pbmxpbmUtZmlyc3QtY29udGVudGVkaXRhYmxlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1sYXN0LWNvbnRl
bnRlZGl0YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWlubGluZS1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sOiBBZGRlZC4K
KwogMjAxMC0wNS0yMCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWNvbnRlbnRl
ZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay1pbmxpbmUtZmlyc3QtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZTI5YWEyYmVjZmNhMWJmZTY3NTk4MmE1MzhhMzJiZmRmZWQyZjcwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5l
LWZpcnN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitoZXJl
IGRvdWJsZSBjbGljaworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtZmlyc3QtY29udGVudGVkaXRhYmxlLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtZmlyc3QtY29u
dGVudGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFiMjNlMDIxNzhkMjY4MWU3NmIwODkyNWJj
MDRiMzUzZDkzOTc3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1jb250ZW50ZWRpdGFibGUuaHRtbApAQCAt
MCwwICsxLDU5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
CitmdW5jdGlvbiBnZXRQb3NpdGlvbk9mTm9kZShpZCkKK3sKKyAgICB2YXIgdGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworCisgICAgdmFyIHBvcyA9IHt4OiAwLCB5OiAwfTsK
KworICAgIHZhciBuID0gdGFyZ2V0OworICAgIHdoaWxlIChuKSB7CisgICAgICAgIHBvcy54ICs9
IG4ub2Zmc2V0TGVmdCArIG4uY2xpZW50TGVmdDsKKyAgICAgICAgcG9zLnkgKz0gbi5vZmZzZXRU
b3AgKyBuLmNsaWVudFRvcDsKKyAgICAgICAgbiA9IG4ub2Zmc2V0UGFyZW50OworICAgIH0KKwor
ICAgIHBvcy54ICs9IHRhcmdldC5jbGllbnRXaWR0aCAvIDI7CisgICAgcG9zLnkgKz0gdGFyZ2V0
LmNsaWVudEhlaWdodCAvIDI7CisgICAgcmV0dXJuIHBvczsKK30KKworZnVuY3Rpb24gZG91Ymxl
Q2xpY2tQb3NpdGlvbihwb3MpCit7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zLngs
IHBvcy55KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoNTApOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rp
b24gbG9nKG1zZykKK3sKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InByZSIpOworICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4iKTsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisgCisgICAgdmFyIHBvcyA9
IGdldFBvc2l0aW9uT2ZOb2RlKCJ0YXJnZXQiKTsKKyAgICBkb3VibGVDbGlja1Bvc2l0aW9uKHBv
cyk7CisKKyAgICB2YXIgZXhwZWN0ZWQgPSAiaGVyZSI7CisgICAgaWYgKGV4cGVjdGVkID09IHNl
bC50b1N0cmluZygpKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxv
ZygiRkFJTDoiICsgc2VsLnRvU3RyaW5nKCkgKyAiICE9ICIgKyBleHBlY3RlZCk7Cit9Cis8L3Nj
cmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxkaXY+PHNwYW4gaWQ9InRhcmdldCIgY29u
dGVudEVkaXRhYmxlPSJ0cnVlIj5oZXJlPC9zcGFuPiBkb3VibGUgY2xpY2s8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Rv
dWJsZWNsaWNrLWlubGluZS1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50
ZWRpdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZDFkMWUzZGRiZDAxODU3YmFiYzJi
Y2QzZmI1NWQ0N2VmMzJhNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorZG91YmxlIGNsaWNrIGhlcmUKK1BBU1MKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWxh
c3QtY29udGVudGVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9k
b3VibGVjbGljay1pbmxpbmUtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
OTc4NmRiYjcwOGZhYWE0MGY2YmI5MTdmYWM5YWNjMDJjNTBhZmY2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWxhc3Qt
Y29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZ2V0UG9zaXRpb25PZk5vZGUoaWQp
Cit7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKworICAg
IHZhciBwb3MgPSB7eDogMCwgeTogMH07CisKKyAgICB2YXIgbiA9IHRhcmdldDsKKyAgICB3aGls
ZSAobikgeworICAgICAgICBwb3MueCArPSBuLm9mZnNldExlZnQgKyBuLmNsaWVudExlZnQ7Cisg
ICAgICAgIHBvcy55ICs9IG4ub2Zmc2V0VG9wICsgbi5jbGllbnRUb3A7CisgICAgICAgIG4gPSBu
Lm9mZnNldFBhcmVudDsKKyAgICB9CisKKyAgICBwb3MueCArPSB0YXJnZXQuY2xpZW50V2lkdGgg
LyAyOworICAgIHBvcy55ICs9IHRhcmdldC5jbGllbnRIZWlnaHQgLyAyOworICAgIHJldHVybiBw
b3M7Cit9CisKK2Z1bmN0aW9uIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKQoreworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHBvcy54LCBwb3MueSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VE
b3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgdmFy
IGNvbnNvbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwcmUiKTsKKyAgICBjb25zb2xlLmlu
bmVySFRNTCArPSAobXNnICsgIlxuIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChj
b25zb2xlKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHNlbCA9IGRvY3VtZW50
LmdldFNlbGVjdGlvbigpOworIAorICAgIHZhciBwb3MgPSBnZXRQb3NpdGlvbk9mTm9kZSgidGFy
Z2V0Iik7CisgICAgZG91YmxlQ2xpY2tQb3NpdGlvbihwb3MpOworCisgICAgdmFyIGV4cGVjdGVk
ID0gImhlcmUiOworICAgIGlmIChleHBlY3RlZCA9PSBzZWwudG9TdHJpbmcoKSkKKyAgICAgICAg
bG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUw6IiArIHNlbC50b1N0cmlu
ZygpICsgIiAhPSAiICsgZXhwZWN0ZWQpOworfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8ZGl2PmRvdWJsZSBjbGljayA8c3BhbiBpZD0idGFyZ2V0IiBjb250ZW50RWRpdGFi
bGU9InRydWUiPmhlcmU8L3NwYW4+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM2OGNlNmVmYWI5
YzIyNzQ4ZTViYTNhN2Q3NTRmNzIyY2U0NTBjY2YuLmU0NTJiNzA3MDFkYzU3MTVhMmNmMGFlMTUx
MDQ5YzQzY2NhMmQ3MzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDUtMjAgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNTk+CisgICAgICAgIERvdWJs
ZSBjbGlja2luZyBwYWdlJ3MgbGFzdCBlZGl0YWJsZSBpbmxpbmUgZWxlbWVudCBjYXVzZXMgYXNz
ZXJ0aW9uIGZhaWx1cmUuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MzYwPgorICAg
ICAgICBEb3VibGUgY2xpY2tpbmcgcGFnZSdzIGZpcnN0IGVkaXRhYmxlIGlubGluZSBlbGVtZW50
IGNhbm5vdCBzZWxlY3QgYSB3b3JkLiAKKworICAgICAgICBuZXh0Qm91bmRhcnkoKSBhbmQgcHJl
dmlvdXNCb3VuZGFyeSgpIGFzc3VtZWQgdGhhdCBlZGl0YWJsZQorICAgICAgICBib3VuZGFyaWVz
IGFyZSBvbiBibG9jay1sZXZlbCBlbGVtZW50cywgQnV0IGl0IGNhbiBhcHBlYXIgb24KKyAgICAg
ICAgaW5saW5lLWxldmVsIGVsZW1lbnRzLiBTbyB3ZSBzdGFydCBib3VuZGFyeSBsb29rLXVwIGZy
b20gdGhlIGdpdmVuCisgICAgICAgIG5vZGUsIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5pbmdCbG9j
ayBvZiB0aGUgZ2l2ZW4gbm9kZS4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtZmlyc3QtY29udGVudGVkaXRhYmxlLmh0bWwKKyAg
ICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1sYXN0LWNv
bnRlbnRlZGl0YWJsZS5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJvdW5kYXJ5KTogICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6cHJldmlvdXNCb3VuZGFyeSk6CisKIDIwMTAtMDUtMjAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAppbmRleCBjMDk0YWFjYTJiYjQ0Yjc2NGI1YWNkNmRm
ZmZiNDA5NWNhNDdlODhkLi4zYjcxODRiZDQyMTE3NTdkNzlkNGIxOTA3MGZmMzRiZWVmN2UxZjI1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBW
aXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMs
IEJvdW5kYXJ5U2VhcmNoCiAgICAgTm9kZSAqZGUgPSBkLT5kb2N1bWVudEVsZW1lbnQoKTsKICAg
ICBpZiAoIWRlKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgTm9kZSAq
Ym91bmRhcnkgPSBuLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7CisgICAgTm9kZSogYm91
bmRhcnkgPSBuOwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsKICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlID0gYm91bmRhcnktPmlzQ29udGVu
dEVkaXRhYmxlKCk7CkBAIC0xNTksNiArMTU5LDE1IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNo
CiAgICAgICAgICAgICBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvciBjaGFySXQoc2VhcmNoUmFu
Z2UuZ2V0KCkpOwogICAgICAgICAgICAgY2hhckl0LmFkdmFuY2Uoc3RyaW5nLnNpemUoKSAtIHN1
ZmZpeExlbmd0aCAtIG5leHQpOwogICAgICAgICAgICAgcG9zID0gY2hhckl0LnJhbmdlKCktPmVu
ZFBvc2l0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBwb3NpdGlvbiBoYXMgc29tZSB2
aXN1YWxseSBlcXVhbCBjYW5kaWRhdGVzLCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvciBwb3Nz
aWJseSBza2lwcworICAgICAgICAgICAgLy8gZWRpdGluZyBib3VuZGFyeS4gU28gd2UgbG9va3Vw
IGVkaXRhYmxlIG5vZGUgZnJvbSB0aGUgY2FuZGlkYXRlcy4KKyAgICAgICAgICAgIHdoaWxlIChw
b3Mubm9kZSgpICYmIHBvcy5ub2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkgIT0gaXNDb250ZW50
RWRpdGFibGUpIHsKKyAgICAgICAgICAgICAgICBQb3NpdGlvbiBkb3duc3RyZWFtID0gcG9zLmRv
d25zdHJlYW0oUG9zaXRpb246OkNhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAgICAg
ICAgICBpZiAoZG93bnN0cmVhbSA9PSBwb3MpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIHBvcyA9IGRvd25zdHJlYW07CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTE3NSwxMCArMTg0LDkgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBu
ZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMK
ICAgICBOb2RlICpkZSA9IGQtPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmICghZGUpCiAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICBOb2RlICpib3VuZGFyeSA9IG4tPmVu
Y2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoKTsKLSAgICBpZiAoIWJvdW5kYXJ5KQotICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSA9IGJv
dW5kYXJ5LT5pc0NvbnRlbnRFZGl0YWJsZSgpOworCisgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJs
ZSA9IG4tPmlzQ29udGVudEVkaXRhYmxlKCk7CisgICAgTm9kZSogYm91bmRhcnkgPSBuOwogICAg
IHdoaWxlIChib3VuZGFyeSAmJiBib3VuZGFyeSAhPSBkZSAmJiBib3VuZGFyeS0+cGFyZW50Tm9k
ZSgpICYmIGlzQ29udGVudEVkaXRhYmxlID09IGJvdW5kYXJ5LT5wYXJlbnROb2RlKCktPmlzQ29u
dGVudEVkaXRhYmxlKCkpCiAgICAgICAgIGJvdW5kYXJ5ID0gYm91bmRhcnktPnBhcmVudE5vZGUo
KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56842</attachid>
            <date>2010-05-23 19:06:23 -0700</date>
            <delta_ts>2010-05-24 05:14:00 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>bug-36359-20100524110621.patch</filename>
            <type>text/plain</type>
            <size>6190</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzhhNjBmMTk2MjlhMzYxODYyOGM2MmE5NDA5NGU2ODlhODJkZTExLi4yNWIxMWE1
ZGY0NjdlOGNkZThlN2Y4NGI1ODZlM2YxZWI3YzFhY2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDUtMjAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFi
bGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNlbGVjdCBhIHdvcmQuIAorICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5nIHBhZ2UncyBsYXN0
IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZS4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNv
bnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0wNS0yMCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0
LWxhc3QtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1ZDQ4OWQxYWI5Y2IyNDI3NTAyNWM4Y2QwMzM3OTJm
OWQzZTRlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitoZXJlIHRvIGRvdWJsZSBjbGljaywgYW5kIHRoZXJlCitQQVNT
CitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVu
dGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVlNDM4MTE0Yzg3ODg4ZTNkZjk4ODZhODc0YWY4
Nzc5N2JkMjM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sCkBA
IC0wLDAgKzEsNTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisKKyAgICByZXR1cm4geworICAgICAgIngiOiAg
dGFyZ2V0Lm9mZnNldExlZnQgKyB0YXJnZXQuY2xpZW50V2lkdGggLyAyLAorICAgICAgInkiOiAg
dGFyZ2V0Lm9mZnNldFRvcCAgKyB0YXJnZXQuY2xpZW50SGVpZ2h0IC8gMgorICAgIH07Cit9CisK
K2Z1bmN0aW9uIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKQoreworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHBvcy54LCBwb3MueSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAg
ICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByZSIpOworICAgIGNvbnNv
bGUuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4iKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGNvbnNvbGUpOworfQorCitmdW5jdGlvbiBzaG91bGRTZWxlY3QoaWQsIGV4cGVjdGVkVGV4
dCkKK3sKKyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisgCisgICAgdmFy
IHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKGlkKTsKKyAgICBkb3VibGVDbGlja1Bvc2l0aW9uKHBv
cyk7CisKKyAgICBpZiAoZXhwZWN0ZWRUZXh0ID09IHNlbC50b1N0cmluZygpKQorICAgICAgICBs
b2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDoiICsgc2VsLnRvU3RyaW5n
KCkgKyAiICE9ICIgKyBleHBlY3RlZFRleHQpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBzaG91bGRTZWxlY3QoImZpcnN0IiwgImhlcmUiKTsKKyAgICBzaG91bGRTZWxlY3QoImxhc3Qi
LCAidGhlcmUiKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2
PjxzcGFuIGlkPSJmaXJzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj5oZXJlPC9zcGFuPiB0byBk
b3VibGUgY2xpY2ssIGFuZCA8c3BhbiBpZD0ibGFzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj50
aGVyZTwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY4Y2U2ZWZhYjljMjI3NDhlNWJh
M2E3ZDc1NGY3MjJjZTQ1MGNjZi4uZGNlMzA5NWYzZTRlNjcwODBmMDIyMzVkOTExMGM0ODkwY2Uw
MDJlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNS0yMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5n
IHBhZ2UncyBsYXN0IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFp
bHVyZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJs
ZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFibGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNl
bGVjdCBhIHdvcmQuIAorCisgICAgICAgIG5leHRCb3VuZGFyeSgpIGFuZCBwcmV2aW91c0JvdW5k
YXJ5KCkgYXNzdW1lZCB0aGF0IGVkaXRhYmxlCisgICAgICAgIGJvdW5kYXJpZXMgYXJlIG9uIGJs
b2NrLWxldmVsIGVsZW1lbnRzLCBCdXQgaXQgY2FuIGFwcGVhciBvbgorICAgICAgICBpbmxpbmUt
bGV2ZWwgZWxlbWVudHMuIFNvIHdlIHN0YXJ0IGJvdW5kYXJ5IGxvb2stdXAgZnJvbSB0aGUgZ2l2
ZW4KKyAgICAgICAgbm9kZSwgaW5zdGVhZCBvZiB0aGUgY29udGFpbmluZ0Jsb2NrIG9mIHRoZSBn
aXZlbiBub2RlLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNr
LWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sICAgICAgICAKKworICAgICAg
ICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Qm91
bmRhcnkpOiAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0JvdW5kYXJ5KToKKwog
MjAxMC0wNS0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L3Zpc2libGVfdW5pdHMuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCmlu
ZGV4IGMwOTRhYWNhMmJiNDRiNzY0YjVhY2Q2ZGZmZmI0MDk1Y2E0N2U4OGQuLjNiNzE4NGJkNDIx
MTc1N2Q3OWQ0YjE5MDcwZmYzNGJlZWY3ZTFmMjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy92aXNpYmxlX3VuaXRzLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5k
YXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2gKICAgICBOb2RlICpk
ZSA9IGQtPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmICghZGUpCiAgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsKLSAgICBOb2RlICpib3VuZGFyeSA9IG4tPmVuY2xvc2luZ0Jsb2Nr
Rmxvd0VsZW1lbnQoKTsKKyAgICBOb2RlKiBib3VuZGFyeSA9IG47CiAgICAgaWYgKCFib3VuZGFy
eSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIGJvb2wgaXNDb250ZW50
RWRpdGFibGUgPSBib3VuZGFyeS0+aXNDb250ZW50RWRpdGFibGUoKTsKQEAgLTE1OSw2ICsxNTks
MTUgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2gKICAgICAgICAgICAgIEJhY2t3YXJkc0NoYXJh
Y3Rlckl0ZXJhdG9yIGNoYXJJdChzZWFyY2hSYW5nZS5nZXQoKSk7CiAgICAgICAgICAgICBjaGFy
SXQuYWR2YW5jZShzdHJpbmcuc2l6ZSgpIC0gc3VmZml4TGVuZ3RoIC0gbmV4dCk7CiAgICAgICAg
ICAgICBwb3MgPSBjaGFySXQucmFuZ2UoKS0+ZW5kUG9zaXRpb24oKTsKKworICAgICAgICAgICAg
Ly8gSWYgdGhlIHBvc2l0aW9uIGhhcyBzb21lIHZpc3VhbGx5IGVxdWFsIGNhbmRpZGF0ZXMsIEJh
Y2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yIHBvc3NpYmx5IHNraXBzCisgICAgICAgICAgICAvLyBl
ZGl0aW5nIGJvdW5kYXJ5LiBTbyB3ZSBsb29rdXAgZWRpdGFibGUgbm9kZSBmcm9tIHRoZSBjYW5k
aWRhdGVzLgorICAgICAgICAgICAgd2hpbGUgKHBvcy5ub2RlKCkgJiYgcG9zLm5vZGUoKS0+aXND
b250ZW50RWRpdGFibGUoKSAhPSBpc0NvbnRlbnRFZGl0YWJsZSkgeworICAgICAgICAgICAgICAg
IFBvc2l0aW9uIGRvd25zdHJlYW0gPSBwb3MuZG93bnN0cmVhbShQb3NpdGlvbjo6Q2FuQ3Jvc3NF
ZGl0aW5nQm91bmRhcnkpOworICAgICAgICAgICAgICAgIGlmIChkb3duc3RyZWFtID09IHBvcykK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcG9zID0gZG93bnN0
cmVhbTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMTc1LDEwICsxODQs
OSBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogICAgIE5vZGUgKmRlID0gZC0+ZG9jdW1lbnRF
bGVtZW50KCk7CiAgICAgaWYgKCFkZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OwotICAgIE5vZGUgKmJvdW5kYXJ5ID0gbi0+ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpOwot
ICAgIGlmICghYm91bmRhcnkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAg
ICBib29sIGlzQ29udGVudEVkaXRhYmxlID0gYm91bmRhcnktPmlzQ29udGVudEVkaXRhYmxlKCk7
CisKKyAgICBib29sIGlzQ29udGVudEVkaXRhYmxlID0gbi0+aXNDb250ZW50RWRpdGFibGUoKTsK
KyAgICBOb2RlKiBib3VuZGFyeSA9IG47CiAgICAgd2hpbGUgKGJvdW5kYXJ5ICYmIGJvdW5kYXJ5
ICE9IGRlICYmIGJvdW5kYXJ5LT5wYXJlbnROb2RlKCkgJiYgaXNDb250ZW50RWRpdGFibGUgPT0g
Ym91bmRhcnktPnBhcmVudE5vZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgYm91
bmRhcnkgPSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56873</attachid>
            <date>2010-05-24 05:14:08 -0700</date>
            <delta_ts>2010-05-24 05:20:03 -0700</delta_ts>
            <desc>patch v5</desc>
            <filename>bug-36359-20100524211405.patch</filename>
            <type>text/plain</type>
            <size>14274</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzhhNjBmMTk2MjlhMzYxODYyOGM2MmE5NDA5NGU2ODlhODJkZTExLi4yNWIxMWE1
ZGY0NjdlOGNkZThlN2Y4NGI1ODZlM2YxZWI3YzFhY2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDUtMjAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFi
bGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNlbGVjdCBhIHdvcmQuIAorICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5nIHBhZ2UncyBsYXN0
IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZS4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNv
bnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0wNS0yMCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0
LWxhc3QtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1ZDQ4OWQxYWI5Y2IyNDI3NTAyNWM4Y2QwMzM3OTJm
OWQzZTRlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitoZXJlIHRvIGRvdWJsZSBjbGljaywgYW5kIHRoZXJlCitQQVNT
CitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVu
dGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVlNDM4MTE0Yzg3ODg4ZTNkZjk4ODZhODc0YWY4
Nzc5N2JkMjM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sCkBA
IC0wLDAgKzEsNTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisKKyAgICByZXR1cm4geworICAgICAgIngiOiAg
dGFyZ2V0Lm9mZnNldExlZnQgKyB0YXJnZXQuY2xpZW50V2lkdGggLyAyLAorICAgICAgInkiOiAg
dGFyZ2V0Lm9mZnNldFRvcCAgKyB0YXJnZXQuY2xpZW50SGVpZ2h0IC8gMgorICAgIH07Cit9CisK
K2Z1bmN0aW9uIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKQoreworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHBvcy54LCBwb3MueSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAg
ICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByZSIpOworICAgIGNvbnNv
bGUuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4iKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGNvbnNvbGUpOworfQorCitmdW5jdGlvbiBzaG91bGRTZWxlY3QoaWQsIGV4cGVjdGVkVGV4
dCkKK3sKKyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisgCisgICAgdmFy
IHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKGlkKTsKKyAgICBkb3VibGVDbGlja1Bvc2l0aW9uKHBv
cyk7CisKKyAgICBpZiAoZXhwZWN0ZWRUZXh0ID09IHNlbC50b1N0cmluZygpKQorICAgICAgICBs
b2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDoiICsgc2VsLnRvU3RyaW5n
KCkgKyAiICE9ICIgKyBleHBlY3RlZFRleHQpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBzaG91bGRTZWxlY3QoImZpcnN0IiwgImhlcmUiKTsKKyAgICBzaG91bGRTZWxlY3QoImxhc3Qi
LCAidGhlcmUiKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2
PjxzcGFuIGlkPSJmaXJzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj5oZXJlPC9zcGFuPiB0byBk
b3VibGUgY2xpY2ssIGFuZCA8c3BhbiBpZD0ibGFzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj50
aGVyZTwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY4Y2U2ZWZhYjljMjI3NDhlNWJh
M2E3ZDc1NGY3MjJjZTQ1MGNjZi4uMzcxMjRiYTRhZmM1MThlY2EwOWM0MjMzZGY1NjY3NDYxMzJk
MTVhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wNS0yMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5n
IHBhZ2UncyBsYXN0IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFp
bHVyZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJs
ZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFibGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNl
bGVjdCBhIHdvcmQuIAorCisgICAgICAgIG5leHRCb3VuZGFyeSgpIGFuZCBwcmV2aW91c0JvdW5k
YXJ5KCkgYXNzdW1lZCB0aGF0IGVkaXRhYmxlCisgICAgICAgIGJvdW5kYXJpZXMgYXJlIG9uIGJs
b2NrLWxldmVsIGVsZW1lbnRzLCBCdXQgaXQgY2FuIGFwcGVhciBvbgorICAgICAgICBpbmxpbmUt
bGV2ZWwgZWxlbWVudHMuIFNvIHdlIHN0YXJ0IGJvdW5kYXJ5IGxvb2stdXAgZnJvbSB0aGUgZ2l2
ZW4KKyAgICAgICAgbm9kZSwgaW5zdGVhZCBvZiB0aGUgY29udGFpbmluZ0Jsb2NrIG9mIHRoZSBn
aXZlbiBub2RlLgorICAgICAgICBUaGVuLCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvciBpZ25v
cmVzIGVkaXRpbmcgYm91bmRhcnkuIAorICAgICAgICBTbyB0b29rIGl0IGNhcmUgaW50cm9kdWNp
bmcgVGV4dEl0ZXJhdG9yOjptX2JlaGF2aW9yIGFuZAorICAgICAgICBUZXh0SXRlcmF0b3JFbmRz
QXRFZGl0aW5nQm91bmRhcnkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVudGVkaXRhYmxlLmh0bWwgICAgICAgIAor
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZWRpdGlu
Z0JvdW5kYXJ5KTogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dh
cmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6Z3VhcmRF
ZGl0aW5nQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6QmFja3dhcmRzQ2hhcmFjdGVySXRl
cmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBlZGl0aW5nL3Zp
c2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNCb3VuZGFyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkpOgorCiAyMDEwLTA1LTIwICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
Um9iZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDBkYzFiN2EzZWM2YWYxNGFhMjZmNzMwMTZmNzAyNzRjM2U1NmY2N2IuLmY0
OTMxMzZlNDdiMjM5NzBhZWRiZGJhM2FjYzBlMDgzNDhlYzJmM2QgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNTE0LDYgKzE1
MTQsMTkgQEAgRWxlbWVudCAqTm9kZTo6ZW5jbG9zaW5nSW5saW5lRWxlbWVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIDA7CiB9CiAKK05vZGUqIE5vZGU6OmVkaXRpbmdCb3VuZGFyeSgpIGNvbnN0Cit7
CisgICAgaWYgKCFkb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5vZGUqIGRv
Y3VtZW50RWxlbWVudCA9IGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIE5vZGUq
IGJvdW5kYXJ5ID0gY29uc3RfY2FzdDxOb2RlKj4odGhpcyk7CisgICAgd2hpbGUgKGJvdW5kYXJ5
ICE9IGRvY3VtZW50RWxlbWVudCAmJiBib3VuZGFyeS0+cGFyZW50Tm9kZSgpICYmIHRoaXMtPmlz
Q29udGVudEVkaXRhYmxlKCkgPT0gYm91bmRhcnktPnBhcmVudE5vZGUoKS0+aXNDb250ZW50RWRp
dGFibGUoKSkKKyAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpOworICAg
IAorICAgIHJldHVybiBib3VuZGFyeTsKK30KKwogRWxlbWVudCogTm9kZTo6cm9vdEVkaXRhYmxl
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogcmVzdWx0ID0gMDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL05vZGUuaCBiL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBkNmJhOGQ2ZTJl
N2ZhMjEzNDQxMTJlYzBmOWI4ZmI3MWFiNmYyYzRkLi5jOTYxYzhiOGM4ZGQwZmFhM2MzOTNhM2E3
MGYzNTI3ODJkMzcyMzRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvV2Vi
Q29yZS9kb20vTm9kZS5oCkBAIC0yNTgsNyArMjU4LDggQEAgcHVibGljOgogICAgIAogICAgIEVs
ZW1lbnQqIGVuY2xvc2luZ0lubGluZUVsZW1lbnQoKSBjb25zdDsKICAgICBFbGVtZW50KiByb290
RWRpdGFibGVFbGVtZW50KCkgY29uc3Q7Ci0gICAgCisgICAgTm9kZSogZWRpdGluZ0JvdW5kYXJ5
KCkgY29uc3Q7CisKICAgICBib29sIGluU2FtZUNvbnRhaW5pbmdCbG9ja0Zsb3dFbGVtZW50KE5v
ZGUqKTsKICAgICAKICAgICAvLyBVc2VkIGJ5IHRoZSBwYXJzZXIuIENoZWNrcyBhZ2FpbnN0IHRo
ZSBEVEQsIHVubGlrZSBET00gb3BlcmF0aW9ucyBsaWtlIGFwcGVuZENoaWxkKCkuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCmluZGV4IGYzYmQ5ZGY2YjlmOTViZjMwZGRhMmEzMGU3MjZkNzM1ZjE4
ZjhiMWYuLjA0MWNlOWFmMDI5NzhkODlkMTdhOTYyZDM5NTkxNTdiNmI1Yjk5MGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCkBAIC05NDQsMTMgKzk0NCwxNSBAQCBOb2RlKiBUZXh0SXRlcmF0
b3I6Om5vZGUoKSBjb25zdAogLy8gLS0tLS0tLS0KIAogU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcigpCi0gICAgOiBtX3Bvc2l0
aW9uTm9kZSgwKQorICAgIDogbV9iZWhhdmlvcihUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ip
LCBtX3Bvc2l0aW9uTm9kZSgwKQogewogfQogCi1TaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJh
dG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByKQotICAg
IDogbV9wb3NpdGlvbk5vZGUoMCkKK1NpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRv
ckJlaGF2aW9yIGJlaGF2aW9yKQorICAgIDogbV9iZWhhdmlvcihiZWhhdmlvciksIG1fcG9zaXRp
b25Ob2RlKDApCiB7CisgICAgQVNTRVJUKG1fYmVoYXZpb3IgPT0gVGV4dEl0ZXJhdG9yRGVmYXVs
dEJlaGF2aW9yIHx8IG1fYmVoYXZpb3IgPT0gVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5k
YXJ5KTsKKwogICAgIGlmICghcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDM4LDkgKzEwNDAs
OCBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAg
ICAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8v
IEV4aXQgYWxsIG90aGVyIGNvbnRhaW5lcnMuCi0gICAgICAgICAgICBuZXh0ID0gbV9ub2RlLT5w
cmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgICAgIHdoaWxlICghbmV4dCkgewotICAgICAgICAg
ICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSBwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMo
bV9ub2RlKTsKKyAgICAgICAgICAgIHdoaWxlICghbV9ub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkg
eworICAgICAgICAgICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSBndWFyZEVkaXRpbmdCb3VuZGFy
eShwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMobV9ub2RlKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwYXJlbnROb2RlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICBtX25vZGUgPSBwYXJlbnROb2RlOwpAQCAtMTA1MSwxMiArMTA1MiwxMyBAQCB2b2lk
IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAg
ICAgICAgICBtX2hhbmRsZWRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV4dCA9IG1fbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5leHQgPSBt
X25vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFj
ay5wb3AoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9ub2RlID0gbmV4dDsKKyAg
ICAgICAgbV9ub2RlID0gZ3VhcmRFZGl0aW5nQm91bmRhcnkobmV4dCk7CiAgICAgICAgIGlmICht
X25vZGUpCiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9mdWxseUNsaXBwZWRT
dGFjaywgbV9ub2RlKTsKICAgICAgICAgLy8gRm9yIHRoZSBwdXJwb3NlIG9mIHdvcmQgYm91bmRh
cnkgZGV0ZWN0aW9uLApAQCAtMTEzNyw2ICsxMTM5LDE2IEBAIHZvaWQgU2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBjLCBOb2RlKiBub2RlLCBpbnQg
c3RhCiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gYzsKIH0KIAorTm9kZSogU2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6Z3VhcmRFZGl0aW5nQm91bmRhcnkoTm9kZSogbm9kZSkgY29uc3QK
K3sKKyAgICBpZiAoIW1fbm9kZSB8fCAhbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KG1fYmVoYXZpb3IgPT0gVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5kYXJ5CisgICAgICAg
ICYmIG1fbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSAhPSBub2RlLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbm9kZTsKK30KKwogUGFzc1JlZlB0
cjxSYW5nZT4gU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAog
ewogICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkKQEAgLTEyNjIsMTEgKzEyNzQsMTEgQEAgQmFja3dh
cmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKCkKIHsKIH0K
IAotQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9y
KGNvbnN0IFJhbmdlKiByYW5nZSkKK0JhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2Fy
ZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2
aW9yIGJlaGF2aW9yKQogICAgIDogbV9vZmZzZXQoMCkKICAgICAsIG1fcnVuT2Zmc2V0KDApCiAg
ICAgLCBtX2F0QnJlYWsodHJ1ZSkKLSAgICAsIG1fdGV4dEl0ZXJhdG9yKHJhbmdlKQorICAgICwg
bV90ZXh0SXRlcmF0b3IocmFuZ2UsIGJlaGF2aW9yKQogewogICAgIHdoaWxlICghYXRFbmQoKSAm
JiAhbV90ZXh0SXRlcmF0b3IubGVuZ3RoKCkpCiAgICAgICAgIG1fdGV4dEl0ZXJhdG9yLmFkdmFu
Y2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBiYTM4MWI5YmZhNDRhNzlkMTA2NDk5OWQy
YzYwN2JlNjlmNzZhODkzLi5jZjQ0NmUyZTE1NGJjNGJkYTQxZTlhZTdmOWZjZjdlOGMwOGY1ZGMz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC03Myw2ICs3Myw3IEBAIGVudW0gVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgewogICAgIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxW
aXNpYmxlUG9zaXRpb25zID0gMSA8PCAwLAogICAgIFRleHRJdGVyYXRvckVudGVyc1RleHRDb250
cm9scyA9IDEgPDwgMSwKICAgICBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29k
aW5nID0gMSA8PCAyLAorICAgIFRleHRJdGVyYXRvckVuZHNBdEVkaXRpbmdCb3VuZGFyeSA9IDEg
PDwgMwogfTsKIAogY2xhc3MgVGV4dEl0ZXJhdG9yIHsKQEAgLTE2Nyw3ICsxNjgsNyBAQCBwcml2
YXRlOgogY2xhc3MgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciB7CiBwdWJsaWM6CiAg
ICAgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0IFNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqKTsKKyAgICBleHBsaWNpdCBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIAogICAgIGJvb2wg
YXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICB2b2lkIGFkdmFu
Y2UoKTsKQEAgLTE4Myw3ICsxODQsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlUmVwbGFj
ZWRFbGVtZW50KCk7CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZvaWQgZW1p
dENoYXJhY3RlcihVQ2hhciwgTm9kZSosIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7
Ci0gICAgCisgICAgTm9kZSogZ3VhcmRFZGl0aW5nQm91bmRhcnkoTm9kZSopIGNvbnN0OworCisg
ICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgbV9iZWhhdmlvcjsKICAgICAvLyBDdXJyZW50IHBvc2l0
aW9uLCBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1dCBwb3Np
dGlvbgogICAgIC8vIGFzIHdlIHdhbGsgdGhyb3VnaCB0aGUgRE9NIHRyZWUuCiAgICAgTm9kZSog
bV9ub2RlOwpAQCAtMjQ3LDcgKzI1MCw3IEBAIHByaXZhdGU6CiBjbGFzcyBCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3Io
KTsKLSAgICBleHBsaWNpdCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSop
OworICAgIGV4cGxpY2l0IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwg
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogCiAg
ICAgdm9pZCBhZHZhbmNlKGludCk7CiAKQEAgLTI1Niw2ICsyNTksNyBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBUZXh0SXRl
cmF0b3JCZWhhdmlvciBtX2JlaGF2aW9yOwogICAgIGludCBtX29mZnNldDsKICAgICBpbnQgbV9y
dW5PZmZzZXQ7CiAgICAgYm9vbCBtX2F0QnJlYWs7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvdmlzaWJsZV91bml0cy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAK
aW5kZXggYzA5NGFhY2EyYmI0NGI3NjRiNWFjZDZkZmZmYjQwOTVjYTQ3ZTg4ZC4uYWQ2N2I5YzBh
MDAzY2U5OTk3NzNlMDFhMTcwOTM2ODc4ODdhMjMwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0
aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRz
LmNwcApAQCAtNzUsMTkgKzc1LDEwIEBAIHR5cGVkZWYgdW5zaWduZWQgKCpCb3VuZGFyeVNlYXJj
aEZ1bmN0aW9uKShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduCiBzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
LCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uIHNlYXJjaEZ1bmN0aW9uKQogewogICAgIFBvc2l0aW9u
IHBvcyA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBOb2RlICpuID0gcG9zLm5vZGUoKTsKLSAg
ICBpZiAoIW4pCisgICAgaWYgKHBvcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOwotICAgIERvY3VtZW50ICpkID0gbi0+ZG9jdW1lbnQoKTsKLSAgICBOb2RlICpk
ZSA9IGQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIGlmICghZGUpCi0gICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsKLSAgICBOb2RlICpib3VuZGFyeSA9IG4tPmVuY2xvc2luZ0Jsb2Nr
Rmxvd0VsZW1lbnQoKTsKLSAgICBpZiAoIWJvdW5kYXJ5KQotICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7Ci0gICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSA9IGJvdW5kYXJ5LT5pc0Nv
bnRlbnRFZGl0YWJsZSgpOwotICAgIHdoaWxlIChib3VuZGFyeSAmJiBib3VuZGFyeSAhPSBkZSAm
JiBib3VuZGFyeS0+cGFyZW50Tm9kZSgpICYmIGlzQ29udGVudEVkaXRhYmxlID09IGJvdW5kYXJ5
LT5wYXJlbnROb2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAgICAgIGJvdW5kYXJ5ID0g
Ym91bmRhcnktPnBhcmVudE5vZGUoKTsKKyAgICBOb2RlKiBib3VuZGFyeSA9IHBvcy5ub2RlKCkt
PmVkaXRpbmdCb3VuZGFyeSgpOworICAgIERvY3VtZW50ICpkID0gYm91bmRhcnktPmRvY3VtZW50
KCk7CiAKICAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChQb3Np
dGlvbihib3VuZGFyeSwgMCkpOwogICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlQ29tcGxpYW50RXF1
aXZhbGVudChwb3MpOwpAQCAtMTIxLDcgKzExMiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNo
CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSAgICBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpKTsKKyAg
ICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpLCBU
ZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkpOwogICAgIHVuc2lnbmVkIG5leHQgPSAw
OwogICAgIGJvb2wgaW5UZXh0U2VjdXJpdHlNb2RlID0gc3RhcnQubm9kZSgpICYmIHN0YXJ0Lm5v
ZGUoKS0+cmVuZGVyZXIoKSAmJiBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCktPnRl
eHRTZWN1cml0eSgpICE9IFRTTk9ORTsKICAgICBib29sIG5lZWRNb3JlQ29udGV4dCA9IGZhbHNl
OwpAQCAtMTU2LDcgKzE0Nyw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3Vu
ZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoCiAgICAgICAgICAg
ICBwb3MgPSBQb3NpdGlvbihub2RlLCBuZXh0KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAvLyBVc2UgdGhlIGNoYXJhY3RlciBpdGVyYXRvciB0byB0cmFuc2xhdGUgdGhlIG5leHQgdmFs
dWUgaW50byBhIERPTSBwb3NpdGlvbi4KLSAgICAgICAgICAgIEJhY2t3YXJkc0NoYXJhY3Rlckl0
ZXJhdG9yIGNoYXJJdChzZWFyY2hSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBCYWNrd2FyZHND
aGFyYWN0ZXJJdGVyYXRvciBjaGFySXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckVu
ZHNBdEVkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgICAgICBjaGFySXQuYWR2YW5jZShzdHJpbmcu
c2l6ZSgpIC0gc3VmZml4TGVuZ3RoIC0gbmV4dCk7CiAgICAgICAgICAgICBwb3MgPSBjaGFySXQu
cmFuZ2UoKS0+ZW5kUG9zaXRpb24oKTsKICAgICAgICAgfQpAQCAtMTY4LDIwICsxNTksMTEgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgYywgQm91bmRhcnlTZWFyY2gKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5k
YXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jdGlvbiBzZWFy
Y2hGdW5jdGlvbikKIHsKICAgICBQb3NpdGlvbiBwb3MgPSBjLmRlZXBFcXVpdmFsZW50KCk7Ci0g
ICAgTm9kZSAqbiA9IHBvcy5ub2RlKCk7Ci0gICAgaWYgKCFuKQotICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7Ci0gICAgRG9jdW1lbnQgKmQgPSBuLT5kb2N1bWVudCgpOwotICAgIE5v
ZGUgKmRlID0gZC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFkZSkKLSAgICAgICAgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIE5vZGUgKmJvdW5kYXJ5ID0gbi0+ZW5jbG9zaW5n
QmxvY2tGbG93RWxlbWVudCgpOwotICAgIGlmICghYm91bmRhcnkpCisgICAgaWYgKHBvcy5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIGJvb2wgaXNDb250
ZW50RWRpdGFibGUgPSBib3VuZGFyeS0+aXNDb250ZW50RWRpdGFibGUoKTsKLSAgICB3aGlsZSAo
Ym91bmRhcnkgJiYgYm91bmRhcnkgIT0gZGUgJiYgYm91bmRhcnktPnBhcmVudE5vZGUoKSAmJiBp
c0NvbnRlbnRFZGl0YWJsZSA9PSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0
YWJsZSgpKQotICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5LT5wYXJlbnROb2RlKCk7CiAKKyAg
ICBOb2RlKiBib3VuZGFyeSA9IHBvcy5ub2RlKCktPmVkaXRpbmdCb3VuZGFyeSgpOworICAgIERv
Y3VtZW50ICpkID0gYm91bmRhcnktPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPFJhbmdlPiBzZWFy
Y2hSYW5nZShkLT5jcmVhdGVSYW5nZSgpKTsKICAgICBQb3NpdGlvbiBzdGFydChyYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQocG9zKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56875</attachid>
            <date>2010-05-24 05:20:11 -0700</date>
            <delta_ts>2010-05-27 01:40:00 -0700</delta_ts>
            <desc>patch v6 - fix lint violation</desc>
            <filename>bug-36359-20100524212010.patch</filename>
            <type>text/plain</type>
            <size>14274</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzhhNjBmMTk2MjlhMzYxODYyOGM2MmE5NDA5NGU2ODlhODJkZTExLi4yNWIxMWE1
ZGY0NjdlOGNkZThlN2Y4NGI1ODZlM2YxZWI3YzFhY2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDUtMjAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFi
bGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNlbGVjdCBhIHdvcmQuIAorICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5nIHBhZ2UncyBsYXN0
IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZS4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNv
bnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0wNS0yMCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0
LWxhc3QtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1ZDQ4OWQxYWI5Y2IyNDI3NTAyNWM4Y2QwMzM3OTJm
OWQzZTRlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitoZXJlIHRvIGRvdWJsZSBjbGljaywgYW5kIHRoZXJlCitQQVNT
CitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVu
dGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVlNDM4MTE0Yzg3ODg4ZTNkZjk4ODZhODc0YWY4
Nzc5N2JkMjM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sCkBA
IC0wLDAgKzEsNTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisKKyAgICByZXR1cm4geworICAgICAgIngiOiAg
dGFyZ2V0Lm9mZnNldExlZnQgKyB0YXJnZXQuY2xpZW50V2lkdGggLyAyLAorICAgICAgInkiOiAg
dGFyZ2V0Lm9mZnNldFRvcCAgKyB0YXJnZXQuY2xpZW50SGVpZ2h0IC8gMgorICAgIH07Cit9CisK
K2Z1bmN0aW9uIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKQoreworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHBvcy54LCBwb3MueSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAg
ICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByZSIpOworICAgIGNvbnNv
bGUuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4iKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGNvbnNvbGUpOworfQorCitmdW5jdGlvbiBzaG91bGRTZWxlY3QoaWQsIGV4cGVjdGVkVGV4
dCkKK3sKKyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisgCisgICAgdmFy
IHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKGlkKTsKKyAgICBkb3VibGVDbGlja1Bvc2l0aW9uKHBv
cyk7CisKKyAgICBpZiAoZXhwZWN0ZWRUZXh0ID09IHNlbC50b1N0cmluZygpKQorICAgICAgICBs
b2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDoiICsgc2VsLnRvU3RyaW5n
KCkgKyAiICE9ICIgKyBleHBlY3RlZFRleHQpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBzaG91bGRTZWxlY3QoImZpcnN0IiwgImhlcmUiKTsKKyAgICBzaG91bGRTZWxlY3QoImxhc3Qi
LCAidGhlcmUiKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2
PjxzcGFuIGlkPSJmaXJzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj5oZXJlPC9zcGFuPiB0byBk
b3VibGUgY2xpY2ssIGFuZCA8c3BhbiBpZD0ibGFzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj50
aGVyZTwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY4Y2U2ZWZhYjljMjI3NDhlNWJh
M2E3ZDc1NGY3MjJjZTQ1MGNjZi4uMzcxMjRiYTRhZmM1MThlY2EwOWM0MjMzZGY1NjY3NDYxMzJk
MTVhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wNS0yMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5n
IHBhZ2UncyBsYXN0IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFp
bHVyZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJs
ZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFibGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNl
bGVjdCBhIHdvcmQuIAorCisgICAgICAgIG5leHRCb3VuZGFyeSgpIGFuZCBwcmV2aW91c0JvdW5k
YXJ5KCkgYXNzdW1lZCB0aGF0IGVkaXRhYmxlCisgICAgICAgIGJvdW5kYXJpZXMgYXJlIG9uIGJs
b2NrLWxldmVsIGVsZW1lbnRzLCBCdXQgaXQgY2FuIGFwcGVhciBvbgorICAgICAgICBpbmxpbmUt
bGV2ZWwgZWxlbWVudHMuIFNvIHdlIHN0YXJ0IGJvdW5kYXJ5IGxvb2stdXAgZnJvbSB0aGUgZ2l2
ZW4KKyAgICAgICAgbm9kZSwgaW5zdGVhZCBvZiB0aGUgY29udGFpbmluZ0Jsb2NrIG9mIHRoZSBn
aXZlbiBub2RlLgorICAgICAgICBUaGVuLCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvciBpZ25v
cmVzIGVkaXRpbmcgYm91bmRhcnkuIAorICAgICAgICBTbyB0b29rIGl0IGNhcmUgaW50cm9kdWNp
bmcgVGV4dEl0ZXJhdG9yOjptX2JlaGF2aW9yIGFuZAorICAgICAgICBUZXh0SXRlcmF0b3JFbmRz
QXRFZGl0aW5nQm91bmRhcnkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVudGVkaXRhYmxlLmh0bWwgICAgICAgIAor
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZWRpdGlu
Z0JvdW5kYXJ5KTogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dh
cmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6Z3VhcmRF
ZGl0aW5nQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6QmFja3dhcmRzQ2hhcmFjdGVySXRl
cmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBlZGl0aW5nL3Zp
c2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNCb3VuZGFyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkpOgorCiAyMDEwLTA1LTIwICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
Um9iZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDBkYzFiN2EzZWM2YWYxNGFhMjZmNzMwMTZmNzAyNzRjM2U1NmY2N2IuLmY0
OTMxMzZlNDdiMjM5NzBhZWRiZGJhM2FjYzBlMDgzNDhlYzJmM2QgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNTE0LDYgKzE1
MTQsMTkgQEAgRWxlbWVudCAqTm9kZTo6ZW5jbG9zaW5nSW5saW5lRWxlbWVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIDA7CiB9CiAKK05vZGUqIE5vZGU6OmVkaXRpbmdCb3VuZGFyeSgpIGNvbnN0Cit7
CisgICAgaWYgKCFkb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5vZGUqIGRv
Y3VtZW50RWxlbWVudCA9IGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIE5vZGUq
IGJvdW5kYXJ5ID0gY29uc3RfY2FzdDxOb2RlKj4odGhpcyk7CisgICAgd2hpbGUgKGJvdW5kYXJ5
ICE9IGRvY3VtZW50RWxlbWVudCAmJiBib3VuZGFyeS0+cGFyZW50Tm9kZSgpICYmIHRoaXMtPmlz
Q29udGVudEVkaXRhYmxlKCkgPT0gYm91bmRhcnktPnBhcmVudE5vZGUoKS0+aXNDb250ZW50RWRp
dGFibGUoKSkKKyAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpOworICAg
IAorICAgIHJldHVybiBib3VuZGFyeTsKK30KKwogRWxlbWVudCogTm9kZTo6cm9vdEVkaXRhYmxl
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogcmVzdWx0ID0gMDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL05vZGUuaCBiL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBkNmJhOGQ2ZTJl
N2ZhMjEzNDQxMTJlYzBmOWI4ZmI3MWFiNmYyYzRkLi5jOTYxYzhiOGM4ZGQwZmFhM2MzOTNhM2E3
MGYzNTI3ODJkMzcyMzRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvV2Vi
Q29yZS9kb20vTm9kZS5oCkBAIC0yNTgsNyArMjU4LDggQEAgcHVibGljOgogICAgIAogICAgIEVs
ZW1lbnQqIGVuY2xvc2luZ0lubGluZUVsZW1lbnQoKSBjb25zdDsKICAgICBFbGVtZW50KiByb290
RWRpdGFibGVFbGVtZW50KCkgY29uc3Q7Ci0gICAgCisgICAgTm9kZSogZWRpdGluZ0JvdW5kYXJ5
KCkgY29uc3Q7CisKICAgICBib29sIGluU2FtZUNvbnRhaW5pbmdCbG9ja0Zsb3dFbGVtZW50KE5v
ZGUqKTsKICAgICAKICAgICAvLyBVc2VkIGJ5IHRoZSBwYXJzZXIuIENoZWNrcyBhZ2FpbnN0IHRo
ZSBEVEQsIHVubGlrZSBET00gb3BlcmF0aW9ucyBsaWtlIGFwcGVuZENoaWxkKCkuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCmluZGV4IGYzYmQ5ZGY2YjlmOTViZjMwZGRhMmEzMGU3MjZkNzM1ZjE4
ZjhiMWYuLjA0MWNlOWFmMDI5NzhkODlkMTdhOTYyZDM5NTkxNTdiNmI1Yjk5MGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCkBAIC05NDQsMTMgKzk0NCwxNSBAQCBOb2RlKiBUZXh0SXRlcmF0
b3I6Om5vZGUoKSBjb25zdAogLy8gLS0tLS0tLS0KIAogU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcigpCi0gICAgOiBtX3Bvc2l0
aW9uTm9kZSgwKQorICAgIDogbV9iZWhhdmlvcihUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ip
LCBtX3Bvc2l0aW9uTm9kZSgwKQogewogfQogCi1TaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJh
dG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByKQotICAg
IDogbV9wb3NpdGlvbk5vZGUoMCkKK1NpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRv
ckJlaGF2aW9yIGJlaGF2aW9yKQorICAgIDogbV9iZWhhdmlvcihiZWhhdmlvciksIG1fcG9zaXRp
b25Ob2RlKDApCiB7CisgICAgQVNTRVJUKG1fYmVoYXZpb3IgPT0gVGV4dEl0ZXJhdG9yRGVmYXVs
dEJlaGF2aW9yIHx8IG1fYmVoYXZpb3IgPT0gVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5k
YXJ5KTsKKwogICAgIGlmICghcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDM4LDkgKzEwNDAs
OCBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAg
ICAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8v
IEV4aXQgYWxsIG90aGVyIGNvbnRhaW5lcnMuCi0gICAgICAgICAgICBuZXh0ID0gbV9ub2RlLT5w
cmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgICAgIHdoaWxlICghbmV4dCkgewotICAgICAgICAg
ICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSBwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMo
bV9ub2RlKTsKKyAgICAgICAgICAgIHdoaWxlICghbV9ub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkg
eworICAgICAgICAgICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSBndWFyZEVkaXRpbmdCb3VuZGFy
eShwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMobV9ub2RlKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwYXJlbnROb2RlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICBtX25vZGUgPSBwYXJlbnROb2RlOwpAQCAtMTA1MSwxMiArMTA1MiwxMyBAQCB2b2lk
IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAg
ICAgICAgICBtX2hhbmRsZWRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV4dCA9IG1fbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5leHQgPSBt
X25vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFj
ay5wb3AoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9ub2RlID0gbmV4dDsKKyAg
ICAgICAgbV9ub2RlID0gZ3VhcmRFZGl0aW5nQm91bmRhcnkobmV4dCk7CiAgICAgICAgIGlmICht
X25vZGUpCiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9mdWxseUNsaXBwZWRT
dGFjaywgbV9ub2RlKTsKICAgICAgICAgLy8gRm9yIHRoZSBwdXJwb3NlIG9mIHdvcmQgYm91bmRh
cnkgZGV0ZWN0aW9uLApAQCAtMTEzNyw2ICsxMTM5LDE2IEBAIHZvaWQgU2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBjLCBOb2RlKiBub2RlLCBpbnQg
c3RhCiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gYzsKIH0KIAorTm9kZSogU2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6Z3VhcmRFZGl0aW5nQm91bmRhcnkoTm9kZSogbm9kZSkgY29uc3QK
K3sKKyAgICBpZiAoIW1fbm9kZSB8fCAhbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KG1fYmVoYXZpb3IgPT0gVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5kYXJ5CisgICAgICAg
ICYmIG1fbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSAhPSBub2RlLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbm9kZTsKK30KKwogUGFzc1JlZlB0
cjxSYW5nZT4gU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAog
ewogICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkKQEAgLTEyNjIsMTEgKzEyNzQsMTEgQEAgQmFja3dh
cmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKCkKIHsKIH0K
IAotQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9y
KGNvbnN0IFJhbmdlKiByYW5nZSkKK0JhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2Fy
ZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2
aW9yIGJlaGF2aW9yKQogICAgIDogbV9vZmZzZXQoMCkKICAgICAsIG1fcnVuT2Zmc2V0KDApCiAg
ICAgLCBtX2F0QnJlYWsodHJ1ZSkKLSAgICAsIG1fdGV4dEl0ZXJhdG9yKHJhbmdlKQorICAgICwg
bV90ZXh0SXRlcmF0b3IocmFuZ2UsIGJlaGF2aW9yKQogewogICAgIHdoaWxlICghYXRFbmQoKSAm
JiAhbV90ZXh0SXRlcmF0b3IubGVuZ3RoKCkpCiAgICAgICAgIG1fdGV4dEl0ZXJhdG9yLmFkdmFu
Y2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBiYTM4MWI5YmZhNDRhNzlkMTA2NDk5OWQy
YzYwN2JlNjlmNzZhODkzLi5jZjQ0NmUyZTE1NGJjNGJkYTQxZTlhZTdmOWZjZjdlOGMwOGY1ZGMz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC03Myw2ICs3Myw3IEBAIGVudW0gVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgewogICAgIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxW
aXNpYmxlUG9zaXRpb25zID0gMSA8PCAwLAogICAgIFRleHRJdGVyYXRvckVudGVyc1RleHRDb250
cm9scyA9IDEgPDwgMSwKICAgICBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29k
aW5nID0gMSA8PCAyLAorICAgIFRleHRJdGVyYXRvckVuZHNBdEVkaXRpbmdCb3VuZGFyeSA9IDEg
PDwgMwogfTsKIAogY2xhc3MgVGV4dEl0ZXJhdG9yIHsKQEAgLTE2Nyw3ICsxNjgsNyBAQCBwcml2
YXRlOgogY2xhc3MgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciB7CiBwdWJsaWM6CiAg
ICAgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0IFNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqKTsKKyAgICBleHBsaWNpdCBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIAogICAgIGJvb2wg
YXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICB2b2lkIGFkdmFu
Y2UoKTsKQEAgLTE4Myw3ICsxODQsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlUmVwbGFj
ZWRFbGVtZW50KCk7CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZvaWQgZW1p
dENoYXJhY3RlcihVQ2hhciwgTm9kZSosIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7
Ci0gICAgCisgICAgTm9kZSogZ3VhcmRFZGl0aW5nQm91bmRhcnkoTm9kZSopIGNvbnN0OworCisg
ICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgbV9iZWhhdmlvcjsKICAgICAvLyBDdXJyZW50IHBvc2l0
aW9uLCBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1dCBwb3Np
dGlvbgogICAgIC8vIGFzIHdlIHdhbGsgdGhyb3VnaCB0aGUgRE9NIHRyZWUuCiAgICAgTm9kZSog
bV9ub2RlOwpAQCAtMjQ3LDcgKzI1MCw3IEBAIHByaXZhdGU6CiBjbGFzcyBCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3Io
KTsKLSAgICBleHBsaWNpdCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSop
OworICAgIGV4cGxpY2l0IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwg
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogCiAg
ICAgdm9pZCBhZHZhbmNlKGludCk7CiAKQEAgLTI1Niw2ICsyNTksNyBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBUZXh0SXRl
cmF0b3JCZWhhdmlvciBtX2JlaGF2aW9yOwogICAgIGludCBtX29mZnNldDsKICAgICBpbnQgbV9y
dW5PZmZzZXQ7CiAgICAgYm9vbCBtX2F0QnJlYWs7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvdmlzaWJsZV91bml0cy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAK
aW5kZXggYzA5NGFhY2EyYmI0NGI3NjRiNWFjZDZkZmZmYjQwOTVjYTQ3ZTg4ZC4uZTljNTE0MzAw
MGJhYTc0MDE3ZTQxMjdmMWVmNGRjYjYwY2QwYjNkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0
aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRz
LmNwcApAQCAtNzUsMTkgKzc1LDEwIEBAIHR5cGVkZWYgdW5zaWduZWQgKCpCb3VuZGFyeVNlYXJj
aEZ1bmN0aW9uKShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduCiBzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
LCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uIHNlYXJjaEZ1bmN0aW9uKQogewogICAgIFBvc2l0aW9u
IHBvcyA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBOb2RlICpuID0gcG9zLm5vZGUoKTsKLSAg
ICBpZiAoIW4pCisgICAgaWYgKHBvcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOwotICAgIERvY3VtZW50ICpkID0gbi0+ZG9jdW1lbnQoKTsKLSAgICBOb2RlICpk
ZSA9IGQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIGlmICghZGUpCi0gICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsKLSAgICBOb2RlICpib3VuZGFyeSA9IG4tPmVuY2xvc2luZ0Jsb2Nr
Rmxvd0VsZW1lbnQoKTsKLSAgICBpZiAoIWJvdW5kYXJ5KQotICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7Ci0gICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSA9IGJvdW5kYXJ5LT5pc0Nv
bnRlbnRFZGl0YWJsZSgpOwotICAgIHdoaWxlIChib3VuZGFyeSAmJiBib3VuZGFyeSAhPSBkZSAm
JiBib3VuZGFyeS0+cGFyZW50Tm9kZSgpICYmIGlzQ29udGVudEVkaXRhYmxlID09IGJvdW5kYXJ5
LT5wYXJlbnROb2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAgICAgIGJvdW5kYXJ5ID0g
Ym91bmRhcnktPnBhcmVudE5vZGUoKTsKKyAgICBOb2RlKiBib3VuZGFyeSA9IHBvcy5ub2RlKCkt
PmVkaXRpbmdCb3VuZGFyeSgpOworICAgIERvY3VtZW50KiBkID0gYm91bmRhcnktPmRvY3VtZW50
KCk7CiAKICAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChQb3Np
dGlvbihib3VuZGFyeSwgMCkpOwogICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlQ29tcGxpYW50RXF1
aXZhbGVudChwb3MpOwpAQCAtMTIxLDcgKzExMiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNo
CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSAgICBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpKTsKKyAg
ICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpLCBU
ZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkpOwogICAgIHVuc2lnbmVkIG5leHQgPSAw
OwogICAgIGJvb2wgaW5UZXh0U2VjdXJpdHlNb2RlID0gc3RhcnQubm9kZSgpICYmIHN0YXJ0Lm5v
ZGUoKS0+cmVuZGVyZXIoKSAmJiBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCktPnRl
eHRTZWN1cml0eSgpICE9IFRTTk9ORTsKICAgICBib29sIG5lZWRNb3JlQ29udGV4dCA9IGZhbHNl
OwpAQCAtMTU2LDcgKzE0Nyw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3Vu
ZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoCiAgICAgICAgICAg
ICBwb3MgPSBQb3NpdGlvbihub2RlLCBuZXh0KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAvLyBVc2UgdGhlIGNoYXJhY3RlciBpdGVyYXRvciB0byB0cmFuc2xhdGUgdGhlIG5leHQgdmFs
dWUgaW50byBhIERPTSBwb3NpdGlvbi4KLSAgICAgICAgICAgIEJhY2t3YXJkc0NoYXJhY3Rlckl0
ZXJhdG9yIGNoYXJJdChzZWFyY2hSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBCYWNrd2FyZHND
aGFyYWN0ZXJJdGVyYXRvciBjaGFySXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckVu
ZHNBdEVkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgICAgICBjaGFySXQuYWR2YW5jZShzdHJpbmcu
c2l6ZSgpIC0gc3VmZml4TGVuZ3RoIC0gbmV4dCk7CiAgICAgICAgICAgICBwb3MgPSBjaGFySXQu
cmFuZ2UoKS0+ZW5kUG9zaXRpb24oKTsKICAgICAgICAgfQpAQCAtMTY4LDIwICsxNTksMTEgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgYywgQm91bmRhcnlTZWFyY2gKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5k
YXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jdGlvbiBzZWFy
Y2hGdW5jdGlvbikKIHsKICAgICBQb3NpdGlvbiBwb3MgPSBjLmRlZXBFcXVpdmFsZW50KCk7Ci0g
ICAgTm9kZSAqbiA9IHBvcy5ub2RlKCk7Ci0gICAgaWYgKCFuKQotICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7Ci0gICAgRG9jdW1lbnQgKmQgPSBuLT5kb2N1bWVudCgpOwotICAgIE5v
ZGUgKmRlID0gZC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFkZSkKLSAgICAgICAgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIE5vZGUgKmJvdW5kYXJ5ID0gbi0+ZW5jbG9zaW5n
QmxvY2tGbG93RWxlbWVudCgpOwotICAgIGlmICghYm91bmRhcnkpCisgICAgaWYgKHBvcy5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIGJvb2wgaXNDb250
ZW50RWRpdGFibGUgPSBib3VuZGFyeS0+aXNDb250ZW50RWRpdGFibGUoKTsKLSAgICB3aGlsZSAo
Ym91bmRhcnkgJiYgYm91bmRhcnkgIT0gZGUgJiYgYm91bmRhcnktPnBhcmVudE5vZGUoKSAmJiBp
c0NvbnRlbnRFZGl0YWJsZSA9PSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0
YWJsZSgpKQotICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5LT5wYXJlbnROb2RlKCk7CiAKKyAg
ICBOb2RlKiBib3VuZGFyeSA9IHBvcy5ub2RlKCktPmVkaXRpbmdCb3VuZGFyeSgpOworICAgIERv
Y3VtZW50KiBkID0gYm91bmRhcnktPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPFJhbmdlPiBzZWFy
Y2hSYW5nZShkLT5jcmVhdGVSYW5nZSgpKTsKICAgICBQb3NpdGlvbiBzdGFydChyYW5nZUNvbXBs
aWFudEVxdWl2YWxlbnQocG9zKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57210</attachid>
            <date>2010-05-27 01:40:09 -0700</date>
            <delta_ts>2010-05-27 21:59:10 -0700</delta_ts>
            <desc>patch v7</desc>
            <filename>bug-36359-20100527174007.patch</filename>
            <type>text/plain</type>
            <size>16162</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzhhNjBmMTk2MjlhMzYxODYyOGM2MmE5NDA5NGU2ODlhODJkZTExLi4yNWIxMWE1
ZGY0NjdlOGNkZThlN2Y4NGI1ODZlM2YxZWI3YzFhY2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDUtMjAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFi
bGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNlbGVjdCBhIHdvcmQuIAorICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5nIHBhZ2UncyBsYXN0
IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZS4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNv
bnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0wNS0yMCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0
LWxhc3QtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1ZDQ4OWQxYWI5Y2IyNDI3NTAyNWM4Y2QwMzM3OTJm
OWQzZTRlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitoZXJlIHRvIGRvdWJsZSBjbGljaywgYW5kIHRoZXJlCitQQVNT
CitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVu
dGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVlNDM4MTE0Yzg3ODg4ZTNkZjk4ODZhODc0YWY4
Nzc5N2JkMjM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sCkBA
IC0wLDAgKzEsNTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisKKyAgICByZXR1cm4geworICAgICAgIngiOiAg
dGFyZ2V0Lm9mZnNldExlZnQgKyB0YXJnZXQuY2xpZW50V2lkdGggLyAyLAorICAgICAgInkiOiAg
dGFyZ2V0Lm9mZnNldFRvcCAgKyB0YXJnZXQuY2xpZW50SGVpZ2h0IC8gMgorICAgIH07Cit9CisK
K2Z1bmN0aW9uIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKQoreworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHBvcy54LCBwb3MueSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAg
ICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByZSIpOworICAgIGNvbnNv
bGUuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4iKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGNvbnNvbGUpOworfQorCitmdW5jdGlvbiBzaG91bGRTZWxlY3QoaWQsIGV4cGVjdGVkVGV4
dCkKK3sKKyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisgCisgICAgdmFy
IHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKGlkKTsKKyAgICBkb3VibGVDbGlja1Bvc2l0aW9uKHBv
cyk7CisKKyAgICBpZiAoZXhwZWN0ZWRUZXh0ID09IHNlbC50b1N0cmluZygpKQorICAgICAgICBs
b2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDoiICsgc2VsLnRvU3RyaW5n
KCkgKyAiICE9ICIgKyBleHBlY3RlZFRleHQpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBzaG91bGRTZWxlY3QoImZpcnN0IiwgImhlcmUiKTsKKyAgICBzaG91bGRTZWxlY3QoImxhc3Qi
LCAidGhlcmUiKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2
PjxzcGFuIGlkPSJmaXJzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj5oZXJlPC9zcGFuPiB0byBk
b3VibGUgY2xpY2ssIGFuZCA8c3BhbiBpZD0ibGFzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj50
aGVyZTwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY4Y2U2ZWZhYjljMjI3NDhlNWJh
M2E3ZDc1NGY3MjJjZTQ1MGNjZi4uYzlhMDYxNDJmODk4MDBiZGJkMTkyMTFmMzMwNjQ1MTBjMDAy
NTZkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0wNS0yMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5n
IHBhZ2UncyBsYXN0IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFp
bHVyZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJs
ZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFibGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNl
bGVjdCBhIHdvcmQuIAorCisgICAgICAgIG5leHRCb3VuZGFyeSgpIGFuZCBwcmV2aW91c0JvdW5k
YXJ5KCkgYXNzdW1lZCB0aGF0IGVkaXRhYmxlCisgICAgICAgIGJvdW5kYXJpZXMgYXJlIG9uIGJs
b2NrLWxldmVsIGVsZW1lbnRzLCBCdXQgaXQgY2FuIGFwcGVhciBvbgorICAgICAgICBpbmxpbmUt
bGV2ZWwgZWxlbWVudHMuIFNvIHdlIHN0YXJ0IGJvdW5kYXJ5IGxvb2stdXAgZnJvbSB0aGUgZ2l2
ZW4KKyAgICAgICAgbm9kZSwgaW5zdGVhZCBvZiB0aGUgY29udGFpbmluZ0Jsb2NrIG9mIHRoZSBn
aXZlbiBub2RlLgorICAgICAgICBBbHNvLCBhZGRlZCBUZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5n
Qm91bmRhcnkgdG8KKyAgICAgICAgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IsIG90aGVyd2lz
ZSwgdGhlIFZpc2libGVQb3NpdGlvbgorICAgICAgICByZXR1cm5lZCBieSBCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvciBtaWdodCBjcm9zcyBhbiBlZGl0aW5nCisgICAgICAgIGJvdW5kYXJ5Lgor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJz
dC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sICAgICAgICAKKworICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVkaXRpbmdCb3VuZGFyeSk6IEFkZGVkLgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2lt
cGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6Omd1YXJkRWRpdGluZ0JvdW5kYXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvcik6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnByZXZpb3VzQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEJvdW5kYXJ5KToKKwogMjAxMC0wNS0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGQ2YmE4ZDZlMmU3
ZmEyMTM0NDExMmVjMGY5YjhmYjcxYWI2ZjJjNGQuLjZiOTZkMGE4YjZlYTdkNmUwNjY5ZGIwZDZl
NWQ5NDVkNzFkZWM2ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9XZWJD
b3JlL2RvbS9Ob2RlLmgKQEAgLTI1OCw3ICsyNTgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgRWxl
bWVudCogZW5jbG9zaW5nSW5saW5lRWxlbWVudCgpIGNvbnN0OwogICAgIEVsZW1lbnQqIHJvb3RF
ZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsKLSAgICAKKwogICAgIGJvb2wgaW5TYW1lQ29udGFpbmlu
Z0Jsb2NrRmxvd0VsZW1lbnQoTm9kZSopOwogICAgIAogICAgIC8vIFVzZWQgYnkgdGhlIHBhcnNl
ci4gQ2hlY2tzIGFnYWluc3QgdGhlIERURCwgdW5saWtlIERPTSBvcGVyYXRpb25zIGxpa2UgYXBw
ZW5kQ2hpbGQoKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBkYjllM2M2MWNmMzZiNTJlMWY4NThlZjJhZTQwMzNi
M2VlMWY4MTRmLi45ODc1MWY2YzMyZTUzYTY3ZGFhNzRlYmU2YzhmODhiZGYzZTc2M2Y1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCkBAIC0zMjgsNiArMzI4LDI1IEBAIGJvb2wgUG9zaXRpb246OmF0RWRpdGluZ0JvdW5k
YXJ5KCkgY29uc3QKICAgICAgICAgJiYgcHJldlBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFwcmV2
UG9zaXRpb24ubm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpOwogfQogCitOb2RlKiBQb3NpdGlv
bjo6YXNjZW50RWRpdGluZ0JvdW5kYXJ5KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9hbmNob3JOb2RlLT5kb2N1bWVudCgpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIE5vZGUqIGRvY3VtZW50RWxlbWVudCA9IG1fYW5jaG9yTm9k
ZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudEVsZW1l
bnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgTm9kZSogYm91bmRhcnkgPSBtX2FuY2hvck5v
ZGUuZ2V0KCk7CisgICAgd2hpbGUgKGJvdW5kYXJ5ICE9IGRvY3VtZW50RWxlbWVudCAmJiBib3Vu
ZGFyeS0+cGFyZW50Tm9kZSgpICYmIG1fYW5jaG9yTm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSA9
PSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICBi
b3VuZGFyeSA9IGJvdW5kYXJ5LT5wYXJlbnROb2RlKCk7CisgICAgCisgICAgcmV0dXJuIGJvdW5k
YXJ5OworfQorCisKIGJvb2wgUG9zaXRpb246OmF0U3RhcnRPZlRyZWUoKSBjb25zdAogewogICAg
IGlmIChpc051bGwoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IGNlMDZmNDgzYTExZTRlOGY3NDBmMTNmNGZhZDA5NmUx
MDQ1ZmI3ZDYuLmU0MzVmNGE2ZjY1ZjE1ZmE3YmFjNTdkMWUwMjUxNDVmMmQyZDA1YzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIvV2ViQ29yZS9kb20vUG9zaXRpb24u
aApAQCAtMTQyLDYgKzE0Miw4IEBAIHB1YmxpYzoKICAgICBib29sIGF0U3RhcnRPZlRyZWUoKSBj
b25zdDsKICAgICBib29sIGF0RW5kT2ZUcmVlKCkgY29uc3Q7CiAKKyAgICBOb2RlKiBhc2NlbnRF
ZGl0aW5nQm91bmRhcnkoKSBjb25zdDsKKwogICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIG5vbi1t
ZW1iZXIgZnVuY3Rpb25zIGFuZCBwdXQgdGhlbSBzb21ld2hlcmUgaW4gdGhlIGVkaXRpbmcgZGly
ZWN0b3J5LgogICAgIC8vIFRoZXNlIGFyZW4ndCByZWFsbHkgYmFzaWMgInBvc2l0aW9uIiBvcGVy
YXRpb25zLiBNb3JlIGhpZ2ggbGV2ZWwgZWRpdGluZyBoZWxwZXIgZnVuY3Rpb25zLgogICAgIFBv
c2l0aW9uIGxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24oRUFmZmluaXR5LCBib29sIGNvbnNpZGVy
Tm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAppbmRleCBmM2JkOWRmNmI5Zjk1YmYzMGRkYTJhMzBlNzI2ZDczNWYxOGY4YjFmLi45
MDcwYTE4MTNkOWY5YThkMTVhNDlmMWM0MjE3MDE4MmJlNzA5OTYyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcApAQCAtMjcyLDYgKzI3Miw5IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9y
KGNvbnN0IFJhbmdlKiByLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICAsIG1f
ZW50ZXJzVGV4dENvbnRyb2xzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRy
b2xzKQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcoYmVoYXZpb3IgJiBUZXh0
SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5nKQogeworICAgIC8vIEZJWE1FOiBz
aG91bGQgc3VwcG9ydCBUZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkKKyAgICBBU1NF
UlQoYmVoYXZpb3IgIT0gVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5kYXJ5KTsKKwogICAg
IGlmICghcikKICAgICAgICAgcmV0dXJuOwogCkBAIC05NDQsMTMgKzk0NywxNSBAQCBOb2RlKiBU
ZXh0SXRlcmF0b3I6Om5vZGUoKSBjb25zdAogLy8gLS0tLS0tLS0KIAogU2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcigpCi0gICAg
OiBtX3Bvc2l0aW9uTm9kZSgwKQorICAgIDogbV9iZWhhdmlvcihUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IpLCBtX3Bvc2l0aW9uTm9kZSgwKQogewogfQogCi1TaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdl
KiByKQotICAgIDogbV9wb3NpdGlvbk5vZGUoMCkKK1NpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRl
cmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRl
eHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQorICAgIDogbV9iZWhhdmlvcihiZWhhdmlvciks
IG1fcG9zaXRpb25Ob2RlKDApCiB7CisgICAgQVNTRVJUKG1fYmVoYXZpb3IgPT0gVGV4dEl0ZXJh
dG9yRGVmYXVsdEJlaGF2aW9yIHx8IG1fYmVoYXZpb3IgPT0gVGV4dEl0ZXJhdG9yRW5kc0F0RWRp
dGluZ0JvdW5kYXJ5KTsKKwogICAgIGlmICghcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDM4
LDEyICsxMDQzLDkgQEAgdm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZh
bmNlKCkKICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAvLyBFeGl0IGFsbCBvdGhlciBjb250YWluZXJzLgotICAgICAgICAgICAgbmV4dCA9
IG1fbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgICAgICB3aGlsZSAoIW5leHQpIHsK
LSAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50Q3Jvc3NpbmdTaGFkb3dC
b3VuZGFyaWVzKG1fbm9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnROb2RlKQorICAg
ICAgICAgICAgd2hpbGUgKCFtX25vZGUtPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFzZXRDdXJyZW50Tm9kZShwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMo
bV9ub2RlKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIG1f
bm9kZSA9IHBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5w
b3AoKTsKICAgICAgICAgICAgICAgICBleGl0Tm9kZSgpOwogICAgICAgICAgICAgICAgIGlmICht
X3Bvc2l0aW9uTm9kZSkgewpAQCAtMTA1MSwxNCArMTA1MywxNyBAQCB2b2lkIFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAgICAgICAgICBtX2hh
bmRsZWRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV4dCA9IG1fbm9kZS0+cHJldmlvdXNTaWJs
aW5nKCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5leHQgPSBtX25vZGUtPnByZXZp
b3VzU2libGluZygpOwogICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9ub2RlID0gbmV4dDsKLSAgICAgICAgaWYgKG1f
bm9kZSkKKyAgICAgICAgaWYgKHNldEN1cnJlbnROb2RlKG5leHQpKQogICAgICAgICAgICAgcHVz
aEZ1bGx5Q2xpcHBlZFN0YXRlKG1fZnVsbHlDbGlwcGVkU3RhY2ssIG1fbm9kZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNsZWFyQ3VycmVudE5vZGUoKTsKKwogICAgICAgICAvLyBGb3Ig
dGhlIHB1cnBvc2Ugb2Ygd29yZCBib3VuZGFyeSBkZXRlY3Rpb24sCiAgICAgICAgIC8vIHdlIHNo
b3VsZCBpdGVyYXRlIGFsbCB2aXNpYmxlIHRleHQgYW5kIHRyYWlsaW5nIChjb2xsYXBzZWQpIHdo
aXRlc3BhY2VzLiAKICAgICAgICAgbV9vZmZzZXQgPSBtX25vZGUgPyBtYXhPZmZzZXRJbmNsdWRp
bmdDb2xsYXBzZWRTcGFjZXMobV9ub2RlKSA6IDA7CkBAIC0xMTM3LDYgKzExNDIsMjggQEAgdm9p
ZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGMs
IE5vZGUqIG5vZGUsIGludCBzdGEKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSBjOwogfQogCitib29s
IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OndpbGxDcm9zc0VkaXRpbmdCb3VuZGFy
eShOb2RlKiBub2RlKSBjb25zdAoreworICAgIHJldHVybiBtX25vZGUtPmlzQ29udGVudEVkaXRh
YmxlKCkgIT0gbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKTsKK30KKworYm9vbCBTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpzZXRDdXJyZW50Tm9kZShOb2RlKiBub2RlKQoreworICAg
ICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fbm9kZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2JlaGF2aW9yID09IFRleHRJdGVyYXRvckVu
ZHNBdEVkaXRpbmdCb3VuZGFyeSAmJiB3aWxsQ3Jvc3NFZGl0aW5nQm91bmRhcnkobm9kZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX25vZGUgPSBub2RlOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmNsZWFyQ3VycmVu
dE5vZGUoKQoreworICAgIG1fbm9kZSA9IDA7Cit9CisKIFBhc3NSZWZQdHI8UmFuZ2U+IFNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKIHsKICAgICBpZiAobV9w
b3NpdGlvbk5vZGUpCkBAIC0xMjYyLDExICsxMjg5LDExIEBAIEJhY2t3YXJkc0NoYXJhY3Rlckl0
ZXJhdG9yOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcigpCiB7CiB9CiAKLUJhY2t3YXJkc0No
YXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSog
cmFuZ2UpCitCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRl
cmF0b3IoY29uc3QgUmFuZ2UqIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikK
ICAgICA6IG1fb2Zmc2V0KDApCiAgICAgLCBtX3J1bk9mZnNldCgwKQogICAgICwgbV9hdEJyZWFr
KHRydWUpCi0gICAgLCBtX3RleHRJdGVyYXRvcihyYW5nZSkKKyAgICAsIG1fdGV4dEl0ZXJhdG9y
KHJhbmdlLCBiZWhhdmlvcikKIHsKICAgICB3aGlsZSAoIWF0RW5kKCkgJiYgIW1fdGV4dEl0ZXJh
dG9yLmxlbmd0aCgpKQogICAgICAgICBtX3RleHRJdGVyYXRvci5hZHZhbmNlKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmgKaW5kZXggYmEzODFiOWJmYTQ0YTc5ZDEwNjQ5OTlkMmM2MDdiZTY5Zjc2YTg5
My4uNGI2OTI4NGRmZjhjOGY4ZDRlODJkMDA2NWVlOWUxZjg5MWEwYWFhYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuaApAQCAtNzMsNiArNzMsNyBAQCBlbnVtIFRleHRJdGVyYXRvckJlaGF2aW9yIHsK
ICAgICBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9u
cyA9IDEgPDwgMCwKICAgICBUZXh0SXRlcmF0b3JFbnRlcnNUZXh0Q29udHJvbHMgPSAxIDw8IDEs
CiAgICAgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZyA9IDEgPDwgMiwK
KyAgICBUZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkgPSAxIDw8IDMKIH07CiAKIGNs
YXNzIFRleHRJdGVyYXRvciB7CkBAIC0xNjcsNyArMTY4LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgewogcHVibGljOgogICAgIFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKik7CisgICAgZXhwbGljaXQgU2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKICAgICAKICAgICBib29sIGF0RW5kKCkgY29uc3Qg
eyByZXR1cm4gIW1fcG9zaXRpb25Ob2RlOyB9CiAgICAgdm9pZCBhZHZhbmNlKCk7CkBAIC0xODMs
NyArMTg0LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsK
ICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7CiAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVD
aGFyLCBOb2RlKiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKLSAgICAKKyAgICBi
b29sIHdpbGxDcm9zc0VkaXRpbmdCb3VuZGFyeShOb2RlKiBub2RlKSBjb25zdDsKKyAgICBib29s
IHNldEN1cnJlbnROb2RlKE5vZGUqIG5vZGUpOworICAgIHZvaWQgY2xlYXJDdXJyZW50Tm9kZSgp
OworCisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgbV9iZWhhdmlvcjsKICAgICAvLyBDdXJyZW50
IHBvc2l0aW9uLCBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1
dCBwb3NpdGlvbgogICAgIC8vIGFzIHdlIHdhbGsgdGhyb3VnaCB0aGUgRE9NIHRyZWUuCiAgICAg
Tm9kZSogbV9ub2RlOwpAQCAtMjQ3LDcgKzI1Miw3IEBAIHByaXZhdGU6CiBjbGFzcyBCYWNrd2Fy
ZHNDaGFyYWN0ZXJJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzQ2hhcmFjdGVySXRl
cmF0b3IoKTsKLSAgICBleHBsaWNpdCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBS
YW5nZSopOworICAgIGV4cGxpY2l0IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJh
bmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ip
OwogCiAgICAgdm9pZCBhZHZhbmNlKGludCk7CiAKQEAgLTI1Niw2ICsyNjEsNyBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBU
ZXh0SXRlcmF0b3JCZWhhdmlvciBtX2JlaGF2aW9yOwogICAgIGludCBtX29mZnNldDsKICAgICBp
bnQgbV9ydW5PZmZzZXQ7CiAgICAgYm9vbCBtX2F0QnJlYWs7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0
cy5jcHAKaW5kZXggYzA5NGFhY2EyYmI0NGI3NjRiNWFjZDZkZmZmYjQwOTVjYTQ3ZTg4ZC4uNGEy
NjVhNDEzZDMwNDVlNDBlNjdiNWI0YzRhZDhmOWU5YzI5MWQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxl
X3VuaXRzLmNwcApAQCAtNzUsMjAgKzc1LDExIEBAIHR5cGVkZWYgdW5zaWduZWQgKCpCb3VuZGFy
eVNlYXJjaEZ1bmN0aW9uKShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduCiBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uIHNlYXJjaEZ1bmN0aW9uKQogewogICAgIFBv
c2l0aW9uIHBvcyA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBOb2RlICpuID0gcG9zLm5vZGUo
KTsKLSAgICBpZiAoIW4pCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICBE
b2N1bWVudCAqZCA9IG4tPmRvY3VtZW50KCk7Ci0gICAgTm9kZSAqZGUgPSBkLT5kb2N1bWVudEVs
ZW1lbnQoKTsKLSAgICBpZiAoIWRlKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
Ci0gICAgTm9kZSAqYm91bmRhcnkgPSBuLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7Cisg
ICAgTm9kZSogYm91bmRhcnkgPSBwb3MuYXNjZW50RWRpdGluZ0JvdW5kYXJ5KCk7CiAgICAgaWYg
KCFib3VuZGFyeSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIGJvb2wg
aXNDb250ZW50RWRpdGFibGUgPSBib3VuZGFyeS0+aXNDb250ZW50RWRpdGFibGUoKTsKLSAgICB3
aGlsZSAoYm91bmRhcnkgJiYgYm91bmRhcnkgIT0gZGUgJiYgYm91bmRhcnktPnBhcmVudE5vZGUo
KSAmJiBpc0NvbnRlbnRFZGl0YWJsZSA9PSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpLT5pc0NvbnRl
bnRFZGl0YWJsZSgpKQotICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5LT5wYXJlbnROb2RlKCk7
CiAKKyAgICBEb2N1bWVudCogZCA9IGJvdW5kYXJ5LT5kb2N1bWVudCgpOwogICAgIFBvc2l0aW9u
IHN0YXJ0ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KFBvc2l0aW9uKGJvdW5kYXJ5LCAwKSk7
CiAgICAgUG9zaXRpb24gZW5kID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcyk7CiAgICAg
UmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZCk7CkBAIC0xMjEsNyAr
MTEyLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2gKICAgICBpZiAoZWMpCiAgICAgICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIAotICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRl
cmF0b3IgaXQoc2VhcmNoUmFuZ2UuZ2V0KCkpOworICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3IgaXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckVuZHNBdEVkaXRpbmdC
b3VuZGFyeSk7CiAgICAgdW5zaWduZWQgbmV4dCA9IDA7CiAgICAgYm9vbCBpblRleHRTZWN1cml0
eU1vZGUgPSBzdGFydC5ub2RlKCkgJiYgc3RhcnQubm9kZSgpLT5yZW5kZXJlcigpICYmIHN0YXJ0
Lm5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dGV4dFNlY3VyaXR5KCkgIT0gVFNOT05FOwog
ICAgIGJvb2wgbmVlZE1vcmVDb250ZXh0ID0gZmFsc2U7CkBAIC0xNTYsNyArMTQ3LDcgQEAgc3Rh
dGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYgYywgQm91bmRhcnlTZWFyY2gKICAgICAgICAgICAgIHBvcyA9IFBvc2l0aW9uKG5vZGUsIG5l
eHQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFVzZSB0aGUgY2hhcmFjdGVyIGl0
ZXJhdG9yIHRvIHRyYW5zbGF0ZSB0aGUgbmV4dCB2YWx1ZSBpbnRvIGEgRE9NIHBvc2l0aW9uLgot
ICAgICAgICAgICAgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IgY2hhckl0KHNlYXJjaFJhbmdl
LmdldCgpKTsKKyAgICAgICAgICAgIEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yIGNoYXJJdChz
ZWFyY2hSYW5nZS5nZXQoKSwgVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5kYXJ5KTsKICAg
ICAgICAgICAgIGNoYXJJdC5hZHZhbmNlKHN0cmluZy5zaXplKCkgLSBzdWZmaXhMZW5ndGggLSBu
ZXh0KTsKICAgICAgICAgICAgIHBvcyA9IGNoYXJJdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigpOwog
ICAgICAgICB9CkBAIC0xNjgsMjAgKzE1OSwxMSBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaAog
c3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uIHNlYXJjaEZ1bmN0aW9uKQogewogICAgIFBvc2l0
aW9uIHBvcyA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBOb2RlICpuID0gcG9zLm5vZGUoKTsK
LSAgICBpZiAoIW4pCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICBEb2N1
bWVudCAqZCA9IG4tPmRvY3VtZW50KCk7Ci0gICAgTm9kZSAqZGUgPSBkLT5kb2N1bWVudEVsZW1l
bnQoKTsKLSAgICBpZiAoIWRlKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0g
ICAgTm9kZSAqYm91bmRhcnkgPSBuLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7CisgICAg
Tm9kZSogYm91bmRhcnkgPSBwb3MuYXNjZW50RWRpdGluZ0JvdW5kYXJ5KCk7CiAgICAgaWYgKCFi
b3VuZGFyeSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIGJvb2wgaXND
b250ZW50RWRpdGFibGUgPSBib3VuZGFyeS0+aXNDb250ZW50RWRpdGFibGUoKTsKLSAgICB3aGls
ZSAoYm91bmRhcnkgJiYgYm91bmRhcnkgIT0gZGUgJiYgYm91bmRhcnktPnBhcmVudE5vZGUoKSAm
JiBpc0NvbnRlbnRFZGl0YWJsZSA9PSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRF
ZGl0YWJsZSgpKQotICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5LT5wYXJlbnROb2RlKCk7CiAK
KyAgICBEb2N1bWVudCogZCA9IGJvdW5kYXJ5LT5kb2N1bWVudCgpOwogICAgIFJlZlB0cjxSYW5n
ZT4gc2VhcmNoUmFuZ2UoZC0+Y3JlYXRlUmFuZ2UoKSk7CiAgICAgUG9zaXRpb24gc3RhcnQocmFu
Z2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcykpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57292</attachid>
            <date>2010-05-27 21:59:19 -0700</date>
            <delta_ts>2010-08-05 23:30:06 -0700</delta_ts>
            <desc>patch v8</desc>
            <filename>bug-36359-20100528135917.patch</filename>
            <type>text/plain</type>
            <size>16007</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzhhNjBmMTk2MjlhMzYxODYyOGM2MmE5NDA5NGU2ODlhODJkZTExLi4yNWIxMWE1
ZGY0NjdlOGNkZThlN2Y4NGI1ODZlM2YxZWI3YzFhY2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDUtMjAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFi
bGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNlbGVjdCBhIHdvcmQuIAorICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5nIHBhZ2UncyBsYXN0
IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZS4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNv
bnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0wNS0yMCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0
LWxhc3QtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1ZDQ4OWQxYWI5Y2IyNDI3NTAyNWM4Y2QwMzM3OTJm
OWQzZTRlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitoZXJlIHRvIGRvdWJsZSBjbGljaywgYW5kIHRoZXJlCitQQVNT
CitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVu
dGVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVlNDM4MTE0Yzg3ODg4ZTNkZjk4ODZhODc0YWY4
Nzc5N2JkMjM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sCkBA
IC0wLDAgKzEsNTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisKKyAgICByZXR1cm4geworICAgICAgIngiOiAg
dGFyZ2V0Lm9mZnNldExlZnQgKyB0YXJnZXQuY2xpZW50V2lkdGggLyAyLAorICAgICAgInkiOiAg
dGFyZ2V0Lm9mZnNldFRvcCAgKyB0YXJnZXQuY2xpZW50SGVpZ2h0IC8gMgorICAgIH07Cit9CisK
K2Z1bmN0aW9uIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKQoreworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHBvcy54LCBwb3MueSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAg
ICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByZSIpOworICAgIGNvbnNv
bGUuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4iKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGNvbnNvbGUpOworfQorCitmdW5jdGlvbiBzaG91bGRTZWxlY3QoaWQsIGV4cGVjdGVkVGV4
dCkKK3sKKyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisgCisgICAgdmFy
IHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKGlkKTsKKyAgICBkb3VibGVDbGlja1Bvc2l0aW9uKHBv
cyk7CisKKyAgICBpZiAoZXhwZWN0ZWRUZXh0ID09IHNlbC50b1N0cmluZygpKQorICAgICAgICBs
b2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDoiICsgc2VsLnRvU3RyaW5n
KCkgKyAiICE9ICIgKyBleHBlY3RlZFRleHQpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBzaG91bGRTZWxlY3QoImZpcnN0IiwgImhlcmUiKTsKKyAgICBzaG91bGRTZWxlY3QoImxhc3Qi
LCAidGhlcmUiKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2
PjxzcGFuIGlkPSJmaXJzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj5oZXJlPC9zcGFuPiB0byBk
b3VibGUgY2xpY2ssIGFuZCA8c3BhbiBpZD0ibGFzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj50
aGVyZTwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY4Y2U2ZWZhYjljMjI3NDhlNWJh
M2E3ZDc1NGY3MjJjZTQ1MGNjZi4uZjc4NmQyZDZkMjVlNTA0ZjM2MmFkZjlkNDVlNjA2OWZjYzU4
OGZlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNS0yNyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5n
IHBhZ2UncyBsYXN0IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFp
bHVyZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJs
ZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFibGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNl
bGVjdCBhIHdvcmQuIAorCisgICAgICAgIG5leHRCb3VuZGFyeSgpIGFuZCBwcmV2aW91c0JvdW5k
YXJ5KCkgYXNzdW1lZCB0aGF0IGVkaXRhYmxlCisgICAgICAgIGJvdW5kYXJpZXMgYXJlIG9uIGJs
b2NrLWxldmVsIGVsZW1lbnRzLCBCdXQgaXQgY2FuIGFwcGVhciBvbgorICAgICAgICBpbmxpbmUt
bGV2ZWwgZWxlbWVudHMuIFNvIHdlIHN0YXJ0IGJvdW5kYXJ5IGxvb2stdXAgZnJvbSB0aGUgZ2l2
ZW4KKyAgICAgICAgbm9kZSwgaW5zdGVhZCBvZiB0aGUgY29udGFpbmluZ0Jsb2NrIG9mIHRoZSBn
aXZlbiBub2RlLgorICAgICAgICBBbHNvLCBhZGRlZCBUZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5n
Qm91bmRhcnkgdG8KKyAgICAgICAgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IsIG90aGVyd2lz
ZSwgdGhlIFZpc2libGVQb3NpdGlvbgorICAgICAgICByZXR1cm5lZCBieSBCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvciBtaWdodCBjcm9zcyBhbiBlZGl0aW5nCisgICAgICAgIGJvdW5kYXJ5Lgor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJz
dC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1sICAgICAgICAKKworICAgICAgICAqIGRvbS9Qb3Np
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50RWRpdGluZ0JvdW5k
YXJ5KTogQWRkZWQuCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpUZXh0
SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVy
YXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmNyb3NzZXNFZGl0aW5nQm91
bmRhcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3I6OnNldEN1cnJlbnROb2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpjbGVhckN1cnJlbnROb2RlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6QmFja3dhcmRzQ2hh
cmFjdGVySXRlcmF0b3IpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRCb3VuZGFyeSk6CisKIDIwMTAtMDUtMjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRl
eCBkYjllM2M2MWNmMzZiNTJlMWY4NThlZjJhZTQwMzNiM2VlMWY4MTRmLi42M2RkODNkZDJlMDNi
MWJmNjdkYzYwYzM1OWVlZWFmZjA1NzY1ZTQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKKysrIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0zMjgsNiArMzI4LDIz
IEBAIGJvb2wgUG9zaXRpb246OmF0RWRpdGluZ0JvdW5kYXJ5KCkgY29uc3QKICAgICAgICAgJiYg
cHJldlBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFwcmV2UG9zaXRpb24ubm9kZSgpLT5pc0NvbnRl
bnRFZGl0YWJsZSgpOwogfQogCitOb2RlKiBQb3NpdGlvbjo6cGFyZW50RWRpdGluZ0JvdW5kYXJ5
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5kb2N1
bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5vZGUqIGRvY3VtZW50RWxlbWVudCA9
IG1fYW5jaG9yTm9kZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYgKCFk
b2N1bWVudEVsZW1lbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgTm9kZSogYm91bmRhcnkg
PSBtX2FuY2hvck5vZGUuZ2V0KCk7CisgICAgd2hpbGUgKGJvdW5kYXJ5ICE9IGRvY3VtZW50RWxl
bWVudCAmJiBib3VuZGFyeS0+cGFyZW50Tm9kZSgpICYmIG1fYW5jaG9yTm9kZS0+aXNDb250ZW50
RWRpdGFibGUoKSA9PSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgp
KQorICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5LT5wYXJlbnROb2RlKCk7CisgICAgCisgICAg
cmV0dXJuIGJvdW5kYXJ5OworfQorCisKIGJvb2wgUG9zaXRpb246OmF0U3RhcnRPZlRyZWUoKSBj
b25zdAogewogICAgIGlmIChpc051bGwoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmggYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IGNlMDZmNDgzYTExZTRlOGY3NDBm
MTNmNGZhZDA5NmUxMDQ1ZmI3ZDYuLmZlZDY5OTNjYWZlYTA0MzAyOTBkYmU5YTgwMWZiZWVkYTI1
ZTUwZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIvV2ViQ29yZS9k
b20vUG9zaXRpb24uaApAQCAtMTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbnMgYXJvdW5kIGhhdmUg
ZGlmZmVyZW50IGVkaXRhYmlsaXR5CiAgICAgYm9vbCBhdEVkaXRpbmdCb3VuZGFyeSgpIGNvbnN0
OworICAgIE5vZGUqIHBhcmVudEVkaXRpbmdCb3VuZGFyeSgpIGNvbnN0OwogICAgIAogICAgIGJv
b2wgYXRTdGFydE9mVHJlZSgpIGNvbnN0OwogICAgIGJvb2wgYXRFbmRPZlRyZWUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZjNiZDlkZjZiOWY5NWJmMzBkZGEyYTMwZTcy
NmQ3MzVmMThmOGIxZi4uMmMxZDQ0ODYwNzcxODk1NDU4NWMzY2U3NzdkNzkyZDA3ZDVmZTc3YyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTI3Miw2ICsyNzIsOSBAQCBUZXh0SXRlcmF0
b3I6OlRleHRJdGVyYXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVo
YXZpb3IpCiAgICAgLCBtX2VudGVyc1RleHRDb250cm9scyhiZWhhdmlvciAmIFRleHRJdGVyYXRv
ckVudGVyc1RleHRDb250cm9scykKICAgICAsIG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5n
KGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZykKIHsK
KyAgICAvLyBGSVhNRTogc2hvdWxkIHN1cHBvcnQgVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0Jv
dW5kYXJ5CisgICAgQVNTRVJUKGJlaGF2aW9yICE9IFRleHRJdGVyYXRvckVuZHNBdEVkaXRpbmdC
b3VuZGFyeSk7CisKICAgICBpZiAoIXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTQ0LDEzICs5
NDcsMTUgQEAgTm9kZSogVGV4dEl0ZXJhdG9yOjpub2RlKCkgY29uc3QKIC8vIC0tLS0tLS0tCiAK
IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3IoKQotICAgIDogbV9wb3NpdGlvbk5vZGUoMCkKKyAgICA6IG1fYmVoYXZpb3IoVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKSwgbV9ub2RlKDApLCBtX3Bvc2l0aW9uTm9kZSgwKQog
ewogfQogCi1TaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dh
cmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByKQotICAgIDogbV9wb3NpdGlvbk5vZGUoMCkK
K1NpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQor
ICAgIDogbV9iZWhhdmlvcihiZWhhdmlvciksIG1fbm9kZSgwKSwgbV9wb3NpdGlvbk5vZGUoMCkK
IHsKKyAgICBBU1NFUlQobV9iZWhhdmlvciA9PSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ig
fHwgbV9iZWhhdmlvciA9PSBUZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkpOworCiAg
ICAgaWYgKCFyKQogICAgICAgICByZXR1cm47CiAKQEAgLTk3NCw3ICs5NzksNyBAQCBTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9y
KGNvbnN0IFJhbmdlKiByKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9ub2RlID0gZW5kTm9k
ZTsKKyAgICBzZXRDdXJyZW50Tm9kZShlbmROb2RlKTsKICAgICBzZXRVcEZ1bGx5Q2xpcHBlZFN0
YWNrKG1fZnVsbHlDbGlwcGVkU3RhY2ssIG1fbm9kZSk7ICAgIAogICAgIG1fb2Zmc2V0ID0gZW5k
T2Zmc2V0OwogICAgIG1faGFuZGxlZE5vZGUgPSBmYWxzZTsKQEAgLTEwMzgsMTIgKzEwNDMsOSBA
QCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAg
ICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEV4
aXQgYWxsIG90aGVyIGNvbnRhaW5lcnMuCi0gICAgICAgICAgICBuZXh0ID0gbV9ub2RlLT5wcmV2
aW91c1NpYmxpbmcoKTsKLSAgICAgICAgICAgIHdoaWxlICghbmV4dCkgewotICAgICAgICAgICAg
ICAgIE5vZGUqIHBhcmVudE5vZGUgPSBwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMobV9u
b2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoIXBhcmVudE5vZGUpCisgICAgICAgICAgICB3aGls
ZSAoIW1fbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXNl
dEN1cnJlbnROb2RlKHBhcmVudENyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhtX25vZGUpKSkKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbV9ub2RlID0gcGFyZW50
Tm9kZTsKICAgICAgICAgICAgICAgICBtX2Z1bGx5Q2xpcHBlZFN0YWNrLnBvcCgpOwogICAgICAg
ICAgICAgICAgIGV4aXROb2RlKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fcG9zaXRpb25Ob2Rl
KSB7CkBAIC0xMDUxLDE0ICsxMDUzLDE3IEBAIHZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZENoaWxkcmVu
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBuZXh0ID0gbV9ub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbmV4dCA9IG1fbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7
CiAgICAgICAgICAgICBtX2Z1bGx5Q2xpcHBlZFN0YWNrLnBvcCgpOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBtX25vZGUgPSBuZXh0OwotICAgICAgICBpZiAobV9ub2RlKQorICAgICAg
ICBpZiAobV9ub2RlICYmIHNldEN1cnJlbnROb2RlKG5leHQpKQogICAgICAgICAgICAgcHVzaEZ1
bGx5Q2xpcHBlZFN0YXRlKG1fZnVsbHlDbGlwcGVkU3RhY2ssIG1fbm9kZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNsZWFyQ3VycmVudE5vZGUoKTsKKwogICAgICAgICAvLyBGb3IgdGhl
IHB1cnBvc2Ugb2Ygd29yZCBib3VuZGFyeSBkZXRlY3Rpb24sCiAgICAgICAgIC8vIHdlIHNob3Vs
ZCBpdGVyYXRlIGFsbCB2aXNpYmxlIHRleHQgYW5kIHRyYWlsaW5nIChjb2xsYXBzZWQpIHdoaXRl
c3BhY2VzLiAKICAgICAgICAgbV9vZmZzZXQgPSBtX25vZGUgPyBtYXhPZmZzZXRJbmNsdWRpbmdD
b2xsYXBzZWRTcGFjZXMobV9ub2RlKSA6IDA7CkBAIC0xMTM3LDYgKzExNDIsMjYgQEAgdm9pZCBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGMsIE5v
ZGUqIG5vZGUsIGludCBzdGEKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSBjOwogfQogCitib29sIFNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmNyb3NzZXNFZGl0aW5nQm91bmRhcnkoTm9k
ZSogbm9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ub2RlICYmIG1fbm9kZS0+aXNDb250ZW50
RWRpdGFibGUoKSAhPSBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpOworfQorCitib29sIFNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnNldEN1cnJlbnROb2RlKE5vZGUqIG5vZGUpCit7
CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fYmVoYXZp
b3IgPT0gVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5kYXJ5ICYmIGNyb3NzZXNFZGl0aW5n
Qm91bmRhcnkobm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX25vZGUgPSBub2Rl
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRl
cmF0b3I6OmNsZWFyQ3VycmVudE5vZGUoKQoreworICAgIG1fbm9kZSA9IDA7Cit9CisKIFBhc3NS
ZWZQdHI8UmFuZ2U+IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29u
c3QKIHsKICAgICBpZiAobV9wb3NpdGlvbk5vZGUpCkBAIC0xMjYyLDExICsxMjg3LDExIEBAIEJh
Y2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcigpCiB7
CiB9CiAKLUJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVy
YXRvcihjb25zdCBSYW5nZSogcmFuZ2UpCitCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6QmFj
a3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFuZ2UqIHJhbmdlLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvciBiZWhhdmlvcikKICAgICA6IG1fb2Zmc2V0KDApCiAgICAgLCBtX3J1bk9mZnNldCgw
KQogICAgICwgbV9hdEJyZWFrKHRydWUpCi0gICAgLCBtX3RleHRJdGVyYXRvcihyYW5nZSkKKyAg
ICAsIG1fdGV4dEl0ZXJhdG9yKHJhbmdlLCBiZWhhdmlvcikKIHsKICAgICB3aGlsZSAoIWF0RW5k
KCkgJiYgIW1fdGV4dEl0ZXJhdG9yLmxlbmd0aCgpKQogICAgICAgICBtX3RleHRJdGVyYXRvci5h
ZHZhbmNlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggYmEzODFiOWJmYTQ0YTc5ZDEwNjQ5
OTlkMmM2MDdiZTY5Zjc2YTg5My4uOWNmZjE0YTAyMTIzNWY2MmIzNDI0ZmQ3MjdmOWY3MGQyZTUw
YzI0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtNzMsNiArNzMsNyBAQCBlbnVtIFRleHRJ
dGVyYXRvckJlaGF2aW9yIHsKICAgICBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucyA9IDEgPDwgMCwKICAgICBUZXh0SXRlcmF0b3JFbnRlcnNUZXh0
Q29udHJvbHMgPSAxIDw8IDEsCiAgICAgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFu
c2NvZGluZyA9IDEgPDwgMiwKKyAgICBUZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkg
PSAxIDw8IDMKIH07CiAKIGNsYXNzIFRleHRJdGVyYXRvciB7CkBAIC0xNjcsNyArMTY4LDcgQEAg
cHJpdmF0ZToKIGNsYXNzIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgewogcHVibGlj
OgogICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKik7CisgICAgZXhwbGlj
aXQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSosIFRleHRJdGVy
YXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKICAgICAKICAgICBi
b29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fcG9zaXRpb25Ob2RlOyB9CiAgICAgdm9pZCBh
ZHZhbmNlKCk7CkBAIC0xODMsNyArMTg0LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVS
ZXBsYWNlZEVsZW1lbnQoKTsKICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7CiAgICAgdm9p
ZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2RlKiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0KTsKLSAgICAKKyAgICBib29sIGNyb3NzZXNFZGl0aW5nQm91bmRhcnkoTm9kZSogbm9kZSkg
Y29uc3Q7CisgICAgYm9vbCBzZXRDdXJyZW50Tm9kZShOb2RlKiBub2RlKTsKKyAgICB2b2lkIGNs
ZWFyQ3VycmVudE5vZGUoKTsKKworICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIG1fYmVoYXZpb3I7
CiAgICAgLy8gQ3VycmVudCBwb3NpdGlvbiwgbm90IG5lY2Vzc2FyaWx5IG9mIHRoZSB0ZXh0IGJl
aW5nIHJldHVybmVkLCBidXQgcG9zaXRpb24KICAgICAvLyBhcyB3ZSB3YWxrIHRocm91Z2ggdGhl
IERPTSB0cmVlLgogICAgIE5vZGUqIG1fbm9kZTsKQEAgLTI0Nyw3ICsyNTIsNyBAQCBwcml2YXRl
OgogY2xhc3MgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IgewogcHVibGljOgogICAgIEJhY2t3
YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgQmFja3dhcmRzQ2hhcmFjdGVy
SXRlcmF0b3IoY29uc3QgUmFuZ2UqKTsKKyAgICBleHBsaWNpdCBCYWNrd2FyZHNDaGFyYWN0ZXJJ
dGVyYXRvcihjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9y
RGVmYXVsdEJlaGF2aW9yKTsKIAogICAgIHZvaWQgYWR2YW5jZShpbnQpOwogCkBAIC0yNTYsNiAr
MjYxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlKCkgY29uc3Q7CiAK
IHByaXZhdGU6CisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgbV9iZWhhdmlvcjsKICAgICBpbnQg
bV9vZmZzZXQ7CiAgICAgaW50IG1fcnVuT2Zmc2V0OwogICAgIGJvb2wgbV9hdEJyZWFrOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL3Zpc2libGVfdW5pdHMuY3BwCmluZGV4IGMwOTRhYWNhMmJiNDRiNzY0YjVhY2Q2ZGZmZmI0
MDk1Y2E0N2U4OGQuLmE1MmZkNTg4MmNjYjJmMTgyYjJkNjRiMzMxMjVmNjZiZDc4ZjA1OTkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTc1LDIwICs3NSwxMSBAQCB0eXBlZGVmIHVu
c2lnbmVkICgqQm91bmRhcnlTZWFyY2hGdW5jdGlvbikoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgsIHVuc2lnbgogc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5j
dGlvbikKIHsKICAgICBQb3NpdGlvbiBwb3MgPSBjLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9k
ZSAqbiA9IHBvcy5ub2RlKCk7Ci0gICAgaWYgKCFuKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7Ci0gICAgRG9jdW1lbnQgKmQgPSBuLT5kb2N1bWVudCgpOwotICAgIE5vZGUgKmRl
ID0gZC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFkZSkKLSAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOwotICAgIE5vZGUgKmJvdW5kYXJ5ID0gbi0+ZW5jbG9zaW5nQmxvY2tG
bG93RWxlbWVudCgpOworICAgIE5vZGUqIGJvdW5kYXJ5ID0gcG9zLnBhcmVudEVkaXRpbmdCb3Vu
ZGFyeSgpOwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRp
b24oKTsKLSAgICBib29sIGlzQ29udGVudEVkaXRhYmxlID0gYm91bmRhcnktPmlzQ29udGVudEVk
aXRhYmxlKCk7Ci0gICAgd2hpbGUgKGJvdW5kYXJ5ICYmIGJvdW5kYXJ5ICE9IGRlICYmIGJvdW5k
YXJ5LT5wYXJlbnROb2RlKCkgJiYgaXNDb250ZW50RWRpdGFibGUgPT0gYm91bmRhcnktPnBhcmVu
dE5vZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgYm91bmRhcnkgPSBib3VuZGFy
eS0+cGFyZW50Tm9kZSgpOwogCisgICAgRG9jdW1lbnQqIGQgPSBib3VuZGFyeS0+ZG9jdW1lbnQo
KTsKICAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChQb3NpdGlv
bihib3VuZGFyeSwgMCkpOwogICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlQ29tcGxpYW50RXF1aXZh
bGVudChwb3MpOwogICAgIFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGQpOwpAQCAtMTIxLDcgKzExMiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNC
b3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoCiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSAgICBTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpKTsKKyAgICBTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpLCBUZXh0SXRlcmF0
b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkpOwogICAgIHVuc2lnbmVkIG5leHQgPSAwOwogICAgIGJv
b2wgaW5UZXh0U2VjdXJpdHlNb2RlID0gc3RhcnQubm9kZSgpICYmIHN0YXJ0Lm5vZGUoKS0+cmVu
ZGVyZXIoKSAmJiBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCktPnRleHRTZWN1cml0
eSgpICE9IFRTTk9ORTsKICAgICBib29sIG5lZWRNb3JlQ29udGV4dCA9IGZhbHNlOwpAQCAtMTU2
LDcgKzE0Nyw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeShjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoCiAgICAgICAgICAgICBwb3MgPSBQ
b3NpdGlvbihub2RlLCBuZXh0KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBVc2Ug
dGhlIGNoYXJhY3RlciBpdGVyYXRvciB0byB0cmFuc2xhdGUgdGhlIG5leHQgdmFsdWUgaW50byBh
IERPTSBwb3NpdGlvbi4KLSAgICAgICAgICAgIEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yIGNo
YXJJdChzZWFyY2hSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBCYWNrd2FyZHNDaGFyYWN0ZXJJ
dGVyYXRvciBjaGFySXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckVuZHNBdEVkaXRp
bmdCb3VuZGFyeSk7CiAgICAgICAgICAgICBjaGFySXQuYWR2YW5jZShzdHJpbmcuc2l6ZSgpIC0g
c3VmZml4TGVuZ3RoIC0gbmV4dCk7CiAgICAgICAgICAgICBwb3MgPSBjaGFySXQucmFuZ2UoKS0+
ZW5kUG9zaXRpb24oKTsKICAgICAgICAgfQpAQCAtMTY4LDIwICsxNTksMTEgQEAgc3RhdGljIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywg
Qm91bmRhcnlTZWFyY2gKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlv
bikKIHsKICAgICBQb3NpdGlvbiBwb3MgPSBjLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSAq
biA9IHBvcy5ub2RlKCk7Ci0gICAgaWYgKCFuKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKCk7Ci0gICAgRG9jdW1lbnQgKmQgPSBuLT5kb2N1bWVudCgpOwotICAgIE5vZGUgKmRlID0g
ZC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFkZSkKLSAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOwotICAgIE5vZGUgKmJvdW5kYXJ5ID0gbi0+ZW5jbG9zaW5nQmxvY2tGbG93
RWxlbWVudCgpOworICAgIE5vZGUqIGJvdW5kYXJ5ID0gcG9zLnBhcmVudEVkaXRpbmdCb3VuZGFy
eSgpOwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKLSAgICBib29sIGlzQ29udGVudEVkaXRhYmxlID0gYm91bmRhcnktPmlzQ29udGVudEVkaXRh
YmxlKCk7Ci0gICAgd2hpbGUgKGJvdW5kYXJ5ICYmIGJvdW5kYXJ5ICE9IGRlICYmIGJvdW5kYXJ5
LT5wYXJlbnROb2RlKCkgJiYgaXNDb250ZW50RWRpdGFibGUgPT0gYm91bmRhcnktPnBhcmVudE5v
ZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeS0+
cGFyZW50Tm9kZSgpOwogCisgICAgRG9jdW1lbnQqIGQgPSBib3VuZGFyeS0+ZG9jdW1lbnQoKTsK
ICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdlKGQtPmNyZWF0ZVJhbmdlKCkpOwogICAgIFBv
c2l0aW9uIHN0YXJ0KHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChwb3MpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63698</attachid>
            <date>2010-08-05 23:30:13 -0700</date>
            <delta_ts>2010-08-06 15:18:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36359-20100806153011.patch</filename>
            <type>text/plain</type>
            <size>17345</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZTI3M2Q3YzNjMGY2NzY5YTc2ZDgxYjZlOGZhMDE1MDQ2OGMyZWJlLi5jMjE5M2Ex
N2U0ZDA3OTA1OTE0NDA3NTlmYzY0NWExNjYwMjI5ZTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDUtMjAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdlJ3MgZmlyc3QgZWRpdGFi
bGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNlbGVjdCBhIHdvcmQuIAorICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5nIHBhZ2UncyBsYXN0
IGVkaXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZS4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNv
bnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9zY3JpcHQtdGVzdHMvZG91Ymxl
Y2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVudGVkaXRhYmxlLmpzOiBBZGRlZC4gIAorCiAy
MDEwLTA4LTA1ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtZmlyc3QtbGFzdC1j
b250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVudGVkaXRhYmxlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MzcwYzE2ODFhNGI0NTk5YWIzMmQ3N2RkZGFlMjFkYWE4MDhhZWZk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91Ymxl
Y2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDExIEBACitUZXN0IHRvIGNoZWNrIGlmIGxhc3QgYW5kIGZpcnN0IHdvcmQgY2FuIGJl
IHNlbGVjdGVkIHdoZW4gdGhleSBkb3VibGUtY2xpY2tlZCAoQnVnIDM2MzU5KQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAnc2VsZWN0bWUxJworUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSBpcyAnc2VsZWN0bWUyJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitzZWxlY3RtZTEgYW5kIG5vdCBzZWxlY3QgdXN5b3Ugc2hvdWxkIGlnbm9yZSB1
cyBidXQgc2VsZWN0bWUyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay1pbmxpbmUtZmlyc3QtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0
LWNvbnRlbnRlZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMzg4YzM3OGE3YzI3ZDBkN2IyNjE0
NGM4MGY0MTNjNzIyY2IzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtZmlyc3QtbGFzdC1jb250ZW50ZWRpdGFibGUu
aHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kb3VibGVjbGljay1pbmxp
bmUtZmlyc3QtbGFzdC1jb250ZW50ZWRpdGFibGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9z
Y3JpcHQtdGVzdHMvZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWxhc3QtY29udGVudGVkaXRhYmxl
LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRlc3RzL2RvdWJsZWNs
aWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGYy
ODY2MDRkM2E2YjAyZGE5NGRmMTE1Mzg2MzkzOGYzN2M1NDBmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRlc3RzL2RvdWJsZWNsaWNrLWlu
bGluZS1maXJzdC1sYXN0LWNvbnRlbnRlZGl0YWJsZS5qcwpAQCAtMCwwICsxLDMzIEBACitkZXNj
cmlwdGlvbigiVGVzdCB0byBjaGVjayBpZiBsYXN0IGFuZCBmaXJzdCB3b3JkIGNhbiBiZSBzZWxl
Y3RlZCB3aGVuIHRoZXkgZG91YmxlLWNsaWNrZWQgKEJ1ZyAzNjM1OSkiKTsKKworZnVuY3Rpb24g
Z2V0UG9zaXRpb25PZk5vZGUobm9kZSkKK3sKKyAgICByZXR1cm4geworICAgICAgIngiOiAgbm9k
ZS5vZmZzZXRMZWZ0ICsgbm9kZS5jbGllbnRXaWR0aCAvIDIsCisgICAgICAieSI6ICBub2RlLm9m
ZnNldFRvcCAgKyBub2RlLmNsaWVudEhlaWdodCAvIDIKKyAgICB9OworfQorCitmdW5jdGlvbiBk
b3VibGVDbGlja1Bvc2l0aW9uKHBvcykKK3sKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhw
b3MueCwgcG9zLnkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7Cit9CisKK3ZhciB0YXJnZXRSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhcmdldFJvb3QpOworCit0
YXJnZXRSb290LmlubmVySFRNTCArPSAiPHNwYW4gaWQ9J2ZpcnN0VGFyZ2V0JyBjb250ZW50RWRp
dGFibGU+c2VsZWN0bWUxPC9zcGFuPiBhbmQgbm90IHNlbGVjdCB1cyI7Cit2YXIgZmlyc3RUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyc3RUYXJnZXQiKTsKK2RvdWJsZUNsaWNr
UG9zaXRpb24oZ2V0UG9zaXRpb25PZk5vZGUoZmlyc3RUYXJnZXQpKTsKK3Nob3VsZEJlKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICInc2VsZWN0bWUxJyIpOworCit0YXJnZXRS
b290LmlubmVySFRNTCArPSAieW91IHNob3VsZCBpZ25vcmUgdXMgYnV0IDxzcGFuIGlkPSdsYXN0
VGFyZ2V0JyBjb250ZW50RWRpdGFibGU+c2VsZWN0bWUyPC9zcGFuPiI7Cit2YXIgbGFzdFRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXN0VGFyZ2V0Iik7Citkb3VibGVDbGlja1Bv
c2l0aW9uKGdldFBvc2l0aW9uT2ZOb2RlKGxhc3RUYXJnZXQpKTsKK3Nob3VsZEJlKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICInc2VsZWN0bWUyJyIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjZlYThiZGVhZWQ0OGYxOWE4NGE2NjVhOTcxOWMwZGZiYTkx
ZmIxMy4uZGFjODgzMGI2MmQ2ZGE2Nzk4YjMyZDBkMzE3ODliN2UzNDNjOTJkNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MCBAQAorMjAxMC0wNS0yNyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8aHR0cDovL3dl
YmtpdC5vcmcvYi8zNjM1OT4KKyAgICAgICAgRG91YmxlIGNsaWNraW5nIHBhZ2UncyBsYXN0IGVk
aXRhYmxlIGlubGluZSBlbGVtZW50IGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZS4KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMzYzNjA+CisgICAgICAgIERvdWJsZSBjbGlja2luZyBwYWdl
J3MgZmlyc3QgZWRpdGFibGUgaW5saW5lIGVsZW1lbnQgY2Fubm90IHNlbGVjdCBhIHdvcmQuIAor
CisgICAgICAgIG5leHRCb3VuZGFyeSgpIGFuZCBwcmV2aW91c0JvdW5kYXJ5KCkgYXNzdW1lZCB0
aGF0IGVkaXRhYmxlCisgICAgICAgIGJvdW5kYXJpZXMgYXJlIG9uIGJsb2NrLWxldmVsIGVsZW1l
bnRzLCBCdXQgaXQgY2FuIGFwcGVhciBvbgorICAgICAgICBpbmxpbmUtbGV2ZWwgZWxlbWVudHMu
IFNvIHdlIHN0YXJ0IGJvdW5kYXJ5IGxvb2stdXAgZnJvbSB0aGUgZ2l2ZW4KKyAgICAgICAgbm9k
ZSwgaW5zdGVhZCBvZiB0aGUgY29udGFpbmluZ0Jsb2NrIG9mIHRoZSBnaXZlbiBub2RlLgorICAg
ICAgICBBbHNvLCBhZGRlZCBUZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkgdG8KKyAg
ICAgICAgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IsIG90aGVyd2lzZSwgdGhlIFZpc2libGVQ
b3NpdGlvbgorICAgICAgICByZXR1cm5lZCBieSBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvciBt
aWdodCBjcm9zcyBhbiBlZGl0aW5nCisgICAgICAgIGJvdW5kYXJ5LgorCisgICAgICAgIFRlc3Q6
IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWlubGluZS1maXJzdC1sYXN0LWNvbnRlbnRl
ZGl0YWJsZS5odG1sICAgICAgICAKKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50RWRpdGluZ0JvdW5kYXJ5KTogQWRkZWQuCisg
ICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZp
ZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmNyb3NzZXNFZGl0aW5nQm91bmRhcnkpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnNldEN1
cnJlbnROb2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yOjpjbGVhckN1cnJlbnROb2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3Ip
OgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjop
OgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwcmV2aW91c0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCb3VuZGFyeSk6CisK
IDIwMTAtMDgtMDUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggNjViNzI2
MTQxZTg2ZTdmMmM5MjllYzM2OTA3NDcxMjUxMDU5MGFlOS4uNDc1OGJkOWI4MTJhYWUyZDQ0NDJi
M2QzNDYwOWE4Njg4N2E4NGI4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMzI4LDYgKzMyOCwyMyBAQCBib29s
IFBvc2l0aW9uOjphdEVkaXRpbmdCb3VuZGFyeSgpIGNvbnN0CiAgICAgICAgICYmIHByZXZQb3Np
dGlvbi5pc05vdE51bGwoKSAmJiAhcHJldlBvc2l0aW9uLm5vZGUoKS0+aXNDb250ZW50RWRpdGFi
bGUoKTsKIH0KIAorTm9kZSogUG9zaXRpb246OnBhcmVudEVkaXRpbmdCb3VuZGFyeSgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOb2RlKiBkb2N1bWVudEVsZW1lbnQgPSBtX2FuY2hv
ck5vZGUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZG9jdW1lbnRF
bGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5vZGUqIGJvdW5kYXJ5ID0gbV9hbmNo
b3JOb2RlLmdldCgpOworICAgIHdoaWxlIChib3VuZGFyeSAhPSBkb2N1bWVudEVsZW1lbnQgJiYg
Ym91bmRhcnktPnBhcmVudE5vZGUoKSAmJiBtX2FuY2hvck5vZGUtPmlzQ29udGVudEVkaXRhYmxl
KCkgPT0gYm91bmRhcnktPnBhcmVudE5vZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAg
ICAgYm91bmRhcnkgPSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpOworICAgIAorICAgIHJldHVybiBi
b3VuZGFyeTsKK30KKworCiBib29sIFBvc2l0aW9uOjphdFN0YXJ0T2ZUcmVlKCkgY29uc3QKIHsK
ICAgICBpZiAoaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIv
V2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCBmNjA2YzI5NjAxMWUxZWYyYmJhNzc4MmI3NTlm
NTczN2E3YjVjYWViLi45ZjJlZTI0NWY4NWRhYTc4M2Q0NDE1ZDE4MzBhNGViZmQxY2FiMTYzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIHZpc3VhbGx5IGVxdWl2YWxlbnQgcG9zaXRpb25zIGFyb3VuZCBoYXZlIGRpZmZlcmVu
dCBlZGl0YWJpbGl0eQogICAgIGJvb2wgYXRFZGl0aW5nQm91bmRhcnkoKSBjb25zdDsKKyAgICBO
b2RlKiBwYXJlbnRFZGl0aW5nQm91bmRhcnkoKSBjb25zdDsKICAgICAKICAgICBib29sIGF0U3Rh
cnRPZlRyZWUoKSBjb25zdDsKICAgICBib29sIGF0RW5kT2ZUcmVlKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCmluZGV4IGYzYmQ5ZGY2YjlmOTViZjMwZGRhMmEzMGU3MjZkNzM1ZjE4
ZjhiMWYuLjAwZmI2NmZjZjU4Y2VmZTZmZmZmNmMxZmJiMTExYzllN2I1OGI3NTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0yNzIsNiArMjcyLDkgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0
SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQog
ICAgICwgbV9lbnRlcnNUZXh0Q29udHJvbHMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbnRlcnNU
ZXh0Q29udHJvbHMpCiAgICAgLCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyhiZWhhdmlv
ciAmIFRleHRJdGVyYXRvckVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcpCiB7CisgICAgLy8g
aHR0cDovL3dlYmtpdC5vcmcvYi80MzYwOTogc2hvdWxkIHN1cHBvcnQgVGV4dEl0ZXJhdG9yRW5k
c0F0RWRpdGluZ0JvdW5kYXJ5IAorICAgIEFTU0VSVChiZWhhdmlvciAhPSBUZXh0SXRlcmF0b3JF
bmRzQXRFZGl0aW5nQm91bmRhcnkpOworCiAgICAgaWYgKCFyKQogICAgICAgICByZXR1cm47CiAK
QEAgLTk0NCwxMyArOTQ3LDE5IEBAIE5vZGUqIFRleHRJdGVyYXRvcjo6bm9kZSgpIGNvbnN0CiAv
LyAtLS0tLS0tLQogCiBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yKCkKLSAgICA6IG1fcG9zaXRpb25Ob2RlKDApCisgICAgOiBt
X2JlaGF2aW9yKFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcikKKyAgICAsIG1fbm9kZSgwKQor
ICAgICwgbV9wb3NpdGlvbk5vZGUoMCkKIHsKIH0KIAotU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSogcikK
LSAgICA6IG1fcG9zaXRpb25Ob2RlKDApCitTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9y
OjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciBiZWhhdmlvcikKKyAgICA6IG1fYmVoYXZpb3IoYmVoYXZpb3IpCisgICAg
LCBtX25vZGUoMCkKKyAgICAsIG1fcG9zaXRpb25Ob2RlKDApCiB7CisgICAgQVNTRVJUKG1fYmVo
YXZpb3IgPT0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yIHx8IG1fYmVoYXZpb3IgPT0gVGV4
dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5kYXJ5KTsKKwogICAgIGlmICghcikKICAgICAgICAg
cmV0dXJuOwogCkBAIC05NzQsNyArOTgzLDcgQEAgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVy
YXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSogcikKICAg
ICAgICAgfQogICAgIH0KIAotICAgIG1fbm9kZSA9IGVuZE5vZGU7CisgICAgc2V0Q3VycmVudE5v
ZGUoZW5kTm9kZSk7CiAgICAgc2V0VXBGdWxseUNsaXBwZWRTdGFjayhtX2Z1bGx5Q2xpcHBlZFN0
YWNrLCBtX25vZGUpOyAgICAKICAgICBtX29mZnNldCA9IGVuZE9mZnNldDsKICAgICBtX2hhbmRs
ZWROb2RlID0gZmFsc2U7CkBAIC0xMDM4LDEyICsxMDQ3LDkgQEAgdm9pZCBTaW1wbGlmaWVkQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgICAgICAgICB9ICAgICAgICAg
ICAgCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBFeGl0IGFsbCBvdGhlciBjb250YWlu
ZXJzLgotICAgICAgICAgICAgbmV4dCA9IG1fbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAg
ICAgICAgICB3aGlsZSAoIW5leHQpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2Rl
ID0gcGFyZW50Q3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKG1fbm9kZSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFwYXJlbnROb2RlKQorICAgICAgICAgICAgd2hpbGUgKCFtX25vZGUtPnByZXZpb3Vz
U2libGluZygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzZXRDdXJyZW50Tm9kZShwYXJlbnRD
cm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMobV9ub2RlKSkpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIG1fbm9kZSA9IHBhcmVudE5vZGU7CiAgICAgICAgICAgICAg
ICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICBleGl0Tm9kZSgp
OwogICAgICAgICAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkgewpAQCAtMTA1MSwxNCArMTA1
NywxNyBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQog
ICAgICAgICAgICAgICAgICAgICBtX2hhbmRsZWRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV4
dCA9IG1fbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIG5leHQgPSBtX25vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAgICAgbV9mdWxs
eUNsaXBwZWRTdGFjay5wb3AoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9ub2Rl
ID0gbmV4dDsKLSAgICAgICAgaWYgKG1fbm9kZSkKKyAgICAgICAgaWYgKG1fbm9kZSAmJiBzZXRD
dXJyZW50Tm9kZShuZXh0KSkKICAgICAgICAgICAgIHB1c2hGdWxseUNsaXBwZWRTdGF0ZShtX2Z1
bGx5Q2xpcHBlZFN0YWNrLCBtX25vZGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGVh
ckN1cnJlbnROb2RlKCk7CisKICAgICAgICAgLy8gRm9yIHRoZSBwdXJwb3NlIG9mIHdvcmQgYm91
bmRhcnkgZGV0ZWN0aW9uLAogICAgICAgICAvLyB3ZSBzaG91bGQgaXRlcmF0ZSBhbGwgdmlzaWJs
ZSB0ZXh0IGFuZCB0cmFpbGluZyAoY29sbGFwc2VkKSB3aGl0ZXNwYWNlcy4gCiAgICAgICAgIG1f
b2Zmc2V0ID0gbV9ub2RlID8gbWF4T2Zmc2V0SW5jbHVkaW5nQ29sbGFwc2VkU3BhY2VzKG1fbm9k
ZSkgOiAwOwpAQCAtMTEzNyw2ICsxMTQ2LDI2IEBAIHZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1Rl
eHRJdGVyYXRvcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBjLCBOb2RlKiBub2RlLCBpbnQgc3RhCiAg
ICAgbV9sYXN0Q2hhcmFjdGVyID0gYzsKIH0KIAorYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4
dEl0ZXJhdG9yOjpjcm9zc2VzRWRpdGluZ0JvdW5kYXJ5KE5vZGUqIG5vZGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbm9kZSAmJiBtX25vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkgIT0gbm9kZS0+
aXNDb250ZW50RWRpdGFibGUoKTsKK30KKworYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yOjpzZXRDdXJyZW50Tm9kZShOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2JlaGF2aW9yID09IFRleHRJdGVyYXRvckVu
ZHNBdEVkaXRpbmdCb3VuZGFyeSAmJiBjcm9zc2VzRWRpdGluZ0JvdW5kYXJ5KG5vZGUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9ub2RlID0gbm9kZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpjbGVhckN1cnJlbnRO
b2RlKCkKK3sKKyAgICBtX25vZGUgPSAwOworfQorCiBQYXNzUmVmUHRyPFJhbmdlPiBTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcG9z
aXRpb25Ob2RlKQpAQCAtMTI2MiwxMSArMTI5MSwxMSBAQCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVy
YXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoKQogewogfQogCi1CYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFuZ2UqIHJh
bmdlKQorQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJh
dG9yKGNvbnN0IFJhbmdlKiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAg
ICAgOiBtX29mZnNldCgwKQogICAgICwgbV9ydW5PZmZzZXQoMCkKICAgICAsIG1fYXRCcmVhayh0
cnVlKQotICAgICwgbV90ZXh0SXRlcmF0b3IocmFuZ2UpCisgICAgLCBtX3RleHRJdGVyYXRvcihy
YW5nZSwgYmVoYXZpb3IpCiB7CiAgICAgd2hpbGUgKCFhdEVuZCgpICYmICFtX3RleHRJdGVyYXRv
ci5sZW5ndGgoKSkKICAgICAgICAgbV90ZXh0SXRlcmF0b3IuYWR2YW5jZSgpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5oCmluZGV4IGJhMzgxYjliZmE0NGE3OWQxMDY0OTk5ZDJjNjA3YmU2OWY3NmE4OTMu
LjZhMGQ2ODVlYjY4YjcyM2Y3YjgwNjU2MzE2MTY2Y2YyZWZiMDZlODkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmgKQEAgLTczLDYgKzczLDcgQEAgZW51bSBUZXh0SXRlcmF0b3JCZWhhdmlvciB7CiAg
ICAgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMg
PSAxIDw8IDAsCiAgICAgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xzID0gMSA8PCAxLAog
ICAgIFRleHRJdGVyYXRvckVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcgPSAxIDw8IDIsCisg
ICAgVGV4dEl0ZXJhdG9yRW5kc0F0RWRpdGluZ0JvdW5kYXJ5ID0gMSA8PCAzCiB9OwogCiBjbGFz
cyBUZXh0SXRlcmF0b3IgewpAQCAtMTY3LDcgKzE2OCw3IEBAIHByaXZhdGU6CiBjbGFzcyBTaW1w
bGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBTaW1wbGlmaWVkQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgU2ltcGxpZmllZEJhY2t3YXJkc1Rl
eHRJdGVyYXRvcihjb25zdCBSYW5nZSopOworICAgIGV4cGxpY2l0IFNpbXBsaWZpZWRCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJ
dGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CiAgICAgCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsg
cmV0dXJuICFtX3Bvc2l0aW9uTm9kZTsgfQogICAgIHZvaWQgYWR2YW5jZSgpOwpAQCAtMTgzLDcg
KzE4NCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlUmVwbGFjZWRFbGVtZW50KCk7CiAg
ICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZvaWQgZW1pdENoYXJhY3RlcihVQ2hh
ciwgTm9kZSosIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7Ci0gICAgCisgICAgYm9v
bCBjcm9zc2VzRWRpdGluZ0JvdW5kYXJ5KE5vZGUqKSBjb25zdDsKKyAgICBib29sIHNldEN1cnJl
bnROb2RlKE5vZGUqKTsKKyAgICB2b2lkIGNsZWFyQ3VycmVudE5vZGUoKTsKKworICAgIFRleHRJ
dGVyYXRvckJlaGF2aW9yIG1fYmVoYXZpb3I7CiAgICAgLy8gQ3VycmVudCBwb3NpdGlvbiwgbm90
IG5lY2Vzc2FyaWx5IG9mIHRoZSB0ZXh0IGJlaW5nIHJldHVybmVkLCBidXQgcG9zaXRpb24KICAg
ICAvLyBhcyB3ZSB3YWxrIHRocm91Z2ggdGhlIERPTSB0cmVlLgogICAgIE5vZGUqIG1fbm9kZTsK
QEAgLTI0Nyw3ICsyNTIsNyBAQCBwcml2YXRlOgogY2xhc3MgQmFja3dhcmRzQ2hhcmFjdGVySXRl
cmF0b3IgewogcHVibGljOgogICAgIEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKCk7Ci0gICAg
ZXhwbGljaXQgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFuZ2UqKTsKKyAgICBl
eHBsaWNpdCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSosIFRleHRJdGVy
YXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKIAogICAgIHZvaWQg
YWR2YW5jZShpbnQpOwogCkBAIC0yNTYsNiArMjYxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8UmFuZ2U+IHJhbmdlKCkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgbV9iZWhhdmlvcjsKICAgICBpbnQgbV9vZmZzZXQ7CiAgICAgaW50IG1fcnVuT2Zmc2V0
OwogICAgIGJvb2wgbV9hdEJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2li
bGVfdW5pdHMuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCmluZGV4IGRk
NDg0MDYwMWRmY2UzZDM0MjhlNmFlMDJhYjkxMGM5MjRiZGNiNGYuLjRmY2UyZDljMjJmNTdiYWVh
NGNhYzAwYWRjMjdhODJiNmZlMDM1ZjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy92aXNp
YmxlX3VuaXRzLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKQEAg
LTc1LDIwICs3NSwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkICgqQm91bmRhcnlTZWFyY2hGdW5jdGlv
bikoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbgogc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRh
cnlTZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlvbikKIHsKICAgICBQb3NpdGlvbiBwb3MgPSBj
LmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSAqbiA9IHBvcy5ub2RlKCk7Ci0gICAgaWYgKCFu
KQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgRG9jdW1lbnQgKmQgPSBu
LT5kb2N1bWVudCgpOwotICAgIE5vZGUgKmRlID0gZC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAg
aWYgKCFkZSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIE5vZGUgKmJv
dW5kYXJ5ID0gbi0+ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpOworICAgIE5vZGUqIGJvdW5k
YXJ5ID0gcG9zLnBhcmVudEVkaXRpbmdCb3VuZGFyeSgpOwogICAgIGlmICghYm91bmRhcnkpCiAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICBib29sIGlzQ29udGVudEVkaXRh
YmxlID0gYm91bmRhcnktPmlzQ29udGVudEVkaXRhYmxlKCk7Ci0gICAgd2hpbGUgKGJvdW5kYXJ5
ICYmIGJvdW5kYXJ5ICE9IGRlICYmIGJvdW5kYXJ5LT5wYXJlbnROb2RlKCkgJiYgaXNDb250ZW50
RWRpdGFibGUgPT0gYm91bmRhcnktPnBhcmVudE5vZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkK
LSAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpOwogCisgICAgRG9jdW1l
bnQqIGQgPSBib3VuZGFyeS0+ZG9jdW1lbnQoKTsKICAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdl
Q29tcGxpYW50RXF1aXZhbGVudChQb3NpdGlvbihib3VuZGFyeSwgMCkpOwogICAgIFBvc2l0aW9u
IGVuZCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChwb3MpOwogICAgIFJlZlB0cjxSYW5nZT4g
c2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGQpOwpAQCAtMTIxLDcgKzExMiw3IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24m
IGMsIEJvdW5kYXJ5U2VhcmNoCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7CiAKLSAgICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGl0KHNlYXJj
aFJhbmdlLmdldCgpKTsKKyAgICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGl0KHNl
YXJjaFJhbmdlLmdldCgpLCBUZXh0SXRlcmF0b3JFbmRzQXRFZGl0aW5nQm91bmRhcnkpOwogICAg
IHVuc2lnbmVkIG5leHQgPSAwOwogICAgIGJvb2wgaW5UZXh0U2VjdXJpdHlNb2RlID0gc3RhcnQu
bm9kZSgpICYmIHN0YXJ0Lm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzdGFydC5ub2RlKCktPnJlbmRl
cmVyKCktPnN0eWxlKCktPnRleHRTZWN1cml0eSgpICE9IFRTTk9ORTsKICAgICBib29sIG5lZWRN
b3JlQ29udGV4dCA9IGZhbHNlOwpAQCAtMTU2LDcgKzE0Nyw3IEBAIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gcHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5
U2VhcmNoCiAgICAgICAgICAgICBwb3MgPSBQb3NpdGlvbihub2RlLCBuZXh0KTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAvLyBVc2UgdGhlIGNoYXJhY3RlciBpdGVyYXRvciB0byB0cmFu
c2xhdGUgdGhlIG5leHQgdmFsdWUgaW50byBhIERPTSBwb3NpdGlvbi4KLSAgICAgICAgICAgIEJh
Y2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yIGNoYXJJdChzZWFyY2hSYW5nZS5nZXQoKSk7CisgICAg
ICAgICAgICBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvciBjaGFySXQoc2VhcmNoUmFuZ2UuZ2V0
KCksIFRleHRJdGVyYXRvckVuZHNBdEVkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgICAgICBjaGFy
SXQuYWR2YW5jZShzdHJpbmcuc2l6ZSgpIC0gc3VmZml4TGVuZ3RoIC0gbmV4dCk7CiAgICAgICAg
ICAgICBwb3MgPSBjaGFySXQucmFuZ2UoKS0+ZW5kUG9zaXRpb24oKTsKICAgICAgICAgfQpAQCAt
MTY4LDIwICsxNTksMTEgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2gKIHN0YXRpYyBWaXNpYmxl
UG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlT
ZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlvbikKIHsKICAgICBQb3NpdGlvbiBwb3MgPSBjLmRl
ZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSAqbiA9IHBvcy5ub2RlKCk7Ci0gICAgaWYgKCFuKQot
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgRG9jdW1lbnQgKmQgPSBuLT5k
b2N1bWVudCgpOwotICAgIE5vZGUgKmRlID0gZC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgaWYg
KCFkZSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIE5vZGUgKmJvdW5k
YXJ5ID0gbi0+ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpOworICAgIE5vZGUqIGJvdW5kYXJ5
ID0gcG9zLnBhcmVudEVkaXRpbmdCb3VuZGFyeSgpOwogICAgIGlmICghYm91bmRhcnkpCiAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICBib29sIGlzQ29udGVudEVkaXRhYmxl
ID0gYm91bmRhcnktPmlzQ29udGVudEVkaXRhYmxlKCk7Ci0gICAgd2hpbGUgKGJvdW5kYXJ5ICYm
IGJvdW5kYXJ5ICE9IGRlICYmIGJvdW5kYXJ5LT5wYXJlbnROb2RlKCkgJiYgaXNDb250ZW50RWRp
dGFibGUgPT0gYm91bmRhcnktPnBhcmVudE5vZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkKLSAg
ICAgICAgYm91bmRhcnkgPSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpOwogCisgICAgRG9jdW1lbnQq
IGQgPSBib3VuZGFyeS0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdl
KGQtPmNyZWF0ZVJhbmdlKCkpOwogICAgIFBvc2l0aW9uIHN0YXJ0KHJhbmdlQ29tcGxpYW50RXF1
aXZhbGVudChwb3MpKTsKIAo=
</data>
<flag name="review"
          id="52100"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>