<?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>14740</bug_id>
          
          <creation_ts>2007-07-23 19:26:58 -0700</creation_ts>
          <short_desc>Hierarchical layout tests and platform organization</short_desc>
          <delta_ts>2007-08-11 13:48:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Lilek">dev+webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>lars.knoll</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3894</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-07-23 19:26:58 -0700</bug_when>
    <thetext>Bugzilla for the current plan for better platform-specific layout test support.
Corresponding wiki page: &lt;http://trac.webkit.org/projects/webkit/wiki/RunWebKitTestsDesign&gt;

---

Each platform configuration should define one variable, $platformTestDirectory, that specifies the most specific directory under LayoutTests/platform/ that applies to that platform. For instance, on Mac OS X Leopard, mac-leopard should be specified.

This name is broken into all possible hyphenated prefixes. For example, if a platform specifies a-b-c as its $platformTestDirectory, the directories in its platform hierarchy become (in order of decreasing specificity): a-b-c -&gt; a-b -&gt; a

run-webkit-tests should search recursively through all the subdirectories of LayoutTests/ to find test files, just as it does currently. However, it should not search beneath platform/. It should then search through each of the directories in the platform hierarchy to find additional platform-specific tests to run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3517</commentid>
    <comment_count>1</comment_count>
      <attachid>15723</attachid>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-07-28 22:44:01 -0700</bug_when>
    <thetext>Created attachment 15723
wip

Work in progress that does platform-specific results and such but not platform-specific tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3518</commentid>
    <comment_count>2</comment_count>
      <attachid>15723</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-07-28 22:55:12 -0700</bug_when>
    <thetext>Comment on attachment 15723
wip

This looks like a great start! A few comments:

+my $platform;

I think it would be good to define $platform to its default setting before parsing the options. Then you can show the default in the usage output.

+my $platformTestDirectory = $testDirectory . &quot;/platform/&quot;;

It would be nice to use File::Spec-&gt;catdir() instead of building up these paths manually.

+} elsif (isTiger()) {
+    $platformTestDirectory .= &quot;mac-leopard&quot;;
+} elsif (isLeopard()) {
+    $platformTestDirectory .= &quot;mac&quot;;

I think these are reversed.

+    foreach my $level (@platformHierarchy) {
+        return $level if (-f &quot;$level/$base-$expectedTag.txt&quot;);
+    }

I believe this will traverse the platform hierarchy from least- to most-specific, but we want it to go the other way, so that results in, for example, `mac-leopard` will override results in `mac`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3516</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-07-28 23:02:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 15723 [edit])
&gt; +    foreach my $level (@platformHierarchy) {
&gt; +        return $level if (-f &quot;$level/$base-$expectedTag.txt&quot;);
&gt; +    }
&gt; 
&gt; I believe this will traverse the platform hierarchy from least- to
&gt; most-specific, but we want it to go the other way, so that results in, for
&gt; example, `mac-leopard` will override results in `mac`

   Ah, I guess I was wrong about this one.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3397</commentid>
    <comment_count>4</comment_count>
      <attachid>15753</attachid>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-07-30 19:41:42 -0700</bug_when>
    <thetext>Created attachment 15753
wip v2

&gt; +my $platform;
&gt;
&gt; I think it would be good to define $platform to its default setting before
&gt; parsing the options. Then you can show the default in the usage output.

Done - though I feel dirty the way I did this (but maybe that&apos;s just me).

&gt; +my $platformTestDirectory = $testDirectory . &quot;/platform/&quot;;
&gt;
&gt; It would be nice to use File::Spec-&gt;catdir() instead of building up these paths
&gt; manually.
&gt; 
&gt; +} elsif (isTiger()) {
&gt; +    $platformTestDirectory .= &quot;mac-leopard&quot;;
&gt; +} elsif (isLeopard()) {
&gt; +    $platformTestDirectory .= &quot;mac&quot;;
&gt; 
&gt; I think these are reversed.

Done and done.

I&apos;m sure there are nitpicks left in here which is why I&apos;m not putting it up for review.  Another reason is that platform specific tests do not use the resources of lower levels if applicable. So say you had a platform/mac-leopard/css1/basic test that relied on one of the resources in the css1/resources folder - that platform-specific test would require it&apos;s own copy of those resources in platform/mac-leopard/css1/resources - is that an issue and if so, how big?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3394</commentid>
    <comment_count>5</comment_count>
      <attachid>15753</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-07-30 19:56:51 -0700</bug_when>
    <thetext>Comment on attachment 15753
wip v2

+sub buildTestHierarchy();

I think buildTestHierarchy is a misleading name, because this isn&apos;t building up an hierarchy of tests. Maybe buildPlatformHierarchy would be better?

+} elsif (isTiger()) {
+    $platform = &quot;mac&quot;;

We should probably just say isOSX() here, since we want OS X v. 10.6 to match this, once it exists.

+if ($platformOverride) {
+    $platform = $platformOverride;

There&apos;s no need for a separate $platformOverride variable. The --platform option can just set $platform directly.

This is looking really close! I think all we have left is generating new results, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3395</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-07-30 20:43:58 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=15753) [edit]
&gt; wip v2
&gt; 
&gt; &gt; +my $platform;
&gt; &gt;
&gt; &gt; I think it would be good to define $platform to its default setting before
&gt; &gt; parsing the options. Then you can show the default in the usage output.
&gt; 
&gt; Done - though I feel dirty the way I did this (but maybe that&apos;s just me).
&gt; 
&gt; &gt; +my $platformTestDirectory = $testDirectory . &quot;/platform/&quot;;
&gt; &gt;
&gt; &gt; It would be nice to use File::Spec-&gt;catdir() instead of building up these paths
&gt; &gt; manually.
&gt; &gt; 
&gt; &gt; +} elsif (isTiger()) {
&gt; &gt; +    $platformTestDirectory .= &quot;mac-leopard&quot;;
&gt; &gt; +} elsif (isLeopard()) {
&gt; &gt; +    $platformTestDirectory .= &quot;mac&quot;;
&gt; &gt; 
&gt; &gt; I think these are reversed.
&gt; 
&gt; Done and done.
&gt; 
&gt; I&apos;m sure there are nitpicks left in here which is why I&apos;m not putting it up for
&gt; review.  Another reason is that platform specific tests do not use the
&gt; resources of lower levels if applicable. So say you had a
&gt; platform/mac-leopard/css1/basic test that relied on one of the resources in the
&gt; css1/resources folder - that platform-specific test would require it&apos;s own copy
&gt; of those resources in platform/mac-leopard/css1/resources - is that an issue
&gt; and if so, how big?

   Well, the test could hard-code the path to the shared resource (e.g., &quot;../../../../css1/basic/resources/whatever.jpg&quot;). We could eventually decide to move all resources to some shared location, though I imagine there will be some platform-specific resources at some point.

&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2699</commentid>
    <comment_count>7</comment_count>
      <attachid>15892</attachid>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-08-09 19:21:43 -0700</bug_when>
    <thetext>Created attachment 15892
wip v3

*almost* ready for full review - want to test it a bit more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2700</commentid>
    <comment_count>8</comment_count>
      <attachid>15892</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-08-09 19:48:39 -0700</bug_when>
    <thetext>Comment on attachment 15892
wip v3

+if (isTiger()) {
+    $platform = &quot;mac-leopard&quot;;
+} elsif (isLeopard()) {
+    $platform = &quot;mac&quot;;

I think it should be:

if (isLeopard()) {
   $platform = &quot;mac-leopard&quot;;
} elsif (isOSX()) {
   $platform = &quot;mac&quot;;
}...

+my $platformTestDirectory = catdir($testDirectory, &apos;platform&apos;);
+$platformTestDirectory = catdir($platformTestDirectory, $platform);

You can combine these lines into one:

my $platformTestDirectory = catdir($textDirectory, &apos;platform&apos;, $platform);

+sub platformDirForTest($)

I think this could use a better name -- perhaps &quot;directoryForNewResults&quot; or something like that. Then we might want to rename &quot;expectedDirectoryForText&quot; to &quot;directoryForExistingResults&quot;.

+    my @paths = split(&apos;/&apos;, $test);

You should use File::Spec-&gt;splitpath here:

my (undef, @paths, undef) = File::Spec-&gt;splitpath($test);

(I&apos;m not sure if the leading &apos;/&apos; is still needed in this case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2701</commentid>
    <comment_count>9</comment_count>
      <attachid>15892</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-08-09 19:53:15 -0700</bug_when>
    <thetext>Comment on attachment 15892
wip v3

I just realized that platformDirForTest shouldn&apos;t be needed at all. It can all be encapsulated into expectedDirectoryForTest, like so:

 sub expectedDirectoryForTest($)
 {
     my ($base) = @_;

    foreach my $level (@platformHierarchy) {
        return $level if (-f &quot;$level/$base-$expectedTag.txt&quot;);
    }

    return $expectedDirectory if -f &quot;$expectedDirectory/$base-$expectedTag.txt&quot;;

    return $platformHierarchy[$#platformHierarchy];
 }

This should work correctly for both new and old tests, and for both generating and comparing results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2588</commentid>
    <comment_count>10</comment_count>
      <attachid>15915</attachid>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-08-10 18:41:29 -0700</bug_when>
    <thetext>Created attachment 15915
reviewable v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2586</commentid>
    <comment_count>11</comment_count>
      <attachid>15915</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-08-10 19:18:41 -0700</bug_when>
    <thetext>Comment on attachment 15915
reviewable v1

+my $platformDefault = $platform ? $platform : &quot;none&quot;;

I wonder if we should die if $platform is undefined at this point. Seems like bad things might happen down the road if we keep going.

+        my $resultDir = expectedDirectoryForTest($test);

I think you can just use $expectedDir instead (this happens in 2 places).

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2582</commentid>
    <comment_count>12</comment_count>
      <attachid>15915</attachid>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-08-10 19:22:21 -0700</bug_when>
    <thetext>Comment on attachment 15915
reviewable v1

clearing review flag so I can add a skipped file override</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2554</commentid>
    <comment_count>13</comment_count>
      <attachid>15925</attachid>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-08-10 23:12:08 -0700</bug_when>
    <thetext>Created attachment 15925
reviewable v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2555</commentid>
    <comment_count>14</comment_count>
      <attachid>15925</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-08-10 23:33:13 -0700</bug_when>
    <thetext>Comment on attachment 15925
reviewable v2

+    # FIXME: Get rid of the $useWinSkipped hack once Windows doesn&apos;t need a Skipped file anymore
+    # or stops using the mac result directory or we come up with something better.

I think this should say something clearer like:

# FIXME: The two lines below are a hack to represent that on Windows we
# currently want to
# 1) use the Mac expected results
# 2) use the Windows Skipped file
# Once Windows has its own results and/or we come up with a better way of
# sharing results with Mac, we should set $platform to &quot;win&quot; and get rid of
# $useWinSkipped entirely.

+            print &quot;new (result generated in $expectedDir)\n&quot;;

I think it should be &quot;results&quot; with an &quot;s&quot;.

+    if (!defined($platform) || $platform eq &quot;none&quot;) {
+        return $testDirectory;
+    }

I think you&apos;d better return ($testDirectory) so that the caller still gets a list.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2552</commentid>
    <comment_count>15</comment_count>
      <attachid>15925</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-08-10 23:35:54 -0700</bug_when>
    <thetext>Comment on attachment 15925
reviewable v2

+    if (!defined($platform) || $platform eq &quot;none&quot;) {
+        return $testDirectory;
+    }

Hm, won&apos;t this mean that we&apos;ll run all the tests twice if we hit this code? We first add all the tests from $testDirectory, then all the tests in @platformHierarchy, but in this case they&apos;re the same...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2515</commentid>
    <comment_count>16</comment_count>
      <attachid>15930</attachid>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-08-11 10:40:16 -0700</bug_when>
    <thetext>Created attachment 15930
reviewable v3

The only real change is if there&apos;s no platform specified, don&apos;t get confused and run the tests twice, and create a &quot;undefined&quot; directory in platform/ and stick the results in there as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2511</commentid>
    <comment_count>17</comment_count>
      <attachid>15930</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-08-11 12:37:37 -0700</bug_when>
    <thetext>Comment on attachment 15930
reviewable v3

+    mkpath($platformTestDirectory) if ($platform eq &quot;undefined&quot; &amp;&amp; !-d &quot;$platformTestDirectory&quot;);

This behavior seems fine, though it will be a little less confusing for people if you print out a message along the lines of &quot;Your platform is not recognized. Any new results will be generated in platform/undefined.&quot; Or you could just abort the script with a call to die.

Either way, r=me (again :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2507</commentid>
    <comment_count>18</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-08-11 13:48:19 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 15930 [edit])
&gt; +    mkpath($platformTestDirectory) if ($platform eq &quot;undefined&quot; &amp;&amp; !-d
&gt; &quot;$platformTestDirectory&quot;);
&gt; 
&gt; This behavior seems fine, though it will be a little less confusing for people
&gt; if you print out a message along the lines of &quot;Your platform is not recognized.
&gt; Any new results will be generated in platform/undefined.&quot; Or you could just
&gt; abort the script with a call to die.
&gt; 
&gt; Either way, r=me (again :-)
&gt; 

I had that in the last patch, but I tweaked the wording before I landed it in r25015 :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15723</attachid>
            <date>2007-07-28 22:44:01 -0700</date>
            <delta_ts>2007-07-30 19:41:42 -0700</delta_ts>
            <desc>wip</desc>
            <filename>Diff</filename>
            <type>text/plain</type>
            <size>5481</size>
            <attacher name="Matt Lilek">dev+webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IHJ1bi13ZWJraXQtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnVuLXdlYmtpdC10ZXN0cwko
cmV2aXNpb24gMjQ3NTUpCisrKyBydW4td2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCw3IEBACiBzdWIgdG9XaW5kb3dzUGF0aCgkKTsKIHN1YiBjbG9zZUN5Z3BhdGhzKCk7
CiBzdWIgdmFsaWRhdGVTa2lwcGVkQXJnKCQkOyQpOworc3ViIGJ1aWxkVGVzdEhpZXJhcmNoeSgp
OwogCiAjIEFyZ3VtZW50IGhhbmRsaW5nCiBteSAkc2hvdWxkQ2hlY2tMZWFrcyA9ICcnOwpAQCAt
ODcsNiArODgsNyBAQAogbXkgJGh0dHBkU1NMUG9ydCA9IDg0NDM7CiBteSAkaWdub3JlVGVzdHMg
PSAnJzsKIG15ICRsYXVuY2hTYWZhcmkgPSAxOworbXkgJHBsYXRmb3JtOwogbXkgJHBpeGVsVGVz
dHMgPSAnJzsKIG15ICRxdWlldCA9ICcnOwogbXkgJHJlcGFpbnRTd2VlcEhvcml6b250YWxseSA9
ICcnOwpAQCAtMTI3LDYgKzEyOSw3IEBACiAgIC1sfC0tbGVha3MgICAgICAgICAgICAgICAgICAg
ICAgRW5hYmxlIGxlYWtzIGNoZWNraW5nCiAgIC0tW25vLV1uZXctdGVzdC1yZXN1bHRzICAgICAg
ICAgR2VuZXJhdGUgcmVzdWx0cyBmb3IgbmV3IHRlc3RzCiAgIC1wfC0tcGl4ZWwtdGVzdHMgICAg
ICAgICAgICAgICAgRW5hYmxlIHBpeGVsIHRlc3RzCisgIC0tcGxhdGZvcm0gICAgICAgICAgICAg
ICAgICAgICAgT3ZlcnJpZGUgdGhlIGRldGVjdGVkIHBsYXRmb3JtIHRvIHVzZSBmb3IgdGVzdHMg
YW5kIHJlc3VsdHMKICAgLS1wb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWIgc2VydmVy
IHBvcnQgdG8gdXNlIHdpdGggaHR0cCB0ZXN0cwogICAtcXwtLXF1aWV0ICAgICAgICAgICAgICAg
ICAgICAgIExlc3MgdmVyYm9zZSBvdXRwdXQKICAgLXJ8LS1yZXBhaW50LXRlc3RzICAgICAgICAg
ICAgICBSdW4gcmVwYWludCB0ZXN0cyAoaW1wbGllcyAtLXBpeGVsLXRlc3RzKQpAQCAtMTU4LDYg
KzE2MSw3IEBACiAgICAgJ2xhdW5jaC1zYWZhcmkhJyA9PiBcJGxhdW5jaFNhZmFyaSwKICAgICAn
bGVha3N8bCcgPT4gXCRzaG91bGRDaGVja0xlYWtzLAogICAgICdwaXhlbC10ZXN0c3xwJyA9PiBc
JHBpeGVsVGVzdHMsCisgICAgJ3BsYXRmb3JtPXMnID0+IFwkcGxhdGZvcm0sCiAgICAgJ3BvcnQ9
aScgPT4gXCRodHRwZFBvcnQsCiAgICAgJ3F1aWV0fHEnID0+IFwkcXVpZXQsCiAgICAgJ3JlbGVh
c2V8ZGVwbG95JyA9PiBzdWIgeyAkY29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIiB9LApAQCAtMjM4
LDE3ICsyNDIsMjEgQEAKIAogbXkgJGxheW91dFRlc3RzTmFtZSA9ICJMYXlvdXRUZXN0cyI7CiBt
eSAkdGVzdERpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoJGxheW91dFRlc3RzTmFtZSk7
Ci1teSAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5ID0gJHRlc3REaXJlY3Rvcnk7CitteSAkcGxhdGZv
cm1UZXN0RGlyZWN0b3J5ID0gJHRlc3REaXJlY3RvcnkgLiAiL3BsYXRmb3JtLyI7CiBteSAkZXhw
ZWN0ZWREaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeTsKLWlmIChpc0xlb3BhcmQoKSkgewotICAg
ICRwbGF0Zm9ybVRlc3REaXJlY3RvcnkgPSAiJHRlc3REaXJlY3RvcnkvbWFjL2xlb3BhcmQiOwor
CitpZiAoJHBsYXRmb3JtKSB7CisgICAgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSAuPSAkcGxhdGZv
cm07Cit9IGVsc2lmIChpc1RpZ2VyKCkpIHsKKyAgICAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5IC49
ICJtYWMtbGVvcGFyZCI7Cit9IGVsc2lmIChpc0xlb3BhcmQoKSkgeworICAgICRwbGF0Zm9ybVRl
c3REaXJlY3RvcnkgLj0gIm1hYyI7CiB9IGVsc2lmIChpc1F0KCkpIHsKLSAgICAkZXhwZWN0ZWRE
aXJlY3RvcnkgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCJMYXlvdXRUZXN0cy9xdC8iKTsKLSAgICAk
cGxhdGZvcm1UZXN0RGlyZWN0b3J5ID0gJGV4cGVjdGVkRGlyZWN0b3J5OworICAgICRwbGF0Zm9y
bVRlc3REaXJlY3RvcnkgLj0gInF0IjsKIH0gZWxzaWYgKGlzQ3lnd2luKCkpIHsKLSAgICAkZXhw
ZWN0ZWREaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeTsKLSAgICAkcGxhdGZvcm1UZXN0RGlyZWN0
b3J5ID0gRmlsZTo6U3BlYy0+cmVsMmFicygiTGF5b3V0VGVzdHMvd2luLyIpOworICAgICRwbGF0
Zm9ybVRlc3REaXJlY3RvcnkgLj0gIndpbiI7CiB9CitteSBAcGxhdGZvcm1IaWVyYXJjaHkgPSBi
dWlsZFRlc3RIaWVyYXJjaHkoKTsKIAogJGV4cGVjdGVkRGlyZWN0b3J5ID0gJEVOVnsiV2ViS2l0
RXhwZWN0ZWRUZXN0UmVzdWx0c0RpcmVjdG9yeSJ9IGlmICRFTlZ7IldlYktpdEV4cGVjdGVkVGVz
dFJlc3VsdHNEaXJlY3RvcnkifTsKIApAQCAtMjY3LDcgKzI3NSw3IEBACiBzeXN0ZW0gImxuIiwg
Ii1zIiwgJHRlc3REaXJlY3RvcnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90bXAv
TGF5b3V0VGVzdHMiOwogCiBteSAlaWdub3JlZEZpbGVzID0gKCk7Ci1teSAlaWdub3JlZERpcmVj
dG9yaWVzID0gKCk7CitteSAlaWdub3JlZERpcmVjdG9yaWVzID0gbWFwIHsgJF8gPT4gMSB9IHF3
KHBsYXRmb3JtKTsKIG15ICVpZ25vcmVkTG9jYWxEaXJlY3RvcmllcyA9IG1hcCB7ICRfID0+IDEg
fSBxdyguc3ZuIF9zdm4gcmVzb3VyY2VzKTsKIG15ICVzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucyA9
IG1hcCB7ICRfID0+IDEgfSBxdyhodG1sIHNodG1sIHhtbCB4aHRtbCBwbCBwaHApOwogaWYgKCR0
ZXN0T25seVNWR3MpIHsKQEAgLTI4OSwyNyArMjk3LDMzIEBACiAgICAgcHJvY2Vzc0lnbm9yZVRl
c3RzKCRpZ25vcmVUZXN0cyk7CiB9CiAKLWlmICghJGlnbm9yZVNraXBwZWQgJiYgb3BlbiBTS0lQ
UEVELCAiPCIsICIkcGxhdGZvcm1UZXN0RGlyZWN0b3J5L1NraXBwZWQiKSB7Ci0gICAgaWYgKCR2
ZXJib3NlICYmICEkc2tpcHBlZE9ubHkpIHsKLSAgICAgICAgcHJpbnQgIlNraXBwZWQgdGVzdHM6
XG4iOwotICAgIH0KLSAgICB3aGlsZSAoPFNLSVBQRUQ+KSB7Ci0gICAgICAgIG15ICRza2lwcGVk
ID0gJF87Ci0gICAgICAgIGNob21wICRza2lwcGVkOwotICAgICAgICAkc2tpcHBlZCA9fiBzL14g
Ky8vOwotICAgICAgICAkc2tpcHBlZCA9fiBzLyArJC8vOwotICAgICAgICBpZiAoJHNraXBwZWQg
JiYgJHNraXBwZWQgIX4gL14jLykgewotICAgICAgICAgICAgaWYgKCRza2lwcGVkT25seSkgewot
ICAgICAgICAgICAgICAgIHB1c2goQEFSR1YsICRza2lwcGVkKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCR2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHByaW50ICIgICAgJHNraXBwZWRcbiI7CitpZiAoISRpZ25vcmVTa2lwcGVkKSB7CisgICAgZm9y
ZWFjaCBteSAkbGV2ZWwgKEBwbGF0Zm9ybUhpZXJhcmNoeSkgeworICAgICAgICBpZiAob3BlbiBT
S0lQUEVELCAiPCIsICIkbGV2ZWwvU2tpcHBlZCIpIHsKKyAgICAgICAgICAgIGlmICgkdmVyYm9z
ZSAmJiAhJHNraXBwZWRPbmx5KSB7CisgICAgICAgICAgICAgICAgbXkgKCRkaXIsICRuYW1lKSA9
IHNwbGl0cGF0aCgkbGV2ZWwpOworICAgICAgICAgICAgICAgIHByaW50ICJTa2lwcGVkIHRlc3Rz
IGluICRuYW1lOlxuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKDxTS0lQ
UEVEPikgeworICAgICAgICAgICAgICAgIG15ICRza2lwcGVkID0gJF87CisgICAgICAgICAgICAg
ICAgY2hvbXAgJHNraXBwZWQ7CisgICAgICAgICAgICAgICAgJHNraXBwZWQgPX4gcy9eICsvLzsK
KyAgICAgICAgICAgICAgICAkc2tpcHBlZCA9fiBzLyArJC8vOworICAgICAgICAgICAgICAgIGlm
ICgkc2tpcHBlZCAmJiAkc2tpcHBlZCAhfiAvXiMvKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICgkc2tpcHBlZE9ubHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQEFSR1YsICRz
a2lwcGVkKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgkdmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
ICIgICAgJHNraXBwZWRcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9jZXNzSWdub3JlVGVzdHMoJHNraXBwZWQpOworICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByb2Nlc3NJZ25v
cmVUZXN0cygkc2tpcHBlZCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjbG9zZSBTS0lQ
UEVEOwogICAgICAgICB9CiAgICAgfQotICAgIGNsb3NlIFNLSVBQRUQ7CiB9CiAKIApAQCAtOTI4
LDcgKzk0Miw3IEBACiAgICAgICAgICAgICAiX29iamNfbXNnRm9yd2FyZCIsICMgbGVhayBpbiBO
U1NwZWxsQ2hlY2tlciwgUmFkYXIgNDk2NTI3OAogICAgICAgICAgICAgImdsZEdldFN0cmluZyIg
IyBsZWFrIGluIE9wZW5HTCwgUmFkYXIgNTAxMzY5OQogICAgICAgICApOwotICAgICAgICAgcHVz
aCBAdHlwZXNUb0V4Y2x1ZGUsICgKKyAgICAgICAgcHVzaCBAdHlwZXNUb0V4Y2x1ZGUsICgKICAg
ICAgICAgICAgICJUSFJEIiwgIyBidWcgaW4gJ2xlYWtzJywgUmFkYXIgMzM4Nzc4MwogICAgICAg
ICAgICAgIkRSSFQiICMgZGl0dG8gKGVuZGlhbiBsaXR0bGUgaGF0ZSBpKQogICAgICAgICApOwpA
QCAtMTIzMyw3ICsxMjQ3LDEyIEBACiBzdWIgZXhwZWN0ZWREaXJlY3RvcnlGb3JUZXN0KCQpCiB7
CiAgICAgbXkgKCRiYXNlKSA9IEBfOwotICAgIHJldHVybiAoLWYgIiRwbGF0Zm9ybVRlc3REaXJl
Y3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIpID8gJHBsYXRmb3JtVGVzdERpcmVjdG9yeSA6
ICRleHBlY3RlZERpcmVjdG9yeTsKKworICAgIGZvcmVhY2ggbXkgJGxldmVsIChAcGxhdGZvcm1I
aWVyYXJjaHkpIHsKKyAgICAgICAgcmV0dXJuICRsZXZlbCBpZiAoLWYgIiRsZXZlbC8kYmFzZS0k
ZXhwZWN0ZWRUYWcudHh0Iik7CisgICAgfQorCisgICAgcmV0dXJuICRleHBlY3RlZERpcmVjdG9y
eTsKIH0KIAogbXkgJWN5Z3BhdGhzID0gKCk7CkBAIC0xMzA4LDMgKzEzMjcsMTYgQEAKICAgICBk
aWUgIkludmFsaWQgYXJndW1lbnQgJyIgLiAkdmFsdWUgLiAiJyBmb3Igb3B0aW9uICRvcHRpb24i
IHVubGVzcyAkdmFsaWRTa2lwcGVkVmFsdWVzeyR2YWx1ZX07CiAgICAgJHRyZWF0U2tpcHBlZCA9
ICR2YWx1ZTsKIH0KKworc3ViIGJ1aWxkVGVzdEhpZXJhcmNoeSgpCit7CisgICAgbXkgQGxldmVs
cyA9IHNwbGl0KCctJywgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSk7CisgICAgbXkgQGhpZXJhcmNo
eTsKKworICAgIGZvciAobXkgJGk9MDsgJGkgPCBAbGV2ZWxzOyAkaSsrKSB7CisgICAgICAgIG15
ICRzY29wZWQgPSBqb2luKCctJywgQGxldmVsc1swLi4oJCNsZXZlbHMgLSAkaSldKTsKKyAgICAg
ICAgcHVzaChAaGllcmFyY2h5LCAkc2NvcGVkKTsKKyAgICB9CisKKyAgICByZXR1cm4gQGhpZXJh
cmNoeTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15753</attachid>
            <date>2007-07-30 19:41:42 -0700</date>
            <delta_ts>2007-08-09 19:21:43 -0700</delta_ts>
            <desc>wip v2</desc>
            <filename>Diff</filename>
            <type>text/plain</type>
            <size>6298</size>
            <attacher name="Matt Lilek">dev+webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IHJ1bi13ZWJraXQtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnVuLXdlYmtpdC10ZXN0cwko
cmV2aXNpb24gMjQ3NzEpCisrKyBydW4td2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCw3IEBACiBzdWIgdG9XaW5kb3dzUGF0aCgkKTsKIHN1YiBjbG9zZUN5Z3BhdGhzKCk7
CiBzdWIgdmFsaWRhdGVTa2lwcGVkQXJnKCQkOyQpOworc3ViIGJ1aWxkVGVzdEhpZXJhcmNoeSgp
OwogCiAjIEFyZ3VtZW50IGhhbmRsaW5nCiBteSAkc2hvdWxkQ2hlY2tMZWFrcyA9ICcnOwpAQCAt
ODcsNiArODgsNyBAQAogbXkgJGh0dHBkU1NMUG9ydCA9IDg0NDM7CiBteSAkaWdub3JlVGVzdHMg
PSAnJzsKIG15ICRsYXVuY2hTYWZhcmkgPSAxOworbXkgJHBsYXRmb3JtT3ZlcnJpZGU7CiBteSAk
cGl4ZWxUZXN0cyA9ICcnOwogbXkgJHF1aWV0ID0gJyc7CiBteSAkcmVwYWludFN3ZWVwSG9yaXpv
bnRhbGx5ID0gJyc7CkBAIC0xMTEsOSArMTEzLDIxIEBACiBteSAkYWN0dWFsVGFnID0gImFjdHVh
bCI7CiBteSAkZGlmZnNUYWcgPSAiZGlmZnMiOwogCitteSAkcGxhdGZvcm07CitpZiAoaXNMZW9w
YXJkKCkpIHsKKyAgICAkcGxhdGZvcm0gPSAibWFjLWxlb3BhcmQiOworfSBlbHNpZiAoaXNUaWdl
cigpKSB7CisgICAgJHBsYXRmb3JtID0gIm1hYyI7Cit9IGVsc2lmIChpc1F0KCkpIHsKKyAgICAk
cGxhdGZvcm0gPSAicXQiOworfSBlbHNpZiAoaXNDeWd3aW4oKSkgeworICAgICRwbGF0Zm9ybSA9
ICJ3aW4iOworfQorCiBteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CiBteSAkbGF1bmNo
U2FmYXJpRGVmYXVsdCA9ICRsYXVuY2hTYWZhcmkgPyAibGF1bmNoIiA6ICJkbyBub3QgbGF1bmNo
IjsKIG15ICRodHRwRGVmYXVsdCA9ICR0ZXN0SFRUUCA/ICJydW4iIDogImRvIG5vdCBydW4iOwor
bXkgJHBsYXRmb3JtRGVmYXVsdCA9ICRwbGF0Zm9ybSA/ICRwbGF0Zm9ybSA6ICJub25lIjsKIAog
bXkgJHVzYWdlID0gPDxFT0Y7CiBVc2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBbdGVzdGRp
cnx0ZXN0cGF0aCAuLi5dCkBAIC0xMjcsNiArMTQxLDcgQEAKICAgLWx8LS1sZWFrcyAgICAgICAg
ICAgICAgICAgICAgICBFbmFibGUgbGVha3MgY2hlY2tpbmcKICAgLS1bbm8tXW5ldy10ZXN0LXJl
c3VsdHMgICAgICAgICBHZW5lcmF0ZSByZXN1bHRzIGZvciBuZXcgdGVzdHMKICAgLXB8LS1waXhl
bC10ZXN0cyAgICAgICAgICAgICAgICBFbmFibGUgcGl4ZWwgdGVzdHMKKyAgLS1wbGF0Zm9ybSAg
ICAgICAgICAgICAgICAgICAgICBPdmVycmlkZSB0aGUgZGV0ZWN0ZWQgcGxhdGZvcm0gdG8gdXNl
IGZvciB0ZXN0cyBhbmQgcmVzdWx0cyAoZGVmYXVsdDogJHBsYXRmb3JtRGVmYXVsdCkKICAgLS1w
b3J0ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWIgc2VydmVyIHBvcnQgdG8gdXNlIHdpdGgg
aHR0cCB0ZXN0cwogICAtcXwtLXF1aWV0ICAgICAgICAgICAgICAgICAgICAgIExlc3MgdmVyYm9z
ZSBvdXRwdXQKICAgLXJ8LS1yZXBhaW50LXRlc3RzICAgICAgICAgICAgICBSdW4gcmVwYWludCB0
ZXN0cyAoaW1wbGllcyAtLXBpeGVsLXRlc3RzKQpAQCAtMTU4LDYgKzE3Myw3IEBACiAgICAgJ2xh
dW5jaC1zYWZhcmkhJyA9PiBcJGxhdW5jaFNhZmFyaSwKICAgICAnbGVha3N8bCcgPT4gXCRzaG91
bGRDaGVja0xlYWtzLAogICAgICdwaXhlbC10ZXN0c3xwJyA9PiBcJHBpeGVsVGVzdHMsCisgICAg
J3BsYXRmb3JtPXMnID0+IFwkcGxhdGZvcm1PdmVycmlkZSwKICAgICAncG9ydD1pJyA9PiBcJGh0
dHBkUG9ydCwKICAgICAncXVpZXR8cScgPT4gXCRxdWlldCwKICAgICAncmVsZWFzZXxkZXBsb3kn
ID0+IHN1YiB7ICRjb25maWd1cmF0aW9uID0gIlJlbGVhc2UiIH0sCkBAIC0yMzgsMTcgKzI1NCwx
NCBAQAogCiBteSAkbGF5b3V0VGVzdHNOYW1lID0gIkxheW91dFRlc3RzIjsKIG15ICR0ZXN0RGly
ZWN0b3J5ID0gRmlsZTo6U3BlYy0+cmVsMmFicygkbGF5b3V0VGVzdHNOYW1lKTsKLW15ICRwbGF0
Zm9ybVRlc3REaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeTsKK215ICRwbGF0Zm9ybVRlc3REaXJl
Y3RvcnkgPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHRlc3REaXJlY3RvcnksICdwbGF0Zm9ybScpOwog
bXkgJGV4cGVjdGVkRGlyZWN0b3J5ID0gJHRlc3REaXJlY3Rvcnk7Ci1pZiAoaXNMZW9wYXJkKCkp
IHsKLSAgICAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5ID0gIiR0ZXN0RGlyZWN0b3J5L21hYy9sZW9w
YXJkIjsKLX0gZWxzaWYgKGlzUXQoKSkgewotICAgICRleHBlY3RlZERpcmVjdG9yeSA9IEZpbGU6
OlNwZWMtPnJlbDJhYnMoIkxheW91dFRlc3RzL3F0LyIpOwotICAgICRwbGF0Zm9ybVRlc3REaXJl
Y3RvcnkgPSAkZXhwZWN0ZWREaXJlY3Rvcnk7Ci19IGVsc2lmIChpc0N5Z3dpbigpKSB7Ci0gICAg
JGV4cGVjdGVkRGlyZWN0b3J5ID0gJHRlc3REaXJlY3Rvcnk7Ci0gICAgJHBsYXRmb3JtVGVzdERp
cmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoIkxheW91dFRlc3RzL3dpbi8iKTsKKworaWYg
KCRwbGF0Zm9ybU92ZXJyaWRlKSB7CisgICAgJHBsYXRmb3JtID0gJHBsYXRmb3JtT3ZlcnJpZGU7
CiB9CiskcGxhdGZvcm1UZXN0RGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRwbGF0Zm9y
bVRlc3REaXJlY3RvcnksICRwbGF0Zm9ybSk7CitteSBAcGxhdGZvcm1IaWVyYXJjaHkgPSBidWls
ZFRlc3RIaWVyYXJjaHkoKTsKIAogJGV4cGVjdGVkRGlyZWN0b3J5ID0gJEVOVnsiV2ViS2l0RXhw
ZWN0ZWRUZXN0UmVzdWx0c0RpcmVjdG9yeSJ9IGlmICRFTlZ7IldlYktpdEV4cGVjdGVkVGVzdFJl
c3VsdHNEaXJlY3RvcnkifTsKIApAQCAtMjY3LDcgKzI4MCw3IEBACiBzeXN0ZW0gImxuIiwgIi1z
IiwgJHRlc3REaXJlY3RvcnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90bXAvTGF5
b3V0VGVzdHMiOwogCiBteSAlaWdub3JlZEZpbGVzID0gKCk7Ci1teSAlaWdub3JlZERpcmVjdG9y
aWVzID0gKCk7CitteSAlaWdub3JlZERpcmVjdG9yaWVzID0gbWFwIHsgJF8gPT4gMSB9IHF3KHBs
YXRmb3JtKTsKIG15ICVpZ25vcmVkTG9jYWxEaXJlY3RvcmllcyA9IG1hcCB7ICRfID0+IDEgfSBx
dyguc3ZuIF9zdm4gcmVzb3VyY2VzKTsKIG15ICVzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucyA9IG1h
cCB7ICRfID0+IDEgfSBxdyhodG1sIHNodG1sIHhtbCB4aHRtbCBwbCBwaHApOwogaWYgKCR0ZXN0
T25seVNWR3MpIHsKQEAgLTI4OSwyNyArMzAyLDMzIEBACiAgICAgcHJvY2Vzc0lnbm9yZVRlc3Rz
KCRpZ25vcmVUZXN0cyk7CiB9CiAKLWlmICghJGlnbm9yZVNraXBwZWQgJiYgb3BlbiBTS0lQUEVE
LCAiPCIsICIkcGxhdGZvcm1UZXN0RGlyZWN0b3J5L1NraXBwZWQiKSB7Ci0gICAgaWYgKCR2ZXJi
b3NlICYmICEkc2tpcHBlZE9ubHkpIHsKLSAgICAgICAgcHJpbnQgIlNraXBwZWQgdGVzdHM6XG4i
OwotICAgIH0KLSAgICB3aGlsZSAoPFNLSVBQRUQ+KSB7Ci0gICAgICAgIG15ICRza2lwcGVkID0g
JF87Ci0gICAgICAgIGNob21wICRza2lwcGVkOwotICAgICAgICAkc2tpcHBlZCA9fiBzL14gKy8v
OwotICAgICAgICAkc2tpcHBlZCA9fiBzLyArJC8vOwotICAgICAgICBpZiAoJHNraXBwZWQgJiYg
JHNraXBwZWQgIX4gL14jLykgewotICAgICAgICAgICAgaWYgKCRza2lwcGVkT25seSkgewotICAg
ICAgICAgICAgICAgIHB1c2goQEFSR1YsICRza2lwcGVkKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCR2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBy
aW50ICIgICAgJHNraXBwZWRcbiI7CitpZiAoISRpZ25vcmVTa2lwcGVkKSB7CisgICAgZm9yZWFj
aCBteSAkbGV2ZWwgKEBwbGF0Zm9ybUhpZXJhcmNoeSkgeworICAgICAgICBpZiAob3BlbiBTS0lQ
UEVELCAiPCIsICIkbGV2ZWwvU2tpcHBlZCIpIHsKKyAgICAgICAgICAgIGlmICgkdmVyYm9zZSAm
JiAhJHNraXBwZWRPbmx5KSB7CisgICAgICAgICAgICAgICAgbXkgKCRkaXIsICRuYW1lKSA9IHNw
bGl0cGF0aCgkbGV2ZWwpOworICAgICAgICAgICAgICAgIHByaW50ICJTa2lwcGVkIHRlc3RzIGlu
ICRuYW1lOlxuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKDxTS0lQUEVE
PikgeworICAgICAgICAgICAgICAgIG15ICRza2lwcGVkID0gJF87CisgICAgICAgICAgICAgICAg
Y2hvbXAgJHNraXBwZWQ7CisgICAgICAgICAgICAgICAgJHNraXBwZWQgPX4gcy9eICsvLzsKKyAg
ICAgICAgICAgICAgICAkc2tpcHBlZCA9fiBzLyArJC8vOworICAgICAgICAgICAgICAgIGlmICgk
c2tpcHBlZCAmJiAkc2tpcHBlZCAhfiAvXiMvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgk
c2tpcHBlZE9ubHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQEFSR1YsICRza2lw
cGVkKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkdmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIg
ICAgJHNraXBwZWRcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9jZXNzSWdub3JlVGVzdHMoJHNraXBwZWQpOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByb2Nlc3NJZ25vcmVU
ZXN0cygkc2tpcHBlZCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjbG9zZSBTS0lQUEVE
OwogICAgICAgICB9CiAgICAgfQotICAgIGNsb3NlIFNLSVBQRUQ7CiB9CiAKIApAQCAtMzUwLDYg
KzM2OSw5IEBACiBpZiAoIXNjYWxhciBAQVJHVikgewogICAgIGZpbmQoeyBwcmVwcm9jZXNzID0+
ICRkaXJlY3RvcnlGaWx0ZXIsIHdhbnRlZCA9PiAkZmlsZUZpbHRlciB9LCAkdGVzdERpcmVjdG9y
eSk7CiB9Citmb3IgbXkgJGxldmVsIChAcGxhdGZvcm1IaWVyYXJjaHkpIHsKKyAgICBmaW5kKHsg
cHJlcHJvY2VzcyA9PiAkZGlyZWN0b3J5RmlsdGVyLCB3YW50ZWQgPT4gJGZpbGVGaWx0ZXIgfSwg
JGxldmVsKTsKK30KIAogZGllICJubyB0ZXN0cyB0byBydW5cbiIgaWYgIUB0ZXN0czsKIApAQCAt
OTI4LDcgKzk1MCw3IEBACiAgICAgICAgICAgICAiX29iamNfbXNnRm9yd2FyZCIsICMgbGVhayBp
biBOU1NwZWxsQ2hlY2tlciwgUmFkYXIgNDk2NTI3OAogICAgICAgICAgICAgImdsZEdldFN0cmlu
ZyIgIyBsZWFrIGluIE9wZW5HTCwgUmFkYXIgNTAxMzY5OQogICAgICAgICApOwotICAgICAgICAg
cHVzaCBAdHlwZXNUb0V4Y2x1ZGUsICgKKyAgICAgICAgcHVzaCBAdHlwZXNUb0V4Y2x1ZGUsICgK
ICAgICAgICAgICAgICJUSFJEIiwgIyBidWcgaW4gJ2xlYWtzJywgUmFkYXIgMzM4Nzc4MwogICAg
ICAgICAgICAgIkRSSFQiICMgZGl0dG8gKGVuZGlhbiBsaXR0bGUgaGF0ZSBpKQogICAgICAgICAp
OwpAQCAtMTIzMyw3ICsxMjU1LDEyIEBACiBzdWIgZXhwZWN0ZWREaXJlY3RvcnlGb3JUZXN0KCQp
CiB7CiAgICAgbXkgKCRiYXNlKSA9IEBfOwotICAgIHJldHVybiAoLWYgIiRwbGF0Zm9ybVRlc3RE
aXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIpID8gJHBsYXRmb3JtVGVzdERpcmVjdG9y
eSA6ICRleHBlY3RlZERpcmVjdG9yeTsKKworICAgIGZvcmVhY2ggbXkgJGxldmVsIChAcGxhdGZv
cm1IaWVyYXJjaHkpIHsKKyAgICAgICAgcmV0dXJuICRsZXZlbCBpZiAoLWYgIiRsZXZlbC8kYmFz
ZS0kZXhwZWN0ZWRUYWcudHh0Iik7CisgICAgfQorCisgICAgcmV0dXJuICRleHBlY3RlZERpcmVj
dG9yeTsKIH0KIAogbXkgJWN5Z3BhdGhzID0gKCk7CkBAIC0xMzA4LDMgKzEzMzUsMTYgQEAKICAg
ICBkaWUgIkludmFsaWQgYXJndW1lbnQgJyIgLiAkdmFsdWUgLiAiJyBmb3Igb3B0aW9uICRvcHRp
b24iIHVubGVzcyAkdmFsaWRTa2lwcGVkVmFsdWVzeyR2YWx1ZX07CiAgICAgJHRyZWF0U2tpcHBl
ZCA9ICR2YWx1ZTsKIH0KKworc3ViIGJ1aWxkVGVzdEhpZXJhcmNoeSgpCit7CisgICAgbXkgQGxl
dmVscyA9IHNwbGl0KCctJywgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSk7CisgICAgbXkgQGhpZXJh
cmNoeTsKKworICAgIGZvciAobXkgJGk9MDsgJGkgPCBAbGV2ZWxzOyAkaSsrKSB7CisgICAgICAg
IG15ICRzY29wZWQgPSBqb2luKCctJywgQGxldmVsc1swLi4oJCNsZXZlbHMgLSAkaSldKTsKKyAg
ICAgICAgcHVzaChAaGllcmFyY2h5LCAkc2NvcGVkKSBpZiAoLWQgJHNjb3BlZCk7CisgICAgfQor
CisgICAgcmV0dXJuIEBoaWVyYXJjaHk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15892</attachid>
            <date>2007-08-09 19:21:43 -0700</date>
            <delta_ts>2007-08-10 18:41:29 -0700</delta_ts>
            <desc>wip v3</desc>
            <filename>WKToolsScripts</filename>
            <type>text/plain</type>
            <size>10808</size>
            <attacher name="Matt Lilek">dev+webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJKHJldmlzaW9uIDI0OTYxKQor
KysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw2ICs4NCw4IEBACiBzdWIgaHRtbEZvckV4cGVjdGVkQW5kQWN0dWFsUmVzdWx0cygkKTsK
IHN1YiBkZWxldGVFeHBlY3RlZEFuZEFjdHVhbFJlc3VsdHMoJCk7CiBzdWIgcmVjb3JkQWN0dWFs
UmVzdWx0c0FuZERpZmYoJCQpOworc3ViIGJ1aWxkUGxhdGZvcm1IaWVyYXJjaHkoKTsKK3N1YiBw
bGF0Zm9ybURpckZvclRlc3QoJCk7CiAKICMgQXJndW1lbnQgaGFuZGxpbmcKIG15ICRzaG91bGRD
aGVja0xlYWtzID0gJyc7CkBAIC05Myw2ICs5NSw3IEBACiBteSAkaHR0cGRTU0xQb3J0ID0gODQ0
MzsKIG15ICRpZ25vcmVUZXN0cyA9ICcnOwogbXkgJGxhdW5jaFNhZmFyaSA9IDE7CitteSAkcGxh
dGZvcm07CiBteSAkcGl4ZWxUZXN0cyA9ICcnOwogbXkgJHF1aWV0ID0gJyc7CiBteSAkcmVwYWlu
dFN3ZWVwSG9yaXpvbnRhbGx5ID0gJyc7CkBAIC0xMTgsOSArMTIxLDIwIEBACiBteSAkZGlmZnNU
YWcgPSAiZGlmZnMiOwogbXkgJGVycm9yVGFnID0gInN0ZGVyciI7CiAKK2lmIChpc1RpZ2VyKCkp
IHsKKyAgICAkcGxhdGZvcm0gPSAibWFjLWxlb3BhcmQiOworfSBlbHNpZiAoaXNMZW9wYXJkKCkp
IHsKKyAgICAkcGxhdGZvcm0gPSAibWFjIjsKK30gZWxzaWYgKGlzUXQoKSkgeworICAgICRwbGF0
Zm9ybSA9ICJxdCI7Cit9IGVsc2lmIChpc0N5Z3dpbigpKSB7CisgICAgJHBsYXRmb3JtID0gIndp
biI7Cit9CisKIG15ICRwcm9ncmFtTmFtZSA9IGJhc2VuYW1lKCQwKTsKIG15ICRsYXVuY2hTYWZh
cmlEZWZhdWx0ID0gJGxhdW5jaFNhZmFyaSA/ICJsYXVuY2giIDogImRvIG5vdCBsYXVuY2giOwog
bXkgJGh0dHBEZWZhdWx0ID0gJHRlc3RIVFRQID8gInJ1biIgOiAiZG8gbm90IHJ1biI7CitteSAk
cGxhdGZvcm1EZWZhdWx0ID0gJHBsYXRmb3JtID8gJHBsYXRmb3JtIDogIm5vbmUiOwogCiBteSAk
dXNhZ2UgPSA8PEVPRjsKIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFt0ZXN0ZGlyfHRl
c3RwYXRoIC4uLl0KQEAgLTEzNCw2ICsxNDgsNyBAQAogICAtbHwtLWxlYWtzICAgICAgICAgICAg
ICAgICAgICAgIEVuYWJsZSBsZWFrcyBjaGVja2luZwogICAtLVtuby1dbmV3LXRlc3QtcmVzdWx0
cyAgICAgICAgIEdlbmVyYXRlIHJlc3VsdHMgZm9yIG5ldyB0ZXN0cwogICAtcHwtLXBpeGVsLXRl
c3RzICAgICAgICAgICAgICAgIEVuYWJsZSBwaXhlbCB0ZXN0cworICAtLXBsYXRmb3JtICAgICAg
ICAgICAgICAgICAgICAgIE92ZXJyaWRlIHRoZSBkZXRlY3RlZCBwbGF0Zm9ybSB0byB1c2UgZm9y
IHRlc3RzIGFuZCByZXN1bHRzIChkZWZhdWx0OiAkcGxhdGZvcm1EZWZhdWx0KQogICAtLXBvcnQg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYiBzZXJ2ZXIgcG9ydCB0byB1c2Ugd2l0aCBodHRw
IHRlc3RzCiAgIC1xfC0tcXVpZXQgICAgICAgICAgICAgICAgICAgICAgTGVzcyB2ZXJib3NlIG91
dHB1dAogICAtcnwtLXJlcGFpbnQtdGVzdHMgICAgICAgICAgICAgIFJ1biByZXBhaW50IHRlc3Rz
IChpbXBsaWVzIC0tcGl4ZWwtdGVzdHMpCkBAIC0xNjUsNiArMTgwLDcgQEAKICAgICAnbGF1bmNo
LXNhZmFyaSEnID0+IFwkbGF1bmNoU2FmYXJpLAogICAgICdsZWFrc3xsJyA9PiBcJHNob3VsZENo
ZWNrTGVha3MsCiAgICAgJ3BpeGVsLXRlc3RzfHAnID0+IFwkcGl4ZWxUZXN0cywKKyAgICAncGxh
dGZvcm09cycgPT4gXCRwbGF0Zm9ybSwKICAgICAncG9ydD1pJyA9PiBcJGh0dHBkUG9ydCwKICAg
ICAncXVpZXR8cScgPT4gXCRxdWlldCwKICAgICAncmVsZWFzZXxkZXBsb3knID0+IHN1YiB7ICRj
b25maWd1cmF0aW9uID0gIlJlbGVhc2UiIH0sCkBAIC0yNDUsMTggKzI2MSwxMiBAQAogCiBteSAk
bGF5b3V0VGVzdHNOYW1lID0gIkxheW91dFRlc3RzIjsKIG15ICR0ZXN0RGlyZWN0b3J5ID0gRmls
ZTo6U3BlYy0+cmVsMmFicygkbGF5b3V0VGVzdHNOYW1lKTsKLW15ICRwbGF0Zm9ybVRlc3REaXJl
Y3RvcnkgPSAkdGVzdERpcmVjdG9yeTsKK215ICRwbGF0Zm9ybVRlc3REaXJlY3RvcnkgPSBjYXRk
aXIoJHRlc3REaXJlY3RvcnksICdwbGF0Zm9ybScpOwogbXkgJGV4cGVjdGVkRGlyZWN0b3J5ID0g
JHRlc3REaXJlY3Rvcnk7Ci1pZiAoaXNMZW9wYXJkKCkpIHsKLSAgICAkcGxhdGZvcm1UZXN0RGly
ZWN0b3J5ID0gIiR0ZXN0RGlyZWN0b3J5L21hYy9sZW9wYXJkIjsKLX0gZWxzaWYgKGlzUXQoKSkg
ewotICAgICRleHBlY3RlZERpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoIkxheW91dFRl
c3RzL3F0LyIpOwotICAgICRwbGF0Zm9ybVRlc3REaXJlY3RvcnkgPSAkZXhwZWN0ZWREaXJlY3Rv
cnk7Ci19IGVsc2lmIChpc0N5Z3dpbigpKSB7Ci0gICAgJGV4cGVjdGVkRGlyZWN0b3J5ID0gJHRl
c3REaXJlY3Rvcnk7Ci0gICAgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJl
bDJhYnMoIkxheW91dFRlc3RzL3dpbi8iKTsKLX0KIAorJHBsYXRmb3JtVGVzdERpcmVjdG9yeSA9
IGNhdGRpcigkcGxhdGZvcm1UZXN0RGlyZWN0b3J5LCAkcGxhdGZvcm0pOworbXkgQHBsYXRmb3Jt
SGllcmFyY2h5ID0gYnVpbGRQbGF0Zm9ybUhpZXJhcmNoeSgpOworCiAkZXhwZWN0ZWREaXJlY3Rv
cnkgPSAkRU5WeyJXZWJLaXRFeHBlY3RlZFRlc3RSZXN1bHRzRGlyZWN0b3J5In0gaWYgJEVOVnsi
V2ViS2l0RXhwZWN0ZWRUZXN0UmVzdWx0c0RpcmVjdG9yeSJ9OwogCiBpZiAoJHRlc3RPbmx5U1ZH
cykgewpAQCAtMjc0LDcgKzI4NCw3IEBACiBzeXN0ZW0gImxuIiwgIi1zIiwgJHRlc3REaXJlY3Rv
cnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90bXAvTGF5b3V0VGVzdHMiOwogCiBt
eSAlaWdub3JlZEZpbGVzID0gKCk7Ci1teSAlaWdub3JlZERpcmVjdG9yaWVzID0gKCk7CitteSAl
aWdub3JlZERpcmVjdG9yaWVzID0gbWFwIHsgJF8gPT4gMSB9IHF3KHBsYXRmb3JtKTsKIG15ICVp
Z25vcmVkTG9jYWxEaXJlY3RvcmllcyA9IG1hcCB7ICRfID0+IDEgfSBxdyguc3ZuIF9zdm4gcmVz
b3VyY2VzKTsKIG15ICVzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucyA9IG1hcCB7ICRfID0+IDEgfSBx
dyhodG1sIHNodG1sIHhtbCB4aHRtbCBwbCBwaHApOwogaWYgKCR0ZXN0T25seVNWR3MpIHsKQEAg
LTI5NiwyNyArMzA2LDMzIEBACiAgICAgcHJvY2Vzc0lnbm9yZVRlc3RzKCRpZ25vcmVUZXN0cyk7
CiB9CiAKLWlmICghJGlnbm9yZVNraXBwZWQgJiYgb3BlbiBTS0lQUEVELCAiPCIsICIkcGxhdGZv
cm1UZXN0RGlyZWN0b3J5L1NraXBwZWQiKSB7Ci0gICAgaWYgKCR2ZXJib3NlICYmICEkc2tpcHBl
ZE9ubHkpIHsKLSAgICAgICAgcHJpbnQgIlNraXBwZWQgdGVzdHM6XG4iOwotICAgIH0KLSAgICB3
aGlsZSAoPFNLSVBQRUQ+KSB7Ci0gICAgICAgIG15ICRza2lwcGVkID0gJF87Ci0gICAgICAgIGNo
b21wICRza2lwcGVkOwotICAgICAgICAkc2tpcHBlZCA9fiBzL14gKy8vOwotICAgICAgICAkc2tp
cHBlZCA9fiBzLyArJC8vOwotICAgICAgICBpZiAoJHNraXBwZWQgJiYgJHNraXBwZWQgIX4gL14j
LykgewotICAgICAgICAgICAgaWYgKCRza2lwcGVkT25seSkgewotICAgICAgICAgICAgICAgIHB1
c2goQEFSR1YsICRza2lwcGVkKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCR2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgJHNraXBw
ZWRcbiI7CitpZiAoISRpZ25vcmVTa2lwcGVkKSB7CisgICAgZm9yZWFjaCBteSAkbGV2ZWwgKEBw
bGF0Zm9ybUhpZXJhcmNoeSkgeworICAgICAgICBpZiAob3BlbiBTS0lQUEVELCAiPCIsICIkbGV2
ZWwvU2tpcHBlZCIpIHsKKyAgICAgICAgICAgIGlmICgkdmVyYm9zZSAmJiAhJHNraXBwZWRPbmx5
KSB7CisgICAgICAgICAgICAgICAgbXkgKCRkaXIsICRuYW1lKSA9IHNwbGl0cGF0aCgkbGV2ZWwp
OworICAgICAgICAgICAgICAgIHByaW50ICJTa2lwcGVkIHRlc3RzIGluICRuYW1lOlxuIjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKDxTS0lQUEVEPikgeworICAgICAgICAg
ICAgICAgIG15ICRza2lwcGVkID0gJF87CisgICAgICAgICAgICAgICAgY2hvbXAgJHNraXBwZWQ7
CisgICAgICAgICAgICAgICAgJHNraXBwZWQgPX4gcy9eICsvLzsKKyAgICAgICAgICAgICAgICAk
c2tpcHBlZCA9fiBzLyArJC8vOworICAgICAgICAgICAgICAgIGlmICgkc2tpcHBlZCAmJiAkc2tp
cHBlZCAhfiAvXiMvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkc2tpcHBlZE9ubHkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQEFSR1YsICRza2lwcGVkKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdmVyYm9z
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgJHNraXBwZWRcbiI7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9j
ZXNzSWdub3JlVGVzdHMoJHNraXBwZWQpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByb2Nlc3NJZ25vcmVUZXN0cygkc2tpcHBlZCk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjbG9zZSBTS0lQUEVEOwogICAgICAgICB9CiAg
ICAgfQotICAgIGNsb3NlIFNLSVBQRUQ7CiB9CiAKIApAQCAtMzUwLDEyICszNjYsMjEgQEAKICAg
ICAgICAgfQogICAgIH0gZWxzaWYgKC1kICRmdWxsUGF0aCkgewogICAgICAgICBmaW5kKHsgcHJl
cHJvY2VzcyA9PiAkZGlyZWN0b3J5RmlsdGVyLCB3YW50ZWQgPT4gJGZpbGVGaWx0ZXIgfSwgJGZ1
bGxQYXRoKTsKKworICAgICAgICBmb3IgbXkgJGxldmVsIChAcGxhdGZvcm1IaWVyYXJjaHkpIHsK
KyAgICAgICAgICAgIG15ICRwbGF0Zm9ybVBhdGggPSBjYXRmaWxlKCRsZXZlbCwgJHRlc3QpOwor
ICAgICAgICAgICAgZmluZCh7IHByZXByb2Nlc3MgPT4gJGRpcmVjdG9yeUZpbHRlciwgd2FudGVk
ID0+ICRmaWxlRmlsdGVyIH0sICRwbGF0Zm9ybVBhdGgpIGlmICgtZCAkcGxhdGZvcm1QYXRoKTsK
KyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHByaW50ICJ0ZXN0ICR0ZXN0IG5vdCBm
b3VuZFxuIjsKICAgICB9CiB9CiBpZiAoIXNjYWxhciBAQVJHVikgewogICAgIGZpbmQoeyBwcmVw
cm9jZXNzID0+ICRkaXJlY3RvcnlGaWx0ZXIsIHdhbnRlZCA9PiAkZmlsZUZpbHRlciB9LCAkdGVz
dERpcmVjdG9yeSk7CisKKyAgICBmb3IgbXkgJGxldmVsIChAcGxhdGZvcm1IaWVyYXJjaHkpIHsK
KyAgICAgICAgZmluZCh7IHByZXByb2Nlc3MgPT4gJGRpcmVjdG9yeUZpbHRlciwgd2FudGVkID0+
ICRmaWxlRmlsdGVyIH0sICRsZXZlbCk7CisgICAgfQogfQogCiBkaWUgIm5vIHRlc3RzIHRvIHJ1
blxuIiBpZiAhQHRlc3RzOwpAQCAtNDc2LDcgKzUwMSw3IEBACiAgICAgbXkgJGV4cGVjdGVkOwog
ICAgIG15ICRleHBlY3RlZERpciA9IGV4cGVjdGVkRGlyZWN0b3J5Rm9yVGVzdCgkYmFzZSk7CiAg
ICAgaWYgKGlzUXQoKSAmJiAkaXNUZXh0KSB7Ci0gICAgICAkZXhwZWN0ZWREaXIgPSAkdGVzdERp
cmVjdG9yeTsKKyAgICAgICAgJGV4cGVjdGVkRGlyID0gJHRlc3REaXJlY3Rvcnk7CiAgICAgfQog
CiAgICAgaWYgKCEkcmVzZXRSZXN1bHRzICYmIG9wZW4gRVhQRUNURUQsICI8IiwgIiRleHBlY3Rl
ZERpci8kYmFzZS0kZXhwZWN0ZWRUYWcudHh0IikgewpAQCAtNTA4LDExICs1MzMsMTIgQEAKICAg
ICBteSAkZGlmZlJlc3VsdCA9ICJwYXNzZWQiOwogICAgIAogICAgIGlmICgkcGl4ZWxUZXN0cykg
ewotICAgICAgICBkaWUgIlBpeGVsIHRlc3RzIGN1cnJlbnRseSBkb24ndCB3b3JrIHdoZW4gdXNp
bmcgYSBjdXN0b20gZXhwZWN0ZWQgdGVzdCByZXN1bHRzIGRpcmVjdG9yeSIgaWYgJHRlc3REaXJl
Y3RvcnkgbmUgJGV4cGVjdGVkRGlyOwotICAgICAgICAgICAgCiAgICAgICAgIG15ICRhY3R1YWxI
YXNoID0gIiI7CiAgICAgICAgIG15ICRleHBlY3RlZEhhc2ggPSAiIjsKICAgICAgICAgbXkgJGFj
dHVhbFBOR1NpemUgPSAwOworCisgICAgICAgICRiYXNlID1+IHMvKHBsYXRmb3JtXC9bYS16QS1a
MC05LV0qXC8pLy87CisKICAgICAgICAgd2hpbGUgKDxJTj4pIHsKICAgICAgICAgICAgIGxhc3Qg
aWYgLyNFT0YvOwogICAgICAgICAgICAgaWYgKC9BY3R1YWxIYXNoOiAoW2EtZjAtOV17MzJ9KS8p
IHsKQEAgLTUyNSwxMCArNTUxLDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoJGV4cGVjdGVkSGFzaCBuZSAkYWN0dWFsSGFzaCAmJiAtZiAiJHRlc3REaXJlY3Rv
cnkvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyIpIHsKLSAgICAgICAgICAgIG15ICRleHBlY3RlZFBO
R1NpemUgPSAtcyAiJHRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyI7CisgICAg
ICAgIGlmICgkZXhwZWN0ZWRIYXNoIG5lICRhY3R1YWxIYXNoICYmIC1mICIkZXhwZWN0ZWREaXIv
JGJhc2UtJGV4cGVjdGVkVGFnLnBuZyIpIHsKKyAgICAgICAgICAgIG15ICRleHBlY3RlZFBOR1Np
emUgPSAtcyAiJGV4cGVjdGVkRGlyLyRiYXNlLSRleHBlY3RlZFRhZy5wbmciOwogICAgICAgICAg
ICAgbXkgJGV4cGVjdGVkUE5HID0gIiI7Ci0gICAgICAgICAgICBvcGVuIEVYUEVDVEVEUE5HLCAi
JHRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyI7CisgICAgICAgICAgICBvcGVu
IEVYUEVDVEVEUE5HLCAiJGV4cGVjdGVkRGlyLyRiYXNlLSRleHBlY3RlZFRhZy5wbmciOwogICAg
ICAgICAgICAgcmVhZChFWFBFQ1RFRFBORywgJGV4cGVjdGVkUE5HLCAkZXhwZWN0ZWRQTkdTaXpl
KTsKIAogICAgICAgICAgICAgcHJpbnQgRElGRk9VVCAiQ29udGVudC1sZW5ndGg6ICRhY3R1YWxQ
TkdTaXplXG4iOwpAQCAtNTUwLDE1ICs1NzYsMTYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGlmICgkYWN0dWFsUE5HU2l6ZSAmJiAoJHJlc2V0UmVzdWx0cyB8fCAhLWYg
IiR0ZXN0RGlyZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy5wbmciKSkgewotICAgICAgICAgICAg
b3BlbiBFWFBFQ1RFRCwgIj4iLCAiJHRlc3REaXJlY3RvcnkvJGJhc2UtZXhwZWN0ZWQucG5nIiBv
ciBkaWUgImNvdWxkIG5vdCBjcmVhdGUgJHRlc3REaXJlY3RvcnkvJGJhc2UtZXhwZWN0ZWQucG5n
XG4iOworICAgICAgICBteSAkcmVzdWx0RGlyID0gcGxhdGZvcm1EaXJGb3JUZXN0KCR0ZXN0KTsK
KyAgICAgICAgaWYgKCRhY3R1YWxQTkdTaXplICYmICgkcmVzZXRSZXN1bHRzIHx8ICEtZiAiJHJl
c3VsdERpci8kYmFzZS0kZXhwZWN0ZWRUYWcucG5nIikpIHsKKyAgICAgICAgICAgIG9wZW4gRVhQ
RUNURUQsICI+IiwgIiRyZXN1bHREaXIvJGJhc2UtZXhwZWN0ZWQucG5nIiBvciBkaWUgImNvdWxk
IG5vdCBjcmVhdGUgJHJlc3VsdERpci8kYmFzZS1leHBlY3RlZC5wbmdcbiI7CiAgICAgICAgICAg
ICBwcmludCBFWFBFQ1RFRCAkYWN0dWFsUE5HOwogICAgICAgICAgICAgY2xvc2UgRVhQRUNURUQ7
CiAgICAgICAgIH0KIAogICAgICAgICAjIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgaGFzaCBpZiB0aGUg
aW1hZ2UgZGlmZiBzYWlkIHRoYXQgdGhlcmUgd2FzIG5vIGRpZmZlcmVuY2UKLSAgICAgICAgaWYg
KCRhY3R1YWxIYXNoIG5lICIiICYmICgkcmVzZXRSZXN1bHRzIHx8ICEtZiAiJHRlc3REaXJlY3Rv
cnkvJGJhc2UtJGV4cGVjdGVkVGFnLmNoZWNrc3VtIikpIHsKLSAgICAgICAgICAgIG9wZW4gRVhQ
RUNURUQsICI+IiwgIiR0ZXN0RGlyZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy5jaGVja3N1bSIg
b3IgZGllICJjb3VsZCBub3QgY3JlYXRlICR0ZXN0RGlyZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRh
Zy5jaGVja3N1bVxuIjsKKyAgICAgICAgaWYgKCRhY3R1YWxIYXNoIG5lICIiICYmICgkcmVzZXRS
ZXN1bHRzIHx8ICEtZiAiJHJlc3VsdERpci8kYmFzZS0kZXhwZWN0ZWRUYWcuY2hlY2tzdW0iKSkg
eworICAgICAgICAgICAgb3BlbiBFWFBFQ1RFRCwgIj4iLCAiJHJlc3VsdERpci8kYmFzZS0kZXhw
ZWN0ZWRUYWcuY2hlY2tzdW0iIG9yIGRpZSAiY291bGQgbm90IGNyZWF0ZSAkcmVzdWx0RGlyLyRi
YXNlLSRleHBlY3RlZFRhZy5jaGVja3N1bVxuIjsKICAgICAgICAgICAgIHByaW50IEVYUEVDVEVE
ICRhY3R1YWxIYXNoOwogICAgICAgICAgICAgY2xvc2UgRVhQRUNURUQ7CiAgICAgICAgIH0KQEAg
LTY0Niw5ICs2NzMsMTAgQEAKIAogICAgICAgICBpZiAoJGdlbmVyYXRlTmV3UmVzdWx0cyB8fCAk
cmVzZXRSZXN1bHRzKSB7CiAgICAgICAgICAgICAjIENyZWF0ZSB0aGUgcGF0aCBpZiBuZWVkZWQK
LSAgICAgICAgICAgIG1rcGF0aChjYXRmaWxlKCRleHBlY3RlZERpciwgZGlybmFtZSgkYmFzZSkp
KSBpZiAkdGVzdERpcmVjdG9yeSBuZSAkZXhwZWN0ZWREaXI7CisgICAgICAgICAgICBteSAkcmVz
dWx0RGlyID0gcGxhdGZvcm1EaXJGb3JUZXN0KCR0ZXN0KTsKKyAgICAgICAgICAgIG1rcGF0aChj
YXRmaWxlKCRyZXN1bHREaXIsIGRpcm5hbWUoJGJhc2UpKSkgaWYgJHRlc3REaXJlY3RvcnkgbmUg
JHJlc3VsdERpcjsKIAotICAgICAgICAgICAgb3BlbiBFWFBFQ1RFRCwgIj4iLCAiJGV4cGVjdGVk
RGlyLyRiYXNlLSRleHBlY3RlZFRhZy50eHQiIG9yIGRpZSAiY291bGQgbm90IGNyZWF0ZSAkZXhw
ZWN0ZWREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dFxuIjsKKyAgICAgICAgICAgIG9wZW4gRVhQ
RUNURUQsICI+IiwgIiRyZXN1bHREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIgb3IgZGllICJj
b3VsZCBub3QgY3JlYXRlICRyZXN1bHREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dFxuIjsKICAg
ICAgICAgICAgIHByaW50IEVYUEVDVEVEICRhY3R1YWw7CiAgICAgICAgICAgICBjbG9zZSBFWFBF
Q1RFRDsKICAgICAgICAgfQpAQCAtOTQ0LDcgKzk3Miw3IEBACiAgICAgICAgICAgICAiX29iamNf
bXNnRm9yd2FyZCIsICMgbGVhayBpbiBOU1NwZWxsQ2hlY2tlciwgUmFkYXIgNDk2NTI3OAogICAg
ICAgICAgICAgImdsZEdldFN0cmluZyIgIyBsZWFrIGluIE9wZW5HTCwgUmFkYXIgNTAxMzY5OQog
ICAgICAgICApOwotICAgICAgICAgcHVzaCBAdHlwZXNUb0V4Y2x1ZGUsICgKKyAgICAgICAgcHVz
aCBAdHlwZXNUb0V4Y2x1ZGUsICgKICAgICAgICAgICAgICJUSFJEIiwgIyBidWcgaW4gJ2xlYWtz
JywgUmFkYXIgMzM4Nzc4MwogICAgICAgICAgICAgIkRSSFQiICMgZGl0dG8gKGVuZGlhbiBsaXR0
bGUgaGF0ZSBpKQogICAgICAgICApOwpAQCAtMTI1OCw3ICsxMjg2LDEyIEBACiBzdWIgZXhwZWN0
ZWREaXJlY3RvcnlGb3JUZXN0KCQpCiB7CiAgICAgbXkgKCRiYXNlKSA9IEBfOwotICAgIHJldHVy
biAoLWYgIiRwbGF0Zm9ybVRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIpID8g
JHBsYXRmb3JtVGVzdERpcmVjdG9yeSA6ICRleHBlY3RlZERpcmVjdG9yeTsKKworICAgIGZvcmVh
Y2ggbXkgJGxldmVsIChAcGxhdGZvcm1IaWVyYXJjaHkpIHsKKyAgICAgICAgcmV0dXJuICRsZXZl
bCBpZiAoLWYgIiRsZXZlbC8kYmFzZS0kZXhwZWN0ZWRUYWcudHh0Iik7CisgICAgfQorCisgICAg
cmV0dXJuICRleHBlY3RlZERpcmVjdG9yeTsKIH0KIAogc3ViIHByaW50RmFpbHVyZU1lc3NhZ2VG
b3JUZXN0KCQkKQpAQCAtMTM4MSwzICsxNDE0LDMxIEBACiAKICAgICBzeXN0ZW0gImRpZmYgLXUg
XCIkdGVzdFJlc3VsdHNEaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dFwiIFwiJHRlc3RS
ZXN1bHRzRGlyZWN0b3J5LyRiYXNlLSRhY3R1YWxUYWcudHh0XCIgPiBcIiR0ZXN0UmVzdWx0c0Rp
cmVjdG9yeS8kYmFzZS0kZGlmZnNUYWcudHh0XCIiOwogfQorCitzdWIgYnVpbGRQbGF0Zm9ybUhp
ZXJhcmNoeSgpCit7CisgICAgbXkgQHBsYXRmb3JtcyA9IHNwbGl0KCctJywgJHBsYXRmb3JtVGVz
dERpcmVjdG9yeSk7CisgICAgbXkgQGhpZXJhcmNoeTsKKworICAgIGZvciAobXkgJGk9MDsgJGkg
PCBAcGxhdGZvcm1zOyAkaSsrKSB7CisgICAgICAgIG15ICRzY29wZWQgPSBqb2luKCctJywgQHBs
YXRmb3Jtc1swLi4oJCNwbGF0Zm9ybXMgLSAkaSldKTsKKyAgICAgICAgcHVzaChAaGllcmFyY2h5
LCAkc2NvcGVkKSBpZiAoLWQgJHNjb3BlZCk7CisgICAgfQorCisgICAgcmV0dXJuIEBoaWVyYXJj
aHk7Cit9CisKK3N1YiBwbGF0Zm9ybURpckZvclRlc3QoJCkKK3sKKyAgICBteSAoJHRlc3QpID0g
QF87CisgICAgbXkgQHBhdGhzID0gc3BsaXQoJy8nLCAkdGVzdCk7CisKKyAgICAjIElmIHRoZSB0
ZXN0IGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3RvcnksIHJldHVybiB0aGUgbGV2ZWwgaXQncyBp
bi4KKyAgICAjIElmIGl0IGNhbiBnbyBpbiBhIGxlc3Mtc3BlY2lmaWMgZGlyZWN0b3J5LCBpdCB3
aWxsIGhhdmUgdG8gYmUgbW92ZWQKKyAgICAjIG1hbnVhbGx5LiBPdGhlcndpc2UsIGp1c3QgcmV0
dXJuIHRoZSBsZWFzdC1zcGVjaWZpYyBwbGF0Zm9ybSBkaXJlY3RvcnkuCisgICAgaWYgKCRwYXRo
c1swXSBlcSAicGxhdGZvcm0iKSB7CisgICAgICAgIHJldHVybiBjYXRkaXIoJHRlc3REaXJlY3Rv
cnksICJwbGF0Zm9ybSIsICRwYXRoc1sxXSkKKyAgICB9CisKKyAgICByZXR1cm4gJHBsYXRmb3Jt
SGllcmFyY2h5WyQjcGxhdGZvcm1IaWVyYXJjaHldOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15915</attachid>
            <date>2007-08-10 18:41:29 -0700</date>
            <delta_ts>2007-08-10 23:12:08 -0700</delta_ts>
            <desc>reviewable v1</desc>
            <filename>Bug14740-1</filename>
            <type>text/plain</type>
            <size>12069</size>
            <attacher name="Matt Lilek">dev+webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MDA1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMDgtMTAgIE1hdHQgTGlsZWsgIDxwZXd0
ZXJtb29zZUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKwor
ICAgICAgICBCdWcgMTQ3NDA6IEhpZXJhcmNoaWNhbCBsYXlvdXQgdGVzdHMgYW5kIHBsYXRmb3Jt
IG9yZ2FuaXphdGlvbgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDc0MAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBs
YXlvdXQgdGVzdHMgYW5kIHJlc3VsdHMuCisgICAgICAgIE5ldyBwbGF0Zm9ybSBzdHJ1Y3R1cmUg
aXMgYXMgZm9sbG93czoKKworICAgICAgICAqIHBsYXRmb3JtOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWM6IEFkZGVkLgorICAgICAgICAqIG1hYy9sZW9wYXJkLyAtPiBwbGF0Zm9ybS9t
YWMtbGVvcGFyZAorICAgICAgICAqIHdpbi8gLT4gcGxhdGZvcm0vd2luCisgICAgICAgICogcXQv
IC0+IHBsYXRmb3JtL3F0CisKIDIwMDctMDgtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBhbmQgTWFjaWVqLgpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjUwMDUpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwNy0wOC0xMCAgTWF0dCBMaWxlayAgPHBld3Rlcm1v
b3NlQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisgICAg
ICAgIEJ1ZyAxNDc0MDogSGllcmFyY2hpY2FsIGxheW91dCB0ZXN0cyBhbmQgcGxhdGZvcm0gb3Jn
YW5pemF0aW9uCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NzQwCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGxheW91
dCB0ZXN0cyBhbmQgcmVzdWx0cy4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
czoKKwogMjAwNy0wOC0wNiAgTmlnZWwgVGFvICA8bmlnZWx0YW9AZ25vbWUub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13
ZWJraXQtdGVzdHMJKHJldmlzaW9uIDI0OTc1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4t
d2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogCiAjIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
IENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisj
IENvcHlyaWdodCAoQykgMjAwNyBNYXR0IExpbGVrIChwZXd0ZXJtb29zZUBnbWFpbC5jb20pCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg1LDcgQEAKIHN1YiBodG1sRm9y
RXhwZWN0ZWRBbmRBY3R1YWxSZXN1bHRzKCQpOwogc3ViIGRlbGV0ZUV4cGVjdGVkQW5kQWN0dWFs
UmVzdWx0cygkKTsKIHN1YiByZWNvcmRBY3R1YWxSZXN1bHRzQW5kRGlmZigkJCk7CitzdWIgYnVp
bGRQbGF0Zm9ybUhpZXJhcmNoeSgpOwogCiAjIEFyZ3VtZW50IGhhbmRsaW5nCiBteSAkc2hvdWxk
Q2hlY2tMZWFrcyA9ICcnOwpAQCAtOTMsNiArOTUsNyBAQAogbXkgJGh0dHBkU1NMUG9ydCA9IDg0
NDM7CiBteSAkaWdub3JlVGVzdHMgPSAnJzsKIG15ICRsYXVuY2hTYWZhcmkgPSAxOworbXkgJHBs
YXRmb3JtOwogbXkgJHBpeGVsVGVzdHMgPSAnJzsKIG15ICRxdWlldCA9ICcnOwogbXkgJHJlcGFp
bnRTd2VlcEhvcml6b250YWxseSA9ICcnOwpAQCAtMTE4LDkgKzEyMSwyMCBAQAogbXkgJGRpZmZz
VGFnID0gImRpZmZzIjsKIG15ICRlcnJvclRhZyA9ICJzdGRlcnIiOwogCitpZiAoaXNMZW9wYXJk
KCkpIHsKKyAgICAkcGxhdGZvcm0gPSAibWFjLWxlb3BhcmQiOworfSBlbHNpZiAoaXNPU1goKSkg
eworICAgICRwbGF0Zm9ybSA9ICJtYWMiOworfSBlbHNpZiAoaXNRdCgpKSB7CisgICAgJHBsYXRm
b3JtID0gInF0IjsKK30gZWxzaWYgKGlzQ3lnd2luKCkpIHsKKyAgICAkcGxhdGZvcm0gPSAid2lu
IjsKK30KKwogbXkgJHByb2dyYW1OYW1lID0gYmFzZW5hbWUoJDApOwogbXkgJGxhdW5jaFNhZmFy
aURlZmF1bHQgPSAkbGF1bmNoU2FmYXJpID8gImxhdW5jaCIgOiAiZG8gbm90IGxhdW5jaCI7CiBt
eSAkaHR0cERlZmF1bHQgPSAkdGVzdEhUVFAgPyAicnVuIiA6ICJkbyBub3QgcnVuIjsKK215ICRw
bGF0Zm9ybURlZmF1bHQgPSAkcGxhdGZvcm0gPyAkcGxhdGZvcm0gOiAibm9uZSI7CiAKIG15ICR1
c2FnZSA9IDw8RU9GOwogVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10gW3Rlc3RkaXJ8dGVz
dHBhdGggLi4uXQpAQCAtMTM0LDYgKzE0OCw3IEBACiAgIC1sfC0tbGVha3MgICAgICAgICAgICAg
ICAgICAgICAgRW5hYmxlIGxlYWtzIGNoZWNraW5nCiAgIC0tW25vLV1uZXctdGVzdC1yZXN1bHRz
ICAgICAgICAgR2VuZXJhdGUgcmVzdWx0cyBmb3IgbmV3IHRlc3RzCiAgIC1wfC0tcGl4ZWwtdGVz
dHMgICAgICAgICAgICAgICAgRW5hYmxlIHBpeGVsIHRlc3RzCisgIC0tcGxhdGZvcm0gICAgICAg
ICAgICAgICAgICAgICAgT3ZlcnJpZGUgdGhlIGRldGVjdGVkIHBsYXRmb3JtIHRvIHVzZSBmb3Ig
dGVzdHMgYW5kIHJlc3VsdHMgKGRlZmF1bHQ6ICRwbGF0Zm9ybURlZmF1bHQpCiAgIC0tcG9ydCAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViIHNlcnZlciBwb3J0IHRvIHVzZSB3aXRoIGh0dHAg
dGVzdHMKICAgLXF8LS1xdWlldCAgICAgICAgICAgICAgICAgICAgICBMZXNzIHZlcmJvc2Ugb3V0
cHV0CiAgIC1yfC0tcmVwYWludC10ZXN0cyAgICAgICAgICAgICAgUnVuIHJlcGFpbnQgdGVzdHMg
KGltcGxpZXMgLS1waXhlbC10ZXN0cykKQEAgLTE2NSw2ICsxODAsNyBAQAogICAgICdsYXVuY2gt
c2FmYXJpIScgPT4gXCRsYXVuY2hTYWZhcmksCiAgICAgJ2xlYWtzfGwnID0+IFwkc2hvdWxkQ2hl
Y2tMZWFrcywKICAgICAncGl4ZWwtdGVzdHN8cCcgPT4gXCRwaXhlbFRlc3RzLAorICAgICdwbGF0
Zm9ybT1zJyA9PiBcJHBsYXRmb3JtLAogICAgICdwb3J0PWknID0+IFwkaHR0cGRQb3J0LAogICAg
ICdxdWlldHxxJyA9PiBcJHF1aWV0LAogICAgICdyZWxlYXNlfGRlcGxveScgPT4gc3ViIHsgJGNv
bmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIgfSwKQEAgLTI0NSwxNyArMjYxLDkgQEAKIAogbXkgJGxh
eW91dFRlc3RzTmFtZSA9ICJMYXlvdXRUZXN0cyI7CiBteSAkdGVzdERpcmVjdG9yeSA9IEZpbGU6
OlNwZWMtPnJlbDJhYnMoJGxheW91dFRlc3RzTmFtZSk7Ci1teSAkcGxhdGZvcm1UZXN0RGlyZWN0
b3J5ID0gJHRlc3REaXJlY3Rvcnk7CiBteSAkZXhwZWN0ZWREaXJlY3RvcnkgPSAkdGVzdERpcmVj
dG9yeTsKLWlmIChpc0xlb3BhcmQoKSkgewotICAgICRwbGF0Zm9ybVRlc3REaXJlY3RvcnkgPSAi
JHRlc3REaXJlY3RvcnkvbWFjL2xlb3BhcmQiOwotfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAgJGV4
cGVjdGVkRGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+cmVsMmFicygiTGF5b3V0VGVzdHMvcXQvIik7
Ci0gICAgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSA9ICRleHBlY3RlZERpcmVjdG9yeTsKLX0gZWxz
aWYgKGlzQ3lnd2luKCkpIHsKLSAgICAkZXhwZWN0ZWREaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9y
eTsKLSAgICAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+cmVsMmFicygiTGF5
b3V0VGVzdHMvd2luLyIpOwotfQorbXkgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSA9IGNhdGRpcigk
dGVzdERpcmVjdG9yeSwgJ3BsYXRmb3JtJywgJHBsYXRmb3JtKTsKK215IEBwbGF0Zm9ybUhpZXJh
cmNoeSA9IGJ1aWxkUGxhdGZvcm1IaWVyYXJjaHkoKTsKIAogJGV4cGVjdGVkRGlyZWN0b3J5ID0g
JEVOVnsiV2ViS2l0RXhwZWN0ZWRUZXN0UmVzdWx0c0RpcmVjdG9yeSJ9IGlmICRFTlZ7IldlYktp
dEV4cGVjdGVkVGVzdFJlc3VsdHNEaXJlY3RvcnkifTsKIApAQCAtMjc0LDcgKzI4Miw3IEBACiBz
eXN0ZW0gImxuIiwgIi1zIiwgJHRlc3REaXJlY3RvcnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxl
c3MgLXggIi90bXAvTGF5b3V0VGVzdHMiOwogCiBteSAlaWdub3JlZEZpbGVzID0gKCk7Ci1teSAl
aWdub3JlZERpcmVjdG9yaWVzID0gKCk7CitteSAlaWdub3JlZERpcmVjdG9yaWVzID0gbWFwIHsg
JF8gPT4gMSB9IHF3KHBsYXRmb3JtKTsKIG15ICVpZ25vcmVkTG9jYWxEaXJlY3RvcmllcyA9IG1h
cCB7ICRfID0+IDEgfSBxdyguc3ZuIF9zdm4gcmVzb3VyY2VzKTsKIG15ICVzdXBwb3J0ZWRGaWxl
RXh0ZW5zaW9ucyA9IG1hcCB7ICRfID0+IDEgfSBxdyhodG1sIHNodG1sIHhtbCB4aHRtbCBwbCBw
aHApOwogaWYgKCR0ZXN0T25seVNWR3MpIHsKQEAgLTI5NiwyNyArMzA0LDMzIEBACiAgICAgcHJv
Y2Vzc0lnbm9yZVRlc3RzKCRpZ25vcmVUZXN0cyk7CiB9CiAKLWlmICghJGlnbm9yZVNraXBwZWQg
JiYgb3BlbiBTS0lQUEVELCAiPCIsICIkcGxhdGZvcm1UZXN0RGlyZWN0b3J5L1NraXBwZWQiKSB7
Ci0gICAgaWYgKCR2ZXJib3NlICYmICEkc2tpcHBlZE9ubHkpIHsKLSAgICAgICAgcHJpbnQgIlNr
aXBwZWQgdGVzdHM6XG4iOwotICAgIH0KLSAgICB3aGlsZSAoPFNLSVBQRUQ+KSB7Ci0gICAgICAg
IG15ICRza2lwcGVkID0gJF87Ci0gICAgICAgIGNob21wICRza2lwcGVkOwotICAgICAgICAkc2tp
cHBlZCA9fiBzL14gKy8vOwotICAgICAgICAkc2tpcHBlZCA9fiBzLyArJC8vOwotICAgICAgICBp
ZiAoJHNraXBwZWQgJiYgJHNraXBwZWQgIX4gL14jLykgewotICAgICAgICAgICAgaWYgKCRza2lw
cGVkT25seSkgewotICAgICAgICAgICAgICAgIHB1c2goQEFSR1YsICRza2lwcGVkKTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCR2ZXJib3NlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHByaW50ICIgICAgJHNraXBwZWRcbiI7CitpZiAoISRpZ25vcmVTa2lwcGVk
KSB7CisgICAgZm9yZWFjaCBteSAkbGV2ZWwgKEBwbGF0Zm9ybUhpZXJhcmNoeSkgeworICAgICAg
ICBpZiAob3BlbiBTS0lQUEVELCAiPCIsICIkbGV2ZWwvU2tpcHBlZCIpIHsKKyAgICAgICAgICAg
IGlmICgkdmVyYm9zZSAmJiAhJHNraXBwZWRPbmx5KSB7CisgICAgICAgICAgICAgICAgbXkgKCRk
aXIsICRuYW1lKSA9IHNwbGl0cGF0aCgkbGV2ZWwpOworICAgICAgICAgICAgICAgIHByaW50ICJT
a2lwcGVkIHRlc3RzIGluICRuYW1lOlxuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
d2hpbGUgKDxTS0lQUEVEPikgeworICAgICAgICAgICAgICAgIG15ICRza2lwcGVkID0gJF87Cisg
ICAgICAgICAgICAgICAgY2hvbXAgJHNraXBwZWQ7CisgICAgICAgICAgICAgICAgJHNraXBwZWQg
PX4gcy9eICsvLzsKKyAgICAgICAgICAgICAgICAkc2tpcHBlZCA9fiBzLyArJC8vOworICAgICAg
ICAgICAgICAgIGlmICgkc2tpcHBlZCAmJiAkc2tpcHBlZCAhfiAvXiMvKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICgkc2tpcHBlZE9ubHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQEFSR1YsICRza2lwcGVkKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkdmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50ICIgICAgJHNraXBwZWRcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzSWdub3JlVGVzdHMoJHNraXBwZWQpOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHByb2Nlc3NJZ25vcmVUZXN0cygkc2tpcHBlZCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjbG9zZSBTS0lQUEVEOwogICAgICAgICB9CiAgICAgfQotICAgIGNsb3NlIFNLSVBQRUQ7CiB9
CiAKIApAQCAtMzUwLDEyICszNjQsMjEgQEAKICAgICAgICAgfQogICAgIH0gZWxzaWYgKC1kICRm
dWxsUGF0aCkgewogICAgICAgICBmaW5kKHsgcHJlcHJvY2VzcyA9PiAkZGlyZWN0b3J5RmlsdGVy
LCB3YW50ZWQgPT4gJGZpbGVGaWx0ZXIgfSwgJGZ1bGxQYXRoKTsKKworICAgICAgICBmb3IgbXkg
JGxldmVsIChAcGxhdGZvcm1IaWVyYXJjaHkpIHsKKyAgICAgICAgICAgIG15ICRwbGF0Zm9ybVBh
dGggPSBjYXRmaWxlKCRsZXZlbCwgJHRlc3QpOworICAgICAgICAgICAgZmluZCh7IHByZXByb2Nl
c3MgPT4gJGRpcmVjdG9yeUZpbHRlciwgd2FudGVkID0+ICRmaWxlRmlsdGVyIH0sICRwbGF0Zm9y
bVBhdGgpIGlmICgtZCAkcGxhdGZvcm1QYXRoKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIHByaW50ICJ0ZXN0ICR0ZXN0IG5vdCBmb3VuZFxuIjsKICAgICB9CiB9CiBpZiAoIXNj
YWxhciBAQVJHVikgewogICAgIGZpbmQoeyBwcmVwcm9jZXNzID0+ICRkaXJlY3RvcnlGaWx0ZXIs
IHdhbnRlZCA9PiAkZmlsZUZpbHRlciB9LCAkdGVzdERpcmVjdG9yeSk7CisKKyAgICBmb3IgbXkg
JGxldmVsIChAcGxhdGZvcm1IaWVyYXJjaHkpIHsKKyAgICAgICAgZmluZCh7IHByZXByb2Nlc3Mg
PT4gJGRpcmVjdG9yeUZpbHRlciwgd2FudGVkID0+ICRmaWxlRmlsdGVyIH0sICRsZXZlbCk7Cisg
ICAgfQogfQogCiBkaWUgIm5vIHRlc3RzIHRvIHJ1blxuIiBpZiAhQHRlc3RzOwpAQCAtNDc2LDcg
KzQ5OSw3IEBACiAgICAgbXkgJGV4cGVjdGVkOwogICAgIG15ICRleHBlY3RlZERpciA9IGV4cGVj
dGVkRGlyZWN0b3J5Rm9yVGVzdCgkYmFzZSk7CiAgICAgaWYgKGlzUXQoKSAmJiAkaXNUZXh0KSB7
Ci0gICAgICAkZXhwZWN0ZWREaXIgPSAkdGVzdERpcmVjdG9yeTsKKyAgICAgICAgJGV4cGVjdGVk
RGlyID0gJHRlc3REaXJlY3Rvcnk7CiAgICAgfQogCiAgICAgaWYgKCEkcmVzZXRSZXN1bHRzICYm
IG9wZW4gRVhQRUNURUQsICI8IiwgIiRleHBlY3RlZERpci8kYmFzZS0kZXhwZWN0ZWRUYWcudHh0
IikgewpAQCAtNTA4LDExICs1MzEsMTIgQEAKICAgICBteSAkZGlmZlJlc3VsdCA9ICJwYXNzZWQi
OwogICAgIAogICAgIGlmICgkcGl4ZWxUZXN0cykgewotICAgICAgICBkaWUgIlBpeGVsIHRlc3Rz
IGN1cnJlbnRseSBkb24ndCB3b3JrIHdoZW4gdXNpbmcgYSBjdXN0b20gZXhwZWN0ZWQgdGVzdCBy
ZXN1bHRzIGRpcmVjdG9yeSIgaWYgJHRlc3REaXJlY3RvcnkgbmUgJGV4cGVjdGVkRGlyOwotICAg
ICAgICAgICAgCiAgICAgICAgIG15ICRhY3R1YWxIYXNoID0gIiI7CiAgICAgICAgIG15ICRleHBl
Y3RlZEhhc2ggPSAiIjsKICAgICAgICAgbXkgJGFjdHVhbFBOR1NpemUgPSAwOworCisgICAgICAg
ICRiYXNlID1+IHMvKHBsYXRmb3JtXC9bYS16QS1aMC05LV0qXC8pLy87CisKICAgICAgICAgd2hp
bGUgKDxJTj4pIHsKICAgICAgICAgICAgIGxhc3QgaWYgLyNFT0YvOwogICAgICAgICAgICAgaWYg
KC9BY3R1YWxIYXNoOiAoW2EtZjAtOV17MzJ9KS8pIHsKQEAgLTUyNSwxMCArNTQ5LDEwIEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoJGV4cGVjdGVkSGFzaCBuZSAk
YWN0dWFsSGFzaCAmJiAtZiAiJHRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyIp
IHsKLSAgICAgICAgICAgIG15ICRleHBlY3RlZFBOR1NpemUgPSAtcyAiJHRlc3REaXJlY3Rvcnkv
JGJhc2UtJGV4cGVjdGVkVGFnLnBuZyI7CisgICAgICAgIGlmICgkZXhwZWN0ZWRIYXNoIG5lICRh
Y3R1YWxIYXNoICYmIC1mICIkZXhwZWN0ZWREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyIpIHsK
KyAgICAgICAgICAgIG15ICRleHBlY3RlZFBOR1NpemUgPSAtcyAiJGV4cGVjdGVkRGlyLyRiYXNl
LSRleHBlY3RlZFRhZy5wbmciOwogICAgICAgICAgICAgbXkgJGV4cGVjdGVkUE5HID0gIiI7Ci0g
ICAgICAgICAgICBvcGVuIEVYUEVDVEVEUE5HLCAiJHRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVj
dGVkVGFnLnBuZyI7CisgICAgICAgICAgICBvcGVuIEVYUEVDVEVEUE5HLCAiJGV4cGVjdGVkRGly
LyRiYXNlLSRleHBlY3RlZFRhZy5wbmciOwogICAgICAgICAgICAgcmVhZChFWFBFQ1RFRFBORywg
JGV4cGVjdGVkUE5HLCAkZXhwZWN0ZWRQTkdTaXplKTsKIAogICAgICAgICAgICAgcHJpbnQgRElG
Rk9VVCAiQ29udGVudC1sZW5ndGg6ICRhY3R1YWxQTkdTaXplXG4iOwpAQCAtNTUwLDE1ICs1NzQs
MTYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmICgkYWN0dWFsUE5H
U2l6ZSAmJiAoJHJlc2V0UmVzdWx0cyB8fCAhLWYgIiR0ZXN0RGlyZWN0b3J5LyRiYXNlLSRleHBl
Y3RlZFRhZy5wbmciKSkgewotICAgICAgICAgICAgb3BlbiBFWFBFQ1RFRCwgIj4iLCAiJHRlc3RE
aXJlY3RvcnkvJGJhc2UtZXhwZWN0ZWQucG5nIiBvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUgJHRl
c3REaXJlY3RvcnkvJGJhc2UtZXhwZWN0ZWQucG5nXG4iOworICAgICAgICBteSAkcmVzdWx0RGly
ID0gZXhwZWN0ZWREaXJlY3RvcnlGb3JUZXN0KCR0ZXN0KTsKKyAgICAgICAgaWYgKCRhY3R1YWxQ
TkdTaXplICYmICgkcmVzZXRSZXN1bHRzIHx8ICEtZiAiJHJlc3VsdERpci8kYmFzZS0kZXhwZWN0
ZWRUYWcucG5nIikpIHsKKyAgICAgICAgICAgIG9wZW4gRVhQRUNURUQsICI+IiwgIiRyZXN1bHRE
aXIvJGJhc2UtZXhwZWN0ZWQucG5nIiBvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUgJHJlc3VsdERp
ci8kYmFzZS1leHBlY3RlZC5wbmdcbiI7CiAgICAgICAgICAgICBwcmludCBFWFBFQ1RFRCAkYWN0
dWFsUE5HOwogICAgICAgICAgICAgY2xvc2UgRVhQRUNURUQ7CiAgICAgICAgIH0KIAogICAgICAg
ICAjIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgaGFzaCBpZiB0aGUgaW1hZ2UgZGlmZiBzYWlkIHRoYXQg
dGhlcmUgd2FzIG5vIGRpZmZlcmVuY2UKLSAgICAgICAgaWYgKCRhY3R1YWxIYXNoIG5lICIiICYm
ICgkcmVzZXRSZXN1bHRzIHx8ICEtZiAiJHRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFn
LmNoZWNrc3VtIikpIHsKLSAgICAgICAgICAgIG9wZW4gRVhQRUNURUQsICI+IiwgIiR0ZXN0RGly
ZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy5jaGVja3N1bSIgb3IgZGllICJjb3VsZCBub3QgY3Jl
YXRlICR0ZXN0RGlyZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy5jaGVja3N1bVxuIjsKKyAgICAg
ICAgaWYgKCRhY3R1YWxIYXNoIG5lICIiICYmICgkcmVzZXRSZXN1bHRzIHx8ICEtZiAiJHJlc3Vs
dERpci8kYmFzZS0kZXhwZWN0ZWRUYWcuY2hlY2tzdW0iKSkgeworICAgICAgICAgICAgb3BlbiBF
WFBFQ1RFRCwgIj4iLCAiJHJlc3VsdERpci8kYmFzZS0kZXhwZWN0ZWRUYWcuY2hlY2tzdW0iIG9y
IGRpZSAiY291bGQgbm90IGNyZWF0ZSAkcmVzdWx0RGlyLyRiYXNlLSRleHBlY3RlZFRhZy5jaGVj
a3N1bVxuIjsKICAgICAgICAgICAgIHByaW50IEVYUEVDVEVEICRhY3R1YWxIYXNoOwogICAgICAg
ICAgICAgY2xvc2UgRVhQRUNURUQ7CiAgICAgICAgIH0KQEAgLTY0Niw5ICs2NzEsMTAgQEAKIAog
ICAgICAgICBpZiAoJGdlbmVyYXRlTmV3UmVzdWx0cyB8fCAkcmVzZXRSZXN1bHRzKSB7CiAgICAg
ICAgICAgICAjIENyZWF0ZSB0aGUgcGF0aCBpZiBuZWVkZWQKLSAgICAgICAgICAgIG1rcGF0aChj
YXRmaWxlKCRleHBlY3RlZERpciwgZGlybmFtZSgkYmFzZSkpKSBpZiAkdGVzdERpcmVjdG9yeSBu
ZSAkZXhwZWN0ZWREaXI7CisgICAgICAgICAgICBteSAkcmVzdWx0RGlyID0gZXhwZWN0ZWREaXJl
Y3RvcnlGb3JUZXN0KCR0ZXN0KTsKKyAgICAgICAgICAgIG1rcGF0aChjYXRmaWxlKCRyZXN1bHRE
aXIsIGRpcm5hbWUoJGJhc2UpKSkgaWYgJHRlc3REaXJlY3RvcnkgbmUgJHJlc3VsdERpcjsKIAot
ICAgICAgICAgICAgb3BlbiBFWFBFQ1RFRCwgIj4iLCAiJGV4cGVjdGVkRGlyLyRiYXNlLSRleHBl
Y3RlZFRhZy50eHQiIG9yIGRpZSAiY291bGQgbm90IGNyZWF0ZSAkZXhwZWN0ZWREaXIvJGJhc2Ut
JGV4cGVjdGVkVGFnLnR4dFxuIjsKKyAgICAgICAgICAgIG9wZW4gRVhQRUNURUQsICI+IiwgIiRy
ZXN1bHREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIgb3IgZGllICJjb3VsZCBub3QgY3JlYXRl
ICRyZXN1bHREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dFxuIjsKICAgICAgICAgICAgIHByaW50
IEVYUEVDVEVEICRhY3R1YWw7CiAgICAgICAgICAgICBjbG9zZSBFWFBFQ1RFRDsKICAgICAgICAg
fQpAQCAtOTQ0LDcgKzk3MCw3IEBACiAgICAgICAgICAgICAiX29iamNfbXNnRm9yd2FyZCIsICMg
bGVhayBpbiBOU1NwZWxsQ2hlY2tlciwgUmFkYXIgNDk2NTI3OAogICAgICAgICAgICAgImdsZEdl
dFN0cmluZyIgIyBsZWFrIGluIE9wZW5HTCwgUmFkYXIgNTAxMzY5OQogICAgICAgICApOwotICAg
ICAgICAgcHVzaCBAdHlwZXNUb0V4Y2x1ZGUsICgKKyAgICAgICAgcHVzaCBAdHlwZXNUb0V4Y2x1
ZGUsICgKICAgICAgICAgICAgICJUSFJEIiwgIyBidWcgaW4gJ2xlYWtzJywgUmFkYXIgMzM4Nzc4
MwogICAgICAgICAgICAgIkRSSFQiICMgZGl0dG8gKGVuZGlhbiBsaXR0bGUgaGF0ZSBpKQogICAg
ICAgICApOwpAQCAtMTI1OCw3ICsxMjg0LDE0IEBACiBzdWIgZXhwZWN0ZWREaXJlY3RvcnlGb3JU
ZXN0KCQpCiB7CiAgICAgbXkgKCRiYXNlKSA9IEBfOwotICAgIHJldHVybiAoLWYgIiRwbGF0Zm9y
bVRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIpID8gJHBsYXRmb3JtVGVzdERp
cmVjdG9yeSA6ICRleHBlY3RlZERpcmVjdG9yeTsKKworICAgIGZvcmVhY2ggbXkgJGxldmVsIChA
cGxhdGZvcm1IaWVyYXJjaHkpIHsKKyAgICAgICAgcmV0dXJuICRsZXZlbCBpZiAoLWYgIiRsZXZl
bC8kYmFzZS0kZXhwZWN0ZWRUYWcudHh0Iik7CisgICAgfQorCisgICAgcmV0dXJuICRleHBlY3Rl
ZERpcmVjdG9yeSBpZiAoLWYgIiRleHBlY3RlZERpcmVjdG9yeS8kYmFzZS0kZXhwZWN0ZWRUYWcu
dHh0Iik7CisKKyAgICByZXR1cm4gJHBsYXRmb3JtSGllcmFyY2h5WyQjcGxhdGZvcm1IaWVyYXJj
aHldOwogfQogCiBzdWIgcHJpbnRGYWlsdXJlTWVzc2FnZUZvclRlc3QoJCQpCkBAIC0xMzgxLDMg
KzE0MTQsMTYgQEAKIAogICAgIHN5c3RlbSAiZGlmZiAtdSBcIiR0ZXN0UmVzdWx0c0RpcmVjdG9y
eS8kYmFzZS0kZXhwZWN0ZWRUYWcudHh0XCIgXCIkdGVzdFJlc3VsdHNEaXJlY3RvcnkvJGJhc2Ut
JGFjdHVhbFRhZy50eHRcIiA+IFwiJHRlc3RSZXN1bHRzRGlyZWN0b3J5LyRiYXNlLSRkaWZmc1Rh
Zy50eHRcIiI7CiB9CisKK3N1YiBidWlsZFBsYXRmb3JtSGllcmFyY2h5KCkKK3sKKyAgICBteSBA
cGxhdGZvcm1zID0gc3BsaXQoJy0nLCAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5KTsKKyAgICBteSBA
aGllcmFyY2h5OworCisgICAgZm9yIChteSAkaT0wOyAkaSA8IEBwbGF0Zm9ybXM7ICRpKyspIHsK
KyAgICAgICAgbXkgJHNjb3BlZCA9IGpvaW4oJy0nLCBAcGxhdGZvcm1zWzAuLigkI3BsYXRmb3Jt
cyAtICRpKV0pOworICAgICAgICBwdXNoKEBoaWVyYXJjaHksICRzY29wZWQpIGlmICgtZCAkc2Nv
cGVkKTsKKyAgICB9CisKKyAgICByZXR1cm4gQGhpZXJhcmNoeTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15925</attachid>
            <date>2007-08-10 23:12:08 -0700</date>
            <delta_ts>2007-08-11 10:40:16 -0700</delta_ts>
            <desc>reviewable v2</desc>
            <filename>Bug14740-2</filename>
            <type>text/plain</type>
            <size>12293</size>
            <attacher name="Matt Lilek">dev+webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MDA1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMDgtMTAgIE1hdHQgTGlsZWsgIDxwZXd0
ZXJtb29zZUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKwor
ICAgICAgICBCdWcgMTQ3NDA6IEhpZXJhcmNoaWNhbCBsYXlvdXQgdGVzdHMgYW5kIHBsYXRmb3Jt
IG9yZ2FuaXphdGlvbgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDc0MAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBs
YXlvdXQgdGVzdHMgYW5kIHJlc3VsdHMuCisgICAgICAgIE5ldyBwbGF0Zm9ybSBzdHJ1Y3R1cmUg
aXMgYXMgZm9sbG93czoKKworICAgICAgICAqIHBsYXRmb3JtOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWM6IEFkZGVkLgorICAgICAgICAqIG1hYy9sZW9wYXJkLyAtPiBwbGF0Zm9ybS9t
YWMtbGVvcGFyZAorICAgICAgICAqIHdpbi8gLT4gcGxhdGZvcm0vd2luCisgICAgICAgICogcXQv
IC0+IHBsYXRmb3JtL3F0CisKIDIwMDctMDgtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBhbmQgTWFjaWVqLgpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjUwMDUpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwNy0wOC0xMCAgTWF0dCBMaWxlayAgPHBld3Rlcm1v
b3NlQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisgICAg
ICAgIEJ1ZyAxNDc0MDogSGllcmFyY2hpY2FsIGxheW91dCB0ZXN0cyBhbmQgcGxhdGZvcm0gb3Jn
YW5pemF0aW9uCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NzQwCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGxheW91
dCB0ZXN0cyBhbmQgcmVzdWx0cy4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
czoKKwogMjAwNy0wOC0wNiAgTmlnZWwgVGFvICA8bmlnZWx0YW9AZ25vbWUub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13
ZWJraXQtdGVzdHMJKHJldmlzaW9uIDI0OTc1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4t
d2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogCiAjIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
IENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisj
IENvcHlyaWdodCAoQykgMjAwNyBNYXR0IExpbGVrIChwZXd0ZXJtb29zZUBnbWFpbC5jb20pCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg1LDcgQEAKIHN1YiBodG1sRm9y
RXhwZWN0ZWRBbmRBY3R1YWxSZXN1bHRzKCQpOwogc3ViIGRlbGV0ZUV4cGVjdGVkQW5kQWN0dWFs
UmVzdWx0cygkKTsKIHN1YiByZWNvcmRBY3R1YWxSZXN1bHRzQW5kRGlmZigkJCk7CitzdWIgYnVp
bGRQbGF0Zm9ybUhpZXJhcmNoeSgpOwogCiAjIEFyZ3VtZW50IGhhbmRsaW5nCiBteSAkc2hvdWxk
Q2hlY2tMZWFrcyA9ICcnOwpAQCAtOTMsNiArOTUsNyBAQAogbXkgJGh0dHBkU1NMUG9ydCA9IDg0
NDM7CiBteSAkaWdub3JlVGVzdHMgPSAnJzsKIG15ICRsYXVuY2hTYWZhcmkgPSAxOworbXkgJHBs
YXRmb3JtOwogbXkgJHBpeGVsVGVzdHMgPSAnJzsKIG15ICRxdWlldCA9ICcnOwogbXkgJHJlcGFp
bnRTd2VlcEhvcml6b250YWxseSA9ICcnOwpAQCAtMTE4LDYgKzEyMSwyMyBAQAogbXkgJGRpZmZz
VGFnID0gImRpZmZzIjsKIG15ICRlcnJvclRhZyA9ICJzdGRlcnIiOwogCitteSAkdXNlV2luU2tp
cHBlZCA9IDA7CitpZiAoaXNMZW9wYXJkKCkpIHsKKyAgICAkcGxhdGZvcm0gPSAibWFjLWxlb3Bh
cmQiOworfSBlbHNpZiAoaXNPU1goKSkgeworICAgICRwbGF0Zm9ybSA9ICJtYWMiOworfSBlbHNp
ZiAoaXNRdCgpKSB7CisgICAgJHBsYXRmb3JtID0gInF0IjsKK30gZWxzaWYgKGlzQ3lnd2luKCkp
IHsKKyAgICAjIEZJWE1FOiBHZXQgcmlkIG9mIHRoZSAkdXNlV2luU2tpcHBlZCBoYWNrIG9uY2Ug
V2luZG93cyBkb2Vzbid0IG5lZWQgYSBTa2lwcGVkIGZpbGUgYW55bW9yZQorICAgICMgb3Igc3Rv
cHMgdXNpbmcgdGhlIG1hYyByZXN1bHQgZGlyZWN0b3J5IG9yIHdlIGNvbWUgdXAgd2l0aCBzb21l
dGhpbmcgYmV0dGVyLgorICAgICMkcGxhdGZvcm0gPSAid2luIjsKKyAgICAkcGxhdGZvcm0gPSAi
bWFjIjsKKyAgICAkdXNlV2luU2tpcHBlZCA9IDE7Cit9IGVsc2UgeworICAgICRwbGF0Zm9ybSA9
ICJub25lIjsKK30KKwogbXkgJHByb2dyYW1OYW1lID0gYmFzZW5hbWUoJDApOwogbXkgJGxhdW5j
aFNhZmFyaURlZmF1bHQgPSAkbGF1bmNoU2FmYXJpID8gImxhdW5jaCIgOiAiZG8gbm90IGxhdW5j
aCI7CiBteSAkaHR0cERlZmF1bHQgPSAkdGVzdEhUVFAgPyAicnVuIiA6ICJkbyBub3QgcnVuIjsK
QEAgLTEzNCw2ICsxNTQsNyBAQAogICAtbHwtLWxlYWtzICAgICAgICAgICAgICAgICAgICAgIEVu
YWJsZSBsZWFrcyBjaGVja2luZwogICAtLVtuby1dbmV3LXRlc3QtcmVzdWx0cyAgICAgICAgIEdl
bmVyYXRlIHJlc3VsdHMgZm9yIG5ldyB0ZXN0cwogICAtcHwtLXBpeGVsLXRlc3RzICAgICAgICAg
ICAgICAgIEVuYWJsZSBwaXhlbCB0ZXN0cworICAtLXBsYXRmb3JtICAgICAgICAgICAgICAgICAg
ICAgIE92ZXJyaWRlIHRoZSBkZXRlY3RlZCBwbGF0Zm9ybSB0byB1c2UgZm9yIHRlc3RzIGFuZCBy
ZXN1bHRzIChkZWZhdWx0OiAkcGxhdGZvcm0pCiAgIC0tcG9ydCAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViIHNlcnZlciBwb3J0IHRvIHVzZSB3aXRoIGh0dHAgdGVzdHMKICAgLXF8LS1xdWll
dCAgICAgICAgICAgICAgICAgICAgICBMZXNzIHZlcmJvc2Ugb3V0cHV0CiAgIC1yfC0tcmVwYWlu
dC10ZXN0cyAgICAgICAgICAgICAgUnVuIHJlcGFpbnQgdGVzdHMgKGltcGxpZXMgLS1waXhlbC10
ZXN0cykKQEAgLTE2NSw2ICsxODYsNyBAQAogICAgICdsYXVuY2gtc2FmYXJpIScgPT4gXCRsYXVu
Y2hTYWZhcmksCiAgICAgJ2xlYWtzfGwnID0+IFwkc2hvdWxkQ2hlY2tMZWFrcywKICAgICAncGl4
ZWwtdGVzdHN8cCcgPT4gXCRwaXhlbFRlc3RzLAorICAgICdwbGF0Zm9ybT1zJyA9PiBcJHBsYXRm
b3JtLAogICAgICdwb3J0PWknID0+IFwkaHR0cGRQb3J0LAogICAgICdxdWlldHxxJyA9PiBcJHF1
aWV0LAogICAgICdyZWxlYXNlfGRlcGxveScgPT4gc3ViIHsgJGNvbmZpZ3VyYXRpb24gPSAiUmVs
ZWFzZSIgfSwKQEAgLTI0NSwxNyArMjY3LDkgQEAKIAogbXkgJGxheW91dFRlc3RzTmFtZSA9ICJM
YXlvdXRUZXN0cyI7CiBteSAkdGVzdERpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoJGxh
eW91dFRlc3RzTmFtZSk7Ci1teSAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5ID0gJHRlc3REaXJlY3Rv
cnk7CiBteSAkZXhwZWN0ZWREaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeTsKLWlmIChpc0xlb3Bh
cmQoKSkgewotICAgICRwbGF0Zm9ybVRlc3REaXJlY3RvcnkgPSAiJHRlc3REaXJlY3RvcnkvbWFj
L2xlb3BhcmQiOwotfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAgJGV4cGVjdGVkRGlyZWN0b3J5ID0g
RmlsZTo6U3BlYy0+cmVsMmFicygiTGF5b3V0VGVzdHMvcXQvIik7Ci0gICAgJHBsYXRmb3JtVGVz
dERpcmVjdG9yeSA9ICRleHBlY3RlZERpcmVjdG9yeTsKLX0gZWxzaWYgKGlzQ3lnd2luKCkpIHsK
LSAgICAkZXhwZWN0ZWREaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeTsKLSAgICAkcGxhdGZvcm1U
ZXN0RGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+cmVsMmFicygiTGF5b3V0VGVzdHMvd2luLyIpOwot
fQorbXkgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSA9IGNhdGRpcigkdGVzdERpcmVjdG9yeSwgInBs
YXRmb3JtIiwgJHBsYXRmb3JtKTsKK215IEBwbGF0Zm9ybUhpZXJhcmNoeSA9IGJ1aWxkUGxhdGZv
cm1IaWVyYXJjaHkoKTsKIAogJGV4cGVjdGVkRGlyZWN0b3J5ID0gJEVOVnsiV2ViS2l0RXhwZWN0
ZWRUZXN0UmVzdWx0c0RpcmVjdG9yeSJ9IGlmICRFTlZ7IldlYktpdEV4cGVjdGVkVGVzdFJlc3Vs
dHNEaXJlY3RvcnkifTsKIApAQCAtMjc0LDcgKzI4OCw3IEBACiBzeXN0ZW0gImxuIiwgIi1zIiwg
JHRlc3REaXJlY3RvcnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90bXAvTGF5b3V0
VGVzdHMiOwogCiBteSAlaWdub3JlZEZpbGVzID0gKCk7Ci1teSAlaWdub3JlZERpcmVjdG9yaWVz
ID0gKCk7CitteSAlaWdub3JlZERpcmVjdG9yaWVzID0gbWFwIHsgJF8gPT4gMSB9IHF3KHBsYXRm
b3JtKTsKIG15ICVpZ25vcmVkTG9jYWxEaXJlY3RvcmllcyA9IG1hcCB7ICRfID0+IDEgfSBxdygu
c3ZuIF9zdm4gcmVzb3VyY2VzKTsKIG15ICVzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucyA9IG1hcCB7
ICRfID0+IDEgfSBxdyhodG1sIHNodG1sIHhtbCB4aHRtbCBwbCBwaHApOwogaWYgKCR0ZXN0T25s
eVNWR3MpIHsKQEAgLTI5NiwyNyArMzEwLDQyIEBACiAgICAgcHJvY2Vzc0lnbm9yZVRlc3RzKCRp
Z25vcmVUZXN0cyk7CiB9CiAKLWlmICghJGlnbm9yZVNraXBwZWQgJiYgb3BlbiBTS0lQUEVELCAi
PCIsICIkcGxhdGZvcm1UZXN0RGlyZWN0b3J5L1NraXBwZWQiKSB7Ci0gICAgaWYgKCR2ZXJib3Nl
ICYmICEkc2tpcHBlZE9ubHkpIHsKLSAgICAgICAgcHJpbnQgIlNraXBwZWQgdGVzdHM6XG4iOwor
aWYgKCEkaWdub3JlU2tpcHBlZCkgeworICAgICMgRklYTUU6IEdldCByaWQgb2YgdGhlICR1c2VX
aW5Ta2lwcGVkIGhhY2sgb25jZSBXaW5kb3dzIGRvZXNuJ3QgbmVlZCBhIFNraXBwZWQgZmlsZSBh
bnltb3JlCisgICAgIyBvciBzdG9wcyB1c2luZyB0aGUgbWFjIHJlc3VsdCBkaXJlY3Rvcnkgb3Ig
d2UgY29tZSB1cCB3aXRoIHNvbWV0aGluZyBiZXR0ZXIuCisgICAgbXkgQHNraXBwZWRIaWVyYXJj
aHk7CisgICAgaWYgKCR1c2VXaW5Ta2lwcGVkKSB7CisgICAgICAgIEBza2lwcGVkSGllcmFyY2h5
ID0gKGNhdGRpcigkdGVzdERpcmVjdG9yeSwgInBsYXRmb3JtIiwgIndpbiIpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBAc2tpcHBlZEhpZXJhcmNoeSA9IEBwbGF0Zm9ybUhpZXJhcmNoeTsKICAg
ICB9Ci0gICAgd2hpbGUgKDxTS0lQUEVEPikgewotICAgICAgICBteSAkc2tpcHBlZCA9ICRfOwot
ICAgICAgICBjaG9tcCAkc2tpcHBlZDsKLSAgICAgICAgJHNraXBwZWQgPX4gcy9eICsvLzsKLSAg
ICAgICAgJHNraXBwZWQgPX4gcy8gKyQvLzsKLSAgICAgICAgaWYgKCRza2lwcGVkICYmICRza2lw
cGVkICF+IC9eIy8pIHsKLSAgICAgICAgICAgIGlmICgkc2tpcHBlZE9ubHkpIHsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBBUkdWLCAkc2tpcHBlZCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGlmICgkdmVyYm9zZSkgewotICAgICAgICAgICAgICAgICAgICBwcmludCAi
ICAgICRza2lwcGVkXG4iOworCisgICAgZm9yZWFjaCBteSAkbGV2ZWwgKEBza2lwcGVkSGllcmFy
Y2h5KSB7CisgICAgICAgIGlmIChvcGVuIFNLSVBQRUQsICI8IiwgIiRsZXZlbC9Ta2lwcGVkIikg
eworICAgICAgICAgICAgaWYgKCR2ZXJib3NlICYmICEkc2tpcHBlZE9ubHkpIHsKKyAgICAgICAg
ICAgICAgICBteSAoJGRpciwgJG5hbWUpID0gc3BsaXRwYXRoKCRsZXZlbCk7CisgICAgICAgICAg
ICAgICAgcHJpbnQgIlNraXBwZWQgdGVzdHMgaW4gJG5hbWU6XG4iOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB3aGlsZSAoPFNLSVBQRUQ+KSB7CisgICAgICAgICAgICAgICAgbXkgJHNr
aXBwZWQgPSAkXzsKKyAgICAgICAgICAgICAgICBjaG9tcCAkc2tpcHBlZDsKKyAgICAgICAgICAg
ICAgICAkc2tpcHBlZCA9fiBzL14gKy8vOworICAgICAgICAgICAgICAgICRza2lwcGVkID1+IHMv
ICskLy87CisgICAgICAgICAgICAgICAgaWYgKCRza2lwcGVkICYmICRza2lwcGVkICF+IC9eIy8p
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRza2lwcGVkT25seSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAQVJHViwgJHNraXBwZWQpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR2ZXJib3NlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAkc2tpcHBlZFxuIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NJZ25vcmVUZXN0
cygkc2tpcHBlZCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcHJvY2Vzc0lnbm9yZVRlc3RzKCRza2lwcGVkKTsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNsb3NlIFNLSVBQRUQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgY2xv
c2UgU0tJUFBFRDsKIH0KIAogCkBAIC0zNTAsMTIgKzM3OSwyMSBAQAogICAgICAgICB9CiAgICAg
fSBlbHNpZiAoLWQgJGZ1bGxQYXRoKSB7CiAgICAgICAgIGZpbmQoeyBwcmVwcm9jZXNzID0+ICRk
aXJlY3RvcnlGaWx0ZXIsIHdhbnRlZCA9PiAkZmlsZUZpbHRlciB9LCAkZnVsbFBhdGgpOworCisg
ICAgICAgIGZvciBteSAkbGV2ZWwgKEBwbGF0Zm9ybUhpZXJhcmNoeSkgeworICAgICAgICAgICAg
bXkgJHBsYXRmb3JtUGF0aCA9IGNhdGZpbGUoJGxldmVsLCAkdGVzdCk7CisgICAgICAgICAgICBm
aW5kKHsgcHJlcHJvY2VzcyA9PiAkZGlyZWN0b3J5RmlsdGVyLCB3YW50ZWQgPT4gJGZpbGVGaWx0
ZXIgfSwgJHBsYXRmb3JtUGF0aCkgaWYgKC1kICRwbGF0Zm9ybVBhdGgpOworICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgcHJpbnQgInRlc3QgJHRlc3Qgbm90IGZvdW5kXG4iOwogICAg
IH0KIH0KIGlmICghc2NhbGFyIEBBUkdWKSB7CiAgICAgZmluZCh7IHByZXByb2Nlc3MgPT4gJGRp
cmVjdG9yeUZpbHRlciwgd2FudGVkID0+ICRmaWxlRmlsdGVyIH0sICR0ZXN0RGlyZWN0b3J5KTsK
KworICAgIGZvciBteSAkbGV2ZWwgKEBwbGF0Zm9ybUhpZXJhcmNoeSkgeworICAgICAgICBmaW5k
KHsgcHJlcHJvY2VzcyA9PiAkZGlyZWN0b3J5RmlsdGVyLCB3YW50ZWQgPT4gJGZpbGVGaWx0ZXIg
fSwgJGxldmVsKTsKKyAgICB9CiB9CiAKIGRpZSAibm8gdGVzdHMgdG8gcnVuXG4iIGlmICFAdGVz
dHM7CkBAIC00NzYsNyArNTE0LDcgQEAKICAgICBteSAkZXhwZWN0ZWQ7CiAgICAgbXkgJGV4cGVj
dGVkRGlyID0gZXhwZWN0ZWREaXJlY3RvcnlGb3JUZXN0KCRiYXNlKTsKICAgICBpZiAoaXNRdCgp
ICYmICRpc1RleHQpIHsKLSAgICAgICRleHBlY3RlZERpciA9ICR0ZXN0RGlyZWN0b3J5OworICAg
ICAgICAkZXhwZWN0ZWREaXIgPSAkdGVzdERpcmVjdG9yeTsKICAgICB9CiAKICAgICBpZiAoISRy
ZXNldFJlc3VsdHMgJiYgb3BlbiBFWFBFQ1RFRCwgIjwiLCAiJGV4cGVjdGVkRGlyLyRiYXNlLSRl
eHBlY3RlZFRhZy50eHQiKSB7CkBAIC01MDgsMTEgKzU0NiwxMCBAQAogICAgIG15ICRkaWZmUmVz
dWx0ID0gInBhc3NlZCI7CiAgICAgCiAgICAgaWYgKCRwaXhlbFRlc3RzKSB7Ci0gICAgICAgIGRp
ZSAiUGl4ZWwgdGVzdHMgY3VycmVudGx5IGRvbid0IHdvcmsgd2hlbiB1c2luZyBhIGN1c3RvbSBl
eHBlY3RlZCB0ZXN0IHJlc3VsdHMgZGlyZWN0b3J5IiBpZiAkdGVzdERpcmVjdG9yeSBuZSAkZXhw
ZWN0ZWREaXI7Ci0gICAgICAgICAgICAKICAgICAgICAgbXkgJGFjdHVhbEhhc2ggPSAiIjsKICAg
ICAgICAgbXkgJGV4cGVjdGVkSGFzaCA9ICIiOwogICAgICAgICBteSAkYWN0dWFsUE5HU2l6ZSA9
IDA7CisKICAgICAgICAgd2hpbGUgKDxJTj4pIHsKICAgICAgICAgICAgIGxhc3QgaWYgLyNFT0Yv
OwogICAgICAgICAgICAgaWYgKC9BY3R1YWxIYXNoOiAoW2EtZjAtOV17MzJ9KS8pIHsKQEAgLTUy
NSwxMCArNTYyLDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
JGV4cGVjdGVkSGFzaCBuZSAkYWN0dWFsSGFzaCAmJiAtZiAiJHRlc3REaXJlY3RvcnkvJGJhc2Ut
JGV4cGVjdGVkVGFnLnBuZyIpIHsKLSAgICAgICAgICAgIG15ICRleHBlY3RlZFBOR1NpemUgPSAt
cyAiJHRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyI7CisgICAgICAgIGlmICgk
ZXhwZWN0ZWRIYXNoIG5lICRhY3R1YWxIYXNoICYmIC1mICIkZXhwZWN0ZWREaXIvJGJhc2UtJGV4
cGVjdGVkVGFnLnBuZyIpIHsKKyAgICAgICAgICAgIG15ICRleHBlY3RlZFBOR1NpemUgPSAtcyAi
JGV4cGVjdGVkRGlyLyRiYXNlLSRleHBlY3RlZFRhZy5wbmciOwogICAgICAgICAgICAgbXkgJGV4
cGVjdGVkUE5HID0gIiI7Ci0gICAgICAgICAgICBvcGVuIEVYUEVDVEVEUE5HLCAiJHRlc3REaXJl
Y3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyI7CisgICAgICAgICAgICBvcGVuIEVYUEVDVEVE
UE5HLCAiJGV4cGVjdGVkRGlyLyRiYXNlLSRleHBlY3RlZFRhZy5wbmciOwogICAgICAgICAgICAg
cmVhZChFWFBFQ1RFRFBORywgJGV4cGVjdGVkUE5HLCAkZXhwZWN0ZWRQTkdTaXplKTsKIAogICAg
ICAgICAgICAgcHJpbnQgRElGRk9VVCAiQ29udGVudC1sZW5ndGg6ICRhY3R1YWxQTkdTaXplXG4i
OwpAQCAtNTUwLDE1ICs1ODcsMTYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIGlmICgkYWN0dWFsUE5HU2l6ZSAmJiAoJHJlc2V0UmVzdWx0cyB8fCAhLWYgIiR0ZXN0RGly
ZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy5wbmciKSkgewotICAgICAgICAgICAgb3BlbiBFWFBF
Q1RFRCwgIj4iLCAiJHRlc3REaXJlY3RvcnkvJGJhc2UtZXhwZWN0ZWQucG5nIiBvciBkaWUgImNv
dWxkIG5vdCBjcmVhdGUgJHRlc3REaXJlY3RvcnkvJGJhc2UtZXhwZWN0ZWQucG5nXG4iOworICAg
ICAgICBpZiAoJGFjdHVhbFBOR1NpemUgJiYgKCRyZXNldFJlc3VsdHMgfHwgIS1mICIkZXhwZWN0
ZWREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyIpKSB7CisgICAgICAgICAgICBta3BhdGgoY2F0
ZmlsZSgkZXhwZWN0ZWREaXIsIGRpcm5hbWUoJGJhc2UpKSkgaWYgJHRlc3REaXJlY3RvcnkgbmUg
JGV4cGVjdGVkRGlyOworICAgICAgICAgICAgb3BlbiBFWFBFQ1RFRCwgIj4iLCAiJGV4cGVjdGVk
RGlyLyRiYXNlLWV4cGVjdGVkLnBuZyIgb3IgZGllICJjb3VsZCBub3QgY3JlYXRlICRleHBlY3Rl
ZERpci8kYmFzZS1leHBlY3RlZC5wbmdcbiI7CiAgICAgICAgICAgICBwcmludCBFWFBFQ1RFRCAk
YWN0dWFsUE5HOwogICAgICAgICAgICAgY2xvc2UgRVhQRUNURUQ7CiAgICAgICAgIH0KIAogICAg
ICAgICAjIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgaGFzaCBpZiB0aGUgaW1hZ2UgZGlmZiBzYWlkIHRo
YXQgdGhlcmUgd2FzIG5vIGRpZmZlcmVuY2UKLSAgICAgICAgaWYgKCRhY3R1YWxIYXNoIG5lICIi
ICYmICgkcmVzZXRSZXN1bHRzIHx8ICEtZiAiJHRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVk
VGFnLmNoZWNrc3VtIikpIHsKLSAgICAgICAgICAgIG9wZW4gRVhQRUNURUQsICI+IiwgIiR0ZXN0
RGlyZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy5jaGVja3N1bSIgb3IgZGllICJjb3VsZCBub3Qg
Y3JlYXRlICR0ZXN0RGlyZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy5jaGVja3N1bVxuIjsKKyAg
ICAgICAgaWYgKCRhY3R1YWxIYXNoIG5lICIiICYmICgkcmVzZXRSZXN1bHRzIHx8ICEtZiAiJGV4
cGVjdGVkRGlyLyRiYXNlLSRleHBlY3RlZFRhZy5jaGVja3N1bSIpKSB7CisgICAgICAgICAgICBv
cGVuIEVYUEVDVEVELCAiPiIsICIkZXhwZWN0ZWREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLmNoZWNr
c3VtIiBvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUgJGV4cGVjdGVkRGlyLyRiYXNlLSRleHBlY3Rl
ZFRhZy5jaGVja3N1bVxuIjsKICAgICAgICAgICAgIHByaW50IEVYUEVDVEVEICRhY3R1YWxIYXNo
OwogICAgICAgICAgICAgY2xvc2UgRVhQRUNURUQ7CiAgICAgICAgIH0KQEAgLTY2MCw3ICs2OTgs
NyBAQAogICAgICAgICAgICAgICAgIHByaW50ICJcbiIgdW5sZXNzICRhdExpbmVTdGFydDsKICAg
ICAgICAgICAgICAgICBwcmludCAiJHRlc3QgLT4gIjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHByaW50ICJuZXdcbiI7CisgICAgICAgICAgICBwcmludCAibmV3IChyZXN1bHQgZ2VuZXJh
dGVkIGluICRleHBlY3RlZERpcilcbiI7CiAgICAgICAgICAgICAkYXRMaW5lU3RhcnQgPSAxOwog
ICAgICAgICB9CiAgICAgfSBlbHNpZiAoJGFjdHVhbCBlcSAkZXhwZWN0ZWQgJiYgJGRpZmZSZXN1
bHQgZXEgInBhc3NlZCIpIHsKQEAgLTk0NCw3ICs5ODIsNyBAQAogICAgICAgICAgICAgIl9vYmpj
X21zZ0ZvcndhcmQiLCAjIGxlYWsgaW4gTlNTcGVsbENoZWNrZXIsIFJhZGFyIDQ5NjUyNzgKICAg
ICAgICAgICAgICJnbGRHZXRTdHJpbmciICMgbGVhayBpbiBPcGVuR0wsIFJhZGFyIDUwMTM2OTkK
ICAgICAgICAgKTsKLSAgICAgICAgIHB1c2ggQHR5cGVzVG9FeGNsdWRlLCAoCisgICAgICAgIHB1
c2ggQHR5cGVzVG9FeGNsdWRlLCAoCiAgICAgICAgICAgICAiVEhSRCIsICMgYnVnIGluICdsZWFr
cycsIFJhZGFyIDMzODc3ODMKICAgICAgICAgICAgICJEUkhUIiAjIGRpdHRvIChlbmRpYW4gbGl0
dGxlIGhhdGUgaSkKICAgICAgICAgKTsKQEAgLTEyNTgsNyArMTI5NiwxNCBAQAogc3ViIGV4cGVj
dGVkRGlyZWN0b3J5Rm9yVGVzdCgkKQogewogICAgIG15ICgkYmFzZSkgPSBAXzsKLSAgICByZXR1
cm4gKC1mICIkcGxhdGZvcm1UZXN0RGlyZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy50eHQiKSA/
ICRwbGF0Zm9ybVRlc3REaXJlY3RvcnkgOiAkZXhwZWN0ZWREaXJlY3Rvcnk7CisKKyAgICBmb3Jl
YWNoIG15ICRsZXZlbCAoQHBsYXRmb3JtSGllcmFyY2h5KSB7CisgICAgICAgIHJldHVybiAkbGV2
ZWwgaWYgKC1mICIkbGV2ZWwvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIpOworICAgIH0KKworICAg
IHJldHVybiAkZXhwZWN0ZWREaXJlY3RvcnkgaWYgKC1mICIkZXhwZWN0ZWREaXJlY3RvcnkvJGJh
c2UtJGV4cGVjdGVkVGFnLnR4dCIpOworCisgICAgcmV0dXJuICRwbGF0Zm9ybUhpZXJhcmNoeVsk
I3BsYXRmb3JtSGllcmFyY2h5XTsKIH0KIAogc3ViIHByaW50RmFpbHVyZU1lc3NhZ2VGb3JUZXN0
KCQkKQpAQCAtMTM4MSwzICsxNDI2LDE5IEBACiAKICAgICBzeXN0ZW0gImRpZmYgLXUgXCIkdGVz
dFJlc3VsdHNEaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dFwiIFwiJHRlc3RSZXN1bHRz
RGlyZWN0b3J5LyRiYXNlLSRhY3R1YWxUYWcudHh0XCIgPiBcIiR0ZXN0UmVzdWx0c0RpcmVjdG9y
eS8kYmFzZS0kZGlmZnNUYWcudHh0XCIiOwogfQorCitzdWIgYnVpbGRQbGF0Zm9ybUhpZXJhcmNo
eSgpCit7CisgICAgaWYgKCFkZWZpbmVkKCRwbGF0Zm9ybSkgfHwgJHBsYXRmb3JtIGVxICJub25l
IikgeworICAgICAgICByZXR1cm4gJHRlc3REaXJlY3Rvcnk7CisgICAgfQorCisgICAgbXkgQHBs
YXRmb3JtcyA9IHNwbGl0KCctJywgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSk7CisgICAgbXkgQGhp
ZXJhcmNoeTsKKyAgICBmb3IgKG15ICRpPTA7ICRpIDwgQHBsYXRmb3JtczsgJGkrKykgeworICAg
ICAgICBteSAkc2NvcGVkID0gam9pbignLScsIEBwbGF0Zm9ybXNbMC4uKCQjcGxhdGZvcm1zIC0g
JGkpXSk7CisgICAgICAgIHB1c2goQGhpZXJhcmNoeSwgJHNjb3BlZCkgaWYgKC1kICRzY29wZWQp
OworICAgIH0KKworICAgIHJldHVybiBAaGllcmFyY2h5OworfQo=
</data>
<flag name="review"
          id="6670"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15930</attachid>
            <date>2007-08-11 10:40:16 -0700</date>
            <delta_ts>2007-08-11 12:37:37 -0700</delta_ts>
            <desc>reviewable v3</desc>
            <filename>Bug14740-3</filename>
            <type>text/plain</type>
            <size>12566</size>
            <attacher name="Matt Lilek">dev+webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MDA1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMDgtMTEgIE1hdHQgTGlsZWsgIDxwZXd0
ZXJtb29zZUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKwor
ICAgICAgICBCdWcgMTQ3NDA6IEhpZXJhcmNoaWNhbCBsYXlvdXQgdGVzdHMgYW5kIHBsYXRmb3Jt
IG9yZ2FuaXphdGlvbgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDc0MAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBs
YXlvdXQgdGVzdHMgYW5kIHJlc3VsdHMuCisgICAgICAgIE5ldyBwbGF0Zm9ybSBzdHJ1Y3R1cmUg
aXMgYXMgZm9sbG93czoKKworICAgICAgICAqIHBsYXRmb3JtOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWM6IEFkZGVkLgorICAgICAgICAqIG1hYy9sZW9wYXJkLyAtPiBwbGF0Zm9ybS9t
YWMtbGVvcGFyZAorICAgICAgICAqIHdpbi8gLT4gcGxhdGZvcm0vd2luCisgICAgICAgICogcXQv
IC0+IHBsYXRmb3JtL3F0CisKIDIwMDctMDgtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBhbmQgTWFjaWVqLgpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjUwMDUpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwNy0wOC0xMSAgTWF0dCBMaWxlayAgPHBld3Rlcm1v
b3NlQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisgICAg
ICAgIEJ1ZyAxNDc0MDogSGllcmFyY2hpY2FsIGxheW91dCB0ZXN0cyBhbmQgcGxhdGZvcm0gb3Jn
YW5pemF0aW9uCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NzQwCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGxheW91
dCB0ZXN0cyBhbmQgcmVzdWx0cy4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
czoKKwogMjAwNy0wOC0wNiAgTmlnZWwgVGFvICA8bmlnZWx0YW9AZ25vbWUub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13
ZWJraXQtdGVzdHMJKHJldmlzaW9uIDI0OTc1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4t
d2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogCiAjIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
IENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisj
IENvcHlyaWdodCAoQykgMjAwNyBNYXR0IExpbGVrIChwZXd0ZXJtb29zZUBnbWFpbC5jb20pCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg1LDcgQEAKIHN1YiBodG1sRm9y
RXhwZWN0ZWRBbmRBY3R1YWxSZXN1bHRzKCQpOwogc3ViIGRlbGV0ZUV4cGVjdGVkQW5kQWN0dWFs
UmVzdWx0cygkKTsKIHN1YiByZWNvcmRBY3R1YWxSZXN1bHRzQW5kRGlmZigkJCk7CitzdWIgYnVp
bGRQbGF0Zm9ybUhpZXJhcmNoeSgpOwogCiAjIEFyZ3VtZW50IGhhbmRsaW5nCiBteSAkc2hvdWxk
Q2hlY2tMZWFrcyA9ICcnOwpAQCAtOTMsNiArOTUsNyBAQAogbXkgJGh0dHBkU1NMUG9ydCA9IDg0
NDM7CiBteSAkaWdub3JlVGVzdHMgPSAnJzsKIG15ICRsYXVuY2hTYWZhcmkgPSAxOworbXkgJHBs
YXRmb3JtOwogbXkgJHBpeGVsVGVzdHMgPSAnJzsKIG15ICRxdWlldCA9ICcnOwogbXkgJHJlcGFp
bnRTd2VlcEhvcml6b250YWxseSA9ICcnOwpAQCAtMTE4LDYgKzEyMSwzMCBAQAogbXkgJGRpZmZz
VGFnID0gImRpZmZzIjsKIG15ICRlcnJvclRhZyA9ICJzdGRlcnIiOwogCitteSAkdXNlV2luU2tp
cHBlZCA9IDA7CitpZiAoaXNMZW9wYXJkKCkpIHsKKyAgICAkcGxhdGZvcm0gPSAibWFjLWxlb3Bh
cmQiOworfSBlbHNpZiAoaXNPU1goKSkgeworICAgICRwbGF0Zm9ybSA9ICJtYWMiOworfSBlbHNp
ZiAoaXNRdCgpKSB7CisgICAgJHBsYXRmb3JtID0gInF0IjsKK30gZWxzaWYgKGlzQ3lnd2luKCkp
IHsKKyAgICAjIEZJWE1FOiBUaGUgdHdvIGxpbmVzIGJlbG93IGFyZSBhIGhhY2sgdG8gcmVwcmVz
ZW50IHRoYXQgb24gV2luZG93cyB3ZQorICAgICMgY3VycmVudGx5IHdhbnQgdG8KKyAgICAjIDEp
IHVzZSB0aGUgTWFjIGV4cGVjdGVkIHJlc3VsdHMKKyAgICAjIDIpIHVzZSB0aGUgV2luZG93cyBT
a2lwcGVkIGZpbGUKKyAgICAjIE9uY2UgV2luZG93cyBoYXMgaXRzIG93biByZXN1bHRzIGFuZC9v
ciB3ZSBjb21lIHVwIHdpdGggYSBiZXR0ZXIgd2F5IG9mCisgICAgIyBzaGFyaW5nIHJlc3VsdHMg
d2l0aCBNYWMsIHdlIHNob3VsZCBzZXQgJHBsYXRmb3JtIHRvICJ3aW4iIGFuZCBnZXQgcmlkIG9m
CisgICAgIyAkdXNlV2luU2tpcHBlZCBlbnRpcmVseS4KKyAgICAkcGxhdGZvcm0gPSAibWFjIjsK
KyAgICAkdXNlV2luU2tpcHBlZCA9IDE7Cit9CisKK2lmICghZGVmaW5lZCgkcGxhdGZvcm0pKSB7
CisgICAgcHJpbnQgIldBUk5JTkc6IE5vIHBsYXRmb3JtIHNwZWNpZmllZCBmb3IgdGVzdHMgYW5k
IHJlc3VsdHMsIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyByZXN1bHRzIHdpbGwgYmUgcGxhY2VkIGlu
IHBsYXRmb3JtL3VuZGVmaW5lZFxuIjsKKyAgICAkcGxhdGZvcm0gPSAidW5kZWZpbmVkIjsKK30K
KwogbXkgJHByb2dyYW1OYW1lID0gYmFzZW5hbWUoJDApOwogbXkgJGxhdW5jaFNhZmFyaURlZmF1
bHQgPSAkbGF1bmNoU2FmYXJpID8gImxhdW5jaCIgOiAiZG8gbm90IGxhdW5jaCI7CiBteSAkaHR0
cERlZmF1bHQgPSAkdGVzdEhUVFAgPyAicnVuIiA6ICJkbyBub3QgcnVuIjsKQEAgLTEzNCw2ICsx
NjEsNyBAQAogICAtbHwtLWxlYWtzICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSBsZWFrcyBj
aGVja2luZwogICAtLVtuby1dbmV3LXRlc3QtcmVzdWx0cyAgICAgICAgIEdlbmVyYXRlIHJlc3Vs
dHMgZm9yIG5ldyB0ZXN0cwogICAtcHwtLXBpeGVsLXRlc3RzICAgICAgICAgICAgICAgIEVuYWJs
ZSBwaXhlbCB0ZXN0cworICAtLXBsYXRmb3JtICAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRl
IHRoZSBkZXRlY3RlZCBwbGF0Zm9ybSB0byB1c2UgZm9yIHRlc3RzIGFuZCByZXN1bHRzIChkZWZh
dWx0OiAkcGxhdGZvcm0pCiAgIC0tcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViIHNl
cnZlciBwb3J0IHRvIHVzZSB3aXRoIGh0dHAgdGVzdHMKICAgLXF8LS1xdWlldCAgICAgICAgICAg
ICAgICAgICAgICBMZXNzIHZlcmJvc2Ugb3V0cHV0CiAgIC1yfC0tcmVwYWludC10ZXN0cyAgICAg
ICAgICAgICAgUnVuIHJlcGFpbnQgdGVzdHMgKGltcGxpZXMgLS1waXhlbC10ZXN0cykKQEAgLTE2
NSw2ICsxOTMsNyBAQAogICAgICdsYXVuY2gtc2FmYXJpIScgPT4gXCRsYXVuY2hTYWZhcmksCiAg
ICAgJ2xlYWtzfGwnID0+IFwkc2hvdWxkQ2hlY2tMZWFrcywKICAgICAncGl4ZWwtdGVzdHN8cCcg
PT4gXCRwaXhlbFRlc3RzLAorICAgICdwbGF0Zm9ybT1zJyA9PiBcJHBsYXRmb3JtLAogICAgICdw
b3J0PWknID0+IFwkaHR0cGRQb3J0LAogICAgICdxdWlldHxxJyA9PiBcJHF1aWV0LAogICAgICdy
ZWxlYXNlfGRlcGxveScgPT4gc3ViIHsgJGNvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIgfSwKQEAg
LTI0NSwxNyArMjc0LDkgQEAKIAogbXkgJGxheW91dFRlc3RzTmFtZSA9ICJMYXlvdXRUZXN0cyI7
CiBteSAkdGVzdERpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoJGxheW91dFRlc3RzTmFt
ZSk7Ci1teSAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5ID0gJHRlc3REaXJlY3Rvcnk7CiBteSAkZXhw
ZWN0ZWREaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeTsKLWlmIChpc0xlb3BhcmQoKSkgewotICAg
ICRwbGF0Zm9ybVRlc3REaXJlY3RvcnkgPSAiJHRlc3REaXJlY3RvcnkvbWFjL2xlb3BhcmQiOwot
fSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAgJGV4cGVjdGVkRGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+
cmVsMmFicygiTGF5b3V0VGVzdHMvcXQvIik7Ci0gICAgJHBsYXRmb3JtVGVzdERpcmVjdG9yeSA9
ICRleHBlY3RlZERpcmVjdG9yeTsKLX0gZWxzaWYgKGlzQ3lnd2luKCkpIHsKLSAgICAkZXhwZWN0
ZWREaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeTsKLSAgICAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5
ID0gRmlsZTo6U3BlYy0+cmVsMmFicygiTGF5b3V0VGVzdHMvd2luLyIpOwotfQorbXkgJHBsYXRm
b3JtVGVzdERpcmVjdG9yeSA9IGNhdGRpcigkdGVzdERpcmVjdG9yeSwgInBsYXRmb3JtIiwgJHBs
YXRmb3JtKTsKK215IEBwbGF0Zm9ybUhpZXJhcmNoeSA9IGJ1aWxkUGxhdGZvcm1IaWVyYXJjaHko
KTsKIAogJGV4cGVjdGVkRGlyZWN0b3J5ID0gJEVOVnsiV2ViS2l0RXhwZWN0ZWRUZXN0UmVzdWx0
c0RpcmVjdG9yeSJ9IGlmICRFTlZ7IldlYktpdEV4cGVjdGVkVGVzdFJlc3VsdHNEaXJlY3Rvcnki
fTsKIApAQCAtMjc0LDcgKzI5NSw3IEBACiBzeXN0ZW0gImxuIiwgIi1zIiwgJHRlc3REaXJlY3Rv
cnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90bXAvTGF5b3V0VGVzdHMiOwogCiBt
eSAlaWdub3JlZEZpbGVzID0gKCk7Ci1teSAlaWdub3JlZERpcmVjdG9yaWVzID0gKCk7CitteSAl
aWdub3JlZERpcmVjdG9yaWVzID0gbWFwIHsgJF8gPT4gMSB9IHF3KHBsYXRmb3JtKTsKIG15ICVp
Z25vcmVkTG9jYWxEaXJlY3RvcmllcyA9IG1hcCB7ICRfID0+IDEgfSBxdyguc3ZuIF9zdm4gcmVz
b3VyY2VzKTsKIG15ICVzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucyA9IG1hcCB7ICRfID0+IDEgfSBx
dyhodG1sIHNodG1sIHhtbCB4aHRtbCBwbCBwaHApOwogaWYgKCR0ZXN0T25seVNWR3MpIHsKQEAg
LTI5NiwyNyArMzE3LDQxIEBACiAgICAgcHJvY2Vzc0lnbm9yZVRlc3RzKCRpZ25vcmVUZXN0cyk7
CiB9CiAKLWlmICghJGlnbm9yZVNraXBwZWQgJiYgb3BlbiBTS0lQUEVELCAiPCIsICIkcGxhdGZv
cm1UZXN0RGlyZWN0b3J5L1NraXBwZWQiKSB7Ci0gICAgaWYgKCR2ZXJib3NlICYmICEkc2tpcHBl
ZE9ubHkpIHsKLSAgICAgICAgcHJpbnQgIlNraXBwZWQgdGVzdHM6XG4iOworaWYgKCEkaWdub3Jl
U2tpcHBlZCkgeworICAgICMgRklYTUU6IFNlZSBjb21tZW50cyB3aGVyZSAkcGxhdGZvcm0gaXMg
c2V0IGZvciBpbmZvIG9uIHdoeSB0aGlzIGlzIG5lZWRlZC4KKyAgICBteSBAc2tpcHBlZEhpZXJh
cmNoeTsKKyAgICBpZiAoJHVzZVdpblNraXBwZWQpIHsKKyAgICAgICAgQHNraXBwZWRIaWVyYXJj
aHkgPSAoY2F0ZGlyKCR0ZXN0RGlyZWN0b3J5LCAicGxhdGZvcm0iLCAid2luIikpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIEBza2lwcGVkSGllcmFyY2h5ID0gQHBsYXRmb3JtSGllcmFyY2h5Owog
ICAgIH0KLSAgICB3aGlsZSAoPFNLSVBQRUQ+KSB7Ci0gICAgICAgIG15ICRza2lwcGVkID0gJF87
Ci0gICAgICAgIGNob21wICRza2lwcGVkOwotICAgICAgICAkc2tpcHBlZCA9fiBzL14gKy8vOwot
ICAgICAgICAkc2tpcHBlZCA9fiBzLyArJC8vOwotICAgICAgICBpZiAoJHNraXBwZWQgJiYgJHNr
aXBwZWQgIX4gL14jLykgewotICAgICAgICAgICAgaWYgKCRza2lwcGVkT25seSkgewotICAgICAg
ICAgICAgICAgIHB1c2goQEFSR1YsICRza2lwcGVkKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCR2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50
ICIgICAgJHNraXBwZWRcbiI7CisKKyAgICBmb3JlYWNoIG15ICRsZXZlbCAoQHNraXBwZWRIaWVy
YXJjaHkpIHsKKyAgICAgICAgaWYgKG9wZW4gU0tJUFBFRCwgIjwiLCAiJGxldmVsL1NraXBwZWQi
KSB7CisgICAgICAgICAgICBpZiAoJHZlcmJvc2UgJiYgISRza2lwcGVkT25seSkgeworICAgICAg
ICAgICAgICAgIG15ICgkZGlyLCAkbmFtZSkgPSBzcGxpdHBhdGgoJGxldmVsKTsKKyAgICAgICAg
ICAgICAgICBwcmludCAiU2tpcHBlZCB0ZXN0cyBpbiAkbmFtZTpcbiI7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHdoaWxlICg8U0tJUFBFRD4pIHsKKyAgICAgICAgICAgICAgICBteSAk
c2tpcHBlZCA9ICRfOworICAgICAgICAgICAgICAgIGNob21wICRza2lwcGVkOworICAgICAgICAg
ICAgICAgICRza2lwcGVkID1+IHMvXiArLy87CisgICAgICAgICAgICAgICAgJHNraXBwZWQgPX4g
cy8gKyQvLzsKKyAgICAgICAgICAgICAgICBpZiAoJHNraXBwZWQgJiYgJHNraXBwZWQgIX4gL14j
LykgeworICAgICAgICAgICAgICAgICAgICBpZiAoJHNraXBwZWRPbmx5KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBBUkdWLCAkc2tpcHBlZCk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHZlcmJvc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICRza2lwcGVkXG4iOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0lnbm9yZVRl
c3RzKCRza2lwcGVkKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBwcm9jZXNzSWdub3JlVGVzdHMoJHNraXBwZWQpOwogICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY2xvc2UgU0tJUFBFRDsKICAgICAgICAgfQogICAgIH0KLSAgICBj
bG9zZSBTS0lQUEVEOwogfQogCiAKQEAgLTM1MCwxMiArMzg1LDIxIEBACiAgICAgICAgIH0KICAg
ICB9IGVsc2lmICgtZCAkZnVsbFBhdGgpIHsKICAgICAgICAgZmluZCh7IHByZXByb2Nlc3MgPT4g
JGRpcmVjdG9yeUZpbHRlciwgd2FudGVkID0+ICRmaWxlRmlsdGVyIH0sICRmdWxsUGF0aCk7CisK
KyAgICAgICAgZm9yIG15ICRsZXZlbCAoQHBsYXRmb3JtSGllcmFyY2h5KSB7CisgICAgICAgICAg
ICBteSAkcGxhdGZvcm1QYXRoID0gY2F0ZmlsZSgkbGV2ZWwsICR0ZXN0KTsKKyAgICAgICAgICAg
IGZpbmQoeyBwcmVwcm9jZXNzID0+ICRkaXJlY3RvcnlGaWx0ZXIsIHdhbnRlZCA9PiAkZmlsZUZp
bHRlciB9LCAkcGxhdGZvcm1QYXRoKSBpZiAoLWQgJHBsYXRmb3JtUGF0aCk7CisgICAgICAgIH0K
ICAgICB9IGVsc2UgewogICAgICAgICBwcmludCAidGVzdCAkdGVzdCBub3QgZm91bmRcbiI7CiAg
ICAgfQogfQogaWYgKCFzY2FsYXIgQEFSR1YpIHsKICAgICBmaW5kKHsgcHJlcHJvY2VzcyA9PiAk
ZGlyZWN0b3J5RmlsdGVyLCB3YW50ZWQgPT4gJGZpbGVGaWx0ZXIgfSwgJHRlc3REaXJlY3Rvcnkp
OworCisgICAgZm9yIG15ICRsZXZlbCAoQHBsYXRmb3JtSGllcmFyY2h5KSB7CisgICAgICAgIGZp
bmQoeyBwcmVwcm9jZXNzID0+ICRkaXJlY3RvcnlGaWx0ZXIsIHdhbnRlZCA9PiAkZmlsZUZpbHRl
ciB9LCAkbGV2ZWwpOworICAgIH0KIH0KIAogZGllICJubyB0ZXN0cyB0byBydW5cbiIgaWYgIUB0
ZXN0czsKQEAgLTQ3Niw3ICs1MjAsNyBAQAogICAgIG15ICRleHBlY3RlZDsKICAgICBteSAkZXhw
ZWN0ZWREaXIgPSBleHBlY3RlZERpcmVjdG9yeUZvclRlc3QoJGJhc2UpOwogICAgIGlmIChpc1F0
KCkgJiYgJGlzVGV4dCkgewotICAgICAgJGV4cGVjdGVkRGlyID0gJHRlc3REaXJlY3Rvcnk7Cisg
ICAgICAgICRleHBlY3RlZERpciA9ICR0ZXN0RGlyZWN0b3J5OwogICAgIH0KIAogICAgIGlmICgh
JHJlc2V0UmVzdWx0cyAmJiBvcGVuIEVYUEVDVEVELCAiPCIsICIkZXhwZWN0ZWREaXIvJGJhc2Ut
JGV4cGVjdGVkVGFnLnR4dCIpIHsKQEAgLTUwOCwxMSArNTUyLDEwIEBACiAgICAgbXkgJGRpZmZS
ZXN1bHQgPSAicGFzc2VkIjsKICAgICAKICAgICBpZiAoJHBpeGVsVGVzdHMpIHsKLSAgICAgICAg
ZGllICJQaXhlbCB0ZXN0cyBjdXJyZW50bHkgZG9uJ3Qgd29yayB3aGVuIHVzaW5nIGEgY3VzdG9t
IGV4cGVjdGVkIHRlc3QgcmVzdWx0cyBkaXJlY3RvcnkiIGlmICR0ZXN0RGlyZWN0b3J5IG5lICRl
eHBlY3RlZERpcjsKLSAgICAgICAgICAgIAogICAgICAgICBteSAkYWN0dWFsSGFzaCA9ICIiOwog
ICAgICAgICBteSAkZXhwZWN0ZWRIYXNoID0gIiI7CiAgICAgICAgIG15ICRhY3R1YWxQTkdTaXpl
ID0gMDsKKwogICAgICAgICB3aGlsZSAoPElOPikgewogICAgICAgICAgICAgbGFzdCBpZiAvI0VP
Ri87CiAgICAgICAgICAgICBpZiAoL0FjdHVhbEhhc2g6IChbYS1mMC05XXszMn0pLykgewpAQCAt
NTI1LDEwICs1NjgsMTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlm
ICgkZXhwZWN0ZWRIYXNoIG5lICRhY3R1YWxIYXNoICYmIC1mICIkdGVzdERpcmVjdG9yeS8kYmFz
ZS0kZXhwZWN0ZWRUYWcucG5nIikgewotICAgICAgICAgICAgbXkgJGV4cGVjdGVkUE5HU2l6ZSA9
IC1zICIkdGVzdERpcmVjdG9yeS8kYmFzZS0kZXhwZWN0ZWRUYWcucG5nIjsKKyAgICAgICAgaWYg
KCRleHBlY3RlZEhhc2ggbmUgJGFjdHVhbEhhc2ggJiYgLWYgIiRleHBlY3RlZERpci8kYmFzZS0k
ZXhwZWN0ZWRUYWcucG5nIikgeworICAgICAgICAgICAgbXkgJGV4cGVjdGVkUE5HU2l6ZSA9IC1z
ICIkZXhwZWN0ZWREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyI7CiAgICAgICAgICAgICBteSAk
ZXhwZWN0ZWRQTkcgPSAiIjsKLSAgICAgICAgICAgIG9wZW4gRVhQRUNURURQTkcsICIkdGVzdERp
cmVjdG9yeS8kYmFzZS0kZXhwZWN0ZWRUYWcucG5nIjsKKyAgICAgICAgICAgIG9wZW4gRVhQRUNU
RURQTkcsICIkZXhwZWN0ZWREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyI7CiAgICAgICAgICAg
ICByZWFkKEVYUEVDVEVEUE5HLCAkZXhwZWN0ZWRQTkcsICRleHBlY3RlZFBOR1NpemUpOwogCiAg
ICAgICAgICAgICBwcmludCBESUZGT1VUICJDb250ZW50LWxlbmd0aDogJGFjdHVhbFBOR1NpemVc
biI7CkBAIC01NTAsMTUgKzU5MywxNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCRhY3R1YWxQTkdTaXplICYmICgkcmVzZXRSZXN1bHRzIHx8ICEtZiAiJHRlc3RE
aXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnBuZyIpKSB7Ci0gICAgICAgICAgICBvcGVuIEVY
UEVDVEVELCAiPiIsICIkdGVzdERpcmVjdG9yeS8kYmFzZS1leHBlY3RlZC5wbmciIG9yIGRpZSAi
Y291bGQgbm90IGNyZWF0ZSAkdGVzdERpcmVjdG9yeS8kYmFzZS1leHBlY3RlZC5wbmdcbiI7Cisg
ICAgICAgIGlmICgkYWN0dWFsUE5HU2l6ZSAmJiAoJHJlc2V0UmVzdWx0cyB8fCAhLWYgIiRleHBl
Y3RlZERpci8kYmFzZS0kZXhwZWN0ZWRUYWcucG5nIikpIHsKKyAgICAgICAgICAgIG1rcGF0aChj
YXRmaWxlKCRleHBlY3RlZERpciwgZGlybmFtZSgkYmFzZSkpKSBpZiAkdGVzdERpcmVjdG9yeSBu
ZSAkZXhwZWN0ZWREaXI7CisgICAgICAgICAgICBvcGVuIEVYUEVDVEVELCAiPiIsICIkZXhwZWN0
ZWREaXIvJGJhc2UtZXhwZWN0ZWQucG5nIiBvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUgJGV4cGVj
dGVkRGlyLyRiYXNlLWV4cGVjdGVkLnBuZ1xuIjsKICAgICAgICAgICAgIHByaW50IEVYUEVDVEVE
ICRhY3R1YWxQTkc7CiAgICAgICAgICAgICBjbG9zZSBFWFBFQ1RFRDsKICAgICAgICAgfQogCiAg
ICAgICAgICMgdXBkYXRlIHRoZSBleHBlY3RlZCBoYXNoIGlmIHRoZSBpbWFnZSBkaWZmIHNhaWQg
dGhhdCB0aGVyZSB3YXMgbm8gZGlmZmVyZW5jZQotICAgICAgICBpZiAoJGFjdHVhbEhhc2ggbmUg
IiIgJiYgKCRyZXNldFJlc3VsdHMgfHwgIS1mICIkdGVzdERpcmVjdG9yeS8kYmFzZS0kZXhwZWN0
ZWRUYWcuY2hlY2tzdW0iKSkgewotICAgICAgICAgICAgb3BlbiBFWFBFQ1RFRCwgIj4iLCAiJHRl
c3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLmNoZWNrc3VtIiBvciBkaWUgImNvdWxkIG5v
dCBjcmVhdGUgJHRlc3REaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLmNoZWNrc3VtXG4iOwor
ICAgICAgICBpZiAoJGFjdHVhbEhhc2ggbmUgIiIgJiYgKCRyZXNldFJlc3VsdHMgfHwgIS1mICIk
ZXhwZWN0ZWREaXIvJGJhc2UtJGV4cGVjdGVkVGFnLmNoZWNrc3VtIikpIHsKKyAgICAgICAgICAg
IG9wZW4gRVhQRUNURUQsICI+IiwgIiRleHBlY3RlZERpci8kYmFzZS0kZXhwZWN0ZWRUYWcuY2hl
Y2tzdW0iIG9yIGRpZSAiY291bGQgbm90IGNyZWF0ZSAkZXhwZWN0ZWREaXIvJGJhc2UtJGV4cGVj
dGVkVGFnLmNoZWNrc3VtXG4iOwogICAgICAgICAgICAgcHJpbnQgRVhQRUNURUQgJGFjdHVhbEhh
c2g7CiAgICAgICAgICAgICBjbG9zZSBFWFBFQ1RFRDsKICAgICAgICAgfQpAQCAtNjYwLDcgKzcw
NCw3IEBACiAgICAgICAgICAgICAgICAgcHJpbnQgIlxuIiB1bmxlc3MgJGF0TGluZVN0YXJ0Owog
ICAgICAgICAgICAgICAgIHByaW50ICIkdGVzdCAtPiAiOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcHJpbnQgIm5ld1xuIjsKKyAgICAgICAgICAgIHByaW50ICJuZXcgKHJlc3VsdHMgZ2Vu
ZXJhdGVkIGluICRleHBlY3RlZERpcilcbiI7CiAgICAgICAgICAgICAkYXRMaW5lU3RhcnQgPSAx
OwogICAgICAgICB9CiAgICAgfSBlbHNpZiAoJGFjdHVhbCBlcSAkZXhwZWN0ZWQgJiYgJGRpZmZS
ZXN1bHQgZXEgInBhc3NlZCIpIHsKQEAgLTk0NCw3ICs5ODgsNyBAQAogICAgICAgICAgICAgIl9v
YmpjX21zZ0ZvcndhcmQiLCAjIGxlYWsgaW4gTlNTcGVsbENoZWNrZXIsIFJhZGFyIDQ5NjUyNzgK
ICAgICAgICAgICAgICJnbGRHZXRTdHJpbmciICMgbGVhayBpbiBPcGVuR0wsIFJhZGFyIDUwMTM2
OTkKICAgICAgICAgKTsKLSAgICAgICAgIHB1c2ggQHR5cGVzVG9FeGNsdWRlLCAoCisgICAgICAg
IHB1c2ggQHR5cGVzVG9FeGNsdWRlLCAoCiAgICAgICAgICAgICAiVEhSRCIsICMgYnVnIGluICds
ZWFrcycsIFJhZGFyIDMzODc3ODMKICAgICAgICAgICAgICJEUkhUIiAjIGRpdHRvIChlbmRpYW4g
bGl0dGxlIGhhdGUgaSkKICAgICAgICAgKTsKQEAgLTEyNTgsNyArMTMwMiwxNCBAQAogc3ViIGV4
cGVjdGVkRGlyZWN0b3J5Rm9yVGVzdCgkKQogewogICAgIG15ICgkYmFzZSkgPSBAXzsKLSAgICBy
ZXR1cm4gKC1mICIkcGxhdGZvcm1UZXN0RGlyZWN0b3J5LyRiYXNlLSRleHBlY3RlZFRhZy50eHQi
KSA/ICRwbGF0Zm9ybVRlc3REaXJlY3RvcnkgOiAkZXhwZWN0ZWREaXJlY3Rvcnk7CisKKyAgICBm
b3JlYWNoIG15ICRsZXZlbCAoQHBsYXRmb3JtSGllcmFyY2h5KSB7CisgICAgICAgIHJldHVybiAk
bGV2ZWwgaWYgKC1mICIkbGV2ZWwvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIpOworICAgIH0KKwor
ICAgIHJldHVybiAkZXhwZWN0ZWREaXJlY3RvcnkgaWYgKC1mICIkZXhwZWN0ZWREaXJlY3Rvcnkv
JGJhc2UtJGV4cGVjdGVkVGFnLnR4dCIpOworCisgICAgcmV0dXJuICRwbGF0Zm9ybUhpZXJhcmNo
eVskI3BsYXRmb3JtSGllcmFyY2h5XTsKIH0KIAogc3ViIHByaW50RmFpbHVyZU1lc3NhZ2VGb3JU
ZXN0KCQkKQpAQCAtMTM4MSwzICsxNDMyLDE4IEBACiAKICAgICBzeXN0ZW0gImRpZmYgLXUgXCIk
dGVzdFJlc3VsdHNEaXJlY3RvcnkvJGJhc2UtJGV4cGVjdGVkVGFnLnR4dFwiIFwiJHRlc3RSZXN1
bHRzRGlyZWN0b3J5LyRiYXNlLSRhY3R1YWxUYWcudHh0XCIgPiBcIiR0ZXN0UmVzdWx0c0RpcmVj
dG9yeS8kYmFzZS0kZGlmZnNUYWcudHh0XCIiOwogfQorCitzdWIgYnVpbGRQbGF0Zm9ybUhpZXJh
cmNoeSgpCit7CisgICAgbWtwYXRoKCRwbGF0Zm9ybVRlc3REaXJlY3RvcnkpIGlmICgkcGxhdGZv
cm0gZXEgInVuZGVmaW5lZCIgJiYgIS1kICIkcGxhdGZvcm1UZXN0RGlyZWN0b3J5Iik7CisKKyAg
ICBteSBAcGxhdGZvcm1zID0gc3BsaXQoJy0nLCAkcGxhdGZvcm1UZXN0RGlyZWN0b3J5KTsKKyAg
ICBteSBAaGllcmFyY2h5OworICAgIGZvciAobXkgJGk9MDsgJGkgPCBAcGxhdGZvcm1zOyAkaSsr
KSB7CisgICAgICAgIG15ICRzY29wZWQgPSBqb2luKCctJywgQHBsYXRmb3Jtc1swLi4oJCNwbGF0
Zm9ybXMgLSAkaSldKTsKKyAgICAgICAgcHJpbnQgInNjb3BlZCA9ICRzY29wZWRcbiI7CisgICAg
ICAgIHB1c2goQGhpZXJhcmNoeSwgJHNjb3BlZCkgaWYgKC1kICRzY29wZWQpOworICAgIH0KKwor
ICAgIHJldHVybiBAaGllcmFyY2h5OworfQo=
</data>
<flag name="review"
          id="6674"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>