<?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>103372</bug_id>
          
          <creation_ts>2012-11-27 00:18:13 -0800</creation_ts>
          <short_desc>checkAcceptChild() needs fewer virtual calls</short_desc>
          <delta_ts>2012-11-28 21:36:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103370</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</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>776430</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-27 00:18:13 -0800</bug_when>
    <thetext>There are a few virtual method calls which can be eliminated.
It&apos;s worth eliminating since the function is hot in DOM mutations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776586</commentid>
    <comment_count>1</comment_count>
      <attachid>176224</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-27 03:51:06 -0800</bug_when>
    <thetext>Created attachment 176224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776591</commentid>
    <comment_count>2</comment_count>
      <attachid>176225</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-27 03:56:25 -0800</bug_when>
    <thetext>Created attachment 176225
Updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776907</commentid>
    <comment_count>3</comment_count>
      <attachid>176225</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-27 10:01:37 -0800</bug_when>
    <thetext>Comment on attachment 176225
Updated to ToT

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

I like the overall direction of this patch, but it needs a bit more work.

&gt; Source/WebCore/ChangeLog:24
&gt; +        (WebCore::isChildTypeAllowed): Adopted isDocumentTypeNode(), which is faster than nodeType().

Why is this faster? isDocumentTypeNode just calls nodeType(), no?

&gt; Source/WebCore/dom/ContainerNode.cpp:135
&gt; +static inline bool isChildTypeAllowed(Node* newParent, Node* child)

Can we make these non-static, private methods? They all take &quot;this&quot; as the first argument in all the callers.

&gt; Source/WebCore/dom/ContainerNode.cpp:147
&gt; +static inline void checkAcceptChild(Node* newParent, Node* newChild, Node* oldChild, ExceptionCode&amp; ec)

At this point, may as well rename this to checkAddChild.

&gt; Source/WebCore/dom/ContainerNode.cpp:173
&gt; +        if (oldChild &amp;&amp; newParent-&gt;isDocumentNode() &amp;&amp; !toDocument(newParent)-&gt;canReplaceChild(newChild, oldChild)) {
&gt; +            ec = HIERARCHY_REQUEST_ERR;
&gt; +            return;
&gt; +        }

Can you just keep this in checkReplaceChild? You can do this call before calling checkAcceptChild. It seems unlikely to me that you gain much performance benefit by putting it here and it makes the code more confusing since now checkAcceptChild also doubles as checking whether the child can be replaced.

If you find that this does measurably improve performance, then maybe we should consider it (maybe even as a separate followup patch?), but for now, I don&apos;t think it&apos;s worth the confusion.

&gt; Source/WebCore/dom/ContainerNode.cpp:178
&gt; +        if (!isChildTypeAllowed(newParent, newChild)) {
&gt; +            ec = HIERARCHY_REQUEST_ERR;
&gt; +            return;
&gt; +        }

It looks to me that moving this here from checkAddChild fixes a bug with replaceChild. Mind writing a test for this case? Also, you could commit that change first, which would simplify this patch since then you&apos;d just be moving the function.

&gt; Source/WebCore/dom/ContainerNode.cpp:182
&gt; +    // HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the
&gt; +    // newChild node, or if the node to append is one of this node&apos;s ancestors.

I know this is just copy-pasted, but I don&apos;t think this comment adds any value. It&apos;s obvious what the code below is doing.

&gt; Source/WebCore/dom/ContainerNode.cpp:186
&gt; +    if (newChild-&gt;contains(newParent)) {
&gt; +        ec = HIERARCHY_REQUEST_ERR;
&gt; +        return;

If you move this above the previous if-else statement, you could early return in the if and then not need the else statement. Would make this code a bit easier to read. I know that this is the slow part of this function, but I think it&apos;s fine if we&apos;re a little slower in error cases. Error cases should almost never be hit and are unlikely to be a performance bottleneck with these APIs I think.

&gt; Source/WebCore/dom/ContainerNode.cpp:199
&gt; +    if (ec)
&gt; +        return;

Don&apos;t need this.

&gt; Source/WebCore/dom/ContainerNode.cpp:203
&gt; +// This method is used to do strict error-checking when adding children via
&gt; +// the public DOM API (e.g., appendChild()).

I know this comment was in the previous version of the code, but I don&apos;t think it actually adds any value. All our methods that take ExceptionCodes are for servicing public DOM apis.

&gt; Source/WebCore/dom/ContainerNode.cpp:208
&gt; +    if (ec)
&gt; +        return;

Don&apos;t need this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776948</commentid>
    <comment_count>4</comment_count>
      <attachid>176225</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-27 10:36:48 -0800</bug_when>
    <thetext>Comment on attachment 176225
Updated to ToT

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

&gt;&gt; Source/WebCore/ChangeLog:24
&gt;&gt; +        (WebCore::isChildTypeAllowed): Adopted isDocumentTypeNode(), which is faster than nodeType().
&gt; 
&gt; Why is this faster? isDocumentTypeNode just calls nodeType(), no?

I think he meant that it&apos;s more concise and one can type it faster but I don&apos;t think we need this description.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:135
&gt;&gt; +static inline bool isChildTypeAllowed(Node* newParent, Node* child)
&gt; 
&gt; Can we make these non-static, private methods? They all take &quot;this&quot; as the first argument in all the callers.

I&apos;m not sure if that&apos;s necessarily an improvement. These functions don&apos;t access private/protected member functions of Node.

&gt; Source/WebCore/dom/ContainerNode.cpp:140
&gt; +    for (Node *n = child-&gt;firstChild(); n; n = n-&gt;nextSibling()) {

Please spell out node.

&gt; Source/WebCore/dom/ContainerNode.cpp:152
&gt; +        ec = NOT_FOUND_ERR;
&gt; +        return;

Since this isn&apos;t exposed via IDL, you might as well as return ExceptionCode. It&apos;ll make code read much better.

&gt; Source/WebCore/dom/ContainerNode.cpp:192
&gt; +    if (!oldChild) {

We should probably have ASSERT(oldChild) in checkAcceptChild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777417</commentid>
    <comment_count>5</comment_count>
      <attachid>176375</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-27 17:44:02 -0800</bug_when>
    <thetext>Created attachment 176375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777419</commentid>
    <comment_count>6</comment_count>
      <attachid>176225</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-27 17:44:27 -0800</bug_when>
    <thetext>Comment on attachment 176225
Updated to ToT

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:24
&gt;&gt;&gt; +        (WebCore::isChildTypeAllowed): Adopted isDocumentTypeNode(), which is faster than nodeType().
&gt;&gt; 
&gt;&gt; Why is this faster? isDocumentTypeNode just calls nodeType(), no?
&gt; 
&gt; I think he meant that it&apos;s more concise and one can type it faster but I don&apos;t think we need this description.

Oh, I meant to say isDocumentFragment(). I would remove this line anyway.

&gt;&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:135
&gt;&gt;&gt; +static inline bool isChildTypeAllowed(Node* newParent, Node* child)
&gt;&gt; 
&gt;&gt; Can we make these non-static, private methods? They all take &quot;this&quot; as the first argument in all the callers.
&gt; 
&gt; I&apos;m not sure if that&apos;s necessarily an improvement. These functions don&apos;t access private/protected member functions of Node.

It seems rather matter of taste in this case.
I&apos;d keep this as is, just changing the type of the parameter to ContainerNode.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:140
&gt;&gt; +    for (Node *n = child-&gt;firstChild(); n; n = n-&gt;nextSibling()) {
&gt; 
&gt; Please spell out node.

done.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:147
&gt;&gt; +static inline void checkAcceptChild(Node* newParent, Node* newChild, Node* oldChild, ExceptionCode&amp; ec)
&gt; 
&gt; At this point, may as well rename this to checkAddChild.

Right. Done, and removed oldChild parameter.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:152
&gt;&gt; +        return;
&gt; 
&gt; Since this isn&apos;t exposed via IDL, you might as well as return ExceptionCode. It&apos;ll make code read much better.

Good point. Done.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:173
&gt;&gt; +        }
&gt; 
&gt; Can you just keep this in checkReplaceChild? You can do this call before calling checkAcceptChild. It seems unlikely to me that you gain much performance benefit by putting it here and it makes the code more confusing since now checkAcceptChild also doubles as checking whether the child can be replaced.
&gt; 
&gt; If you find that this does measurably improve performance, then maybe we should consider it (maybe even as a separate followup patch?), but for now, I don&apos;t think it&apos;s worth the confusion.

Oh, right. I didn&apos;t do this for performance. It&apos;s just a consequence of try-and-error.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:178
&gt;&gt; +        }
&gt; 
&gt; It looks to me that moving this here from checkAddChild fixes a bug with replaceChild. Mind writing a test for this case? Also, you could commit that change first, which would simplify this patch since then you&apos;d just be moving the function.

I&apos;m sorry but I don&apos;t follow. Which bug are you talking about?

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:182
&gt;&gt; +    // newChild node, or if the node to append is one of this node&apos;s ancestors.
&gt; 
&gt; I know this is just copy-pasted, but I don&apos;t think this comment adds any value. It&apos;s obvious what the code below is doing.

Done.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:186
&gt;&gt; +        return;
&gt; 
&gt; If you move this above the previous if-else statement, you could early return in the if and then not need the else statement. Would make this code a bit easier to read. I know that this is the slow part of this function, but I think it&apos;s fine if we&apos;re a little slower in error cases. Error cases should almost never be hit and are unlikely to be a performance bottleneck with these APIs I think.

Good point. We hit this in most cases anyway.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:192
&gt;&gt; +    if (!oldChild) {
&gt; 
&gt; We should probably have ASSERT(oldChild) in checkAcceptChild.

I got rid of the oldChild parameter there.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:199
&gt;&gt; +        return;
&gt; 
&gt; Don&apos;t need this.

Done.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:203
&gt;&gt; +// the public DOM API (e.g., appendChild()).
&gt; 
&gt; I know this comment was in the previous version of the code, but I don&apos;t think it actually adds any value. All our methods that take ExceptionCodes are for servicing public DOM apis.

Removed.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:208
&gt;&gt; +        return;
&gt; 
&gt; Don&apos;t need this.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777500</commentid>
    <comment_count>7</comment_count>
      <attachid>176375</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-27 21:18:22 -0800</bug_when>
    <thetext>Comment on attachment 176375
Patch

Attachment 176375 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15023289</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777511</commentid>
    <comment_count>8</comment_count>
      <attachid>176394</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-27 21:29:59 -0800</bug_when>
    <thetext>Created attachment 176394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777549</commentid>
    <comment_count>9</comment_count>
      <attachid>176225</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-27 22:49:52 -0800</bug_when>
    <thetext>Comment on attachment 176225
Updated to ToT

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

&gt;&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:178
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; It looks to me that moving this here from checkAddChild fixes a bug with replaceChild. Mind writing a test for this case? Also, you could commit that change first, which would simplify this patch since then you&apos;d just be moving the function.
&gt; 
&gt; I&apos;m sorry but I don&apos;t follow. Which bug are you talking about?

Oh, I&apos;m not sure. I think I was misreading the code. I thought there was a codepath where we weren&apos;t calling isChildTypeAllowed before and now we are, but I don&apos;t see it now that I look at the patch again. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777552</commentid>
    <comment_count>10</comment_count>
      <attachid>176394</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-27 22:57:03 -0800</bug_when>
    <thetext>Comment on attachment 176394
Patch

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

This patch looks great to me. Too tired now to give it a confident r+. If another reviewer wants to, go ahead, otherwise, I&apos;ll take a look in the morning.

&gt; Source/WebCore/dom/ContainerNode.cpp:176
&gt; +    if (ExceptionCode ec = checkAddChild(parent, newChild))
&gt; +        return ec;

This now calls isChildTypeAllowed for Document nodes where the old code didn&apos;t. I suppose there actually no change in exposed behavior and all we&apos;re doing is a little extra work that&apos;s almost certainly never going to be a performance problem. So it seems fine to me, but it seemed worth calling out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777571</commentid>
    <comment_count>11</comment_count>
      <attachid>176394</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 23:28:10 -0800</bug_when>
    <thetext>Comment on attachment 176394
Patch

Attachment 176394 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15029240

New failing tests:
dom/xhtml/level3/core/nodereplacechild22.xhtml
fast/body-propagation/background-color/003-xhtml.xhtml
dom/xhtml/level3/core/nodereplacechild13.xhtml
fast/body-propagation/overflow/003.html
fast/body-propagation/overflow/003-xhtml.xhtml
fast/body-propagation/background-image/003.html
fast/dom/Document/replace-child.html
dom/xhtml/level3/core/nodereplacechild23.xhtml
fast/body-propagation/background-image/003-xhtml.xhtml
dom/xhtml/level3/core/documentgetdoctype01.xhtml
dom/xhtml/level3/core/nodecomparedocumentposition02.xhtml
fast/body-propagation/background-color/003.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777572</commentid>
    <comment_count>12</comment_count>
      <attachid>176394</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-27 23:32:59 -0800</bug_when>
    <thetext>Comment on attachment 176394
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        scope, This change moves Node::checkReplaceChild() and

moves &gt; makes?

&gt; Source/WebCore/dom/ContainerNode.cpp:140
&gt; +    for (Node *node = child-&gt;firstChild(); node; node = node-&gt;nextSibling()) {

* should be on the left of the space.

&gt; Source/WebCore/dom/ContainerNode.cpp:160
&gt; +    if ((newChild-&gt;isElementNode() || newChild-&gt;isTextNode()) &amp;&amp; newParent-&gt;isElementNode()) {
&gt; +        ASSERT(!newParent-&gt;isReadOnlyNode());
&gt; +        ASSERT(!newParent-&gt;isDocumentTypeNode());
&gt; +        ASSERT(isChildTypeAllowed(newParent, newChild));
&gt; +        return 0;
&gt; +    }

Where did this come from? In general, I feel like this patch needs more elaborative description on how things are changed (e.g. checkAcceptChild being merged into checkAddChild).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777586</commentid>
    <comment_count>13</comment_count>
      <attachid>176415</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-28 00:04:04 -0800</bug_when>
    <thetext>Created attachment 176415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777587</commentid>
    <comment_count>14</comment_count>
      <attachid>176415</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-28 00:06:01 -0800</bug_when>
    <thetext>Comment on attachment 176415
Patch

Oh, the patch doesn&apos;t address Ryosuke&apos;s comment. Will revise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777701</commentid>
    <comment_count>15</comment_count>
      <attachid>176444</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-28 03:29:40 -0800</bug_when>
    <thetext>Created attachment 176444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777702</commentid>
    <comment_count>16</comment_count>
      <attachid>176445</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-28 03:30:31 -0800</bug_when>
    <thetext>Created attachment 176445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777706</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-28 03:32:52 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 176394 [details])
&gt; Attachment 176394 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/15029240
&gt; 
&gt; New failing tests:
&gt; dom/xhtml/level3/core/nodereplacechild22.xhtml
&gt; dom/xhtml/level3/core/nodereplacechild13.xhtml
&gt; dom/xhtml/level3/core/nodereplacechild23.xhtml
&gt; dom/xhtml/level3/core/documentgetdoctype01.xhtml
&gt; dom/xhtml/level3/core/nodecomparedocumentposition02.xhtml

Turned out that moving Node::contains() and other cleanup broke these tests.
I went back original flow with smaller clean up.

Updated one also addresses Ryosuke&apos;s point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778012</commentid>
    <comment_count>18</comment_count>
      <attachid>176445</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-28 10:13:37 -0800</bug_when>
    <thetext>Comment on attachment 176445
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        - Added a fast path in checkAcceptChild(), where we canassume that the parent is element

typo: canassume

&gt; Source/WebCore/ChangeLog:17
&gt; +          and just needs a circle prevention through Node::contains(). This is faster than current generic version.

nit: s/circle/cycle. circle is correct, but it&apos;s just a less common term for this.

&gt; Source/WebCore/dom/ContainerNode.cpp:153
&gt; +    if ((newChild-&gt;isElementNode() || newChild-&gt;isTextNode()) &amp;&amp; newParent-&gt;isElementNode()) {

Maybe add a comment above this line that this is just a fast-path for the common case?

&gt; Source/WebCore/dom/ContainerNode.cpp:157
&gt; +        ASSERT(!oldChild || !newParent-&gt;isDocumentNode() || static_cast&lt;Document*&gt;(newParent)-&gt;canReplaceChild(newChild, oldChild));

I think the last two clauses here are not especially useful since the if-statement clearly doesn&apos;t go down this codepath if newParent is a Document.

&gt; Source/WebCore/dom/ContainerNode.cpp:174
&gt; +    } else {
&gt; +        if (!isChildTypeAllowed(newParent, newChild))

Nit: you could make this an &quot;} else if {&quot;

&gt; Source/WebCore/dom/ContainerNode.cpp:371
&gt; -    checkReplaceChild(newChild.get(), oldChild, ec);
&gt; -    if (ec)
&gt; +    if (!checkReplaceChild(this, newChild.get(), oldChild, ec))

This would be a separate patch, but I&apos;m noting it while I see it. We only need to do these checks again if we dispatched any events. We should just tracked whether any events were dispatched and only do these checks if that was the case (kind of like ChildNodesLazySnapshot).

Also, maybe I&apos;m reading the code wrong, but I think there&apos;s a bug in insertBefore/appendChild for the cases where we dispatch a sync event (e.g. blur) during the removal in collectChildrenAndRemoveFromOldParent. We don&apos;t do the checks again to see that we can still insert the node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778458</commentid>
    <comment_count>19</comment_count>
      <attachid>176595</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-28 16:14:47 -0800</bug_when>
    <thetext>Created attachment 176595
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778464</commentid>
    <comment_count>20</comment_count>
      <attachid>176445</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-28 16:18:34 -0800</bug_when>
    <thetext>Comment on attachment 176445
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        - Added a fast path in checkAcceptChild(), where we canassume that the parent is element
&gt; 
&gt; typo: canassume

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:17
&gt;&gt; +          and just needs a circle prevention through Node::contains(). This is faster than current generic version.
&gt; 
&gt; nit: s/circle/cycle. circle is correct, but it&apos;s just a less common term for this.

Well, this is just wrong. Fixed.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:153
&gt;&gt; +    if ((newChild-&gt;isElementNode() || newChild-&gt;isTextNode()) &amp;&amp; newParent-&gt;isElementNode()) {
&gt; 
&gt; Maybe add a comment above this line that this is just a fast-path for the common case?

Makes sense. Added a comment.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:157
&gt;&gt; +        ASSERT(!oldChild || !newParent-&gt;isDocumentNode() || static_cast&lt;Document*&gt;(newParent)-&gt;canReplaceChild(newChild, oldChild));
&gt; 
&gt; I think the last two clauses here are not especially useful since the if-statement clearly doesn&apos;t go down this codepath if newParent is a Document.

Hmm. This statement might be just confusing. I&apos;d remove this.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:174
&gt;&gt; +        if (!isChildTypeAllowed(newParent, newChild))
&gt; 
&gt; Nit: you could make this an &quot;} else if {&quot;

Fixed.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:371
&gt;&gt; +    if (!checkReplaceChild(this, newChild.get(), oldChild, ec))
&gt; 
&gt; This would be a separate patch, but I&apos;m noting it while I see it. We only need to do these checks again if we dispatched any events. We should just tracked whether any events were dispatched and only do these checks if that was the case (kind of like ChildNodesLazySnapshot).
&gt; 
&gt; Also, maybe I&apos;m reading the code wrong, but I think there&apos;s a bug in insertBefore/appendChild for the cases where we dispatch a sync event (e.g. blur) during the removal in collectChildrenAndRemoveFromOldParent. We don&apos;t do the checks again to see that we can still insert the node.

File bug 103571 for the speedup idea. I&apos;m wondering if there are any umbrella bug for tracking DOM speedup ideas.
For possibly-missing checkAddChild(), I&apos;ll try to repro the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778494</commentid>
    <comment_count>21</comment_count>
      <attachid>176595</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 16:52:35 -0800</bug_when>
    <thetext>Comment on attachment 176595
Patch for landing

Clearing flags on attachment: 176595

Committed r136076: &lt;http://trac.webkit.org/changeset/136076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778495</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 16:52:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778519</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-28 17:20:29 -0800</bug_when>
    <thetext>Good changes. I like these!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778538</commentid>
    <comment_count>24</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-28 17:37:40 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Good changes. I like these!
Thanks!

(In reply to comment #20)
&gt; &gt; Also, maybe I&apos;m reading the code wrong, but I think there&apos;s a bug in insertBefore/appendChild for the cases where we dispatch a sync event (e.g. blur) during the removal in collectChildrenAndRemoveFromOldParent. We don&apos;t do the checks again to see that we can still insert the node.

I tried this but couldn&apos;t figure out any attack. Here is my attempt: http://jsfiddle.net/U5KJX/2/
It&apos;s hard to explain why this is OK, but you could take a look at http://wkcheck.in/124156 to see why 
replaceChild() needs that extra check, and why appendChild() doesn&apos;t (IMO) need one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778674</commentid>
    <comment_count>25</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-28 21:36:18 -0800</bug_when>
    <thetext>&gt; I&apos;m wondering if there are any umbrella bug for tracking DOM speedup ideas.

Not that I know of. We could add a bugzilla keyword.

&gt; For possibly-missing checkAddChild(), I&apos;ll try to repro the issue.

It took some work, but I found a testcase. Filed bug 103601.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176224</attachid>
            <date>2012-11-27 03:51:06 -0800</date>
            <delta_ts>2012-11-27 03:56:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103372-20121127204843.patch</filename>
            <type>text/plain</type>
            <size>11746</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTM5YTZjNmM0ZWE2NzBl
NjhmNjNhNGU1MGJiZjJkNzExOTg3NzQyZC4uM2IxZTUwYjQ4MWEyNzEyZTlhZGJlNTJkYzNhNTJm
YTczZmQzZGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDEyLTExLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAorICAgICAgICBjaGVja0FjY2VwdENo
aWQoKSBuZWVkcyBmZXdlciB2aXJ0dWFsIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzNzIKKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRz
IGEgZmFzdCBwYXRoIGZvciBjaGVja0FjY2VwdENoaWxkCisgICAgICAgIGZhbWlseSB3aGVyZSBz
ZXZlcmFsIHZpcnR1YWwgY2FsbHMgYXJlIHNraXBwZWQuCisKKyAgICAgICAgVG8gbWFrZSB0aGVz
ZSBmdW5jdGlvbiBtb3JlIGNvbXBpbGVyLWZyaWVuZGx5IGFuZCBoYXZpbmcgbmFycm93ZXIKKyAg
ICAgICAgc2NvcGUsIFRoaXMgY2hhbmdlIG1vdmVzIE5vZGU6OmNoZWNrUmVwbGFjZUNoaWxkKCkg
YW5kCisgICAgICAgIE5vZGU6OmNoZWNrQWRkQ2hpbGQoKSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9u
IGluIENvbnRhaW5lck5vZGUuY3BwLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gcHVzaGVz
IE5vZGU6OmNhblJlcGxhY2VDaGlsZCgpIHZpcnR1YWwgbWV0aG9kCisgICAgICAgIGRvd24gdG8g
RG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZCgpIG5vbi12aXJ1YWwgbWV0aG9kIGJ5CisgICAgICAg
IGRlLXZpcnR1YWxpemluZyB0aGUgY2FsbCBzaXRlLgorCisgICAgICAgIFRoaXMgd2lucyA0JSBv
biBEcm9tYWVvIGRvbS1tb2RpZnkuaHRtbAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzQ2hpbGRUeXBlQWxsb3dlZCk6IEFkb3B0ZWQgaXNEb2N1bWVudFR5cGVOb2RlKCksIHdoaWNo
IGlzIGZhc3RlciB0aGFuIG5vZGVUeXBlKCkuCisgICAgICAgIChXZWJDb3JlOjpjaGVja0FjY2Vw
dENoaWxkKTogTW92ZWQgZnJvbSBOb2RlLmNwcCwgYWRkZWQgYSBmYXN0IHBhdGgsIGRldmlydHVh
bGl6ZSBjYW5SZXBsYWNlQ2hpbGQoKSBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZXBs
YWNlQ2hpbGQpOiBNb3ZlZCBmcm9tIE5vZGUuY3BwCisgICAgICAgIChXZWJDb3JlOjpjaGVja0Fk
ZENoaWxkKTogTW92ZWQgZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6aW5zZXJ0QmVmb3JlKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAg
ICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOiBGb2xsb3dlZCB0aGUg
c2lnbmF0dXJlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVu
ZENoaWxkKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RvY3VtZW50
VHlwZU5vZGUpOiBBZGRlZCBmb3IgYmV0dGVycmUgYWRhYmlsaXR5IG9mIGNhbGwgc2l0ZXMuCisK
KzIwMTItMTEtMjcgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCiAgICAg
ICAgIFtSZWZhY3RvcmluZ10gTm9kZUZsYWdzOjpJc1NoYWRvd1Jvb3RGbGFnIHNob3VsZCBiZSBO
b2RlOjpJc0RvY3VtZW50RnJhZ21lbnRGbGFnCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzNzAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCmluZGV4IDIwZjljNGMwMGM0ZGE4NjU2ZjZjZWEzMDcxMGNjM2Q3NWQ3ZjA2MDIuLjQ0MmVl
MDcyZjBkNWQwYjVjMjUyMzFjYzM2NjExMDJiNjNkODRlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKQEAgLTEzMiw2ICsxMzIsODIgQEAgQ29udGFpbmVyTm9kZTo6fkNvbnRh
aW5lck5vZGUoKQogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc0NoaWxkVHlwZUFsbG93ZWQoTm9kZSogbmV3UGFyZW50LCBOb2RlKiBjaGlsZCkKK3sK
KyAgICBpZiAoIWNoaWxkLT5pc0RvY3VtZW50RnJhZ21lbnQoKSkKKyAgICAgICAgcmV0dXJuIG5l
d1BhcmVudC0+Y2hpbGRUeXBlQWxsb3dlZChjaGlsZC0+bm9kZVR5cGUoKSk7CisKKyAgICBmb3Ig
KE5vZGUgKm4gPSBjaGlsZC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkg
eworICAgICAgICBpZiAoIW5ld1BhcmVudC0+Y2hpbGRUeXBlQWxsb3dlZChuLT5ub2RlVHlwZSgp
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjaGVja0FjY2VwdENoaWxkKE5vZGUqIG5ld1BhcmVudCwg
Tm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICAvLyBOb3QgbWVudGlvbmVkIGluIHNwZWM6IHRocm93IE5PVF9GT1VORF9FUlIgaWYgbmV3Q2hp
bGQgaXMgbnVsbAorICAgIGlmICghbmV3Q2hpbGQpIHsKKyAgICAgICAgZWMgPSBOT1RfRk9VTkRf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICgobmV3Q2hpbGQtPmlz
RWxlbWVudE5vZGUoKSB8fCBuZXdDaGlsZC0+aXNUZXh0Tm9kZSgpKSAmJiBuZXdQYXJlbnQtPmlz
RWxlbWVudE5vZGUoKSkgeworICAgICAgICBBU1NFUlQoIW5ld1BhcmVudC0+aXNSZWFkT25seU5v
ZGUoKSk7CisgICAgICAgIEFTU0VSVCghbmV3UGFyZW50LT5pc0RvY3VtZW50VHlwZU5vZGUoKSk7
CisgICAgICAgIEFTU0VSVChpc0NoaWxkVHlwZUFsbG93ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkp
IHsKKyAgICAgICAgICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5ld0NoaWxkLT5pbkRvY3Vt
ZW50KCkgJiYgbmV3Q2hpbGQtPmlzRG9jdW1lbnRUeXBlTm9kZSgpKSB7CisgICAgICAgICAgICBl
YyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChvbGRDaGlsZCAmJiBuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkg
JiYgIXRvRG9jdW1lbnQobmV3UGFyZW50KS0+Y2FuUmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRD
aGlsZCkpIHsKKyAgICAgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpc0NoaWxkVHlwZUFsbG93
ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkpIHsKKyAgICAgICAgICAgIGVjID0gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIG9mIGEgdHlw
ZSB0aGF0IGRvZXMgbm90IGFsbG93IGNoaWxkcmVuIG9mIHRoZSB0eXBlIG9mIHRoZQorICAgIC8v
IG5ld0NoaWxkIG5vZGUsIG9yIGlmIHRoZSBub2RlIHRvIGFwcGVuZCBpcyBvbmUgb2YgdGhpcyBu
b2RlJ3MgYW5jZXN0b3JzLgorCisgICAgaWYgKG5ld0NoaWxkLT5jb250YWlucyhuZXdQYXJlbnQp
KSB7CisgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tSZXBsYWNlQ2hpbGQoTm9kZSog
cGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmICghb2xkQ2hpbGQpIHsKKyAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hlY2tBY2NlcHRDaGlsZChwYXJlbnQsIG5l
d0NoaWxkLCBvbGRDaGlsZCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuOworfQor
CisvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGRvIHN0cmljdCBlcnJvci1jaGVja2luZyB3aGVu
IGFkZGluZyBjaGlsZHJlbiB2aWEKKy8vIHRoZSBwdWJsaWMgRE9NIEFQSSAoZS5nLiwgYXBwZW5k
Q2hpbGQoKSkuCitzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tBZGRDaGlsZChOb2RlKiBub2RlLCBO
b2RlICpuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgY2hlY2tBY2NlcHRDaGls
ZChub2RlLCBuZXdDaGlsZCwgMCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuOwor
fQorCiBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkTGF6
eUF0dGFjaCkKIHsKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5n
Ii4KQEAgLTE0Nyw3ICsyMjMsNyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2hpbGQobmV3Q2hpbGQsIGVjLCBzaG91bGRMYXp5QXR0YWNoKTsKIAogICAg
IC8vIE1ha2Ugc3VyZSBhZGRpbmcgdGhlIG5ldyBjaGlsZCBpcyBPSy4KLSAgICBjaGVja0FkZENo
aWxkKG5ld0NoaWxkLmdldCgpLCBlYyk7CisgICAgY2hlY2tBZGRDaGlsZCh0aGlzLCBuZXdDaGls
ZC5nZXQoKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0y
NjQsNyArMzQwLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBNYWtlIHN1cmUgcmVwbGFjaW5nIHRoZSBvbGQgY2hpbGQgd2l0aCB0aGUg
bmV3IGlzIG9rCi0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxk
LCBlYyk7CisgICAgY2hlY2tSZXBsYWNlQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIG9sZENo
aWxkLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI5MCw3
ICszNjYsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5v
ZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIERvZXMgdGhpcyBvbmUgbW9yZSB0aW1lIGJlY2F1c2UgcmVtb3ZlQ2hpbGQoKSBm
aXJlcyBhIE11dGF0aW9uRXZlbnQuCi0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hpbGQuZ2V0
KCksIG9sZENoaWxkLCBlYyk7CisgICAgY2hlY2tSZXBsYWNlQ2hpbGQodGhpcywgbmV3Q2hpbGQu
Z2V0KCksIG9sZENoaWxkLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTMwMCw3ICszNzYsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAvLyBEb2VzIHRoaXMgeWV0IGFub3RoZXIgY2hlY2sgYmVjYXVz
ZSBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KCkgZmlyZXMgYSBNdXRhdGlv
bkV2ZW50LgotICAgIGNoZWNrUmVwbGFjZUNoaWxkKG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCwg
ZWMpOworICAgIGNoZWNrUmVwbGFjZUNoaWxkKHRoaXMsIG5ld0NoaWxkLmdldCgpLCBvbGRDaGls
ZCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01NTksNyAr
NjM1LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICBlYyA9IDA7CiAKICAgICAvLyBN
YWtlIHN1cmUgYWRkaW5nIHRoZSBuZXcgY2hpbGQgaXMgb2sKLSAgICBjaGVja0FkZENoaWxkKG5l
d0NoaWxkLmdldCgpLCBlYyk7CisgICAgY2hlY2tBZGRDaGlsZCh0aGlzLCBuZXdDaGlsZC5nZXQo
KSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDA3NWIwMGU5YjMwZTA5YmEyYTI5Mzg0MDI0ODgyMzZkNjBmOGNjOTMuLmE1
MmQxYjY5YTFjODE4NDkwZDNkYjhlNjVmMmQ3ZTRkZjQxOWJkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC03MzUsNiArNzM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbm9kZUNoaWxkcmVuV2ls
bEJlUmVtb3ZlZChDb250YWluZXJOb2RlKik7CiAgICAgLy8gbm9kZVdpbGxCZVJlbW92ZWQgaXMg
b25seSBzYWZlIHdoZW4gcmVtb3Zpbmcgb25lIG5vZGUgYXQgYSB0aW1lLgogICAgIHZvaWQgbm9k
ZVdpbGxCZVJlbW92ZWQoTm9kZSopOworICAgIGJvb2wgY2FuUmVwbGFjZUNoaWxkKE5vZGUqIG5l
d0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CiAKICAgICB2b2lkIHRleHRJbnNlcnRlZChOb2RlKiwg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZvaWQgdGV4dFJlbW92ZWQo
Tm9kZSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTExOTksNyArMTIw
MCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7Ci0gICAgdmlydHVh
bCBib29sIGNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB7IHJlZigpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgZGVyZWYo
KTsgfQpAQCAtMTU2Miw2ICsxNTYyLDEyIEBAIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBk
b2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogCiBOb2RlKiBldmVudFRhcmdldE5vZGVG
b3JEb2N1bWVudChEb2N1bWVudCopOwogCitpbmxpbmUgRG9jdW1lbnQqIHRvRG9jdW1lbnQoTm9k
ZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIERvY3VtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA2YzNhOWI5
OWNiMWE2MjA5NzIzY2Y2YmVhODE4ZGNhMjIwMmQwYmQ0Li4yZTUzMGY4OTU2YmU3ODk5ZGQzZjgz
MzZkMGM0ZjJjOWY4OWViMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMTU4LDgyICsxMTU4LDYg
QEAgdm9pZCBOb2RlOjpjaGVja1NldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gQXR0cmlidXRlLXNwZWNpZmljIGNoZWNrcyBhcmUg
aW4gQXR0cjo6c2V0UHJlZml4KCkuCiB9CiAKLXN0YXRpYyBib29sIGlzQ2hpbGRUeXBlQWxsb3dl
ZChOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIGNoaWxkKQotewotICAgIGlmIChjaGlsZC0+bm9kZVR5
cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSB7Ci0gICAgICAgIGlmICghbmV3
UGFyZW50LT5jaGlsZFR5cGVBbGxvd2VkKGNoaWxkLT5ub2RlVHlwZSgpKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIGZv
ciAoTm9kZSAqbiA9IGNoaWxkLT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygp
KSB7Ci0gICAgICAgIGlmICghbmV3UGFyZW50LT5jaGlsZFR5cGVBbGxvd2VkKG4tPm5vZGVUeXBl
KCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBOb2RlOjpjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqKQot
ewotICAgIHJldHVybiBpc0NoaWxkVHlwZUFsbG93ZWQodGhpcywgbmV3Q2hpbGQpOwotfQotCi1z
dGF0aWMgdm9pZCBjaGVja0FjY2VwdENoaWxkKE5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3Q2hp
bGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIC8vIE5vdCBtZW50aW9uZWQgaW4gc3BlYzog
dGhyb3cgTk9UX0ZPVU5EX0VSUiBpZiBuZXdDaGlsZCBpcyBudWxsCi0gICAgaWYgKCFuZXdDaGls
ZCkgewotICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKG5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUoKSkgewotICAgICAgICBl
YyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChuZXdDaGlsZC0+aW5Eb2N1bWVudCgpICYmIG5ld0NoaWxkLT5ub2RlVHlwZSgp
ID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERSkgewotICAgICAgICBlYyA9IEhJRVJBUkNIWV9S
RVFVRVNUX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEhJRVJBUkNIWV9S
RVFVRVNUX0VSUjogUmFpc2VkIGlmIHRoaXMgbm9kZSBpcyBvZiBhIHR5cGUgdGhhdCBkb2VzIG5v
dCBhbGxvdyBjaGlsZHJlbiBvZiB0aGUgdHlwZSBvZiB0aGUKLSAgICAvLyBuZXdDaGlsZCBub2Rl
LCBvciBpZiB0aGUgbm9kZSB0byBhcHBlbmQgaXMgb25lIG9mIHRoaXMgbm9kZSdzIGFuY2VzdG9y
cy4KLQotICAgIGlmIChuZXdDaGlsZC0+Y29udGFpbnMobmV3UGFyZW50KSkgewotICAgICAgICBl
YyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQot
dm9pZCBOb2RlOjpjaGVja1JlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hp
bGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghb2xkQ2hpbGQpIHsKLSAgICAgICAg
ZWMgPSBOT1RfRk9VTkRfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2hlY2tB
Y2NlcHRDaGlsZCh0aGlzLCBuZXdDaGlsZCwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFjYW5SZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKSkgewot
ICAgICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLX0KLQotdm9pZCBOb2RlOjpjaGVja0FkZENoaWxkKE5vZGUgKm5ld0NoaWxkLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBjaGVja0FjY2VwdENoaWxkKHRoaXMsIG5ld0NoaWxkLCBlYyk7
Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKCFpc0NoaWxkVHlw
ZUFsbG93ZWQodGhpcywgbmV3Q2hpbGQpKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVF
U1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCiBib29sIE5vZGU6OmlzRGVzY2Vu
ZGFudE9mKGNvbnN0IE5vZGUgKm90aGVyKSBjb25zdAogewogICAgIC8vIFJldHVybiB0cnVlIGlm
IG90aGVyIGlzIGFuIGFuY2VzdG9yIG9mIHRoaXMsIG90aGVyd2lzZSBmYWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
aW5kZXggNTFiYTNiMjIxYTkyYjQzMWYzNmIyNDYzOTQ0MzZmYzk5MGRmOGQzOS4uNjU5M2Y3OGUy
MmE1YWQyMTNhYjEyODI2ZDk5NzVkZjIyNTg4YjFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00NTYsNiAr
NDU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNSZWFkT25seU5vZGUoKSBjb25z
dCB7IHJldHVybiBub2RlVHlwZSgpID09IEVOVElUWV9SRUZFUkVOQ0VfTk9ERTsgfQorICAgIGJv
b2wgaXNEb2N1bWVudFR5cGVOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBET0NV
TUVOVF9UWVBFX05PREU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2Rl
VHlwZSkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB1bnNpZ25lZCBjaGlsZE5vZGVDb3Vu
dCgpIGNvbnN0OwogICAgIE5vZGUqIGNoaWxkTm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CkBA
IC00ODksMTMgKzQ5MCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUq
KSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKE5vZGUqKTsKIAot
ICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZG8gc3RyaWN0IGVycm9yLWNoZWNraW5nIHdo
ZW4gYWRkaW5nIGNoaWxkcmVuIHZpYQotICAgIC8vIHRoZSBwdWJsaWMgRE9NIEFQSSAoZS5nLiwg
YXBwZW5kQ2hpbGQoKSkuCi0gICAgdm9pZCBjaGVja0FkZENoaWxkKE5vZGUqIG5ld0NoaWxkLCBF
eGNlcHRpb25Db2RlJik7IC8vIEVycm9yLWNoZWNraW5nIHdoZW4gYWRkaW5nIHZpYSB0aGUgRE9N
IEFQSQotCi0gICAgdm9pZCBjaGVja1JlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSog
b2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVwbGFjZUNo
aWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7Ci0gICAgCiAgICAgLy8gVXNlZCB0
byBkZXRlcm1pbmUgd2hldGhlciByYW5nZSBvZmZzZXRzIHVzZSBjaGFyYWN0ZXJzIG9yIG5vZGUg
aW5kaWNlcy4KICAgICB2aXJ0dWFsIGJvb2wgb2Zmc2V0SW5DaGFyYWN0ZXJzKCkgY29uc3Q7CiAg
ICAgLy8gTnVtYmVyIG9mIERPTSAxNi1iaXQgdW5pdHMgY29udGFpbmVkIGluIG5vZGUuIE5vdGUg
dGhhdCByZW5kZXJlZCB0ZXh0IGxlbmd0aCBjYW4gYmUgZGlmZmVyZW50IC0gZS5nLiBiZWNhdXNl
IG9mCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176225</attachid>
            <date>2012-11-27 03:56:25 -0800</date>
            <delta_ts>2012-11-27 22:49:52 -0800</delta_ts>
            <desc>Updated to ToT</desc>
            <filename>bug-103372-20121127205402.patch</filename>
            <type>text/plain</type>
            <size>11664</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RlNzlmOGI4MDU3Y2Vm
NTdiY2NkZWU0YjM2ZjQ0Y2NkMWNhN2VlNi4uZTEwOGZjNmExNTFmYzgzOGViYzhjNjljNTQ4NTdm
ODE3ZDk5NjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTExLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVja0FjY2VwdENo
aWQoKSBuZWVkcyBmZXdlciB2aXJ0dWFsIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzNzIKKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRz
IGEgZmFzdCBwYXRoIGZvciBjaGVja0FjY2VwdENoaWxkCisgICAgICAgIGZhbWlseSB3aGVyZSBz
ZXZlcmFsIHZpcnR1YWwgY2FsbHMgYXJlIHNraXBwZWQuCisKKyAgICAgICAgVG8gbWFrZSB0aGVz
ZSBmdW5jdGlvbiBtb3JlIGNvbXBpbGVyLWZyaWVuZGx5IGFuZCBoYXZpbmcgbmFycm93ZXIKKyAg
ICAgICAgc2NvcGUsIFRoaXMgY2hhbmdlIG1vdmVzIE5vZGU6OmNoZWNrUmVwbGFjZUNoaWxkKCkg
YW5kCisgICAgICAgIE5vZGU6OmNoZWNrQWRkQ2hpbGQoKSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9u
IGluIENvbnRhaW5lck5vZGUuY3BwLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gcHVzaGVz
IE5vZGU6OmNhblJlcGxhY2VDaGlsZCgpIHZpcnR1YWwgbWV0aG9kCisgICAgICAgIGRvd24gdG8g
RG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZCgpIG5vbi12aXJ1YWwgbWV0aG9kIGJ5CisgICAgICAg
IGRlLXZpcnR1YWxpemluZyB0aGUgY2FsbCBzaXRlLgorCisgICAgICAgIFRoaXMgd2lucyA0JSBv
biBEcm9tYWVvIGRvbS1tb2RpZnkuaHRtbAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzQ2hpbGRUeXBlQWxsb3dlZCk6IEFkb3B0ZWQgaXNEb2N1bWVudFR5cGVOb2RlKCksIHdoaWNo
IGlzIGZhc3RlciB0aGFuIG5vZGVUeXBlKCkuCisgICAgICAgIChXZWJDb3JlOjpjaGVja0FjY2Vw
dENoaWxkKTogTW92ZWQgZnJvbSBOb2RlLmNwcCwgYWRkZWQgYSBmYXN0IHBhdGgsIGRldmlydHVh
bGl6ZSBjYW5SZXBsYWNlQ2hpbGQoKSBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZXBs
YWNlQ2hpbGQpOiBNb3ZlZCBmcm9tIE5vZGUuY3BwCisgICAgICAgIChXZWJDb3JlOjpjaGVja0Fk
ZENoaWxkKTogTW92ZWQgZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6aW5zZXJ0QmVmb3JlKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAg
ICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOiBGb2xsb3dlZCB0aGUg
c2lnbmF0dXJlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVu
ZENoaWxkKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RvY3VtZW50
VHlwZU5vZGUpOiBBZGRlZCBmb3IgYmV0dGVycmUgYWRhYmlsaXR5IG9mIGNhbGwgc2l0ZXMuCisK
IDIwMTItMTEtMjcgIERhbiBDYXJuZXkgIDxkY2FybmV5QGdvb2dsZS5jb20+CiAKICAgICAgICAg
W1Y4XSBhZGQgY29udGV4dEZvcldvcmxkIGhlbHBlciBmdW5jdGlvbiB0byBTY3JpcHRDb250cm9s
bGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggMjBmOWM0YzAwYzRkYTg2
NTZmNmNlYTMwNzEwY2MzZDc1ZDdmMDYwMi4uNDQyZWUwNzJmMGQ1ZDBiNWMyNTIzMWNjMzY2MTEw
MmI2M2Q4NGUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTMyLDYg
KzEzMiw4MiBAQCBDb250YWluZXJOb2RlOjp+Q29udGFpbmVyTm9kZSgpCiAgICAgcmVtb3ZlQWxs
Q2hpbGRyZW4oKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRUeXBlQWxsb3dlZChO
b2RlKiBuZXdQYXJlbnQsIE5vZGUqIGNoaWxkKQoreworICAgIGlmICghY2hpbGQtPmlzRG9jdW1l
bnRGcmFnbWVudCgpKQorICAgICAgICByZXR1cm4gbmV3UGFyZW50LT5jaGlsZFR5cGVBbGxvd2Vk
KGNoaWxkLT5ub2RlVHlwZSgpKTsKKworICAgIGZvciAoTm9kZSAqbiA9IGNoaWxkLT5maXJzdENo
aWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghbmV3UGFyZW50
LT5jaGlsZFR5cGVBbGxvd2VkKG4tPm5vZGVUeXBlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNo
ZWNrQWNjZXB0Q2hpbGQoTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xk
Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIE5vdCBtZW50aW9uZWQgaW4gc3Bl
YzogdGhyb3cgTk9UX0ZPVU5EX0VSUiBpZiBuZXdDaGlsZCBpcyBudWxsCisgICAgaWYgKCFuZXdD
aGlsZCkgeworICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKChuZXdDaGlsZC0+aXNFbGVtZW50Tm9kZSgpIHx8IG5ld0NoaWxk
LT5pc1RleHROb2RlKCkpICYmIG5ld1BhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAg
IEFTU0VSVCghbmV3UGFyZW50LT5pc1JlYWRPbmx5Tm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKCFu
ZXdQYXJlbnQtPmlzRG9jdW1lbnRUeXBlTm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKGlzQ2hpbGRU
eXBlQWxsb3dlZChuZXdQYXJlbnQsIG5ld0NoaWxkKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKG5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUoKSkgeworICAgICAgICAgICAgZWMgPSBOT19N
T0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAobmV3Q2hpbGQtPmluRG9jdW1lbnQoKSAmJiBuZXdDaGlsZC0+aXNEb2N1
bWVudFR5cGVOb2RlKCkpIHsKKyAgICAgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJS
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9sZENoaWxk
ICYmIG5ld1BhcmVudC0+aXNEb2N1bWVudE5vZGUoKSAmJiAhdG9Eb2N1bWVudChuZXdQYXJlbnQp
LT5jYW5SZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKSkgeworICAgICAgICAgICAgZWMg
PSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIWlzQ2hpbGRUeXBlQWxsb3dlZChuZXdQYXJlbnQsIG5ld0NoaWxkKSkg
eworICAgICAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBISUVSQVJDSFlfUkVRVUVTVF9FUlI6
IFJhaXNlZCBpZiB0aGlzIG5vZGUgaXMgb2YgYSB0eXBlIHRoYXQgZG9lcyBub3QgYWxsb3cgY2hp
bGRyZW4gb2YgdGhlIHR5cGUgb2YgdGhlCisgICAgLy8gbmV3Q2hpbGQgbm9kZSwgb3IgaWYgdGhl
IG5vZGUgdG8gYXBwZW5kIGlzIG9uZSBvZiB0aGlzIG5vZGUncyBhbmNlc3RvcnMuCisKKyAgICBp
ZiAobmV3Q2hpbGQtPmNvbnRhaW5zKG5ld1BhcmVudCkpIHsKKyAgICAgICAgZWMgPSBISUVSQVJD
SFlfUkVRVUVTVF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBjaGVja1JlcGxhY2VDaGlsZChOb2RlKiBwYXJlbnQsIE5vZGUqIG5ld0NoaWxkLCBO
b2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFvbGRDaGlsZCkg
eworICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjaGVja0FjY2VwdENoaWxkKHBhcmVudCwgbmV3Q2hpbGQsIG9sZENoaWxkLCBlYyk7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm47Cit9CisKKy8vIFRoaXMgbWV0aG9kIGlzIHVzZWQg
dG8gZG8gc3RyaWN0IGVycm9yLWNoZWNraW5nIHdoZW4gYWRkaW5nIGNoaWxkcmVuIHZpYQorLy8g
dGhlIHB1YmxpYyBET00gQVBJIChlLmcuLCBhcHBlbmRDaGlsZCgpKS4KK3N0YXRpYyBpbmxpbmUg
dm9pZCBjaGVja0FkZENoaWxkKE5vZGUqIG5vZGUsIE5vZGUgKm5ld0NoaWxkLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBjaGVja0FjY2VwdENoaWxkKG5vZGUsIG5ld0NoaWxkLCAwLCBlYyk7
CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm47Cit9CisKIGJvb2wgQ29udGFpbmVyTm9kZTo6
aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBF
eGNlcHRpb25Db2RlJiBlYywgYm9vbCBzaG91bGRMYXp5QXR0YWNoKQogewogICAgIC8vIENoZWNr
IHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgpAQCAtMTQ3LDcgKzIyMyw3IEBAIGJv
b2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQs
IE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgICAgIHJldHVybiBhcHBlbmRDaGlsZChuZXdDaGls
ZCwgZWMsIHNob3VsZExhenlBdHRhY2gpOwogCiAgICAgLy8gTWFrZSBzdXJlIGFkZGluZyB0aGUg
bmV3IGNoaWxkIGlzIE9LLgotICAgIGNoZWNrQWRkQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIGVjKTsK
KyAgICBjaGVja0FkZENoaWxkKHRoaXMsIG5ld0NoaWxkLmdldCgpLCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2NCw3ICszNDAsNyBAQCBib29sIENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBv
bGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE1ha2Ugc3VyZSBy
ZXBsYWNpbmcgdGhlIG9sZCBjaGlsZCB3aXRoIHRoZSBuZXcgaXMgb2sKLSAgICBjaGVja1JlcGxh
Y2VDaGlsZChuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsKKyAgICBjaGVja1JlcGxhY2VD
aGlsZCh0aGlzLCBuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsKICAgICBpZiAoZWMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjkwLDcgKzM2Niw3IEBAIGJvb2wgQ29udGFpbmVy
Tm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENo
aWxkLCBFeGNlCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRG9lcyB0aGlzIG9uZSBt
b3JlIHRpbWUgYmVjYXVzZSByZW1vdmVDaGlsZCgpIGZpcmVzIGEgTXV0YXRpb25FdmVudC4KLSAg
ICBjaGVja1JlcGxhY2VDaGlsZChuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsKKyAgICBj
aGVja1JlcGxhY2VDaGlsZCh0aGlzLCBuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsKICAg
ICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAwLDcgKzM3Niw3IEBAIGJv
b2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQs
IE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERv
ZXMgdGhpcyB5ZXQgYW5vdGhlciBjaGVjayBiZWNhdXNlIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92
ZUZyb21PbGRQYXJlbnQoKSBmaXJlcyBhIE11dGF0aW9uRXZlbnQuCi0gICAgY2hlY2tSZXBsYWNl
Q2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7CisgICAgY2hlY2tSZXBsYWNlQ2hp
bGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7CiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU1OSw3ICs2MzUsNyBAQCBib29sIENvbnRhaW5lck5v
ZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUm
IGVjLCBibwogICAgIGVjID0gMDsKIAogICAgIC8vIE1ha2Ugc3VyZSBhZGRpbmcgdGhlIG5ldyBj
aGlsZCBpcyBvawotICAgIGNoZWNrQWRkQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIGVjKTsKKyAgICBj
aGVja0FkZENoaWxkKHRoaXMsIG5ld0NoaWxkLmdldCgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMDc1YjAwZTliMzBl
MDliYTJhMjkzODQwMjQ4ODIzNmQ2MGY4Y2M5My4uYTUyZDFiNjlhMWM4MTg0OTBkM2RiOGU2NWYy
ZDdlNGRmNDE5YmRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTczNSw2ICs3MzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5vZGUq
KTsKICAgICAvLyBub2RlV2lsbEJlUmVtb3ZlZCBpcyBvbmx5IHNhZmUgd2hlbiByZW1vdmluZyBv
bmUgbm9kZSBhdCBhIHRpbWUuCiAgICAgdm9pZCBub2RlV2lsbEJlUmVtb3ZlZChOb2RlKik7Cisg
ICAgYm9vbCBjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsK
IAogICAgIHZvaWQgdGV4dEluc2VydGVkKE5vZGUqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCk7CiAgICAgdm9pZCB0ZXh0UmVtb3ZlZChOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOwpAQCAtMTE5OSw3ICsxMjAwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlw
ZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBj
bG9uZU5vZGUoYm9vbCBkZWVwKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVwbGFjZUNoaWxkKE5v
ZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgeyBkZXJlZigpOyB9CkBAIC0xNTYyLDYgKzE1NjIsMTIg
QEAgaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBl
IHR5cGUpCiAKIE5vZGUqIGV2ZW50VGFyZ2V0Tm9kZUZvckRvY3VtZW50KERvY3VtZW50Kik7CiAK
K2lubGluZSBEb2N1bWVudCogdG9Eb2N1bWVudChOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChu
b2RlLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pihub2RlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRG9jdW1l
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDZjM2E5Yjk5Y2IxYTYyMDk3MjNjZjZiZWE4MThkY2Ey
MjAyZDBiZDQuLjJlNTMwZjg5NTZiZTc4OTlkZDNmODMzNmQwYzRmMmM5Zjg5ZWIxNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTExNTgsODIgKzExNTgsNiBAQCB2b2lkIE5vZGU6OmNoZWNrU2V0UHJl
Zml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAv
LyBBdHRyaWJ1dGUtc3BlY2lmaWMgY2hlY2tzIGFyZSBpbiBBdHRyOjpzZXRQcmVmaXgoKS4KIH0K
IAotc3RhdGljIGJvb2wgaXNDaGlsZFR5cGVBbGxvd2VkKE5vZGUqIG5ld1BhcmVudCwgTm9kZSog
Y2hpbGQpCi17Ci0gICAgaWYgKGNoaWxkLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREUpIHsKLSAgICAgICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQo
Y2hpbGQtPm5vZGVUeXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChOb2RlICpuID0gY2hpbGQtPmZpcnN0
Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFuZXdQYXJl
bnQtPmNoaWxkVHlwZUFsbG93ZWQobi0+bm9kZVR5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE5vZGU6OmNhblJlcGxh
Y2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSopCi17Ci0gICAgcmV0dXJuIGlzQ2hpbGRUeXBl
QWxsb3dlZCh0aGlzLCBuZXdDaGlsZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNoZWNrQWNjZXB0Q2hp
bGQoTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgLy8gTm90IG1lbnRpb25lZCBpbiBzcGVjOiB0aHJvdyBOT1RfRk9VTkRfRVJSIGlmIG5l
d0NoaWxkIGlzIG51bGwKLSAgICBpZiAoIW5ld0NoaWxkKSB7Ci0gICAgICAgIGVjID0gTk9UX0ZP
VU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAobmV3UGFyZW50
LT5pc1JlYWRPbmx5Tm9kZSgpKSB7Ci0gICAgICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9X
RURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5ld0NoaWxkLT5pbkRv
Y3VtZW50KCkgJiYgbmV3Q2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfVFlQRV9O
T0RFKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhp
cyBub2RlIGlzIG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90IGFsbG93IGNoaWxkcmVuIG9mIHRoZSB0
eXBlIG9mIHRoZQotICAgIC8vIG5ld0NoaWxkIG5vZGUsIG9yIGlmIHRoZSBub2RlIHRvIGFwcGVu
ZCBpcyBvbmUgb2YgdGhpcyBub2RlJ3MgYW5jZXN0b3JzLgotCi0gICAgaWYgKG5ld0NoaWxkLT5j
b250YWlucyhuZXdQYXJlbnQpKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJS
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIE5vZGU6OmNoZWNrUmVwbGFjZUNo
aWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgaWYgKCFvbGRDaGlsZCkgewotICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjaGVja0FjY2VwdENoaWxkKHRoaXMsIG5ld0NoaWxk
LCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWNhblJlcGxh
Y2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIE5vZGU6OmNoZWNr
QWRkQ2hpbGQoTm9kZSAqbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGNoZWNr
QWNjZXB0Q2hpbGQodGhpcywgbmV3Q2hpbGQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBpZiAoIWlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlzLCBuZXdDaGlsZCkp
IHsKLSAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci19Ci0KIGJvb2wgTm9kZTo6aXNEZXNjZW5kYW50T2YoY29uc3QgTm9kZSAqb3RoZXIp
IGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYgb3RoZXIgaXMgYW4gYW5jZXN0b3Igb2Yg
dGhpcywgb3RoZXJ3aXNlIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MWJhM2IyMjFhOTJiNDMxZjM2
YjI0NjM5NDQzNmZjOTkwZGY4ZDM5Li42NTkzZjc4ZTIyYTVhZDIxM2FiMTI4MjZkOTk3NWRmMjI1
ODhiMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQ1Niw2ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0g
RU5USVRZX1JFRkVSRU5DRV9OT0RFOyB9CisgICAgYm9vbCBpc0RvY3VtZW50VHlwZU5vZGUoKSBj
b25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERTsgfQogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29uc3Q7CiAgICAgTm9kZSogY2hp
bGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKQEAgLTQ4OSwxMyArNDkwLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIGJvb2wgY29udGFp
bnNJbmNsdWRpbmdTaGFkb3dET00oTm9kZSopOwogCi0gICAgLy8gVGhpcyBtZXRob2QgaXMgdXNl
ZCB0byBkbyBzdHJpY3QgZXJyb3ItY2hlY2tpbmcgd2hlbiBhZGRpbmcgY2hpbGRyZW4gdmlhCi0g
ICAgLy8gdGhlIHB1YmxpYyBET00gQVBJIChlLmcuLCBhcHBlbmRDaGlsZCgpKS4KLSAgICB2b2lk
IGNoZWNrQWRkQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsgLy8gRXJyb3It
Y2hlY2tpbmcgd2hlbiBhZGRpbmcgdmlhIHRoZSBET00gQVBJCi0KLSAgICB2b2lkIGNoZWNrUmVw
bGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUq
IG9sZENoaWxkKTsKLSAgICAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHJhbmdl
IG9mZnNldHMgdXNlIGNoYXJhY3RlcnMgb3Igbm9kZSBpbmRpY2VzLgogICAgIHZpcnR1YWwgYm9v
bCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25zdDsKICAgICAvLyBOdW1iZXIgb2YgRE9NIDE2LWJp
dCB1bml0cyBjb250YWluZWQgaW4gbm9kZS4gTm90ZSB0aGF0IHJlbmRlcmVkIHRleHQgbGVuZ3Ro
IGNhbiBiZSBkaWZmZXJlbnQgLSBlLmcuIGJlY2F1c2Ugb2YK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176375</attachid>
            <date>2012-11-27 17:44:02 -0800</date>
            <delta_ts>2012-11-27 21:29:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103372-20121128104138.patch</filename>
            <type>text/plain</type>
            <size>11061</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNlYzc1NTA1Y2QwZjQ5
NGM4MTJlN2ViYTc4M2FjZTNjMDU2NjJiMi4uZjc4MDlkNWVkNDZhOGVjOTcwNzYzYWNiOThjMzIw
MzdjZDU5ZGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTExLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVja0FjY2VwdENo
aWxkKCkgbmVlZHMgZmV3ZXIgdmlydHVhbCBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzcyCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRk
cyBhIGZhc3QgcGF0aCBmb3IgY2hlY2tBY2NlcHRDaGlsZAorICAgICAgICBmYW1pbHkgd2hlcmUg
c2V2ZXJhbCB2aXJ0dWFsIGNhbGxzIGFyZSBza2lwcGVkLgorCisgICAgICAgIFRvIG1ha2UgdGhl
c2UgZnVuY3Rpb24gbW9yZSBjb21waWxlci1mcmllbmRseSBhbmQgaGF2aW5nIG5hcnJvd2VyCisg
ICAgICAgIHNjb3BlLCBUaGlzIGNoYW5nZSBtb3ZlcyBOb2RlOjpjaGVja1JlcGxhY2VDaGlsZCgp
IGFuZAorICAgICAgICBOb2RlOjpjaGVja0FkZENoaWxkKCkgc3RhdGljIGlubGluZSBmdW5jdGlv
biBpbiBDb250YWluZXJOb2RlLmNwcC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIHB1c2hl
cyBOb2RlOjpjYW5SZXBsYWNlQ2hpbGQoKSB2aXJ0dWFsIG1ldGhvZAorICAgICAgICBkb3duIHRv
IERvY3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQoKSBub24tdmlydWFsIG1ldGhvZCBieQorICAgICAg
ICBkZS12aXJ0dWFsaXppbmcgdGhlIGNhbGwgc2l0ZS4KKworICAgICAgICBUaGlzIGdhaW5zIDMt
NCUgd2luIG9uIERyb21hZW8gZG9tLW1vZGlmeS5odG1sLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzQ2hpbGRUeXBlQWxsb3dlZCk6IE1vdmVkIGZyb20gTm9kZS5jcHAKKyAgICAg
ICAgKFdlYkNvcmU6OmNoZWNrQWRkQ2hpbGQpOiBNb3ZlZCBmcm9tIE5vZGUuY3BwLCBBZGRlZCBh
IGZhc3QgcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrUmVwbGFjZUNoaWxkKTogTW92ZWQg
ZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVm
b3JlKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOiBGb2xsb3dlZCB0aGUgc2lnbmF0dXJlIGNoYW5n
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKTogRm9sbG93
ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAqIGRvbS9O
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RvY3VtZW50VHlwZU5vZGUpOiBBZGRl
ZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5IG9mIGNhbGwgc2l0ZXMuCisKIDIwMTItMTEtMjcgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGUgdGltZSBz
aXplIGFzc2VydGlvbnMgZm9yIFRyZWVTY29wZSwgU2hhZG93Um9vdCBhbmQgRWxlbWVudEF0dHJp
YnV0ZURhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggMjBmOWM0YzAw
YzRkYTg2NTZmNmNlYTMwNzEwY2MzZDc1ZDdmMDYwMi4uODlkOGQ2MDQwYTMwNjVhNzE5OGZmYmUy
NDhhNDA0Zjk5NzdiZGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAt
MTMyLDYgKzEzMiw1MyBAQCBDb250YWluZXJOb2RlOjp+Q29udGFpbmVyTm9kZSgpCiAgICAgcmVt
b3ZlQWxsQ2hpbGRyZW4oKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRUeXBlQWxs
b3dlZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIGNoaWxkKQoreworICAgIGlmICgh
Y2hpbGQtPmlzRG9jdW1lbnRGcmFnbWVudCgpKQorICAgICAgICByZXR1cm4gbmV3UGFyZW50LT5j
aGlsZFR5cGVBbGxvd2VkKGNoaWxkLT5ub2RlVHlwZSgpKTsKKworICAgIGZvciAoTm9kZSAqbm9k
ZSA9IGNoaWxkLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygp
KSB7CisgICAgICAgIGlmICghbmV3UGFyZW50LT5jaGlsZFR5cGVBbGxvd2VkKG5vZGUtPm5vZGVU
eXBlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25Db2RlIGNoZWNrQWRkQ2hpbGQoQ29udGFp
bmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCkKK3sKKyAgICAvLyBOb3QgbWVudGlv
bmVkIGluIHNwZWM6IHRocm93IE5PVF9GT1VORF9FUlIgaWYgbmV3Q2hpbGQgaXMgbnVsbAorICAg
IGlmICghbmV3Q2hpbGQpCisgICAgICAgIHJldHVybiBOT1RfRk9VTkRfRVJSOworICAgIGlmIChu
ZXdDaGlsZC0+Y29udGFpbnMobmV3UGFyZW50KSkKKyAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9S
RVFVRVNUX0VSUjsKKyAgICAKKyAgICBpZiAoKG5ld0NoaWxkLT5pc0VsZW1lbnROb2RlKCkgfHwg
bmV3Q2hpbGQtPmlzVGV4dE5vZGUoKSkgJiYgbmV3UGFyZW50LT5pc0VsZW1lbnROb2RlKCkpIHsK
KyAgICAgICAgQVNTRVJUKCFuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkpOworICAgICAgICBB
U1NFUlQoIW5ld1BhcmVudC0+aXNEb2N1bWVudFR5cGVOb2RlKCkpOworICAgICAgICBBU1NFUlQo
aXNDaGlsZFR5cGVBbGxvd2VkKG5ld1BhcmVudCwgbmV3Q2hpbGQpKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgaWYgKG5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKKyAgICBpZiAobmV3Q2hpbGQt
PmluRG9jdW1lbnQoKSAmJiBuZXdDaGlsZC0+aXNEb2N1bWVudFR5cGVOb2RlKCkpCisgICAgICAg
IHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgaWYgKCFpc0NoaWxkVHlwZUFsbG93
ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkpCisgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVT
VF9FUlI7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29kZSBj
aGVja1JlcGxhY2VDaGlsZChDb250YWluZXJOb2RlKiBwYXJlbnQsIE5vZGUqIG5ld0NoaWxkLCBO
b2RlKiBvbGRDaGlsZCkKK3sKKyAgICBpZiAoIW9sZENoaWxkKQorICAgICAgICByZXR1cm4gTk9U
X0ZPVU5EX0VSUjsKKyAgICBpZiAoRXhjZXB0aW9uQ29kZSBlYyA9IGNoZWNrQWRkQ2hpbGQocGFy
ZW50LCBuZXdDaGlsZCkpCisgICAgICAgIHJldHVybiBlYzsKKyAgICBpZiAocGFyZW50LT5pc0Rv
Y3VtZW50Tm9kZSgpICYmICF0b0RvY3VtZW50KHBhcmVudCktPmNhblJlcGxhY2VDaGlsZChuZXdD
aGlsZCwgb2xkQ2hpbGQpKQorICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwor
ICAgIHJldHVybiAwOworfQorCiBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNz
UmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMs
IGJvb2wgc2hvdWxkTGF6eUF0dGFjaCkKIHsKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBp
cyBub3QgImZsb2F0aW5nIi4KQEAgLTE0Nyw4ICsxOTQsNyBAQCBib29sIENvbnRhaW5lck5vZGU6
Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwg
RXhjZQogICAgICAgICByZXR1cm4gYXBwZW5kQ2hpbGQobmV3Q2hpbGQsIGVjLCBzaG91bGRMYXp5
QXR0YWNoKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBhZGRpbmcgdGhlIG5ldyBjaGlsZCBpcyBPSy4K
LSAgICBjaGVja0FkZENoaWxkKG5ld0NoaWxkLmdldCgpLCBlYyk7Ci0gICAgaWYgKGVjKQorICAg
IGlmICgoZWMgPSBjaGVja0FkZENoaWxkKHRoaXMsIG5ld0NoaWxkLmdldCgpKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIE5PVF9GT1VORF9FUlI6IFJhaXNlZCBpZiByZWZDaGls
ZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUKQEAgLTI2NCw3ICszMTAsNyBAQCBib29sIENv
bnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2Rl
KiBvbGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE1ha2Ugc3Vy
ZSByZXBsYWNpbmcgdGhlIG9sZCBjaGlsZCB3aXRoIHRoZSBuZXcgaXMgb2sKLSAgICBjaGVja1Jl
cGxhY2VDaGlsZChuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsKKyAgICBlYyA9IGNoZWNr
UmVwbGFjZUNoaWxkKHRoaXMsIG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI5MCw3ICszMzYsNyBAQCBib29sIENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBv
bGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIERvZXMgdGhpcyBv
bmUgbW9yZSB0aW1lIGJlY2F1c2UgcmVtb3ZlQ2hpbGQoKSBmaXJlcyBhIE11dGF0aW9uRXZlbnQu
Ci0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7Cisg
ICAgZWMgPSBjaGVja1JlcGxhY2VDaGlsZCh0aGlzLCBuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQp
OwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDAsNyArMzQ2LDcg
QEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdD
aGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gRG9lcyB0aGlzIHlldCBhbm90aGVyIGNoZWNrIGJlY2F1c2UgY29sbGVjdENoaWxkcmVuQW5k
UmVtb3ZlRnJvbU9sZFBhcmVudCgpIGZpcmVzIGEgTXV0YXRpb25FdmVudC4KLSAgICBjaGVja1Jl
cGxhY2VDaGlsZChuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsKKyAgICBlYyA9IGNoZWNr
UmVwbGFjZUNoaWxkKHRoaXMsIG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU1NiwxMCArNjAyLDggQEAgYm9vbCBDb250
YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRp
b25Db2RlJiBlYywgYm8KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBz
aWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KICAgICBBU1NFUlQocmVmQ291
bnQoKSB8fCBwYXJlbnRPckhvc3ROb2RlKCkpOwogCi0gICAgZWMgPSAwOwotCiAgICAgLy8gTWFr
ZSBzdXJlIGFkZGluZyB0aGUgbmV3IGNoaWxkIGlzIG9rCi0gICAgY2hlY2tBZGRDaGlsZChuZXdD
aGlsZC5nZXQoKSwgZWMpOworICAgIGVjID0gY2hlY2tBZGRDaGlsZCh0aGlzLCBuZXdDaGlsZC5n
ZXQoKSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggYmExZTU0N2MwYzk3YzA1NzY5MGY4M2I4YWUwMDQ0Y2Y5ZTMwOWMzNC4uNjBj
MWE2ZTNlNzNhMjk2MjkzNWYzODM3ZjM3MGRmOWQzZjEyNGE4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTczMiw2ICs3MzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub2RlQ2hpbGRyZW5XaWxs
QmVSZW1vdmVkKENvbnRhaW5lck5vZGUqKTsKICAgICAvLyBub2RlV2lsbEJlUmVtb3ZlZCBpcyBv
bmx5IHNhZmUgd2hlbiByZW1vdmluZyBvbmUgbm9kZSBhdCBhIHRpbWUuCiAgICAgdm9pZCBub2Rl
V2lsbEJlUmVtb3ZlZChOb2RlKik7CisgICAgYm9vbCBjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3
Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKIAogICAgIHZvaWQgdGV4dEluc2VydGVkKE5vZGUqLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdm9pZCB0ZXh0UmVtb3ZlZChO
b2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMTE5Niw3ICsxMTk3
LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKLSAgICB2aXJ0dWFs
IGJvb2wgY2FuUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgcmVmKCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgeyBkZXJlZigp
OyB9CkBAIC0xNTU0LDYgKzE1NTQsMTIgQEAgaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAKIE5vZGUqIGV2ZW50VGFyZ2V0Tm9kZUZv
ckRvY3VtZW50KERvY3VtZW50Kik7CiAKK2lubGluZSBEb2N1bWVudCogdG9Eb2N1bWVudChOb2Rl
KiBub2RlKQoreworICAgIEFTU0VSVChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDZjM2E5Yjk5
Y2IxYTYyMDk3MjNjZjZiZWE4MThkY2EyMjAyZDBiZDQuLjJlNTMwZjg5NTZiZTc4OTlkZDNmODMz
NmQwYzRmMmM5Zjg5ZWIxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTExNTgsODIgKzExNTgsNiBA
QCB2b2lkIE5vZGU6OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBBdHRyaWJ1dGUtc3BlY2lmaWMgY2hlY2tzIGFyZSBp
biBBdHRyOjpzZXRQcmVmaXgoKS4KIH0KIAotc3RhdGljIGJvb2wgaXNDaGlsZFR5cGVBbGxvd2Vk
KE5vZGUqIG5ld1BhcmVudCwgTm9kZSogY2hpbGQpCi17Ci0gICAgaWYgKGNoaWxkLT5ub2RlVHlw
ZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpIHsKLSAgICAgICAgaWYgKCFuZXdQ
YXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQoY2hpbGQtPm5vZGVUeXBlKCkpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgZm9y
IChOb2RlICpuID0gY2hpbGQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQobi0+bm9kZVR5cGUo
KSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIE5vZGU6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSopCi17
Ci0gICAgcmV0dXJuIGlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlzLCBuZXdDaGlsZCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIGNoZWNrQWNjZXB0Q2hpbGQoTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8gTm90IG1lbnRpb25lZCBpbiBzcGVjOiB0
aHJvdyBOT1RfRk9VTkRfRVJSIGlmIG5ld0NoaWxkIGlzIG51bGwKLSAgICBpZiAoIW5ld0NoaWxk
KSB7Ci0gICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBpZiAobmV3UGFyZW50LT5pc1JlYWRPbmx5Tm9kZSgpKSB7Ci0gICAgICAgIGVj
ID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKG5ld0NoaWxkLT5pbkRvY3VtZW50KCkgJiYgbmV3Q2hpbGQtPm5vZGVUeXBlKCkg
PT0gTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90
IGFsbG93IGNoaWxkcmVuIG9mIHRoZSB0eXBlIG9mIHRoZQotICAgIC8vIG5ld0NoaWxkIG5vZGUs
IG9yIGlmIHRoZSBub2RlIHRvIGFwcGVuZCBpcyBvbmUgb2YgdGhpcyBub2RlJ3MgYW5jZXN0b3Jz
LgotCi0gICAgaWYgKG5ld0NoaWxkLT5jb250YWlucyhuZXdQYXJlbnQpKSB7Ci0gICAgICAgIGVj
ID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12
b2lkIE5vZGU6OmNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFvbGRDaGlsZCkgewotICAgICAgICBl
YyA9IE5PVF9GT1VORF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjaGVja0Fj
Y2VwdENoaWxkKHRoaXMsIG5ld0NoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIWNhblJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpKSB7Ci0g
ICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotfQotCi12b2lkIE5vZGU6OmNoZWNrQWRkQ2hpbGQoTm9kZSAqbmV3Q2hpbGQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGNoZWNrQWNjZXB0Q2hpbGQodGhpcywgbmV3Q2hpbGQsIGVjKTsK
LSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWlzQ2hpbGRUeXBl
QWxsb3dlZCh0aGlzLCBuZXdDaGlsZCkpIHsKLSAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVT
VF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIGJvb2wgTm9kZTo6aXNEZXNjZW5k
YW50T2YoY29uc3QgTm9kZSAqb3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYg
b3RoZXIgaXMgYW4gYW5jZXN0b3Igb2YgdGhpcywgb3RoZXJ3aXNlIGZhbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApp
bmRleCA1MWJhM2IyMjFhOTJiNDMxZjM2YjI0NjM5NDQzNmZjOTkwZGY4ZDM5Li42NTkzZjc4ZTIy
YTVhZDIxM2FiMTI4MjZkOTk3NWRmMjI1ODhiMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQ1Niw2ICs0
NTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRU5USVRZX1JFRkVSRU5DRV9OT0RFOyB9CisgICAgYm9v
bCBpc0RvY3VtZW50VHlwZU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VN
RU5UX1RZUEVfTk9ERTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVU
eXBlKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50
KCkgY29uc3Q7CiAgICAgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKQEAg
LTQ4OSwxMyArNDkwLDYgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSop
IGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oTm9kZSopOwogCi0g
ICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBkbyBzdHJpY3QgZXJyb3ItY2hlY2tpbmcgd2hl
biBhZGRpbmcgY2hpbGRyZW4gdmlhCi0gICAgLy8gdGhlIHB1YmxpYyBET00gQVBJIChlLmcuLCBh
cHBlbmRDaGlsZCgpKS4KLSAgICB2b2lkIGNoZWNrQWRkQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIEV4
Y2VwdGlvbkNvZGUmKTsgLy8gRXJyb3ItY2hlY2tpbmcgd2hlbiBhZGRpbmcgdmlhIHRoZSBET00g
QVBJCi0KLSAgICB2b2lkIGNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBv
bGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXBsYWNlQ2hp
bGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKLSAgICAKICAgICAvLyBVc2VkIHRv
IGRldGVybWluZSB3aGV0aGVyIHJhbmdlIG9mZnNldHMgdXNlIGNoYXJhY3RlcnMgb3Igbm9kZSBp
bmRpY2VzLgogICAgIHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25zdDsKICAg
ICAvLyBOdW1iZXIgb2YgRE9NIDE2LWJpdCB1bml0cyBjb250YWluZWQgaW4gbm9kZS4gTm90ZSB0
aGF0IHJlbmRlcmVkIHRleHQgbGVuZ3RoIGNhbiBiZSBkaWZmZXJlbnQgLSBlLmcuIGJlY2F1c2Ug
b2YK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176394</attachid>
            <date>2012-11-27 21:29:59 -0800</date>
            <delta_ts>2012-11-28 00:04:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103372-20121128142734.patch</filename>
            <type>text/plain</type>
            <size>10766</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA2ZjViNTQ3MGUwMjM3
MmQ2ZWUyNmM3NGZlM2RhODdjZmEzYWI3OS4uOTg3NmMwYmNiMDljM2EyN2YzODNiNGRlYTg4ZTFh
OGQ3NTcwMzcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTExLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVja0FjY2VwdENo
aWxkKCkgbmVlZHMgZmV3ZXIgdmlydHVhbCBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzcyCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRk
cyBhIGZhc3QgcGF0aCBmb3IgY2hlY2tBY2NlcHRDaGlsZAorICAgICAgICBmYW1pbHkgd2hlcmUg
c2V2ZXJhbCB2aXJ0dWFsIGNhbGxzIGFyZSBza2lwcGVkLgorCisgICAgICAgIFRvIG1ha2UgdGhl
c2UgZnVuY3Rpb24gbW9yZSBjb21waWxlci1mcmllbmRseSBhbmQgaGF2aW5nIG5hcnJvd2VyCisg
ICAgICAgIHNjb3BlLCBUaGlzIGNoYW5nZSBtb3ZlcyBOb2RlOjpjaGVja1JlcGxhY2VDaGlsZCgp
IGFuZAorICAgICAgICBOb2RlOjpjaGVja0FkZENoaWxkKCkgc3RhdGljIGlubGluZSBmdW5jdGlv
biBpbiBDb250YWluZXJOb2RlLmNwcC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIHB1c2hl
cyBOb2RlOjpjYW5SZXBsYWNlQ2hpbGQoKSB2aXJ0dWFsIG1ldGhvZAorICAgICAgICBkb3duIHRv
IERvY3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQoKSBub24tdmlydWFsIG1ldGhvZCBieQorICAgICAg
ICBkZS12aXJ0dWFsaXppbmcgdGhlIGNhbGwgc2l0ZS4KKworICAgICAgICBUaGlzIGdhaW5zIDMt
NCUgd2luIG9uIERyb21hZW8gZG9tLW1vZGlmeS5odG1sLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzQ2hpbGRUeXBlQWxsb3dlZCk6IE1vdmVkIGZyb20gTm9kZS5jcHAKKyAgICAg
ICAgKFdlYkNvcmU6OmNoZWNrQWRkQ2hpbGQpOiBNb3ZlZCBmcm9tIE5vZGUuY3BwLCBBZGRlZCBh
IGZhc3QgcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrUmVwbGFjZUNoaWxkKTogTW92ZWQg
ZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVm
b3JlKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOiBGb2xsb3dlZCB0aGUgc2lnbmF0dXJlIGNoYW5n
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKTogRm9sbG93
ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAqIGRvbS9O
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RvY3VtZW50VHlwZU5vZGUpOiBBZGRl
ZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5IG9mIGNhbGwgc2l0ZXMuCisKIDIwMTItMTEtMjcgIE1p
Y2hhZWwgUHJ1ZXR0ICA8bWljaGFlbEA2OGsub3JnPgogCiAgICAgICAgIFJlbW92ZSBBU1NFUlRf
Tk9UX1JFQUNIRUQoKSBmcm9tIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwb3N0U3VjY2Vzc0hhbmRs
ZXJDYWxsYmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggMjBmOWM0
YzAwYzRkYTg2NTZmNmNlYTMwNzEwY2MzZDc1ZDdmMDYwMi4uNmM2ODIxZDBlMWIwMTAzZDQ4NDVj
NDY4YzM0MzhmNTRiZThjYjg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApA
QCAtMTMyLDYgKzEzMiw1MyBAQCBDb250YWluZXJOb2RlOjp+Q29udGFpbmVyTm9kZSgpCiAgICAg
cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRUeXBl
QWxsb3dlZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIGNoaWxkKQoreworICAgIGlm
ICghY2hpbGQtPmlzRG9jdW1lbnRGcmFnbWVudCgpKQorICAgICAgICByZXR1cm4gbmV3UGFyZW50
LT5jaGlsZFR5cGVBbGxvd2VkKGNoaWxkLT5ub2RlVHlwZSgpKTsKKworICAgIGZvciAoTm9kZSAq
bm9kZSA9IGNoaWxkLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGlu
ZygpKSB7CisgICAgICAgIGlmICghbmV3UGFyZW50LT5jaGlsZFR5cGVBbGxvd2VkKG5vZGUtPm5v
ZGVUeXBlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25Db2RlIGNoZWNrQWRkQ2hpbGQoQ29u
dGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCkKK3sKKyAgICAvLyBOb3QgbWVu
dGlvbmVkIGluIHNwZWM6IHRocm93IE5PVF9GT1VORF9FUlIgaWYgbmV3Q2hpbGQgaXMgbnVsbAor
ICAgIGlmICghbmV3Q2hpbGQpCisgICAgICAgIHJldHVybiBOT1RfRk9VTkRfRVJSOworICAgIGlm
IChuZXdDaGlsZC0+Y29udGFpbnMobmV3UGFyZW50KSkKKyAgICAgICAgcmV0dXJuIEhJRVJBUkNI
WV9SRVFVRVNUX0VSUjsKKyAgICAKKyAgICBpZiAoKG5ld0NoaWxkLT5pc0VsZW1lbnROb2RlKCkg
fHwgbmV3Q2hpbGQtPmlzVGV4dE5vZGUoKSkgJiYgbmV3UGFyZW50LT5pc0VsZW1lbnROb2RlKCkp
IHsKKyAgICAgICAgQVNTRVJUKCFuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkpOworICAgICAg
ICBBU1NFUlQoIW5ld1BhcmVudC0+aXNEb2N1bWVudFR5cGVOb2RlKCkpOworICAgICAgICBBU1NF
UlQoaXNDaGlsZFR5cGVBbGxvd2VkKG5ld1BhcmVudCwgbmV3Q2hpbGQpKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgaWYgKG5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUoKSkKKyAg
ICAgICAgcmV0dXJuIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKKyAgICBpZiAobmV3Q2hp
bGQtPmluRG9jdW1lbnQoKSAmJiBuZXdDaGlsZC0+aXNEb2N1bWVudFR5cGVOb2RlKCkpCisgICAg
ICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgaWYgKCFpc0NoaWxkVHlwZUFs
bG93ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkpCisgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVR
VUVTVF9FUlI7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29k
ZSBjaGVja1JlcGxhY2VDaGlsZChDb250YWluZXJOb2RlKiBwYXJlbnQsIE5vZGUqIG5ld0NoaWxk
LCBOb2RlKiBvbGRDaGlsZCkKK3sKKyAgICBpZiAoIW9sZENoaWxkKQorICAgICAgICByZXR1cm4g
Tk9UX0ZPVU5EX0VSUjsKKyAgICBpZiAoRXhjZXB0aW9uQ29kZSBlYyA9IGNoZWNrQWRkQ2hpbGQo
cGFyZW50LCBuZXdDaGlsZCkpCisgICAgICAgIHJldHVybiBlYzsKKyAgICBpZiAocGFyZW50LT5p
c0RvY3VtZW50Tm9kZSgpICYmICFzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHBhcmVudCktPmNhblJl
cGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpKQorICAgICAgICByZXR1cm4gSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSOworICAgIHJldHVybiAwOworfQorCiBib29sIENvbnRhaW5lck5vZGU6Omlu
c2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkTGF6eUF0dGFjaCkKIHsKICAgICAvLyBDaGVjayB0
aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KQEAgLTE0Nyw4ICsxOTQsNyBAQCBib29s
IENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBO
b2RlKiByZWZDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gYXBwZW5kQ2hpbGQobmV3Q2hpbGQs
IGVjLCBzaG91bGRMYXp5QXR0YWNoKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBhZGRpbmcgdGhlIG5l
dyBjaGlsZCBpcyBPSy4KLSAgICBjaGVja0FkZENoaWxkKG5ld0NoaWxkLmdldCgpLCBlYyk7Ci0g
ICAgaWYgKGVjKQorICAgIGlmICgoZWMgPSBjaGVja0FkZENoaWxkKHRoaXMsIG5ld0NoaWxkLmdl
dCgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE5PVF9GT1VORF9FUlI6IFJh
aXNlZCBpZiByZWZDaGlsZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUKQEAgLTI2NCw3ICsz
MTAsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIC8vIE1ha2Ugc3VyZSByZXBsYWNpbmcgdGhlIG9sZCBjaGlsZCB3aXRoIHRoZSBuZXcgaXMg
b2sKLSAgICBjaGVja1JlcGxhY2VDaGlsZChuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsK
KyAgICBlYyA9IGNoZWNrUmVwbGFjZUNoaWxkKHRoaXMsIG5ld0NoaWxkLmdldCgpLCBvbGRDaGls
ZCk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI5MCw3ICszMzYs
NyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIERvZXMgdGhpcyBvbmUgbW9yZSB0aW1lIGJlY2F1c2UgcmVtb3ZlQ2hpbGQoKSBmaXJlcyBh
IE11dGF0aW9uRXZlbnQuCi0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9s
ZENoaWxkLCBlYyk7CisgICAgZWMgPSBjaGVja1JlcGxhY2VDaGlsZCh0aGlzLCBuZXdDaGlsZC5n
ZXQoKSwgb2xkQ2hpbGQpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0zMDAsNyArMzQ2LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gRG9lcyB0aGlzIHlldCBhbm90aGVyIGNoZWNrIGJlY2F1c2UgY29s
bGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudCgpIGZpcmVzIGEgTXV0YXRpb25FdmVu
dC4KLSAgICBjaGVja1JlcGxhY2VDaGlsZChuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsK
KyAgICBlYyA9IGNoZWNrUmVwbGFjZUNoaWxkKHRoaXMsIG5ld0NoaWxkLmdldCgpLCBvbGRDaGls
ZCk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU1NiwxMCArNjAy
LDggQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJl
IGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KICAg
ICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPckhvc3ROb2RlKCkpOwogCi0gICAgZWMgPSAw
OwotCiAgICAgLy8gTWFrZSBzdXJlIGFkZGluZyB0aGUgbmV3IGNoaWxkIGlzIG9rCi0gICAgY2hl
Y2tBZGRDaGlsZChuZXdDaGlsZC5nZXQoKSwgZWMpOworICAgIGVjID0gY2hlY2tBZGRDaGlsZCh0
aGlzLCBuZXdDaGlsZC5nZXQoKSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYmExZTU0N2MwYzk3YzA1NzY5MGY4M2I4YWUwMDQ0
Y2Y5ZTMwOWMzNC4uNGUyNjcxNjExMjIwZDNmYmY3NzIwYTA4ZGM0ZDc5NTNkYTFlNTBlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTczMiw2ICs3MzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBu
b2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5vZGUqKTsKICAgICAvLyBub2RlV2ls
bEJlUmVtb3ZlZCBpcyBvbmx5IHNhZmUgd2hlbiByZW1vdmluZyBvbmUgbm9kZSBhdCBhIHRpbWUu
CiAgICAgdm9pZCBub2RlV2lsbEJlUmVtb3ZlZChOb2RlKik7CisgICAgYm9vbCBjYW5SZXBsYWNl
Q2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKIAogICAgIHZvaWQgdGV4dElu
c2VydGVkKE5vZGUqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdm9p
ZCB0ZXh0UmVtb3ZlZChOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwpA
QCAtMTE5Niw3ICsxMTk3LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVU
eXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUp
IGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVw
KTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2Rl
KiBvbGRDaGlsZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgeyBkZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNmMzYTliOTljYjFhNjIwOTcy
M2NmNmJlYTgxOGRjYTIyMDJkMGJkNC4uMmU1MzBmODk1NmJlNzg5OWRkM2Y4MzM2ZDBjNGYyYzlm
ODllYjE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTE1OCw4MiArMTE1OCw2IEBAIHZvaWQgTm9k
ZTo6Y2hlY2tTZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIC8vIEF0dHJpYnV0ZS1zcGVjaWZpYyBjaGVja3MgYXJlIGluIEF0dHI6OnNl
dFByZWZpeCgpLgogfQogCi1zdGF0aWMgYm9vbCBpc0NoaWxkVHlwZUFsbG93ZWQoTm9kZSogbmV3
UGFyZW50LCBOb2RlKiBjaGlsZCkKLXsKLSAgICBpZiAoY2hpbGQtPm5vZGVUeXBlKCkgIT0gTm9k
ZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgewotICAgICAgICBpZiAoIW5ld1BhcmVudC0+Y2hp
bGRUeXBlQWxsb3dlZChjaGlsZC0+bm9kZVR5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBmb3IgKE5vZGUgKm4g
PSBjaGlsZC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewotICAgICAg
ICBpZiAoIW5ld1BhcmVudC0+Y2hpbGRUeXBlQWxsb3dlZChuLT5ub2RlVHlwZSgpKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
Tm9kZTo6Y2FuUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKikKLXsKLSAgICByZXR1
cm4gaXNDaGlsZFR5cGVBbGxvd2VkKHRoaXMsIG5ld0NoaWxkKTsKLX0KLQotc3RhdGljIHZvaWQg
Y2hlY2tBY2NlcHRDaGlsZChOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ld0NoaWxkLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICAvLyBOb3QgbWVudGlvbmVkIGluIHNwZWM6IHRocm93IE5PVF9G
T1VORF9FUlIgaWYgbmV3Q2hpbGQgaXMgbnVsbAotICAgIGlmICghbmV3Q2hpbGQpIHsKLSAgICAg
ICAgZWMgPSBOT1RfRk9VTkRfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IGlmIChuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkpIHsKLSAgICAgICAgZWMgPSBOT19NT0RJ
RklDQVRJT05fQUxMT1dFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
bmV3Q2hpbGQtPmluRG9jdW1lbnQoKSAmJiBuZXdDaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpE
T0NVTUVOVF9UWVBFX05PREUpIHsKLSAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBISUVSQVJDSFlfUkVRVUVTVF9FUlI6
IFJhaXNlZCBpZiB0aGlzIG5vZGUgaXMgb2YgYSB0eXBlIHRoYXQgZG9lcyBub3QgYWxsb3cgY2hp
bGRyZW4gb2YgdGhlIHR5cGUgb2YgdGhlCi0gICAgLy8gbmV3Q2hpbGQgbm9kZSwgb3IgaWYgdGhl
IG5vZGUgdG8gYXBwZW5kIGlzIG9uZSBvZiB0aGlzIG5vZGUncyBhbmNlc3RvcnMuCi0KLSAgICBp
ZiAobmV3Q2hpbGQtPmNvbnRhaW5zKG5ld1BhcmVudCkpIHsKLSAgICAgICAgZWMgPSBISUVSQVJD
SFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgTm9kZTo6
Y2hlY2tSZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW9sZENoaWxkKSB7Ci0gICAgICAgIGVjID0gTk9UX0ZP
VU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNoZWNrQWNjZXB0Q2hpbGQo
dGhpcywgbmV3Q2hpbGQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmICghY2FuUmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCkpIHsKLSAgICAgICAgZWMg
PSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZv
aWQgTm9kZTo6Y2hlY2tBZGRDaGlsZChOb2RlICpuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgY2hlY2tBY2NlcHRDaGlsZCh0aGlzLCBuZXdDaGlsZCwgZWMpOwotICAgIGlmIChl
YykKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICghaXNDaGlsZFR5cGVBbGxvd2VkKHRo
aXMsIG5ld0NoaWxkKSkgewotICAgICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQogYm9vbCBOb2RlOjppc0Rlc2NlbmRhbnRPZihjb25z
dCBOb2RlICpvdGhlcikgY29uc3QKIHsKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBvdGhlciBpcyBh
biBhbmNlc3RvciBvZiB0aGlzLCBvdGhlcndpc2UgZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDUxYmEz
YjIyMWE5MmI0MzFmMzZiMjQ2Mzk0NDM2ZmM5OTBkZjhkMzkuLjY1OTNmNzhlMjJhNWFkMjEzYWIx
MjgyNmQ5OTc1ZGYyMjU4OGIxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDU2LDYgKzQ1Niw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzUmVhZE9ubHlOb2RlKCkgY29uc3QgeyByZXR1cm4g
bm9kZVR5cGUoKSA9PSBFTlRJVFlfUkVGRVJFTkNFX05PREU7IH0KKyAgICBib29sIGlzRG9jdW1l
bnRUeXBlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9O
T0RFOyB9CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdW5zaWduZWQgY2hpbGROb2RlQ291bnQoKSBjb25zdDsK
ICAgICBOb2RlKiBjaGlsZE5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0OwpAQCAtNDg5LDEzICs0
OTAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlKikgY29uc3Q7CiAg
ICAgYm9vbCBjb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShOb2RlKik7CiAKLSAgICAvLyBUaGlz
IG1ldGhvZCBpcyB1c2VkIHRvIGRvIHN0cmljdCBlcnJvci1jaGVja2luZyB3aGVuIGFkZGluZyBj
aGlsZHJlbiB2aWEKLSAgICAvLyB0aGUgcHVibGljIERPTSBBUEkgKGUuZy4sIGFwcGVuZENoaWxk
KCkpLgotICAgIHZvaWQgY2hlY2tBZGRDaGlsZChOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29k
ZSYpOyAvLyBFcnJvci1jaGVja2luZyB3aGVuIGFkZGluZyB2aWEgdGhlIERPTSBBUEkKLQotICAg
IHZvaWQgY2hlY2tSZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBib29sIGNhblJlcGxhY2VDaGlsZChOb2RlKiBu
ZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpOwotICAgIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5l
IHdoZXRoZXIgcmFuZ2Ugb2Zmc2V0cyB1c2UgY2hhcmFjdGVycyBvciBub2RlIGluZGljZXMuCiAg
ICAgdmlydHVhbCBib29sIG9mZnNldEluQ2hhcmFjdGVycygpIGNvbnN0OwogICAgIC8vIE51bWJl
ciBvZiBET00gMTYtYml0IHVuaXRzIGNvbnRhaW5lZCBpbiBub2RlLiBOb3RlIHRoYXQgcmVuZGVy
ZWQgdGV4dCBsZW5ndGggY2FuIGJlIGRpZmZlcmVudCAtIGUuZy4gYmVjYXVzZSBvZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176415</attachid>
            <date>2012-11-28 00:04:04 -0800</date>
            <delta_ts>2012-11-28 03:29:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103372-20121128170140.patch</filename>
            <type>text/plain</type>
            <size>11073</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFiYmJhYjQ4NDU2MGY5
NTVhODRjODdlOTZkNDZmM2JkMWNjZWEwYi4uNjNjYjcyZmE5YjQ5ZDVmY2QwMGJlOTg3YjBlYzlj
YjY5MjEwMGNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTExLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVja0FjY2VwdENo
aWxkKCkgbmVlZHMgZmV3ZXIgdmlydHVhbCBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzcyCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRk
cyBhIGZhc3QgcGF0aCBmb3IgY2hlY2tBY2NlcHRDaGlsZAorICAgICAgICBmYW1pbHkgd2hlcmUg
c2V2ZXJhbCB2aXJ0dWFsIGNhbGxzIGFyZSBza2lwcGVkLgorCisgICAgICAgIFRvIG1ha2UgdGhl
c2UgZnVuY3Rpb24gbW9yZSBjb21waWxlci1mcmllbmRseSBhbmQgaGF2aW5nIG5hcnJvd2VyCisg
ICAgICAgIHNjb3BlLCBUaGlzIGNoYW5nZSBtb3ZlcyBOb2RlOjpjaGVja1JlcGxhY2VDaGlsZCgp
IGFuZAorICAgICAgICBOb2RlOjpjaGVja0FkZENoaWxkKCkgc3RhdGljIGlubGluZSBmdW5jdGlv
biBpbiBDb250YWluZXJOb2RlLmNwcC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIHB1c2hl
cyBOb2RlOjpjYW5SZXBsYWNlQ2hpbGQoKSB2aXJ0dWFsIG1ldGhvZAorICAgICAgICBkb3duIHRv
IERvY3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQoKSBub24tdmlydWFsIG1ldGhvZCBieQorICAgICAg
ICBkZS12aXJ0dWFsaXppbmcgdGhlIGNhbGwgc2l0ZS4KKworICAgICAgICBUaGlzIGdhaW5zIDMt
NCUgd2luIG9uIERyb21hZW8gZG9tLW1vZGlmeS5odG1sLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzQ2hpbGRUeXBlQWxsb3dlZCk6IE1vdmVkIGZyb20gTm9kZS5jcHAKKyAgICAg
ICAgKFdlYkNvcmU6OmNoZWNrQWNjZXB0Q2hpbGQpOiBNb3ZlZCBmcm9tIE5vZGUuY3BwLCBBZGRl
ZCBhIGZhc3QgcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQWRkQ2hpbGQpOiBNb3ZlZCBm
cm9tIE5vZGUuY3BwCisgICAgICAgIChXZWJDb3JlOjpjaGVja1JlcGxhY2VDaGlsZCk6IE1vdmVk
IGZyb20gTm9kZS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJl
Zm9yZSk6IEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFu
Z2UuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZCk6IEZvbGxv
d2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKiBkb20v
Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNEb2N1bWVudFR5cGVOb2RlKTogQWRk
ZWQgZm9yIGJldHRlciByZWFkYWJpbGl0eSBvZiBjYWxsIHNpdGVzLgorCiAyMDEyLTExLTI3ICBW
aWF0Y2hlc2xhdiBPc3RhcGVua28gIDx2Lm9zdGFwZW5rb0BzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBPcHRpbWl6YXRpb24gaW4gaW1hZ2UgZGVjb2RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcAppbmRleCAyMGY5YzRjMDBjNGRhODY1NmY2Y2VhMzA3MTBjYzNkNzVkN2YwNjAyLi5l
YWUyYWNmMDY5YTc2ZWE0ODVhN2Y0MTBkMWM2ZTRiY2U1NmE0ODk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMzIsNiArMTMyLDYyIEBAIENvbnRhaW5lck5vZGU6On5D
b250YWluZXJOb2RlKCkKICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwogfQogCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNDaGlsZFR5cGVBbGxvd2VkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9k
ZSogY2hpbGQpCit7CisgICAgaWYgKCFjaGlsZC0+aXNEb2N1bWVudEZyYWdtZW50KCkpCisgICAg
ICAgIHJldHVybiBuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQoY2hpbGQtPm5vZGVUeXBlKCkp
OworCisgICAgZm9yIChOb2RlICpub2RlID0gY2hpbGQtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9k
ZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxk
VHlwZUFsbG93ZWQobm9kZS0+bm9kZVR5cGUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbkNv
ZGUgY2hlY2tBY2NlcHRDaGlsZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ld0No
aWxkLCBOb2RlKiBvbGRDaGlsZCkKK3sKKyAgICAvLyBOb3QgbWVudGlvbmVkIGluIHNwZWM6IHRo
cm93IE5PVF9GT1VORF9FUlIgaWYgbmV3Q2hpbGQgaXMgbnVsbAorICAgIGlmICghbmV3Q2hpbGQp
CisgICAgICAgIHJldHVybiBOT1RfRk9VTkRfRVJSOworICAgIAorICAgIGlmICgobmV3Q2hpbGQt
PmlzRWxlbWVudE5vZGUoKSB8fCBuZXdDaGlsZC0+aXNUZXh0Tm9kZSgpKSAmJiBuZXdQYXJlbnQt
PmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICBBU1NFUlQoIW5ld1BhcmVudC0+aXNSZWFkT25s
eU5vZGUoKSk7CisgICAgICAgIEFTU0VSVCghbmV3UGFyZW50LT5pc0RvY3VtZW50VHlwZU5vZGUo
KSk7CisgICAgICAgIEFTU0VSVChpc0NoaWxkVHlwZUFsbG93ZWQobmV3UGFyZW50LCBuZXdDaGls
ZCkpOworICAgICAgICBpZiAobmV3Q2hpbGQtPmNvbnRhaW5zKG5ld1BhcmVudCkpCisgICAgICAg
ICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBpZiAobmV3UGFyZW50LT5pc1JlYWRPbmx5Tm9kZSgpKQorICAgICAgICByZXR1
cm4gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOworICAgIGlmIChuZXdDaGlsZC0+aW5Eb2N1
bWVudCgpICYmIG5ld0NoaWxkLT5pc0RvY3VtZW50VHlwZU5vZGUoKSkKKyAgICAgICAgcmV0dXJu
IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKKyAgICBpZiAob2xkQ2hpbGQgJiYgbmV3UGFyZW50LT5p
c0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihu
ZXdQYXJlbnQpLT5jYW5SZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKSkKKyAgICAgICAg
ICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKCFpc0NoaWxkVHlwZUFsbG93ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkpCisgICAgICAgICAg
ICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgIH0KKworICAgIGlmIChuZXdDaGls
ZC0+Y29udGFpbnMobmV3UGFyZW50KSkKKyAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNU
X0VSUjsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25Db2RlIGNo
ZWNrQWRkQ2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCkKK3sK
KyAgICByZXR1cm4gY2hlY2tBY2NlcHRDaGlsZChuZXdQYXJlbnQsIG5ld0NoaWxkLCAwKTsKK30K
Kworc3RhdGljIGlubGluZSBFeGNlcHRpb25Db2RlIGNoZWNrUmVwbGFjZUNoaWxkKENvbnRhaW5l
ck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQoreworICAg
IGlmICghb2xkQ2hpbGQpCisgICAgICAgIHJldHVybiBOT1RfRk9VTkRfRVJSOworICAgIHJldHVy
biBjaGVja0FjY2VwdENoaWxkKG5ld1BhcmVudCwgbmV3Q2hpbGQsIG9sZENoaWxkKTsKK30KKwog
Ym9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29sIHNob3VsZExhenlBdHRh
Y2gpCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCkBA
IC0xNDcsOCArMjAzLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICAgICAgcmV0dXJu
IGFwcGVuZENoaWxkKG5ld0NoaWxkLCBlYywgc2hvdWxkTGF6eUF0dGFjaCk7CiAKICAgICAvLyBN
YWtlIHN1cmUgYWRkaW5nIHRoZSBuZXcgY2hpbGQgaXMgT0suCi0gICAgY2hlY2tBZGRDaGlsZChu
ZXdDaGlsZC5nZXQoKSwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoKGVjID0gY2hlY2tBZGRD
aGlsZCh0aGlzLCBuZXdDaGlsZC5nZXQoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBOT1RfRk9VTkRfRVJSOiBSYWlzZWQgaWYgcmVmQ2hpbGQgaXMgbm90IGEgY2hpbGQgb2Yg
dGhpcyBub2RlCkBAIC0yNjQsNyArMzE5LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNl
Q2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBNYWtlIHN1cmUgcmVwbGFjaW5nIHRoZSBvbGQg
Y2hpbGQgd2l0aCB0aGUgbmV3IGlzIG9rCi0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hpbGQu
Z2V0KCksIG9sZENoaWxkLCBlYyk7CisgICAgZWMgPSBjaGVja1JlcGxhY2VDaGlsZCh0aGlzLCBu
ZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0yOTAsNyArMzQ1LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBEb2VzIHRoaXMgb25lIG1vcmUgdGltZSBiZWNhdXNl
IHJlbW92ZUNoaWxkKCkgZmlyZXMgYSBNdXRhdGlvbkV2ZW50LgotICAgIGNoZWNrUmVwbGFjZUNo
aWxkKG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCwgZWMpOworICAgIGVjID0gY2hlY2tSZXBsYWNl
Q2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkKTsKICAgICBpZiAoZWMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAwLDcgKzM1NSw3IEBAIGJvb2wgQ29udGFpbmVyTm9k
ZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxk
LCBFeGNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvZXMgdGhpcyB5ZXQgYW5v
dGhlciBjaGVjayBiZWNhdXNlIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQo
KSBmaXJlcyBhIE11dGF0aW9uRXZlbnQuCi0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hpbGQu
Z2V0KCksIG9sZENoaWxkLCBlYyk7CisgICAgZWMgPSBjaGVja1JlcGxhY2VDaGlsZCh0aGlzLCBu
ZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC01NTYsMTAgKzYxMSw4IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAg
Ly8gSWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGlu
ZyBtdXRhdGlvbiBldmVudHMuCiAgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JIb3N0
Tm9kZSgpKTsKIAotICAgIGVjID0gMDsKLQogICAgIC8vIE1ha2Ugc3VyZSBhZGRpbmcgdGhlIG5l
dyBjaGlsZCBpcyBvawotICAgIGNoZWNrQWRkQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIGVjKTsKKyAg
ICBlYyA9IGNoZWNrQWRkQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCkpOwogICAgIGlmIChlYykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJhMWU1NDdj
MGM5N2MwNTc2OTBmODNiOGFlMDA0NGNmOWUzMDljMzQuLjRlMjY3MTYxMTIyMGQzZmJmNzcyMGEw
OGRjNGQ3OTUzZGExZTUwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03MzIsNiArNzMyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgbm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChDb250YWluZXJO
b2RlKik7CiAgICAgLy8gbm9kZVdpbGxCZVJlbW92ZWQgaXMgb25seSBzYWZlIHdoZW4gcmVtb3Zp
bmcgb25lIG5vZGUgYXQgYSB0aW1lLgogICAgIHZvaWQgbm9kZVdpbGxCZVJlbW92ZWQoTm9kZSop
OworICAgIGJvb2wgY2FuUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGls
ZCk7CiAKICAgICB2b2lkIHRleHRJbnNlcnRlZChOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIHZvaWQgdGV4dFJlbW92ZWQoTm9kZSosIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTExOTYsNyArMTE5Nyw2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9k
ZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7Ci0gICAgdmlydHVhbCBib29sIGNhblJlcGxhY2VDaGls
ZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpOwogCiAgICAgdmlydHVhbCB2b2lkIHJl
ZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRl
cmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDZjM2E5Yjk5Y2IxYTYyMDk3MjNjZjZiZWE4MThkY2EyMjAyZDBiZDQuLjJlNTMwZjg5NTZi
ZTc4OTlkZDNmODMzNmQwYzRmMmM5Zjg5ZWIxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTExNTgs
ODIgKzExNTgsNiBAQCB2b2lkIE5vZGU6OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBBdHRyaWJ1dGUtc3BlY2lmaWMg
Y2hlY2tzIGFyZSBpbiBBdHRyOjpzZXRQcmVmaXgoKS4KIH0KIAotc3RhdGljIGJvb2wgaXNDaGls
ZFR5cGVBbGxvd2VkKE5vZGUqIG5ld1BhcmVudCwgTm9kZSogY2hpbGQpCi17Ci0gICAgaWYgKGNo
aWxkLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpIHsKLSAgICAg
ICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQoY2hpbGQtPm5vZGVUeXBlKCkpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgCi0gICAgZm9yIChOb2RlICpuID0gY2hpbGQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQo
bi0+bm9kZVR5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIE5vZGU6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGls
ZCwgTm9kZSopCi17Ci0gICAgcmV0dXJuIGlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlzLCBuZXdDaGls
ZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNoZWNrQWNjZXB0Q2hpbGQoTm9kZSogbmV3UGFyZW50LCBO
b2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8gTm90IG1lbnRpb25l
ZCBpbiBzcGVjOiB0aHJvdyBOT1RfRk9VTkRfRVJSIGlmIG5ld0NoaWxkIGlzIG51bGwKLSAgICBp
ZiAoIW5ld0NoaWxkKSB7Ci0gICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAobmV3UGFyZW50LT5pc1JlYWRPbmx5Tm9kZSgpKSB7
Ci0gICAgICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKG5ld0NoaWxkLT5pbkRvY3VtZW50KCkgJiYgbmV3Q2hpbGQt
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFKSB7Ci0gICAgICAgIGVjID0g
SElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
SElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIG9mIGEgdHlwZSB0
aGF0IGRvZXMgbm90IGFsbG93IGNoaWxkcmVuIG9mIHRoZSB0eXBlIG9mIHRoZQotICAgIC8vIG5l
d0NoaWxkIG5vZGUsIG9yIGlmIHRoZSBub2RlIHRvIGFwcGVuZCBpcyBvbmUgb2YgdGhpcyBub2Rl
J3MgYW5jZXN0b3JzLgotCi0gICAgaWYgKG5ld0NoaWxkLT5jb250YWlucyhuZXdQYXJlbnQpKSB7
Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotfQotCi12b2lkIE5vZGU6OmNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBO
b2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFvbGRDaGlsZCkg
ewotICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjaGVja0FjY2VwdENoaWxkKHRoaXMsIG5ld0NoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWNhblJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xk
Q2hpbGQpKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotfQotCi12b2lkIE5vZGU6OmNoZWNrQWRkQ2hpbGQoTm9kZSAqbmV3Q2hp
bGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGNoZWNrQWNjZXB0Q2hpbGQodGhpcywgbmV3
Q2hpbGQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAo
IWlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlzLCBuZXdDaGlsZCkpIHsKLSAgICAgICAgZWMgPSBISUVS
QVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIGJvb2wgTm9k
ZTo6aXNEZXNjZW5kYW50T2YoY29uc3QgTm9kZSAqb3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gUmV0
dXJuIHRydWUgaWYgb3RoZXIgaXMgYW4gYW5jZXN0b3Igb2YgdGhpcywgb3RoZXJ3aXNlIGZhbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCA1MWJhM2IyMjFhOTJiNDMxZjM2YjI0NjM5NDQzNmZjOTkwZGY4ZDM5
Li42NTkzZjc4ZTIyYTVhZDIxM2FiMTI4MjZkOTk3NWRmMjI1ODhiMWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTQ1Niw2ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRU5USVRZX1JFRkVSRU5DRV9OT0RF
OyB9CisgICAgYm9vbCBpc0RvY3VtZW50VHlwZU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlw
ZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVB
bGxvd2VkKE5vZGVUeXBlKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNo
aWxkTm9kZUNvdW50KCkgY29uc3Q7CiAgICAgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4
KSBjb25zdDsKQEAgLTQ4OSwxMyArNDkwLDYgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgTm9kZSopIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00o
Tm9kZSopOwogCi0gICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBkbyBzdHJpY3QgZXJyb3It
Y2hlY2tpbmcgd2hlbiBhZGRpbmcgY2hpbGRyZW4gdmlhCi0gICAgLy8gdGhlIHB1YmxpYyBET00g
QVBJIChlLmcuLCBhcHBlbmRDaGlsZCgpKS4KLSAgICB2b2lkIGNoZWNrQWRkQ2hpbGQoTm9kZSog
bmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsgLy8gRXJyb3ItY2hlY2tpbmcgd2hlbiBhZGRpbmcg
dmlhIHRoZSBET00gQVBJCi0KLSAgICB2b2lkIGNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0No
aWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgYm9vbCBj
YW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKLSAgICAKICAg
ICAvLyBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHJhbmdlIG9mZnNldHMgdXNlIGNoYXJhY3Rl
cnMgb3Igbm9kZSBpbmRpY2VzLgogICAgIHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMo
KSBjb25zdDsKICAgICAvLyBOdW1iZXIgb2YgRE9NIDE2LWJpdCB1bml0cyBjb250YWluZWQgaW4g
bm9kZS4gTm90ZSB0aGF0IHJlbmRlcmVkIHRleHQgbGVuZ3RoIGNhbiBiZSBkaWZmZXJlbnQgLSBl
LmcuIGJlY2F1c2Ugb2YK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176444</attachid>
            <date>2012-11-28 03:29:40 -0800</date>
            <delta_ts>2012-11-28 03:30:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103372-20121128202715.patch</filename>
            <type>text/plain</type>
            <size>12657</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkyOGVkN2JhYTViOTQz
YzFhODIwZjc2ZTVlYzUxNTI2MzMyNDk5NC4uMDAzMjg5MzM2YmIyNGE5MzcyYzY3YTFjN2Y3YmEy
MTk5MmYxZjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTExLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVja0FjY2VwdENo
aWxkKCkgbmVlZHMgZmV3ZXIgdmlydHVhbCBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzcyCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVv
cmdhbml6ZXMgY2hlY2tBY2NlcHRDaGlsZCBmYW1pbHkgZm9yIHNwZWVkLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIHJlb3JnYW5pemUgY2hlY2sqQ2hpbGQgZnVuY3Rpb25zIGFuZCBkZXZpcnR1YWxp
emUKKyAgICAgICAgTm9kZTo6Y2FuUmVwbGFjZUNoaWxkKCkgZm9yIHNwZWVkLgorCisgICAgICAg
IC0gTWFkZSBOb2RlOjpjaGVja0FkZENoaWxkIGFuZCBOb2RlOjpjaGVja1JlcGxhY2VDaGlsZCgp
IHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zCisgICAgICAgICAgaW4gQ29udGFpbmVyTm9kZS5jcHAu
IGNoZWNrQWNjZXB0Q2hpbGQoKSB3YXMgYWxzbyBtb3ZlZCB0byB0aGUgc2FtZSBmaWxlLiBUaGlz
IGFsbG93cyB1cworICAgICAgICAgIG1vcmUgYWdncmVzc2l2ZSBpbmxpbmluZy4KKworICAgICAg
ICAtIEFkZGVkIGEgZmFzdCBwYXRoIGluIGNoZWNrQWNjZXB0Q2hpbGQoKSwgd2hlcmUgd2UgY2Fu
YXNzdW1lIHRoYXQgdGhlIHBhcmVudCBpcyBlbGVtZW50CisgICAgICAgICAgYW5kIHRoZSBuZXcg
Y2hpbGQgaXMgZWxlbWVudCBvciB0ZXh0LiBVbmRlciB0aGlzIGFzc3VtcHRpb24sIHdlIG5lZWQg
bm8gZXh0cmEgdHlwZSBjaGVja3MKKyAgICAgICAgICBhbmQganVzdCBuZWVkcyBhIGNpcmNsZSBw
cmV2ZW50aW9uIHRocm91Z2ggTm9kZTo6Y29udGFpbnMoKS4gVGhpcyBpcyBmYXN0ZXIgdGhhbiBj
dXJyZW50IGdlbmVyaWMgdmVyc2lvbi4KKyAgICAgICAgICBGb3IgdGV4dCBjaGlsZHJlbiwgdGhl
IGNpcmN1bGFyaXR5IGNoZWNrIGlzIGFsc28gc2tpcHBlZC4KKworICAgICAgICAtIE1vdmVkIGV4
dHJhIGNoZWNrcyBmcm9tIGNoZWNrQWRkQ2hpbGQoKSBhbmQgY2hlY2tSZXBsYWNlQ2hpbGQoKSB0
bworICAgICAgICAgIGNoZWNrQWNjZXB0Q2hpbGQoKS4gVGhpcyBhbGxvd3MgdGhlIGZhc3QgcGF0
aCBza2lwcyBldmVuIHRoZXNlIGV4dHJhIGNoZWNrcy4KKworICAgICAgICAtIE5vZGU6OmNhblJl
cGxhY2VDaGlsZCgpIGlzIGRldmlydHVhbGl6ZWQuIFNpbmNlIHRoZSBvbmx5IG92ZXJyaWRlIGlz
IG9uCisgICAgICAgICAgRG9jdW1lbnQsIHdlIGNhbiBjaGVjayBpc0RvY3VtZW50Tm9kZSgpIHRv
IGNhbGwgaXQgZGlyZWN0bHkuCisKKyAgICAgICAgLSBUaGUgZGVmYXVsdCBpbXBsZW1lbmF0aW9u
IG9mIE5vZGU6OmNhblJlcGxhY2VDaGlsZCgpIGp1c3QgY2FsbHMgaXNDaGlsZFR5cGVBbGxvd2Vk
KCkuCisgICAgICAgICAgVGhhdCBpcyB3aGF0IGFuIGV4dHJhIGNoZWNrIGZvciBjaGVja0FkZENo
aWxkKCkgZGlkLiBTbyB3ZSBjYW4gc2hhcmUgdGhlc2UgY29kZSBwYXRoIGluIGNoZWNrQWNjZXB0
Q2hpbGQoKS4KKworICAgICAgICBUaGlzIGdhaW5zIDItMyUgd2luIG9uIERyb21hZW8gZG9tLW1v
ZGlmeS5odG1sLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAq
IGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2hpbGRUeXBlQWxs
b3dlZCk6IE1vdmVkIGZyb20gTm9kZS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQWNjZXB0
Q2hpbGQpOiBNb3ZlZCBmcm9tIE5vZGUuY3BwLCBBZGRlZCBhIGZhc3QgcGF0aC4KKyAgICAgICAg
KFdlYkNvcmU6OmNoZWNrQWRkQ2hpbGQpOiBNb3ZlZCBmcm9tIE5vZGUuY3BwCisgICAgICAgIChX
ZWJDb3JlOjpjaGVja1JlcGxhY2VDaGlsZCk6IE1vdmVkIGZyb20gTm9kZS5jcHAKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6IEZvbGxvd2VkIHRoZSBzaWdu
YXR1cmUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNo
aWxkKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UsIG1vdmVkIG51bGwgY2hlY2sgZnJv
bSBjaGVja1JlcGxhY2VDaGlsZCB0byBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6YXBwZW5kQ2hpbGQpOiBGb2xsb3dlZCB0aGUgc2lnbmF0dXJlIGNoYW5nZS4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzRG9jdW1lbnRUeXBlTm9kZSk6IEFkZGVkIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkgb2YgY2Fs
bCBzaXRlcy4KKwogMjAxMi0xMS0yNyAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZnVuY3Rpb25hbGl0eSBmaXgsIHJldHVybiB0aGUg
aGVpZ2h0IGluIEltYWdlRnJhbWU6OmhlaWdodCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKaW5kZXggMjBmOWM0YzAwYzRkYTg2NTZmNmNlYTMwNzEwY2MzZDc1ZDdmMDYwMi4uMGIy
YTZhMjdkNTU5NjZjNzk4MjlhZWIzNzQzMGUyOTA3Mjk1YjQyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcApAQCAtMTMyLDYgKzEzMiw3MiBAQCBDb250YWluZXJOb2RlOjp+Q29u
dGFpbmVyTm9kZSgpCiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIH0KIAorc3RhdGljIGlubGlu
ZSBib29sIGlzQ2hpbGRUeXBlQWxsb3dlZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUq
IGNoaWxkKQoreworICAgIGlmICghY2hpbGQtPmlzRG9jdW1lbnRGcmFnbWVudCgpKQorICAgICAg
ICByZXR1cm4gbmV3UGFyZW50LT5jaGlsZFR5cGVBbGxvd2VkKGNoaWxkLT5ub2RlVHlwZSgpKTsK
KworICAgIGZvciAoTm9kZSogbm9kZSA9IGNoaWxkLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUg
PSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghbmV3UGFyZW50LT5jaGlsZFR5
cGVBbGxvd2VkKG5vZGUtPm5vZGVUeXBlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25Db2Rl
IGNoZWNrQWNjZXB0Q2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGls
ZCwgTm9kZSogb2xkQ2hpbGQpCit7CisgICAgLy8gTm90IG1lbnRpb25lZCBpbiBzcGVjOiB0aHJv
dyBOT1RfRk9VTkRfRVJSIGlmIG5ld0NoaWxkIGlzIG51bGwKKyAgICBpZiAoIW5ld0NoaWxkKQor
ICAgICAgICByZXR1cm4gTk9UX0ZPVU5EX0VSUjsKKworICAgIGlmICgobmV3Q2hpbGQtPmlzRWxl
bWVudE5vZGUoKSB8fCBuZXdDaGlsZC0+aXNUZXh0Tm9kZSgpKSAmJiBuZXdQYXJlbnQtPmlzRWxl
bWVudE5vZGUoKSkgeworICAgICAgICBBU1NFUlQoIW5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUo
KSk7CisgICAgICAgIEFTU0VSVCghbmV3UGFyZW50LT5pc0RvY3VtZW50VHlwZU5vZGUoKSk7Cisg
ICAgICAgIEFTU0VSVChpc0NoaWxkVHlwZUFsbG93ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkpOwor
ICAgICAgICBBU1NFUlQoIW9sZENoaWxkIHx8ICFuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkg
fHwgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihuZXdQYXJlbnQpLT5jYW5SZXBsYWNlQ2hpbGQobmV3
Q2hpbGQsIG9sZENoaWxkKSk7CisgICAgICAgIGlmIChuZXdDaGlsZC0+Y29udGFpbnMobmV3UGFy
ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIGlmIChuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkp
CisgICAgICAgIHJldHVybiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgaWYgKG5l
d0NoaWxkLT5pbkRvY3VtZW50KCkgJiYgbmV3Q2hpbGQtPmlzRG9jdW1lbnRUeXBlTm9kZSgpKQor
ICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgIGlmIChuZXdDaGlsZC0+
Y29udGFpbnMobmV3UGFyZW50KSkKKyAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VS
UjsKKworICAgIGlmIChvbGRDaGlsZCAmJiBuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkpIHsK
KyAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG5ld1BhcmVudCktPmNhblJlcGxh
Y2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIEhJRVJBUkNI
WV9SRVFVRVNUX0VSUjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWlzQ2hpbGRUeXBlQWxs
b3dlZChuZXdQYXJlbnQsIG5ld0NoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBISUVSQVJDSFlf
UkVRVUVTVF9FUlI7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBjaGVja0FkZENoaWxkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3Q2hp
bGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChFeGNlcHRpb25Db2RlIGNvZGUgPSBj
aGVja0FjY2VwdENoaWxkKG5ld1BhcmVudCwgbmV3Q2hpbGQsIDApKSB7CisgICAgICAgIGVjID0g
Y29kZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tSZXBsYWNlQ2hpbGQoQ29udGFpbmVyTm9kZSog
bmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmIChFeGNlcHRpb25Db2RlIGNvZGUgPSBjaGVja0FjY2VwdENoaWxkKG5l
d1BhcmVudCwgbmV3Q2hpbGQsIG9sZENoaWxkKSkgeworICAgICAgICBlYyA9IGNvZGU7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJv
b2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQs
IE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm9vbCBzaG91bGRMYXp5QXR0YWNo
KQogewogICAgIC8vIENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgpAQCAt
MTQ3LDggKzIxMyw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgICAgIHJldHVybiBh
cHBlbmRDaGlsZChuZXdDaGlsZCwgZWMsIHNob3VsZExhenlBdHRhY2gpOwogCiAgICAgLy8gTWFr
ZSBzdXJlIGFkZGluZyB0aGUgbmV3IGNoaWxkIGlzIE9LLgotICAgIGNoZWNrQWRkQ2hpbGQobmV3
Q2hpbGQuZ2V0KCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKCFjaGVja0FkZENoaWxkKHRo
aXMsIG5ld0NoaWxkLmdldCgpLCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IE5PVF9GT1VORF9FUlI6IFJhaXNlZCBpZiByZWZDaGlsZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlz
IG5vZGUKQEAgLTI2MywxMyArMzI4LDE3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNo
aWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAg
aWYgKG9sZENoaWxkID09IG5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVy
biB0cnVlOwogCisgICAgaWYgKCFvbGRDaGlsZCkgeworICAgICAgICBlYyA9IE5PVF9GT1VORF9F
UlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHN1cmUgcmVw
bGFjaW5nIHRoZSBvbGQgY2hpbGQgd2l0aCB0aGUgbmV3IGlzIG9rCi0gICAgY2hlY2tSZXBsYWNl
Q2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGlm
ICghY2hlY2tSZXBsYWNlQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE5PVF9GT1VORF9FUlI6IFJhaXNlZCBp
ZiBvbGRDaGlsZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUuCi0gICAgaWYgKCFvbGRDaGls
ZCB8fCBvbGRDaGlsZC0+cGFyZW50Tm9kZSgpICE9IHRoaXMpIHsKKyAgICBpZiAob2xkQ2hpbGQt
PnBhcmVudE5vZGUoKSAhPSB0aGlzKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI5MCw4ICszNTksNyBAQCBib29sIENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBv
bGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIERvZXMgdGhpcyBv
bmUgbW9yZSB0aW1lIGJlY2F1c2UgcmVtb3ZlQ2hpbGQoKSBmaXJlcyBhIE11dGF0aW9uRXZlbnQu
Ci0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7Ci0g
ICAgaWYgKGVjKQorICAgIGlmICghY2hlY2tSZXBsYWNlQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0
KCksIG9sZENoaWxkLCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGVWZWN0
b3IgdGFyZ2V0czsKQEAgLTMwMCw4ICszNjgsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxh
Y2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBEb2VzIHRoaXMgeWV0IGFub3RoZXIgY2hl
Y2sgYmVjYXVzZSBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KCkgZmlyZXMg
YSBNdXRhdGlvbkV2ZW50LgotICAgIGNoZWNrUmVwbGFjZUNoaWxkKG5ld0NoaWxkLmdldCgpLCBv
bGRDaGlsZCwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoIWNoZWNrUmVwbGFjZUNoaWxkKHRo
aXMsIG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCwgZWMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3Vt
ZW50KCksIHRoaXMpOwpAQCAtNTU5LDggKzYyNiw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBw
ZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJv
CiAgICAgZWMgPSAwOwogCiAgICAgLy8gTWFrZSBzdXJlIGFkZGluZyB0aGUgbmV3IGNoaWxkIGlz
IG9rCi0gICAgY2hlY2tBZGRDaGlsZChuZXdDaGlsZC5nZXQoKSwgZWMpOwotICAgIGlmIChlYykK
KyAgICBpZiAoIWNoZWNrQWRkQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIGVjKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG5ld0NoaWxkID09IG1fbGFzdENoaWxkKSAvLyBu
b3RoaW5nIHRvIGRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJhMWU1NDdjMGM5N2MwNTc2OTBm
ODNiOGFlMDA0NGNmOWUzMDljMzQuLjRlMjY3MTYxMTIyMGQzZmJmNzcyMGEwOGRjNGQ3OTUzZGEx
ZTUwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03MzIsNiArNzMyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChDb250YWluZXJOb2RlKik7CiAgICAg
Ly8gbm9kZVdpbGxCZVJlbW92ZWQgaXMgb25seSBzYWZlIHdoZW4gcmVtb3Zpbmcgb25lIG5vZGUg
YXQgYSB0aW1lLgogICAgIHZvaWQgbm9kZVdpbGxCZVJlbW92ZWQoTm9kZSopOworICAgIGJvb2wg
Y2FuUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CiAKICAgICB2
b2lkIHRleHRJbnNlcnRlZChOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OwogICAgIHZvaWQgdGV4dFJlbW92ZWQoTm9kZSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKQEAgLTExOTYsNyArMTE5Nyw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2Rl
VHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2Vk
KE5vZGVUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2Rl
KGJvb2wgZGVlcCk7Ci0gICAgdmlydHVhbCBib29sIGNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdD
aGlsZCwgTm9kZSogb2xkQ2hpbGQpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDZjM2E5Yjk5
Y2IxYTYyMDk3MjNjZjZiZWE4MThkY2EyMjAyZDBiZDQuLjJlNTMwZjg5NTZiZTc4OTlkZDNmODMz
NmQwYzRmMmM5Zjg5ZWIxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTExNTgsODIgKzExNTgsNiBA
QCB2b2lkIE5vZGU6OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBBdHRyaWJ1dGUtc3BlY2lmaWMgY2hlY2tzIGFyZSBp
biBBdHRyOjpzZXRQcmVmaXgoKS4KIH0KIAotc3RhdGljIGJvb2wgaXNDaGlsZFR5cGVBbGxvd2Vk
KE5vZGUqIG5ld1BhcmVudCwgTm9kZSogY2hpbGQpCi17Ci0gICAgaWYgKGNoaWxkLT5ub2RlVHlw
ZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpIHsKLSAgICAgICAgaWYgKCFuZXdQ
YXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQoY2hpbGQtPm5vZGVUeXBlKCkpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgZm9y
IChOb2RlICpuID0gY2hpbGQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQobi0+bm9kZVR5cGUo
KSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIE5vZGU6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSopCi17
Ci0gICAgcmV0dXJuIGlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlzLCBuZXdDaGlsZCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIGNoZWNrQWNjZXB0Q2hpbGQoTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8gTm90IG1lbnRpb25lZCBpbiBzcGVjOiB0
aHJvdyBOT1RfRk9VTkRfRVJSIGlmIG5ld0NoaWxkIGlzIG51bGwKLSAgICBpZiAoIW5ld0NoaWxk
KSB7Ci0gICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBpZiAobmV3UGFyZW50LT5pc1JlYWRPbmx5Tm9kZSgpKSB7Ci0gICAgICAgIGVj
ID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKG5ld0NoaWxkLT5pbkRvY3VtZW50KCkgJiYgbmV3Q2hpbGQtPm5vZGVUeXBlKCkg
PT0gTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSElFUkFSQ0hZX1JF
UVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90
IGFsbG93IGNoaWxkcmVuIG9mIHRoZSB0eXBlIG9mIHRoZQotICAgIC8vIG5ld0NoaWxkIG5vZGUs
IG9yIGlmIHRoZSBub2RlIHRvIGFwcGVuZCBpcyBvbmUgb2YgdGhpcyBub2RlJ3MgYW5jZXN0b3Jz
LgotCi0gICAgaWYgKG5ld0NoaWxkLT5jb250YWlucyhuZXdQYXJlbnQpKSB7Ci0gICAgICAgIGVj
ID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12
b2lkIE5vZGU6OmNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFvbGRDaGlsZCkgewotICAgICAgICBl
YyA9IE5PVF9GT1VORF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjaGVja0Fj
Y2VwdENoaWxkKHRoaXMsIG5ld0NoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIWNhblJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpKSB7Ci0g
ICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotfQotCi12b2lkIE5vZGU6OmNoZWNrQWRkQ2hpbGQoTm9kZSAqbmV3Q2hpbGQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGNoZWNrQWNjZXB0Q2hpbGQodGhpcywgbmV3Q2hpbGQsIGVjKTsK
LSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWlzQ2hpbGRUeXBl
QWxsb3dlZCh0aGlzLCBuZXdDaGlsZCkpIHsKLSAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVT
VF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIGJvb2wgTm9kZTo6aXNEZXNjZW5k
YW50T2YoY29uc3QgTm9kZSAqb3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYg
b3RoZXIgaXMgYW4gYW5jZXN0b3Igb2YgdGhpcywgb3RoZXJ3aXNlIGZhbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApp
bmRleCA1MWJhM2IyMjFhOTJiNDMxZjM2YjI0NjM5NDQzNmZjOTkwZGY4ZDM5Li42NTkzZjc4ZTIy
YTVhZDIxM2FiMTI4MjZkOTk3NWRmMjI1ODhiMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQ1Niw2ICs0
NTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRU5USVRZX1JFRkVSRU5DRV9OT0RFOyB9CisgICAgYm9v
bCBpc0RvY3VtZW50VHlwZU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VN
RU5UX1RZUEVfTk9ERTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVU
eXBlKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50
KCkgY29uc3Q7CiAgICAgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKQEAg
LTQ4OSwxMyArNDkwLDYgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSop
IGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oTm9kZSopOwogCi0g
ICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBkbyBzdHJpY3QgZXJyb3ItY2hlY2tpbmcgd2hl
biBhZGRpbmcgY2hpbGRyZW4gdmlhCi0gICAgLy8gdGhlIHB1YmxpYyBET00gQVBJIChlLmcuLCBh
cHBlbmRDaGlsZCgpKS4KLSAgICB2b2lkIGNoZWNrQWRkQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIEV4
Y2VwdGlvbkNvZGUmKTsgLy8gRXJyb3ItY2hlY2tpbmcgd2hlbiBhZGRpbmcgdmlhIHRoZSBET00g
QVBJCi0KLSAgICB2b2lkIGNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBv
bGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXBsYWNlQ2hp
bGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKLSAgICAKICAgICAvLyBVc2VkIHRv
IGRldGVybWluZSB3aGV0aGVyIHJhbmdlIG9mZnNldHMgdXNlIGNoYXJhY3RlcnMgb3Igbm9kZSBp
bmRpY2VzLgogICAgIHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25zdDsKICAg
ICAvLyBOdW1iZXIgb2YgRE9NIDE2LWJpdCB1bml0cyBjb250YWluZWQgaW4gbm9kZS4gTm90ZSB0
aGF0IHJlbmRlcmVkIHRleHQgbGVuZ3RoIGNhbiBiZSBkaWZmZXJlbnQgLSBlLmcuIGJlY2F1c2Ug
b2YK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176445</attachid>
            <date>2012-11-28 03:30:31 -0800</date>
            <delta_ts>2012-11-28 16:18:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103372-20121128202806.patch</filename>
            <type>text/plain</type>
            <size>12588</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkyOGVkN2JhYTViOTQz
YzFhODIwZjc2ZTVlYzUxNTI2MzMyNDk5NC4uNWU3ZDE4NzQ2OTQ0YWNiMGM4ZGFlZjAwYjlmODZm
M2YyNDc3MGJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTExLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVja0FjY2VwdENo
aWxkKCkgbmVlZHMgZmV3ZXIgdmlydHVhbCBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzcyCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVv
cmdhbml6ZXMgY2hlY2tBY2NlcHRDaGlsZCBmYW1pbHkgZm9yIHNwZWVkLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIHJlb3JnYW5pemUgY2hlY2sqQ2hpbGQgZnVuY3Rpb25zIGFuZCBkZXZpcnR1YWxp
emUKKyAgICAgICAgTm9kZTo6Y2FuUmVwbGFjZUNoaWxkKCkgZm9yIHNwZWVkLgorCisgICAgICAg
IC0gTWFkZSBOb2RlOjpjaGVja0FkZENoaWxkIGFuZCBOb2RlOjpjaGVja1JlcGxhY2VDaGlsZCgp
IHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zCisgICAgICAgICAgaW4gQ29udGFpbmVyTm9kZS5jcHAu
IGNoZWNrQWNjZXB0Q2hpbGQoKSB3YXMgYWxzbyBtb3ZlZCB0byB0aGUgc2FtZSBmaWxlLiBUaGlz
IGFsbG93cyB1cworICAgICAgICAgIG1vcmUgYWdncmVzc2l2ZSBpbmxpbmluZy4KKworICAgICAg
ICAtIEFkZGVkIGEgZmFzdCBwYXRoIGluIGNoZWNrQWNjZXB0Q2hpbGQoKSwgd2hlcmUgd2UgY2Fu
YXNzdW1lIHRoYXQgdGhlIHBhcmVudCBpcyBlbGVtZW50CisgICAgICAgICAgYW5kIHRoZSBuZXcg
Y2hpbGQgaXMgZWxlbWVudCBvciB0ZXh0LiBVbmRlciB0aGlzIGFzc3VtcHRpb24sIHdlIG5lZWQg
bm8gZXh0cmEgdHlwZSBjaGVja3MKKyAgICAgICAgICBhbmQganVzdCBuZWVkcyBhIGNpcmNsZSBw
cmV2ZW50aW9uIHRocm91Z2ggTm9kZTo6Y29udGFpbnMoKS4gVGhpcyBpcyBmYXN0ZXIgdGhhbiBj
dXJyZW50IGdlbmVyaWMgdmVyc2lvbi4KKworICAgICAgICAtIE1vdmVkIGV4dHJhIGNoZWNrcyBm
cm9tIGNoZWNrQWRkQ2hpbGQoKSBhbmQgY2hlY2tSZXBsYWNlQ2hpbGQoKSB0bworICAgICAgICAg
IGNoZWNrQWNjZXB0Q2hpbGQoKS4gVGhpcyBhbGxvd3MgdGhlIGZhc3QgcGF0aCBza2lwcyBldmVu
IHRoZXNlIGV4dHJhIGNoZWNrcy4KKworICAgICAgICAtIE5vZGU6OmNhblJlcGxhY2VDaGlsZCgp
IGlzIGRldmlydHVhbGl6ZWQuIFNpbmNlIHRoZSBvbmx5IG92ZXJyaWRlIGlzIG9uCisgICAgICAg
ICAgRG9jdW1lbnQsIHdlIGNhbiBjaGVjayBpc0RvY3VtZW50Tm9kZSgpIHRvIGNhbGwgaXQgZGly
ZWN0bHkuCisKKyAgICAgICAgLSBUaGUgZGVmYXVsdCBpbXBsZW1lbmF0aW9uIG9mIE5vZGU6OmNh
blJlcGxhY2VDaGlsZCgpIGp1c3QgY2FsbHMgaXNDaGlsZFR5cGVBbGxvd2VkKCkuCisgICAgICAg
ICAgVGhhdCBpcyB3aGF0IGFuIGV4dHJhIGNoZWNrIGZvciBjaGVja0FkZENoaWxkKCkgZGlkLiBT
byB3ZSBjYW4gc2hhcmUgdGhlc2UgY29kZSBwYXRoIGluIGNoZWNrQWNjZXB0Q2hpbGQoKS4KKwor
ICAgICAgICBUaGlzIGdhaW5zIDItMyUgd2luIG9uIERyb21hZW8gZG9tLW1vZGlmeS5odG1sLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2hpbGRUeXBlQWxsb3dlZCk6IE1vdmVk
IGZyb20gTm9kZS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQWNjZXB0Q2hpbGQpOiBNb3Zl
ZCBmcm9tIE5vZGUuY3BwLCBBZGRlZCBhIGZhc3QgcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrQWRkQ2hpbGQpOiBNb3ZlZCBmcm9tIE5vZGUuY3BwCisgICAgICAgIChXZWJDb3JlOjpjaGVj
a1JlcGxhY2VDaGlsZCk6IE1vdmVkIGZyb20gTm9kZS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6IEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdl
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKTogRm9sbG93
ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UsIG1vdmVkIG51bGwgY2hlY2sgZnJvbSBjaGVja1JlcGxh
Y2VDaGlsZCB0byBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5k
Q2hpbGQpOiBGb2xsb3dlZCB0aGUgc2lnbmF0dXJlIGNoYW5nZS4KKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnRU
eXBlTm9kZSk6IEFkZGVkIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkgb2YgY2FsbCBzaXRlcy4KKwog
MjAxMi0xMS0yNyAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgZnVuY3Rpb25hbGl0eSBmaXgsIHJldHVybiB0aGUgaGVpZ2h0IGluIElt
YWdlRnJhbWU6OmhlaWdodCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXgg
MjBmOWM0YzAwYzRkYTg2NTZmNmNlYTMwNzEwY2MzZDc1ZDdmMDYwMi4uMGIyYTZhMjdkNTU5NjZj
Nzk4MjlhZWIzNzQzMGUyOTA3Mjk1YjQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcApAQCAtMTMyLDYgKzEzMiw3MiBAQCBDb250YWluZXJOb2RlOjp+Q29udGFpbmVyTm9kZSgp
CiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzQ2hp
bGRUeXBlQWxsb3dlZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIGNoaWxkKQorewor
ICAgIGlmICghY2hpbGQtPmlzRG9jdW1lbnRGcmFnbWVudCgpKQorICAgICAgICByZXR1cm4gbmV3
UGFyZW50LT5jaGlsZFR5cGVBbGxvd2VkKGNoaWxkLT5ub2RlVHlwZSgpKTsKKworICAgIGZvciAo
Tm9kZSogbm9kZSA9IGNoaWxkLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0
U2libGluZygpKSB7CisgICAgICAgIGlmICghbmV3UGFyZW50LT5jaGlsZFR5cGVBbGxvd2VkKG5v
ZGUtPm5vZGVUeXBlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25Db2RlIGNoZWNrQWNjZXB0
Q2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xk
Q2hpbGQpCit7CisgICAgLy8gTm90IG1lbnRpb25lZCBpbiBzcGVjOiB0aHJvdyBOT1RfRk9VTkRf
RVJSIGlmIG5ld0NoaWxkIGlzIG51bGwKKyAgICBpZiAoIW5ld0NoaWxkKQorICAgICAgICByZXR1
cm4gTk9UX0ZPVU5EX0VSUjsKKworICAgIGlmICgobmV3Q2hpbGQtPmlzRWxlbWVudE5vZGUoKSB8
fCBuZXdDaGlsZC0+aXNUZXh0Tm9kZSgpKSAmJiBuZXdQYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkg
eworICAgICAgICBBU1NFUlQoIW5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUoKSk7CisgICAgICAg
IEFTU0VSVCghbmV3UGFyZW50LT5pc0RvY3VtZW50VHlwZU5vZGUoKSk7CisgICAgICAgIEFTU0VS
VChpc0NoaWxkVHlwZUFsbG93ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkpOworICAgICAgICBBU1NF
UlQoIW9sZENoaWxkIHx8ICFuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkgfHwgc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihuZXdQYXJlbnQpLT5jYW5SZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENo
aWxkKSk7CisgICAgICAgIGlmIChuZXdDaGlsZC0+Y29udGFpbnMobmV3UGFyZW50KSkKKyAgICAg
ICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGlmIChuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkpCisgICAgICAgIHJl
dHVybiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgaWYgKG5ld0NoaWxkLT5pbkRv
Y3VtZW50KCkgJiYgbmV3Q2hpbGQtPmlzRG9jdW1lbnRUeXBlTm9kZSgpKQorICAgICAgICByZXR1
cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgIGlmIChuZXdDaGlsZC0+Y29udGFpbnMobmV3
UGFyZW50KSkKKyAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKKworICAgIGlm
IChvbGRDaGlsZCAmJiBuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkpIHsKKyAgICAgICAgaWYg
KCFzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG5ld1BhcmVudCktPmNhblJlcGxhY2VDaGlsZChuZXdD
aGlsZCwgb2xkQ2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VS
UjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWlzQ2hpbGRUeXBlQWxsb3dlZChuZXdQYXJl
bnQsIG5ld0NoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7
CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja0Fk
ZENoaWxkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmIChFeGNlcHRpb25Db2RlIGNvZGUgPSBjaGVja0FjY2VwdENo
aWxkKG5ld1BhcmVudCwgbmV3Q2hpbGQsIDApKSB7CisgICAgICAgIGVjID0gY29kZTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgY2hlY2tSZXBsYWNlQ2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBO
b2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmIChFeGNlcHRpb25Db2RlIGNvZGUgPSBjaGVja0FjY2VwdENoaWxkKG5ld1BhcmVudCwgbmV3
Q2hpbGQsIG9sZENoaWxkKSkgeworICAgICAgICBlYyA9IGNvZGU7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgQ29udGFpbmVy
Tm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNo
aWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm9vbCBzaG91bGRMYXp5QXR0YWNoKQogewogICAgIC8v
IENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgpAQCAtMTQ3LDggKzIxMyw3
IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgICAgIHJldHVybiBhcHBlbmRDaGlsZChu
ZXdDaGlsZCwgZWMsIHNob3VsZExhenlBdHRhY2gpOwogCiAgICAgLy8gTWFrZSBzdXJlIGFkZGlu
ZyB0aGUgbmV3IGNoaWxkIGlzIE9LLgotICAgIGNoZWNrQWRkQ2hpbGQobmV3Q2hpbGQuZ2V0KCks
IGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKCFjaGVja0FkZENoaWxkKHRoaXMsIG5ld0NoaWxk
LmdldCgpLCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE5PVF9GT1VORF9F
UlI6IFJhaXNlZCBpZiByZWZDaGlsZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUKQEAgLTI2
MywxMyArMzI4LDE3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgaWYgKG9sZENoaWxk
ID09IG5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybiB0cnVlOwogCisg
ICAgaWYgKCFvbGRDaGlsZCkgeworICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHN1cmUgcmVwbGFjaW5nIHRoZSBv
bGQgY2hpbGQgd2l0aCB0aGUgbmV3IGlzIG9rCi0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hp
bGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGlmICghY2hlY2tSZXBs
YWNlQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIE5PVF9GT1VORF9FUlI6IFJhaXNlZCBpZiBvbGRDaGlsZCBp
cyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUuCi0gICAgaWYgKCFvbGRDaGlsZCB8fCBvbGRDaGls
ZC0+cGFyZW50Tm9kZSgpICE9IHRoaXMpIHsKKyAgICBpZiAob2xkQ2hpbGQtPnBhcmVudE5vZGUo
KSAhPSB0aGlzKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KQEAgLTI5MCw4ICszNTksNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJl
cGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhj
ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIERvZXMgdGhpcyBvbmUgbW9yZSB0aW1l
IGJlY2F1c2UgcmVtb3ZlQ2hpbGQoKSBmaXJlcyBhIE11dGF0aW9uRXZlbnQuCi0gICAgY2hlY2tS
ZXBsYWNlQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQor
ICAgIGlmICghY2hlY2tSZXBsYWNlQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxk
LCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsK
QEAgLTMwMCw4ICszNjgsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNz
UmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBEb2VzIHRoaXMgeWV0IGFub3RoZXIgY2hlY2sgYmVjYXVzZSBj
b2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KCkgZmlyZXMgYSBNdXRhdGlvbkV2
ZW50LgotICAgIGNoZWNrUmVwbGFjZUNoaWxkKG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCwgZWMp
OwotICAgIGlmIChlYykKKyAgICBpZiAoIWNoZWNrUmVwbGFjZUNoaWxkKHRoaXMsIG5ld0NoaWxk
LmdldCgpLCBvbGRDaGlsZCwgZWMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIHRoaXMp
OwpAQCAtNTU5LDggKzYyNiw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFz
c1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgZWMgPSAw
OwogCiAgICAgLy8gTWFrZSBzdXJlIGFkZGluZyB0aGUgbmV3IGNoaWxkIGlzIG9rCi0gICAgY2hl
Y2tBZGRDaGlsZChuZXdDaGlsZC5nZXQoKSwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoIWNo
ZWNrQWRkQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIGVjKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKG5ld0NoaWxkID09IG1fbGFzdENoaWxkKSAvLyBub3RoaW5nIHRvIGRv
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJhMWU1NDdjMGM5N2MwNTc2OTBmODNiOGFlMDA0NGNm
OWUzMDljMzQuLjRlMjY3MTYxMTIyMGQzZmJmNzcyMGEwOGRjNGQ3OTUzZGExZTUwZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC03MzIsNiArNzMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbm9k
ZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChDb250YWluZXJOb2RlKik7CiAgICAgLy8gbm9kZVdpbGxC
ZVJlbW92ZWQgaXMgb25seSBzYWZlIHdoZW4gcmVtb3Zpbmcgb25lIG5vZGUgYXQgYSB0aW1lLgog
ICAgIHZvaWQgbm9kZVdpbGxCZVJlbW92ZWQoTm9kZSopOworICAgIGJvb2wgY2FuUmVwbGFjZUNo
aWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CiAKICAgICB2b2lkIHRleHRJbnNl
cnRlZChOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZvaWQg
dGV4dFJlbW92ZWQoTm9kZSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKQEAg
LTExOTYsNyArMTE5Nyw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlw
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBj
b25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7
Ci0gICAgdmlydHVhbCBib29sIGNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSog
b2xkQ2hpbGQpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDZjM2E5Yjk5Y2IxYTYyMDk3MjNj
ZjZiZWE4MThkY2EyMjAyZDBiZDQuLjJlNTMwZjg5NTZiZTc4OTlkZDNmODMzNmQwYzRmMmM5Zjg5
ZWIxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTExNTgsODIgKzExNTgsNiBAQCB2b2lkIE5vZGU6
OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICAvLyBBdHRyaWJ1dGUtc3BlY2lmaWMgY2hlY2tzIGFyZSBpbiBBdHRyOjpzZXRQ
cmVmaXgoKS4KIH0KIAotc3RhdGljIGJvb2wgaXNDaGlsZFR5cGVBbGxvd2VkKE5vZGUqIG5ld1Bh
cmVudCwgTm9kZSogY2hpbGQpCi17Ci0gICAgaWYgKGNoaWxkLT5ub2RlVHlwZSgpICE9IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpIHsKLSAgICAgICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxk
VHlwZUFsbG93ZWQoY2hpbGQtPm5vZGVUeXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChOb2RlICpuID0g
Y2hpbGQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKCFuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQobi0+bm9kZVR5cGUoKSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE5v
ZGU6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSopCi17Ci0gICAgcmV0dXJu
IGlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlzLCBuZXdDaGlsZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNo
ZWNrQWNjZXB0Q2hpbGQoTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgLy8gTm90IG1lbnRpb25lZCBpbiBzcGVjOiB0aHJvdyBOT1RfRk9V
TkRfRVJSIGlmIG5ld0NoaWxkIGlzIG51bGwKLSAgICBpZiAoIW5ld0NoaWxkKSB7Ci0gICAgICAg
IGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBp
ZiAobmV3UGFyZW50LT5pc1JlYWRPbmx5Tm9kZSgpKSB7Ci0gICAgICAgIGVjID0gTk9fTU9ESUZJ
Q0FUSU9OX0FMTE9XRURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5l
d0NoaWxkLT5pbkRvY3VtZW50KCkgJiYgbmV3Q2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9D
VU1FTlRfVFlQRV9OT0RFKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBS
YWlzZWQgaWYgdGhpcyBub2RlIGlzIG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90IGFsbG93IGNoaWxk
cmVuIG9mIHRoZSB0eXBlIG9mIHRoZQotICAgIC8vIG5ld0NoaWxkIG5vZGUsIG9yIGlmIHRoZSBu
b2RlIHRvIGFwcGVuZCBpcyBvbmUgb2YgdGhpcyBub2RlJ3MgYW5jZXN0b3JzLgotCi0gICAgaWYg
KG5ld0NoaWxkLT5jb250YWlucyhuZXdQYXJlbnQpKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIE5vZGU6OmNo
ZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgaWYgKCFvbGRDaGlsZCkgewotICAgICAgICBlYyA9IE5PVF9GT1VO
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjaGVja0FjY2VwdENoaWxkKHRo
aXMsIG5ld0NoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoIWNhblJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpKSB7Ci0gICAgICAgIGVjID0g
SElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lk
IE5vZGU6OmNoZWNrQWRkQ2hpbGQoTm9kZSAqbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIGNoZWNrQWNjZXB0Q2hpbGQodGhpcywgbmV3Q2hpbGQsIGVjKTsKLSAgICBpZiAoZWMp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlz
LCBuZXdDaGlsZCkpIHsKLSAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIGJvb2wgTm9kZTo6aXNEZXNjZW5kYW50T2YoY29uc3Qg
Tm9kZSAqb3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYgb3RoZXIgaXMgYW4g
YW5jZXN0b3Igb2YgdGhpcywgb3RoZXJ3aXNlIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MWJhM2Iy
MjFhOTJiNDMxZjM2YjI0NjM5NDQzNmZjOTkwZGY4ZDM5Li42NTkzZjc4ZTIyYTVhZDIxM2FiMTI4
MjZkOTk3NWRmMjI1ODhiMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQ1Niw2ICs0NTYsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5v
ZGVUeXBlKCkgPT0gRU5USVRZX1JFRkVSRU5DRV9OT0RFOyB9CisgICAgYm9vbCBpc0RvY3VtZW50
VHlwZU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9E
RTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29uc3Q7CiAg
ICAgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKQEAgLTQ4OSwxMyArNDkw
LDYgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSopIGNvbnN0OwogICAg
IGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oTm9kZSopOwogCi0gICAgLy8gVGhpcyBt
ZXRob2QgaXMgdXNlZCB0byBkbyBzdHJpY3QgZXJyb3ItY2hlY2tpbmcgd2hlbiBhZGRpbmcgY2hp
bGRyZW4gdmlhCi0gICAgLy8gdGhlIHB1YmxpYyBET00gQVBJIChlLmcuLCBhcHBlbmRDaGlsZCgp
KS4KLSAgICB2b2lkIGNoZWNrQWRkQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUm
KTsgLy8gRXJyb3ItY2hlY2tpbmcgd2hlbiBhZGRpbmcgdmlhIHRoZSBET00gQVBJCi0KLSAgICB2
b2lkIGNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3
Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKLSAgICAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB3
aGV0aGVyIHJhbmdlIG9mZnNldHMgdXNlIGNoYXJhY3RlcnMgb3Igbm9kZSBpbmRpY2VzLgogICAg
IHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25zdDsKICAgICAvLyBOdW1iZXIg
b2YgRE9NIDE2LWJpdCB1bml0cyBjb250YWluZWQgaW4gbm9kZS4gTm90ZSB0aGF0IHJlbmRlcmVk
IHRleHQgbGVuZ3RoIGNhbiBiZSBkaWZmZXJlbnQgLSBlLmcuIGJlY2F1c2Ugb2YK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176595</attachid>
            <date>2012-11-28 16:14:47 -0800</date>
            <delta_ts>2012-11-28 16:52:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-103372-20121129091221.patch</filename>
            <type>text/plain</type>
            <size>12360</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEyYjc0OTQyMzFhMGFm
YzM0OTJhNjljNjg3OGFiZDhlM2NiYzNmNy4uMWYyYzA4ZGZlYzUzNmQ3NGY4NjI2Y2NlMDg1NGFh
Y2IyN2I2NWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTExLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVja0FjY2VwdENo
aWxkKCkgbmVlZHMgZmV3ZXIgdmlydHVhbCBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2ph
biBWYWZhaS4KKworICAgICAgICBUaGlzIGNoYW5nZSByZW9yZ2FuaXplcyBjaGVja0FjY2VwdENo
aWxkIGZhbWlseSBmb3Igc3BlZWQuCisKKyAgICAgICAgLSBNYWRlIE5vZGU6OmNoZWNrQWRkQ2hp
bGQgYW5kIE5vZGU6OmNoZWNrUmVwbGFjZUNoaWxkKCkgc3RhdGljIGlubGluZSBmdW5jdGlvbnMK
KyAgICAgICAgICBpbiBDb250YWluZXJOb2RlLmNwcC4gY2hlY2tBY2NlcHRDaGlsZCgpIHdhcyBh
bHNvIG1vdmVkIHRvIHRoZSBzYW1lIGZpbGUuIFRoaXMgYWxsb3dzIHVzCisgICAgICAgICAgbW9y
ZSBhZ2dyZXNzaXZlIGlubGluaW5nLgorCisgICAgICAgIC0gQWRkZWQgYSBmYXN0IHBhdGggaW4g
Y2hlY2tBY2NlcHRDaGlsZCgpLCB3aGVyZSB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhlIHBhcmVudCBp
cyBlbGVtZW50CisgICAgICAgICAgYW5kIHRoZSBuZXcgY2hpbGQgaXMgZWxlbWVudCBvciB0ZXh0
LiBVbmRlciB0aGlzIGFzc3VtcHRpb24sIHdlIG5lZWQgbm8gZXh0cmEgdHlwZSBjaGVja3MKKyAg
ICAgICAgICBhbmQganVzdCBuZWVkcyBhIGN5Y2xlIHByZXZlbnRpb24gdGhyb3VnaCBOb2RlOjpj
b250YWlucygpLiBUaGlzIGlzIGZhc3RlciB0aGFuIGN1cnJlbnQgZ2VuZXJpYyB2ZXJzaW9uLgor
CisgICAgICAgIC0gTW92ZWQgZXh0cmEgY2hlY2tzIGZyb20gY2hlY2tBZGRDaGlsZCgpIGFuZCBj
aGVja1JlcGxhY2VDaGlsZCgpIHRvCisgICAgICAgICAgY2hlY2tBY2NlcHRDaGlsZCgpLiBUaGlz
IGFsbG93cyB0aGUgZmFzdCBwYXRoIHNraXBzIGV2ZW4gdGhlc2UgZXh0cmEgY2hlY2tzLgorCisg
ICAgICAgIC0gTm9kZTo6Y2FuUmVwbGFjZUNoaWxkKCkgaXMgZGV2aXJ0dWFsaXplZC4gU2luY2Ug
dGhlIG9ubHkgb3ZlcnJpZGUgaXMgb24KKyAgICAgICAgICBEb2N1bWVudCwgd2UgY2FuIGNoZWNr
IGlzRG9jdW1lbnROb2RlKCkgdG8gY2FsbCBpdCBkaXJlY3RseS4KKworICAgICAgICAtIFRoZSBk
ZWZhdWx0IGltcGxlbWVuYXRpb24gb2YgTm9kZTo6Y2FuUmVwbGFjZUNoaWxkKCkganVzdCBjYWxs
cyBpc0NoaWxkVHlwZUFsbG93ZWQoKS4KKyAgICAgICAgICBUaGF0IGlzIHdoYXQgYW4gZXh0cmEg
Y2hlY2sgZm9yIGNoZWNrQWRkQ2hpbGQoKSBkaWQuIFNvIHdlIGNhbiBzaGFyZSB0aGVzZSBjb2Rl
IHBhdGggaW4gY2hlY2tBY2NlcHRDaGlsZCgpLgorCisgICAgICAgIFRoaXMgZ2FpbnMgMi0zJSB3
aW4gb24gRHJvbWFlbyBkb20tbW9kaWZ5Lmh0bWwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGlsZFR5cGVBbGxvd2VkKTogTW92ZWQgZnJvbSBO
b2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tBY2NlcHRDaGlsZCk6IE1vdmVkIGZyb20g
Tm9kZS5jcHAsIEFkZGVkIGEgZmFzdCBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tBZGRD
aGlsZCk6IE1vdmVkIGZyb20gTm9kZS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrUmVwbGFj
ZUNoaWxkKTogTW92ZWQgZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6aW5zZXJ0QmVmb3JlKTogRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAg
ICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOiBGb2xsb3dlZCB0aGUg
c2lnbmF0dXJlIGNoYW5nZSwgbW92ZWQgbnVsbCBjaGVjayBmcm9tIGNoZWNrUmVwbGFjZUNoaWxk
IHRvIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZCk6
IEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNEb2N1bWVudFR5cGVOb2Rl
KTogQWRkZWQgZm9yIGJldHRlciByZWFkYWJpbGl0eSBvZiBjYWxsIHNpdGVzLgorCiAyMDEyLTEx
LTI3ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBmdW5jdGlvbmFsaXR5IGZpeCwgcmV0dXJuIHRoZSBoZWlnaHQgaW4gSW1hZ2VGcmFt
ZTo6aGVpZ2h0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyM2ZiZDRm
YmE2NDhkZGMyMWY0NzcwZjVmM2U5ZWZlMWJkZTcwYWU1Li5mM2M2YWJkMzhhNzc1ODY4OTJhMmYx
NWQ5ZDNjZjZkMWYwYjQxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBA
IC0xMzMsNiArMTMzLDcwIEBAIENvbnRhaW5lck5vZGU6On5Db250YWluZXJOb2RlKCkKICAgICBy
ZW1vdmVBbGxDaGlsZHJlbigpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDaGlsZFR5cGVB
bGxvd2VkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogY2hpbGQpCit7CisgICAgaWYg
KCFjaGlsZC0+aXNEb2N1bWVudEZyYWdtZW50KCkpCisgICAgICAgIHJldHVybiBuZXdQYXJlbnQt
PmNoaWxkVHlwZUFsbG93ZWQoY2hpbGQtPm5vZGVUeXBlKCkpOworCisgICAgZm9yIChOb2RlKiBu
b2RlID0gY2hpbGQtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQobm9kZS0+bm9k
ZVR5cGUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGlsZChD
b250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCkK
K3sKKyAgICAvLyBOb3QgbWVudGlvbmVkIGluIHNwZWM6IHRocm93IE5PVF9GT1VORF9FUlIgaWYg
bmV3Q2hpbGQgaXMgbnVsbAorICAgIGlmICghbmV3Q2hpbGQpCisgICAgICAgIHJldHVybiBOT1Rf
Rk9VTkRfRVJSOworCisgICAgLy8gR29lcyBjb21tb24gY2FzYWUgZmFzdCBwYXRoIGlmIHBvc3Np
YmxlLgorICAgIGlmICgobmV3Q2hpbGQtPmlzRWxlbWVudE5vZGUoKSB8fCBuZXdDaGlsZC0+aXNU
ZXh0Tm9kZSgpKSAmJiBuZXdQYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICBBU1NF
UlQoIW5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUoKSk7CisgICAgICAgIEFTU0VSVCghbmV3UGFy
ZW50LT5pc0RvY3VtZW50VHlwZU5vZGUoKSk7CisgICAgICAgIEFTU0VSVChpc0NoaWxkVHlwZUFs
bG93ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkpOworICAgICAgICBpZiAobmV3Q2hpbGQtPmNvbnRh
aW5zKG5ld1BhcmVudCkpCisgICAgICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobmV3UGFyZW50LT5pc1JlYWRP
bmx5Tm9kZSgpKQorICAgICAgICByZXR1cm4gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwor
ICAgIGlmIChuZXdDaGlsZC0+aW5Eb2N1bWVudCgpICYmIG5ld0NoaWxkLT5pc0RvY3VtZW50VHlw
ZU5vZGUoKSkKKyAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKKyAgICBpZiAo
bmV3Q2hpbGQtPmNvbnRhaW5zKG5ld1BhcmVudCkpCisgICAgICAgIHJldHVybiBISUVSQVJDSFlf
UkVRVUVTVF9FUlI7CisKKyAgICBpZiAob2xkQ2hpbGQgJiYgbmV3UGFyZW50LT5pc0RvY3VtZW50
Tm9kZSgpKSB7CisgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihuZXdQYXJlbnQp
LT5jYW5SZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKSkKKyAgICAgICAgICAgIHJldHVy
biBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgfSBlbHNlIGlmICghaXNDaGlsZFR5cGVBbGxv
d2VkKG5ld1BhcmVudCwgbmV3Q2hpbGQpKQorICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVF
U1RfRVJSOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja0Fk
ZENoaWxkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmIChFeGNlcHRpb25Db2RlIGNvZGUgPSBjaGVja0FjY2VwdENo
aWxkKG5ld1BhcmVudCwgbmV3Q2hpbGQsIDApKSB7CisgICAgICAgIGVjID0gY29kZTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgY2hlY2tSZXBsYWNlQ2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBO
b2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmIChFeGNlcHRpb25Db2RlIGNvZGUgPSBjaGVja0FjY2VwdENoaWxkKG5ld1BhcmVudCwgbmV3
Q2hpbGQsIG9sZENoaWxkKSkgeworICAgICAgICBlYyA9IGNvZGU7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgQ29udGFpbmVy
Tm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNo
aWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm9vbCBzaG91bGRMYXp5QXR0YWNoKQogewogICAgIC8v
IENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgpAQCAtMTQ4LDggKzIxMiw3
IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgICAgIHJldHVybiBhcHBlbmRDaGlsZChu
ZXdDaGlsZCwgZWMsIHNob3VsZExhenlBdHRhY2gpOwogCiAgICAgLy8gTWFrZSBzdXJlIGFkZGlu
ZyB0aGUgbmV3IGNoaWxkIGlzIE9LLgotICAgIGNoZWNrQWRkQ2hpbGQobmV3Q2hpbGQuZ2V0KCks
IGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKCFjaGVja0FkZENoaWxkKHRoaXMsIG5ld0NoaWxk
LmdldCgpLCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE5PVF9GT1VORF9F
UlI6IFJhaXNlZCBpZiByZWZDaGlsZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUKQEAgLTI2
NCwxMyArMzI3LDE3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgaWYgKG9sZENoaWxk
ID09IG5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybiB0cnVlOwogCisg
ICAgaWYgKCFvbGRDaGlsZCkgeworICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHN1cmUgcmVwbGFjaW5nIHRoZSBv
bGQgY2hpbGQgd2l0aCB0aGUgbmV3IGlzIG9rCi0gICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hp
bGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGlmICghY2hlY2tSZXBs
YWNlQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIE5PVF9GT1VORF9FUlI6IFJhaXNlZCBpZiBvbGRDaGlsZCBp
cyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUuCi0gICAgaWYgKCFvbGRDaGlsZCB8fCBvbGRDaGls
ZC0+cGFyZW50Tm9kZSgpICE9IHRoaXMpIHsKKyAgICBpZiAob2xkQ2hpbGQtPnBhcmVudE5vZGUo
KSAhPSB0aGlzKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KQEAgLTI5MSw4ICszNTgsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJl
cGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhj
ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIERvZXMgdGhpcyBvbmUgbW9yZSB0aW1l
IGJlY2F1c2UgcmVtb3ZlQ2hpbGQoKSBmaXJlcyBhIE11dGF0aW9uRXZlbnQuCi0gICAgY2hlY2tS
ZXBsYWNlQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQor
ICAgIGlmICghY2hlY2tSZXBsYWNlQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxk
LCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsK
QEAgLTMwMSw4ICszNjcsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNz
UmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBEb2VzIHRoaXMgeWV0IGFub3RoZXIgY2hlY2sgYmVjYXVzZSBj
b2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KCkgZmlyZXMgYSBNdXRhdGlvbkV2
ZW50LgotICAgIGNoZWNrUmVwbGFjZUNoaWxkKG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCwgZWMp
OwotICAgIGlmIChlYykKKyAgICBpZiAoIWNoZWNrUmVwbGFjZUNoaWxkKHRoaXMsIG5ld0NoaWxk
LmdldCgpLCBvbGRDaGlsZCwgZWMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIHRoaXMp
OwpAQCAtNTYwLDggKzYyNSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFz
c1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgZWMgPSAw
OwogCiAgICAgLy8gTWFrZSBzdXJlIGFkZGluZyB0aGUgbmV3IGNoaWxkIGlzIG9rCi0gICAgY2hl
Y2tBZGRDaGlsZChuZXdDaGlsZC5nZXQoKSwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoIWNo
ZWNrQWRkQ2hpbGQodGhpcywgbmV3Q2hpbGQuZ2V0KCksIGVjKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKG5ld0NoaWxkID09IG1fbGFzdENoaWxkKSAvLyBub3RoaW5nIHRvIGRv
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJhMWU1NDdjMGM5N2MwNTc2OTBmODNiOGFlMDA0NGNm
OWUzMDljMzQuLjRlMjY3MTYxMTIyMGQzZmJmNzcyMGEwOGRjNGQ3OTUzZGExZTUwZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC03MzIsNiArNzMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbm9k
ZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChDb250YWluZXJOb2RlKik7CiAgICAgLy8gbm9kZVdpbGxC
ZVJlbW92ZWQgaXMgb25seSBzYWZlIHdoZW4gcmVtb3Zpbmcgb25lIG5vZGUgYXQgYSB0aW1lLgog
ICAgIHZvaWQgbm9kZVdpbGxCZVJlbW92ZWQoTm9kZSopOworICAgIGJvb2wgY2FuUmVwbGFjZUNo
aWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CiAKICAgICB2b2lkIHRleHRJbnNl
cnRlZChOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZvaWQg
dGV4dFJlbW92ZWQoTm9kZSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKQEAg
LTExOTYsNyArMTE5Nyw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlw
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBj
b25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7
Ci0gICAgdmlydHVhbCBib29sIGNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSog
b2xkQ2hpbGQpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGNjMDM4OTgwZmMzNTA0ODAwMWQ3
MjBkNmUzY2NiY2VjYzcxOWU5NDUuLmVhNzc0N2E3OGViNGRlYzQ1Nzc3MmJiNGI2M2I3NjU3N2M2
MWNhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTExNTIsODIgKzExNTIsNiBAQCB2b2lkIE5vZGU6
OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICAvLyBBdHRyaWJ1dGUtc3BlY2lmaWMgY2hlY2tzIGFyZSBpbiBBdHRyOjpzZXRQ
cmVmaXgoKS4KIH0KIAotc3RhdGljIGJvb2wgaXNDaGlsZFR5cGVBbGxvd2VkKE5vZGUqIG5ld1Bh
cmVudCwgTm9kZSogY2hpbGQpCi17Ci0gICAgaWYgKGNoaWxkLT5ub2RlVHlwZSgpICE9IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpIHsKLSAgICAgICAgaWYgKCFuZXdQYXJlbnQtPmNoaWxk
VHlwZUFsbG93ZWQoY2hpbGQtPm5vZGVUeXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChOb2RlICpuID0g
Y2hpbGQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKCFuZXdQYXJlbnQtPmNoaWxkVHlwZUFsbG93ZWQobi0+bm9kZVR5cGUoKSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE5v
ZGU6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSopCi17Ci0gICAgcmV0dXJu
IGlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlzLCBuZXdDaGlsZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNo
ZWNrQWNjZXB0Q2hpbGQoTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgLy8gTm90IG1lbnRpb25lZCBpbiBzcGVjOiB0aHJvdyBOT1RfRk9V
TkRfRVJSIGlmIG5ld0NoaWxkIGlzIG51bGwKLSAgICBpZiAoIW5ld0NoaWxkKSB7Ci0gICAgICAg
IGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBp
ZiAobmV3UGFyZW50LT5pc1JlYWRPbmx5Tm9kZSgpKSB7Ci0gICAgICAgIGVjID0gTk9fTU9ESUZJ
Q0FUSU9OX0FMTE9XRURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5l
d0NoaWxkLT5pbkRvY3VtZW50KCkgJiYgbmV3Q2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9D
VU1FTlRfVFlQRV9OT0RFKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBS
YWlzZWQgaWYgdGhpcyBub2RlIGlzIG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90IGFsbG93IGNoaWxk
cmVuIG9mIHRoZSB0eXBlIG9mIHRoZQotICAgIC8vIG5ld0NoaWxkIG5vZGUsIG9yIGlmIHRoZSBu
b2RlIHRvIGFwcGVuZCBpcyBvbmUgb2YgdGhpcyBub2RlJ3MgYW5jZXN0b3JzLgotCi0gICAgaWYg
KG5ld0NoaWxkLT5jb250YWlucyhuZXdQYXJlbnQpKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIE5vZGU6OmNo
ZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgaWYgKCFvbGRDaGlsZCkgewotICAgICAgICBlYyA9IE5PVF9GT1VO
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjaGVja0FjY2VwdENoaWxkKHRo
aXMsIG5ld0NoaWxkLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoIWNhblJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpKSB7Ci0gICAgICAgIGVjID0g
SElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lk
IE5vZGU6OmNoZWNrQWRkQ2hpbGQoTm9kZSAqbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIGNoZWNrQWNjZXB0Q2hpbGQodGhpcywgbmV3Q2hpbGQsIGVjKTsKLSAgICBpZiAoZWMp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWlzQ2hpbGRUeXBlQWxsb3dlZCh0aGlz
LCBuZXdDaGlsZCkpIHsKLSAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIGJvb2wgTm9kZTo6aXNEZXNjZW5kYW50T2YoY29uc3Qg
Tm9kZSAqb3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYgb3RoZXIgaXMgYW4g
YW5jZXN0b3Igb2YgdGhpcywgb3RoZXJ3aXNlIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MWJhM2Iy
MjFhOTJiNDMxZjM2YjI0NjM5NDQzNmZjOTkwZGY4ZDM5Li42NTkzZjc4ZTIyYTVhZDIxM2FiMTI4
MjZkOTk3NWRmMjI1ODhiMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQ1Niw2ICs0NTYsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5v
ZGVUeXBlKCkgPT0gRU5USVRZX1JFRkVSRU5DRV9OT0RFOyB9CisgICAgYm9vbCBpc0RvY3VtZW50
VHlwZU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9E
RTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29uc3Q7CiAg
ICAgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKQEAgLTQ4OSwxMyArNDkw
LDYgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSopIGNvbnN0OwogICAg
IGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oTm9kZSopOwogCi0gICAgLy8gVGhpcyBt
ZXRob2QgaXMgdXNlZCB0byBkbyBzdHJpY3QgZXJyb3ItY2hlY2tpbmcgd2hlbiBhZGRpbmcgY2hp
bGRyZW4gdmlhCi0gICAgLy8gdGhlIHB1YmxpYyBET00gQVBJIChlLmcuLCBhcHBlbmRDaGlsZCgp
KS4KLSAgICB2b2lkIGNoZWNrQWRkQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUm
KTsgLy8gRXJyb3ItY2hlY2tpbmcgd2hlbiBhZGRpbmcgdmlhIHRoZSBET00gQVBJCi0KLSAgICB2
b2lkIGNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3
Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKLSAgICAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB3
aGV0aGVyIHJhbmdlIG9mZnNldHMgdXNlIGNoYXJhY3RlcnMgb3Igbm9kZSBpbmRpY2VzLgogICAg
IHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25zdDsKICAgICAvLyBOdW1iZXIg
b2YgRE9NIDE2LWJpdCB1bml0cyBjb250YWluZWQgaW4gbm9kZS4gTm90ZSB0aGF0IHJlbmRlcmVk
IHRleHQgbGVuZ3RoIGNhbiBiZSBkaWZmZXJlbnQgLSBlLmcuIGJlY2F1c2Ugb2YK
</data>

          </attachment>
      

    </bug>

</bugzilla>