<?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>30683</bug_id>
          
          <creation_ts>2009-10-22 11:39:45 -0700</creation_ts>
          <short_desc>svn-apply&apos;s fixChangeLogPatch function seems broken</short_desc>
          <delta_ts>2012-12-26 11:52:50 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>30687</dependson>
    
    <dependson>30791</dependson>
    
    <dependson>36257</dependson>
          <blocked>30634</blocked>
    
    <blocked>31092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>levin</cc>
    
    <cc>otte</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>156953</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-22 11:39:45 -0700</bug_when>
    <thetext>svn-apply&apos;s fixChangeLogPatch function seems broken

I&apos;ve not been able to get it to work yet in my testing.  I&apos;m going to see if I can fix it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156961</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-22 11:59:23 -0700</bug_when>
    <thetext>Actually, looks like it just doesn&apos;t work if more than the dateline are the same (like the reviewer line, as is the case when you have multiple unreviewed patches in ones git checkout).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157033</commentid>
    <comment_count>2</comment_count>
      <attachid>41695</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-22 16:31:12 -0700</bug_when>
    <thetext>Created attachment 41695
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157034</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-22 16:32:17 -0700</bug_when>
    <thetext>I&apos;m not quite sure how I go about testing this.  I would love to test it, but we have no unit testing for our perl scripts. :( It&apos;s possible I could use the python infrastructure for testing some of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157277</commentid>
    <comment_count>4</comment_count>
      <attachid>41745</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 13:23:02 -0700</bug_when>
    <thetext>Created attachment 41745
Share this code in more places</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157278</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 13:23:30 -0700</bug_when>
    <thetext>I can&apos;t believe we had FOUR copies of this function.  No wonder our perl scripts are a sewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157279</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 13:24:36 -0700</bug_when>
    <thetext>Eh, my comment above was unfair.  I can understand the desire to have these scripts be stand-alone, but I don&apos;t think that it&apos;s worth the cost of having copy/paste code like this.  At least not functions as huge and complicated as this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157285</commentid>
    <comment_count>7</comment_count>
      <attachid>41746</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 13:39:08 -0700</bug_when>
    <thetext>Created attachment 41746
Updated ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157300</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 14:25:49 -0700</bug_when>
    <thetext>*** Bug 26730 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157304</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 14:29:17 -0700</bug_when>
    <thetext>*** Bug 26865 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157346</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-10-23 15:45:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Eh, my comment above was unfair.  I can understand the desire to have these
&gt; scripts be stand-alone, but I don&apos;t think that it&apos;s worth the cost of having
&gt; copy/paste code like this.  At least not functions as huge and complicated as
&gt; this one.

At the time I wrote this code, I was told that it was more important for the scripts to be standalone than to share code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157348</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 15:48:29 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #6)
&gt; &gt; Eh, my comment above was unfair.  I can understand the desire to have these
&gt; &gt; scripts be stand-alone, but I don&apos;t think that it&apos;s worth the cost of having
&gt; &gt; copy/paste code like this.  At least not functions as huge and complicated as
&gt; &gt; this one.
&gt; 
&gt; At the time I wrote this code, I was told that it was more important for the
&gt; scripts to be standalone than to share code.

Hum... It would that now that other code is being shared using VCSUtils.pm we should re-visit that decision.  If we decide to start sharing more code there is definitely a bunch more we can share yet.  I am very interested in your input on such a decision.  Obviously my bias above has already been stated. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157374</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-10-23 16:56:21 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; 
&gt; Hum... It would that now that other code is being shared using VCSUtils.pm we
&gt; should re-visit that decision.  If we decide to start sharing more code there
&gt; is definitely a bunch more we can share yet.  I am very interested in your
&gt; input on such a decision.  Obviously my bias above has already been stated. :)

Since we now have a way to share code using VCSUtils.pm, I&apos;m all for doing that.  I originally wanted to share the code as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157389</commentid>
    <comment_count>13</comment_count>
      <attachid>41746</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-10-23 17:31:34 -0700</bug_when>
    <thetext>Comment on attachment 41746
Updated ChangeLog

I&apos;m on vacation through Oct. 28, so I can&apos;t really give a detailed review until then.

However, I see issues with this patch that require an r-:

- ChangeLog doesn&apos;t mention all the scripts affected.
- The new method in VCSUtils.pm has a debugging print() statement in it.
- The method Name added to the list of exported methods should be alphabetized.
- The method in VCSUtils.pm completely breaks the contract of the original method--that the entire patch should be returned unaltered if the method can&apos;t fix it.
- The method in VCSUtils.pm makes too many assumptions about the format of the patch, e.g., that the patch&apos;s first line of code is the fourth line of the text passed in.  While rare, there are some patches that don&apos;t include an &quot;Index&quot; or &quot;diff&quot; preamble line.

I think the best approach to fix this is to move the unaltered method into VCSUtils.pm first, then write a simple test harness in Perl that uses the VCSUtils module to read a patch from stdin and write the altered result to stdout.  Then this can be used to write test cases for different types of ChangeLog patches, then the method can be fixed for the case that this bug was filed for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157950</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-26 15:00:48 -0700</bug_when>
    <thetext>(In reply to comment #13)

Thanks for the review!

&gt; - The new method in VCSUtils.pm has a debugging print() statement in it.
Oops.  Fixed.

&gt; - The method Name added to the list of exported methods should be alphabetized.
Fixed.

&gt; - The method in VCSUtils.pm completely breaks the contract of the original
&gt; method--that the entire patch should be returned unaltered if the method can&apos;t
&gt; fix it.
My bad.  Fixed.

&gt; - The method in VCSUtils.pm makes too many assumptions about the format of the
&gt; patch, e.g., that the patch&apos;s first line of code is the fourth line of the text
&gt; passed in.  While rare, there are some patches that don&apos;t include an &quot;Index&quot; or
&gt; &quot;diff&quot; preamble line.

OK.  Fixed.

&gt; I think the best approach to fix this is to move the unaltered method into
&gt; VCSUtils.pm first

Ok.  bug 30791.

&gt; then write a simple test harness in Perl that uses the
&gt; VCSUtils module to read a patch from stdin and write the altered result to
&gt; stdout.  Then this can be used to write test cases for different types of
&gt; ChangeLog patches, then the method can be fixed for the case that this bug was
&gt; filed for.

Eh.  Given our complete lack of unit testing in our perl scripts, perl&apos;s
seeming lack of built-in unit testing, I have little desire to invent a system.

So I&apos;ve added some tests to scm_unittest.py instead.  Those drive svn-apply as
part of scm.py and should provide adequate coverage for this change.

Patch coming up!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157963</commentid>
    <comment_count>15</comment_count>
      <attachid>41906</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-26 15:25:01 -0700</bug_when>
    <thetext>Created attachment 41906
Fix as suggested by Dave.  Still includes method moves so as not to depend on bug 30791.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158105</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-10-27 00:01:33 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Eh.  Given our complete lack of unit testing in our perl scripts, perl&apos;s
&gt; seeming lack of built-in unit testing, I have little desire to invent a system.
&gt; 
&gt; So I&apos;ve added some tests to scm_unittest.py instead.  Those drive svn-apply as
&gt; part of scm.py and should provide adequate coverage for this change.

Perl does have built-in testing.  See manpages for Test::Harness or Test::Simple--one of them comes with Perl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158207</commentid>
    <comment_count>17</comment_count>
      <attachid>41956</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-27 09:01:31 -0700</bug_when>
    <thetext>Created attachment 41956
Update after bug 30791</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158301</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-27 11:58:55 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; Eh.  Given our complete lack of unit testing in our perl scripts, perl&apos;s
&gt; &gt; seeming lack of built-in unit testing, I have little desire to invent a system.
&gt; &gt; 
&gt; &gt; So I&apos;ve added some tests to scm_unittest.py instead.  Those drive svn-apply as
&gt; &gt; part of scm.py and should provide adequate coverage for this change.
&gt; 
&gt; Perl does have built-in testing.  See manpages for Test::Harness or
&gt; Test::Simple--one of them comes with Perl.

Interesting.  It would appear that both are included on Mac OS X Leopard.  I do not know about other distros, but that&apos;s good to know!

I think the scm_unittest.py testing should be sufficient for this fix.  It covers the desired change, and has the added benefit of being a full-system test of svn-apply (which we did not have before).  But it&apos;s good to know that Test::* seem to be installed on mac os x for the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160157</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-03 12:03:42 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160175</commentid>
    <comment_count>20</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-11-03 12:57:53 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Ping?

I&apos;ll try to look at this today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160502</commentid>
    <comment_count>21</comment_count>
      <attachid>41956</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-11-04 10:35:43 -0800</bug_when>
    <thetext>Comment on attachment 41956
Update after bug 30791

&gt; diff --git a/WebKitTools/Scripts/VCSUtils.pm b/WebKitTools/Scripts/VCSUtils.pm
&gt; index e1e0bc2..ebf1190 100644
&gt; --- a/WebKitTools/Scripts/VCSUtils.pm
&gt; +++ b/WebKitTools/Scripts/VCSUtils.pm
&gt; @@ -347,56 +347,64 @@ sub gitdiff2svndiff($)
&gt;      return $_;
&gt;  }
&gt;  
&gt; +# The diff(1) command is greedy when matching lines, so a new ChangeLog entry will
&gt; +# have lines of context at the top of a patch when the existing entry has the same
&gt; +# date and author as the new entry.  Alter the ChangeLog patch so
&gt; +# that the added lines (&quot;+&quot;) in the patch always start at the beginning of the
&gt; +# patch and there are no initial lines of context.
&gt;  sub fixChangeLogPatch($)
&gt;  {
&gt; +    my $patch = shift; # $patch will only contain patch fragments for ChangeLog.
&gt; +
&gt; +    $patch =~ /(\r?\n)/;
&gt; +    my $lineEnding = $1;
&gt; +    my @patchLines = split(/$lineEnding/, $patch);
&gt; +
&gt; +    # e.g. 2009-06-03  Eric Seidel  &lt;eric@webkit.org&gt;
&gt; +    my $dateLineRegexpString = &apos;^\+(\d{4}-\d{2}-\d{2})&apos; # Consume the leading &apos;+&apos; and the date.
&gt; +                             . &apos;\s+(.+)\s+&apos; # Consume the name.
&gt; +                             . &apos;&lt;([^&lt;&gt;]+)&gt;$&apos;; # And finally the email address.
&gt; +
&gt; +    # Figure out where the patch contents start and stop.
&gt; +    my $patchHeaderIndex;
&gt; +    my $firstContentIndex;
&gt; +    my $trailingContextIndex;
&gt; +    my $dateIndex;
&gt; +    my $patchEndIndex = scalar(@patchLines);
&gt; +    for (my $index = 0; $index &lt; @patchLines; ++$index) {
&gt; +        my $line = $patchLines[$index];
&gt; +        if ($line =~ /^\@\@ -\d+,\d+ \+\d+,\d+ \@\@$/) { # e.g. @@ -1,5 +1,18 @@
&gt; +            if ($patchHeaderIndex) {
&gt; +                $patchEndIndex = $index; # We only bother to fix up the first patch fragment.
&gt; +                last;
&gt;              }
&gt; +            $patchHeaderIndex = $index;
&gt;          }
&gt; +        $firstContentIndex = $index if ($patchHeaderIndex &amp;&amp; !$firstContentIndex &amp;&amp; $line =~ /^\+[^+]/); # Only match after finding patchHeaderIndex, otherwise we&apos;d match &quot;+++&quot;.
&gt; +        $dateIndex = $index if ($line =~ /$dateLineRegexpString/);
&gt; +        $trailingContextIndex = $index if ($firstContentIndex &amp;&amp; !$trailingContextIndex &amp;&amp; $line =~ /^ /);
&gt;      }
&gt; +    my $contentLineCount = $trailingContextIndex - $firstContentIndex;
&gt; +    my $trailingContextLineCount = $patchEndIndex - $trailingContextIndex;
&gt; +
&gt; +    # If we didn&apos;t find a date line in the content then this is not a patch we should try and fix.
&gt; +    return $patch if (!$dateIndex);
&gt; +
&gt; +    # We only need to do anything if the date line is not the first content line.
&gt; +    return $patch if ($dateIndex == $firstContentIndex);
&gt; +
&gt; +    # Write the new patch.
&gt; +    my $totalNewContentLines = $contentLineCount + $trailingContextLineCount;
&gt; +    $patchLines[$patchHeaderIndex] = &quot;@@ -1,$trailingContextLineCount +1,$totalNewContentLines @@&quot;; # Write a new header.
&gt; +    my @repeatedLines = splice(@patchLines, $dateIndex, $trailingContextIndex - $dateIndex); # The date line and all the content after it that diff saw as repeated.
&gt; +    splice(@patchLines, $firstContentIndex, 0, @repeatedLines); # Move the repeated content to the top.
&gt; +    foreach my $line (@repeatedLines) {
&gt; +        $line =~ s/^\+/ /;
&gt; +    }
&gt; +    splice(@patchLines, $trailingContextIndex, $patchEndIndex, @repeatedLines); # Replace trailing context with the repeated content.
&gt; +    splice(@patchLines, $patchHeaderIndex + 1, $firstContentIndex - $patchHeaderIndex - 1); # Remove any leading context.
&gt;  
&gt; +    return join($lineEnding, @patchLines) . &quot;\n&quot;; # patch(1) expects an extra trailing newline.
&gt;  }

After thinking about this some more, there&apos;s an even easier way to mangle the patch.  Basically, assuming the patch is 0-or-more unchanged lines, 1-or-more added lines (+), and then 1-or-more unchanged lines, all you really have to do is separate out the added lines from the unchanged lines, reorder the added lines starting with the date line and wrapping around to the top, then output the reordered added lines plus the first three lines of unchanged lines.  (This works because the added lines always contain the complete patch, but because of the vagaries of diff, they are sometimes out of order.)

r=me to unblock other issues.  We can revisit this later if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160728</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 22:18:36 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; After thinking about this some more, there&apos;s an even easier way to mangle the
&gt; patch.  Basically, assuming the patch is 0-or-more unchanged lines, 1-or-more
&gt; added lines (+), and then 1-or-more unchanged lines, all you really have to do
&gt; is separate out the added lines from the unchanged lines, reorder the added
&gt; lines starting with the date line and wrapping around to the top, then output
&gt; the reordered added lines plus the first three lines of unchanged lines.  (This
&gt; works because the added lines always contain the complete patch, but because of
&gt; the vagaries of diff, they are sometimes out of order.)
&gt; 
&gt; r=me to unblock other issues.  We can revisit this later if needed.

I&apos;m not sure I understand.  What you describe sounds a lot like what I tried to do in the code.  There must be some subtly I&apos;m missing in your explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160739</commentid>
    <comment_count>23</comment_count>
      <attachid>41956</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-04 23:07:08 -0800</bug_when>
    <thetext>Comment on attachment 41956
Update after bug 30791

Clearing flags on attachment: 41956

Committed r50547: &lt;http://trac.webkit.org/changeset/50547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160740</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-04 23:07:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160796</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-11-05 05:20:09 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; After thinking about this some more, there&apos;s an even easier way to mangle the
&gt; &gt; patch.  Basically, assuming the patch is 0-or-more unchanged lines, 1-or-more
&gt; &gt; added lines (+), and then 1-or-more unchanged lines, all you really have to do
&gt; &gt; is separate out the added lines from the unchanged lines, reorder the added
&gt; &gt; lines starting with the date line and wrapping around to the top, then output
&gt; &gt; the reordered added lines plus the first three lines of unchanged lines.  (This
&gt; &gt; works because the added lines always contain the complete patch, but because of
&gt; &gt; the vagaries of diff, they are sometimes out of order.)
&gt; 
&gt; I&apos;m not sure I understand.  What you describe sounds a lot like what I tried to
&gt; do in the code.  There must be some subtly I&apos;m missing in your explanation.

Yes, but it seemed like the algorithm was more complicated than it needed to be in that it still had too many state variables.  Still, it&apos;s an improvement over my previous code, which was even more complex.  I don&apos;t feel any particular need to rewrite it again, though.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162137</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-10 11:34:19 -0800</bug_when>
    <thetext>*** Bug 30687 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175055</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-27 10:44:05 -0800</bug_when>
    <thetext>FYI, I have a proposed revision to fixChangeLogPatch:

https://bugs.webkit.org/show_bug.cgi?id=32919

I&apos;ve added unit tests as suggested here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41695</attachid>
            <date>2009-10-22 16:31:12 -0700</date>
            <delta_ts>2009-10-23 13:22:58 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30683-20091022163111.patch</filename>
            <type>text/plain</type>
            <size>10379</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBhMmQ0MTVlLi42NWI4YTMxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTAt
MjIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSdzIGZpeENoYW5nZUxvZ1BhdGNo
IGZ1bmN0aW9uIHNlZW1zIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA2ODMKKworICAgICAgICBTaGFyZSBmaXhDaGFuZ2VMb2dQYXRjaCBi
ZXR3ZWVuIHN2bi1hcHBseSBhbmQgc3ZuLWNyZWF0ZS1wYXRjaCB1c2luZyBWQ1NVdGlscy5wbS4K
KyAgICAgICAgQ2hhbmdlIGZpeENoYW5nZUxvZ1BhdGNoJ3MgYWxnb3JpdGhtIHRvIGJlIGFibGUg
dG8gaGFuZGxlIHBhdGNoZXMgc3RhcnRpbmcgb24gYSBsaW5lIG90aGVyIHRoYW4gMS4KKworICAg
ICAgICAqIFNjcmlwdHMvVkNTVXRpbHMucG06CisgICAgICAgICogU2NyaXB0cy9zdm4tYXBwbHk6
CisgICAgICAgICogU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoOgorCiAyMDA5LTEwLTIxICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KaW5kZXggNmVjMTJjOS4uODlkODcyNSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL1ZDU1V0aWxzLnBtCkBAIC01Myw2ICs1Myw3IEBAIEJFR0lOIHsKICAgICAgICAgJm1h
a2VGaWxlUGF0aFJlbGF0aXZlCiAgICAgICAgICZwYXRoUmVsYXRpdmVUb1NWTlJlcG9zaXRvcnlS
b290Rm9yUGF0aAogICAgICAgICAmc3ZuUmV2aXNpb25Gb3JEaXJlY3RvcnkKKyAgICAgICAgJmZp
eENoYW5nZUxvZ1BhdGNoCiAgICAgKTsKICAgICAlRVhQT1JUX1RBR1MgPSAoICk7CiAgICAgQEVY
UE9SVF9PSyAgID0gKCk7CkBAIC0yNjgsNCArMjY5LDYyIEBAIHN1YiBtYWtlRmlsZVBhdGhSZWxh
dGl2ZSgkKQogICAgIHJldHVybiAkZ2l0Um9vdCAuICRwYXRoOwogfQogCisjIFRoZSBkaWZmKDEp
IGNvbW1hbmQgaXMgZ3JlZWR5IHdoZW4gbWF0Y2hpbmcgbGluZXMsIHNvIGEgbmV3IENoYW5nZUxv
ZyBlbnRyeSB3aWxsCisjIGhhdmUgbGluZXMgb2YgY29udGV4dCBhdCB0aGUgdG9wIG9mIGEgcGF0
Y2ggd2hlbiB0aGUgZXhpc3RpbmcgZW50cnkgaGFzIHRoZSBzYW1lCisjIGRhdGUgYW5kIGF1dGhv
ciBhcyB0aGUgbmV3IGVudHJ5LiAgQWx0ZXIgdGhlIENoYW5nZUxvZyBwYXRjaCBzbworIyB0aGF0
IHRoZSBhZGRlZCBsaW5lcyAoIisiKSBpbiB0aGUgcGF0Y2ggYWx3YXlzIHN0YXJ0IGF0IHRoZSBi
ZWdpbm5pbmcgb2YgdGhlCisjIHBhdGNoIGFuZCB0aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBv
ZiBjb250ZXh0Lgorc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpCit7CisgICAgbXkgJHBhdGNoID0g
c2hpZnQ7ICMgJHBhdGNoIHdpbGwgb25seSBjb250YWluIHBhdGNoIGZyYWdtZW50cyBmb3IgQ2hh
bmdlTG9nLgorICAgIHByaW50ICJcblxuJHBhdGNoXG5cbiI7CisKKyAgICAkcGF0Y2ggPX4gLyhc
cj9cbikvOworICAgIG15ICRsaW5lRW5kaW5nID0gJDE7CisgICAgbXkgQHBhdGNoTGluZXMgPSBz
cGxpdCgvJGxpbmVFbmRpbmcvLCAkcGF0Y2gpOworCisgICAgIyBlLmcuIDIwMDktMDYtMDMgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorICAgIG15ICRkYXRlTGluZVJlZ2V4cFN0cmlu
ZyA9ICdeXCsoXGR7NH0tXGR7Mn0tXGR7Mn0pJyAjIENvbnN1bWUgdGhlIGxlYWRpbmcgJysnIGFu
ZCB0aGUgZGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnXHMrKC4rKVxzKycg
IyBDb25zdW1lIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICc8KFte
PD5dKyk+JCc7ICMgQW5kIGZpbmFsbHkgdGhlIGVtYWlsIGFkZHJlc3MuCisKKyAgICAjIEZpZ3Vy
ZSBvdXQgd2hlcmUgdGhlIHBhdGNoIGNvbnRlbnRzIHN0YXJ0IGFuZCBzdG9wLgorICAgIG15ICRw
YXRjaEhlYWRlckluZGV4OworICAgIG15ICRmaXJzdENvbnRlbnRJbmRleDsKKyAgICBteSAkdHJh
aWxpbmdDb250ZXh0SW5kZXg7CisgICAgbXkgJGRhdGVJbmRleDsKKyAgICBteSAkcGF0Y2hFbmRJ
bmRleCA9IHNjYWxhcihAcGF0Y2hMaW5lcyk7CisgICAgZm9yIChteSAkaW5kZXggPSA0OyAkaW5k
ZXggPCBAcGF0Y2hMaW5lczsgKyskaW5kZXgpIHsgIyBTdGFydCBhdCA0LCBubyBuZWVkIHRvIHNj
YW4gdGhlIEBALCBJbmRleCwgKysrIG9yIC0tLSBoZWFkZXIgbGluZXMuCisgICAgICAgIG15ICRs
aW5lID0gJHBhdGNoTGluZXNbJGluZGV4XTsKKyAgICAgICAgaWYgKCRsaW5lID1+IC9eXEBcQCAt
XGQrLFxkKyBcK1xkKyxcZCsgXEBcQCQvKSB7ICMgZS5nLiBAQCAtMSw1ICsxLDE4IEBACisgICAg
ICAgICAgICBpZiAoJHBhdGNoSGVhZGVySW5kZXgpIHsKKyAgICAgICAgICAgICAgICAkcGF0Y2hF
bmRJbmRleCA9ICRpbmRleDsgIyBXZSBvbmx5IGJvdGhlciB0byBmaXggdXAgdGhlIGZpcnN0IHBh
dGNoIGZyYWdtZW50LgorICAgICAgICAgICAgICAgIGxhc3Q7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAkcGF0Y2hIZWFkZXJJbmRleCA9ICRpbmRleDsKKyAgICAgICAgfQorICAgICAgICAk
Zmlyc3RDb250ZW50SW5kZXggPSAkaW5kZXggaWYgKCEkZmlyc3RDb250ZW50SW5kZXggJiYgJGxp
bmUgPX4gL15cKy8pOyAjIEltcG9ydGFudCB0aGF0IHdlIHNraXBwZWQgKysrIHNvIHRoYXQgdGhp
cyBkb2Vzbid0IG1hdGNoIGl0LgorICAgICAgICAkZGF0ZUluZGV4ID0gJGluZGV4IGlmICgkbGlu
ZSA9fiAvJGRhdGVMaW5lUmVnZXhwU3RyaW5nLyk7CisgICAgICAgICR0cmFpbGluZ0NvbnRleHRJ
bmRleCA9ICRpbmRleCBpZiAoJGZpcnN0Q29udGVudEluZGV4ICYmICEkdHJhaWxpbmdDb250ZXh0
SW5kZXggJiYgJGxpbmUgPX4gL14gLyk7CisgICAgfQorICAgIG15ICRjb250ZW50TGluZUNvdW50
ID0gJHRyYWlsaW5nQ29udGV4dEluZGV4IC0gJGZpcnN0Q29udGVudEluZGV4OworICAgIG15ICR0
cmFpbGluZ0NvbnRleHRMaW5lQ291bnQgPSAkcGF0Y2hFbmRJbmRleCAtICR0cmFpbGluZ0NvbnRl
eHRJbmRleDsKKworICAgICMgV2Ugb25seSBuZWVkIHRvIGRvIGFueXRoaW5nIGlmIHRoZSBkYXRl
IGxpbmUgaXMgbm90IHRoZSBmaXJzdCBjb250ZW50IGxpbmUuCisgICAgcmV0dXJuIGlmICgkZGF0
ZUluZGV4ID09ICRmaXJzdENvbnRlbnRJbmRleCk7CisKKyAgICAjIFdyaXRlIHRoZSBuZXcgcGF0
Y2guCisgICAgbXkgJHRvdGFsTmV3Q29udGVudExpbmVzID0gJGNvbnRlbnRMaW5lQ291bnQgKyAk
dHJhaWxpbmdDb250ZXh0TGluZUNvdW50OworICAgICRwYXRjaExpbmVzWyRwYXRjaEhlYWRlcklu
ZGV4XSA9ICJAQCAtMSwkdHJhaWxpbmdDb250ZXh0TGluZUNvdW50ICsxLCR0b3RhbE5ld0NvbnRl
bnRMaW5lcyBAQCI7ICMgV3JpdGUgYSBuZXcgaGVhZGVyLgorICAgIG15IEByZXBlYXRlZExpbmVz
ID0gc3BsaWNlKEBwYXRjaExpbmVzLCAkZGF0ZUluZGV4LCAkdHJhaWxpbmdDb250ZXh0SW5kZXgg
LSAkZGF0ZUluZGV4KTsgIyBUaGUgZGF0ZSBsaW5lIGFuZCBhbGwgdGhlIGNvbnRlbnQgYWZ0ZXIg
aXQgdGhhdCBkaWZmIHNhdyBhcyByZXBlYXRlZC4KKyAgICBzcGxpY2UoQHBhdGNoTGluZXMsICRm
aXJzdENvbnRlbnRJbmRleCwgMCwgQHJlcGVhdGVkTGluZXMpOyAjIE1vdmUgdGhlIHJlcGVhdGVk
IGNvbnRlbnQgdG8gdGhlIHRvcC4KKyAgICBmb3JlYWNoIG15ICRsaW5lIChAcmVwZWF0ZWRMaW5l
cykgeworICAgICAgICAkbGluZSA9fiBzL15cKy8gLzsKKyAgICB9CisgICAgc3BsaWNlKEBwYXRj
aExpbmVzLCAkdHJhaWxpbmdDb250ZXh0SW5kZXgsICRwYXRjaEVuZEluZGV4LCBAcmVwZWF0ZWRM
aW5lcyk7ICMgUmVwbGFjZSB0cmFpbGluZyBjb250ZXh0IHdpdGggdGhlIHJlcGVhdGVkIGNvbnRl
bnQuCisgICAgc3BsaWNlKEBwYXRjaExpbmVzLCAkcGF0Y2hIZWFkZXJJbmRleCArIDEsICRmaXJz
dENvbnRlbnRJbmRleCAtICRwYXRjaEhlYWRlckluZGV4IC0gMSk7ICMgUmVtb3ZlIGFueSBsZWFk
aW5nIGNvbnRleHQuCisKKyAgICByZXR1cm4gam9pbigkbGluZUVuZGluZywgQHBhdGNoTGluZXMp
IC4gIlxuIjsgIyBwYXRjaCgxKSBleHBlY3RzIGFuIGV4dHJhIHRyYWlsaW5nIG5ld2xpbmUuCit9
CisKIDE7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3N2bi1hcHBseSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CmluZGV4IDE5YzhjNTYuLmJkYjdjZDIgMTAwNzU1Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvc3ZuLWFwcGx5CkBAIC03NCw3ICs3NCw2IEBAIHVzZSBWQ1NVdGlsczsKIHN1YiBhZGREaXJl
Y3Rvcmllc0lmTmVlZGVkKCQpOwogc3ViIGFwcGx5UGF0Y2goJCQ7JCk7CiBzdWIgY2hlY2tzdW0o
JCk7Ci1zdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCk7CiBzdWIgZ2l0ZGlmZjJzdm5kaWZmKCQpOwog
c3ViIGhhbmRsZUJpbmFyeUNoYW5nZSgkJCk7CiBzdWIgaXNEaXJlY3RvcnlFbXB0eUZvclJlbW92
YWwoJCk7CkBAIC0yNTgsNTcgKzI1Nyw2IEBAIHN1YiBjaGVja3N1bSgkKQogICAgIHJldHVybiAk
Y2hlY2tzdW07CiB9CiAKLXN1YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKQotewotICAgIG15ICRwYXRj
aCA9IHNoaWZ0OwotICAgIG15ICRjb250ZXh0TGluZUNvdW50ID0gMzsKLQotICAgIHJldHVybiAk
cGF0Y2ggaWYgJHBhdGNoICF+IC9cbkBAIC0xLChcZCspIFwrMSwoXGQrKSBAQFxyP1xuKCAuKlxy
P1xuKSsoXCsuKlxyP1xuKSsoIC4qXHI/XG4peyRjb250ZXh0TGluZUNvdW50fSQvbTsKLSAgICBt
eSAoJG9sZExpbmVDb3VudCwgJG5ld0xpbmVDb3VudCkgPSAoJDEsICQyKTsKLSAgICByZXR1cm4g
JHBhdGNoIGlmICRvbGRMaW5lQ291bnQgPD0gJGNvbnRleHRMaW5lQ291bnQ7Ci0KLSAgICAjIFRo
ZSBkaWZmKDEpIGNvbW1hbmQgaXMgZ3JlZWR5IHdoZW4gbWF0Y2hpbmcgbGluZXMsIHNvIGEgbmV3
IENoYW5nZUxvZyBlbnRyeSB3aWxsCi0gICAgIyBoYXZlIGxpbmVzIG9mIGNvbnRleHQgYXQgdGhl
IHRvcCBvZiBhIHBhdGNoIHdoZW4gdGhlIGV4aXN0aW5nIGVudHJ5IGhhcyB0aGUgc2FtZQotICAg
ICMgZGF0ZSBhbmQgYXV0aG9yIGFzIHRoZSBuZXcgZW50cnkuICBUaGlzIG5pZnR5IGxvb3AgYWx0
ZXJzIGEgQ2hhbmdlTG9nIHBhdGNoIHNvCi0gICAgIyB0aGF0IHRoZSBhZGRlZCBsaW5lcyAoIisi
KSBpbiB0aGUgcGF0Y2ggYWx3YXlzIHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCi0gICAg
IyBwYXRjaCBhbmQgdGhlcmUgYXJlIG5vIGluaXRpYWwgbGluZXMgb2YgY29udGV4dC4KLSAgICBt
eSAkbmV3UGF0Y2g7Ci0gICAgbXkgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgIG15ICRvbGRD
b250ZW50TGluZUNvdW50UmVkdWN0aW9uID0gJG9sZExpbmVDb3VudCAtICRjb250ZXh0TGluZUNv
dW50OwotICAgIG15ICRuZXdDb250ZW50TGluZUNvdW50V2l0aG91dENvbnRleHQgPSAkbmV3TGlu
ZUNvdW50IC0gJG9sZExpbmVDb3VudCAtICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uOwot
ICAgIG15ICgkc3RhdGVIZWFkZXIsICRzdGF0ZVByZUNvbnRleHQsICRzdGF0ZU5ld0NoYW5nZXMs
ICRzdGF0ZVBvc3RDb250ZXh0KSA9ICgxLi40KTsKLSAgICBteSAkc3RhdGUgPSAkc3RhdGVIZWFk
ZXI7Ci0gICAgZm9yZWFjaCBteSAkbGluZSAoc3BsaXQoL1xuLywgJHBhdGNoKSkgewotICAgICAg
ICAkbGluZUNvdW50SW5TdGF0ZSsrOwotICAgICAgICBpZiAoJHN0YXRlID09ICRzdGF0ZUhlYWRl
ciAmJiAkbGluZSA9fiAvXkBAIC0xLCRvbGRMaW5lQ291bnQgXCsxLCRuZXdMaW5lQ291bnQgQFxA
JC8pIHsKLSAgICAgICAgICAgICRsaW5lID0gIkBAIC0xLCRjb250ZXh0TGluZUNvdW50ICsxLCIg
LiAoJG5ld0xpbmVDb3VudCAtICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSAuICIgQEAi
OwotICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgJHN0YXRl
ID0gJHN0YXRlUHJlQ29udGV4dDsKLSAgICAgICAgfSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZVBy
ZUNvbnRleHQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsKLSAgICAgICAgICAgICRs
aW5lID0gIisiIC4gc3Vic3RyKCRsaW5lLCAxKTsKLSAgICAgICAgICAgIGlmICgkbGluZUNvdW50
SW5TdGF0ZSA9PSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikgewotICAgICAgICAgICAg
ICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAgICAgICAkc3RhdGUgPSAkc3Rh
dGVOZXdDaGFuZ2VzOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0g
JHN0YXRlTmV3Q2hhbmdlcyAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIrIikgewotICAgICAg
ICAgICAgIyBObyBjaGFuZ2VzIHRvIHRoZXNlIGxpbmVzCi0gICAgICAgICAgICBpZiAoJGxpbmVD
b3VudEluU3RhdGUgPT0gJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29udGV4dCkgewotICAg
ICAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAgICAgICAkc3Rh
dGUgPSAkc3RhdGVQb3N0Q29udGV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNpZiAo
JHN0YXRlID09ICRzdGF0ZVBvc3RDb250ZXh0KSB7Ci0gICAgICAgICAgICBpZiAoc3Vic3RyKCRs
aW5lLCAwLCAxKSBlcSAiKyIgJiYgJGxpbmVDb3VudEluU3RhdGUgPD0gJG9sZENvbnRlbnRMaW5l
Q291bnRSZWR1Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICAkbGluZSA9ICIgIiAuIHN1YnN0cigk
bGluZSwgMSk7Ci0gICAgICAgICAgICB9IGVsc2lmICgkbGluZUNvdW50SW5TdGF0ZSA+ICRjb250
ZXh0TGluZUNvdW50ICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIiAiKSB7Ci0gICAgICAgICAg
ICAgICAgbmV4dDsgIyBEaXNjYXJkCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
JG5ld1BhdGNoIC49ICRsaW5lIC4gIlxuIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gJG5ld1BhdGNo
OwotfQotCiBzdWIgZ2l0ZGlmZjJzdm5kaWZmKCQpCiB7CiAgICAgJF8gPSBzaGlmdCBAXzsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaAppbmRleCAzZjQwNzgzLi4zYjU3OTc1IDEwMDc1
NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3N2bi1jcmVhdGUtcGF0Y2gKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoCkBAIC02MSw3ICs2MSw2IEBAIHN1YiBmaW5k
QmFzZVVybCgkKTsKIHN1YiBmaW5kTWltZVR5cGUoJDskKTsKIHN1YiBmaW5kTW9kaWZpY2F0aW9u
VHlwZSgkKTsKIHN1YiBmaW5kU291cmNlRmlsZUFuZFJldmlzaW9uKCQpOwotc3ViIGZpeENoYW5n
ZUxvZ1BhdGNoKCQpOwogc3ViIGdlbmVyYXRlRGlmZigkJCk7CiBzdWIgZ2VuZXJhdGVGaWxlTGlz
dCgkXCUpOwogc3ViIGlzQmluYXJ5TWltZVR5cGUoJCk7CkBAIC0yMTEsNTcgKzIxMCw2IEBAIHN1
YiBmaW5kU291cmNlRmlsZUFuZFJldmlzaW9uKCQpCiAgICAgcmV0dXJuICgkc291cmNlRmlsZSwg
JHNvdXJjZVJldmlzaW9uKTsKIH0KIAotc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpCi17Ci0gICAg
bXkgJHBhdGNoID0gc2hpZnQ7Ci0gICAgbXkgJGNvbnRleHRMaW5lQ291bnQgPSAzOwotCi0gICAg
cmV0dXJuICRwYXRjaCBpZiAkcGF0Y2ggIX4gL1xuQEAgLTEsKFxkKykgXCsxLChcZCspIEBAXG4o
IC4qXG4pKyhcKy4qXG4pKyggLipcbil7JGNvbnRleHRMaW5lQ291bnR9JC9tOwotICAgIG15ICgk
b2xkTGluZUNvdW50LCAkbmV3TGluZUNvdW50KSA9ICgkMSwgJDIpOwotICAgIHJldHVybiAkcGF0
Y2ggaWYgJG9sZExpbmVDb3VudCA8PSAkY29udGV4dExpbmVDb3VudDsKLQotICAgICMgVGhlIGRp
ZmYoMSkgY29tbWFuZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBsaW5lcywgc28gYSBuZXcgQ2hh
bmdlTG9nIGVudHJ5IHdpbGwKLSAgICAjIGhhdmUgbGluZXMgb2YgY29udGV4dCBhdCB0aGUgdG9w
IG9mIGEgcGF0Y2ggd2hlbiB0aGUgZXhpc3RpbmcgZW50cnkgaGFzIHRoZSBzYW1lCi0gICAgIyBk
YXRlIGFuZCBhdXRob3IgYXMgdGhlIG5ldyBlbnRyeS4gIFRoaXMgbmlmdHkgbG9vcCBhbHRlcnMg
YSBDaGFuZ2VMb2cgcGF0Y2ggc28KLSAgICAjIHRoYXQgdGhlIGFkZGVkIGxpbmVzICgiKyIpIGlu
IHRoZSBwYXRjaCBhbHdheXMgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAgICAjIHBh
dGNoIGFuZCB0aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBvZiBjb250ZXh0LgotICAgIG15ICRu
ZXdQYXRjaDsKLSAgICBteSAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgbXkgJG9sZENvbnRl
bnRMaW5lQ291bnRSZWR1Y3Rpb24gPSAkb2xkTGluZUNvdW50IC0gJGNvbnRleHRMaW5lQ291bnQ7
Ci0gICAgbXkgJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29udGV4dCA9ICRuZXdMaW5lQ291
bnQgLSAkb2xkTGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb247Ci0gICAg
bXkgKCRzdGF0ZUhlYWRlciwgJHN0YXRlUHJlQ29udGV4dCwgJHN0YXRlTmV3Q2hhbmdlcywgJHN0
YXRlUG9zdENvbnRleHQpID0gKDEuLjQpOwotICAgIG15ICRzdGF0ZSA9ICRzdGF0ZUhlYWRlcjsK
LSAgICBmb3JlYWNoIG15ICRsaW5lIChzcGxpdCgvXG4vLCAkcGF0Y2gpKSB7Ci0gICAgICAgICRs
aW5lQ291bnRJblN0YXRlKys7Ci0gICAgICAgIGlmICgkc3RhdGUgPT0gJHN0YXRlSGVhZGVyICYm
ICRsaW5lID1+IC9eQEAgLTEsJG9sZExpbmVDb3VudCBcKzEsJG5ld0xpbmVDb3VudCBAXEAkLykg
ewotICAgICAgICAgICAgJGxpbmUgPSAiQEAgLTEsJGNvbnRleHRMaW5lQ291bnQgKzEsIiAuICgk
bmV3TGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIC4gIiBAQCI7Ci0g
ICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAkc3RhdGUgPSAk
c3RhdGVQcmVDb250ZXh0OwotICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlUHJlQ29u
dGV4dCAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAgICAgICAgICAgJGxpbmUg
PSAiKyIgLiBzdWJzdHIoJGxpbmUsIDEpOwotICAgICAgICAgICAgaWYgKCRsaW5lQ291bnRJblN0
YXRlID09ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
JGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZU5l
d0NoYW5nZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3Rh
dGVOZXdDaGFuZ2VzICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIisiKSB7Ci0gICAgICAgICAg
ICAjIE5vIGNoYW5nZXMgdG8gdGhlc2UgbGluZXMKLSAgICAgICAgICAgIGlmICgkbGluZUNvdW50
SW5TdGF0ZSA9PSAkbmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0KSB7Ci0gICAgICAg
ICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgICAgICRzdGF0ZSA9
ICRzdGF0ZVBvc3RDb250ZXh0OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2lmICgkc3Rh
dGUgPT0gJHN0YXRlUG9zdENvbnRleHQpIHsKLSAgICAgICAgICAgIGlmIChzdWJzdHIoJGxpbmUs
IDAsIDEpIGVxICIrIiAmJiAkbGluZUNvdW50SW5TdGF0ZSA8PSAkb2xkQ29udGVudExpbmVDb3Vu
dFJlZHVjdGlvbikgewotICAgICAgICAgICAgICAgICRsaW5lID0gIiAiIC4gc3Vic3RyKCRsaW5l
LCAxKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRsaW5lQ291bnRJblN0YXRlID4gJGNvbnRleHRM
aW5lQ291bnQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsKLSAgICAgICAgICAgICAg
ICBuZXh0OyAjIERpc2NhcmQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAkbmV3
UGF0Y2ggLj0gJGxpbmUgLiAiXG4iOwotICAgIH0KLQotICAgIHJldHVybiAkbmV3UGF0Y2g7Ci19
Ci0KIHN1YiBnZW5lcmF0ZURpZmYoJCQpCiB7CiAgICAgbXkgKCRmaWxlRGF0YSwgJHByZWZpeCkg
PSBAXzs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41745</attachid>
            <date>2009-10-23 13:23:02 -0700</date>
            <delta_ts>2009-10-23 13:39:05 -0700</delta_ts>
            <desc>Share this code in more places</desc>
            <filename>bug-30683-20091023132301.patch</filename>
            <type>text/plain</type>
            <size>16306</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiZDg2MzlhLi5kNzY3YTQ5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTAt
MjIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSdzIGZpeENoYW5nZUxvZ1BhdGNo
IGZ1bmN0aW9uIHNlZW1zIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA2ODMKKworICAgICAgICBTaGFyZSBmaXhDaGFuZ2VMb2dQYXRjaCBi
ZXR3ZWVuIHN2bi1hcHBseSBhbmQgc3ZuLWNyZWF0ZS1wYXRjaCB1c2luZyBWQ1NVdGlscy5wbS4K
KyAgICAgICAgQ2hhbmdlIGZpeENoYW5nZUxvZ1BhdGNoJ3MgYWxnb3JpdGhtIHRvIGJlIGFibGUg
dG8gaGFuZGxlIHBhdGNoZXMgc3RhcnRpbmcgb24gYSBsaW5lIG90aGVyIHRoYW4gMS4KKworICAg
ICAgICAqIFNjcmlwdHMvVkNTVXRpbHMucG06CisgICAgICAgICogU2NyaXB0cy9zdm4tYXBwbHk6
CisgICAgICAgICogU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoOgorCiAyMDA5LTEwLTIzICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQppbmRleCA2ZWMxMmM5Li44OWQ4NzI1IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvVkNTVXRpbHMucG0KQEAgLTUzLDYgKzUzLDcgQEAgQkVHSU4gewogICAgICAgICAm
bWFrZUZpbGVQYXRoUmVsYXRpdmUKICAgICAgICAgJnBhdGhSZWxhdGl2ZVRvU1ZOUmVwb3NpdG9y
eVJvb3RGb3JQYXRoCiAgICAgICAgICZzdm5SZXZpc2lvbkZvckRpcmVjdG9yeQorICAgICAgICAm
Zml4Q2hhbmdlTG9nUGF0Y2gKICAgICApOwogICAgICVFWFBPUlRfVEFHUyA9ICggKTsKICAgICBA
RVhQT1JUX09LICAgPSAoKTsKQEAgLTI2OCw0ICsyNjksNjIgQEAgc3ViIG1ha2VGaWxlUGF0aFJl
bGF0aXZlKCQpCiAgICAgcmV0dXJuICRnaXRSb290IC4gJHBhdGg7CiB9CiAKKyMgVGhlIGRpZmYo
MSkgY29tbWFuZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBsaW5lcywgc28gYSBuZXcgQ2hhbmdl
TG9nIGVudHJ5IHdpbGwKKyMgaGF2ZSBsaW5lcyBvZiBjb250ZXh0IGF0IHRoZSB0b3Agb2YgYSBw
YXRjaCB3aGVuIHRoZSBleGlzdGluZyBlbnRyeSBoYXMgdGhlIHNhbWUKKyMgZGF0ZSBhbmQgYXV0
aG9yIGFzIHRoZSBuZXcgZW50cnkuICBBbHRlciB0aGUgQ2hhbmdlTG9nIHBhdGNoIHNvCisjIHRo
YXQgdGhlIGFkZGVkIGxpbmVzICgiKyIpIGluIHRoZSBwYXRjaCBhbHdheXMgc3RhcnQgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUKKyMgcGF0Y2ggYW5kIHRoZXJlIGFyZSBubyBpbml0aWFsIGxpbmVz
IG9mIGNvbnRleHQuCitzdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKK3sKKyAgICBteSAkcGF0Y2gg
PSBzaGlmdDsgIyAkcGF0Y2ggd2lsbCBvbmx5IGNvbnRhaW4gcGF0Y2ggZnJhZ21lbnRzIGZvciBD
aGFuZ2VMb2cuCisgICAgcHJpbnQgIlxuXG4kcGF0Y2hcblxuIjsKKworICAgICRwYXRjaCA9fiAv
KFxyP1xuKS87CisgICAgbXkgJGxpbmVFbmRpbmcgPSAkMTsKKyAgICBteSBAcGF0Y2hMaW5lcyA9
IHNwbGl0KC8kbGluZUVuZGluZy8sICRwYXRjaCk7CisKKyAgICAjIGUuZy4gMjAwOS0wNi0wMyAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisgICAgbXkgJGRhdGVMaW5lUmVnZXhwU3Ry
aW5nID0gJ15cKyhcZHs0fS1cZHsyfS1cZHsyfSknICMgQ29uc3VtZSB0aGUgbGVhZGluZyAnKycg
YW5kIHRoZSBkYXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdccysoLispXHMr
JyAjIENvbnN1bWUgdGhlIG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJzwo
W148Pl0rKT4kJzsgIyBBbmQgZmluYWxseSB0aGUgZW1haWwgYWRkcmVzcy4KKworICAgICMgRmln
dXJlIG91dCB3aGVyZSB0aGUgcGF0Y2ggY29udGVudHMgc3RhcnQgYW5kIHN0b3AuCisgICAgbXkg
JHBhdGNoSGVhZGVySW5kZXg7CisgICAgbXkgJGZpcnN0Q29udGVudEluZGV4OworICAgIG15ICR0
cmFpbGluZ0NvbnRleHRJbmRleDsKKyAgICBteSAkZGF0ZUluZGV4OworICAgIG15ICRwYXRjaEVu
ZEluZGV4ID0gc2NhbGFyKEBwYXRjaExpbmVzKTsKKyAgICBmb3IgKG15ICRpbmRleCA9IDQ7ICRp
bmRleCA8IEBwYXRjaExpbmVzOyArKyRpbmRleCkgeyAjIFN0YXJ0IGF0IDQsIG5vIG5lZWQgdG8g
c2NhbiB0aGUgQEAsIEluZGV4LCArKysgb3IgLS0tIGhlYWRlciBsaW5lcy4KKyAgICAgICAgbXkg
JGxpbmUgPSAkcGF0Y2hMaW5lc1skaW5kZXhdOworICAgICAgICBpZiAoJGxpbmUgPX4gL15cQFxA
IC1cZCssXGQrIFwrXGQrLFxkKyBcQFxAJC8pIHsgIyBlLmcuIEBAIC0xLDUgKzEsMTggQEAKKyAg
ICAgICAgICAgIGlmICgkcGF0Y2hIZWFkZXJJbmRleCkgeworICAgICAgICAgICAgICAgICRwYXRj
aEVuZEluZGV4ID0gJGluZGV4OyAjIFdlIG9ubHkgYm90aGVyIHRvIGZpeCB1cCB0aGUgZmlyc3Qg
cGF0Y2ggZnJhZ21lbnQuCisgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICRwYXRjaEhlYWRlckluZGV4ID0gJGluZGV4OworICAgICAgICB9CisgICAgICAg
ICRmaXJzdENvbnRlbnRJbmRleCA9ICRpbmRleCBpZiAoISRmaXJzdENvbnRlbnRJbmRleCAmJiAk
bGluZSA9fiAvXlwrLyk7ICMgSW1wb3J0YW50IHRoYXQgd2Ugc2tpcHBlZCArKysgc28gdGhhdCB0
aGlzIGRvZXNuJ3QgbWF0Y2ggaXQuCisgICAgICAgICRkYXRlSW5kZXggPSAkaW5kZXggaWYgKCRs
aW5lID1+IC8kZGF0ZUxpbmVSZWdleHBTdHJpbmcvKTsKKyAgICAgICAgJHRyYWlsaW5nQ29udGV4
dEluZGV4ID0gJGluZGV4IGlmICgkZmlyc3RDb250ZW50SW5kZXggJiYgISR0cmFpbGluZ0NvbnRl
eHRJbmRleCAmJiAkbGluZSA9fiAvXiAvKTsKKyAgICB9CisgICAgbXkgJGNvbnRlbnRMaW5lQ291
bnQgPSAkdHJhaWxpbmdDb250ZXh0SW5kZXggLSAkZmlyc3RDb250ZW50SW5kZXg7CisgICAgbXkg
JHRyYWlsaW5nQ29udGV4dExpbmVDb3VudCA9ICRwYXRjaEVuZEluZGV4IC0gJHRyYWlsaW5nQ29u
dGV4dEluZGV4OworCisgICAgIyBXZSBvbmx5IG5lZWQgdG8gZG8gYW55dGhpbmcgaWYgdGhlIGRh
dGUgbGluZSBpcyBub3QgdGhlIGZpcnN0IGNvbnRlbnQgbGluZS4KKyAgICByZXR1cm4gaWYgKCRk
YXRlSW5kZXggPT0gJGZpcnN0Q29udGVudEluZGV4KTsKKworICAgICMgV3JpdGUgdGhlIG5ldyBw
YXRjaC4KKyAgICBteSAkdG90YWxOZXdDb250ZW50TGluZXMgPSAkY29udGVudExpbmVDb3VudCAr
ICR0cmFpbGluZ0NvbnRleHRMaW5lQ291bnQ7CisgICAgJHBhdGNoTGluZXNbJHBhdGNoSGVhZGVy
SW5kZXhdID0gIkBAIC0xLCR0cmFpbGluZ0NvbnRleHRMaW5lQ291bnQgKzEsJHRvdGFsTmV3Q29u
dGVudExpbmVzIEBAIjsgIyBXcml0ZSBhIG5ldyBoZWFkZXIuCisgICAgbXkgQHJlcGVhdGVkTGlu
ZXMgPSBzcGxpY2UoQHBhdGNoTGluZXMsICRkYXRlSW5kZXgsICR0cmFpbGluZ0NvbnRleHRJbmRl
eCAtICRkYXRlSW5kZXgpOyAjIFRoZSBkYXRlIGxpbmUgYW5kIGFsbCB0aGUgY29udGVudCBhZnRl
ciBpdCB0aGF0IGRpZmYgc2F3IGFzIHJlcGVhdGVkLgorICAgIHNwbGljZShAcGF0Y2hMaW5lcywg
JGZpcnN0Q29udGVudEluZGV4LCAwLCBAcmVwZWF0ZWRMaW5lcyk7ICMgTW92ZSB0aGUgcmVwZWF0
ZWQgY29udGVudCB0byB0aGUgdG9wLgorICAgIGZvcmVhY2ggbXkgJGxpbmUgKEByZXBlYXRlZExp
bmVzKSB7CisgICAgICAgICRsaW5lID1+IHMvXlwrLyAvOworICAgIH0KKyAgICBzcGxpY2UoQHBh
dGNoTGluZXMsICR0cmFpbGluZ0NvbnRleHRJbmRleCwgJHBhdGNoRW5kSW5kZXgsIEByZXBlYXRl
ZExpbmVzKTsgIyBSZXBsYWNlIHRyYWlsaW5nIGNvbnRleHQgd2l0aCB0aGUgcmVwZWF0ZWQgY29u
dGVudC4KKyAgICBzcGxpY2UoQHBhdGNoTGluZXMsICRwYXRjaEhlYWRlckluZGV4ICsgMSwgJGZp
cnN0Q29udGVudEluZGV4IC0gJHBhdGNoSGVhZGVySW5kZXggLSAxKTsgIyBSZW1vdmUgYW55IGxl
YWRpbmcgY29udGV4dC4KKworICAgIHJldHVybiBqb2luKCRsaW5lRW5kaW5nLCBAcGF0Y2hMaW5l
cykgLiAiXG4iOyAjIHBhdGNoKDEpIGV4cGVjdHMgYW4gZXh0cmEgdHJhaWxpbmcgbmV3bGluZS4K
K30KKwogMTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcmVzb2x2ZS1DaGFuZ2VM
b2dzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5nZUxvZ3MKaW5kZXggZGI0OTdm
OS4uYTJmNjFjYyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5n
ZUxvZ3MKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5nZUxvZ3MKQEAgLTQ0
LDcgKzQ0LDYgQEAgc3ViIGNhbm9uaWNhbFJlbGF0aXZlUGF0aCgkKTsKIHN1YiBjb25mbGljdEZp
bGVzKCQpOwogc3ViIGZpbmRDaGFuZ2VMb2coJCk7CiBzdWIgZmluZFVubWVyZ2VkQ2hhbmdlTG9n
cygpOwotc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOwogc3ViIGZpeE1lcmdlZENoYW5nZUxvZ3Mo
JDtAKTsKIHN1YiBmaXhPbmVNZXJnZWRDaGFuZ2VMb2coJCk7CiBzdWIgaGFzR2l0VW5tZXJnZWRG
aWxlcygpOwpAQCAtMjgxLDU3ICsyODAsNiBAQCBzdWIgZmluZFVubWVyZ2VkQ2hhbmdlTG9ncygp
CiAgICAgcmV0dXJuIEByZXN1bHRzOwogfQogCi1zdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKLXsK
LSAgICBteSAkcGF0Y2ggPSBzaGlmdDsKLSAgICBteSAkY29udGV4dExpbmVDb3VudCA9IDM7Ci0K
LSAgICByZXR1cm4gJHBhdGNoIGlmICRwYXRjaCAhfiAvXG5AQCAtMSwoXGQrKSBcKzEsKFxkKykg
QEBcbiggLipcbikrKFwrLipcbikrKCAuKlxuKXskY29udGV4dExpbmVDb3VudH0kL207Ci0gICAg
bXkgKCRvbGRMaW5lQ291bnQsICRuZXdMaW5lQ291bnQpID0gKCQxLCAkMik7Ci0gICAgcmV0dXJu
ICRwYXRjaCBpZiAkb2xkTGluZUNvdW50IDw9ICRjb250ZXh0TGluZUNvdW50OwotCi0gICAgIyBU
aGUgZGlmZigxKSBjb21tYW5kIGlzIGdyZWVkeSB3aGVuIG1hdGNoaW5nIGxpbmVzLCBzbyBhIG5l
dyBDaGFuZ2VMb2cgZW50cnkgd2lsbAotICAgICMgaGF2ZSBsaW5lcyBvZiBjb250ZXh0IGF0IHRo
ZSB0b3Agb2YgYSBwYXRjaCB3aGVuIHRoZSBleGlzdGluZyBlbnRyeSBoYXMgdGhlIHNhbWUKLSAg
ICAjIGRhdGUgYW5kIGF1dGhvciBhcyB0aGUgbmV3IGVudHJ5LiAgVGhpcyBuaWZ0eSBsb29wIGFs
dGVycyBhIENoYW5nZUxvZyBwYXRjaCBzbwotICAgICMgdGhhdCB0aGUgYWRkZWQgbGluZXMgKCIr
IikgaW4gdGhlIHBhdGNoIGFsd2F5cyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQotICAg
ICMgcGF0Y2ggYW5kIHRoZXJlIGFyZSBubyBpbml0aWFsIGxpbmVzIG9mIGNvbnRleHQuCi0gICAg
bXkgJG5ld1BhdGNoOwotICAgIG15ICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICBteSAkb2xk
Q29udGVudExpbmVDb3VudFJlZHVjdGlvbiA9ICRvbGRMaW5lQ291bnQgLSAkY29udGV4dExpbmVD
b3VudDsKLSAgICBteSAkbmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0ID0gJG5ld0xp
bmVDb3VudCAtICRvbGRMaW5lQ291bnQgLSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbjsK
LSAgICBteSAoJHN0YXRlSGVhZGVyLCAkc3RhdGVQcmVDb250ZXh0LCAkc3RhdGVOZXdDaGFuZ2Vz
LCAkc3RhdGVQb3N0Q29udGV4dCkgPSAoMS4uNCk7Ci0gICAgbXkgJHN0YXRlID0gJHN0YXRlSGVh
ZGVyOwotICAgIGZvcmVhY2ggbXkgJGxpbmUgKHNwbGl0KC9cbi8sICRwYXRjaCkpIHsKLSAgICAg
ICAgJGxpbmVDb3VudEluU3RhdGUrKzsKLSAgICAgICAgaWYgKCRzdGF0ZSA9PSAkc3RhdGVIZWFk
ZXIgJiYgJGxpbmUgPX4gL15AQCAtMSwkb2xkTGluZUNvdW50IFwrMSwkbmV3TGluZUNvdW50IEBc
QCQvKSB7Ci0gICAgICAgICAgICAkbGluZSA9ICJAQCAtMSwkY29udGV4dExpbmVDb3VudCArMSwi
IC4gKCRuZXdMaW5lQ291bnQgLSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikgLiAiIEBA
IjsKLSAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAgICRzdGF0
ZSA9ICRzdGF0ZVByZUNvbnRleHQ7Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVQ
cmVDb250ZXh0ICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIiAiKSB7Ci0gICAgICAgICAgICAk
bGluZSA9ICIrIiAuIHN1YnN0cigkbGluZSwgMSk7Ci0gICAgICAgICAgICBpZiAoJGxpbmVDb3Vu
dEluU3RhdGUgPT0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIHsKLSAgICAgICAgICAg
ICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAgICAgJHN0YXRlID0gJHN0
YXRlTmV3Q2hhbmdlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNpZiAoJHN0YXRlID09
ICRzdGF0ZU5ld0NoYW5nZXMgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiKyIpIHsKLSAgICAg
ICAgICAgICMgTm8gY2hhbmdlcyB0byB0aGVzZSBsaW5lcwotICAgICAgICAgICAgaWYgKCRsaW5l
Q291bnRJblN0YXRlID09ICRuZXdDb250ZW50TGluZUNvdW50V2l0aG91dENvbnRleHQpIHsKLSAg
ICAgICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAgICAgJHN0
YXRlID0gJHN0YXRlUG9zdENvbnRleHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYg
KCRzdGF0ZSA9PSAkc3RhdGVQb3N0Q29udGV4dCkgewotICAgICAgICAgICAgaWYgKHN1YnN0cigk
bGluZSwgMCwgMSkgZXEgIisiICYmICRsaW5lQ291bnRJblN0YXRlIDw9ICRvbGRDb250ZW50TGlu
ZUNvdW50UmVkdWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgJGxpbmUgPSAiICIgLiBzdWJzdHIo
JGxpbmUsIDEpOwotICAgICAgICAgICAgfSBlbHNpZiAoJGxpbmVDb3VudEluU3RhdGUgPiAkY29u
dGV4dExpbmVDb3VudCAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAgICAgICAg
ICAgICAgIG5leHQ7ICMgRGlzY2FyZAotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
ICRuZXdQYXRjaCAuPSAkbGluZSAuICJcbiI7Ci0gICAgfQotCi0gICAgcmV0dXJuICRuZXdQYXRj
aDsKLX0KLQogc3ViIGZpeE1lcmdlZENoYW5nZUxvZ3MoJDtAKQogewogICAgIG15ICRyZXZpc2lv
blJhbmdlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3N2bi1hcHBs
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CmluZGV4IDE5YzhjNTYuLmJkYjdjZDIg
MTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvc3ZuLWFwcGx5CkBAIC03NCw3ICs3NCw2IEBAIHVzZSBWQ1NVdGlsczsKIHN1
YiBhZGREaXJlY3Rvcmllc0lmTmVlZGVkKCQpOwogc3ViIGFwcGx5UGF0Y2goJCQ7JCk7CiBzdWIg
Y2hlY2tzdW0oJCk7Ci1zdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCk7CiBzdWIgZ2l0ZGlmZjJzdm5k
aWZmKCQpOwogc3ViIGhhbmRsZUJpbmFyeUNoYW5nZSgkJCk7CiBzdWIgaXNEaXJlY3RvcnlFbXB0
eUZvclJlbW92YWwoJCk7CkBAIC0yNTgsNTcgKzI1Nyw2IEBAIHN1YiBjaGVja3N1bSgkKQogICAg
IHJldHVybiAkY2hlY2tzdW07CiB9CiAKLXN1YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKQotewotICAg
IG15ICRwYXRjaCA9IHNoaWZ0OwotICAgIG15ICRjb250ZXh0TGluZUNvdW50ID0gMzsKLQotICAg
IHJldHVybiAkcGF0Y2ggaWYgJHBhdGNoICF+IC9cbkBAIC0xLChcZCspIFwrMSwoXGQrKSBAQFxy
P1xuKCAuKlxyP1xuKSsoXCsuKlxyP1xuKSsoIC4qXHI/XG4peyRjb250ZXh0TGluZUNvdW50fSQv
bTsKLSAgICBteSAoJG9sZExpbmVDb3VudCwgJG5ld0xpbmVDb3VudCkgPSAoJDEsICQyKTsKLSAg
ICByZXR1cm4gJHBhdGNoIGlmICRvbGRMaW5lQ291bnQgPD0gJGNvbnRleHRMaW5lQ291bnQ7Ci0K
LSAgICAjIFRoZSBkaWZmKDEpIGNvbW1hbmQgaXMgZ3JlZWR5IHdoZW4gbWF0Y2hpbmcgbGluZXMs
IHNvIGEgbmV3IENoYW5nZUxvZyBlbnRyeSB3aWxsCi0gICAgIyBoYXZlIGxpbmVzIG9mIGNvbnRl
eHQgYXQgdGhlIHRvcCBvZiBhIHBhdGNoIHdoZW4gdGhlIGV4aXN0aW5nIGVudHJ5IGhhcyB0aGUg
c2FtZQotICAgICMgZGF0ZSBhbmQgYXV0aG9yIGFzIHRoZSBuZXcgZW50cnkuICBUaGlzIG5pZnR5
IGxvb3AgYWx0ZXJzIGEgQ2hhbmdlTG9nIHBhdGNoIHNvCi0gICAgIyB0aGF0IHRoZSBhZGRlZCBs
aW5lcyAoIisiKSBpbiB0aGUgcGF0Y2ggYWx3YXlzIHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2Yg
dGhlCi0gICAgIyBwYXRjaCBhbmQgdGhlcmUgYXJlIG5vIGluaXRpYWwgbGluZXMgb2YgY29udGV4
dC4KLSAgICBteSAkbmV3UGF0Y2g7Ci0gICAgbXkgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAg
IG15ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uID0gJG9sZExpbmVDb3VudCAtICRjb250
ZXh0TGluZUNvdW50OwotICAgIG15ICRuZXdDb250ZW50TGluZUNvdW50V2l0aG91dENvbnRleHQg
PSAkbmV3TGluZUNvdW50IC0gJG9sZExpbmVDb3VudCAtICRvbGRDb250ZW50TGluZUNvdW50UmVk
dWN0aW9uOwotICAgIG15ICgkc3RhdGVIZWFkZXIsICRzdGF0ZVByZUNvbnRleHQsICRzdGF0ZU5l
d0NoYW5nZXMsICRzdGF0ZVBvc3RDb250ZXh0KSA9ICgxLi40KTsKLSAgICBteSAkc3RhdGUgPSAk
c3RhdGVIZWFkZXI7Ci0gICAgZm9yZWFjaCBteSAkbGluZSAoc3BsaXQoL1xuLywgJHBhdGNoKSkg
ewotICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSsrOwotICAgICAgICBpZiAoJHN0YXRlID09ICRz
dGF0ZUhlYWRlciAmJiAkbGluZSA9fiAvXkBAIC0xLCRvbGRMaW5lQ291bnQgXCsxLCRuZXdMaW5l
Q291bnQgQFxAJC8pIHsKLSAgICAgICAgICAgICRsaW5lID0gIkBAIC0xLCRjb250ZXh0TGluZUNv
dW50ICsxLCIgLiAoJG5ld0xpbmVDb3VudCAtICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9u
KSAuICIgQEAiOwotICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAg
ICAgJHN0YXRlID0gJHN0YXRlUHJlQ29udGV4dDsKLSAgICAgICAgfSBlbHNpZiAoJHN0YXRlID09
ICRzdGF0ZVByZUNvbnRleHQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsKLSAgICAg
ICAgICAgICRsaW5lID0gIisiIC4gc3Vic3RyKCRsaW5lLCAxKTsKLSAgICAgICAgICAgIGlmICgk
bGluZUNvdW50SW5TdGF0ZSA9PSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikgewotICAg
ICAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAgICAgICAkc3Rh
dGUgPSAkc3RhdGVOZXdDaGFuZ2VzOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2lmICgk
c3RhdGUgPT0gJHN0YXRlTmV3Q2hhbmdlcyAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIrIikg
ewotICAgICAgICAgICAgIyBObyBjaGFuZ2VzIHRvIHRoZXNlIGxpbmVzCi0gICAgICAgICAgICBp
ZiAoJGxpbmVDb3VudEluU3RhdGUgPT0gJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29udGV4
dCkgewotICAgICAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAg
ICAgICAkc3RhdGUgPSAkc3RhdGVQb3N0Q29udGV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZVBvc3RDb250ZXh0KSB7Ci0gICAgICAgICAgICBpZiAo
c3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiKyIgJiYgJGxpbmVDb3VudEluU3RhdGUgPD0gJG9sZENv
bnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICAkbGluZSA9ICIgIiAu
IHN1YnN0cigkbGluZSwgMSk7Ci0gICAgICAgICAgICB9IGVsc2lmICgkbGluZUNvdW50SW5TdGF0
ZSA+ICRjb250ZXh0TGluZUNvdW50ICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIiAiKSB7Ci0g
ICAgICAgICAgICAgICAgbmV4dDsgIyBEaXNjYXJkCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgJG5ld1BhdGNoIC49ICRsaW5lIC4gIlxuIjsKLSAgICB9Ci0KLSAgICByZXR1cm4g
JG5ld1BhdGNoOwotfQotCiBzdWIgZ2l0ZGlmZjJzdm5kaWZmKCQpCiB7CiAgICAgJF8gPSBzaGlm
dCBAXzsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaCBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaAppbmRleCAzZjQwNzgzLi4zYjU3
OTc1IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3N2bi1jcmVhdGUtcGF0Y2gKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoCkBAIC02MSw3ICs2MSw2IEBA
IHN1YiBmaW5kQmFzZVVybCgkKTsKIHN1YiBmaW5kTWltZVR5cGUoJDskKTsKIHN1YiBmaW5kTW9k
aWZpY2F0aW9uVHlwZSgkKTsKIHN1YiBmaW5kU291cmNlRmlsZUFuZFJldmlzaW9uKCQpOwotc3Vi
IGZpeENoYW5nZUxvZ1BhdGNoKCQpOwogc3ViIGdlbmVyYXRlRGlmZigkJCk7CiBzdWIgZ2VuZXJh
dGVGaWxlTGlzdCgkXCUpOwogc3ViIGlzQmluYXJ5TWltZVR5cGUoJCk7CkBAIC0yMTEsNTcgKzIx
MCw2IEBAIHN1YiBmaW5kU291cmNlRmlsZUFuZFJldmlzaW9uKCQpCiAgICAgcmV0dXJuICgkc291
cmNlRmlsZSwgJHNvdXJjZVJldmlzaW9uKTsKIH0KIAotc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQp
Ci17Ci0gICAgbXkgJHBhdGNoID0gc2hpZnQ7Ci0gICAgbXkgJGNvbnRleHRMaW5lQ291bnQgPSAz
OwotCi0gICAgcmV0dXJuICRwYXRjaCBpZiAkcGF0Y2ggIX4gL1xuQEAgLTEsKFxkKykgXCsxLChc
ZCspIEBAXG4oIC4qXG4pKyhcKy4qXG4pKyggLipcbil7JGNvbnRleHRMaW5lQ291bnR9JC9tOwot
ICAgIG15ICgkb2xkTGluZUNvdW50LCAkbmV3TGluZUNvdW50KSA9ICgkMSwgJDIpOwotICAgIHJl
dHVybiAkcGF0Y2ggaWYgJG9sZExpbmVDb3VudCA8PSAkY29udGV4dExpbmVDb3VudDsKLQotICAg
ICMgVGhlIGRpZmYoMSkgY29tbWFuZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBsaW5lcywgc28g
YSBuZXcgQ2hhbmdlTG9nIGVudHJ5IHdpbGwKLSAgICAjIGhhdmUgbGluZXMgb2YgY29udGV4dCBh
dCB0aGUgdG9wIG9mIGEgcGF0Y2ggd2hlbiB0aGUgZXhpc3RpbmcgZW50cnkgaGFzIHRoZSBzYW1l
Ci0gICAgIyBkYXRlIGFuZCBhdXRob3IgYXMgdGhlIG5ldyBlbnRyeS4gIFRoaXMgbmlmdHkgbG9v
cCBhbHRlcnMgYSBDaGFuZ2VMb2cgcGF0Y2ggc28KLSAgICAjIHRoYXQgdGhlIGFkZGVkIGxpbmVz
ICgiKyIpIGluIHRoZSBwYXRjaCBhbHdheXMgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUK
LSAgICAjIHBhdGNoIGFuZCB0aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBvZiBjb250ZXh0Lgot
ICAgIG15ICRuZXdQYXRjaDsKLSAgICBteSAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgbXkg
JG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24gPSAkb2xkTGluZUNvdW50IC0gJGNvbnRleHRM
aW5lQ291bnQ7Ci0gICAgbXkgJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29udGV4dCA9ICRu
ZXdMaW5lQ291bnQgLSAkb2xkTGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rp
b247Ci0gICAgbXkgKCRzdGF0ZUhlYWRlciwgJHN0YXRlUHJlQ29udGV4dCwgJHN0YXRlTmV3Q2hh
bmdlcywgJHN0YXRlUG9zdENvbnRleHQpID0gKDEuLjQpOwotICAgIG15ICRzdGF0ZSA9ICRzdGF0
ZUhlYWRlcjsKLSAgICBmb3JlYWNoIG15ICRsaW5lIChzcGxpdCgvXG4vLCAkcGF0Y2gpKSB7Ci0g
ICAgICAgICRsaW5lQ291bnRJblN0YXRlKys7Ci0gICAgICAgIGlmICgkc3RhdGUgPT0gJHN0YXRl
SGVhZGVyICYmICRsaW5lID1+IC9eQEAgLTEsJG9sZExpbmVDb3VudCBcKzEsJG5ld0xpbmVDb3Vu
dCBAXEAkLykgewotICAgICAgICAgICAgJGxpbmUgPSAiQEAgLTEsJGNvbnRleHRMaW5lQ291bnQg
KzEsIiAuICgkbmV3TGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIC4g
IiBAQCI7Ci0gICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAk
c3RhdGUgPSAkc3RhdGVQcmVDb250ZXh0OwotICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0
YXRlUHJlQ29udGV4dCAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAgICAgICAg
ICAgJGxpbmUgPSAiKyIgLiBzdWJzdHIoJGxpbmUsIDEpOwotICAgICAgICAgICAgaWYgKCRsaW5l
Q291bnRJblN0YXRlID09ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgICAgICRzdGF0ZSA9
ICRzdGF0ZU5ld0NoYW5nZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0
ZSA9PSAkc3RhdGVOZXdDaGFuZ2VzICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIisiKSB7Ci0g
ICAgICAgICAgICAjIE5vIGNoYW5nZXMgdG8gdGhlc2UgbGluZXMKLSAgICAgICAgICAgIGlmICgk
bGluZUNvdW50SW5TdGF0ZSA9PSAkbmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0KSB7
Ci0gICAgICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgICAg
ICRzdGF0ZSA9ICRzdGF0ZVBvc3RDb250ZXh0OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2lmICgkc3RhdGUgPT0gJHN0YXRlUG9zdENvbnRleHQpIHsKLSAgICAgICAgICAgIGlmIChzdWJz
dHIoJGxpbmUsIDAsIDEpIGVxICIrIiAmJiAkbGluZUNvdW50SW5TdGF0ZSA8PSAkb2xkQ29udGVu
dExpbmVDb3VudFJlZHVjdGlvbikgewotICAgICAgICAgICAgICAgICRsaW5lID0gIiAiIC4gc3Vi
c3RyKCRsaW5lLCAxKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRsaW5lQ291bnRJblN0YXRlID4g
JGNvbnRleHRMaW5lQ291bnQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsKLSAgICAg
ICAgICAgICAgICBuZXh0OyAjIERpc2NhcmQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICAkbmV3UGF0Y2ggLj0gJGxpbmUgLiAiXG4iOwotICAgIH0KLQotICAgIHJldHVybiAkbmV3
UGF0Y2g7Ci19Ci0KIHN1YiBnZW5lcmF0ZURpZmYoJCQpCiB7CiAgICAgbXkgKCRmaWxlRGF0YSwg
JHByZWZpeCkgPSBAXzsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBw
bHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3N2bi11bmFwcGx5CmluZGV4IGE0Y2VjOWEuLjQ3ZmVl
NGEgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseQpAQCAtNzEsNyArNzEsNiBAQCB1c2UgbGliICRG
aW5kQmluOjpCaW47CiB1c2UgVkNTVXRpbHM7CiAKIHN1YiBjaGVja3N1bSgkKTsKLXN1YiBmaXhD
aGFuZ2VMb2dQYXRjaCgkKTsKIHN1YiBnaXRkaWZmMnN2bmRpZmYoJCk7CiBzdWIgcGF0Y2goJCk7
CiBzdWIgcmV2ZXJ0RGlyZWN0b3JpZXMoKTsKQEAgLTE1OCw1NyArMTU3LDYgQEAgc3ViIGNoZWNr
c3VtKCQpCiAgICAgcmV0dXJuICRjaGVja3N1bTsKIH0KIAotc3ViIGZpeENoYW5nZUxvZ1BhdGNo
KCQpCi17Ci0gICAgbXkgJHBhdGNoID0gc2hpZnQ7Ci0gICAgbXkgJGNvbnRleHRMaW5lQ291bnQg
PSAzOwotCi0gICAgcmV0dXJuICRwYXRjaCBpZiAkcGF0Y2ggIX4gL1xuQEAgLTEsKFxkKykgXCsx
LChcZCspIEBAXG4oIC4qXG4pKyhcKy4qXG4pKyggLipcbil7JGNvbnRleHRMaW5lQ291bnR9JC9t
OwotICAgIG15ICgkb2xkTGluZUNvdW50LCAkbmV3TGluZUNvdW50KSA9ICgkMSwgJDIpOwotICAg
IHJldHVybiAkcGF0Y2ggaWYgJG9sZExpbmVDb3VudCA8PSAkY29udGV4dExpbmVDb3VudDsKLQot
ICAgICMgVGhlIGRpZmYoMSkgY29tbWFuZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBsaW5lcywg
c28gYSBuZXcgQ2hhbmdlTG9nIGVudHJ5IHdpbGwKLSAgICAjIGhhdmUgbGluZXMgb2YgY29udGV4
dCBhdCB0aGUgdG9wIG9mIGEgcGF0Y2ggd2hlbiB0aGUgZXhpc3RpbmcgZW50cnkgaGFzIHRoZSBz
YW1lCi0gICAgIyBkYXRlIGFuZCBhdXRob3IgYXMgdGhlIG5ldyBlbnRyeS4gIFRoaXMgbmlmdHkg
bG9vcCBhbHRlcnMgYSBDaGFuZ2VMb2cgcGF0Y2ggc28KLSAgICAjIHRoYXQgdGhlIGFkZGVkIGxp
bmVzICgiKyIpIGluIHRoZSBwYXRjaCBhbHdheXMgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0
aGUKLSAgICAjIHBhdGNoIGFuZCB0aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBvZiBjb250ZXh0
LgotICAgIG15ICRuZXdQYXRjaDsKLSAgICBteSAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAg
bXkgJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24gPSAkb2xkTGluZUNvdW50IC0gJGNvbnRl
eHRMaW5lQ291bnQ7Ci0gICAgbXkgJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29udGV4dCA9
ICRuZXdMaW5lQ291bnQgLSAkb2xkTGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1
Y3Rpb247Ci0gICAgbXkgKCRzdGF0ZUhlYWRlciwgJHN0YXRlUHJlQ29udGV4dCwgJHN0YXRlTmV3
Q2hhbmdlcywgJHN0YXRlUG9zdENvbnRleHQpID0gKDEuLjQpOwotICAgIG15ICRzdGF0ZSA9ICRz
dGF0ZUhlYWRlcjsKLSAgICBmb3JlYWNoIG15ICRsaW5lIChzcGxpdCgvXG4vLCAkcGF0Y2gpKSB7
Ci0gICAgICAgICRsaW5lQ291bnRJblN0YXRlKys7Ci0gICAgICAgIGlmICgkc3RhdGUgPT0gJHN0
YXRlSGVhZGVyICYmICRsaW5lID1+IC9eQEAgLTEsJG9sZExpbmVDb3VudCBcKzEsJG5ld0xpbmVD
b3VudCBAXEAkLykgewotICAgICAgICAgICAgJGxpbmUgPSAiQEAgLTEsJGNvbnRleHRMaW5lQ291
bnQgKzEsIiAuICgkbmV3TGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24p
IC4gIiBAQCI7Ci0gICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAg
ICAkc3RhdGUgPSAkc3RhdGVQcmVDb250ZXh0OwotICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0g
JHN0YXRlUHJlQ29udGV4dCAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAgICAg
ICAgICAgJGxpbmUgPSAiKyIgLiBzdWJzdHIoJGxpbmUsIDEpOwotICAgICAgICAgICAgaWYgKCRs
aW5lQ291bnRJblN0YXRlID09ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7Ci0gICAg
ICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgICAgICRzdGF0
ZSA9ICRzdGF0ZU5ld0NoYW5nZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRz
dGF0ZSA9PSAkc3RhdGVOZXdDaGFuZ2VzICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIisiKSB7
Ci0gICAgICAgICAgICAjIE5vIGNoYW5nZXMgdG8gdGhlc2UgbGluZXMKLSAgICAgICAgICAgIGlm
ICgkbGluZUNvdW50SW5TdGF0ZSA9PSAkbmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0
KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAg
ICAgICRzdGF0ZSA9ICRzdGF0ZVBvc3RDb250ZXh0OwotICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlUG9zdENvbnRleHQpIHsKLSAgICAgICAgICAgIGlmIChz
dWJzdHIoJGxpbmUsIDAsIDEpIGVxICIrIiAmJiAkbGluZUNvdW50SW5TdGF0ZSA8PSAkb2xkQ29u
dGVudExpbmVDb3VudFJlZHVjdGlvbikgewotICAgICAgICAgICAgICAgICRsaW5lID0gIiAiIC4g
c3Vic3RyKCRsaW5lLCAxKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRsaW5lQ291bnRJblN0YXRl
ID4gJGNvbnRleHRMaW5lQ291bnQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsKLSAg
ICAgICAgICAgICAgICBuZXh0OyAjIERpc2NhcmQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICAkbmV3UGF0Y2ggLj0gJGxpbmUgLiAiXG4iOwotICAgIH0KLQotICAgIHJldHVybiAk
bmV3UGF0Y2g7Ci19Ci0KIHN1YiBnaXRkaWZmMnN2bmRpZmYoJCkKIHsKICAgICAkXyA9IHNoaWZ0
IEBfOw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41746</attachid>
            <date>2009-10-23 13:39:08 -0700</date>
            <delta_ts>2009-10-26 15:24:56 -0700</delta_ts>
            <desc>Updated ChangeLog</desc>
            <filename>bug-30683-20091023133907.patch</filename>
            <type>text/plain</type>
            <size>16509</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiZDg2MzlhLi4wMGQ5MmNkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTAt
MjIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSdzIGZpeENoYW5nZUxvZ1BhdGNo
IGZ1bmN0aW9uIHNlZW1zIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA2ODMKKworICAgICAgICBTaGFyZSBmaXhDaGFuZ2VMb2dQYXRjaCBi
ZXR3ZWVuIHN2bi1hcHBseSBhbmQgc3ZuLWNyZWF0ZS1wYXRjaCB1c2luZyBWQ1NVdGlscy5wbS4K
KyAgICAgICAgQ2hhbmdlIGZpeENoYW5nZUxvZ1BhdGNoJ3MgYWxnb3JpdGhtIHRvIGJlIGFibGUg
dG8gaGFuZGxlIHBhdGNoZXMgc3RhcnRpbmcgb24gYSBsaW5lIG90aGVyIHRoYW4gMS4KKworICAg
ICAgICAqIFNjcmlwdHMvVkNTVXRpbHMucG06CisgICAgICAgICogU2NyaXB0cy9yZXNvbHZlLUNo
YW5nZUxvZ3M6CisgICAgICAgICogU2NyaXB0cy9zdm4tYXBwbHk6CisgICAgICAgICogU2NyaXB0
cy9zdm4tY3JlYXRlLXBhdGNoOgorICAgICAgICAqIFNjcmlwdHMvc3ZuLXVuYXBwbHk6CisKIDIw
MDktMTAtMjMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvVkNT
VXRpbHMucG0gYi9XZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCmluZGV4IDZlYzEyYzku
LmM3MTM3YzMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQpAQCAtNTMsNiArNTMsNyBAQCBCRUdJ
TiB7CiAgICAgICAgICZtYWtlRmlsZVBhdGhSZWxhdGl2ZQogICAgICAgICAmcGF0aFJlbGF0aXZl
VG9TVk5SZXBvc2l0b3J5Um9vdEZvclBhdGgKICAgICAgICAgJnN2blJldmlzaW9uRm9yRGlyZWN0
b3J5CisgICAgICAgICZmaXhDaGFuZ2VMb2dQYXRjaAogICAgICk7CiAgICAgJUVYUE9SVF9UQUdT
ID0gKCApOwogICAgIEBFWFBPUlRfT0sgICA9ICgpOwpAQCAtMjY4LDQgKzI2OSw2NSBAQCBzdWIg
bWFrZUZpbGVQYXRoUmVsYXRpdmUoJCkKICAgICByZXR1cm4gJGdpdFJvb3QgLiAkcGF0aDsKIH0K
IAorIyBUaGUgZGlmZigxKSBjb21tYW5kIGlzIGdyZWVkeSB3aGVuIG1hdGNoaW5nIGxpbmVzLCBz
byBhIG5ldyBDaGFuZ2VMb2cgZW50cnkgd2lsbAorIyBoYXZlIGxpbmVzIG9mIGNvbnRleHQgYXQg
dGhlIHRvcCBvZiBhIHBhdGNoIHdoZW4gdGhlIGV4aXN0aW5nIGVudHJ5IGhhcyB0aGUgc2FtZQor
IyBkYXRlIGFuZCBhdXRob3IgYXMgdGhlIG5ldyBlbnRyeS4gIEFsdGVyIHRoZSBDaGFuZ2VMb2cg
cGF0Y2ggc28KKyMgdGhhdCB0aGUgYWRkZWQgbGluZXMgKCIrIikgaW4gdGhlIHBhdGNoIGFsd2F5
cyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorIyBwYXRjaCBhbmQgdGhlcmUgYXJlIG5v
IGluaXRpYWwgbGluZXMgb2YgY29udGV4dC4KK3N1YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKQorewor
ICAgIG15ICRwYXRjaCA9IHNoaWZ0OyAjICRwYXRjaCB3aWxsIG9ubHkgY29udGFpbiBwYXRjaCBm
cmFnbWVudHMgZm9yIENoYW5nZUxvZy4KKyAgICBwcmludCAiXG5cbiRwYXRjaFxuXG4iOworCisg
ICAgJHBhdGNoID1+IC8oXHI/XG4pLzsKKyAgICBteSAkbGluZUVuZGluZyA9ICQxOworICAgIG15
IEBwYXRjaExpbmVzID0gc3BsaXQoLyRsaW5lRW5kaW5nLywgJHBhdGNoKTsKKworICAgICMgZS5n
LiAyMDA5LTA2LTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICBteSAkZGF0
ZUxpbmVSZWdleHBTdHJpbmcgPSAnXlwrKFxkezR9LVxkezJ9LVxkezJ9KScgIyBDb25zdW1lIHRo
ZSBsZWFkaW5nICcrJyBhbmQgdGhlIGRhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC4gJ1xzKyguKylccysnICMgQ29uc3VtZSB0aGUgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLiAnPChbXjw+XSspPiQnOyAjIEFuZCBmaW5hbGx5IHRoZSBlbWFpbCBhZGRyZXNz
LgorCisgICAgIyBGaWd1cmUgb3V0IHdoZXJlIHRoZSBwYXRjaCBjb250ZW50cyBzdGFydCBhbmQg
c3RvcC4KKyAgICBteSAkcGF0Y2hIZWFkZXJJbmRleDsKKyAgICBteSAkZmlyc3RDb250ZW50SW5k
ZXg7CisgICAgbXkgJHRyYWlsaW5nQ29udGV4dEluZGV4OworICAgIG15ICRkYXRlSW5kZXg7Cisg
ICAgbXkgJHBhdGNoRW5kSW5kZXggPSBzY2FsYXIoQHBhdGNoTGluZXMpOworICAgIGZvciAobXkg
JGluZGV4ID0gNDsgJGluZGV4IDwgQHBhdGNoTGluZXM7ICsrJGluZGV4KSB7ICMgU3RhcnQgYXQg
NCwgbm8gbmVlZCB0byBzY2FuIHRoZSBAQCwgSW5kZXgsICsrKyBvciAtLS0gaGVhZGVyIGxpbmVz
LgorICAgICAgICBteSAkbGluZSA9ICRwYXRjaExpbmVzWyRpbmRleF07CisgICAgICAgIGlmICgk
bGluZSA9fiAvXlxAXEAgLVxkKyxcZCsgXCtcZCssXGQrIFxAXEAkLykgeyAjIGUuZy4gQEAgLTEs
NSArMSwxOCBAQAorICAgICAgICAgICAgaWYgKCRwYXRjaEhlYWRlckluZGV4KSB7CisgICAgICAg
ICAgICAgICAgJHBhdGNoRW5kSW5kZXggPSAkaW5kZXg7ICMgV2Ugb25seSBib3RoZXIgdG8gZml4
IHVwIHRoZSBmaXJzdCBwYXRjaCBmcmFnbWVudC4KKyAgICAgICAgICAgICAgICBsYXN0OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgJHBhdGNoSGVhZGVySW5kZXggPSAkaW5kZXg7CisgICAg
ICAgIH0KKyAgICAgICAgJGZpcnN0Q29udGVudEluZGV4ID0gJGluZGV4IGlmICghJGZpcnN0Q29u
dGVudEluZGV4ICYmICRsaW5lID1+IC9eXCsvKTsgIyBJbXBvcnRhbnQgdGhhdCB3ZSBza2lwcGVk
ICsrKyBzbyB0aGF0IHRoaXMgZG9lc24ndCBtYXRjaCBpdC4KKyAgICAgICAgJGRhdGVJbmRleCA9
ICRpbmRleCBpZiAoJGxpbmUgPX4gLyRkYXRlTGluZVJlZ2V4cFN0cmluZy8pOworICAgICAgICAk
dHJhaWxpbmdDb250ZXh0SW5kZXggPSAkaW5kZXggaWYgKCRmaXJzdENvbnRlbnRJbmRleCAmJiAh
JHRyYWlsaW5nQ29udGV4dEluZGV4ICYmICRsaW5lID1+IC9eIC8pOworICAgIH0KKyAgICBteSAk
Y29udGVudExpbmVDb3VudCA9ICR0cmFpbGluZ0NvbnRleHRJbmRleCAtICRmaXJzdENvbnRlbnRJ
bmRleDsKKyAgICBteSAkdHJhaWxpbmdDb250ZXh0TGluZUNvdW50ID0gJHBhdGNoRW5kSW5kZXgg
LSAkdHJhaWxpbmdDb250ZXh0SW5kZXg7CisKKyAgICAjIElmIHdlIGRpZG4ndCBmaW5kIGEgZGF0
ZSBsaW5lIGluIHRoZSBjb250ZW50IHRoZW4gdGhpcyBpcyBub3QgYSBwYXRjaCB3ZSBzaG91bGQg
dHJ5IGFuZCBmaXguCisgICAgcmV0dXJuIGlmICghJGRhdGVJbmRleCk7CisKKyAgICAjIFdlIG9u
bHkgbmVlZCB0byBkbyBhbnl0aGluZyBpZiB0aGUgZGF0ZSBsaW5lIGlzIG5vdCB0aGUgZmlyc3Qg
Y29udGVudCBsaW5lLgorICAgIHJldHVybiBpZiAoJGRhdGVJbmRleCA9PSAkZmlyc3RDb250ZW50
SW5kZXgpOworCisgICAgIyBXcml0ZSB0aGUgbmV3IHBhdGNoLgorICAgIG15ICR0b3RhbE5ld0Nv
bnRlbnRMaW5lcyA9ICRjb250ZW50TGluZUNvdW50ICsgJHRyYWlsaW5nQ29udGV4dExpbmVDb3Vu
dDsKKyAgICAkcGF0Y2hMaW5lc1skcGF0Y2hIZWFkZXJJbmRleF0gPSAiQEAgLTEsJHRyYWlsaW5n
Q29udGV4dExpbmVDb3VudCArMSwkdG90YWxOZXdDb250ZW50TGluZXMgQEAiOyAjIFdyaXRlIGEg
bmV3IGhlYWRlci4KKyAgICBteSBAcmVwZWF0ZWRMaW5lcyA9IHNwbGljZShAcGF0Y2hMaW5lcywg
JGRhdGVJbmRleCwgJHRyYWlsaW5nQ29udGV4dEluZGV4IC0gJGRhdGVJbmRleCk7ICMgVGhlIGRh
dGUgbGluZSBhbmQgYWxsIHRoZSBjb250ZW50IGFmdGVyIGl0IHRoYXQgZGlmZiBzYXcgYXMgcmVw
ZWF0ZWQuCisgICAgc3BsaWNlKEBwYXRjaExpbmVzLCAkZmlyc3RDb250ZW50SW5kZXgsIDAsIEBy
ZXBlYXRlZExpbmVzKTsgIyBNb3ZlIHRoZSByZXBlYXRlZCBjb250ZW50IHRvIHRoZSB0b3AuCisg
ICAgZm9yZWFjaCBteSAkbGluZSAoQHJlcGVhdGVkTGluZXMpIHsKKyAgICAgICAgJGxpbmUgPX4g
cy9eXCsvIC87CisgICAgfQorICAgIHNwbGljZShAcGF0Y2hMaW5lcywgJHRyYWlsaW5nQ29udGV4
dEluZGV4LCAkcGF0Y2hFbmRJbmRleCwgQHJlcGVhdGVkTGluZXMpOyAjIFJlcGxhY2UgdHJhaWxp
bmcgY29udGV4dCB3aXRoIHRoZSByZXBlYXRlZCBjb250ZW50LgorICAgIHNwbGljZShAcGF0Y2hM
aW5lcywgJHBhdGNoSGVhZGVySW5kZXggKyAxLCAkZmlyc3RDb250ZW50SW5kZXggLSAkcGF0Y2hI
ZWFkZXJJbmRleCAtIDEpOyAjIFJlbW92ZSBhbnkgbGVhZGluZyBjb250ZXh0LgorCisgICAgcmV0
dXJuIGpvaW4oJGxpbmVFbmRpbmcsIEBwYXRjaExpbmVzKSAuICJcbiI7ICMgcGF0Y2goMSkgZXhw
ZWN0cyBhbiBleHRyYSB0cmFpbGluZyBuZXdsaW5lLgorfQorCiAxOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5nZUxvZ3MgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3Jlc29sdmUtQ2hhbmdlTG9ncwppbmRleCBkYjQ5N2Y5Li5hMmY2MWNjIDEwMDc1NQotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3Jlc29sdmUtQ2hhbmdlTG9ncworKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3Jlc29sdmUtQ2hhbmdlTG9ncwpAQCAtNDQsNyArNDQsNiBAQCBzdWIgY2Fub25pY2Fs
UmVsYXRpdmVQYXRoKCQpOwogc3ViIGNvbmZsaWN0RmlsZXMoJCk7CiBzdWIgZmluZENoYW5nZUxv
ZygkKTsKIHN1YiBmaW5kVW5tZXJnZWRDaGFuZ2VMb2dzKCk7Ci1zdWIgZml4Q2hhbmdlTG9nUGF0
Y2goJCk7CiBzdWIgZml4TWVyZ2VkQ2hhbmdlTG9ncygkO0ApOwogc3ViIGZpeE9uZU1lcmdlZENo
YW5nZUxvZygkKTsKIHN1YiBoYXNHaXRVbm1lcmdlZEZpbGVzKCk7CkBAIC0yODEsNTcgKzI4MCw2
IEBAIHN1YiBmaW5kVW5tZXJnZWRDaGFuZ2VMb2dzKCkKICAgICByZXR1cm4gQHJlc3VsdHM7CiB9
CiAKLXN1YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKQotewotICAgIG15ICRwYXRjaCA9IHNoaWZ0Owot
ICAgIG15ICRjb250ZXh0TGluZUNvdW50ID0gMzsKLQotICAgIHJldHVybiAkcGF0Y2ggaWYgJHBh
dGNoICF+IC9cbkBAIC0xLChcZCspIFwrMSwoXGQrKSBAQFxuKCAuKlxuKSsoXCsuKlxuKSsoIC4q
XG4peyRjb250ZXh0TGluZUNvdW50fSQvbTsKLSAgICBteSAoJG9sZExpbmVDb3VudCwgJG5ld0xp
bmVDb3VudCkgPSAoJDEsICQyKTsKLSAgICByZXR1cm4gJHBhdGNoIGlmICRvbGRMaW5lQ291bnQg
PD0gJGNvbnRleHRMaW5lQ291bnQ7Ci0KLSAgICAjIFRoZSBkaWZmKDEpIGNvbW1hbmQgaXMgZ3Jl
ZWR5IHdoZW4gbWF0Y2hpbmcgbGluZXMsIHNvIGEgbmV3IENoYW5nZUxvZyBlbnRyeSB3aWxsCi0g
ICAgIyBoYXZlIGxpbmVzIG9mIGNvbnRleHQgYXQgdGhlIHRvcCBvZiBhIHBhdGNoIHdoZW4gdGhl
IGV4aXN0aW5nIGVudHJ5IGhhcyB0aGUgc2FtZQotICAgICMgZGF0ZSBhbmQgYXV0aG9yIGFzIHRo
ZSBuZXcgZW50cnkuICBUaGlzIG5pZnR5IGxvb3AgYWx0ZXJzIGEgQ2hhbmdlTG9nIHBhdGNoIHNv
Ci0gICAgIyB0aGF0IHRoZSBhZGRlZCBsaW5lcyAoIisiKSBpbiB0aGUgcGF0Y2ggYWx3YXlzIHN0
YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCi0gICAgIyBwYXRjaCBhbmQgdGhlcmUgYXJlIG5v
IGluaXRpYWwgbGluZXMgb2YgY29udGV4dC4KLSAgICBteSAkbmV3UGF0Y2g7Ci0gICAgbXkgJGxp
bmVDb3VudEluU3RhdGUgPSAwOwotICAgIG15ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9u
ID0gJG9sZExpbmVDb3VudCAtICRjb250ZXh0TGluZUNvdW50OwotICAgIG15ICRuZXdDb250ZW50
TGluZUNvdW50V2l0aG91dENvbnRleHQgPSAkbmV3TGluZUNvdW50IC0gJG9sZExpbmVDb3VudCAt
ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uOwotICAgIG15ICgkc3RhdGVIZWFkZXIsICRz
dGF0ZVByZUNvbnRleHQsICRzdGF0ZU5ld0NoYW5nZXMsICRzdGF0ZVBvc3RDb250ZXh0KSA9ICgx
Li40KTsKLSAgICBteSAkc3RhdGUgPSAkc3RhdGVIZWFkZXI7Ci0gICAgZm9yZWFjaCBteSAkbGlu
ZSAoc3BsaXQoL1xuLywgJHBhdGNoKSkgewotICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSsrOwot
ICAgICAgICBpZiAoJHN0YXRlID09ICRzdGF0ZUhlYWRlciAmJiAkbGluZSA9fiAvXkBAIC0xLCRv
bGRMaW5lQ291bnQgXCsxLCRuZXdMaW5lQ291bnQgQFxAJC8pIHsKLSAgICAgICAgICAgICRsaW5l
ID0gIkBAIC0xLCRjb250ZXh0TGluZUNvdW50ICsxLCIgLiAoJG5ld0xpbmVDb3VudCAtICRvbGRD
b250ZW50TGluZUNvdW50UmVkdWN0aW9uKSAuICIgQEAiOwotICAgICAgICAgICAgJGxpbmVDb3Vu
dEluU3RhdGUgPSAwOwotICAgICAgICAgICAgJHN0YXRlID0gJHN0YXRlUHJlQ29udGV4dDsKLSAg
ICAgICAgfSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZVByZUNvbnRleHQgJiYgc3Vic3RyKCRsaW5l
LCAwLCAxKSBlcSAiICIpIHsKLSAgICAgICAgICAgICRsaW5lID0gIisiIC4gc3Vic3RyKCRsaW5l
LCAxKTsKLSAgICAgICAgICAgIGlmICgkbGluZUNvdW50SW5TdGF0ZSA9PSAkb2xkQ29udGVudExp
bmVDb3VudFJlZHVjdGlvbikgewotICAgICAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0g
MDsKLSAgICAgICAgICAgICAgICAkc3RhdGUgPSAkc3RhdGVOZXdDaGFuZ2VzOwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlTmV3Q2hhbmdlcyAmJiBzdWJz
dHIoJGxpbmUsIDAsIDEpIGVxICIrIikgewotICAgICAgICAgICAgIyBObyBjaGFuZ2VzIHRvIHRo
ZXNlIGxpbmVzCi0gICAgICAgICAgICBpZiAoJGxpbmVDb3VudEluU3RhdGUgPT0gJG5ld0NvbnRl
bnRMaW5lQ291bnRXaXRob3V0Q29udGV4dCkgewotICAgICAgICAgICAgICAgICRsaW5lQ291bnRJ
blN0YXRlID0gMDsKLSAgICAgICAgICAgICAgICAkc3RhdGUgPSAkc3RhdGVQb3N0Q29udGV4dDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZVBvc3RDb250
ZXh0KSB7Ci0gICAgICAgICAgICBpZiAoc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiKyIgJiYgJGxp
bmVDb3VudEluU3RhdGUgPD0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIHsKLSAgICAg
ICAgICAgICAgICAkbGluZSA9ICIgIiAuIHN1YnN0cigkbGluZSwgMSk7Ci0gICAgICAgICAgICB9
IGVsc2lmICgkbGluZUNvdW50SW5TdGF0ZSA+ICRjb250ZXh0TGluZUNvdW50ICYmIHN1YnN0cigk
bGluZSwgMCwgMSkgZXEgIiAiKSB7Ci0gICAgICAgICAgICAgICAgbmV4dDsgIyBEaXNjYXJkCi0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgJG5ld1BhdGNoIC49ICRsaW5lIC4gIlxu
IjsKLSAgICB9Ci0KLSAgICByZXR1cm4gJG5ld1BhdGNoOwotfQotCiBzdWIgZml4TWVyZ2VkQ2hh
bmdlTG9ncygkO0ApCiB7CiAgICAgbXkgJHJldmlzaW9uUmFuZ2UgPSBzaGlmdDsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9z
dm4tYXBwbHkKaW5kZXggMTljOGM1Ni4uYmRiN2NkMiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9zdm4tYXBwbHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkKQEAg
LTc0LDcgKzc0LDYgQEAgdXNlIFZDU1V0aWxzOwogc3ViIGFkZERpcmVjdG9yaWVzSWZOZWVkZWQo
JCk7CiBzdWIgYXBwbHlQYXRjaCgkJDskKTsKIHN1YiBjaGVja3N1bSgkKTsKLXN1YiBmaXhDaGFu
Z2VMb2dQYXRjaCgkKTsKIHN1YiBnaXRkaWZmMnN2bmRpZmYoJCk7CiBzdWIgaGFuZGxlQmluYXJ5
Q2hhbmdlKCQkKTsKIHN1YiBpc0RpcmVjdG9yeUVtcHR5Rm9yUmVtb3ZhbCgkKTsKQEAgLTI1OCw1
NyArMjU3LDYgQEAgc3ViIGNoZWNrc3VtKCQpCiAgICAgcmV0dXJuICRjaGVja3N1bTsKIH0KIAot
c3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpCi17Ci0gICAgbXkgJHBhdGNoID0gc2hpZnQ7Ci0gICAg
bXkgJGNvbnRleHRMaW5lQ291bnQgPSAzOwotCi0gICAgcmV0dXJuICRwYXRjaCBpZiAkcGF0Y2gg
IX4gL1xuQEAgLTEsKFxkKykgXCsxLChcZCspIEBAXHI/XG4oIC4qXHI/XG4pKyhcKy4qXHI/XG4p
KyggLipccj9cbil7JGNvbnRleHRMaW5lQ291bnR9JC9tOwotICAgIG15ICgkb2xkTGluZUNvdW50
LCAkbmV3TGluZUNvdW50KSA9ICgkMSwgJDIpOwotICAgIHJldHVybiAkcGF0Y2ggaWYgJG9sZExp
bmVDb3VudCA8PSAkY29udGV4dExpbmVDb3VudDsKLQotICAgICMgVGhlIGRpZmYoMSkgY29tbWFu
ZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBsaW5lcywgc28gYSBuZXcgQ2hhbmdlTG9nIGVudHJ5
IHdpbGwKLSAgICAjIGhhdmUgbGluZXMgb2YgY29udGV4dCBhdCB0aGUgdG9wIG9mIGEgcGF0Y2gg
d2hlbiB0aGUgZXhpc3RpbmcgZW50cnkgaGFzIHRoZSBzYW1lCi0gICAgIyBkYXRlIGFuZCBhdXRo
b3IgYXMgdGhlIG5ldyBlbnRyeS4gIFRoaXMgbmlmdHkgbG9vcCBhbHRlcnMgYSBDaGFuZ2VMb2cg
cGF0Y2ggc28KLSAgICAjIHRoYXQgdGhlIGFkZGVkIGxpbmVzICgiKyIpIGluIHRoZSBwYXRjaCBh
bHdheXMgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAgICAjIHBhdGNoIGFuZCB0aGVy
ZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBvZiBjb250ZXh0LgotICAgIG15ICRuZXdQYXRjaDsKLSAg
ICBteSAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgbXkgJG9sZENvbnRlbnRMaW5lQ291bnRS
ZWR1Y3Rpb24gPSAkb2xkTGluZUNvdW50IC0gJGNvbnRleHRMaW5lQ291bnQ7Ci0gICAgbXkgJG5l
d0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29udGV4dCA9ICRuZXdMaW5lQ291bnQgLSAkb2xkTGlu
ZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb247Ci0gICAgbXkgKCRzdGF0ZUhl
YWRlciwgJHN0YXRlUHJlQ29udGV4dCwgJHN0YXRlTmV3Q2hhbmdlcywgJHN0YXRlUG9zdENvbnRl
eHQpID0gKDEuLjQpOwotICAgIG15ICRzdGF0ZSA9ICRzdGF0ZUhlYWRlcjsKLSAgICBmb3JlYWNo
IG15ICRsaW5lIChzcGxpdCgvXG4vLCAkcGF0Y2gpKSB7Ci0gICAgICAgICRsaW5lQ291bnRJblN0
YXRlKys7Ci0gICAgICAgIGlmICgkc3RhdGUgPT0gJHN0YXRlSGVhZGVyICYmICRsaW5lID1+IC9e
QEAgLTEsJG9sZExpbmVDb3VudCBcKzEsJG5ld0xpbmVDb3VudCBAXEAkLykgewotICAgICAgICAg
ICAgJGxpbmUgPSAiQEAgLTEsJGNvbnRleHRMaW5lQ291bnQgKzEsIiAuICgkbmV3TGluZUNvdW50
IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIC4gIiBAQCI7Ci0gICAgICAgICAgICAk
bGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAkc3RhdGUgPSAkc3RhdGVQcmVDb250
ZXh0OwotICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlUHJlQ29udGV4dCAmJiBzdWJz
dHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAgICAgICAgICAgJGxpbmUgPSAiKyIgLiBzdWJz
dHIoJGxpbmUsIDEpOwotICAgICAgICAgICAgaWYgKCRsaW5lQ291bnRJblN0YXRlID09ICRvbGRD
b250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgJGxpbmVDb3VudElu
U3RhdGUgPSAwOwotICAgICAgICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZU5ld0NoYW5nZXM7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVOZXdDaGFuZ2Vz
ICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIisiKSB7Ci0gICAgICAgICAgICAjIE5vIGNoYW5n
ZXMgdG8gdGhlc2UgbGluZXMKLSAgICAgICAgICAgIGlmICgkbGluZUNvdW50SW5TdGF0ZSA9PSAk
bmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgJGxp
bmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZVBvc3RD
b250ZXh0OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRl
UG9zdENvbnRleHQpIHsKLSAgICAgICAgICAgIGlmIChzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIr
IiAmJiAkbGluZUNvdW50SW5TdGF0ZSA8PSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikg
ewotICAgICAgICAgICAgICAgICRsaW5lID0gIiAiIC4gc3Vic3RyKCRsaW5lLCAxKTsKLSAgICAg
ICAgICAgIH0gZWxzaWYgKCRsaW5lQ291bnRJblN0YXRlID4gJGNvbnRleHRMaW5lQ291bnQgJiYg
c3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsKLSAgICAgICAgICAgICAgICBuZXh0OyAjIERp
c2NhcmQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAkbmV3UGF0Y2ggLj0gJGxp
bmUgLiAiXG4iOwotICAgIH0KLQotICAgIHJldHVybiAkbmV3UGF0Y2g7Ci19Ci0KIHN1YiBnaXRk
aWZmMnN2bmRpZmYoJCkKIHsKICAgICAkXyA9IHNoaWZ0IEBfOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4t
Y3JlYXRlLXBhdGNoCmluZGV4IDNmNDA3ODMuLjNiNTc5NzUgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3N2
bi1jcmVhdGUtcGF0Y2gKQEAgLTYxLDcgKzYxLDYgQEAgc3ViIGZpbmRCYXNlVXJsKCQpOwogc3Vi
IGZpbmRNaW1lVHlwZSgkOyQpOwogc3ViIGZpbmRNb2RpZmljYXRpb25UeXBlKCQpOwogc3ViIGZp
bmRTb3VyY2VGaWxlQW5kUmV2aXNpb24oJCk7Ci1zdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCk7CiBz
dWIgZ2VuZXJhdGVEaWZmKCQkKTsKIHN1YiBnZW5lcmF0ZUZpbGVMaXN0KCRcJSk7CiBzdWIgaXNC
aW5hcnlNaW1lVHlwZSgkKTsKQEAgLTIxMSw1NyArMjEwLDYgQEAgc3ViIGZpbmRTb3VyY2VGaWxl
QW5kUmV2aXNpb24oJCkKICAgICByZXR1cm4gKCRzb3VyY2VGaWxlLCAkc291cmNlUmV2aXNpb24p
OwogfQogCi1zdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKLXsKLSAgICBteSAkcGF0Y2ggPSBzaGlm
dDsKLSAgICBteSAkY29udGV4dExpbmVDb3VudCA9IDM7Ci0KLSAgICByZXR1cm4gJHBhdGNoIGlm
ICRwYXRjaCAhfiAvXG5AQCAtMSwoXGQrKSBcKzEsKFxkKykgQEBcbiggLipcbikrKFwrLipcbikr
KCAuKlxuKXskY29udGV4dExpbmVDb3VudH0kL207Ci0gICAgbXkgKCRvbGRMaW5lQ291bnQsICRu
ZXdMaW5lQ291bnQpID0gKCQxLCAkMik7Ci0gICAgcmV0dXJuICRwYXRjaCBpZiAkb2xkTGluZUNv
dW50IDw9ICRjb250ZXh0TGluZUNvdW50OwotCi0gICAgIyBUaGUgZGlmZigxKSBjb21tYW5kIGlz
IGdyZWVkeSB3aGVuIG1hdGNoaW5nIGxpbmVzLCBzbyBhIG5ldyBDaGFuZ2VMb2cgZW50cnkgd2ls
bAotICAgICMgaGF2ZSBsaW5lcyBvZiBjb250ZXh0IGF0IHRoZSB0b3Agb2YgYSBwYXRjaCB3aGVu
IHRoZSBleGlzdGluZyBlbnRyeSBoYXMgdGhlIHNhbWUKLSAgICAjIGRhdGUgYW5kIGF1dGhvciBh
cyB0aGUgbmV3IGVudHJ5LiAgVGhpcyBuaWZ0eSBsb29wIGFsdGVycyBhIENoYW5nZUxvZyBwYXRj
aCBzbwotICAgICMgdGhhdCB0aGUgYWRkZWQgbGluZXMgKCIrIikgaW4gdGhlIHBhdGNoIGFsd2F5
cyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQotICAgICMgcGF0Y2ggYW5kIHRoZXJlIGFy
ZSBubyBpbml0aWFsIGxpbmVzIG9mIGNvbnRleHQuCi0gICAgbXkgJG5ld1BhdGNoOwotICAgIG15
ICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICBteSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVj
dGlvbiA9ICRvbGRMaW5lQ291bnQgLSAkY29udGV4dExpbmVDb3VudDsKLSAgICBteSAkbmV3Q29u
dGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0ID0gJG5ld0xpbmVDb3VudCAtICRvbGRMaW5lQ291
bnQgLSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbjsKLSAgICBteSAoJHN0YXRlSGVhZGVy
LCAkc3RhdGVQcmVDb250ZXh0LCAkc3RhdGVOZXdDaGFuZ2VzLCAkc3RhdGVQb3N0Q29udGV4dCkg
PSAoMS4uNCk7Ci0gICAgbXkgJHN0YXRlID0gJHN0YXRlSGVhZGVyOwotICAgIGZvcmVhY2ggbXkg
JGxpbmUgKHNwbGl0KC9cbi8sICRwYXRjaCkpIHsKLSAgICAgICAgJGxpbmVDb3VudEluU3RhdGUr
KzsKLSAgICAgICAgaWYgKCRzdGF0ZSA9PSAkc3RhdGVIZWFkZXIgJiYgJGxpbmUgPX4gL15AQCAt
MSwkb2xkTGluZUNvdW50IFwrMSwkbmV3TGluZUNvdW50IEBcQCQvKSB7Ci0gICAgICAgICAgICAk
bGluZSA9ICJAQCAtMSwkY29udGV4dExpbmVDb3VudCArMSwiIC4gKCRuZXdMaW5lQ291bnQgLSAk
b2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikgLiAiIEBAIjsKLSAgICAgICAgICAgICRsaW5l
Q291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZVByZUNvbnRleHQ7
Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVQcmVDb250ZXh0ICYmIHN1YnN0cigk
bGluZSwgMCwgMSkgZXEgIiAiKSB7Ci0gICAgICAgICAgICAkbGluZSA9ICIrIiAuIHN1YnN0cigk
bGluZSwgMSk7Ci0gICAgICAgICAgICBpZiAoJGxpbmVDb3VudEluU3RhdGUgPT0gJG9sZENvbnRl
bnRMaW5lQ291bnRSZWR1Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0
ZSA9IDA7Ci0gICAgICAgICAgICAgICAgJHN0YXRlID0gJHN0YXRlTmV3Q2hhbmdlczsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZU5ld0NoYW5nZXMgJiYg
c3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiKyIpIHsKLSAgICAgICAgICAgICMgTm8gY2hhbmdlcyB0
byB0aGVzZSBsaW5lcwotICAgICAgICAgICAgaWYgKCRsaW5lQ291bnRJblN0YXRlID09ICRuZXdD
b250ZW50TGluZUNvdW50V2l0aG91dENvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAkbGluZUNv
dW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAgICAgJHN0YXRlID0gJHN0YXRlUG9zdENvbnRl
eHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVQb3N0
Q29udGV4dCkgewotICAgICAgICAgICAgaWYgKHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIisiICYm
ICRsaW5lQ291bnRJblN0YXRlIDw9ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgJGxpbmUgPSAiICIgLiBzdWJzdHIoJGxpbmUsIDEpOwotICAgICAgICAg
ICAgfSBlbHNpZiAoJGxpbmVDb3VudEluU3RhdGUgPiAkY29udGV4dExpbmVDb3VudCAmJiBzdWJz
dHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAgICAgICAgICAgICAgIG5leHQ7ICMgRGlzY2Fy
ZAotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgICRuZXdQYXRjaCAuPSAkbGluZSAu
ICJcbiI7Ci0gICAgfQotCi0gICAgcmV0dXJuICRuZXdQYXRjaDsKLX0KLQogc3ViIGdlbmVyYXRl
RGlmZigkJCkKIHsKICAgICBteSAoJGZpbGVEYXRhLCAkcHJlZml4KSA9IEBfOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
c3ZuLXVuYXBwbHkKaW5kZXggYTRjZWM5YS4uNDdmZWU0YSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9zdm4tdW5hcHBseQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3N2bi11bmFw
cGx5CkBAIC03MSw3ICs3MSw2IEBAIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSBWQ1NVdGls
czsKIAogc3ViIGNoZWNrc3VtKCQpOwotc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOwogc3ViIGdp
dGRpZmYyc3ZuZGlmZigkKTsKIHN1YiBwYXRjaCgkKTsKIHN1YiByZXZlcnREaXJlY3Rvcmllcygp
OwpAQCAtMTU4LDU3ICsxNTcsNiBAQCBzdWIgY2hlY2tzdW0oJCkKICAgICByZXR1cm4gJGNoZWNr
c3VtOwogfQogCi1zdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKLXsKLSAgICBteSAkcGF0Y2ggPSBz
aGlmdDsKLSAgICBteSAkY29udGV4dExpbmVDb3VudCA9IDM7Ci0KLSAgICByZXR1cm4gJHBhdGNo
IGlmICRwYXRjaCAhfiAvXG5AQCAtMSwoXGQrKSBcKzEsKFxkKykgQEBcbiggLipcbikrKFwrLipc
bikrKCAuKlxuKXskY29udGV4dExpbmVDb3VudH0kL207Ci0gICAgbXkgKCRvbGRMaW5lQ291bnQs
ICRuZXdMaW5lQ291bnQpID0gKCQxLCAkMik7Ci0gICAgcmV0dXJuICRwYXRjaCBpZiAkb2xkTGlu
ZUNvdW50IDw9ICRjb250ZXh0TGluZUNvdW50OwotCi0gICAgIyBUaGUgZGlmZigxKSBjb21tYW5k
IGlzIGdyZWVkeSB3aGVuIG1hdGNoaW5nIGxpbmVzLCBzbyBhIG5ldyBDaGFuZ2VMb2cgZW50cnkg
d2lsbAotICAgICMgaGF2ZSBsaW5lcyBvZiBjb250ZXh0IGF0IHRoZSB0b3Agb2YgYSBwYXRjaCB3
aGVuIHRoZSBleGlzdGluZyBlbnRyeSBoYXMgdGhlIHNhbWUKLSAgICAjIGRhdGUgYW5kIGF1dGhv
ciBhcyB0aGUgbmV3IGVudHJ5LiAgVGhpcyBuaWZ0eSBsb29wIGFsdGVycyBhIENoYW5nZUxvZyBw
YXRjaCBzbwotICAgICMgdGhhdCB0aGUgYWRkZWQgbGluZXMgKCIrIikgaW4gdGhlIHBhdGNoIGFs
d2F5cyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQotICAgICMgcGF0Y2ggYW5kIHRoZXJl
IGFyZSBubyBpbml0aWFsIGxpbmVzIG9mIGNvbnRleHQuCi0gICAgbXkgJG5ld1BhdGNoOwotICAg
IG15ICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICBteSAkb2xkQ29udGVudExpbmVDb3VudFJl
ZHVjdGlvbiA9ICRvbGRMaW5lQ291bnQgLSAkY29udGV4dExpbmVDb3VudDsKLSAgICBteSAkbmV3
Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0ID0gJG5ld0xpbmVDb3VudCAtICRvbGRMaW5l
Q291bnQgLSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbjsKLSAgICBteSAoJHN0YXRlSGVh
ZGVyLCAkc3RhdGVQcmVDb250ZXh0LCAkc3RhdGVOZXdDaGFuZ2VzLCAkc3RhdGVQb3N0Q29udGV4
dCkgPSAoMS4uNCk7Ci0gICAgbXkgJHN0YXRlID0gJHN0YXRlSGVhZGVyOwotICAgIGZvcmVhY2gg
bXkgJGxpbmUgKHNwbGl0KC9cbi8sICRwYXRjaCkpIHsKLSAgICAgICAgJGxpbmVDb3VudEluU3Rh
dGUrKzsKLSAgICAgICAgaWYgKCRzdGF0ZSA9PSAkc3RhdGVIZWFkZXIgJiYgJGxpbmUgPX4gL15A
QCAtMSwkb2xkTGluZUNvdW50IFwrMSwkbmV3TGluZUNvdW50IEBcQCQvKSB7Ci0gICAgICAgICAg
ICAkbGluZSA9ICJAQCAtMSwkY29udGV4dExpbmVDb3VudCArMSwiIC4gKCRuZXdMaW5lQ291bnQg
LSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikgLiAiIEBAIjsKLSAgICAgICAgICAgICRs
aW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZVByZUNvbnRl
eHQ7Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVQcmVDb250ZXh0ICYmIHN1YnN0
cigkbGluZSwgMCwgMSkgZXEgIiAiKSB7Ci0gICAgICAgICAgICAkbGluZSA9ICIrIiAuIHN1YnN0
cigkbGluZSwgMSk7Ci0gICAgICAgICAgICBpZiAoJGxpbmVDb3VudEluU3RhdGUgPT0gJG9sZENv
bnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICAkbGluZUNvdW50SW5T
dGF0ZSA9IDA7Ci0gICAgICAgICAgICAgICAgJHN0YXRlID0gJHN0YXRlTmV3Q2hhbmdlczsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZU5ld0NoYW5nZXMg
JiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiKyIpIHsKLSAgICAgICAgICAgICMgTm8gY2hhbmdl
cyB0byB0aGVzZSBsaW5lcwotICAgICAgICAgICAgaWYgKCRsaW5lQ291bnRJblN0YXRlID09ICRu
ZXdDb250ZW50TGluZUNvdW50V2l0aG91dENvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAkbGlu
ZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAgICAgJHN0YXRlID0gJHN0YXRlUG9zdENv
bnRleHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVQ
b3N0Q29udGV4dCkgewotICAgICAgICAgICAgaWYgKHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIisi
ICYmICRsaW5lQ291bnRJblN0YXRlIDw9ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgJGxpbmUgPSAiICIgLiBzdWJzdHIoJGxpbmUsIDEpOwotICAgICAg
ICAgICAgfSBlbHNpZiAoJGxpbmVDb3VudEluU3RhdGUgPiAkY29udGV4dExpbmVDb3VudCAmJiBz
dWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAgICAgICAgICAgICAgIG5leHQ7ICMgRGlz
Y2FyZAotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgICRuZXdQYXRjaCAuPSAkbGlu
ZSAuICJcbiI7Ci0gICAgfQotCi0gICAgcmV0dXJuICRuZXdQYXRjaDsKLX0KLQogc3ViIGdpdGRp
ZmYyc3ZuZGlmZigkKQogewogICAgICRfID0gc2hpZnQgQF87
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41906</attachid>
            <date>2009-10-26 15:25:01 -0700</date>
            <delta_ts>2009-10-27 09:01:26 -0700</delta_ts>
            <desc>Fix as suggested by Dave.  Still includes method moves so as not to depend on bug 30791.</desc>
            <filename>bug-30683-20091026152500.patch</filename>
            <type>text/plain</type>
            <size>20473</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4NzQ3NWE5Li40OTdkNDA1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMTAt
MjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSdzIGZpeENoYW5nZUxvZ1BhdGNo
IGZ1bmN0aW9uIHNlZW1zIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA2ODMKKworICAgICAgICBNb3ZlIGZpeENoYW5nZUxvZ1BhdGNoIHRv
IFZDU1V0aWxzLnBtLgorICAgICAgICBVcGRhdGUgZml4Q2hhbmdlTG9nUGF0Y2ggdG8gYmUgYWJs
ZSB0byBoYW5kbGUgcGF0Y2hlcyB3aGljaAorICAgICAgICBkb24ndCBzdGFydCBhdCBsaW5lIDEu
CisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciBzdm4tYXBwbHkgdG8gc2NtX3VuaXR0ZXN0LnB5
LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbToKKyAgICAgICAgKiBTY3JpcHRzL21v
ZHVsZXMvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvcmVzb2x2ZS1DaGFuZ2VM
b2dzOgorICAgICAgICAqIFNjcmlwdHMvc3ZuLWFwcGx5OgorICAgICAgICAqIFNjcmlwdHMvc3Zu
LWNyZWF0ZS1wYXRjaDoKKyAgICAgICAgKiBTY3JpcHRzL3N2bi11bmFwcGx5OgorCiAyMDA5LTEw
LTI2ICBDYXJvbCBTemFibyAgPGNhcm9sLnN6YWJvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvVkNT
VXRpbHMucG0gYi9XZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCmluZGV4IDMwNmNkZDYu
LmM0NDMyM2QgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0KKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQpAQCAtNDMsNiArNDMsNyBAQCBCRUdJ
TiB7CiAgICAgICAgICZjaGRpclJldHVybmluZ1JlbGF0aXZlUGF0aAogICAgICAgICAmZGV0ZXJt
aW5lU1ZOUm9vdAogICAgICAgICAmZGV0ZXJtaW5lVkNTUm9vdAorICAgICAgICAmZml4Q2hhbmdl
TG9nUGF0Y2gKICAgICAgICAgJmdpdEJyYW5jaAogICAgICAgICAmaXNHaXQKICAgICAgICAgJmlz
R2l0QnJhbmNoQnVpbGQKQEAgLTI2Nyw0ICsyNjgsNjQgQEAgc3ViIG1ha2VGaWxlUGF0aFJlbGF0
aXZlKCQpCiAgICAgcmV0dXJuICRnaXRSb290IC4gJHBhdGg7CiB9CiAKKyMgVGhlIGRpZmYoMSkg
Y29tbWFuZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBsaW5lcywgc28gYSBuZXcgQ2hhbmdlTG9n
IGVudHJ5IHdpbGwKKyMgaGF2ZSBsaW5lcyBvZiBjb250ZXh0IGF0IHRoZSB0b3Agb2YgYSBwYXRj
aCB3aGVuIHRoZSBleGlzdGluZyBlbnRyeSBoYXMgdGhlIHNhbWUKKyMgZGF0ZSBhbmQgYXV0aG9y
IGFzIHRoZSBuZXcgZW50cnkuICBBbHRlciB0aGUgQ2hhbmdlTG9nIHBhdGNoIHNvCisjIHRoYXQg
dGhlIGFkZGVkIGxpbmVzICgiKyIpIGluIHRoZSBwYXRjaCBhbHdheXMgc3RhcnQgYXQgdGhlIGJl
Z2lubmluZyBvZiB0aGUKKyMgcGF0Y2ggYW5kIHRoZXJlIGFyZSBubyBpbml0aWFsIGxpbmVzIG9m
IGNvbnRleHQuCitzdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKK3sKKyAgICBteSAkcGF0Y2ggPSBz
aGlmdDsgIyAkcGF0Y2ggd2lsbCBvbmx5IGNvbnRhaW4gcGF0Y2ggZnJhZ21lbnRzIGZvciBDaGFu
Z2VMb2cuCisKKyAgICAkcGF0Y2ggPX4gLyhccj9cbikvOworICAgIG15ICRsaW5lRW5kaW5nID0g
JDE7CisgICAgbXkgQHBhdGNoTGluZXMgPSBzcGxpdCgvJGxpbmVFbmRpbmcvLCAkcGF0Y2gpOwor
CisgICAgIyBlLmcuIDIwMDktMDYtMDMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgor
ICAgIG15ICRkYXRlTGluZVJlZ2V4cFN0cmluZyA9ICdeXCsoXGR7NH0tXGR7Mn0tXGR7Mn0pJyAj
IENvbnN1bWUgdGhlIGxlYWRpbmcgJysnIGFuZCB0aGUgZGF0ZS4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLiAnXHMrKC4rKVxzKycgIyBDb25zdW1lIHRoZSBuYW1lLgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuICc8KFtePD5dKyk+JCc7ICMgQW5kIGZpbmFsbHkgdGhlIGVt
YWlsIGFkZHJlc3MuCisKKyAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgdGhlIHBhdGNoIGNvbnRlbnRz
IHN0YXJ0IGFuZCBzdG9wLgorICAgIG15ICRwYXRjaEhlYWRlckluZGV4OworICAgIG15ICRmaXJz
dENvbnRlbnRJbmRleDsKKyAgICBteSAkdHJhaWxpbmdDb250ZXh0SW5kZXg7CisgICAgbXkgJGRh
dGVJbmRleDsKKyAgICBteSAkcGF0Y2hFbmRJbmRleCA9IHNjYWxhcihAcGF0Y2hMaW5lcyk7Cisg
ICAgZm9yIChteSAkaW5kZXggPSAwOyAkaW5kZXggPCBAcGF0Y2hMaW5lczsgKyskaW5kZXgpIHsK
KyAgICAgICAgbXkgJGxpbmUgPSAkcGF0Y2hMaW5lc1skaW5kZXhdOworICAgICAgICBpZiAoJGxp
bmUgPX4gL15cQFxAIC1cZCssXGQrIFwrXGQrLFxkKyBcQFxAJC8pIHsgIyBlLmcuIEBAIC0xLDUg
KzEsMTggQEAKKyAgICAgICAgICAgIGlmICgkcGF0Y2hIZWFkZXJJbmRleCkgeworICAgICAgICAg
ICAgICAgICRwYXRjaEVuZEluZGV4ID0gJGluZGV4OyAjIFdlIG9ubHkgYm90aGVyIHRvIGZpeCB1
cCB0aGUgZmlyc3QgcGF0Y2ggZnJhZ21lbnQuCisgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICRwYXRjaEhlYWRlckluZGV4ID0gJGluZGV4OworICAgICAg
ICB9CisgICAgICAgICRmaXJzdENvbnRlbnRJbmRleCA9ICRpbmRleCBpZiAoJHBhdGNoSGVhZGVy
SW5kZXggJiYgISRmaXJzdENvbnRlbnRJbmRleCAmJiAkbGluZSA9fiAvXlwrW14rXS8pOyAjIE9u
bHkgbWF0Y2ggYWZ0ZXIgZmluZGluZyBwYXRjaEhlYWRlckluZGV4LCBvdGhlcndpc2Ugd2UnZCBt
YXRjaCAiKysrIi4KKyAgICAgICAgJGRhdGVJbmRleCA9ICRpbmRleCBpZiAoJGxpbmUgPX4gLyRk
YXRlTGluZVJlZ2V4cFN0cmluZy8pOworICAgICAgICAkdHJhaWxpbmdDb250ZXh0SW5kZXggPSAk
aW5kZXggaWYgKCRmaXJzdENvbnRlbnRJbmRleCAmJiAhJHRyYWlsaW5nQ29udGV4dEluZGV4ICYm
ICRsaW5lID1+IC9eIC8pOworICAgIH0KKyAgICBteSAkY29udGVudExpbmVDb3VudCA9ICR0cmFp
bGluZ0NvbnRleHRJbmRleCAtICRmaXJzdENvbnRlbnRJbmRleDsKKyAgICBteSAkdHJhaWxpbmdD
b250ZXh0TGluZUNvdW50ID0gJHBhdGNoRW5kSW5kZXggLSAkdHJhaWxpbmdDb250ZXh0SW5kZXg7
CisKKyAgICAjIElmIHdlIGRpZG4ndCBmaW5kIGEgZGF0ZSBsaW5lIGluIHRoZSBjb250ZW50IHRo
ZW4gdGhpcyBpcyBub3QgYSBwYXRjaCB3ZSBzaG91bGQgdHJ5IGFuZCBmaXguCisgICAgcmV0dXJu
ICRwYXRjaCBpZiAoISRkYXRlSW5kZXgpOworCisgICAgIyBXZSBvbmx5IG5lZWQgdG8gZG8gYW55
dGhpbmcgaWYgdGhlIGRhdGUgbGluZSBpcyBub3QgdGhlIGZpcnN0IGNvbnRlbnQgbGluZS4KKyAg
ICByZXR1cm4gJHBhdGNoIGlmICgkZGF0ZUluZGV4ID09ICRmaXJzdENvbnRlbnRJbmRleCk7CisK
KyAgICAjIFdyaXRlIHRoZSBuZXcgcGF0Y2guCisgICAgbXkgJHRvdGFsTmV3Q29udGVudExpbmVz
ID0gJGNvbnRlbnRMaW5lQ291bnQgKyAkdHJhaWxpbmdDb250ZXh0TGluZUNvdW50OworICAgICRw
YXRjaExpbmVzWyRwYXRjaEhlYWRlckluZGV4XSA9ICJAQCAtMSwkdHJhaWxpbmdDb250ZXh0TGlu
ZUNvdW50ICsxLCR0b3RhbE5ld0NvbnRlbnRMaW5lcyBAQCI7ICMgV3JpdGUgYSBuZXcgaGVhZGVy
LgorICAgIG15IEByZXBlYXRlZExpbmVzID0gc3BsaWNlKEBwYXRjaExpbmVzLCAkZGF0ZUluZGV4
LCAkdHJhaWxpbmdDb250ZXh0SW5kZXggLSAkZGF0ZUluZGV4KTsgIyBUaGUgZGF0ZSBsaW5lIGFu
ZCBhbGwgdGhlIGNvbnRlbnQgYWZ0ZXIgaXQgdGhhdCBkaWZmIHNhdyBhcyByZXBlYXRlZC4KKyAg
ICBzcGxpY2UoQHBhdGNoTGluZXMsICRmaXJzdENvbnRlbnRJbmRleCwgMCwgQHJlcGVhdGVkTGlu
ZXMpOyAjIE1vdmUgdGhlIHJlcGVhdGVkIGNvbnRlbnQgdG8gdGhlIHRvcC4KKyAgICBmb3JlYWNo
IG15ICRsaW5lIChAcmVwZWF0ZWRMaW5lcykgeworICAgICAgICAkbGluZSA9fiBzL15cKy8gLzsK
KyAgICB9CisgICAgc3BsaWNlKEBwYXRjaExpbmVzLCAkdHJhaWxpbmdDb250ZXh0SW5kZXgsICRw
YXRjaEVuZEluZGV4LCBAcmVwZWF0ZWRMaW5lcyk7ICMgUmVwbGFjZSB0cmFpbGluZyBjb250ZXh0
IHdpdGggdGhlIHJlcGVhdGVkIGNvbnRlbnQuCisgICAgc3BsaWNlKEBwYXRjaExpbmVzLCAkcGF0
Y2hIZWFkZXJJbmRleCArIDEsICRmaXJzdENvbnRlbnRJbmRleCAtICRwYXRjaEhlYWRlckluZGV4
IC0gMSk7ICMgUmVtb3ZlIGFueSBsZWFkaW5nIGNvbnRleHQuCisKKyAgICByZXR1cm4gam9pbigk
bGluZUVuZGluZywgQHBhdGNoTGluZXMpIC4gIlxuIjsgIyBwYXRjaCgxKSBleHBlY3RzIGFuIGV4
dHJhIHRyYWlsaW5nIG5ld2xpbmUuCit9CisKIDE7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL3NjbV91bml0dGVzdC5weQppbmRleCA3ODQzMDNmLi5hNmEzYjcxIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvbW9kdWxlcy9zY21fdW5pdHRlc3QucHkKQEAgLTM1LDYgKzM1LDggQEAgaW1w
b3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQg
dXJsbGliCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKIGZyb20gbW9kdWxlcy5zY20gaW1w
b3J0IGRldGVjdF9zY21fc3lzdGVtLCBTQ00sIFNjcmlwdEVycm9yLCBDaGVja291dE5lZWRzVXBk
YXRlLCBpZ25vcmVfZXJyb3IsIGNvbW1pdF9lcnJvcl9oYW5kbGVyCiAKIApAQCAtMjA0LDYgKzIw
NiwxMDUgQEAgY2xhc3MgU0NNVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIGNsYXNzIFNWTlRl
c3QoU0NNVGVzdCk6CiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9zZXRfZGF0ZV9hbmRf
cmV2aWV3ZXIoY2hhbmdlbG9nX2VudHJ5KToKKyAgICAgICAgIyBKb2UgQ29vbCBtYXRjaGVzIHRo
ZSByZXZpZXdlciBzZXQgaW4gU0NNVGVzdC5fY3JlYXRlX3BhdGNoCisgICAgICAgIGNoYW5nZWxv
Z19lbnRyeSA9IGNoYW5nZWxvZ19lbnRyeS5yZXBsYWNlKCdSRVZJRVdFUl9IRVJFJywgJ0pvZSBD
b29sJykKKyAgICAgICAgIyBzdm4tYXBwbHkgd2lsbCB1cGRhdGUgQ2hhbmdlTG9nIGVudHJpZXMg
d2l0aCB0b2RheSdzIGRhdGUuCisgICAgICAgIHJldHVybiBjaGFuZ2Vsb2dfZW50cnkucmVwbGFj
ZSgnREFURV9IRVJFJywgZGF0ZS50b2RheSgpLmlzb2Zvcm1hdCgpKQorCisgICAgZGVmIHRlc3Rf
c3ZuX2FwcGx5KHNlbGYpOgorICAgICAgICBmaXJzdF9lbnRyeSA9ICIiIjIwMDktMTAtMjYgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEZvbyBC
YXIuCisKKyAgICAgICAgTW9zdCBhd2Vzb21lIGNoYW5nZSBldmVyLgorCisgICAgICAgICogc2Nt
X3VuaXR0ZXN0LnB5OgorIiIiCisgICAgICAgIGludGVybWVkaWF0ZV9lbnRyeSA9ICIiIjIwMDkt
MTAtMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEJheiBCYXIuCisKKyAgICAgICAgQSBtb3JlIGF3ZXNvbWVyIGNoYW5nZSB5ZXQhCisKKyAg
ICAgICAgKiBzY21fdW5pdHRlc3QucHk6CisiIiIKKyAgICAgICAgb25lX2xpbmVfb3ZlcmxhcF9w
YXRjaCA9ICIiIkluZGV4OiBDaGFuZ2VMb2cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBDaGFuZ2VMb2cJKHJl
dmlzaW9uIDUpCisrKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCitAQCAtMSw1ICsxLDEzIEBA
CisgMjAwOS0xMC0yNiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKysgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorKworKyAgICAgICAgU2Vjb25kIG1vc3QgYXdz
b21lIGNoYW5nZSBldmVyLgorKworKyAgICAgICAgKiBzY21fdW5pdHRlc3QucHk6CisrCisrMjAw
OS0xMC0yNiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisrCisgICAgICAgICBSZXZp
ZXdlZCBieSBGb28gQmFyLgorCisgICAgICAgICBNb3N0IGF3ZXNvbWUgY2hhbmdlIGV2ZXIuCisi
IiIKKyAgICAgICAgb25lX2xpbmVfb3ZlcmxhcF9lbnRyeSA9ICIiIkRBVEVfSEVSRSAgRXJpYyBT
ZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUkVWSUVXRVJf
SEVSRS4KKworICAgICAgICBTZWNvbmQgbW9zdCBhd3NvbWUgY2hhbmdlIGV2ZXIuCisKKyAgICAg
ICAgKiBzY21fdW5pdHRlc3QucHk6CisiIiIKKyAgICAgICAgdHdvX2xpbmVfb3ZlcmxhcF9wYXRj
aCA9ICIiIkluZGV4OiBDaGFuZ2VMb2cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBDaGFuZ2VMb2cJKHJldmlz
aW9uIDUpCisrKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCitAQCAtMiw2ICsyLDE0IEBACisK
KyAgICAgICAgIFJldmlld2VkIGJ5IEZvbyBCYXIuCisKKysgICAgICAgIFNlY29uZCBtb3N0IGF3
c29tZSBjaGFuZ2UgZXZlci4KKysKKysgICAgICAgICogc2NtX3VuaXR0ZXN0LnB5OgorKworKzIw
MDktMTAtMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorKworKyAgICAgICAgUmV2
aWV3ZWQgYnkgRm9vIEJhci4KKysKKyAgICAgICAgIE1vc3QgYXdlc29tZSBjaGFuZ2UgZXZlci4K
KworICAgICAgICAgKiBzY21fdW5pdHRlc3QucHk6CisiIiIKKyAgICAgICAgdHdvX2xpbmVfb3Zl
cmxhcF9lbnRyeSA9ICIiIkRBVEVfSEVSRSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRm9vIEJhci4KKworICAgICAgICBTZWNvbmQgbW9zdCBh
d3NvbWUgY2hhbmdlIGV2ZXIuCisKKyAgICAgICAgKiBzY21fdW5pdHRlc3QucHk6CisiIiIKKyAg
ICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ0NoYW5nZUxvZycsIGZpcnN0X2VudHJ5KQor
ICAgICAgICBydW4oWydzdm4nLCAnYWRkJywgJ0NoYW5nZUxvZyddKQorICAgICAgICBydW4oWydz
dm4nLCAnY29tbWl0JywgJy0tcXVpZXQnLCAnLS1tZXNzYWdlJywgJ0NoYW5nZUxvZyBjb21taXQn
XSkKKworICAgICAgICAjIFBhdGNoIGZpbGVzIHdlcmUgY3JlYXRlZCBhZ2FpbnN0IGp1c3QgJ2Zp
cnN0X2VudHJ5Jy4KKyAgICAgICAgIyBBZGQgYSBzZWNvbmQgY29tbWl0IHRvIG1ha2Ugc3ZuLWFw
cGx5IGhhdmUgdG8gYXBwbHkgdGhlIHBhdGNoZXMgd2l0aCBmdXp6LgorICAgICAgICBjaGFuZ2Vs
b2dfY29udGVudHMgPSAiJXNcbiVzIiAlIChpbnRlcm1lZGlhdGVfZW50cnksIGZpcnN0X2VudHJ5
KQorICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgnQ2hhbmdlTG9nJywgY2hhbmdlbG9n
X2NvbnRlbnRzKQorICAgICAgICBydW4oWydzdm4nLCAnY29tbWl0JywgJy0tcXVpZXQnLCAnLS1t
ZXNzYWdlJywgJ0ludGVybWVkaWF0ZSBjb21taXQnXSkKKworICAgICAgICBzZWxmLl9zZXR1cF93
ZWJraXR0b29sc19zY3JpcHRzX3N5bWxpbmsoc2VsZi5zY20pCisgICAgICAgIHNlbGYuc2NtLmFw
cGx5X3BhdGNoKHNlbGYuX2NyZWF0ZV9wYXRjaChvbmVfbGluZV9vdmVybGFwX3BhdGNoKSkKKyAg
ICAgICAgZXhwZWN0ZWRfY2hhbmdlbG9nX2NvbnRlbnRzID0gIiVzXG4lcyIgJSAoc2VsZi5fc2V0
X2RhdGVfYW5kX3Jldmlld2VyKG9uZV9saW5lX292ZXJsYXBfZW50cnkpLCBjaGFuZ2Vsb2dfY29u
dGVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlYWRfZnJvbV9wYXRoKCdDaGFuZ2VM
b2cnKSwgZXhwZWN0ZWRfY2hhbmdlbG9nX2NvbnRlbnRzKQorCisgICAgICAgIHNlbGYuc2NtLnJl
dmVydF9maWxlcyhbJ0NoYW5nZUxvZyddKQorICAgICAgICBzZWxmLnNjbS5hcHBseV9wYXRjaChz
ZWxmLl9jcmVhdGVfcGF0Y2godHdvX2xpbmVfb3ZlcmxhcF9wYXRjaCkpCisgICAgICAgIGV4cGVj
dGVkX2NoYW5nZWxvZ19jb250ZW50cyA9ICIlc1xuJXMiICUgKHNlbGYuX3NldF9kYXRlX2FuZF9y
ZXZpZXdlcih0d29fbGluZV9vdmVybGFwX2VudHJ5KSwgY2hhbmdlbG9nX2NvbnRlbnRzKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZWFkX2Zyb21fcGF0aCgnQ2hhbmdlTG9nJyksIGV4cGVj
dGVkX2NoYW5nZWxvZ19jb250ZW50cykKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAg
U1ZOVGVzdFJlcG9zaXRvcnkuc2V0dXAoc2VsZikKICAgICAgICAgb3MuY2hkaXIoc2VsZi5zdm5f
Y2hlY2tvdXRfcGF0aCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcmVzb2x2ZS1D
aGFuZ2VMb2dzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5nZUxvZ3MKaW5kZXgg
YmU1OGFjYi4uMDFiMzg0ZiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZl
LUNoYW5nZUxvZ3MKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5nZUxvZ3MK
QEAgLTQ0LDcgKzQ0LDYgQEAgc3ViIGNhbm9uaWNhbFJlbGF0aXZlUGF0aCgkKTsKIHN1YiBjb25m
bGljdEZpbGVzKCQpOwogc3ViIGZpbmRDaGFuZ2VMb2coJCk7CiBzdWIgZmluZFVubWVyZ2VkQ2hh
bmdlTG9ncygpOwotc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOwogc3ViIGZpeE1lcmdlZENoYW5n
ZUxvZ3MoJDtAKTsKIHN1YiBmaXhPbmVNZXJnZWRDaGFuZ2VMb2coJCk7CiBzdWIgaGFzR2l0VW5t
ZXJnZWRGaWxlcygpOwpAQCAtMjgxLDU3ICsyODAsNiBAQCBzdWIgZmluZFVubWVyZ2VkQ2hhbmdl
TG9ncygpCiAgICAgcmV0dXJuIEByZXN1bHRzOwogfQogCi1zdWIgZml4Q2hhbmdlTG9nUGF0Y2go
JCkKLXsKLSAgICBteSAkcGF0Y2ggPSBzaGlmdDsKLSAgICBteSAkY29udGV4dExpbmVDb3VudCA9
IDM7Ci0KLSAgICByZXR1cm4gJHBhdGNoIGlmICRwYXRjaCAhfiAvXG5AQCAtMSwoXGQrKSBcKzEs
KFxkKykgQEBcbiggLipcbikrKFwrLipcbikrKCAuKlxuKXskY29udGV4dExpbmVDb3VudH0kL207
Ci0gICAgbXkgKCRvbGRMaW5lQ291bnQsICRuZXdMaW5lQ291bnQpID0gKCQxLCAkMik7Ci0gICAg
cmV0dXJuICRwYXRjaCBpZiAkb2xkTGluZUNvdW50IDw9ICRjb250ZXh0TGluZUNvdW50OwotCi0g
ICAgIyBUaGUgZGlmZigxKSBjb21tYW5kIGlzIGdyZWVkeSB3aGVuIG1hdGNoaW5nIGxpbmVzLCBz
byBhIG5ldyBDaGFuZ2VMb2cgZW50cnkgd2lsbAotICAgICMgaGF2ZSBsaW5lcyBvZiBjb250ZXh0
IGF0IHRoZSB0b3Agb2YgYSBwYXRjaCB3aGVuIHRoZSBleGlzdGluZyBlbnRyeSBoYXMgdGhlIHNh
bWUKLSAgICAjIGRhdGUgYW5kIGF1dGhvciBhcyB0aGUgbmV3IGVudHJ5LiAgVGhpcyBuaWZ0eSBs
b29wIGFsdGVycyBhIENoYW5nZUxvZyBwYXRjaCBzbwotICAgICMgdGhhdCB0aGUgYWRkZWQgbGlu
ZXMgKCIrIikgaW4gdGhlIHBhdGNoIGFsd2F5cyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo
ZQotICAgICMgcGF0Y2ggYW5kIHRoZXJlIGFyZSBubyBpbml0aWFsIGxpbmVzIG9mIGNvbnRleHQu
Ci0gICAgbXkgJG5ld1BhdGNoOwotICAgIG15ICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICBt
eSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbiA9ICRvbGRMaW5lQ291bnQgLSAkY29udGV4
dExpbmVDb3VudDsKLSAgICBteSAkbmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0ID0g
JG5ld0xpbmVDb3VudCAtICRvbGRMaW5lQ291bnQgLSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVj
dGlvbjsKLSAgICBteSAoJHN0YXRlSGVhZGVyLCAkc3RhdGVQcmVDb250ZXh0LCAkc3RhdGVOZXdD
aGFuZ2VzLCAkc3RhdGVQb3N0Q29udGV4dCkgPSAoMS4uNCk7Ci0gICAgbXkgJHN0YXRlID0gJHN0
YXRlSGVhZGVyOwotICAgIGZvcmVhY2ggbXkgJGxpbmUgKHNwbGl0KC9cbi8sICRwYXRjaCkpIHsK
LSAgICAgICAgJGxpbmVDb3VudEluU3RhdGUrKzsKLSAgICAgICAgaWYgKCRzdGF0ZSA9PSAkc3Rh
dGVIZWFkZXIgJiYgJGxpbmUgPX4gL15AQCAtMSwkb2xkTGluZUNvdW50IFwrMSwkbmV3TGluZUNv
dW50IEBcQCQvKSB7Ci0gICAgICAgICAgICAkbGluZSA9ICJAQCAtMSwkY29udGV4dExpbmVDb3Vu
dCArMSwiIC4gKCRuZXdMaW5lQ291bnQgLSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikg
LiAiIEBAIjsKLSAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAg
ICRzdGF0ZSA9ICRzdGF0ZVByZUNvbnRleHQ7Ci0gICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAk
c3RhdGVQcmVDb250ZXh0ICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIiAiKSB7Ci0gICAgICAg
ICAgICAkbGluZSA9ICIrIiAuIHN1YnN0cigkbGluZSwgMSk7Ci0gICAgICAgICAgICBpZiAoJGxp
bmVDb3VudEluU3RhdGUgPT0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIHsKLSAgICAg
ICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAgICAgJHN0YXRl
ID0gJHN0YXRlTmV3Q2hhbmdlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNpZiAoJHN0
YXRlID09ICRzdGF0ZU5ld0NoYW5nZXMgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiKyIpIHsK
LSAgICAgICAgICAgICMgTm8gY2hhbmdlcyB0byB0aGVzZSBsaW5lcwotICAgICAgICAgICAgaWYg
KCRsaW5lQ291bnRJblN0YXRlID09ICRuZXdDb250ZW50TGluZUNvdW50V2l0aG91dENvbnRleHQp
IHsKLSAgICAgICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAgICAgICAg
ICAgJHN0YXRlID0gJHN0YXRlUG9zdENvbnRleHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVQb3N0Q29udGV4dCkgewotICAgICAgICAgICAgaWYgKHN1
YnN0cigkbGluZSwgMCwgMSkgZXEgIisiICYmICRsaW5lQ291bnRJblN0YXRlIDw9ICRvbGRDb250
ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgJGxpbmUgPSAiICIgLiBz
dWJzdHIoJGxpbmUsIDEpOwotICAgICAgICAgICAgfSBlbHNpZiAoJGxpbmVDb3VudEluU3RhdGUg
PiAkY29udGV4dExpbmVDb3VudCAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAg
ICAgICAgICAgICAgIG5leHQ7ICMgRGlzY2FyZAotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgICRuZXdQYXRjaCAuPSAkbGluZSAuICJcbiI7Ci0gICAgfQotCi0gICAgcmV0dXJuICRu
ZXdQYXRjaDsKLX0KLQogc3ViIGZpeE1lcmdlZENoYW5nZUxvZ3MoJDtAKQogewogICAgIG15ICRy
ZXZpc2lvblJhbmdlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3N2
bi1hcHBseSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CmluZGV4IDE5YzhjNTYuLmJk
YjdjZDIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CkBAIC03NCw3ICs3NCw2IEBAIHVzZSBWQ1NVdGls
czsKIHN1YiBhZGREaXJlY3Rvcmllc0lmTmVlZGVkKCQpOwogc3ViIGFwcGx5UGF0Y2goJCQ7JCk7
CiBzdWIgY2hlY2tzdW0oJCk7Ci1zdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCk7CiBzdWIgZ2l0ZGlm
ZjJzdm5kaWZmKCQpOwogc3ViIGhhbmRsZUJpbmFyeUNoYW5nZSgkJCk7CiBzdWIgaXNEaXJlY3Rv
cnlFbXB0eUZvclJlbW92YWwoJCk7CkBAIC0yNTgsNTcgKzI1Nyw2IEBAIHN1YiBjaGVja3N1bSgk
KQogICAgIHJldHVybiAkY2hlY2tzdW07CiB9CiAKLXN1YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKQot
ewotICAgIG15ICRwYXRjaCA9IHNoaWZ0OwotICAgIG15ICRjb250ZXh0TGluZUNvdW50ID0gMzsK
LQotICAgIHJldHVybiAkcGF0Y2ggaWYgJHBhdGNoICF+IC9cbkBAIC0xLChcZCspIFwrMSwoXGQr
KSBAQFxyP1xuKCAuKlxyP1xuKSsoXCsuKlxyP1xuKSsoIC4qXHI/XG4peyRjb250ZXh0TGluZUNv
dW50fSQvbTsKLSAgICBteSAoJG9sZExpbmVDb3VudCwgJG5ld0xpbmVDb3VudCkgPSAoJDEsICQy
KTsKLSAgICByZXR1cm4gJHBhdGNoIGlmICRvbGRMaW5lQ291bnQgPD0gJGNvbnRleHRMaW5lQ291
bnQ7Ci0KLSAgICAjIFRoZSBkaWZmKDEpIGNvbW1hbmQgaXMgZ3JlZWR5IHdoZW4gbWF0Y2hpbmcg
bGluZXMsIHNvIGEgbmV3IENoYW5nZUxvZyBlbnRyeSB3aWxsCi0gICAgIyBoYXZlIGxpbmVzIG9m
IGNvbnRleHQgYXQgdGhlIHRvcCBvZiBhIHBhdGNoIHdoZW4gdGhlIGV4aXN0aW5nIGVudHJ5IGhh
cyB0aGUgc2FtZQotICAgICMgZGF0ZSBhbmQgYXV0aG9yIGFzIHRoZSBuZXcgZW50cnkuICBUaGlz
IG5pZnR5IGxvb3AgYWx0ZXJzIGEgQ2hhbmdlTG9nIHBhdGNoIHNvCi0gICAgIyB0aGF0IHRoZSBh
ZGRlZCBsaW5lcyAoIisiKSBpbiB0aGUgcGF0Y2ggYWx3YXlzIHN0YXJ0IGF0IHRoZSBiZWdpbm5p
bmcgb2YgdGhlCi0gICAgIyBwYXRjaCBhbmQgdGhlcmUgYXJlIG5vIGluaXRpYWwgbGluZXMgb2Yg
Y29udGV4dC4KLSAgICBteSAkbmV3UGF0Y2g7Ci0gICAgbXkgJGxpbmVDb3VudEluU3RhdGUgPSAw
OwotICAgIG15ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uID0gJG9sZExpbmVDb3VudCAt
ICRjb250ZXh0TGluZUNvdW50OwotICAgIG15ICRuZXdDb250ZW50TGluZUNvdW50V2l0aG91dENv
bnRleHQgPSAkbmV3TGluZUNvdW50IC0gJG9sZExpbmVDb3VudCAtICRvbGRDb250ZW50TGluZUNv
dW50UmVkdWN0aW9uOwotICAgIG15ICgkc3RhdGVIZWFkZXIsICRzdGF0ZVByZUNvbnRleHQsICRz
dGF0ZU5ld0NoYW5nZXMsICRzdGF0ZVBvc3RDb250ZXh0KSA9ICgxLi40KTsKLSAgICBteSAkc3Rh
dGUgPSAkc3RhdGVIZWFkZXI7Ci0gICAgZm9yZWFjaCBteSAkbGluZSAoc3BsaXQoL1xuLywgJHBh
dGNoKSkgewotICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSsrOwotICAgICAgICBpZiAoJHN0YXRl
ID09ICRzdGF0ZUhlYWRlciAmJiAkbGluZSA9fiAvXkBAIC0xLCRvbGRMaW5lQ291bnQgXCsxLCRu
ZXdMaW5lQ291bnQgQFxAJC8pIHsKLSAgICAgICAgICAgICRsaW5lID0gIkBAIC0xLCRjb250ZXh0
TGluZUNvdW50ICsxLCIgLiAoJG5ld0xpbmVDb3VudCAtICRvbGRDb250ZW50TGluZUNvdW50UmVk
dWN0aW9uKSAuICIgQEAiOwotICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAg
ICAgICAgICAgJHN0YXRlID0gJHN0YXRlUHJlQ29udGV4dDsKLSAgICAgICAgfSBlbHNpZiAoJHN0
YXRlID09ICRzdGF0ZVByZUNvbnRleHQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsK
LSAgICAgICAgICAgICRsaW5lID0gIisiIC4gc3Vic3RyKCRsaW5lLCAxKTsKLSAgICAgICAgICAg
IGlmICgkbGluZUNvdW50SW5TdGF0ZSA9PSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikg
ewotICAgICAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAgICAgICAgICAg
ICAkc3RhdGUgPSAkc3RhdGVOZXdDaGFuZ2VzOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2lmICgkc3RhdGUgPT0gJHN0YXRlTmV3Q2hhbmdlcyAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVx
ICIrIikgewotICAgICAgICAgICAgIyBObyBjaGFuZ2VzIHRvIHRoZXNlIGxpbmVzCi0gICAgICAg
ICAgICBpZiAoJGxpbmVDb3VudEluU3RhdGUgPT0gJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0
Q29udGV4dCkgewotICAgICAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKLSAgICAg
ICAgICAgICAgICAkc3RhdGUgPSAkc3RhdGVQb3N0Q29udGV4dDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZVBvc3RDb250ZXh0KSB7Ci0gICAgICAgICAg
ICBpZiAoc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiKyIgJiYgJGxpbmVDb3VudEluU3RhdGUgPD0g
JG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICAkbGluZSA9
ICIgIiAuIHN1YnN0cigkbGluZSwgMSk7Ci0gICAgICAgICAgICB9IGVsc2lmICgkbGluZUNvdW50
SW5TdGF0ZSA+ICRjb250ZXh0TGluZUNvdW50ICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIiAi
KSB7Ci0gICAgICAgICAgICAgICAgbmV4dDsgIyBEaXNjYXJkCi0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgJG5ld1BhdGNoIC49ICRsaW5lIC4gIlxuIjsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gJG5ld1BhdGNoOwotfQotCiBzdWIgZ2l0ZGlmZjJzdm5kaWZmKCQpCiB7CiAgICAgJF8g
PSBzaGlmdCBAXzsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1w
YXRjaCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaAppbmRleCAzZjQwNzgz
Li4zYjU3OTc1IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3N2bi1jcmVhdGUtcGF0
Y2gKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoCkBAIC02MSw3ICs2
MSw2IEBAIHN1YiBmaW5kQmFzZVVybCgkKTsKIHN1YiBmaW5kTWltZVR5cGUoJDskKTsKIHN1YiBm
aW5kTW9kaWZpY2F0aW9uVHlwZSgkKTsKIHN1YiBmaW5kU291cmNlRmlsZUFuZFJldmlzaW9uKCQp
Owotc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOwogc3ViIGdlbmVyYXRlRGlmZigkJCk7CiBzdWIg
Z2VuZXJhdGVGaWxlTGlzdCgkXCUpOwogc3ViIGlzQmluYXJ5TWltZVR5cGUoJCk7CkBAIC0yMTEs
NTcgKzIxMCw2IEBAIHN1YiBmaW5kU291cmNlRmlsZUFuZFJldmlzaW9uKCQpCiAgICAgcmV0dXJu
ICgkc291cmNlRmlsZSwgJHNvdXJjZVJldmlzaW9uKTsKIH0KIAotc3ViIGZpeENoYW5nZUxvZ1Bh
dGNoKCQpCi17Ci0gICAgbXkgJHBhdGNoID0gc2hpZnQ7Ci0gICAgbXkgJGNvbnRleHRMaW5lQ291
bnQgPSAzOwotCi0gICAgcmV0dXJuICRwYXRjaCBpZiAkcGF0Y2ggIX4gL1xuQEAgLTEsKFxkKykg
XCsxLChcZCspIEBAXG4oIC4qXG4pKyhcKy4qXG4pKyggLipcbil7JGNvbnRleHRMaW5lQ291bnR9
JC9tOwotICAgIG15ICgkb2xkTGluZUNvdW50LCAkbmV3TGluZUNvdW50KSA9ICgkMSwgJDIpOwot
ICAgIHJldHVybiAkcGF0Y2ggaWYgJG9sZExpbmVDb3VudCA8PSAkY29udGV4dExpbmVDb3VudDsK
LQotICAgICMgVGhlIGRpZmYoMSkgY29tbWFuZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBsaW5l
cywgc28gYSBuZXcgQ2hhbmdlTG9nIGVudHJ5IHdpbGwKLSAgICAjIGhhdmUgbGluZXMgb2YgY29u
dGV4dCBhdCB0aGUgdG9wIG9mIGEgcGF0Y2ggd2hlbiB0aGUgZXhpc3RpbmcgZW50cnkgaGFzIHRo
ZSBzYW1lCi0gICAgIyBkYXRlIGFuZCBhdXRob3IgYXMgdGhlIG5ldyBlbnRyeS4gIFRoaXMgbmlm
dHkgbG9vcCBhbHRlcnMgYSBDaGFuZ2VMb2cgcGF0Y2ggc28KLSAgICAjIHRoYXQgdGhlIGFkZGVk
IGxpbmVzICgiKyIpIGluIHRoZSBwYXRjaCBhbHdheXMgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBv
ZiB0aGUKLSAgICAjIHBhdGNoIGFuZCB0aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBvZiBjb250
ZXh0LgotICAgIG15ICRuZXdQYXRjaDsKLSAgICBteSAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0g
ICAgbXkgJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24gPSAkb2xkTGluZUNvdW50IC0gJGNv
bnRleHRMaW5lQ291bnQ7Ci0gICAgbXkgJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29udGV4
dCA9ICRuZXdMaW5lQ291bnQgLSAkb2xkTGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRS
ZWR1Y3Rpb247Ci0gICAgbXkgKCRzdGF0ZUhlYWRlciwgJHN0YXRlUHJlQ29udGV4dCwgJHN0YXRl
TmV3Q2hhbmdlcywgJHN0YXRlUG9zdENvbnRleHQpID0gKDEuLjQpOwotICAgIG15ICRzdGF0ZSA9
ICRzdGF0ZUhlYWRlcjsKLSAgICBmb3JlYWNoIG15ICRsaW5lIChzcGxpdCgvXG4vLCAkcGF0Y2gp
KSB7Ci0gICAgICAgICRsaW5lQ291bnRJblN0YXRlKys7Ci0gICAgICAgIGlmICgkc3RhdGUgPT0g
JHN0YXRlSGVhZGVyICYmICRsaW5lID1+IC9eQEAgLTEsJG9sZExpbmVDb3VudCBcKzEsJG5ld0xp
bmVDb3VudCBAXEAkLykgewotICAgICAgICAgICAgJGxpbmUgPSAiQEAgLTEsJGNvbnRleHRMaW5l
Q291bnQgKzEsIiAuICgkbmV3TGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rp
b24pIC4gIiBAQCI7Ci0gICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAgICAg
ICAgICAkc3RhdGUgPSAkc3RhdGVQcmVDb250ZXh0OwotICAgICAgICB9IGVsc2lmICgkc3RhdGUg
PT0gJHN0YXRlUHJlQ29udGV4dCAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewotICAg
ICAgICAgICAgJGxpbmUgPSAiKyIgLiBzdWJzdHIoJGxpbmUsIDEpOwotICAgICAgICAgICAgaWYg
KCRsaW5lQ291bnRJblN0YXRlID09ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgICAgICRz
dGF0ZSA9ICRzdGF0ZU5ld0NoYW5nZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYg
KCRzdGF0ZSA9PSAkc3RhdGVOZXdDaGFuZ2VzICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIisi
KSB7Ci0gICAgICAgICAgICAjIE5vIGNoYW5nZXMgdG8gdGhlc2UgbGluZXMKLSAgICAgICAgICAg
IGlmICgkbGluZUNvdW50SW5TdGF0ZSA9PSAkbmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAg
ICAgICAgICRzdGF0ZSA9ICRzdGF0ZVBvc3RDb250ZXh0OwotICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlUG9zdENvbnRleHQpIHsKLSAgICAgICAgICAgIGlm
IChzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIrIiAmJiAkbGluZUNvdW50SW5TdGF0ZSA8PSAkb2xk
Q29udGVudExpbmVDb3VudFJlZHVjdGlvbikgewotICAgICAgICAgICAgICAgICRsaW5lID0gIiAi
IC4gc3Vic3RyKCRsaW5lLCAxKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRsaW5lQ291bnRJblN0
YXRlID4gJGNvbnRleHRMaW5lQ291bnQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsK
LSAgICAgICAgICAgICAgICBuZXh0OyAjIERpc2NhcmQKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICAkbmV3UGF0Y2ggLj0gJGxpbmUgLiAiXG4iOwotICAgIH0KLQotICAgIHJldHVy
biAkbmV3UGF0Y2g7Ci19Ci0KIHN1YiBnZW5lcmF0ZURpZmYoJCQpCiB7CiAgICAgbXkgKCRmaWxl
RGF0YSwgJHByZWZpeCkgPSBAXzsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3Zu
LXVuYXBwbHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3N2bi11bmFwcGx5CmluZGV4IGE0Y2VjOWEu
LjQ3ZmVlNGEgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseQpAQCAtNzEsNyArNzEsNiBAQCB1c2Ug
bGliICRGaW5kQmluOjpCaW47CiB1c2UgVkNTVXRpbHM7CiAKIHN1YiBjaGVja3N1bSgkKTsKLXN1
YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKTsKIHN1YiBnaXRkaWZmMnN2bmRpZmYoJCk7CiBzdWIgcGF0
Y2goJCk7CiBzdWIgcmV2ZXJ0RGlyZWN0b3JpZXMoKTsKQEAgLTE1OCw1NyArMTU3LDYgQEAgc3Vi
IGNoZWNrc3VtKCQpCiAgICAgcmV0dXJuICRjaGVja3N1bTsKIH0KIAotc3ViIGZpeENoYW5nZUxv
Z1BhdGNoKCQpCi17Ci0gICAgbXkgJHBhdGNoID0gc2hpZnQ7Ci0gICAgbXkgJGNvbnRleHRMaW5l
Q291bnQgPSAzOwotCi0gICAgcmV0dXJuICRwYXRjaCBpZiAkcGF0Y2ggIX4gL1xuQEAgLTEsKFxk
KykgXCsxLChcZCspIEBAXG4oIC4qXG4pKyhcKy4qXG4pKyggLipcbil7JGNvbnRleHRMaW5lQ291
bnR9JC9tOwotICAgIG15ICgkb2xkTGluZUNvdW50LCAkbmV3TGluZUNvdW50KSA9ICgkMSwgJDIp
OwotICAgIHJldHVybiAkcGF0Y2ggaWYgJG9sZExpbmVDb3VudCA8PSAkY29udGV4dExpbmVDb3Vu
dDsKLQotICAgICMgVGhlIGRpZmYoMSkgY29tbWFuZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBs
aW5lcywgc28gYSBuZXcgQ2hhbmdlTG9nIGVudHJ5IHdpbGwKLSAgICAjIGhhdmUgbGluZXMgb2Yg
Y29udGV4dCBhdCB0aGUgdG9wIG9mIGEgcGF0Y2ggd2hlbiB0aGUgZXhpc3RpbmcgZW50cnkgaGFz
IHRoZSBzYW1lCi0gICAgIyBkYXRlIGFuZCBhdXRob3IgYXMgdGhlIG5ldyBlbnRyeS4gIFRoaXMg
bmlmdHkgbG9vcCBhbHRlcnMgYSBDaGFuZ2VMb2cgcGF0Y2ggc28KLSAgICAjIHRoYXQgdGhlIGFk
ZGVkIGxpbmVzICgiKyIpIGluIHRoZSBwYXRjaCBhbHdheXMgc3RhcnQgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUKLSAgICAjIHBhdGNoIGFuZCB0aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBvZiBj
b250ZXh0LgotICAgIG15ICRuZXdQYXRjaDsKLSAgICBteSAkbGluZUNvdW50SW5TdGF0ZSA9IDA7
Ci0gICAgbXkgJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24gPSAkb2xkTGluZUNvdW50IC0g
JGNvbnRleHRMaW5lQ291bnQ7Ci0gICAgbXkgJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29u
dGV4dCA9ICRuZXdMaW5lQ291bnQgLSAkb2xkTGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291
bnRSZWR1Y3Rpb247Ci0gICAgbXkgKCRzdGF0ZUhlYWRlciwgJHN0YXRlUHJlQ29udGV4dCwgJHN0
YXRlTmV3Q2hhbmdlcywgJHN0YXRlUG9zdENvbnRleHQpID0gKDEuLjQpOwotICAgIG15ICRzdGF0
ZSA9ICRzdGF0ZUhlYWRlcjsKLSAgICBmb3JlYWNoIG15ICRsaW5lIChzcGxpdCgvXG4vLCAkcGF0
Y2gpKSB7Ci0gICAgICAgICRsaW5lQ291bnRJblN0YXRlKys7Ci0gICAgICAgIGlmICgkc3RhdGUg
PT0gJHN0YXRlSGVhZGVyICYmICRsaW5lID1+IC9eQEAgLTEsJG9sZExpbmVDb3VudCBcKzEsJG5l
d0xpbmVDb3VudCBAXEAkLykgewotICAgICAgICAgICAgJGxpbmUgPSAiQEAgLTEsJGNvbnRleHRM
aW5lQ291bnQgKzEsIiAuICgkbmV3TGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1
Y3Rpb24pIC4gIiBAQCI7Ci0gICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7Ci0gICAg
ICAgICAgICAkc3RhdGUgPSAkc3RhdGVQcmVDb250ZXh0OwotICAgICAgICB9IGVsc2lmICgkc3Rh
dGUgPT0gJHN0YXRlUHJlQ29udGV4dCAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgewot
ICAgICAgICAgICAgJGxpbmUgPSAiKyIgLiBzdWJzdHIoJGxpbmUsIDEpOwotICAgICAgICAgICAg
aWYgKCRsaW5lQ291bnRJblN0YXRlID09ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAgICAgICAg
ICRzdGF0ZSA9ICRzdGF0ZU5ld0NoYW5nZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
aWYgKCRzdGF0ZSA9PSAkc3RhdGVOZXdDaGFuZ2VzICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEg
IisiKSB7Ci0gICAgICAgICAgICAjIE5vIGNoYW5nZXMgdG8gdGhlc2UgbGluZXMKLSAgICAgICAg
ICAgIGlmICgkbGluZUNvdW50SW5TdGF0ZSA9PSAkbmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRD
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAg
ICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZVBvc3RDb250ZXh0OwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlUG9zdENvbnRleHQpIHsKLSAgICAgICAgICAg
IGlmIChzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIrIiAmJiAkbGluZUNvdW50SW5TdGF0ZSA8PSAk
b2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikgewotICAgICAgICAgICAgICAgICRsaW5lID0g
IiAiIC4gc3Vic3RyKCRsaW5lLCAxKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRsaW5lQ291bnRJ
blN0YXRlID4gJGNvbnRleHRMaW5lQ291bnQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIp
IHsKLSAgICAgICAgICAgICAgICBuZXh0OyAjIERpc2NhcmQKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICAkbmV3UGF0Y2ggLj0gJGxpbmUgLiAiXG4iOwotICAgIH0KLQotICAgIHJl
dHVybiAkbmV3UGF0Y2g7Ci19Ci0KIHN1YiBnaXRkaWZmMnN2bmRpZmYoJCkKIHsKICAgICAkXyA9
IHNoaWZ0IEBfOw==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41956</attachid>
            <date>2009-10-27 09:01:31 -0700</date>
            <delta_ts>2009-11-04 23:07:08 -0800</delta_ts>
            <desc>Update after bug 30791</desc>
            <filename>bug-30683-20091027090130.patch</filename>
            <type>text/plain</type>
            <size>10509</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBhMTJjZDRhLi5mMjE0ZDkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTAt
MjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHN2bi1hcHBseSdzIGZpeENoYW5nZUxvZ1BhdGNo
IGZ1bmN0aW9uIHNlZW1zIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA2ODMKKworICAgICAgICBVcGRhdGUgZml4Q2hhbmdlTG9nUGF0Y2gg
dG8gYmUgYWJsZSB0byBoYW5kbGUgcGF0Y2hlcyB3aGljaAorICAgICAgICBkb24ndCBzdGFydCBh
dCBsaW5lIDEuCisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciBzdm4tYXBwbHkgdG8gc2NtX3Vu
aXR0ZXN0LnB5LgorCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbToKKyAgICAgICAgKiBT
Y3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0LnB5OgorCiAyMDA5LTEwLTI3ICBFcmljIFNlaWRl
bCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvVkNTVXRpbHMucG0KaW5kZXggZTFlMGJjMi4uZWJmMTE5MCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L1ZDU1V0aWxzLnBtCkBAIC0zNDcsNTYgKzM0Nyw2NCBAQCBzdWIgZ2l0ZGlmZjJzdm5kaWZmKCQp
CiAgICAgcmV0dXJuICRfOwogfQogCisjIFRoZSBkaWZmKDEpIGNvbW1hbmQgaXMgZ3JlZWR5IHdo
ZW4gbWF0Y2hpbmcgbGluZXMsIHNvIGEgbmV3IENoYW5nZUxvZyBlbnRyeSB3aWxsCisjIGhhdmUg
bGluZXMgb2YgY29udGV4dCBhdCB0aGUgdG9wIG9mIGEgcGF0Y2ggd2hlbiB0aGUgZXhpc3Rpbmcg
ZW50cnkgaGFzIHRoZSBzYW1lCisjIGRhdGUgYW5kIGF1dGhvciBhcyB0aGUgbmV3IGVudHJ5LiAg
QWx0ZXIgdGhlIENoYW5nZUxvZyBwYXRjaCBzbworIyB0aGF0IHRoZSBhZGRlZCBsaW5lcyAoIisi
KSBpbiB0aGUgcGF0Y2ggYWx3YXlzIHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCisjIHBh
dGNoIGFuZCB0aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBvZiBjb250ZXh0Lgogc3ViIGZpeENo
YW5nZUxvZ1BhdGNoKCQpCiB7Ci0gICAgbXkgJHBhdGNoID0gc2hpZnQ7Ci0gICAgbXkgJGNvbnRl
eHRMaW5lQ291bnQgPSAzOwotCi0gICAgcmV0dXJuICRwYXRjaCBpZiAkcGF0Y2ggIX4gL1xuQEAg
LTEsKFxkKykgXCsxLChcZCspIEBAXG4oIC4qXG4pKyhcKy4qXG4pKyggLipcbil7JGNvbnRleHRM
aW5lQ291bnR9JC9tOwotICAgIG15ICgkb2xkTGluZUNvdW50LCAkbmV3TGluZUNvdW50KSA9ICgk
MSwgJDIpOwotICAgIHJldHVybiAkcGF0Y2ggaWYgJG9sZExpbmVDb3VudCA8PSAkY29udGV4dExp
bmVDb3VudDsKLQotICAgICMgVGhlIGRpZmYoMSkgY29tbWFuZCBpcyBncmVlZHkgd2hlbiBtYXRj
aGluZyBsaW5lcywgc28gYSBuZXcgQ2hhbmdlTG9nIGVudHJ5IHdpbGwKLSAgICAjIGhhdmUgbGlu
ZXMgb2YgY29udGV4dCBhdCB0aGUgdG9wIG9mIGEgcGF0Y2ggd2hlbiB0aGUgZXhpc3RpbmcgZW50
cnkgaGFzIHRoZSBzYW1lCi0gICAgIyBkYXRlIGFuZCBhdXRob3IgYXMgdGhlIG5ldyBlbnRyeS4g
IFRoaXMgbmlmdHkgbG9vcCBhbHRlcnMgYSBDaGFuZ2VMb2cgcGF0Y2ggc28KLSAgICAjIHRoYXQg
dGhlIGFkZGVkIGxpbmVzICgiKyIpIGluIHRoZSBwYXRjaCBhbHdheXMgc3RhcnQgYXQgdGhlIGJl
Z2lubmluZyBvZiB0aGUKLSAgICAjIHBhdGNoIGFuZCB0aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5l
cyBvZiBjb250ZXh0LgotICAgIG15ICRuZXdQYXRjaDsKLSAgICBteSAkbGluZUNvdW50SW5TdGF0
ZSA9IDA7Ci0gICAgbXkgJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24gPSAkb2xkTGluZUNv
dW50IC0gJGNvbnRleHRMaW5lQ291bnQ7Ci0gICAgbXkgJG5ld0NvbnRlbnRMaW5lQ291bnRXaXRo
b3V0Q29udGV4dCA9ICRuZXdMaW5lQ291bnQgLSAkb2xkTGluZUNvdW50IC0gJG9sZENvbnRlbnRM
aW5lQ291bnRSZWR1Y3Rpb247Ci0gICAgbXkgKCRzdGF0ZUhlYWRlciwgJHN0YXRlUHJlQ29udGV4
dCwgJHN0YXRlTmV3Q2hhbmdlcywgJHN0YXRlUG9zdENvbnRleHQpID0gKDEuLjQpOwotICAgIG15
ICRzdGF0ZSA9ICRzdGF0ZUhlYWRlcjsKLSAgICBmb3JlYWNoIG15ICRsaW5lIChzcGxpdCgvXG4v
LCAkcGF0Y2gpKSB7Ci0gICAgICAgICRsaW5lQ291bnRJblN0YXRlKys7Ci0gICAgICAgIGlmICgk
c3RhdGUgPT0gJHN0YXRlSGVhZGVyICYmICRsaW5lID1+IC9eQEAgLTEsJG9sZExpbmVDb3VudCBc
KzEsJG5ld0xpbmVDb3VudCBAXEAkLykgewotICAgICAgICAgICAgJGxpbmUgPSAiQEAgLTEsJGNv
bnRleHRMaW5lQ291bnQgKzEsIiAuICgkbmV3TGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291
bnRSZWR1Y3Rpb24pIC4gIiBAQCI7Ci0gICAgICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7
Ci0gICAgICAgICAgICAkc3RhdGUgPSAkc3RhdGVQcmVDb250ZXh0OwotICAgICAgICB9IGVsc2lm
ICgkc3RhdGUgPT0gJHN0YXRlUHJlQ29udGV4dCAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIg
IikgewotICAgICAgICAgICAgJGxpbmUgPSAiKyIgLiBzdWJzdHIoJGxpbmUsIDEpOwotICAgICAg
ICAgICAgaWYgKCRsaW5lQ291bnRJblN0YXRlID09ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0
aW9uKSB7Ci0gICAgICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwotICAgICAgICAg
ICAgICAgICRzdGF0ZSA9ICRzdGF0ZU5ld0NoYW5nZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVOZXdDaGFuZ2VzICYmIHN1YnN0cigkbGluZSwgMCwg
MSkgZXEgIisiKSB7Ci0gICAgICAgICAgICAjIE5vIGNoYW5nZXMgdG8gdGhlc2UgbGluZXMKLSAg
ICAgICAgICAgIGlmICgkbGluZUNvdW50SW5TdGF0ZSA9PSAkbmV3Q29udGVudExpbmVDb3VudFdp
dGhvdXRDb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmVDb3VudEluU3RhdGUgPSAwOwot
ICAgICAgICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZVBvc3RDb250ZXh0OwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlUG9zdENvbnRleHQpIHsKLSAgICAg
ICAgICAgIGlmIChzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIrIiAmJiAkbGluZUNvdW50SW5TdGF0
ZSA8PSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlvbikgewotICAgICAgICAgICAgICAgICRs
aW5lID0gIiAiIC4gc3Vic3RyKCRsaW5lLCAxKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRsaW5l
Q291bnRJblN0YXRlID4gJGNvbnRleHRMaW5lQ291bnQgJiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBl
cSAiICIpIHsKLSAgICAgICAgICAgICAgICBuZXh0OyAjIERpc2NhcmQKKyAgICBteSAkcGF0Y2gg
PSBzaGlmdDsgIyAkcGF0Y2ggd2lsbCBvbmx5IGNvbnRhaW4gcGF0Y2ggZnJhZ21lbnRzIGZvciBD
aGFuZ2VMb2cuCisKKyAgICAkcGF0Y2ggPX4gLyhccj9cbikvOworICAgIG15ICRsaW5lRW5kaW5n
ID0gJDE7CisgICAgbXkgQHBhdGNoTGluZXMgPSBzcGxpdCgvJGxpbmVFbmRpbmcvLCAkcGF0Y2gp
OworCisgICAgIyBlLmcuIDIwMDktMDYtMDMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgorICAgIG15ICRkYXRlTGluZVJlZ2V4cFN0cmluZyA9ICdeXCsoXGR7NH0tXGR7Mn0tXGR7Mn0p
JyAjIENvbnN1bWUgdGhlIGxlYWRpbmcgJysnIGFuZCB0aGUgZGF0ZS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLiAnXHMrKC4rKVxzKycgIyBDb25zdW1lIHRoZSBuYW1lLgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuICc8KFtePD5dKyk+JCc7ICMgQW5kIGZpbmFsbHkgdGhl
IGVtYWlsIGFkZHJlc3MuCisKKyAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgdGhlIHBhdGNoIGNvbnRl
bnRzIHN0YXJ0IGFuZCBzdG9wLgorICAgIG15ICRwYXRjaEhlYWRlckluZGV4OworICAgIG15ICRm
aXJzdENvbnRlbnRJbmRleDsKKyAgICBteSAkdHJhaWxpbmdDb250ZXh0SW5kZXg7CisgICAgbXkg
JGRhdGVJbmRleDsKKyAgICBteSAkcGF0Y2hFbmRJbmRleCA9IHNjYWxhcihAcGF0Y2hMaW5lcyk7
CisgICAgZm9yIChteSAkaW5kZXggPSAwOyAkaW5kZXggPCBAcGF0Y2hMaW5lczsgKyskaW5kZXgp
IHsKKyAgICAgICAgbXkgJGxpbmUgPSAkcGF0Y2hMaW5lc1skaW5kZXhdOworICAgICAgICBpZiAo
JGxpbmUgPX4gL15cQFxAIC1cZCssXGQrIFwrXGQrLFxkKyBcQFxAJC8pIHsgIyBlLmcuIEBAIC0x
LDUgKzEsMTggQEAKKyAgICAgICAgICAgIGlmICgkcGF0Y2hIZWFkZXJJbmRleCkgeworICAgICAg
ICAgICAgICAgICRwYXRjaEVuZEluZGV4ID0gJGluZGV4OyAjIFdlIG9ubHkgYm90aGVyIHRvIGZp
eCB1cCB0aGUgZmlyc3QgcGF0Y2ggZnJhZ21lbnQuCisgICAgICAgICAgICAgICAgbGFzdDsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICRwYXRjaEhlYWRlckluZGV4ID0gJGluZGV4OwogICAg
ICAgICB9Ci0gICAgICAgICRuZXdQYXRjaCAuPSAkbGluZSAuICJcbiI7CisgICAgICAgICRmaXJz
dENvbnRlbnRJbmRleCA9ICRpbmRleCBpZiAoJHBhdGNoSGVhZGVySW5kZXggJiYgISRmaXJzdENv
bnRlbnRJbmRleCAmJiAkbGluZSA9fiAvXlwrW14rXS8pOyAjIE9ubHkgbWF0Y2ggYWZ0ZXIgZmlu
ZGluZyBwYXRjaEhlYWRlckluZGV4LCBvdGhlcndpc2Ugd2UnZCBtYXRjaCAiKysrIi4KKyAgICAg
ICAgJGRhdGVJbmRleCA9ICRpbmRleCBpZiAoJGxpbmUgPX4gLyRkYXRlTGluZVJlZ2V4cFN0cmlu
Zy8pOworICAgICAgICAkdHJhaWxpbmdDb250ZXh0SW5kZXggPSAkaW5kZXggaWYgKCRmaXJzdENv
bnRlbnRJbmRleCAmJiAhJHRyYWlsaW5nQ29udGV4dEluZGV4ICYmICRsaW5lID1+IC9eIC8pOwog
ICAgIH0KKyAgICBteSAkY29udGVudExpbmVDb3VudCA9ICR0cmFpbGluZ0NvbnRleHRJbmRleCAt
ICRmaXJzdENvbnRlbnRJbmRleDsKKyAgICBteSAkdHJhaWxpbmdDb250ZXh0TGluZUNvdW50ID0g
JHBhdGNoRW5kSW5kZXggLSAkdHJhaWxpbmdDb250ZXh0SW5kZXg7CisKKyAgICAjIElmIHdlIGRp
ZG4ndCBmaW5kIGEgZGF0ZSBsaW5lIGluIHRoZSBjb250ZW50IHRoZW4gdGhpcyBpcyBub3QgYSBw
YXRjaCB3ZSBzaG91bGQgdHJ5IGFuZCBmaXguCisgICAgcmV0dXJuICRwYXRjaCBpZiAoISRkYXRl
SW5kZXgpOworCisgICAgIyBXZSBvbmx5IG5lZWQgdG8gZG8gYW55dGhpbmcgaWYgdGhlIGRhdGUg
bGluZSBpcyBub3QgdGhlIGZpcnN0IGNvbnRlbnQgbGluZS4KKyAgICByZXR1cm4gJHBhdGNoIGlm
ICgkZGF0ZUluZGV4ID09ICRmaXJzdENvbnRlbnRJbmRleCk7CisKKyAgICAjIFdyaXRlIHRoZSBu
ZXcgcGF0Y2guCisgICAgbXkgJHRvdGFsTmV3Q29udGVudExpbmVzID0gJGNvbnRlbnRMaW5lQ291
bnQgKyAkdHJhaWxpbmdDb250ZXh0TGluZUNvdW50OworICAgICRwYXRjaExpbmVzWyRwYXRjaEhl
YWRlckluZGV4XSA9ICJAQCAtMSwkdHJhaWxpbmdDb250ZXh0TGluZUNvdW50ICsxLCR0b3RhbE5l
d0NvbnRlbnRMaW5lcyBAQCI7ICMgV3JpdGUgYSBuZXcgaGVhZGVyLgorICAgIG15IEByZXBlYXRl
ZExpbmVzID0gc3BsaWNlKEBwYXRjaExpbmVzLCAkZGF0ZUluZGV4LCAkdHJhaWxpbmdDb250ZXh0
SW5kZXggLSAkZGF0ZUluZGV4KTsgIyBUaGUgZGF0ZSBsaW5lIGFuZCBhbGwgdGhlIGNvbnRlbnQg
YWZ0ZXIgaXQgdGhhdCBkaWZmIHNhdyBhcyByZXBlYXRlZC4KKyAgICBzcGxpY2UoQHBhdGNoTGlu
ZXMsICRmaXJzdENvbnRlbnRJbmRleCwgMCwgQHJlcGVhdGVkTGluZXMpOyAjIE1vdmUgdGhlIHJl
cGVhdGVkIGNvbnRlbnQgdG8gdGhlIHRvcC4KKyAgICBmb3JlYWNoIG15ICRsaW5lIChAcmVwZWF0
ZWRMaW5lcykgeworICAgICAgICAkbGluZSA9fiBzL15cKy8gLzsKKyAgICB9CisgICAgc3BsaWNl
KEBwYXRjaExpbmVzLCAkdHJhaWxpbmdDb250ZXh0SW5kZXgsICRwYXRjaEVuZEluZGV4LCBAcmVw
ZWF0ZWRMaW5lcyk7ICMgUmVwbGFjZSB0cmFpbGluZyBjb250ZXh0IHdpdGggdGhlIHJlcGVhdGVk
IGNvbnRlbnQuCisgICAgc3BsaWNlKEBwYXRjaExpbmVzLCAkcGF0Y2hIZWFkZXJJbmRleCArIDEs
ICRmaXJzdENvbnRlbnRJbmRleCAtICRwYXRjaEhlYWRlckluZGV4IC0gMSk7ICMgUmVtb3ZlIGFu
eSBsZWFkaW5nIGNvbnRleHQuCiAKLSAgICByZXR1cm4gJG5ld1BhdGNoOworICAgIHJldHVybiBq
b2luKCRsaW5lRW5kaW5nLCBAcGF0Y2hMaW5lcykgLiAiXG4iOyAjIHBhdGNoKDEpIGV4cGVjdHMg
YW4gZXh0cmEgdHJhaWxpbmcgbmV3bGluZS4KIH0KIAotCiAxOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9zY21fdW5pdHRlc3QucHkKaW5kZXggNzg0MzAzZi4uYTZhM2I3MSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbV91bml0dGVzdC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0LnB5CkBAIC0zNSw2ICszNSw4
IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAog
aW1wb3J0IHVybGxpYgorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCiBmcm9tIG1vZHVsZXMu
c2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbSwgU0NNLCBTY3JpcHRFcnJvciwgQ2hlY2tvdXRO
ZWVkc1VwZGF0ZSwgaWdub3JlX2Vycm9yLCBjb21taXRfZXJyb3JfaGFuZGxlcgogCiAKQEAgLTIw
NCw2ICsyMDYsMTA1IEBAIGNsYXNzIFNDTVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiBjbGFz
cyBTVk5UZXN0KFNDTVRlc3QpOgogCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfc2V0X2Rh
dGVfYW5kX3Jldmlld2VyKGNoYW5nZWxvZ19lbnRyeSk6CisgICAgICAgICMgSm9lIENvb2wgbWF0
Y2hlcyB0aGUgcmV2aWV3ZXIgc2V0IGluIFNDTVRlc3QuX2NyZWF0ZV9wYXRjaAorICAgICAgICBj
aGFuZ2Vsb2dfZW50cnkgPSBjaGFuZ2Vsb2dfZW50cnkucmVwbGFjZSgnUkVWSUVXRVJfSEVSRScs
ICdKb2UgQ29vbCcpCisgICAgICAgICMgc3ZuLWFwcGx5IHdpbGwgdXBkYXRlIENoYW5nZUxvZyBl
bnRyaWVzIHdpdGggdG9kYXkncyBkYXRlLgorICAgICAgICByZXR1cm4gY2hhbmdlbG9nX2VudHJ5
LnJlcGxhY2UoJ0RBVEVfSEVSRScsIGRhdGUudG9kYXkoKS5pc29mb3JtYXQoKSkKKworICAgIGRl
ZiB0ZXN0X3N2bl9hcHBseShzZWxmKToKKyAgICAgICAgZmlyc3RfZW50cnkgPSAiIiIyMDA5LTEw
LTI2ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBGb28gQmFyLgorCisgICAgICAgIE1vc3QgYXdlc29tZSBjaGFuZ2UgZXZlci4KKworICAgICAg
ICAqIHNjbV91bml0dGVzdC5weToKKyIiIgorICAgICAgICBpbnRlcm1lZGlhdGVfZW50cnkgPSAi
IiIyMDA5LTEwLTI3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBCYXogQmFyLgorCisgICAgICAgIEEgbW9yZSBhd2Vzb21lciBjaGFuZ2UgeWV0
IQorCisgICAgICAgICogc2NtX3VuaXR0ZXN0LnB5OgorIiIiCisgICAgICAgIG9uZV9saW5lX292
ZXJsYXBfcGF0Y2ggPSAiIiJJbmRleDogQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gQ2hhbmdl
TG9nCShyZXZpc2lvbiA1KQorKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQorQEAgLTEsNSAr
MSwxMyBAQAorIDIwMDktMTAtMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisr
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKysKKysgICAgICAgIFNlY29uZCBt
b3N0IGF3c29tZSBjaGFuZ2UgZXZlci4KKysKKysgICAgICAgICogc2NtX3VuaXR0ZXN0LnB5Ogor
KworKzIwMDktMTAtMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorKworICAgICAg
ICAgUmV2aWV3ZWQgYnkgRm9vIEJhci4KKworICAgICAgICAgTW9zdCBhd2Vzb21lIGNoYW5nZSBl
dmVyLgorIiIiCisgICAgICAgIG9uZV9saW5lX292ZXJsYXBfZW50cnkgPSAiIiJEQVRFX0hFUkUg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFJF
VklFV0VSX0hFUkUuCisKKyAgICAgICAgU2Vjb25kIG1vc3QgYXdzb21lIGNoYW5nZSBldmVyLgor
CisgICAgICAgICogc2NtX3VuaXR0ZXN0LnB5OgorIiIiCisgICAgICAgIHR3b19saW5lX292ZXJs
YXBfcGF0Y2ggPSAiIiJJbmRleDogQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gQ2hhbmdlTG9n
CShyZXZpc2lvbiA1KQorKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQorQEAgLTIsNiArMiwx
NCBAQAorCisgICAgICAgICBSZXZpZXdlZCBieSBGb28gQmFyLgorCisrICAgICAgICBTZWNvbmQg
bW9zdCBhd3NvbWUgY2hhbmdlIGV2ZXIuCisrCisrICAgICAgICAqIHNjbV91bml0dGVzdC5weToK
KysKKysyMDA5LTEwLTI2ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKysKKysgICAg
ICAgIFJldmlld2VkIGJ5IEZvbyBCYXIuCisrCisgICAgICAgICBNb3N0IGF3ZXNvbWUgY2hhbmdl
IGV2ZXIuCisKKyAgICAgICAgICogc2NtX3VuaXR0ZXN0LnB5OgorIiIiCisgICAgICAgIHR3b19s
aW5lX292ZXJsYXBfZW50cnkgPSAiIiJEQVRFX0hFUkUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEZvbyBCYXIuCisKKyAgICAgICAgU2Vjb25k
IG1vc3QgYXdzb21lIGNoYW5nZSBldmVyLgorCisgICAgICAgICogc2NtX3VuaXR0ZXN0LnB5Ogor
IiIiCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCdDaGFuZ2VMb2cnLCBmaXJzdF9l
bnRyeSkKKyAgICAgICAgcnVuKFsnc3ZuJywgJ2FkZCcsICdDaGFuZ2VMb2cnXSkKKyAgICAgICAg
cnVuKFsnc3ZuJywgJ2NvbW1pdCcsICctLXF1aWV0JywgJy0tbWVzc2FnZScsICdDaGFuZ2VMb2cg
Y29tbWl0J10pCisKKyAgICAgICAgIyBQYXRjaCBmaWxlcyB3ZXJlIGNyZWF0ZWQgYWdhaW5zdCBq
dXN0ICdmaXJzdF9lbnRyeScuCisgICAgICAgICMgQWRkIGEgc2Vjb25kIGNvbW1pdCB0byBtYWtl
IHN2bi1hcHBseSBoYXZlIHRvIGFwcGx5IHRoZSBwYXRjaGVzIHdpdGggZnV6ei4KKyAgICAgICAg
Y2hhbmdlbG9nX2NvbnRlbnRzID0gIiVzXG4lcyIgJSAoaW50ZXJtZWRpYXRlX2VudHJ5LCBmaXJz
dF9lbnRyeSkKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ0NoYW5nZUxvZycsIGNo
YW5nZWxvZ19jb250ZW50cykKKyAgICAgICAgcnVuKFsnc3ZuJywgJ2NvbW1pdCcsICctLXF1aWV0
JywgJy0tbWVzc2FnZScsICdJbnRlcm1lZGlhdGUgY29tbWl0J10pCisKKyAgICAgICAgc2VsZi5f
c2V0dXBfd2Via2l0dG9vbHNfc2NyaXB0c19zeW1saW5rKHNlbGYuc2NtKQorICAgICAgICBzZWxm
LnNjbS5hcHBseV9wYXRjaChzZWxmLl9jcmVhdGVfcGF0Y2gob25lX2xpbmVfb3ZlcmxhcF9wYXRj
aCkpCisgICAgICAgIGV4cGVjdGVkX2NoYW5nZWxvZ19jb250ZW50cyA9ICIlc1xuJXMiICUgKHNl
bGYuX3NldF9kYXRlX2FuZF9yZXZpZXdlcihvbmVfbGluZV9vdmVybGFwX2VudHJ5KSwgY2hhbmdl
bG9nX2NvbnRlbnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZWFkX2Zyb21fcGF0aCgn
Q2hhbmdlTG9nJyksIGV4cGVjdGVkX2NoYW5nZWxvZ19jb250ZW50cykKKworICAgICAgICBzZWxm
LnNjbS5yZXZlcnRfZmlsZXMoWydDaGFuZ2VMb2cnXSkKKyAgICAgICAgc2VsZi5zY20uYXBwbHlf
cGF0Y2goc2VsZi5fY3JlYXRlX3BhdGNoKHR3b19saW5lX292ZXJsYXBfcGF0Y2gpKQorICAgICAg
ICBleHBlY3RlZF9jaGFuZ2Vsb2dfY29udGVudHMgPSAiJXNcbiVzIiAlIChzZWxmLl9zZXRfZGF0
ZV9hbmRfcmV2aWV3ZXIodHdvX2xpbmVfb3ZlcmxhcF9lbnRyeSksIGNoYW5nZWxvZ19jb250ZW50
cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVhZF9mcm9tX3BhdGgoJ0NoYW5nZUxvZycp
LCBleHBlY3RlZF9jaGFuZ2Vsb2dfY29udGVudHMpCisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAg
ICAgICAgIFNWTlRlc3RSZXBvc2l0b3J5LnNldHVwKHNlbGYpCiAgICAgICAgIG9zLmNoZGlyKHNl
bGYuc3ZuX2NoZWNrb3V0X3BhdGgp
</data>

          </attachment>
      

    </bug>

</bugzilla>