<?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>110547</bug_id>
          
          <creation_ts>2013-02-21 19:56:30 -0800</creation_ts>
          <short_desc>Free up background parser&apos;s checkpoints when speculation succeeds</short_desc>
          <delta_ts>2013-03-14 02:35:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>112069</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>112170</dependson>
          <blocked>111645</blocked>
    
    <blocked>111893</blocked>
    
    <blocked>112069</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>839159</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-21 19:56:30 -0800</bug_when>
    <thetext>When speculation fails, we send a resumeFrom message to the background thread parser which causes it to free up all its checkpoints. We should send a message when speculation succeeds so that it can free up memory used for previous checkpoints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847472</commentid>
    <comment_count>1</comment_count>
      <attachid>191440</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-05 02:14:07 -0800</bug_when>
    <thetext>Created attachment 191440
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847473</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-05 02:14:38 -0800</bug_when>
    <thetext>I&apos;m not even sure that compiles yet (my laptop is slow).  But I welcome your feedback.  I&apos;m likely to go to sleep before finishing it tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847493</commentid>
    <comment_count>3</comment_count>
      <attachid>191448</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-05 02:52:43 -0800</bug_when>
    <thetext>Created attachment 191448
Builds, but crashes fast/preloader tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847495</commentid>
    <comment_count>4</comment_count>
      <attachid>191448</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-05 02:53:13 -0800</bug_when>
    <thetext>Comment on attachment 191448
Builds, but crashes fast/preloader tests

Old habits. :)  Didn&apos;t mean to mark for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847530</commentid>
    <comment_count>5</comment_count>
      <attachid>191458</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-05 03:50:09 -0800</bug_when>
    <thetext>Created attachment 191458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847538</commentid>
    <comment_count>6</comment_count>
      <attachid>191458</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-05 04:07:28 -0800</bug_when>
    <thetext>Comment on attachment 191458
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        pages, as we will no longer hold multiple copies of every
&gt; +        source byte during the whole parse.

This is slightly misleading, as this is really only letting go of one copy.  The m_segments and m_checkpoint.input hold onto refcounted StringImpls, so there is just one shared copy which we&apos;re now releasing earlier.  I expect this will only effect particularly large loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849762</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-06 22:55:50 -0800</bug_when>
    <thetext>I believe this patch is ready for review and landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849794</commentid>
    <comment_count>8</comment_count>
      <attachid>191458</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-03-06 23:45:18 -0800</bug_when>
    <thetext>Comment on attachment 191458
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        Many LayoutTests exercise this code path, and I&apos;ve manually (debugger and printf)

I think you&apos;re missing the word &quot;verified&quot; in this sentence.

&gt; Source/WebCore/html/parser/BackgroundHTMLInputStream.cpp:58
&gt; +    const Checkpoint&amp; checkpoint = m_checkpoints[checkpointIndex];

Would it make sense to assert the invariant checkpointIndex &lt; m_checkpoints.size() in this function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849810</commentid>
    <comment_count>9</comment_count>
      <attachid>191458</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-07 00:06:31 -0800</bug_when>
    <thetext>Comment on attachment 191458
Patch

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

I should look at this again when I&apos;m less tired.  It&apos;s not as beautiful as I had hoped.

&gt; Source/WebCore/html/parser/BackgroundHTMLInputStream.cpp:60
&gt; +    for (size_t i = 0; i &lt; checkpoint.numberOfSegmentsAlreadyAppended; ++i)
&gt; +        m_segments[i] = String();

Does this work correctly in the case where there are multiple checkpoints per append?  Probably.

Also, this algorithm is n^2.  Should we keep some state for the smallest index that has actual data and start the loop from there?

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:462
&gt; +        checkpointIndex = std::max(chunk-&gt;inputCheckpoint, checkpointIndex);

Why is this needed?

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:470
&gt; +        // Processing a chunk can call document.write, causing us to invalidate any remaining speculations.
&gt; +        // Similarly, if we&apos;re stopped just abort and don&apos;t bother to tell the parser about passing this checkpoint.
&gt; +        if (m_speculations.isEmpty() || isStopped()) {
&gt; +            checkpointIndex = 0;
&gt; +            break;
&gt; +        }

This is pretty ugly....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851344</commentid>
    <comment_count>10</comment_count>
      <attachid>191458</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-08 11:16:28 -0800</bug_when>
    <thetext>Comment on attachment 191458
Patch

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

I realize my complaints below are mostly aesthetic...

&gt; Source/WebCore/html/parser/BackgroundHTMLInputStream.cpp:56
&gt; +void BackgroundHTMLInputStream::releaseDataUpThroughCheckpoint(HTMLInputCheckpoint checkpointIndex)

invalidateCheckpointsBefore ?

&gt;&gt; Source/WebCore/html/parser/BackgroundHTMLInputStream.cpp:58
&gt;&gt; +    const Checkpoint&amp; checkpoint = m_checkpoints[checkpointIndex];
&gt; 
&gt; Would it make sense to assert the invariant checkpointIndex &lt; m_checkpoints.size() in this function?

We should ASSERT that checkpoint hasn&apos;t been invalidated yet.

&gt;&gt; Source/WebCore/html/parser/BackgroundHTMLInputStream.cpp:60
&gt;&gt; +        m_segments[i] = String();
&gt; 
&gt; Does this work correctly in the case where there are multiple checkpoints per append?  Probably.
&gt; 
&gt; Also, this algorithm is n^2.  Should we keep some state for the smallest index that has actual data and start the loop from there?

Please fix the n^2 issue.

&gt;&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:470
&gt;&gt; +        // Processing a chunk can call document.write, causing us to invalidate any remaining speculations.
&gt;&gt; +        // Similarly, if we&apos;re stopped just abort and don&apos;t bother to tell the parser about passing this checkpoint.
&gt;&gt; +        if (m_speculations.isEmpty() || isStopped()) {
&gt;&gt; +            checkpointIndex = 0;
&gt;&gt; +            break;
&gt;&gt; +        }
&gt; 
&gt; This is pretty ugly....

There must be a way to structure this code so that it&apos;s less subtle.  Maybe we should do this work in validateSpeculations instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851362</commentid>
    <comment_count>11</comment_count>
      <attachid>191458</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 11:36:18 -0800</bug_when>
    <thetext>Comment on attachment 191458
Patch

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

&gt;&gt; Source/WebCore/html/parser/BackgroundHTMLInputStream.cpp:56
&gt;&gt; +void BackgroundHTMLInputStream::releaseDataUpThroughCheckpoint(HTMLInputCheckpoint checkpointIndex)
&gt; 
&gt; invalidateCheckpointsBefore ?

Happy to name it whatever.  The tricky part for me was that it&apos;s inclusive of the checkpoint you pass it invalidateCheckpointsUntil(checkpoint)?

&gt;&gt;&gt; Source/WebCore/html/parser/BackgroundHTMLInputStream.cpp:60
&gt;&gt;&gt; +        m_segments[i] = String();
&gt;&gt; 
&gt;&gt; Does this work correctly in the case where there are multiple checkpoints per append?  Probably.
&gt;&gt; 
&gt;&gt; Also, this algorithm is n^2.  Should we keep some state for the smallest index that has actual data and start the loop from there?
&gt; 
&gt; Please fix the n^2 issue.

OK.  I&apos;ll keep a m_lastInvalidSegment or similar.

&gt;&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:462
&gt;&gt; +        checkpointIndex = std::max(chunk-&gt;inputCheckpoint, checkpointIndex);
&gt; 
&gt; Why is this needed?

Since we can assume the chunks have checkpoints in ascending order, it&apos;s not.  We just need the last one.

&gt;&gt;&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:470
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; This is pretty ugly....
&gt; 
&gt; There must be a way to structure this code so that it&apos;s less subtle.  Maybe we should do this work in validateSpeculations instead?

We need to know when the chunk is processed.  I&apos;ll have to check when validateSpeculations is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851548</commentid>
    <comment_count>12</comment_count>
      <attachid>192294</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 15:16:24 -0800</bug_when>
    <thetext>Created attachment 192294
Hopefully addressed Adam&apos;s concerns</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851552</commentid>
    <comment_count>13</comment_count>
      <attachid>192294</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-08 15:21:02 -0800</bug_when>
    <thetext>Comment on attachment 192294
Hopefully addressed Adam&apos;s concerns

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

I can&apos;t tell if you changed HTMLDocumentParser::pumpPendingSpeculations or if I&apos;ve just read it enough times to understand what it&apos;s doing.  :)

&gt; Source/WebCore/html/parser/BackgroundHTMLInputStream.h:72
&gt; +    // Note: These indicies may === vector.size(), in which case there are no valid checkpoints/segments at this time.

===   -&gt;    ==

(Triple-equals is JavaScript silliness.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851553</commentid>
    <comment_count>14</comment_count>
      <attachid>192294</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-08 15:22:36 -0800</bug_when>
    <thetext>Comment on attachment 192294
Hopefully addressed Adam&apos;s concerns

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

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:484
&gt; +        HTMLParserThread::shared()-&gt;postTask(bind(&amp;BackgroundHTMLParser::passedCheckpoint, m_backgroundParser, lastCheckpointPassed));

The only problem with this patch is that we&apos;ll never call passedCheckpoint if we never call pumpPendingSpeculations.  We only call pumpPendingSpeculations if we ended up queuing speculations.  It&apos;s entirely possible that we can process every chunk from the background parser immediately after receiving them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851560</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 15:27:51 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 192294 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192294&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:484
&gt; &gt; +        HTMLParserThread::shared()-&gt;postTask(bind(&amp;BackgroundHTMLParser::passedCheckpoint, m_backgroundParser, lastCheckpointPassed));
&gt; 
&gt; The only problem with this patch is that we&apos;ll never call passedCheckpoint if we never call pumpPendingSpeculations.  We only call pumpPendingSpeculations if we ended up queuing speculations.  It&apos;s entirely possible that we can process every chunk from the background parser immediately after receiving them.

That&apos;s true.  I&apos;m not sure if I should do that in a follow-up, or go another round with this one.  I&apos;m open to either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851561</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 15:29:04 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 192294 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192294&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:484
&gt; &gt; &gt; +        HTMLParserThread::shared()-&gt;postTask(bind(&amp;BackgroundHTMLParser::passedCheckpoint, m_backgroundParser, lastCheckpointPassed));
&gt; &gt; 
&gt; &gt; The only problem with this patch is that we&apos;ll never call passedCheckpoint if we never call pumpPendingSpeculations.  We only call pumpPendingSpeculations if we ended up queuing speculations.  It&apos;s entirely possible that we can process every chunk from the background parser immediately after receiving them.
&gt; 
&gt; That&apos;s true.  I&apos;m not sure if I should do that in a follow-up, or go another round with this one.  I&apos;m open to either.

It seems inefficient to tell the background parser to release a chunk after each chunk.  But maybe I&apos;m optimizing prematurely.  I have no data to suggest that messaging is expensive at all. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851565</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-08 15:32:14 -0800</bug_when>
    <thetext>Followup patch is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851570</commentid>
    <comment_count>18</comment_count>
      <attachid>192294</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 15:41:32 -0800</bug_when>
    <thetext>Comment on attachment 192294
Hopefully addressed Adam&apos;s concerns

Clearing flags on attachment: 192294

Committed r145277: &lt;http://trac.webkit.org/changeset/145277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851571</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 15:41:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852895</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 17:08:50 -0700</bug_when>
    <thetext>This work continued in bug 112069.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853636</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 11:12:05 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 112170</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855086</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-14 02:35:20 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 112069 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191440</attachid>
            <date>2013-03-05 02:14:07 -0800</date>
            <delta_ts>2013-03-05 02:52:41 -0800</delta_ts>
            <desc>wip</desc>
            <filename>bug-110547-20130305021026.patch</filename>
            <type>text/plain</type>
            <size>6845</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNmMjNkZmEzNjk1NWVi
NDAwN2MzMzIzNThiNzM0MDQ4MDhmZWY5MC4uYWJiNDJhYjMxMDI4NmQ1NmRiN2U4MjQ0YjBmZDgz
MGI0ZWMwNWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTA1ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBGcmVlIHVwIGJhY2tncm91bmQg
cGFyc2VyJ3MgY2hlY2twb2ludHMgd2hlbiBzcGVjdWxhdGlvbiBzdWNjZWVkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJlbGVhc2VE
YXRhVXBUaHJvdWdoQ2hlY2twb2ludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmg6CisgICAgICAgIChCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtKToKKyAgICAgICAgKENoZWNrcG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Q2hlY2twb2ludDo6aXNOdWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkNoZWNrcG9pbnQ6OmNs
ZWFyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cGFzc2VkQ2hlY2twb2ludCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TFBhcnNlci5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKToKKwogMjAxMy0wMy0wNSAg
TWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRh
bnQgY29kZSBpbiBEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAKaW5kZXggMWMzZmJjNGEzM2U5YjVmNWRhM2U0MzBkN2MzOTFiMzIyZjExZDc4NS4uMzk4MTVi
YzFlYmVlMzU3ZDI5NDc1YTAzMjdjYzE3ZWIwYTQwODAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAKQEAg
LTUzLDIwICs1MywzMyBAQCBIVE1MSW5wdXRDaGVja3BvaW50IEJhY2tncm91bmRIVE1MSW5wdXRT
dHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQoKQogICAgIHJldHVybiBjaGVja3BvaW50OwogfQogCit2
b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJlbGVhc2VEYXRhVXBUaHJvdWdoQ2hlY2tw
b2ludChIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBjb25zdCBD
aGVja3BvaW50JiBjaGVja3BvaW50ID0gbV9jaGVja3BvaW50c1tjaGVja3BvaW50SW5kZXhdOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxy
ZWFkeUFwcGVuZGVkOyArK2kpCisgICAgICAgIG1fc2VnbWVudHNbaV0uY2xlYXIoKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDw9IGNoZWNrcG9pbnRJbmRleDsgKytpKQorICAgICAgICBt
X2NoZWNrcG9pbnRzW2ldLmNsZWFyKCk7Cit9CisKIHZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0
cmVhbTo6cmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgsIGNvbnN0
IFN0cmluZyYgdW5wYXJzZWRJbnB1dCkKIHsKICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4IDwg
bV9jaGVja3BvaW50cy5zaXplKCkpOyAvLyBJZiB0aGlzIEFTU0VSVCBmaXJlcywgY2hlY2twb2lu
dEluZGV4IGlzIGludmFsaWQuCiAgICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2ludCA9IG1f
Y2hlY2twb2ludHNbY2hlY2twb2ludEluZGV4XTsKKyAgICBBU1NFUlQoIWNoZWNrcG9pbnQuaXNO
dWxsKCkpOwogCiAgICAgYm9vbCBpc0Nsb3NlZCA9IG1fY3VycmVudC5pc0Nsb3NlZCgpOwogCiAg
ICAgbV9jdXJyZW50ID0gY2hlY2twb2ludC5pbnB1dDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSBj
aGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRz
LnNpemUoKTsgKytpKQotICAgICAgICBtX2N1cnJlbnQuYXBwZW5kKFNlZ21lbnRlZFN0cmluZyht
X3NlZ21lbnRzW2ldKSk7CisgICAgZm9yIChzaXplX3QgaSA9IGNoZWNrcG9pbnQubnVtYmVyT2ZT
ZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3NlZ21lbnRzW2ldLmlzTnVsbCgpKTsKKyAgICAgICAgbV9jdXJyZW50
LmFwcGVuZChtX3NlZ21lbnRzW2ldKTsKKyAgICB9CiAKICAgICBpZiAoIXVucGFyc2VkSW5wdXQu
aXNFbXB0eSgpKQotICAgICAgICBtX2N1cnJlbnQucHJlcGVuZChTZWdtZW50ZWRTdHJpbmcodW5w
YXJzZWRJbnB1dCkpOworICAgICAgICBtX2N1cnJlbnQucHJlcGVuZCh1bnBhcnNlZElucHV0KTsK
IAogICAgIGlmIChpc0Nsb3NlZCAmJiAhbV9jdXJyZW50LmlzQ2xvc2VkKCkpCiAgICAgICAgIG1f
Y3VycmVudC5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCmluZGV4IGM3MGIwNzJjZDU0MGFlMDlhNjY1NDQ3
YmRlMTY1NzI0MjdkMzMyZTguLjU4ZTU2NGVhNzU3Y2Y1ODFiNmYzNDgxZTcyMGYyZTcxYWVjMDJm
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5k
SFRNTElucHV0U3RyZWFtLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgIC8vIHBvaW50
IGFsbCBvdXRzdGFuZGluZyBjaGVja3BvaW50cyBhcmUgaW52YWxpZGF0ZWQuCiAgICAgSFRNTElu
cHV0Q2hlY2twb2ludCBjcmVhdGVDaGVja3BvaW50KCk7CiAgICAgdm9pZCByZXdpbmRUbyhIVE1M
SW5wdXRDaGVja3BvaW50LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpOworICAgIC8vIHJl
bGVhc2VEYXRhVXBUaHJvdWdoQ2hlY2twb2ludCBjbGVhcnMgYWxsIGNoZWNrcG9pbnRzIHByaW9y
LXRvIGFuZCBpbmNsdWRpbmcgdGhpcyBvbmUuCisgICAgdm9pZCByZWxlYXNlRGF0YVVwVGhyb3Vn
aENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCk7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0
IENoZWNrcG9pbnQgewpAQCAtNTcsNiArNTksMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICBTZWdt
ZW50ZWRTdHJpbmcgaW5wdXQ7CiAgICAgICAgIHNpemVfdCBudW1iZXJPZlNlZ21lbnRzQWxyZWFk
eUFwcGVuZGVkOworCisjaWZuZGVmIE5ERUJVRworICAgICAgICB2b2lkIGlzTnVsbCgpIHsgcmV0
dXJuIGlucHV0LmlzRW1wdHkoKSAmJiAhbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsg
fQorI2VuZGlmCisgICAgICAgIHZvaWQgY2xlYXIoKSB7IGlucHV0LmNsZWFyKCk7IG51bWJlck9m
U2VnbWVudHNBbHJlYWR5QXBwZW5kZWQgPSAwOyB9CiAgICAgfTsKIAogICAgIFNlZ21lbnRlZFN0
cmluZyBtX2N1cnJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggNWExZGI0ZGMzNDQ4MDY3Yjk2NDJhMWNlZjViYzUw
MWUyMGE5MGQ4NC4uNGI0YTlmM2IzZTc4ZDUxM2ZkOTI2MWYxMGM4NWUxOWNkNDdiZTQzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2Vy
LmNwcApAQCAtMTYxLDYgKzE2MSwxMyBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpyZXN1
bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4gY2hlY2twb2ludCkKICAgICBwdW1wVG9rZW5p
emVyKCk7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENoZWNrcG9pbnQo
SFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgLy8gTm90ZSwgd2Ug
c2hvdWxkIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBpbmRleCBiZWluZyBpbnZhbGlkCisg
ICAgLy8gYXMgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgd2lsbCBiZSBwcm9jZXNzZWQg
aW4gRklGTyBvcmRlci4KKyAgICBtX2lucHV0LnJlbGVhc2VEYXRhVXBUaHJvdWdoQ2hlY2twb2lu
dChpbnB1dENoZWNrcG9pbnQpOworfQorCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpmaW5p
c2goKQogewogICAgIG1hcmtFbmRPZkZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCmluZGV4IDY1YWJiNjM1OTVlZGM3ZWUxMTBk
YjlmYmE1MTBmMjc3NTI4ODYyZjcuLjI5MTAwZGQ3NDE1OTVlMjAxNDkzYzVlY2YyNWU3ZjI3NjNm
YTg0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhU
TUxQYXJzZXIuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlc3VtZUZyb20oUGFzc093blB0cjxDaGVja3BvaW50
Pik7CisgICAgdm9pZCBwYXNzZWRDaGVja3BvaW50KEhUTUxJbnB1dENoZWNrcG9pbnQpOwogICAg
IHZvaWQgZmluaXNoKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDVlMzQxM2M5MWJlODRl
MmZjN2ZmMGRkMTY2OTdlMmU5Y2I2MDQyODUuLmE0MDUxZDMwZjNjMmQwZTU0YWQwNjFlYzhmMGM3
ZDQxMDgxZDhkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtNDU1LDggKzQ1NSwxMiBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKQogCiAgICAgZG91YmxlIHN0YXJ0VGltZSA9
IGN1cnJlbnRUaW1lKCk7CiAKKyAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRl
eCA9IDA7CisKICAgICB3aGlsZSAoIW1fc3BlY3VsYXRpb25zLmlzRW1wdHkoKSkgewotICAgICAg
ICBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihtX3NwZWN1bGF0aW9ucy50
YWtlRmlyc3QoKSk7CisgICAgICAgIE93blB0cjxQYXJzZWRDaHVuaz4gY2h1bmsgPSBtX3NwZWN1
bGF0aW9ucy50YWtlRmlyc3QoKTsKKyAgICAgICAgY2hlY2twb2ludEluZGV4ID0gc3RkOjptYXgo
Y2h1bmstPmlucHV0Q2hlY2twb2ludCwgY2hlY2twb2ludEluZGV4KTsKKyAgICAgICAgcHJvY2Vz
c1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoY2h1bmsucmVsZWFzZSgpKTsKIAogICAg
ICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpIHx8IGlzU3RvcHBlZCgpKQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC00NjcsNiArNDcxLDkgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1
bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChjaGVj
a3BvaW50SW5kZXgpCisgICAgICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFz
ayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cGFzc2VkQ2hlY2twb2ludCwgbV9iYWNrZ3Jv
dW5kUGFyc2VyLCBjaGVja3BvaW50SW5kZXgpKTsKKwogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191448</attachid>
            <date>2013-03-05 02:52:43 -0800</date>
            <delta_ts>2013-03-05 03:50:06 -0800</delta_ts>
            <desc>Builds, but crashes fast/preloader tests</desc>
            <filename>bug-110547-20130305024903.patch</filename>
            <type>text/plain</type>
            <size>6695</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNmMjNkZmEzNjk1NWVi
NDAwN2MzMzIzNThiNzM0MDQ4MDhmZWY5MC4uYWJiNDJhYjMxMDI4NmQ1NmRiN2U4MjQ0YjBmZDgz
MGI0ZWMwNWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTA1ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBGcmVlIHVwIGJhY2tncm91bmQg
cGFyc2VyJ3MgY2hlY2twb2ludHMgd2hlbiBzcGVjdWxhdGlvbiBzdWNjZWVkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJlbGVhc2VE
YXRhVXBUaHJvdWdoQ2hlY2twb2ludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmg6CisgICAgICAgIChCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtKToKKyAgICAgICAgKENoZWNrcG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Q2hlY2twb2ludDo6aXNOdWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkNoZWNrcG9pbnQ6OmNs
ZWFyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cGFzc2VkQ2hlY2twb2ludCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TFBhcnNlci5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKToKKwogMjAxMy0wMy0wNSAg
TWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRh
bnQgY29kZSBpbiBEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAKaW5kZXggMWMzZmJjNGEzM2U5YjVmNWRhM2U0MzBkN2MzOTFiMzIyZjExZDc4NS4uZmU1Nzcx
NjgwMGI0ZmIwYTY3NTRjNGU5ZTdjMzc3ODlmNzUyYmVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAKQEAg
LTUzLDE3ICs1MywzMCBAQCBIVE1MSW5wdXRDaGVja3BvaW50IEJhY2tncm91bmRIVE1MSW5wdXRT
dHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQoKQogICAgIHJldHVybiBjaGVja3BvaW50OwogfQogCit2
b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJlbGVhc2VEYXRhVXBUaHJvdWdoQ2hlY2tw
b2ludChIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleCkKK3sKKyAgICBjb25zdCBD
aGVja3BvaW50JiBjaGVja3BvaW50ID0gbV9jaGVja3BvaW50c1tjaGVja3BvaW50SW5kZXhdOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxy
ZWFkeUFwcGVuZGVkOyArK2kpCisgICAgICAgIG1fc2VnbWVudHNbaV0gPSBTdHJpbmcoKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDw9IGNoZWNrcG9pbnRJbmRleDsgKytpKQorICAgICAg
ICBtX2NoZWNrcG9pbnRzW2ldLmNsZWFyKCk7Cit9CisKIHZvaWQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6cmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgsIGNv
bnN0IFN0cmluZyYgdW5wYXJzZWRJbnB1dCkKIHsKICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4
IDwgbV9jaGVja3BvaW50cy5zaXplKCkpOyAvLyBJZiB0aGlzIEFTU0VSVCBmaXJlcywgY2hlY2tw
b2ludEluZGV4IGlzIGludmFsaWQuCiAgICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2ludCA9
IG1fY2hlY2twb2ludHNbY2hlY2twb2ludEluZGV4XTsKKyAgICBBU1NFUlQoIWNoZWNrcG9pbnQu
aXNOdWxsKCkpOwogCiAgICAgYm9vbCBpc0Nsb3NlZCA9IG1fY3VycmVudC5pc0Nsb3NlZCgpOwog
CiAgICAgbV9jdXJyZW50ID0gY2hlY2twb2ludC5pbnB1dDsKIAotICAgIGZvciAoc2l6ZV90IGkg
PSBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7IGkgPCBtX3NlZ21l
bnRzLnNpemUoKTsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSBjaGVja3BvaW50Lm51bWJlck9m
U2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIEFTU0VSVCghbV9zZWdtZW50c1tpXS5pc051bGwoKSk7CiAgICAgICAgIG1fY3VycmVu
dC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKG1fc2VnbWVudHNbaV0pKTsKKyAgICB9CiAKICAgICBp
ZiAoIXVucGFyc2VkSW5wdXQuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnQucHJlcGVuZChT
ZWdtZW50ZWRTdHJpbmcodW5wYXJzZWRJbnB1dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCmluZGV4IGM3MGIwNzJj
ZDU0MGFlMDlhNjY1NDQ3YmRlMTY1NzI0MjdkMzMyZTguLjg5MGYzMjYyZDJhOGQzMWUzZmNlMDQ5
MGY0NjJlMjc0YWNkNTlhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGlj
OgogICAgIC8vIHBvaW50IGFsbCBvdXRzdGFuZGluZyBjaGVja3BvaW50cyBhcmUgaW52YWxpZGF0
ZWQuCiAgICAgSFRNTElucHV0Q2hlY2twb2ludCBjcmVhdGVDaGVja3BvaW50KCk7CiAgICAgdm9p
ZCByZXdpbmRUbyhIVE1MSW5wdXRDaGVja3BvaW50LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5w
dXQpOworICAgIC8vIHJlbGVhc2VEYXRhVXBUaHJvdWdoQ2hlY2twb2ludCBjbGVhcnMgYWxsIGNo
ZWNrcG9pbnRzIHByaW9yLXRvIGFuZCBpbmNsdWRpbmcgdGhpcyBvbmUuCisgICAgdm9pZCByZWxl
YXNlRGF0YVVwVGhyb3VnaENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCk7CiAKIHByaXZh
dGU6CiAgICAgc3RydWN0IENoZWNrcG9pbnQgewpAQCAtNTcsNiArNTksMTEgQEAgcHJpdmF0ZToK
IAogICAgICAgICBTZWdtZW50ZWRTdHJpbmcgaW5wdXQ7CiAgICAgICAgIHNpemVfdCBudW1iZXJP
ZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworCisjaWZuZGVmIE5ERUJVRworICAgICAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGlucHV0LmlzRW1wdHkoKSAmJiAhbnVtYmVyT2ZTZWdt
ZW50c0FscmVhZHlBcHBlbmRlZDsgfQorI2VuZGlmCisgICAgICAgIHZvaWQgY2xlYXIoKSB7IGlu
cHV0LmNsZWFyKCk7IG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQgPSAwOyB9CiAgICAg
fTsKIAogICAgIFNlZ21lbnRlZFN0cmluZyBtX2N1cnJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggNWExZGI0ZGMz
NDQ4MDY3Yjk2NDJhMWNlZjViYzUwMWUyMGE5MGQ4NC4uMzYzOGFlNGIwYzcwM2ZkOWY1NGE0NmM2
YjQ3YTAxZTc0N2NlYzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApAQCAtMTYxLDYgKzE2MSwxMyBAQCB2b2lkIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4gY2hlY2tw
b2ludCkKICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxQYXJz
ZXI6OnBhc3NlZENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQp
Cit7CisgICAgLy8gTm90ZSwgd2Ugc2hvdWxkIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBp
bmRleCBiZWluZyBpbnZhbGlkCisgICAgLy8gYXMgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbiB0aHJl
YWQgd2lsbCBiZSBwcm9jZXNzZWQgaW4gRklGTyBvcmRlci4KKyAgICBtX2lucHV0LnJlbGVhc2VE
YXRhVXBUaHJvdWdoQ2hlY2twb2ludChpbnB1dENoZWNrcG9pbnQpOworfQorCiB2b2lkIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjpmaW5pc2goKQogewogICAgIG1hcmtFbmRPZkZpbGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCmluZGV4
IDY1YWJiNjM1OTVlZGM3ZWUxMTBkYjlmYmE1MTBmMjc3NTI4ODYyZjcuLjI5MTAwZGQ3NDE1OTVl
MjAxNDkzYzVlY2YyNWU3ZjI3NjNmYTg0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlc3VtZUZyb20o
UGFzc093blB0cjxDaGVja3BvaW50Pik7CisgICAgdm9pZCBwYXNzZWRDaGVja3BvaW50KEhUTUxJ
bnB1dENoZWNrcG9pbnQpOwogICAgIHZvaWQgZmluaXNoKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDVlMzQxM2M5MWJlODRlMmZjN2ZmMGRkMTY2OTdlMmU5Y2I2MDQyODUuLmE0MDUxZDMw
ZjNjMmQwZTU0YWQwNjFlYzhmMGM3ZDQxMDgxZDhkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDU1LDggKzQ1NSwxMiBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKQogCiAg
ICAgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKKyAgICBIVE1MSW5wdXRDaGVj
a3BvaW50IGNoZWNrcG9pbnRJbmRleCA9IDA7CisKICAgICB3aGlsZSAoIW1fc3BlY3VsYXRpb25z
LmlzRW1wdHkoKSkgewotICAgICAgICBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBh
cnNlcihtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKSk7CisgICAgICAgIE93blB0cjxQYXJzZWRD
aHVuaz4gY2h1bmsgPSBtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKTsKKyAgICAgICAgY2hlY2tw
b2ludEluZGV4ID0gc3RkOjptYXgoY2h1bmstPmlucHV0Q2hlY2twb2ludCwgY2hlY2twb2ludElu
ZGV4KTsKKyAgICAgICAgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoY2h1
bmsucmVsZWFzZSgpKTsKIAogICAgICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpIHx8IGlz
U3RvcHBlZCgpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NjcsNiArNDcxLDkgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICAgICAgfQog
ICAgIH0KIAorICAgIGlmIChjaGVja3BvaW50SW5kZXgpCisgICAgICAgIEhUTUxQYXJzZXJUaHJl
YWQ6OnNoYXJlZCgpLT5wb3N0VGFzayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cGFzc2Vk
Q2hlY2twb2ludCwgbV9iYWNrZ3JvdW5kUGFyc2VyLCBjaGVja3BvaW50SW5kZXgpKTsKKwogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51bWJl
cigpLnplcm9CYXNlZEludCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191458</attachid>
            <date>2013-03-05 03:50:09 -0800</date>
            <delta_ts>2013-03-08 15:16:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110547-20130305034631.patch</filename>
            <type>text/plain</type>
            <size>7768</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNmMjNkZmEzNjk1NWVi
NDAwN2MzMzIzNThiNzM0MDQ4MDhmZWY5MC4uOGZhZjk5NWMwNzRkMjA0NmM2ODA3MjNkNmY0Mjk2
ZTk1MmI1ZjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAzLTA1ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBGcmVlIHVwIGJhY2tncm91bmQg
cGFyc2VyJ3MgY2hlY2twb2ludHMgd2hlbiBzcGVjdWxhdGlvbiBzdWNjZWVkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzaG91bGQgYmUgYSBt
ZW1vcnkgKGFuZCBwb3NzaWJsZSBwZXJmKSB3aW4gd2hpbGUgcGFyc2luZworICAgICAgICBwYWdl
cywgYXMgd2Ugd2lsbCBubyBsb25nZXIgaG9sZCBtdWx0aXBsZSBjb3BpZXMgb2YgZXZlcnkKKyAg
ICAgICAgc291cmNlIGJ5dGUgZHVyaW5nIHRoZSB3aG9sZSBwYXJzZS4KKworICAgICAgICBNYW55
IExheW91dFRlc3RzIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLCBhbmQgSSd2ZSBtYW51YWxseSAo
ZGVidWdnZXIgYW5kIHByaW50ZikKKyAgICAgICAgdGhhdCB3ZSdyZSBoaXR0aW5nIHRoaXMgY29k
ZSwgYnV0IHdlJ2xsIGhhdmUgdG8gd2FpdCBmb3IgdGhlIG1lbW9yeS9wZXJmIGJvdHMKKyAgICAg
ICAgdG8gdGVsbCB1cyBpZiB0aGlzIHNob3dzIHVwIGFzIGEgd2luLgorCisgICAgICAgIFdlIG9u
bHkgYm90aGVyIHRvIG1lc3NhZ2UgdGhlIHBhcnNlciBhdCB0aGUgZW5kIG9mIGEgc3BlY3VsYXRp
b24gY2hhaW4sIHNvIGFzIG5vdAorICAgICAgICB0byBzZW5kIHRvbyBtYW55IG1lc3NhZ2VzIHRv
IHRoZSBiYWNrZ3JvdW5kIHBhcnNlci4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MSW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6cmVsZWFzZURhdGFVcFRocm91Z2hDaGVja3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3
aW5kVG8pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0u
aDoKKyAgICAgICAgKEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAgICAgICAoQ2hlY2tw
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpDaGVj
a3BvaW50Ojppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0
cmVhbTo6Q2hlY2twb2ludDo6Y2xlYXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2Vy
OjpwYXNzZWRDaGVja3BvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAgIChCYWNrZ3JvdW5kSFRNTFBh
cnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlv
bnMpOgorCiAyMDEzLTAzLTA1ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmVtb3ZlIHJlZHVuZGFudCBjb2RlIGluIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2
ZVN0YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtLmNwcAppbmRleCAxYzNmYmM0YTMzZTliNWY1ZGEzZTQzMGQ3YzM5
MWIzMjJmMTFkNzg1Li5mZTU3NzE2ODAwYjRmYjBhNjc1NGM0ZTllN2MzNzc4OWY3NTJiZWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TElucHV0U3RyZWFtLmNwcApAQCAtNTMsMTcgKzUzLDMwIEBAIEhUTUxJbnB1dENoZWNrcG9pbnQg
QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgpCiAgICAgcmV0dXJu
IGNoZWNrcG9pbnQ7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmVsZWFz
ZURhdGFVcFRocm91Z2hDaGVja3BvaW50KEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludElu
ZGV4KQoreworICAgIGNvbnN0IENoZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRz
W2NoZWNrcG9pbnRJbmRleF07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGVja3BvaW50
Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7ICsraSkKKyAgICAgICAgbV9zZWdtZW50
c1tpXSA9IFN0cmluZygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPD0gY2hlY2twb2lu
dEluZGV4OyArK2kpCisgICAgICAgIG1fY2hlY2twb2ludHNbaV0uY2xlYXIoKTsKK30KKwogdm9p
ZCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpyZXdpbmRUbyhIVE1MSW5wdXRDaGVja3BvaW50
IGNoZWNrcG9pbnRJbmRleCwgY29uc3QgU3RyaW5nJiB1bnBhcnNlZElucHV0KQogewogICAgIEFT
U0VSVChjaGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7IC8vIElmIHRoaXMg
QVNTRVJUIGZpcmVzLCBjaGVja3BvaW50SW5kZXggaXMgaW52YWxpZC4KICAgICBjb25zdCBDaGVj
a3BvaW50JiBjaGVja3BvaW50ID0gbV9jaGVja3BvaW50c1tjaGVja3BvaW50SW5kZXhdOworICAg
IEFTU0VSVCghY2hlY2twb2ludC5pc051bGwoKSk7CiAKICAgICBib29sIGlzQ2xvc2VkID0gbV9j
dXJyZW50LmlzQ2xvc2VkKCk7CiAKICAgICBtX2N1cnJlbnQgPSBjaGVja3BvaW50LmlucHV0Owog
Ci0gICAgZm9yIChzaXplX3QgaSA9IGNoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlB
cHBlbmRlZDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9
IGNoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgaSA8IG1fc2VnbWVu
dHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFtX3NlZ21lbnRzW2ldLmlzTnVsbCgp
KTsKICAgICAgICAgbV9jdXJyZW50LmFwcGVuZChTZWdtZW50ZWRTdHJpbmcobV9zZWdtZW50c1tp
XSkpOworICAgIH0KIAogICAgIGlmICghdW5wYXJzZWRJbnB1dC5pc0VtcHR5KCkpCiAgICAgICAg
IG1fY3VycmVudC5wcmVwZW5kKFNlZ21lbnRlZFN0cmluZyh1bnBhcnNlZElucHV0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtLmgKaW5kZXggYzcwYjA3MmNkNTQwYWUwOWE2NjU0NDdiZGUxNjU3MjQyN2QzMzJlOC4uODkw
ZjMyNjJkMmE4ZDMxZTNmY2UwNDkwZjQ2MmUyNzRhY2Q1OWEyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAt
NTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNr
cG9pbnRzIGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNo
ZWNrcG9pbnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0
IFN0cmluZyYgdW5wYXJzZWRJbnB1dCk7CisgICAgLy8gcmVsZWFzZURhdGFVcFRocm91Z2hDaGVj
a3BvaW50IGNsZWFycyBhbGwgY2hlY2twb2ludHMgcHJpb3ItdG8gYW5kIGluY2x1ZGluZyB0aGlz
IG9uZS4KKyAgICB2b2lkIHJlbGVhc2VEYXRhVXBUaHJvdWdoQ2hlY2twb2ludChIVE1MSW5wdXRD
aGVja3BvaW50KTsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hlY2twb2ludCB7CkBAIC01Nyw2
ICs1OSwxMSBAQCBwcml2YXRlOgogCiAgICAgICAgIFNlZ21lbnRlZFN0cmluZyBpbnB1dDsKICAg
ICAgICAgc2l6ZV90IG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7CisKKyNpZm5kZWYg
TkRFQlVHCisgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gaW5wdXQuaXNFbXB0
eSgpICYmICFudW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyB9CisjZW5kaWYKKyAgICAg
ICAgdm9pZCBjbGVhcigpIHsgaW5wdXQuY2xlYXIoKTsgbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlB
cHBlbmRlZCA9IDA7IH0KICAgICB9OwogCiAgICAgU2VnbWVudGVkU3RyaW5nIG1fY3VycmVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2Vy
LmNwcAppbmRleCA1YTFkYjRkYzM0NDgwNjdiOTY0MmExY2VmNWJjNTAxZTIwYTkwZDg0Li4zNjM4
YWU0YjBjNzAzZmQ5ZjU0YTQ2YzZiNDdhMDFlNzQ3Y2VjMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0xNjEsNiAr
MTYxLDEzIEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnJlc3VtZUZyb20oUGFzc093blB0
cjxDaGVja3BvaW50PiBjaGVja3BvaW50KQogICAgIHB1bXBUb2tlbml6ZXIoKTsKIH0KIAordm9p
ZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cGFzc2VkQ2hlY2twb2ludChIVE1MSW5wdXRDaGVja3Bv
aW50IGlucHV0Q2hlY2twb2ludCkKK3sKKyAgICAvLyBOb3RlLCB3ZSBzaG91bGQgbm90IGhhdmUg
dG8gd29ycnkgYWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFsaWQKKyAgICAvLyBhcyBtZXNzYWdl
cyBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nlc3NlZCBpbiBGSUZPIG9yZGVyLgor
ICAgIG1faW5wdXQucmVsZWFzZURhdGFVcFRocm91Z2hDaGVja3BvaW50KGlucHV0Q2hlY2twb2lu
dCk7Cit9CisKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OmZpbmlzaCgpCiB7CiAgICAgbWFy
a0VuZE9mRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MUGFyc2VyLmgKaW5kZXggNjVhYmI2MzU5NWVkYzdlZTExMGRiOWZiYTUxMGYyNzc1Mjg4
NjJmNy4uMjkxMDBkZDc0MTU5NWUyMDE0OTNjNWVjZjI1ZTdmMjc2M2ZhODQ1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCkBAIC03
Myw2ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgcmVzdW1lRnJvbShQYXNzT3duUHRyPENoZWNrcG9pbnQ+KTsKKyAgICB2b2lkIHBh
c3NlZENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCk7CiAgICAgdm9pZCBmaW5pc2goKTsK
ICAgICB2b2lkIHN0b3AoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNWUzNDEzYzkxYmU4NGUyZmM3ZmYwZGQxNjY5N2Uy
ZTljYjYwNDI4NS4uNjNkNDU4ODZkNTNjOTcyNGJmZDYwYjhkMWQ1ZjkwZDg5MDg0MmYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CkBAIC00NTUsMTggKzQ1NSwzMiBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRp
bmdTcGVjdWxhdGlvbnMoKQogCiAgICAgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7
CiAKKyAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleCA9IDA7CisKICAgICB3
aGlsZSAoIW1fc3BlY3VsYXRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICBwcm9jZXNzUGFyc2Vk
Q2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKSk7Cisg
ICAgICAgIE93blB0cjxQYXJzZWRDaHVuaz4gY2h1bmsgPSBtX3NwZWN1bGF0aW9ucy50YWtlRmly
c3QoKTsKKyAgICAgICAgY2hlY2twb2ludEluZGV4ID0gc3RkOjptYXgoY2h1bmstPmlucHV0Q2hl
Y2twb2ludCwgY2hlY2twb2ludEluZGV4KTsKKyAgICAgICAgcHJvY2Vzc1BhcnNlZENodW5rRnJv
bUJhY2tncm91bmRQYXJzZXIoY2h1bmsucmVsZWFzZSgpKTsKKworICAgICAgICAvLyBQcm9jZXNz
aW5nIGEgY2h1bmsgY2FuIGNhbGwgZG9jdW1lbnQud3JpdGUsIGNhdXNpbmcgdXMgdG8gaW52YWxp
ZGF0ZSBhbnkgcmVtYWluaW5nIHNwZWN1bGF0aW9ucy4KKyAgICAgICAgLy8gU2ltaWxhcmx5LCBp
ZiB3ZSdyZSBzdG9wcGVkIGp1c3QgYWJvcnQgYW5kIGRvbid0IGJvdGhlciB0byB0ZWxsIHRoZSBw
YXJzZXIgYWJvdXQgcGFzc2luZyB0aGlzIGNoZWNrcG9pbnQuCisgICAgICAgIGlmIChtX3NwZWN1
bGF0aW9ucy5pc0VtcHR5KCkgfHwgaXNTdG9wcGVkKCkpIHsKKyAgICAgICAgICAgIGNoZWNrcG9p
bnRJbmRleCA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgIGlm
IChpc1dhaXRpbmdGb3JTY3JpcHRzKCkgfHwgaXNTdG9wcGVkKCkpCisgICAgICAgIGlmIChpc1dh
aXRpbmdGb3JTY3JpcHRzKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoY3Vy
cmVudFRpbWUoKSAtIHN0YXJ0VGltZSA+IHBhcnNlclRpbWVMaW1pdCAmJiAhbV9zcGVjdWxhdGlv
bnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lID4g
cGFyc2VyVGltZUxpbWl0KSB7CiAgICAgICAgICAgICBtX3BhcnNlclNjaGVkdWxlci0+c2NoZWR1
bGVGb3JSZXN1bWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCisg
ICAgaWYgKGNoZWNrcG9pbnRJbmRleCkKKyAgICAgICAgSFRNTFBhcnNlclRocmVhZDo6c2hhcmVk
KCktPnBvc3RUYXNrKGJpbmQoJkJhY2tncm91bmRIVE1MUGFyc2VyOjpwYXNzZWRDaGVja3BvaW50
LCBtX2JhY2tncm91bmRQYXJzZXIsIGNoZWNrcG9pbnRJbmRleCkpOworCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwoY29va2llLCBsaW5lTnVtYmVyKCkuemVyb0Jh
c2VkSW50KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192294</attachid>
            <date>2013-03-08 15:16:24 -0800</date>
            <delta_ts>2013-03-08 15:41:32 -0800</delta_ts>
            <desc>Hopefully addressed Adam&apos;s concerns</desc>
            <filename>bug-110547-20130308151227.patch</filename>
            <type>text/plain</type>
            <size>8962</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MjM2MzdkMWVkNGJh
Mjk1NThjZDQ4ZmM5MTBkYjE1MTVjYTE1Yy4uMGQ1ZDc1YzBhMTUyYmI1ZGIyOTY5OGZiNjYwNjcx
MTgzNGJlYTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAzLTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBGcmVlIHVwIGJhY2tncm91bmQg
cGFyc2VyJ3MgY2hlY2twb2ludHMgd2hlbiBzcGVjdWxhdGlvbiBzdWNjZWVkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzaG91bGQgYmUgYSBt
ZW1vcnkgKGFuZCBwb3NzaWJsZSBwZXJmKSB3aW4gd2hpbGUgcGFyc2luZworICAgICAgICBwYWdl
cywgYXMgd2Ugd2lsbCBubyBsb25nZXIgaG9sZCBtdWx0aXBsZSBjb3BpZXMgb2YgZXZlcnkKKyAg
ICAgICAgc291cmNlIGJ5dGUgZHVyaW5nIHRoZSB3aG9sZSBwYXJzZS4KKworICAgICAgICBNYW55
IExheW91dFRlc3RzIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLCBhbmQgSSd2ZSBtYW51YWxseSAo
ZGVidWdnZXIgYW5kIHByaW50ZikKKyAgICAgICAgdGhhdCB3ZSdyZSBoaXR0aW5nIHRoaXMgY29k
ZSwgYnV0IHdlJ2xsIGhhdmUgdG8gd2FpdCBmb3IgdGhlIG1lbW9yeS9wZXJmIGJvdHMKKyAgICAg
ICAgdG8gdGVsbCB1cyBpZiB0aGlzIHNob3dzIHVwIGFzIGEgd2luLgorCisgICAgICAgIFdlIG9u
bHkgYm90aGVyIHRvIG1lc3NhZ2UgdGhlIHBhcnNlciBhdCB0aGUgZW5kIG9mIGEgc3BlY3VsYXRp
b24gY2hhaW4sIHNvIGFzIG5vdAorICAgICAgICB0byBzZW5kIHRvbyBtYW55IG1lc3NhZ2VzIHRv
IHRoZSBiYWNrZ3JvdW5kIHBhcnNlci4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MSW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNVcFRocm91
Z2gpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRN
TElucHV0U3RyZWFtOjpyZXdpbmRUbyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbS5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSk6
CisgICAgICAgIChDaGVja3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW06OkNoZWNrcG9pbnQ6OmlzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtOjpDaGVja3BvaW50OjpjbGVhcik6CisgICAgICAgICogaHRt
bC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFj
a2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaDoKKyAgICAgICAg
KEJhY2tncm91bmRIVE1MUGFyc2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1w
UGVuZGluZ1NwZWN1bGF0aW9ucyk6CisKIDIwMTMtMDMtMDYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgogCiAgICAgICAgIGRpc3BsYXk6bm9uZSBpZnJhbWVzIHNob3VsZCBub3QgYnVp
bGQgcmVuZGVyaW5nIHRyZWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwCmluZGV4IDFjM2ZiYzRhMzNlOWI1ZjVk
YTNlNDMwZDdjMzkxYjMyMmYxMWQ3ODUuLjZiYTNmZjI3Y2Q0NTk1Y2MwODBiNTU3ZjE5Nzk5YTYx
YzE1ZWEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MSW5wdXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwCkBAIC0zMiw2ICszMiw4IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1MSW5w
dXRTdHJlYW0oKQorICAgIDogbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KDApCisgICAgLCBt
X2ZpcnN0VmFsaWRTZWdtZW50SW5kZXgoMCkKIHsKIH0KIApAQCAtNTMsMTcgKzU1LDM1IEBAIEhU
TUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y3JlYXRlQ2hlY2tw
b2ludCgpCiAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBUaHJvdWdoKEhUTUxJbnB1dENoZWNr
cG9pbnQgY2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPCBt
X2NoZWNrcG9pbnRzLnNpemUoKSk7CisgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA+PSBtX2Zp
cnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOworICAgIGNvbnN0IENoZWNrcG9pbnQmIGNoZWNrcG9p
bnQgPSBtX2NoZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07CisgICAgQVNTRVJUKG1fZmlyc3RW
YWxpZFNlZ21lbnRJbmRleCA8PSBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQpOworICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7IGkg
PCBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7ICsraSkKKyAgICAg
ICAgbV9zZWdtZW50c1tpXSA9IFN0cmluZygpOworICAgIG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRl
eCA9IGNoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7IGkgPD0gY2hlY2twb2lu
dEluZGV4OyArK2kpCisgICAgICAgIG1fY2hlY2twb2ludHNbaV0uY2xlYXIoKTsKKyAgICBtX2Zp
cnN0VmFsaWRDaGVja3BvaW50SW5kZXggPSBjaGVja3BvaW50SW5kZXggKyAxOworfQorCiB2b2lk
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQg
Y2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpCiB7CiAgICAgQVNT
RVJUKGNoZWNrcG9pbnRJbmRleCA8IG1fY2hlY2twb2ludHMuc2l6ZSgpKTsgLy8gSWYgdGhpcyBB
U1NFUlQgZmlyZXMsIGNoZWNrcG9pbnRJbmRleCBpcyBpbnZhbGlkLgogICAgIGNvbnN0IENoZWNr
cG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07CisgICAg
QVNTRVJUKCFjaGVja3BvaW50LmlzTnVsbCgpKTsKIAogICAgIGJvb2wgaXNDbG9zZWQgPSBtX2N1
cnJlbnQuaXNDbG9zZWQoKTsKIAogICAgIG1fY3VycmVudCA9IGNoZWNrcG9pbnQuaW5wdXQ7CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gY2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFw
cGVuZGVkOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0g
Y2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyBpIDwgbV9zZWdtZW50
cy5zaXplKCk7ICsraSkgeworICAgICAgICBBU1NFUlQoIW1fc2VnbWVudHNbaV0uaXNOdWxsKCkp
OwogICAgICAgICBtX2N1cnJlbnQuYXBwZW5kKFNlZ21lbnRlZFN0cmluZyhtX3NlZ21lbnRzW2ld
KSk7CisgICAgfQogCiAgICAgaWYgKCF1bnBhcnNlZElucHV0LmlzRW1wdHkoKSkKICAgICAgICAg
bV9jdXJyZW50LnByZXBlbmQoU2VnbWVudGVkU3RyaW5nKHVucGFyc2VkSW5wdXQpKTsKQEAgLTc1
LDYgKzk1LDggQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpyZXdpbmRUbyhIVE1M
SW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleCwgY28KIAogICAgIG1fc2VnbWVudHMuY2xl
YXIoKTsKICAgICBtX2NoZWNrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9maXJzdFZhbGlkQ2hlY2tw
b2ludEluZGV4ID0gMDsKKyAgICBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXggPSAwOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmgKaW5kZXggYzcwYjA3MmNkNTQwYWUwOWE2NjU0NDdiZGUxNjU3MjQyN2QzMzJl
OC4uY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFmY2YyZTdiYTc5OGRiYmQ2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0u
aApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQgYWxsIG91dHN0YW5kaW5n
IGNoZWNrcG9pbnRzIGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNy
ZWF0ZUNoZWNrcG9pbnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQs
IGNvbnN0IFN0cmluZyYgdW5wYXJzZWRJbnB1dCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2tw
b2ludHNVcFRocm91Z2goSFRNTElucHV0Q2hlY2twb2ludCk7CiAKIHByaXZhdGU6CiAgICAgc3Ry
dWN0IENoZWNrcG9pbnQgewpAQCAtNTcsMTEgKzU4LDIwIEBAIHByaXZhdGU6CiAKICAgICAgICAg
U2VnbWVudGVkU3RyaW5nIGlucHV0OwogICAgICAgICBzaXplX3QgbnVtYmVyT2ZTZWdtZW50c0Fs
cmVhZHlBcHBlbmRlZDsKKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBpbnB1dC5pc0VtcHR5KCkgJiYgIW51bWJlck9mU2VnbWVudHNBbHJlYWR5
QXBwZW5kZWQ7IH0KKyNlbmRpZgorICAgICAgICB2b2lkIGNsZWFyKCkgeyBpbnB1dC5jbGVhcigp
OyBudW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkID0gMDsgfQogICAgIH07CiAKICAgICBT
ZWdtZW50ZWRTdHJpbmcgbV9jdXJyZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fc2VnbWVudHM7
CiAgICAgVmVjdG9yPENoZWNrcG9pbnQ+IG1fY2hlY2twb2ludHM7CisKKyAgICAvLyBOb3RlOiBU
aGVzZSBpbmRpY2llcyBtYXkgPT09IHZlY3Rvci5zaXplKCksIGluIHdoaWNoIGNhc2UgdGhlcmUg
YXJlIG5vIHZhbGlkIGNoZWNrcG9pbnRzL3NlZ21lbnRzIGF0IHRoaXMgdGltZS4KKyAgICBzaXpl
X3QgbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OworICAgIHNpemVfdCBtX2ZpcnN0VmFsaWRT
ZWdtZW50SW5kZXg7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggODc0NDMyZTYwMWNhOGY2YzcxOGZlNDBj
NDkyMWQ5MTk2M2QxYjM2Yy4uNjkyNWUxMDMxOTBiZDI4ZWEzNDE3OTMyMGY5YWU5M2VjMmI3MDZj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcApAQCAtMTY3LDYgKzE2NywxMyBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpyZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4gY2hlY2twb2ludCkKICAgICBwdW1w
VG9rZW5pemVyKCk7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENoZWNr
cG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCit7CisgICAgLy8gTm90
ZSwgd2Ugc2hvdWxkIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBpbmRleCBiZWluZyBpbnZh
bGlkCisgICAgLy8gYXMgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgd2lsbCBiZSBwcm9j
ZXNzZWQgaW4gRklGTyBvcmRlci4KKyAgICBtX2lucHV0LmludmFsaWRhdGVDaGVja3BvaW50c1Vw
VGhyb3VnaChpbnB1dENoZWNrcG9pbnQpOworfQorCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpmaW5pc2goKQogewogICAgIG1hcmtFbmRPZkZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCmluZGV4IGExYzk1Yjk1ZDJkMDhh
NWRiNWNjMzBmYTc4MmE1MGQ1M2Y2OTczNWEuLjI4NTViN2E3ODIzOWM0NTJiNDU0ZGNjMGI1Y2Uy
NTQ2MzIzMWVlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dy
b3VuZEhUTUxQYXJzZXIuaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFw
cGVuZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlc3VtZUZyb20oUGFzc093blB0cjxDaGVj
a3BvaW50Pik7CisgICAgdm9pZCBwYXNzZWRDaGVja3BvaW50KEhUTUxJbnB1dENoZWNrcG9pbnQp
OwogICAgIHZvaWQgZmluaXNoKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDM5NDBlODk1
NGEwNTBlNzhlZTNlOWRjNThjNjllMzkwZDYwNzE1MDMuLmIwNGVmNWI4NWY5MjZjMTk3ZTkwMmQw
ZDk5N2JmZjAzZDg0ZTg5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDU3LDE5ICs0NTcsMzIgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
V3JpdGVIVE1MKGRvY3VtZW50KCksIGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7CiAKICAg
ICBkb3VibGUgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBIVE1MSW5wdXRDaGVja3Bv
aW50IGxhc3RDaGVja3BvaW50UGFzc2VkID0gMDsKIAogICAgIHdoaWxlICghbV9zcGVjdWxhdGlv
bnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5k
UGFyc2VyKG1fc3BlY3VsYXRpb25zLnRha2VGaXJzdCgpKTsKKyAgICAgICAgT3duUHRyPFBhcnNl
ZENodW5rPiBjaHVuayA9IG1fc3BlY3VsYXRpb25zLnRha2VGaXJzdCgpOworICAgICAgICBsYXN0
Q2hlY2twb2ludFBhc3NlZCA9IGNodW5rLT5pbnB1dENoZWNrcG9pbnQ7CisgICAgICAgIHByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKGNodW5rLnJlbGVhc2UoKSk7CisKKyAg
ICAgICAgLy8gUHJvY2Vzc2luZyBhIGNodW5rIGNhbiBjYWxsIGRvY3VtZW50LndyaXRlLCBjYXVz
aW5nIHVzIHRvIGludmFsaWRhdGUgYW55IHJlbWFpbmluZyBzcGVjdWxhdGlvbnMuCisgICAgICAg
IGlmIChtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkgfHwgaXNTdG9wcGVkKCkpIHsKKyAgICAgICAg
ICAgIC8vIFdlJ3JlIGFib3J0aW5nIHRoZXNlIHNwZWN1bGF0aW9ucywgc28gZG9uJ3QgdGVsbCB0
aGUgcGFyc2VyIHdlJ3ZlIHBhc3NlZCBhIGNoZWNrcG9pbnQgKGl0cyBhbHJlYWR5IGNsZWFyZWQg
aXRzIGNoZWNrcG9pbnRzKS4KKyAgICAgICAgICAgIGxhc3RDaGVja3BvaW50UGFzc2VkID0gMDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzV2FpdGluZ0Zv
clNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkKKyAgICAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlw
dHMoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0g
c3RhcnRUaW1lID4gcGFyc2VyVGltZUxpbWl0ICYmICFtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUgPiBwYXJzZXJUaW1lTGlt
aXQpIHsKICAgICAgICAgICAgIG1fcGFyc2VyU2NoZWR1bGVyLT5zY2hlZHVsZUZvclJlc3VtZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobGFzdENo
ZWNrcG9pbnRQYXNzZWQpCisgICAgICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0
VGFzayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cGFzc2VkQ2hlY2twb2ludCwgbV9iYWNr
Z3JvdW5kUGFyc2VyLCBsYXN0Q2hlY2twb2ludFBhc3NlZCkpOworCiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwoY29va2llLCBsaW5lTnVtYmVyKCkuemVyb0Jhc2Vk
SW50KCkpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>