<?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>42089</bug_id>
          
          <creation_ts>2010-07-12 09:52:34 -0700</creation_ts>
          <short_desc>reported size of image is changed when page is zoomed in (or out)</short_desc>
          <delta_ts>2012-08-30 05:39:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</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="zebul666">zebul666</reporter>
          <assigned_to name="Peter Kasting">pkasting</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>nedyalko.andreev</cc>
    
    <cc>pkasting</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249890</commentid>
    <comment_count>0</comment_count>
      <attachid>61241</attachid>
    <who name="zebul666">zebul666</who>
    <bug_when>2010-07-12 09:52:34 -0700</bug_when>
    <thetext>Created attachment 61241
test case

The size of an image reported by javascript changes when you zoom the page with ctrl-mouse up down.

This has been tested on Safari 5.0 (7533.16) (windows xp sp3) and Chromium 5.0.375.99 (0) (linux)
Firefox 3.6.6 (linux) and Opera 10.60 (6386) (linux) and Internet Explorer 8 don&apos;t behave that way; i.e. there is no change in image property size (height, width).

I spotted the bug when using the canvas element and resizing (zooming in) with CTRL-mouse up on my page.

You can find attached img.html that shows the bug with only an image if you resize it with ctrl-mouse up. Also I found that the reported size is not even accurate because if I take a screenshot and use a pixel ruler, I found a size greater than the one reported every time.

the canvas.html shows the problem on a canvas element

but the root of the problem is the reported size of an image if zoomed in or out. Should it change or not ? If not it&apos;s a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268097</commentid>
    <comment_count>1</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-23 14:19:35 -0700</bug_when>
    <thetext>I&apos;m planning to fix this, as well as the problem where the wrong image size is reported in the page title when viewing a standalone zoomed image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268218</commentid>
    <comment_count>2</comment_count>
      <attachid>65187</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-23 17:36:20 -0700</bug_when>
    <thetext>Created attachment 65187
patch v1

This fixes the issues reported on this bug, and also reports the correct (unzoomed) image size in the page title when viewing a standalone image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268219</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-23 17:37:44 -0700</bug_when>
    <thetext>Hyatt - I wrote the testcase to also highlight how inaccurate this patch is for zoom factors &lt; 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268223</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-23 17:41:56 -0700</bug_when>
    <thetext>Attachment 65187 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/html/HTMLImageElement.cpp:276:  render_box is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/html/HTMLImageElement.cpp:299:  render_box is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268226</commentid>
    <comment_count>5</comment_count>
      <attachid>65190</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-23 17:44:21 -0700</bug_when>
    <thetext>Created attachment 65190
patch v1.1

Fix style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271625</commentid>
    <comment_count>6</comment_count>
      <attachid>65953</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-30 07:19:43 -0700</bug_when>
    <thetext>Created attachment 65953
patch v2.0

New testcase which prints PASS/FAIL as well as the zoom level on each oval.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271589</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-30 12:57:43 -0700</bug_when>
    <thetext>Patch appears to be missing expected results.  Otherwise, looks pretty good to me (although I&apos;m not a reviewer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271603</commentid>
    <comment_count>8</comment_count>
      <attachid>65949</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-30 13:14:45 -0700</bug_when>
    <thetext>Created attachment 65949
patch v1.2

Oops.  Forgot to svn add that file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271607</commentid>
    <comment_count>9</comment_count>
      <attachid>65949</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-30 13:20:50 -0700</bug_when>
    <thetext>Comment on attachment 65949
patch v1.2

Looks like the expected result is wrong, and it would be better with a script-based test that prints PASS or FAIL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271973</commentid>
    <comment_count>10</comment_count>
      <attachid>65953</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-31 01:01:36 -0700</bug_when>
    <thetext>Comment on attachment 65953
patch v2.0

Rejecting patch 65953 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--wait-for-httpd&apos;, &apos;--ignore-tests&apos;, &apos;compositing,media&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 20875 test cases.
fast/images/zoomed-img-size.html -&gt; failed

Exiting early after 1 failures. 8135 tests run.
186.55s total testing time

8134 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/3843193</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272546</commentid>
    <comment_count>11</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-31 18:05:53 -0700</bug_when>
    <thetext>The reason the current patch fails is because on Windows, the effective zoom of 5% is stored as 0.050000001, and when adjustForAbsoluteZoom() divides 1 by that, it gets a number very close to, but not quite, 20.

I don&apos;t know what happens on Mac.

I think it would be good to know why Mac and Windows differ.  But I also think adjustForAbsoluteZoom() should copy the rounding code from CSSPrimitiveValue::computeLengthInt() and bump values away from 0 by 0.01 before rounding.  I wonder how many layout tests this breaks :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272558</commentid>
    <comment_count>12</comment_count>
      <attachid>66156</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-31 18:25:40 -0700</bug_when>
    <thetext>Created attachment 66156
patch v3.0

Here&apos;s the patch with the rounding code added to adjustForAbsoluteZoom().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272879</commentid>
    <comment_count>13</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-01 10:30:10 -0700</bug_when>
    <thetext>James and I tried to step through Mac to see why it differed from Windows.  We found that the assembly instruction that did a single-precision floating point divide of &quot;1.0 / 0.050000007&quot; produced a result of &quot;20.0&quot;.  I don&apos;t know why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272886</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-01 10:36:59 -0700</bug_when>
    <thetext>$ cat test.cc
#include &lt;stdio.h&gt;
int main() {
    unsigned bitpattern = 0x3d4ccccd;
    float f = *reinterpret_cast&lt;float*&gt;(&amp;bitpattern);
    printf(&quot;f = %.15f, (int)(1.0f / f) = %d\n&quot;, f, (int)(1.0f / f));
    double d = f;
    printf(&quot;d = %.15f, (int)(1.0 / f) = %d\n&quot;, d, (int)(1.0 / d));
    return 0;
}
jamesr@jamesr:~$ ./test
f = 0.050000000745058, (int)(1.0f / f) = 20
d = 0.050000000745058, (int)(1.0 / f) = 19

so it appears that the divide is a single-precision FP divide on a mac (it compiles to a DIVSS in fact), but that it might be happening in double precision on other platforms.  Will have to check the disassembly on a platform that produces 19 to know for sure.

Either way, a fudge factor seems prudent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272890</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-01 10:40:53 -0700</bug_when>
    <thetext>Would be nice to share 

    result += result &lt; 0 ? -0.01 : +0.01;

    if (result &gt; INT_MAX || result &lt; INT_MIN)
        return 0;
    return static_cast&lt;int&gt;(result);

everywhere it occurs, perhaps with some templatized code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272952</commentid>
    <comment_count>16</comment_count>
      <attachid>66250</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-01 12:56:36 -0700</bug_when>
    <thetext>Created attachment 66250
patch v3.1

This factors out the rounding code into a template function so it can be shared among all callers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272970</commentid>
    <comment_count>17</comment_count>
      <attachid>66250</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-01 13:21:41 -0700</bug_when>
    <thetext>Comment on attachment 66250
patch v3.1

&gt; Index: WebCore/css/CSSPrimitiveValue.cpp
&gt; ===================================================================
&gt; --- WebCore/css/CSSPrimitiveValue.cpp	(revision 66611)
&gt; +++ WebCore/css/CSSPrimitiveValue.cpp	(working copy)
&gt; @@ -45,6 +45,15 @@ using namespace WTF;
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; +template&lt;typename T, T max, T min&gt; inline T roundForImpreciseConversion(double result)
&gt; +{
&gt; +    // Dimension calculations are imprecise, often resulting in values of e.g.
&gt; +    // 44.99998.  We need to go ahead and round if we&apos;re really close to the
&gt; +    // next integer value.
&gt; +    result += (result &lt; 0) ? -0.01 : +0.01;
&gt; +    return (result &gt; max || result &lt; min) ? 0 : static_cast&lt;T&gt;(result);
&gt; +}

Won&apos;t this cause template instantiation for each combination of, T, min and max? Maybe min and max would
be better as arguments to the function.

Also &apos;result&apos; is an odd name for an input paramter.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272978</commentid>
    <comment_count>18</comment_count>
      <attachid>66257</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-01 13:38:37 -0700</bug_when>
    <thetext>Created attachment 66257
patch v3.2

This changes the name &quot;result&quot; to &quot;value&quot;, which is what nearby functions use.

Template arguments will cause one extra instantiation of the function.  OTOH, they might result in better code (since the compiler will have the literal values to compare), and I think the callers read slightly more clearly than with function arguments.  (Stroustrup also tends to use template args for function bounds.)  So in the end I have a very weak preference for template args.  If you feel strongly, I&apos;ll change them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273208</commentid>
    <comment_count>19</comment_count>
      <attachid>66257</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-01 21:57:52 -0700</bug_when>
    <thetext>Comment on attachment 66257
patch v3.2

Rejecting patch 66257 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Simon Fraser&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
pp
Hunk #2 FAILED at 314.
1 out of 2 hunks FAILED -- saving rejects to file WebCore/css/CSSPrimitiveValue.cpp.rej
patching file WebCore/css/CSSPrimitiveValue.h
patching file WebCore/html/HTMLImageElement.cpp
patching file WebCore/loader/ImageDocument.cpp
patching file WebCore/rendering/RenderObject.h
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/images/zoomed-img-size-expected.txt
patching file LayoutTests/fast/images/zoomed-img-size.html

Full output: http://queues.webkit.org/results/3966030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273709</commentid>
    <comment_count>20</comment_count>
      <attachid>66448</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-02 18:03:30 -0700</bug_when>
    <thetext>Created attachment 66448
patch v3.3

Fixed to apply cleanly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273710</commentid>
    <comment_count>21</comment_count>
      <attachid>66449</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-02 18:04:06 -0700</bug_when>
    <thetext>Created attachment 66449
patch v3.4

Hmm, last upload incomplete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273824</commentid>
    <comment_count>22</comment_count>
      <attachid>66449</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-03 00:46:44 -0700</bug_when>
    <thetext>Comment on attachment 66449
patch v3.4

Rejecting patch 66449 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
Last 500 characters of output:
/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/i386/XSLTProcessor.o /Users/eseidel/Projects/CommitQueue/WebCore/xml/XSLTProcessor.cpp normal i386 c++ com.apple.compilers.gcc.4_2
	Distributed-CompileC /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/i386/HTMLParserScheduler.o /Users/eseidel/Projects/CommitQueue/WebCore/html/parser/HTMLParserScheduler.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(409 failures)


Full output: http://queues.webkit.org/results/3956088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274173</commentid>
    <comment_count>23</comment_count>
      <attachid>66540</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-03 14:20:04 -0700</bug_when>
    <thetext>Created attachment 66540
patch v3.5

Blind attempt at fixing strange compile error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274237</commentid>
    <comment_count>24</comment_count>
      <attachid>66540</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-03 16:04:51 -0700</bug_when>
    <thetext>Comment on attachment 66540
patch v3.5

Clearing flags on attachment: 66540

Committed r66776: &lt;http://trac.webkit.org/changeset/66776&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274238</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-03 16:04:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274315</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-03 18:18:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66776 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708526</commentid>
    <comment_count>27</comment_count>
    <who name="">nedyalko.andreev</who>
    <bug_when>2012-08-30 05:39:07 -0700</bug_when>
    <thetext>This appears to be broken again in version Chrome 21.0.1180.83
Just tried the image test case and zoom-out changes the width and height</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>61241</attachid>
            <date>2010-07-12 09:52:34 -0700</date>
            <delta_ts>2010-07-12 09:52:34 -0700</delta_ts>
            <desc>test case</desc>
            <filename>canvas_resize.tar.gz</filename>
            <type>application/x-gzip</type>
            <size>1412</size>
            <attacher name="zebul666">zebul666</attacher>
            
              <data encoding="base64">H4sIAFdHO0wAA+1Wb2gURxQ/W0u8i9ai0hZrYFxpLzH2/t9FuEto88fkMLHpeSYNCHazO8lN3dtd
dudyuRZLsR9MaaVQbCmSqOCHKlqF2vTPF79oUBQrQooikQppiyJaUuiH4of2zc7d5a4mkUKSfuj+
uNvZmTf7Zua9ee/3JFEdEM1dBjbJ29jrWBD4AHU+H2v9dWGr9flDIavNw+H3h/yRSCgYjMC4PxgK
hxwovDDbKUfGpKKBkMPUFJMSCc8+DxvmYmxocSGV+V8bEBWPrvbP7xrMwZE5/B/xhfP+DwYCgQj4
P+wP+B3IN7/bmBn/c/9/0LmtdYVrrQteV8TbmhPQvgj/9cuehCe59okbmiVmorXRceqHdXehE+ts
T7b8KH374M8HXee6us9195zvES+I+CLOXc3tG983PDE8MjFy+Nbh47ePn548PfrL6Nk7Z8fujV25
f+X61PXJPyZbP7/2kCmliW3bHa/8eqOPdXq3tjY7hp6qaoOOU2/rAUtXrmb/JY6Dw8/DYAWNd7RU
3KxYvnLds4cGe3QYqiLJN2iTlk5jlVpnaTKwSLGMsoSmUGu8o1P24AoY/yje/Gpy8+XR8a1Pv4eW
L+08NvT76k8f/rRj1c4jT4zsP/MucX29bKr7Z/Wz3MHnzlw+5Uy6Q/uPZicurBu/NNV86OZU+Kvx
D++PdtxvGg5dytWu/eLIxWNDBzaOrTqR6HrhxDcnu7q+7CFdd0+uObFmZ+W9yuiGgV03br3/29CV
pZt33Ti511z54JnvPr6tHv3r/J2r3ztMv/P1qrXiAbbheMu25lONb+5ddK9Pozz+Sbrfk6JpZX7X
eEz8Q+j/M/+HoWvH/2Igtr75taZkT2cLYn5vcMV444ylsChD64yZkkF0imhOx/UCxYPU+5YIV8Ya
FdgMZ19GlSjRVJTRZQjA6hr0Dht2DoBhGaOgeiRrUobFqacf0xYFs9fGXFyudjO5uyZqzZ91UgqT
/hR113iIqmKjLdnRDiqtTz1cxLq1qGTgMQqzRKapGfVZkhJ1Vt/StgceWaLKWtajqYomyjCLH5iJ
Y15uEWY6b952sV5Nzlk2hLhCRK4XmEoBmYbEXxnVCshrTdEbOhUsmhjxUEQyMXVFzPFkJlFDeTmt
wR2EJZGoykhSiLQ7v37Mq+dVsGdvhlLwBfcX7whIU60P6oWCi6JCw478x3xOw0tqr6lHY6YuqtZe
uSGFBjgZDD0itgxTlFoW0K3D80ODEayL9F/fbxtzozz/8958U8Bj8n8gECzk/2A4Uhdk+T8S8Nn5
fzEwH/mf5XmJDkZdJTm/2OkzxDRkyDKeICqh24s0wS/dXCRBsUkZSVjTSR+qzt9TmNekqWxPNVyV
E7YBih4RV7sDclGBM89JKs6ieFrsZ9lwWjCd3AvbLW4UTqAZ1aTeF0UkFoZHbe20iC3tkQ0xy1Uy
VZuQ38f+tWRjCTUVFrMIhTWliwM1FKkIyMHNZXs4/8CzuCmgCbZYYW/I6wVKwGBvmprmDlODrgi+
SxG13wT7qm6KwCoojU0TCuWM7irsvI8oynaaUzAsL2zYsmWLEHWhPAryBJYoqoYjwS/g44+CUWe3
zL+0C7cKHKeU3mUNm0jVKIJgzSE4UTAIlwhlce9uQj2FLzo0A2sDmNsAvs5gREyUNTQV2LcP5bQM
klIYaJNQpGUop1YR6WQQK8jIKNjwzEcdUlqGOJnPZqocrBCYpXAorRzywcEYl0WBgCzerRfA9ALi
i/AOMDGf24BivUa+qJi7FihcIagFEtZrsRaYqSApvViW5ZqSifbaDqso2aFvYnIV6TDZzN9NT7Eu
Kasnys0VDNp1gw0bNmzYsGHDhg0bNmzYsGHDhg0bNmwsBP4GsxW4NwAoAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65187</attachid>
            <date>2010-08-23 17:36:20 -0700</date>
            <delta_ts>2010-08-23 17:44:21 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>9469</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTg0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMjMgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcG9ydCBjb3JyZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9yIHpvb21lZCBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4OQor
CisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCisKKyAgICAg
ICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOiBSZXBvcnQgdW56b29tZWQgc2l6ZSB0byBz
Y3JpcHQgdGhhdCBxdWVyaWVzIGFuIGltYWdlJ3Mgd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5j
cHA6IFJlcG9ydCB1bnpvb21lZCBzaXplIGluIHRoZSBwYWdlIHRpdGxlIHdoZW4gdmlld2luZyBh
IHN0YW5kYWxvbmUgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50UGFyc2Vy
OjpmaW5pc2gpOgorCiAyMDEwLTA4LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NTgxNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDEwICsyNjQsOCBAQCBpbnQgSFRNTElt
YWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQCiAgICAgICAgICAgICByZXR1cm4gd2lkdGg7
CiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyB3aWR0aAot
ICAgICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBmbG9hdCB6
b29tRmFjdG9yID0gZG9jdW1lbnQoKS0+dmlldygpID8gZG9jdW1lbnQoKS0+dmlldygpLT5wYWdl
Wm9vbUZhY3RvcigpIDogMS4wZjsKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmlt
YWdlKCktPmltYWdlU2l6ZSh6b29tRmFjdG9yKS53aWR0aCgpOwotICAgICAgICB9CisgICAgICAg
IGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxv
YWRlci5pbWFnZSgpLT5pbWFnZVNpemUoMS4wZikud2lkdGgoKTsKICAgICB9CiAKICAgICBpZiAo
aWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQpAQCAtMjc1LDcgKzI3Myw4IEBAIGludCBIVE1MSW1h
Z2VFbGVtZW50Ojp3aWR0aChib29sIGlnbm9yZVAKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAgcmV0dXJuIHJlbmRlckJveCgpID8gcmVuZGVyQm94
KCktPmNvbnRlbnRXaWR0aCgpIDogMDsKKyAgICBSZW5kZXJCb3gqIHJlbmRlcl9ib3ggPSByZW5k
ZXJCb3goKTsKKyAgICByZXR1cm4gcmVuZGVyX2JveCA/IGFkanVzdEZvckFic29sdXRlWm9vbShy
ZW5kZXJfYm94LT5jb250ZW50V2lkdGgoKSwgcmVuZGVyX2JveCkgOiAwOwogfQogCiBpbnQgSFRN
TEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKSBjb25z
dApAQCAtMjg4LDEwICsyODcsOCBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wg
aWdub3JlCiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0OwogCiAgICAgICAgIC8vIGlmIHRoZSBp
bWFnZSBpcyBhdmFpbGFibGUsIHVzZSBpdHMgaGVpZ2h0Ci0gICAgICAgIGlmIChtX2ltYWdlTG9h
ZGVyLmltYWdlKCkpIHsKLSAgICAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBkb2N1bWVudCgp
LT52aWV3KCkgPyBkb2N1bWVudCgpLT52aWV3KCktPnBhZ2Vab29tRmFjdG9yKCkgOiAxLjBmOwot
ICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKHpvb21G
YWN0b3IpLmhlaWdodCgpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmlt
YWdlKCkpCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNp
emUoMS4wZikuaGVpZ2h0KCk7CiAgICAgfQogCiAgICAgaWYgKGlnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cykKQEAgLTI5OSw3ICsyOTYsOCBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJv
b2wgaWdub3JlCiAgICAgZWxzZQogICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsK
IAotICAgIHJldHVybiByZW5kZXJCb3goKSA/IHJlbmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkg
OiAwOworICAgIFJlbmRlckJveCogcmVuZGVyX2JveCA9IHJlbmRlckJveCgpOworICAgIHJldHVy
biByZW5kZXJfYm94ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKHJlbmRlcl9ib3gtPmNvbnRlbnRI
ZWlnaHQoKSwgcmVuZGVyX2JveCkgOiAwOwogfQogCiBpbnQgSFRNTEltYWdlRWxlbWVudDo6bmF0
dXJhbFdpZHRoKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCShyZXZpc2lv
biA2NTgxNSkKKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTIsNyArMTUyLDkgQEAgdm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2go
KQogCiAgICAgICAgIGNhY2hlZEltYWdlLT5zZXRSZXNwb25zZShkb2N1bWVudCgpLT5mcmFtZSgp
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKSk7CiAKLSAgICAgICAgSW50
U2l6ZSBzaXplID0gY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShwYWdlWm9vbUZhY3Rvcihkb2N1bWVu
dCgpKSk7CisgICAgICAgIC8vIFJlcG9ydCB0aGUgbmF0dXJhbCBpbWFnZSBzaXplIGluIHRoZSBw
YWdlIHRpdGxlLCByZWdhcmRsZXNzIG9mIHpvb20KKyAgICAgICAgLy8gbGV2ZWwuCisgICAgICAg
IEludFNpemUgc2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemUoMS4wZik7CiAgICAgICAgIGlm
IChzaXplLndpZHRoKCkpIHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIHRpdGxlLCB3ZSB1
c2UgdGhlIGRlY29kZWQgZmlsZW5hbWUgb2YgdGhlIHJlc291cmNlLCBmYWxsaW5nCiAgICAgICAg
ICAgICAvLyBiYWNrIG9uIHRoZSAoZGVjb2RlZCkgaG9zdG5hbWUgaWYgdGhlcmUgaXMgbm8gcGF0
aC4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY1ODQ3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDgtMjMgIFBldGVyIEthc3Rpbmcg
IDxwa2FzdGluZ0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcG9ydCBjb3JyZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9y
IHpvb21lZCBpbWFnZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjA4OQorCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5n
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDgtMjMgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGluZyBDaHJvbWl1bSBleHBlY3RhdGlvbnMuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICA8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKKyAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpIHsKKyAgICAgICAgZm9y
IChpID0gMDsgaSA8IDE1OyArK2kpIHsKKyAgICAgICAgICB2YXIgb3ZhbCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdvdmFsJyArIGkpOworICAgICAgICAgIHZhciB3aWR0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd3aWR0aCcgKyBpKTsKKyAgICAgICAgICB3aWR0aC5pbm5lckhUTUwg
PSBvdmFsLndpZHRoOworICAgICAgICAgIHZhciBoZWlnaHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaGVpZ2h0JyArIGkpOworICAgICAgICAgIGhlaWdodC5pbm5lckhUTUwgPSBvdmFsLmhl
aWdodDsKKyAgICAgICAgICB2YXIgc3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0
YXR1cycgKyBpKTsKKworICAgICAgICAgIHZhciB3aWR0aF9vayA9IG92YWwud2lkdGggPT0gMzc7
CisgICAgICAgICAgdmFyIGhlaWdodF9vayA9IG92YWwuaGVpZ2h0ID09IDMzOworICAgICAgICAg
IHdpZHRoLnN0eWxlLmNvbG9yID0gd2lkdGhfb2sgPyAiZ3JlZW4iIDogInJlZCI7CisgICAgICAg
ICAgaGVpZ2h0LnN0eWxlLmNvbG9yID0gaGVpZ2h0X29rID8gImdyZWVuIiA6ICJyZWQiOworICAg
ICAgICAgIHN0YXR1cy5pbm5lckhUTUwgPSAod2lkdGhfb2sgJiYgaGVpZ2h0X29rKSA/ICJPSyIg
OiAoIm9mZiBieSAiICsgTWF0aC5yb3VuZCgoTWF0aC5hYnMob3ZhbC53aWR0aCAtIDM3KSAvIDM3
KSAqIDEwMCkgKyAiJSwgIiArIE1hdGgucm91bmQoKE1hdGguYWJzKG92YWwuaGVpZ2h0IC0gMzMp
IC8gMzMpICogMTAwKSArICIlIik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHdpbmRvdy5v
bmxvYWQgPSB1cGRhdGU7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAg
PHA+SWRlYWxseSwgYWxsIG92YWxzIGJlbG93IHNob3VsZCBiZSByZXBvcnRlZCBhcyBoYXZpbmcg
d2lkdGg9MzcsIGhlaWdodD0zMy48L3A+CisgICAgPGltZyBpZD0ib3ZhbDAiIHNyYz0icmVzb3Vy
Y2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMSUiPgorICAgIDxwPm92YWwgMCB3aWR0aD08c3Bh
biBpZD0id2lkdGgwIj48L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDAiPjwvc3Bhbj4g
WzxzcGFuIGlkPSJzdGF0dXMwIj48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMSIgc3Jj
PSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAyJSI+CisgICAgPHA+b3ZhbCAxIHdp
ZHRoPTxzcGFuIGlkPSJ3aWR0aDEiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0MSI+
PC9zcGFuPiBbPHNwYW4gaWQ9InN0YXR1czEiPjwvc3Bhbj5dPC9wPgorICAgIDxpbWcgaWQ9Im92
YWwyIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDMlIj4KKyAgICA8cD5v
dmFsIDIgd2lkdGg9PHNwYW4gaWQ9IndpZHRoMiI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFuIGlkPSJo
ZWlnaHQyIj48L3NwYW4+IFs8c3BhbiBpZD0ic3RhdHVzMiI+PC9zcGFuPl08L3A+CisgICAgPGlt
ZyBpZD0ib3ZhbDMiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogNCUiPgor
ICAgIDxwPm92YWwgMyB3aWR0aD08c3BhbiBpZD0id2lkdGgzIj48L3NwYW4+LCBoZWlnaHQ9PHNw
YW4gaWQ9ImhlaWdodDMiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMzIj48L3NwYW4+XTwvcD4K
KyAgICA8aW1nIGlkPSJvdmFsNCIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29t
OiA1JSI+CisgICAgPHA+b3ZhbCA0IHdpZHRoPTxzcGFuIGlkPSJ3aWR0aDQiPjwvc3Bhbj4sIGhl
aWdodD08c3BhbiBpZD0iaGVpZ2h0NCI+PC9zcGFuPiBbPHNwYW4gaWQ9InN0YXR1czQiPjwvc3Bh
bj5dPC9wPgorICAgIDxpbWcgaWQ9Im92YWw1IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5
bGU9Inpvb206IDMwJSI+CisgICAgPHA+b3ZhbCA1IHdpZHRoPTxzcGFuIGlkPSJ3aWR0aDUiPjwv
c3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0NSI+PC9zcGFuPiBbPHNwYW4gaWQ9InN0YXR1
czUiPjwvc3Bhbj5dPC9wPgorICAgIDxpbWcgaWQ9Im92YWw2IiBzcmM9InJlc291cmNlcy9vdmFs
LnBuZyIgc3R5bGU9Inpvb206IDMzJSI+CisgICAgPHA+b3ZhbCA2IHdpZHRoPTxzcGFuIGlkPSJ3
aWR0aDYiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0NiI+PC9zcGFuPiBbPHNwYW4g
aWQ9InN0YXR1czYiPjwvc3Bhbj5dPC9wPgorICAgIDxpbWcgaWQ9Im92YWw3IiBzcmM9InJlc291
cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDUwJSI+CisgICAgPHA+b3ZhbCA3IHdpZHRoPTxz
cGFuIGlkPSJ3aWR0aDciPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0NyI+PC9zcGFu
PiBbPHNwYW4gaWQ9InN0YXR1czciPjwvc3Bhbj5dPC9wPgorICAgIDxpbWcgaWQ9Im92YWw4IiBz
cmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDcwJSI+CisgICAgPHA+b3ZhbCA4
IHdpZHRoPTxzcGFuIGlkPSJ3aWR0aDgiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0
OCI+PC9zcGFuPiBbPHNwYW4gaWQ9InN0YXR1czgiPjwvc3Bhbj5dPC9wPgorICAgIDxpbWcgaWQ9
Im92YWw5IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDEwMCUiPgorICAg
IDxwPm92YWwgOSB3aWR0aD08c3BhbiBpZD0id2lkdGg5Ij48L3NwYW4+LCBoZWlnaHQ9PHNwYW4g
aWQ9ImhlaWdodDkiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXM5Ij48L3NwYW4+XTwvcD4KKyAg
ICA8aW1nIGlkPSJvdmFsMTAiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTog
MTExJSI+CisgICAgPHA+b3ZhbCAxMCB3aWR0aD08c3BhbiBpZD0id2lkdGgxMCI+PC9zcGFuPiwg
aGVpZ2h0PTxzcGFuIGlkPSJoZWlnaHQxMCI+PC9zcGFuPiBbPHNwYW4gaWQ9InN0YXR1czEwIj48
L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMTEiIHNyYz0icmVzb3VyY2VzL292YWwucG5n
IiBzdHlsZT0iem9vbTogMTUwJSI+CisgICAgPHA+b3ZhbCAxMSB3aWR0aD08c3BhbiBpZD0id2lk
dGgxMSI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFuIGlkPSJoZWlnaHQxMSI+PC9zcGFuPiBbPHNwYW4g
aWQ9InN0YXR1czExIj48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMTIiIHNyYz0icmVz
b3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMzMzJSI+CisgICAgPHA+b3ZhbCAxMiB3aWR0
aD08c3BhbiBpZD0id2lkdGgxMiI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFuIGlkPSJoZWlnaHQxMiI+
PC9zcGFuPiBbPHNwYW4gaWQ9InN0YXR1czEyIj48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJv
dmFsMTMiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogNDAwJSI+CisgICAg
PHA+b3ZhbCAxMyB3aWR0aD08c3BhbiBpZD0id2lkdGgxMyI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFu
IGlkPSJoZWlnaHQxMyI+PC9zcGFuPiBbPHNwYW4gaWQ9InN0YXR1czEzIj48L3NwYW4+XTwvcD4K
KyAgICA8aW1nIGlkPSJvdmFsMTQiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9v
bTogMTIzNCUiPgorICAgIDxwPm92YWwgMTQgd2lkdGg9PHNwYW4gaWQ9IndpZHRoMTQiPjwvc3Bh
bj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0MTQiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMx
NCI+PC9zcGFuPl08L3A+CisgIDwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3Jlc291cmNlcy9vdmFsLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1h
cmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmcK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKCmlWQk9SdzBL
R2dvQUFBQU5TVWhFVWdBQUFDVUFBQUFoQ0FNQUFBQnAwWkluQUFBQUFYTlNSMElBcnM0YzZRQUFB
RHhRVEZSRjFXTzMKN3ZudVZzTldWOE5YV2NSWlljZGhaY2hsZWM5NWg5U0huTnljbmR5ZG45MmZx
ZUNwcitPdnRlVzF2dWkreGV2RnplM04xL0hYNC9YagpSNWpSK3dBQUFBRjBVazVUQUVEbTJHWUFB
QUFCWWt0SFJBQ0lCUjFJQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKClRVVUgy
Z2NNRHh3V25uaFpjQUFBQUIxcFZGaDBRMjl0YldWdWRBQUFBQUFBUTNKbFlYUmxaQ0IzYVhSb0lF
ZEpUVkJrTG1VSEFBQUEKakVsRVFWUTR5N1hVU3c2QUlBd0VVS2lJOGhPVis5OVZFbHlnQXAyTnMz
NXBDclFJOFZma2JwWjVtaGV6eTY0SlZDYzBqYU4zM01jYwoxTXJ4Uko3YThUV3kxSXZ0dFUzdFE1
dzB5bmtyR3FlZ3lLaUlsQ3JGRXF0U1ZodXJ0cXhXVnExWmFWYnByQlNyRkZ3TDZ3czdJM1pmCjJO
MkQ3NGpOQkRoZjJLeUNjdy91RUxpUDRHNmovOFRvejdrQWN6RUpVUjBhWVpRQUFBQUFTVVZPUks1
Q1lJST0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65190</attachid>
            <date>2010-08-23 17:44:21 -0700</date>
            <delta_ts>2010-08-30 13:14:45 -0700</delta_ts>
            <desc>patch v1.1</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>9413</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTg0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMjMgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcG9ydCBjb3JyZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9yIHpvb21lZCBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4OQor
CisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCisKKyAgICAg
ICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOiBSZXBvcnQgdW56b29tZWQgc2l6ZSB0byBz
Y3JpcHQgdGhhdCBxdWVyaWVzIGFuIGltYWdlJ3Mgd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5j
cHA6IFJlcG9ydCB1bnpvb21lZCBzaXplIGluIHRoZSBwYWdlIHRpdGxlIHdoZW4gdmlld2luZyBh
IHN0YW5kYWxvbmUgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50UGFyc2Vy
OjpmaW5pc2gpOgorCiAyMDEwLTA4LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NTgxNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDEwICsyNjQsOCBAQCBpbnQgSFRNTElt
YWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQCiAgICAgICAgICAgICByZXR1cm4gd2lkdGg7
CiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyB3aWR0aAot
ICAgICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBmbG9hdCB6
b29tRmFjdG9yID0gZG9jdW1lbnQoKS0+dmlldygpID8gZG9jdW1lbnQoKS0+dmlldygpLT5wYWdl
Wm9vbUZhY3RvcigpIDogMS4wZjsKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmlt
YWdlKCktPmltYWdlU2l6ZSh6b29tRmFjdG9yKS53aWR0aCgpOwotICAgICAgICB9CisgICAgICAg
IGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxv
YWRlci5pbWFnZSgpLT5pbWFnZVNpemUoMS4wZikud2lkdGgoKTsKICAgICB9CiAKICAgICBpZiAo
aWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQpAQCAtMjc1LDcgKzI3Myw4IEBAIGludCBIVE1MSW1h
Z2VFbGVtZW50Ojp3aWR0aChib29sIGlnbm9yZVAKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAgcmV0dXJuIHJlbmRlckJveCgpID8gcmVuZGVyQm94
KCktPmNvbnRlbnRXaWR0aCgpIDogMDsKKyAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgp
OworICAgIHJldHVybiBib3ggPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oYm94LT5jb250ZW50V2lk
dGgoKSwgYm94KSA6IDA7CiB9CiAKIGludCBIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBp
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMpIGNvbnN0CkBAIC0yODgsMTAgKzI4Nyw4IEBAIGludCBI
VE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmUKICAgICAgICAgICAgIHJldHVybiBo
ZWlnaHQ7CiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyBo
ZWlnaHQKLSAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkgewotICAgICAgICAgICAg
ZmxvYXQgem9vbUZhY3RvciA9IGRvY3VtZW50KCktPnZpZXcoKSA/IGRvY3VtZW50KCktPnZpZXco
KS0+cGFnZVpvb21GYWN0b3IoKSA6IDEuMGY7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxv
YWRlci5pbWFnZSgpLT5pbWFnZVNpemUoem9vbUZhY3RvcikuaGVpZ2h0KCk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBt
X2ltYWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6ZSgxLjBmKS5oZWlnaHQoKTsKICAgICB9CiAK
ICAgICBpZiAoaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQpAQCAtMjk5LDcgKzI5Niw4IEBAIGlu
dCBIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmUKICAgICBlbHNlCiAgICAgICAg
IGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAgcmV0dXJuIHJlbmRlckJveCgpID8g
cmVuZGVyQm94KCktPmNvbnRlbnRIZWlnaHQoKSA6IDA7CisgICAgUmVuZGVyQm94KiBib3ggPSBy
ZW5kZXJCb3goKTsKKyAgICByZXR1cm4gYm94ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKGJveC0+
Y29udGVudEhlaWdodCgpLCBib3gpIDogMDsKIH0KIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6Om5h
dHVyYWxXaWR0aCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNp
b24gNjU4MTUpCisrKyBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUyLDcgKzE1Miw5IEBAIHZvaWQgSW1hZ2VEb2N1bWVudFBhcnNlcjo6ZmluaXNo
KCkKIAogICAgICAgICBjYWNoZWRJbWFnZS0+c2V0UmVzcG9uc2UoZG9jdW1lbnQoKS0+ZnJhbWUo
KS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkpOwogCi0gICAgICAgIElu
dFNpemUgc2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemUocGFnZVpvb21GYWN0b3IoZG9jdW1l
bnQoKSkpOworICAgICAgICAvLyBSZXBvcnQgdGhlIG5hdHVyYWwgaW1hZ2Ugc2l6ZSBpbiB0aGUg
cGFnZSB0aXRsZSwgcmVnYXJkbGVzcyBvZiB6b29tCisgICAgICAgIC8vIGxldmVsLgorICAgICAg
ICBJbnRTaXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VTaXplKDEuMGYpOwogICAgICAgICBp
ZiAoc2l6ZS53aWR0aCgpKSB7CiAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSB0aXRsZSwgd2Ug
dXNlIHRoZSBkZWNvZGVkIGZpbGVuYW1lIG9mIHRoZSByZXNvdXJjZSwgZmFsbGluZwogICAgICAg
ICAgICAgLy8gYmFjayBvbiB0aGUgKGRlY29kZWQpIGhvc3RuYW1lIGlmIHRoZXJlIGlzIG5vIHBh
dGguCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTg0NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA4LTIzICBQZXRlciBLYXN0aW5n
ICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBvcnQgY29ycmVjdCAodW56b29tZWQpIGltYWdlIHNpemVzIGZv
ciB6b29tZWQgaW1hZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDIwODkKKworICAgICAgICAqIGZhc3QvaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBu
ZzogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWw6IEFk
ZGVkLgorCiAyMDEwLTA4LTIzICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRpbmcgQ2hyb21pdW0gZXhwZWN0YXRpb25zLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgICBmdW5jdGlvbiB1cGRhdGUoKSB7CisgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCAxNTsgKytpKSB7CisgICAgICAgICAgdmFyIG92YWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnb3ZhbCcgKyBpKTsKKyAgICAgICAgICB2YXIgd2lkdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnd2lkdGgnICsgaSk7CisgICAgICAgICAgd2lkdGguaW5uZXJIVE1M
ID0gb3ZhbC53aWR0aDsKKyAgICAgICAgICB2YXIgaGVpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2hlaWdodCcgKyBpKTsKKyAgICAgICAgICBoZWlnaHQuaW5uZXJIVE1MID0gb3ZhbC5o
ZWlnaHQ7CisgICAgICAgICAgdmFyIHN0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
dGF0dXMnICsgaSk7CisKKyAgICAgICAgICB2YXIgd2lkdGhfb2sgPSBvdmFsLndpZHRoID09IDM3
OworICAgICAgICAgIHZhciBoZWlnaHRfb2sgPSBvdmFsLmhlaWdodCA9PSAzMzsKKyAgICAgICAg
ICB3aWR0aC5zdHlsZS5jb2xvciA9IHdpZHRoX29rID8gImdyZWVuIiA6ICJyZWQiOworICAgICAg
ICAgIGhlaWdodC5zdHlsZS5jb2xvciA9IGhlaWdodF9vayA/ICJncmVlbiIgOiAicmVkIjsKKyAg
ICAgICAgICBzdGF0dXMuaW5uZXJIVE1MID0gKHdpZHRoX29rICYmIGhlaWdodF9vaykgPyAiT0si
IDogKCJvZmYgYnkgIiArIE1hdGgucm91bmQoKE1hdGguYWJzKG92YWwud2lkdGggLSAzNykgLyAz
NykgKiAxMDApICsgIiUsICIgKyBNYXRoLnJvdW5kKChNYXRoLmFicyhvdmFsLmhlaWdodCAtIDMz
KSAvIDMzKSAqIDEwMCkgKyAiJSIpOworICAgICAgICB9CisgICAgICB9CisgICAgICB3aW5kb3cu
b25sb2FkID0gdXBkYXRlOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAg
IDxwPklkZWFsbHksIGFsbCBvdmFscyBiZWxvdyBzaG91bGQgYmUgcmVwb3J0ZWQgYXMgaGF2aW5n
IHdpZHRoPTM3LCBoZWlnaHQ9MzMuPC9wPgorICAgIDxpbWcgaWQ9Im92YWwwIiBzcmM9InJlc291
cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDElIj4KKyAgICA8cD5vdmFsIDAgd2lkdGg9PHNw
YW4gaWQ9IndpZHRoMCI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFuIGlkPSJoZWlnaHQwIj48L3NwYW4+
IFs8c3BhbiBpZD0ic3RhdHVzMCI+PC9zcGFuPl08L3A+CisgICAgPGltZyBpZD0ib3ZhbDEiIHNy
Yz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMiUiPgorICAgIDxwPm92YWwgMSB3
aWR0aD08c3BhbiBpZD0id2lkdGgxIj48L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDEi
Pjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMxIj48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJv
dmFsMiIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAzJSI+CisgICAgPHA+
b3ZhbCAyIHdpZHRoPTxzcGFuIGlkPSJ3aWR0aDIiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0i
aGVpZ2h0MiI+PC9zcGFuPiBbPHNwYW4gaWQ9InN0YXR1czIiPjwvc3Bhbj5dPC9wPgorICAgIDxp
bWcgaWQ9Im92YWwzIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQlIj4K
KyAgICA8cD5vdmFsIDMgd2lkdGg9PHNwYW4gaWQ9IndpZHRoMyI+PC9zcGFuPiwgaGVpZ2h0PTxz
cGFuIGlkPSJoZWlnaHQzIj48L3NwYW4+IFs8c3BhbiBpZD0ic3RhdHVzMyI+PC9zcGFuPl08L3A+
CisgICAgPGltZyBpZD0ib3ZhbDQiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9v
bTogNSUiPgorICAgIDxwPm92YWwgNCB3aWR0aD08c3BhbiBpZD0id2lkdGg0Ij48L3NwYW4+LCBo
ZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDQiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXM0Ij48L3Nw
YW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNSIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0
eWxlPSJ6b29tOiAzMCUiPgorICAgIDxwPm92YWwgNSB3aWR0aD08c3BhbiBpZD0id2lkdGg1Ij48
L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDUiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0
dXM1Ij48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNiIgc3JjPSJyZXNvdXJjZXMvb3Zh
bC5wbmciIHN0eWxlPSJ6b29tOiAzMyUiPgorICAgIDxwPm92YWwgNiB3aWR0aD08c3BhbiBpZD0i
d2lkdGg2Ij48L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDYiPjwvc3Bhbj4gWzxzcGFu
IGlkPSJzdGF0dXM2Ij48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNyIgc3JjPSJyZXNv
dXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA1MCUiPgorICAgIDxwPm92YWwgNyB3aWR0aD08
c3BhbiBpZD0id2lkdGg3Ij48L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDciPjwvc3Bh
bj4gWzxzcGFuIGlkPSJzdGF0dXM3Ij48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsOCIg
c3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA3MCUiPgorICAgIDxwPm92YWwg
OCB3aWR0aD08c3BhbiBpZD0id2lkdGg4Ij48L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdo
dDgiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXM4Ij48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlk
PSJvdmFsOSIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxMDAlIj4KKyAg
ICA8cD5vdmFsIDkgd2lkdGg9PHNwYW4gaWQ9IndpZHRoOSI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFu
IGlkPSJoZWlnaHQ5Ij48L3NwYW4+IFs8c3BhbiBpZD0ic3RhdHVzOSI+PC9zcGFuPl08L3A+Cisg
ICAgPGltZyBpZD0ib3ZhbDEwIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206
IDExMSUiPgorICAgIDxwPm92YWwgMTAgd2lkdGg9PHNwYW4gaWQ9IndpZHRoMTAiPjwvc3Bhbj4s
IGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0MTAiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMxMCI+
PC9zcGFuPl08L3A+CisgICAgPGltZyBpZD0ib3ZhbDExIiBzcmM9InJlc291cmNlcy9vdmFsLnBu
ZyIgc3R5bGU9Inpvb206IDE1MCUiPgorICAgIDxwPm92YWwgMTEgd2lkdGg9PHNwYW4gaWQ9Indp
ZHRoMTEiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0MTEiPjwvc3Bhbj4gWzxzcGFu
IGlkPSJzdGF0dXMxMSI+PC9zcGFuPl08L3A+CisgICAgPGltZyBpZD0ib3ZhbDEyIiBzcmM9InJl
c291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDMzMyUiPgorICAgIDxwPm92YWwgMTIgd2lk
dGg9PHNwYW4gaWQ9IndpZHRoMTIiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0MTIi
Pjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMxMiI+PC9zcGFuPl08L3A+CisgICAgPGltZyBpZD0i
b3ZhbDEzIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQwMCUiPgorICAg
IDxwPm92YWwgMTMgd2lkdGg9PHNwYW4gaWQ9IndpZHRoMTMiPjwvc3Bhbj4sIGhlaWdodD08c3Bh
biBpZD0iaGVpZ2h0MTMiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMxMyI+PC9zcGFuPl08L3A+
CisgICAgPGltZyBpZD0ib3ZhbDE0IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpv
b206IDEyMzQlIj4KKyAgICA8cD5vdmFsIDE0IHdpZHRoPTxzcGFuIGlkPSJ3aWR0aDE0Ij48L3Nw
YW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDE0Ij48L3NwYW4+IFs8c3BhbiBpZD0ic3RhdHVz
MTQiPjwvc3Bhbj5dPC9wPgorICA8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBpbWFnZS9wbmcKCgppVkJPUncw
S0dnb0FBQUFOU1VoRVVnQUFBQ1VBQUFBaENBTUFBQUJwMFpJbkFBQUFBWE5TUjBJQXJzNGM2UUFB
QUR4UVRGUkYxV08zCjd2bnVWc05XVjhOWFdjUlpZY2RoWmNobGVjOTVoOVNIbk55Y25keWRuOTJm
cWVDcHIrT3Z0ZVcxdnVpK3hldkZ6ZTNOMS9IWDQvWGoKUjVqUit3QUFBQUYwVWs1VEFFRG0yR1lB
QUFBQllrdEhSQUNJQlIxSUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSgpUVVVI
MmdjTUR4d1dubmhaY0FBQUFCMXBWRmgwUTI5dGJXVnVkQUFBQUFBQVEzSmxZWFJsWkNCM2FYUm9J
RWRKVFZCa0xtVUhBQUFBCmpFbEVRVlE0eTdYVVN3NkFJQXdFVUtpSThoT1YrOTlWRWx5Z0FwMk5z
MzVwQ3JRSThWZmticFo1bWhlenk2NEpWQ2MwamFOMzNNY2MKMU1yeFJKN2E4VFd5MUl2dHRVM3RR
NXcweW5rckdxZWd5S2lJbENyRkVxdFNWaHVydHF4V1ZxMVphVmJwckJTckZGd0w2d3M3STNaZgoy
TjJENzRqTkJEaGYyS3lDY3cvdUVMaVA0RzZqLzhUb3o3a0FjekVKVVIwYVlaUUFBQUFBU1VWT1JL
NUNZSUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65949</attachid>
            <date>2010-08-30 13:14:45 -0700</date>
            <delta_ts>2010-08-30 14:19:43 -0700</delta_ts>
            <desc>patch v1.2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10712</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjQwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMzAgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcG9ydCBjb3JyZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9yIHpvb21lZCBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4OQor
CisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCisKKyAgICAg
ICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOiBSZXBvcnQgdW56b29tZWQgc2l6ZSB0byBz
Y3JpcHQgdGhhdCBxdWVyaWVzIGFuIGltYWdlJ3Mgd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5j
cHA6IFJlcG9ydCB1bnpvb21lZCBzaXplIGluIHRoZSBwYWdlIHRpdGxlIHdoZW4gdmlld2luZyBh
IHN0YW5kYWxvbmUgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50UGFyc2Vy
OjpmaW5pc2gpOgorCiAyMDEwLTA4LTMwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAkocmV2aXNpb24gNjY0MDIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NywxMCArMjY3LDggQEAgaW50IEhUTUxJbWFn
ZUVsZW1lbnQ6OndpZHRoKGJvb2wgaWdub3JlUAogICAgICAgICAgICAgcmV0dXJuIHdpZHRoOwog
CiAgICAgICAgIC8vIGlmIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVzZSBpdHMgd2lkdGgKLSAg
ICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkgewotICAgICAgICAgICAgZmxvYXQgem9v
bUZhY3RvciA9IGRvY3VtZW50KCktPnZpZXcoKSA/IGRvY3VtZW50KCktPnZpZXcoKS0+cGFnZVpv
b21GYWN0b3IoKSA6IDEuMGY7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFn
ZSgpLT5pbWFnZVNpemUoem9vbUZhY3Rvcikud2lkdGgoKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VMb2Fk
ZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKDEuMGYpLndpZHRoKCk7CiAgICAgfQogCiAgICAgaWYgKGln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKQEAgLTI3OCw3ICsyNzYsOCBAQCBpbnQgSFRNTEltYWdl
RWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQCiAgICAgZWxzZQogICAgICAgICBkb2N1bWVudCgp
LT51cGRhdGVMYXlvdXQoKTsKIAotICAgIHJldHVybiByZW5kZXJCb3goKSA/IHJlbmRlckJveCgp
LT5jb250ZW50V2lkdGgoKSA6IDA7CisgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsK
KyAgICByZXR1cm4gYm94ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKGJveC0+Y29udGVudFdpZHRo
KCksIGJveCkgOiAwOwogfQogCiBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKSBjb25zdApAQCAtMjkxLDEwICsyOTAsOCBAQCBpbnQgSFRN
TEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlCiAgICAgICAgICAgICByZXR1cm4gaGVp
Z2h0OwogCiAgICAgICAgIC8vIGlmIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVzZSBpdHMgaGVp
Z2h0Ci0gICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpIHsKLSAgICAgICAgICAgIGZs
b2F0IHpvb21GYWN0b3IgPSBkb2N1bWVudCgpLT52aWV3KCkgPyBkb2N1bWVudCgpLT52aWV3KCkt
PnBhZ2Vab29tRmFjdG9yKCkgOiAxLjBmOwotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VMb2Fk
ZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKHpvb21GYWN0b3IpLmhlaWdodCgpOwotICAgICAgICB9Cisg
ICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gbV9p
bWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNpemUoMS4wZikuaGVpZ2h0KCk7CiAgICAgfQogCiAg
ICAgaWYgKGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKQEAgLTMwMiw3ICsyOTksOCBAQCBpbnQg
SFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlCiAgICAgZWxzZQogICAgICAgICBk
b2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKIAotICAgIHJldHVybiByZW5kZXJCb3goKSA/IHJl
bmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkgOiAwOworICAgIFJlbmRlckJveCogYm94ID0gcmVu
ZGVyQm94KCk7CisgICAgcmV0dXJuIGJveCA/IGFkanVzdEZvckFic29sdXRlWm9vbShib3gtPmNv
bnRlbnRIZWlnaHQoKSwgYm94KSA6IDA7CiB9CiAKIGludCBIVE1MSW1hZ2VFbGVtZW50OjpuYXR1
cmFsV2lkdGgoKSBjb25zdApJbmRleDogV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHJldmlzaW9u
IDY2NDAyKQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Miw3ICsxNTIsOSBAQCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgp
CiAKICAgICAgICAgY2FjaGVkSW1hZ2UtPnNldFJlc3BvbnNlKGRvY3VtZW50KCktPmZyYW1lKCkt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpKTsKIAotICAgICAgICBJbnRT
aXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VTaXplKHBhZ2Vab29tRmFjdG9yKGRvY3VtZW50
KCkpKTsKKyAgICAgICAgLy8gUmVwb3J0IHRoZSBuYXR1cmFsIGltYWdlIHNpemUgaW4gdGhlIHBh
Z2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Ygem9vbQorICAgICAgICAvLyBsZXZlbC4KKyAgICAgICAg
SW50U2l6ZSBzaXplID0gY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZSgxLjBmKTsKICAgICAgICAgaWYg
KHNpemUud2lkdGgoKSkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgdGl0bGUsIHdlIHVz
ZSB0aGUgZGVjb2RlZCBmaWxlbmFtZSBvZiB0aGUgcmVzb3VyY2UsIGZhbGxpbmcKICAgICAgICAg
ICAgIC8vIGJhY2sgb24gdGhlIChkZWNvZGVkKSBob3N0bmFtZSBpZiB0aGVyZSBpcyBubyBwYXRo
LgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNjY0MDMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOC0zMCAgUGV0ZXIgS2FzdGluZyAg
PHBrYXN0aW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVwb3J0IGNvcnJlY3QgKHVuem9vbWVkKSBpbWFnZSBzaXplcyBmb3Ig
em9vbWVkIGltYWdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMDg5CisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmc6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sOiBB
ZGRlZC4KKwogMjAxMC0wOC0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKK0lkZWFsbHksIGFsbCBvdmFscyBiZWxvdyBz
aG91bGQgYmUgcmVwb3J0ZWQgYXMgaGF2aW5nIHdpZHRoPTM3LCBoZWlnaHQ9MzMuCisKKworb3Zh
bCAwIHdpZHRoPTEwMCwgaGVpZ2h0PTEwMCBbb2ZmIGJ5IDE3MCUsIDIwMyVdCisKKworb3ZhbCAx
IHdpZHRoPTUwLCBoZWlnaHQ9NTAgW29mZiBieSAzNSUsIDUyJV0KKworCitvdmFsIDIgd2lkdGg9
MzMsIGhlaWdodD0zMyBbb2ZmIGJ5IDExJSwgMCVdCisKKworb3ZhbCAzIHdpZHRoPTI1LCBoZWln
aHQ9MjUgW29mZiBieSAzMiUsIDI0JV0KKworCitvdmFsIDQgd2lkdGg9MTksIGhlaWdodD0xOSBb
b2ZmIGJ5IDQ5JSwgNDIlXQorCisKK292YWwgNSB3aWR0aD0zNiwgaGVpZ2h0PTI5IFtvZmYgYnkg
MyUsIDEyJV0KKworCitvdmFsIDYgd2lkdGg9MzYsIGhlaWdodD0zMCBbb2ZmIGJ5IDMlLCA5JV0K
KworCitvdmFsIDcgd2lkdGg9MzYsIGhlaWdodD0zMiBbb2ZmIGJ5IDMlLCAzJV0KKworCitvdmFs
IDggd2lkdGg9MzUsIGhlaWdodD0zMiBbb2ZmIGJ5IDUlLCAzJV0KKworCitvdmFsIDkgd2lkdGg9
MzcsIGhlaWdodD0zMyBbT0tdCisKKworb3ZhbCAxMCB3aWR0aD0zNywgaGVpZ2h0PTMzIFtPS10K
KworCitvdmFsIDExIHdpZHRoPTM3LCBoZWlnaHQ9MzMgW09LXQorCisKK292YWwgMTIgd2lkdGg9
MzcsIGhlaWdodD0zMyBbT0tdCisKKworb3ZhbCAxMyB3aWR0aD0zNywgaGVpZ2h0PTMzIFtPS10K
KworCitvdmFsIDE0IHdpZHRoPTM3LCBoZWlnaHQ9MzMgW09LXQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pv
b21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFi
bGUKICAgKyAqCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+Cisg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgICBmdW5jdGlvbiB1cGRhdGUoKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkg
PCAxNTsgKytpKSB7CisgICAgICAgICAgdmFyIG92YWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnb3ZhbCcgKyBpKTsKKyAgICAgICAgICB2YXIgd2lkdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnd2lkdGgnICsgaSk7CisgICAgICAgICAgd2lkdGguaW5uZXJIVE1MID0gb3ZhbC53aWR0
aDsKKyAgICAgICAgICB2YXIgaGVpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlaWdo
dCcgKyBpKTsKKyAgICAgICAgICBoZWlnaHQuaW5uZXJIVE1MID0gb3ZhbC5oZWlnaHQ7CisgICAg
ICAgICAgdmFyIHN0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0dXMnICsgaSk7
CisKKyAgICAgICAgICB2YXIgd2lkdGhfb2sgPSBvdmFsLndpZHRoID09IDM3OworICAgICAgICAg
IHZhciBoZWlnaHRfb2sgPSBvdmFsLmhlaWdodCA9PSAzMzsKKyAgICAgICAgICB3aWR0aC5zdHls
ZS5jb2xvciA9IHdpZHRoX29rID8gImdyZWVuIiA6ICJyZWQiOworICAgICAgICAgIGhlaWdodC5z
dHlsZS5jb2xvciA9IGhlaWdodF9vayA/ICJncmVlbiIgOiAicmVkIjsKKyAgICAgICAgICBzdGF0
dXMuaW5uZXJIVE1MID0gKHdpZHRoX29rICYmIGhlaWdodF9vaykgPyAiT0siIDogKCJvZmYgYnkg
IiArIE1hdGgucm91bmQoKE1hdGguYWJzKG92YWwud2lkdGggLSAzNykgLyAzNykgKiAxMDApICsg
IiUsICIgKyBNYXRoLnJvdW5kKChNYXRoLmFicyhvdmFsLmhlaWdodCAtIDMzKSAvIDMzKSAqIDEw
MCkgKyAiJSIpOworICAgICAgICB9CisgICAgICB9CisgICAgICB3aW5kb3cub25sb2FkID0gdXBk
YXRlOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPklkZWFsbHks
IGFsbCBvdmFscyBiZWxvdyBzaG91bGQgYmUgcmVwb3J0ZWQgYXMgaGF2aW5nIHdpZHRoPTM3LCBo
ZWlnaHQ9MzMuPC9wPgorICAgIDxpbWcgaWQ9Im92YWwwIiBzcmM9InJlc291cmNlcy9vdmFsLnBu
ZyIgc3R5bGU9Inpvb206IDElIj4KKyAgICA8cD5vdmFsIDAgd2lkdGg9PHNwYW4gaWQ9IndpZHRo
MCI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFuIGlkPSJoZWlnaHQwIj48L3NwYW4+IFs8c3BhbiBpZD0i
c3RhdHVzMCI+PC9zcGFuPl08L3A+CisgICAgPGltZyBpZD0ib3ZhbDEiIHNyYz0icmVzb3VyY2Vz
L292YWwucG5nIiBzdHlsZT0iem9vbTogMiUiPgorICAgIDxwPm92YWwgMSB3aWR0aD08c3BhbiBp
ZD0id2lkdGgxIj48L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDEiPjwvc3Bhbj4gWzxz
cGFuIGlkPSJzdGF0dXMxIj48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMiIgc3JjPSJy
ZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAzJSI+CisgICAgPHA+b3ZhbCAyIHdpZHRo
PTxzcGFuIGlkPSJ3aWR0aDIiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0MiI+PC9z
cGFuPiBbPHNwYW4gaWQ9InN0YXR1czIiPjwvc3Bhbj5dPC9wPgorICAgIDxpbWcgaWQ9Im92YWwz
IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQlIj4KKyAgICA8cD5vdmFs
IDMgd2lkdGg9PHNwYW4gaWQ9IndpZHRoMyI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFuIGlkPSJoZWln
aHQzIj48L3NwYW4+IFs8c3BhbiBpZD0ic3RhdHVzMyI+PC9zcGFuPl08L3A+CisgICAgPGltZyBp
ZD0ib3ZhbDQiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogNSUiPgorICAg
IDxwPm92YWwgNCB3aWR0aD08c3BhbiBpZD0id2lkdGg0Ij48L3NwYW4+LCBoZWlnaHQ9PHNwYW4g
aWQ9ImhlaWdodDQiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXM0Ij48L3NwYW4+XTwvcD4KKyAg
ICA8aW1nIGlkPSJvdmFsNSIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAz
MCUiPgorICAgIDxwPm92YWwgNSB3aWR0aD08c3BhbiBpZD0id2lkdGg1Ij48L3NwYW4+LCBoZWln
aHQ9PHNwYW4gaWQ9ImhlaWdodDUiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXM1Ij48L3NwYW4+
XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNiIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxl
PSJ6b29tOiAzMyUiPgorICAgIDxwPm92YWwgNiB3aWR0aD08c3BhbiBpZD0id2lkdGg2Ij48L3Nw
YW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDYiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXM2
Ij48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNyIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5w
bmciIHN0eWxlPSJ6b29tOiA1MCUiPgorICAgIDxwPm92YWwgNyB3aWR0aD08c3BhbiBpZD0id2lk
dGg3Ij48L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDciPjwvc3Bhbj4gWzxzcGFuIGlk
PSJzdGF0dXM3Ij48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsOCIgc3JjPSJyZXNvdXJj
ZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA3MCUiPgorICAgIDxwPm92YWwgOCB3aWR0aD08c3Bh
biBpZD0id2lkdGg4Ij48L3NwYW4+LCBoZWlnaHQ9PHNwYW4gaWQ9ImhlaWdodDgiPjwvc3Bhbj4g
WzxzcGFuIGlkPSJzdGF0dXM4Ij48L3NwYW4+XTwvcD4KKyAgICA8aW1nIGlkPSJvdmFsOSIgc3Jj
PSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxMDAlIj4KKyAgICA8cD5vdmFsIDkg
d2lkdGg9PHNwYW4gaWQ9IndpZHRoOSI+PC9zcGFuPiwgaGVpZ2h0PTxzcGFuIGlkPSJoZWlnaHQ5
Ij48L3NwYW4+IFs8c3BhbiBpZD0ic3RhdHVzOSI+PC9zcGFuPl08L3A+CisgICAgPGltZyBpZD0i
b3ZhbDEwIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDExMSUiPgorICAg
IDxwPm92YWwgMTAgd2lkdGg9PHNwYW4gaWQ9IndpZHRoMTAiPjwvc3Bhbj4sIGhlaWdodD08c3Bh
biBpZD0iaGVpZ2h0MTAiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMxMCI+PC9zcGFuPl08L3A+
CisgICAgPGltZyBpZD0ib3ZhbDExIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpv
b206IDE1MCUiPgorICAgIDxwPm92YWwgMTEgd2lkdGg9PHNwYW4gaWQ9IndpZHRoMTEiPjwvc3Bh
bj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0MTEiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMx
MSI+PC9zcGFuPl08L3A+CisgICAgPGltZyBpZD0ib3ZhbDEyIiBzcmM9InJlc291cmNlcy9vdmFs
LnBuZyIgc3R5bGU9Inpvb206IDMzMyUiPgorICAgIDxwPm92YWwgMTIgd2lkdGg9PHNwYW4gaWQ9
IndpZHRoMTIiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0MTIiPjwvc3Bhbj4gWzxz
cGFuIGlkPSJzdGF0dXMxMiI+PC9zcGFuPl08L3A+CisgICAgPGltZyBpZD0ib3ZhbDEzIiBzcmM9
InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQwMCUiPgorICAgIDxwPm92YWwgMTMg
d2lkdGg9PHNwYW4gaWQ9IndpZHRoMTMiPjwvc3Bhbj4sIGhlaWdodD08c3BhbiBpZD0iaGVpZ2h0
MTMiPjwvc3Bhbj4gWzxzcGFuIGlkPSJzdGF0dXMxMyI+PC9zcGFuPl08L3A+CisgICAgPGltZyBp
ZD0ib3ZhbDE0IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDEyMzQlIj4K
KyAgICA8cD5vdmFsIDE0IHdpZHRoPTxzcGFuIGlkPSJ3aWR0aDE0Ij48L3NwYW4+LCBoZWlnaHQ9
PHNwYW4gaWQ9ImhlaWdodDE0Ij48L3NwYW4+IFs8c3BhbiBpZD0ic3RhdHVzMTQiPjwvc3Bhbj5d
PC9wPgorICA8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJj
ZXMvb3ZhbC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBpbWFnZS9wbmcKCgppVkJPUncwS0dnb0FBQUFOU1Vo
RVVnQUFBQ1VBQUFBaENBTUFBQUJwMFpJbkFBQUFBWE5TUjBJQXJzNGM2UUFBQUR4UVRGUkYxV08z
Cjd2bnVWc05XVjhOWFdjUlpZY2RoWmNobGVjOTVoOVNIbk55Y25keWRuOTJmcWVDcHIrT3Z0ZVcx
dnVpK3hldkZ6ZTNOMS9IWDQvWGoKUjVqUit3QUFBQUYwVWs1VEFFRG0yR1lBQUFBQllrdEhSQUNJ
QlIxSUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSgpUVVVIMmdjTUR4d1dubmha
Y0FBQUFCMXBWRmgwUTI5dGJXVnVkQUFBQUFBQVEzSmxZWFJsWkNCM2FYUm9JRWRKVFZCa0xtVUhB
QUFBCmpFbEVRVlE0eTdYVVN3NkFJQXdFVUtpSThoT1YrOTlWRWx5Z0FwMk5zMzVwQ3JRSThWZmti
cFo1bWhlenk2NEpWQ2MwamFOMzNNY2MKMU1yeFJKN2E4VFd5MUl2dHRVM3RRNXcweW5rckdxZWd5
S2lJbENyRkVxdFNWaHVydHF4V1ZxMVphVmJwckJTckZGd0w2d3M3STNaZgoyTjJENzRqTkJEaGYy
S3lDY3cvdUVMaVA0RzZqLzhUb3o3a0FjekVKVVIwYVlaUUFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>
<flag name="review"
          id="54825"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="54826"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65953</attachid>
            <date>2010-08-30 14:19:43 -0700</date>
            <delta_ts>2010-08-31 18:25:40 -0700</delta_ts>
            <desc>patch v2.0</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10395</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjQwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMzAgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcG9ydCBjb3JyZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9yIHpvb21lZCBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4OQor
CisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCisKKyAgICAg
ICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOiBSZXBvcnQgdW56b29tZWQgc2l6ZSB0byBz
Y3JpcHQgdGhhdCBxdWVyaWVzIGFuIGltYWdlJ3Mgd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5j
cHA6IFJlcG9ydCB1bnpvb21lZCBzaXplIGluIHRoZSBwYWdlIHRpdGxlIHdoZW4gdmlld2luZyBh
IHN0YW5kYWxvbmUgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50UGFyc2Vy
OjpmaW5pc2gpOgorCiAyMDEwLTA4LTMwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAkocmV2aXNpb24gNjY0MDIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NywxMCArMjY3LDggQEAgaW50IEhUTUxJbWFn
ZUVsZW1lbnQ6OndpZHRoKGJvb2wgaWdub3JlUAogICAgICAgICAgICAgcmV0dXJuIHdpZHRoOwog
CiAgICAgICAgIC8vIGlmIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVzZSBpdHMgd2lkdGgKLSAg
ICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkgewotICAgICAgICAgICAgZmxvYXQgem9v
bUZhY3RvciA9IGRvY3VtZW50KCktPnZpZXcoKSA/IGRvY3VtZW50KCktPnZpZXcoKS0+cGFnZVpv
b21GYWN0b3IoKSA6IDEuMGY7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFn
ZSgpLT5pbWFnZVNpemUoem9vbUZhY3Rvcikud2lkdGgoKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VMb2Fk
ZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKDEuMGYpLndpZHRoKCk7CiAgICAgfQogCiAgICAgaWYgKGln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKQEAgLTI3OCw3ICsyNzYsOCBAQCBpbnQgSFRNTEltYWdl
RWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQCiAgICAgZWxzZQogICAgICAgICBkb2N1bWVudCgp
LT51cGRhdGVMYXlvdXQoKTsKIAotICAgIHJldHVybiByZW5kZXJCb3goKSA/IHJlbmRlckJveCgp
LT5jb250ZW50V2lkdGgoKSA6IDA7CisgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsK
KyAgICByZXR1cm4gYm94ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKGJveC0+Y29udGVudFdpZHRo
KCksIGJveCkgOiAwOwogfQogCiBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKSBjb25zdApAQCAtMjkxLDEwICsyOTAsOCBAQCBpbnQgSFRN
TEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlCiAgICAgICAgICAgICByZXR1cm4gaGVp
Z2h0OwogCiAgICAgICAgIC8vIGlmIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVzZSBpdHMgaGVp
Z2h0Ci0gICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpIHsKLSAgICAgICAgICAgIGZs
b2F0IHpvb21GYWN0b3IgPSBkb2N1bWVudCgpLT52aWV3KCkgPyBkb2N1bWVudCgpLT52aWV3KCkt
PnBhZ2Vab29tRmFjdG9yKCkgOiAxLjBmOwotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VMb2Fk
ZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKHpvb21GYWN0b3IpLmhlaWdodCgpOwotICAgICAgICB9Cisg
ICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gbV9p
bWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNpemUoMS4wZikuaGVpZ2h0KCk7CiAgICAgfQogCiAg
ICAgaWYgKGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKQEAgLTMwMiw3ICsyOTksOCBAQCBpbnQg
SFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlCiAgICAgZWxzZQogICAgICAgICBk
b2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKIAotICAgIHJldHVybiByZW5kZXJCb3goKSA/IHJl
bmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkgOiAwOworICAgIFJlbmRlckJveCogYm94ID0gcmVu
ZGVyQm94KCk7CisgICAgcmV0dXJuIGJveCA/IGFkanVzdEZvckFic29sdXRlWm9vbShib3gtPmNv
bnRlbnRIZWlnaHQoKSwgYm94KSA6IDA7CiB9CiAKIGludCBIVE1MSW1hZ2VFbGVtZW50OjpuYXR1
cmFsV2lkdGgoKSBjb25zdApJbmRleDogV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHJldmlzaW9u
IDY2NDAyKQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Miw3ICsxNTIsOSBAQCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgp
CiAKICAgICAgICAgY2FjaGVkSW1hZ2UtPnNldFJlc3BvbnNlKGRvY3VtZW50KCktPmZyYW1lKCkt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpKTsKIAotICAgICAgICBJbnRT
aXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VTaXplKHBhZ2Vab29tRmFjdG9yKGRvY3VtZW50
KCkpKTsKKyAgICAgICAgLy8gUmVwb3J0IHRoZSBuYXR1cmFsIGltYWdlIHNpemUgaW4gdGhlIHBh
Z2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Ygem9vbQorICAgICAgICAvLyBsZXZlbC4KKyAgICAgICAg
SW50U2l6ZSBzaXplID0gY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZSgxLjBmKTsKICAgICAgICAgaWYg
KHNpemUud2lkdGgoKSkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgdGl0bGUsIHdlIHVz
ZSB0aGUgZGVjb2RlZCBmaWxlbmFtZSBvZiB0aGUgcmVzb3VyY2UsIGZhbGxpbmcKICAgICAgICAg
ICAgIC8vIGJhY2sgb24gdGhlIChkZWNvZGVkKSBob3N0bmFtZSBpZiB0aGVyZSBpcyBubyBwYXRo
LgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNjY0MDMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOC0zMCAgUGV0ZXIgS2FzdGluZyAg
PHBrYXN0aW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVwb3J0IGNvcnJlY3QgKHVuem9vbWVkKSBpbWFnZSBzaXplcyBmb3Ig
em9vbWVkIGltYWdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMDg5CisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmc6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sOiBB
ZGRlZC4KKwogMjAxMC0wOC0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKK0lkZWFsbHksIGFsbCBvdmFscyBiZWxvdyBz
aG91bGQgYmUgcmVwb3J0ZWQgYXMgaGF2aW5nIHdpZHRoPTM3LCBoZWlnaHQ9MzMuIEN1cnJlbnRs
eSByb3VuZGluZyBwcmV2ZW50cyB1cyBmcm9tIGRvaW5nIHRoaXMuCisKKworWm9vbSAxJSBQQVNT
OiAxMDB4MTAwIGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gMiUgUEFTUzogNTB4NTAg
Y2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAzJSBQQVNTOiAzM3gzMyBjbG9zZSBlbm91
Z2ggdG8gMzd4MzMKKworCitab29tIDQlIFBBU1M6IDI1eDI1IGNsb3NlIGVub3VnaCB0byAzN3gz
MworCisKK1pvb20gNSUgUEFTUzogMTl4MTkgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9v
bSAzMCUgUEFTUzogMzZ4MjkgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAzMyUgUEFT
UzogMzZ4MzAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSA1MCUgUEFTUzogMzZ4MzIg
Y2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSA3MCUgUEFTUzogMzV4MzIgY2xvc2UgZW5v
dWdoIHRvIDM3eDMzCisKKworWm9vbSAxMDAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAxMTElIFBB
U1M6IDM3eDMzCisKKworWm9vbSAxNTAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAzMzMlIFBBU1M6
IDM3eDMzCisKKworWm9vbSA0MDAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAxMjM0JSBQQVNTOiAz
N3gzMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXpl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1z
aXplLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQt
aW1nLXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICBmdW5jdGlvbiB1cGRhdGUoKSB7
CisgICAgICAgIC8vIFRoZXNlIGFycmF5cyB3aWxsIGJlY29tZSB1bm5lY2Vzc2FyeSBpZiB3ZSBm
aXggdGhlIHJvdW5kaW5nIGlzc3VlcyB0aGF0IG1ha2UgdXMgbm90IGFsd2F5cyByZXBvcnQgIjM3
eDMzIi4KKyAgICAgICAgdmFyIGV4cGVjdGVkV2lkdGhzID0gWzEwMCwgNTAsIDMzLCAyNSwgMTks
IDM2LCAzNiwgMzYsIDM1LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3XTsKKyAgICAgICAgdmFyIGV4
cGVjdGVkSGVpZ2h0cyA9IFsxMDAsIDUwLCAzMywgMjUsIDE5LCAyOSwgMzAsIDMyLCAzMiwgMzMs
IDMzLCAzMywgMzMsIDMzLCAzM107CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxNTsgKytpKSB7
CisgICAgICAgICAgdmFyIG92YWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZhbCcgKyBp
KTsKKyAgICAgICAgICB2YXIgc3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXR1
cycgKyBpKTsKKyAgICAgICAgICB2YXIgc2l6ZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c2l6ZXMnICsgaSk7CisgICAgICAgICAgaWYgKChvdmFsLndpZHRoID09IGV4cGVjdGVkV2lkdGhz
W2ldKSAmJiAob3ZhbC5oZWlnaHQgPT0gZXhwZWN0ZWRIZWlnaHRzW2ldKSkgeworICAgICAgICAg
ICAgc3RhdHVzLnN0eWxlLmNvbG9yID0gImdyZWVuIjsKKyAgICAgICAgICAgIHN0YXR1cy5pbm5l
ckhUTUwgPSAiUEFTUyI7CisgICAgICAgICAgICBzaXplcy5pbm5lckhUTUwgPSBvdmFsLndpZHRo
ICsgIngiICsgb3ZhbC5oZWlnaHQgKyAoKChvdmFsLndpZHRoICE9IDM3KSB8fCAob3ZhbC5oZWln
aHQgIT0gMzMpKSA/ICIgY2xvc2UgZW5vdWdoIHRvIDM3eDMzIiA6ICIiKTsKKyAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgc3RhdHVzLnN0eWxlLmNvbG9yID0gInJlZCI7CisgICAgICAg
ICAgICBzdGF0dXMuaW5uZXJIVE1MID0gIkZBSUwiOworICAgICAgICAgICAgc2l6ZXMuaW5uZXJI
VE1MID0gb3ZhbC53aWR0aCArICJ4IiArIG92YWwuaGVpZ2h0ICsgIiBub3QgY2xvc2UgZW5vdWdo
IHRvIDM3eDMzIjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHdpbmRv
dy5vbmxvYWQgPSB1cGRhdGU7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+Cisg
ICAgPHA+SWRlYWxseSwgYWxsIG92YWxzIGJlbG93IHNob3VsZCBiZSByZXBvcnRlZCBhcyBoYXZp
bmcgd2lkdGg9MzcsIGhlaWdodD0zMy4gIEN1cnJlbnRseSByb3VuZGluZyBwcmV2ZW50cyB1cyBm
cm9tIGRvaW5nIHRoaXMuPC9wPgorICAgIDxpbWcgaWQ9Im92YWwwIiBzcmM9InJlc291cmNlcy9v
dmFsLnBuZyIgc3R5bGU9Inpvb206IDElIj4KKyAgICA8cD5ab29tIDElIDxzcGFuIGlkPSJzdGF0
dXMwIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMwIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9
Im92YWwxIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDIlIj4KKyAgICA8
cD5ab29tIDIlIDxzcGFuIGlkPSJzdGF0dXMxIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMxIj48
L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwyIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIg
c3R5bGU9Inpvb206IDMlIj4KKyAgICA8cD5ab29tIDMlIDxzcGFuIGlkPSJzdGF0dXMyIj48L3Nw
YW4+OiA8c3BhbiBpZD0ic2l6ZXMyIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwzIiBz
cmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQlIj4KKyAgICA8cD5ab29tIDQl
IDxzcGFuIGlkPSJzdGF0dXMzIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMzIj48L3NwYW4+PC9w
PgorICAgIDxpbWcgaWQ9Im92YWw0IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpv
b206IDUlIj4KKyAgICA8cD5ab29tIDUlIDxzcGFuIGlkPSJzdGF0dXM0Ij48L3NwYW4+OiA8c3Bh
biBpZD0ic2l6ZXM0Ij48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWw1IiBzcmM9InJlc291
cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDMwJSI+CisgICAgPHA+Wm9vbSAzMCUgPHNwYW4g
aWQ9InN0YXR1czUiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczUiPjwvc3Bhbj48L3A+CisgICAg
PGltZyBpZD0ib3ZhbDYiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMzMl
Ij4KKyAgICA8cD5ab29tIDMzJSA8c3BhbiBpZD0ic3RhdHVzNiI+PC9zcGFuPjogPHNwYW4gaWQ9
InNpemVzNiI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNyIgc3JjPSJyZXNvdXJjZXMv
b3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA1MCUiPgorICAgIDxwPlpvb20gNTAlIDxzcGFuIGlkPSJz
dGF0dXM3Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM3Ij48L3NwYW4+PC9wPgorICAgIDxpbWcg
aWQ9Im92YWw4IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDcwJSI+Cisg
ICAgPHA+Wm9vbSA3MCUgPHNwYW4gaWQ9InN0YXR1czgiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXpl
czgiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDkiIHNyYz0icmVzb3VyY2VzL292YWwu
cG5nIiBzdHlsZT0iem9vbTogMTAwJSI+CisgICAgPHA+Wm9vbSAxMDAlIDxzcGFuIGlkPSJzdGF0
dXM5Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM5Ij48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9
Im92YWwxMCIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxMTElIj4KKyAg
ICA8cD5ab29tIDExMSUgPHNwYW4gaWQ9InN0YXR1czEwIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6
ZXMxMCI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMTEiIHNyYz0icmVzb3VyY2VzL292
YWwucG5nIiBzdHlsZT0iem9vbTogMTUwJSI+CisgICAgPHA+Wm9vbSAxNTAlIDxzcGFuIGlkPSJz
dGF0dXMxMSI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzMTEiPjwvc3Bhbj48L3A+CisgICAgPGlt
ZyBpZD0ib3ZhbDEyIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDMzMyUi
PgorICAgIDxwPlpvb20gMzMzJSA8c3BhbiBpZD0ic3RhdHVzMTIiPjwvc3Bhbj46IDxzcGFuIGlk
PSJzaXplczEyIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwxMyIgc3JjPSJyZXNvdXJj
ZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA0MDAlIj4KKyAgICA8cD5ab29tIDQwMCUgPHNwYW4g
aWQ9InN0YXR1czEzIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMxMyI+PC9zcGFuPjwvcD4KKyAg
ICA8aW1nIGlkPSJvdmFsMTQiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTog
MTIzNCUiPgorICAgIDxwPlpvb20gMTIzNCUgPHNwYW4gaWQ9InN0YXR1czE0Ij48L3NwYW4+OiA8
c3BhbiBpZD0ic2l6ZXMxNCI+PC9zcGFuPjwvcD4KKyAgPC9ib2R5PgorPC9odG1sPgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLmh0
bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291
cmNlcy9vdmFsLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2Uv
cG5nCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNVQUFBQWhDQU1BQUFCcDBaSW5BQUFBQVhO
U1IwSUFyczRjNlFBQUFEeFFURlJGMVdPMwo3dm51VnNOV1Y4TlhXY1JaWWNkaFpjaGxlYzk1aDlT
SG5OeWNuZHlkbjkyZnFlQ3ByK092dGVXMXZ1aSt4ZXZGemUzTjEvSFg0L1hqClI1alIrd0FBQUFG
MFVrNVRBRURtMkdZQUFBQUJZa3RIUkFDSUJSMUlBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZ
QUFBQUIzUkoKVFVVSDJnY01EeHdXbm5oWmNBQUFBQjFwVkZoMFEyOXRiV1Z1ZEFBQUFBQUFRM0ps
WVhSbFpDQjNhWFJvSUVkSlRWQmtMbVVIQUFBQQpqRWxFUVZRNHk3WFVTdzZBSUF3RVVLaUk4aE9W
Kzk5VkVseWdBcDJOczM1cENyUUk4VmZrYnBaNW1oZXp5NjRKVkNjMGphTjMzTWNjCjFNcnhSSjdh
OFRXeTFJdnR0VTN0UTV3MHlua3JHcWVneUtpSWxDckZFcXRTVmh1cnRxeFdWcTFaYVZicHJCU3JG
RndMNndzN0kzWmYKMk4yRDc0ak5CRGhmMkt5Q2N3L3VFTGlQNEc2ai84VG96N2tBY3pFSlVSMGFZ
WlFBQUFBQVNVVk9SSzVDWUlJPQoK
</data>
<flag name="review"
          id="54831"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="54832"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66156</attachid>
            <date>2010-08-31 18:25:40 -0700</date>
            <delta_ts>2010-09-01 12:56:36 -0700</delta_ts>
            <desc>patch v3.0</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11540</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjU2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDgtMzEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcG9ydCBjb3JyZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9yIHpvb21lZCBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4OQor
CisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCisKKyAgICAg
ICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOiBSZXBvcnQgdW56b29tZWQgc2l6ZSB0byBz
Y3JpcHQgdGhhdCBxdWVyaWVzIGFuIGltYWdlJ3Mgd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5j
cHA6IFJlcG9ydCB1bnpvb21lZCBzaXplIGluIHRoZSBwYWdlIHRpdGxlIHdoZW4gdmlld2luZyBh
IHN0YW5kYWxvbmUgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50UGFyc2Vy
OjpmaW5pc2gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDogQWRkIHJvdW5k
aW5nIGNvZGUgKHRvIG1hdGNoIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KCkp
IHRvIGNvbXBlbnNhdGUgZm9yIHNvbWUgaW5leGFjdG5lc3MgaW4gem9vbSBsZXZlbCBjYWxjdWxh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEZvckFic29sdXRlWm9vbSk6CisKIDIwMTAt
MDgtMzEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lv
biA2NjU2MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjY3LDEwICsyNjcsOCBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9v
bCBpZ25vcmVQCiAgICAgICAgICAgICByZXR1cm4gd2lkdGg7CiAKICAgICAgICAgLy8gaWYgdGhl
IGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyB3aWR0aAotICAgICAgICBpZiAobV9pbWFnZUxv
YWRlci5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBmbG9hdCB6b29tRmFjdG9yID0gZG9jdW1lbnQo
KS0+dmlldygpID8gZG9jdW1lbnQoKS0+dmlldygpLT5wYWdlWm9vbUZhY3RvcigpIDogMS4wZjsK
LSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6ZSh6b29t
RmFjdG9yKS53aWR0aCgpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmlt
YWdlKCkpCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNp
emUoMS4wZikud2lkdGgoKTsKICAgICB9CiAKICAgICBpZiAoaWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKQpAQCAtMjc4LDcgKzI3Niw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aChib29s
IGlnbm9yZVAKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwog
Ci0gICAgcmV0dXJuIHJlbmRlckJveCgpID8gcmVuZGVyQm94KCktPmNvbnRlbnRXaWR0aCgpIDog
MDsKKyAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOworICAgIHJldHVybiBib3ggPyBh
ZGp1c3RGb3JBYnNvbHV0ZVpvb20oYm94LT5jb250ZW50V2lkdGgoKSwgYm94KSA6IDA7CiB9CiAK
IGludCBIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMpIGNvbnN0CkBAIC0yOTEsMTAgKzI5MCw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50OjpoZWln
aHQoYm9vbCBpZ25vcmUKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7CiAKICAgICAgICAgLy8g
aWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyBoZWlnaHQKLSAgICAgICAgaWYgKG1f
aW1hZ2VMb2FkZXIuaW1hZ2UoKSkgewotICAgICAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IGRv
Y3VtZW50KCktPnZpZXcoKSA/IGRvY3VtZW50KCktPnZpZXcoKS0+cGFnZVpvb21GYWN0b3IoKSA6
IDEuMGY7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNp
emUoem9vbUZhY3RvcikuaGVpZ2h0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1faW1hZ2VM
b2FkZXIuaW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmltYWdlKCkt
PmltYWdlU2l6ZSgxLjBmKS5oZWlnaHQoKTsKICAgICB9CiAKICAgICBpZiAoaWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKQpAQCAtMzAyLDcgKzI5OSw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50Ojpo
ZWlnaHQoYm9vbCBpZ25vcmUKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOwogCi0gICAgcmV0dXJuIHJlbmRlckJveCgpID8gcmVuZGVyQm94KCktPmNvbnRlbnRI
ZWlnaHQoKSA6IDA7CisgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICByZXR1
cm4gYm94ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKGJveC0+Y29udGVudEhlaWdodCgpLCBib3gp
IDogMDsKIH0KIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6Om5hdHVyYWxXaWR0aCgpIGNvbnN0Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNpb24gNjY1NjMpCisrKyBXZWJDb3Jl
L2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw5
IEBAIHZvaWQgSW1hZ2VEb2N1bWVudFBhcnNlcjo6ZmluaXNoKCkKIAogICAgICAgICBjYWNoZWRJ
bWFnZS0+c2V0UmVzcG9uc2UoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCktPnJlc3BvbnNlKCkpOwogCi0gICAgICAgIEludFNpemUgc2l6ZSA9IGNhY2hlZElt
YWdlLT5pbWFnZVNpemUocGFnZVpvb21GYWN0b3IoZG9jdW1lbnQoKSkpOworICAgICAgICAvLyBS
ZXBvcnQgdGhlIG5hdHVyYWwgaW1hZ2Ugc2l6ZSBpbiB0aGUgcGFnZSB0aXRsZSwgcmVnYXJkbGVz
cyBvZiB6b29tCisgICAgICAgIC8vIGxldmVsLgorICAgICAgICBJbnRTaXplIHNpemUgPSBjYWNo
ZWRJbWFnZS0+aW1hZ2VTaXplKDEuMGYpOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpKSB7CiAg
ICAgICAgICAgICAvLyBDb21wdXRlIHRoZSB0aXRsZSwgd2UgdXNlIHRoZSBkZWNvZGVkIGZpbGVu
YW1lIG9mIHRoZSByZXNvdXJjZSwgZmFsbGluZwogICAgICAgICAgICAgLy8gYmFjayBvbiB0aGUg
KGRlY29kZWQpIGhvc3RuYW1lIGlmIHRoZXJlIGlzIG5vIHBhdGguCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNjY1NjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDcgKzk5MiwxNCBAQCBpbmxpbmUgaW50
IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFsCiAgICAgLy8gTmVlZGVkIGJlY2F1c2UgY29t
cHV0ZUxlbmd0aEludCB0cnVuY2F0ZXMgKHJhdGhlciB0aGFuIHJvdW5kcykgd2hlbiBzY2FsaW5n
IHVwLgogICAgIGlmICh6b29tRmFjdG9yID4gMSkKICAgICAgICAgdmFsdWUrKzsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAvIHpvb21GYWN0b3IpOworCisgICAgZG91YmxlIHJl
c3VsdCA9IHZhbHVlIC8gem9vbUZhY3RvcjsKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1w
cmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdl
CisgICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3Nl
IHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCisgICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAt
MC4wMSA6ICswLjAxOworICAgIGlmIChyZXN1bHQgPiBJTlRfTUFYIHx8IHJlc3VsdCA8IElOVF9N
SU4pCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3Vs
dCk7CiB9CiAKIGlubGluZSB2b2lkIGFkanVzdEludFJlY3RGb3JBYnNvbHV0ZVpvb20oSW50UmVj
dCYgcmVjdCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NTY0
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTAtMDgtMzEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcG9ydCBjb3Jy
ZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9yIHpvb21lZCBpbWFnZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4OQorCisgICAgICAgICog
ZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy96b29tZWQtaW1nLXNpemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDgtMzEgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUg
cG5ncyB3aGVyZSB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdCwgYnV0IHRoZSBwbmcgZG9lc24ndCBt
YXRjaC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWlt
Zy1zaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDYgQEAKK0lkZWFsbHksIGFsbCBvdmFscyBiZWxvdyBzaG91bGQgYmUgcmVwb3J0ZWQgYXMgaGF2
aW5nIHdpZHRoPTM3LCBoZWlnaHQ9MzMuIEN1cnJlbnRseSByb3VuZGluZyBwcmV2ZW50cyB1cyBm
cm9tIGRvaW5nIHRoaXMuCisKKworWm9vbSAxJSBQQVNTOiAxMDB4MTAwIGNsb3NlIGVub3VnaCB0
byAzN3gzMworCisKK1pvb20gMiUgUEFTUzogNTB4NTAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisK
KworWm9vbSAzJSBQQVNTOiAzM3gzMyBjbG9zZSBlbm91Z2ggdG8gMzd4MzMKKworCitab29tIDQl
IFBBU1M6IDI1eDI1IGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gNSUgUEFTUzogMjB4
MjAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAzMCUgUEFTUzogMzZ4MzAgY2xvc2Ug
ZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAzMyUgUEFTUzogMzZ4MzAgY2xvc2UgZW5vdWdoIHRv
IDM3eDMzCisKKworWm9vbSA1MCUgUEFTUzogMzZ4MzIgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisK
KworWm9vbSA3MCUgUEFTUzogMzV4MzIgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAx
MDAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAxMTElIFBBU1M6IDM3eDMzCisKKworWm9vbSAxNTAl
IFBBU1M6IDM3eDMzCisKKworWm9vbSAzMzMlIFBBU1M6IDM3eDMzCisKKworWm9vbSA0MDAlIFBB
U1M6IDM3eDMzCisKKworWm9vbSAxMjM0JSBQQVNTOiAzN3gzMwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLWV4cGVjdGVkLnR4dApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1n
LXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQt
aW1nLXNpemUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pv
b21lZC1pbWctc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgIGZ1bmN0aW9uIHVwZGF0
ZSgpIHsKKyAgICAgICAgLy8gVGhlc2UgYXJyYXlzIHdpbGwgYmVjb21lIHVubmVjZXNzYXJ5IGlm
IHdlIGZpeCB0aGUgcm91bmRpbmcgaXNzdWVzIHRoYXQgbWFrZSB1cyBub3QgYWx3YXlzIHJlcG9y
dCAiMzd4MzMiLgorICAgICAgICB2YXIgZXhwZWN0ZWRXaWR0aHMgPSBbMTAwLCA1MCwgMzMsIDI1
LCAyMCwgMzYsIDM2LCAzNiwgMzUsIDM3LCAzNywgMzcsIDM3LCAzNywgMzddOworICAgICAgICB2
YXIgZXhwZWN0ZWRIZWlnaHRzID0gWzEwMCwgNTAsIDMzLCAyNSwgMjAsIDMwLCAzMCwgMzIsIDMy
LCAzMywgMzMsIDMzLCAzMywgMzMsIDMzXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDE1OyAr
K2kpIHsKKyAgICAgICAgICB2YXIgb3ZhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmFs
JyArIGkpOworICAgICAgICAgIHZhciBzdGF0dXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c3RhdHVzJyArIGkpOworICAgICAgICAgIHZhciBzaXplcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzaXplcycgKyBpKTsKKyAgICAgICAgICBpZiAoKG92YWwud2lkdGggPT0gZXhwZWN0ZWRX
aWR0aHNbaV0pICYmIChvdmFsLmhlaWdodCA9PSBleHBlY3RlZEhlaWdodHNbaV0pKSB7CisgICAg
ICAgICAgICBzdGF0dXMuc3R5bGUuY29sb3IgPSAiZ3JlZW4iOworICAgICAgICAgICAgc3RhdHVz
LmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICAgICAgICAgIHNpemVzLmlubmVySFRNTCA9IG92YWwu
d2lkdGggKyAieCIgKyBvdmFsLmhlaWdodCArICgoKG92YWwud2lkdGggIT0gMzcpIHx8IChvdmFs
LmhlaWdodCAhPSAzMykpID8gIiBjbG9zZSBlbm91Z2ggdG8gMzd4MzMiIDogIiIpOworICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGF0dXMuc3R5bGUuY29sb3IgPSAicmVkIjsKKyAg
ICAgICAgICAgIHN0YXR1cy5pbm5lckhUTUwgPSAiRkFJTCI7CisgICAgICAgICAgICBzaXplcy5p
bm5lckhUTUwgPSBvdmFsLndpZHRoICsgIngiICsgb3ZhbC5oZWlnaHQgKyAiIG5vdCBjbG9zZSBl
bm91Z2ggdG8gMzd4MzMiOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAg
d2luZG93Lm9ubG9hZCA9IHVwZGF0ZTsKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9k
eT4KKyAgICA8cD5JZGVhbGx5LCBhbGwgb3ZhbHMgYmVsb3cgc2hvdWxkIGJlIHJlcG9ydGVkIGFz
IGhhdmluZyB3aWR0aD0zNywgaGVpZ2h0PTMzLiAgQ3VycmVudGx5IHJvdW5kaW5nIHByZXZlbnRz
IHVzIGZyb20gZG9pbmcgdGhpcy48L3A+CisgICAgPGltZyBpZD0ib3ZhbDAiIHNyYz0icmVzb3Vy
Y2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMSUiPgorICAgIDxwPlpvb20gMSUgPHNwYW4gaWQ9
InN0YXR1czAiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczAiPjwvc3Bhbj48L3A+CisgICAgPGlt
ZyBpZD0ib3ZhbDEiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMiUiPgor
ICAgIDxwPlpvb20gMiUgPHNwYW4gaWQ9InN0YXR1czEiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXpl
czEiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDIiIHNyYz0icmVzb3VyY2VzL292YWwu
cG5nIiBzdHlsZT0iem9vbTogMyUiPgorICAgIDxwPlpvb20gMyUgPHNwYW4gaWQ9InN0YXR1czIi
Pjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczIiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3Zh
bDMiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogNCUiPgorICAgIDxwPlpv
b20gNCUgPHNwYW4gaWQ9InN0YXR1czMiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczMiPjwvc3Bh
bj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDQiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHls
ZT0iem9vbTogNSUiPgorICAgIDxwPlpvb20gNSUgPHNwYW4gaWQ9InN0YXR1czQiPjwvc3Bhbj46
IDxzcGFuIGlkPSJzaXplczQiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDUiIHNyYz0i
cmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMzAlIj4KKyAgICA8cD5ab29tIDMwJSA8
c3BhbiBpZD0ic3RhdHVzNSI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzNSI+PC9zcGFuPjwvcD4K
KyAgICA8aW1nIGlkPSJvdmFsNiIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29t
OiAzMyUiPgorICAgIDxwPlpvb20gMzMlIDxzcGFuIGlkPSJzdGF0dXM2Ij48L3NwYW4+OiA8c3Bh
biBpZD0ic2l6ZXM2Ij48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWw3IiBzcmM9InJlc291
cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDUwJSI+CisgICAgPHA+Wm9vbSA1MCUgPHNwYW4g
aWQ9InN0YXR1czciPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczciPjwvc3Bhbj48L3A+CisgICAg
PGltZyBpZD0ib3ZhbDgiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogNzAl
Ij4KKyAgICA8cD5ab29tIDcwJSA8c3BhbiBpZD0ic3RhdHVzOCI+PC9zcGFuPjogPHNwYW4gaWQ9
InNpemVzOCI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsOSIgc3JjPSJyZXNvdXJjZXMv
b3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxMDAlIj4KKyAgICA8cD5ab29tIDEwMCUgPHNwYW4gaWQ9
InN0YXR1czkiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczkiPjwvc3Bhbj48L3A+CisgICAgPGlt
ZyBpZD0ib3ZhbDEwIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDExMSUi
PgorICAgIDxwPlpvb20gMTExJSA8c3BhbiBpZD0ic3RhdHVzMTAiPjwvc3Bhbj46IDxzcGFuIGlk
PSJzaXplczEwIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwxMSIgc3JjPSJyZXNvdXJj
ZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxNTAlIj4KKyAgICA8cD5ab29tIDE1MCUgPHNwYW4g
aWQ9InN0YXR1czExIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMxMSI+PC9zcGFuPjwvcD4KKyAg
ICA8aW1nIGlkPSJvdmFsMTIiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTog
MzMzJSI+CisgICAgPHA+Wm9vbSAzMzMlIDxzcGFuIGlkPSJzdGF0dXMxMiI+PC9zcGFuPjogPHNw
YW4gaWQ9InNpemVzMTIiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDEzIiBzcmM9InJl
c291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQwMCUiPgorICAgIDxwPlpvb20gNDAwJSA8
c3BhbiBpZD0ic3RhdHVzMTMiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczEzIj48L3NwYW4+PC9w
PgorICAgIDxpbWcgaWQ9Im92YWwxNCIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6
b29tOiAxMjM0JSI+CisgICAgPHA+Wm9vbSAxMjM0JSA8c3BhbiBpZD0ic3RhdHVzMTQiPjwvc3Bh
bj46IDxzcGFuIGlkPSJzaXplczE0Ij48L3NwYW4+PC9wPgorICA8L2JvZHk+Cis8L2h0bWw+CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNp
emUuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
cmVzb3VyY2VzL292YWwucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBp
bWFnZS9wbmcKCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ1VBQUFBaENBTUFBQUJwMFpJbkFB
QUFBWE5TUjBJQXJzNGM2UUFBQUR4UVRGUkYxV08zCjd2bnVWc05XVjhOWFdjUlpZY2RoWmNobGVj
OTVoOVNIbk55Y25keWRuOTJmcWVDcHIrT3Z0ZVcxdnVpK3hldkZ6ZTNOMS9IWDQvWGoKUjVqUit3
QUFBQUYwVWs1VEFFRG0yR1lBQUFBQllrdEhSQUNJQlIxSUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdF
QW1wd1lBQUFBQjNSSgpUVVVIMmdjTUR4d1dubmhaY0FBQUFCMXBWRmgwUTI5dGJXVnVkQUFBQUFB
QVEzSmxZWFJsWkNCM2FYUm9JRWRKVFZCa0xtVUhBQUFBCmpFbEVRVlE0eTdYVVN3NkFJQXdFVUtp
SThoT1YrOTlWRWx5Z0FwMk5zMzVwQ3JRSThWZmticFo1bWhlenk2NEpWQ2MwamFOMzNNY2MKMU1y
eFJKN2E4VFd5MUl2dHRVM3RRNXcweW5rckdxZWd5S2lJbENyRkVxdFNWaHVydHF4V1ZxMVphVmJw
ckJTckZGd0w2d3M3STNaZgoyTjJENzRqTkJEaGYyS3lDY3cvdUVMaVA0RzZqLzhUb3o3a0FjekVK
VVIwYVlaUUFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66250</attachid>
            <date>2010-09-01 12:56:36 -0700</date>
            <delta_ts>2010-09-01 13:38:37 -0700</delta_ts>
            <desc>patch v3.1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17606</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjYxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDktMDEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcG9ydCBjb3JyZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9yIHpvb21lZCBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4OQor
CisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCisKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOiBGYWN0b3Igcm91bmRpbmcgY29kZSBvdXQg
dG8gYSB0ZW1wbGF0aXplZCBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgc2hhcmVkLgorICAgICAgICAo
V2ViQ29yZTo6cm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQpOgorICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHA6IFJlcG9ydCB1bnpvb21lZCBzaXplIHRvIHNjcmlwdCB0aGF0IHF1ZXJpZXMgYW4g
aW1hZ2UncyB3aWR0aCBvciBoZWlnaHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVt
ZW50Ojp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQp
OgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3VtZW50LmNwcDogUmVwb3J0IHVuem9vbWVkIHNp
emUgaW4gdGhlIHBhZ2UgdGl0bGUgd2hlbiB2aWV3aW5nIGEgc3RhbmRhbG9uZSBpbWFnZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOiBVc2Ugc2hhcmVkIHJvdW5kaW5nIGNvZGUgZnJvbSBD
U1NQcmltaXRpdmVWYWx1ZSB0byBjb21wZW5zYXRlIGZvciBpbmV4YWN0bmVzcyBpbiB6b29tZWQg
c2l6ZXMuCisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3JBYnNvbHV0ZVpvb20pOgorCiAyMDEw
LTA5LTAxICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAJKHJldmlzaW9uIDY2NjExKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgV1RG
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFQgbWF4LCBU
IG1pbj4gaW5saW5lIFQgcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uKGRvdWJsZSByZXN1bHQp
Cit7CisgICAgLy8gRGltZW5zaW9uIGNhbGN1bGF0aW9ucyBhcmUgaW1wcmVjaXNlLCBvZnRlbiBy
ZXN1bHRpbmcgaW4gdmFsdWVzIG9mIGUuZy4KKyAgICAvLyA0NC45OTk5OC4gIFdlIG5lZWQgdG8g
Z28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0aGUKKyAgICAvLyBu
ZXh0IGludGVnZXIgdmFsdWUuCisgICAgcmVzdWx0ICs9IChyZXN1bHQgPCAwKSA/IC0wLjAxIDog
KzAuMDE7CisgICAgcmV0dXJuIChyZXN1bHQgPiBtYXggfHwgcmVzdWx0IDwgbWluKSA/IDAgOiBz
dGF0aWNfY2FzdDxUPihyZXN1bHQpOworfQorCiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ1NTUHJp
bWl0aXZlVmFsdWUqLCBTdHJpbmc+IENTU1RleHRDYWNoZTsKIHN0YXRpYyBDU1NUZXh0Q2FjaGUm
IGNzc1RleHRDYWNoZSgpCiB7CkBAIC0zMDUsODUgKzMxNCwzNyBAQCB2b2lkIENTU1ByaW1pdGl2
ZVZhbHVlOjpjbGVhbnVwKCkKIAogaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3Ro
SW50KFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSkKIHsKLSAgICBk
b3VibGUgcmVzdWx0ID0gY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKTsKLQot
ICAgIC8vIFRoaXMgY29udmVyc2lvbiBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2
YWx1ZXMgb2YsIGUuZy4sIDQ0Ljk5OTk4LiAgV2UKLSAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFu
ZCByb3VuZCBpZiB3ZSdyZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4K
LSAgICByZXN1bHQgKz0gcmVzdWx0IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0KLSAgICBpZiAocmVz
dWx0ID4gSU5UX01BWCB8fCByZXN1bHQgPCBJTlRfTUlOKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOworICAgIHJldHVybiByb3VuZEZvcklt
cHJlY2lzZUNvbnZlcnNpb248aW50LCBJTlRfTUFYLCBJTlRfTUlOPihjb21wdXRlTGVuZ3RoRG91
YmxlKHN0eWxlLCByb290U3R5bGUpKTsKIH0KIAogaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21w
dXRlTGVuZ3RoSW50KFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwg
ZG91YmxlIG11bHRpcGxpZXIpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhE
b3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcik7Ci0KLSAgICAvLyBUaGlzIGNvbnZl
cnNpb24gaXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0
NC45OTk5OC4gIFdlCi0gICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUg
cmVhbGx5IGNsb3NlIHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJl
c3VsdCA8IDAgPyAtMC4wMSA6ICswLjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IElOVF9NQVggfHwg
cmVzdWx0IDwgSU5UX01JTikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4ocmVzdWx0KTsKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9u
PGludCwgSU5UX01BWCwgSU5UX01JTj4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0
eWxlLCBtdWx0aXBsaWVyKSk7CiB9CiAKLWNvbnN0IGludCBpbnRNYXhGb3JMZW5ndGggPSAweDdm
ZmZmZmY7IC8vIG1heCB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50CisvLyBMZW5ndGhzIGV4cGVjdCBh
biBpbnQgdGhhdCBpcyBvbmx5IDI4LWJpdHMsIHNvIHdlIGhhdmUgdG8gY2hlY2sgZm9yIGEKKy8v
IGRpZmZlcmVudCBvdmVyZmxvdy4KK2NvbnN0IGludCBpbnRNYXhGb3JMZW5ndGggPSAweDdmZmZm
ZmY7ICAgICAgICAvLyBtYXggdmFsdWUgZm9yIGEgMjgtYml0IGludAogY29uc3QgaW50IGludE1p
bkZvckxlbmd0aCA9ICgtMHg3ZmZmZmZmIC0gMSk7IC8vIG1pbiB2YWx1ZSBmb3IgYSAyOC1iaXQg
aW50CiAKLS8vIExlbmd0aHMgZXhwZWN0IGFuIGludCB0aGF0IGlzIG9ubHkgMjgtYml0cywgc28g
d2UgaGF2ZSB0byBjaGVjayBmb3IgYSBkaWZmZXJlbnQgb3ZlcmZsb3cuCiBpbnQgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBS
ZW5kZXJTdHlsZSogcm9vdFN0eWxlKQogewotICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlTGVu
Z3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUpOwotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIGlz
IGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTgu
ICBXZQotICAgIC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBj
bG9zZSB0byB0aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3VsdCArPSByZXN1bHQgPCAw
ID8gLTAuMDEgOiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBpbnRNYXhGb3JMZW5ndGggfHwg
cmVzdWx0IDwgaW50TWluRm9yTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOworICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNv
bnZlcnNpb248aW50LCBpbnRNYXhGb3JMZW5ndGgsIGludE1pbkZvckxlbmd0aD4oY29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKSk7CiB9CiAKLS8vIExlbmd0aHMgZXhwZWN0IGFu
IGludCB0aGF0IGlzIG9ubHkgMjgtYml0cywgc28gd2UgaGF2ZSB0byBjaGVjayBmb3IgYSBkaWZm
ZXJlbnQgb3ZlcmZsb3cuCiBpbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3Vi
bGUgbXVsdGlwbGllcikKIHsKLSAgICBkb3VibGUgcmVzdWx0ID0gY29tcHV0ZUxlbmd0aERvdWJs
ZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKTsKLQotICAgIC8vIFRoaXMgY29udmVyc2lv
biBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4sIDQ0Ljk5
OTk4LiAgV2UKLSAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdyZSByZWFs
bHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQgKz0gcmVzdWx0
IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gaW50TWF4Rm9yTGVuZ3Ro
IHx8IHJlc3VsdCA8IGludE1pbkZvckxlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNp
c2VDb252ZXJzaW9uPGludCwgaW50TWF4Rm9yTGVuZ3RoLCBpbnRNaW5Gb3JMZW5ndGg+KGNvbXB1
dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcikpOwogfQogCiBzaG9y
dCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KFJlbmRlclN0eWxlKiBzdHls
ZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSkKIHsKLSAgICBkb3VibGUgcmVzdWx0ID0gY29tcHV0
ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKTsKLQotICAgIC8vIFRoaXMgY29udmVyc2lv
biBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4sIDQ0Ljk5
OTk4LiAgV2UKLSAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdyZSByZWFs
bHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQgKz0gcmVzdWx0
IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gU0hSVF9NQVggfHwgcmVz
dWx0IDwgU0hSVF9NSU4pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaG9ydD4ocmVzdWx0KTsKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9u
PHNob3J0LCBTSFJUX01BWCwgU0hSVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJv
b3RTdHlsZSkpOwogfQogCiBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNo
b3J0KFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcik7Ci0KLSAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMg
aW1wcmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4g
IFdlCi0gICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNs
b3NlIHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAg
PyAtMC4wMSA6ICswLjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IFNIUlRfTUFYIHx8IHJlc3VsdCA8
IFNIUlRfTUlOKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2hv
cnQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxzaG9y
dCwgU0hSVF9NQVgsIFNIUlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5
bGUsIG11bHRpcGxpZXIpKTsKIH0KIAogZmxvYXQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGhGbG9hdChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGJv
b2wgY29tcHV0aW5nRm9udFNpemUpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHJldmlz
aW9uIDY2NjExKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsOCBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogc3RydWN0IExlbmd0
aDsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgVCBtYXgsIFQgbWluPiBpbmxpbmUgVCByb3VuZEZv
ckltcHJlY2lzZUNvbnZlcnNpb24oZG91YmxlIHJlc3VsdCk7CisKIGNsYXNzIENTU1ByaW1pdGl2
ZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBlbnVtIFVuaXRUeXBlcyB7
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjYxMSkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDEw
ICsyNjcsOCBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQCiAgICAg
ICAgICAgICByZXR1cm4gd2lkdGg7CiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2YWls
YWJsZSwgdXNlIGl0cyB3aWR0aAotICAgICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKSB7
Ci0gICAgICAgICAgICBmbG9hdCB6b29tRmFjdG9yID0gZG9jdW1lbnQoKS0+dmlldygpID8gZG9j
dW1lbnQoKS0+dmlldygpLT5wYWdlWm9vbUZhY3RvcigpIDogMS4wZjsKLSAgICAgICAgICAgIHJl
dHVybiBtX2ltYWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6ZSh6b29tRmFjdG9yKS53aWR0aCgp
OwotICAgICAgICB9CisgICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpCisgICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNpemUoMS4wZikud2lkdGgo
KTsKICAgICB9CiAKICAgICBpZiAoaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQpAQCAtMjc4LDcg
KzI3Niw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aChib29sIGlnbm9yZVAKICAgICBl
bHNlCiAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAgcmV0dXJuIHJl
bmRlckJveCgpID8gcmVuZGVyQm94KCktPmNvbnRlbnRXaWR0aCgpIDogMDsKKyAgICBSZW5kZXJC
b3gqIGJveCA9IHJlbmRlckJveCgpOworICAgIHJldHVybiBib3ggPyBhZGp1c3RGb3JBYnNvbHV0
ZVpvb20oYm94LT5jb250ZW50V2lkdGgoKSwgYm94KSA6IDA7CiB9CiAKIGludCBIVE1MSW1hZ2VF
bGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMpIGNvbnN0CkBAIC0y
OTEsMTAgKzI5MCw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmUK
ICAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7CiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlz
IGF2YWlsYWJsZSwgdXNlIGl0cyBoZWlnaHQKLSAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1h
Z2UoKSkgewotICAgICAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IGRvY3VtZW50KCktPnZpZXco
KSA/IGRvY3VtZW50KCktPnZpZXcoKS0+cGFnZVpvb21GYWN0b3IoKSA6IDEuMGY7Ci0gICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNpemUoem9vbUZhY3Rvciku
aGVpZ2h0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6ZSgxLjBm
KS5oZWlnaHQoKTsKICAgICB9CiAKICAgICBpZiAoaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQpA
QCAtMzAyLDcgKzI5OSw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25v
cmUKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAg
cmV0dXJuIHJlbmRlckJveCgpID8gcmVuZGVyQm94KCktPmNvbnRlbnRIZWlnaHQoKSA6IDA7Cisg
ICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICByZXR1cm4gYm94ID8gYWRqdXN0
Rm9yQWJzb2x1dGVab29tKGJveC0+Y29udGVudEhlaWdodCgpLCBib3gpIDogMDsKIH0KIAogaW50
IEhUTUxJbWFnZUVsZW1lbnQ6Om5hdHVyYWxXaWR0aCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2xv
YWRlci9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9JbWFn
ZURvY3VtZW50LmNwcAkocmV2aXNpb24gNjY2MTEpCisrKyBXZWJDb3JlL2xvYWRlci9JbWFnZURv
Y3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw5IEBAIHZvaWQgSW1hZ2VE
b2N1bWVudFBhcnNlcjo6ZmluaXNoKCkKIAogICAgICAgICBjYWNoZWRJbWFnZS0+c2V0UmVzcG9u
c2UoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3Bv
bnNlKCkpOwogCi0gICAgICAgIEludFNpemUgc2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemUo
cGFnZVpvb21GYWN0b3IoZG9jdW1lbnQoKSkpOworICAgICAgICAvLyBSZXBvcnQgdGhlIG5hdHVy
YWwgaW1hZ2Ugc2l6ZSBpbiB0aGUgcGFnZSB0aXRsZSwgcmVnYXJkbGVzcyBvZiB6b29tCisgICAg
ICAgIC8vIGxldmVsLgorICAgICAgICBJbnRTaXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VT
aXplKDEuMGYpOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpKSB7CiAgICAgICAgICAgICAvLyBD
b21wdXRlIHRoZSB0aXRsZSwgd2UgdXNlIHRoZSBkZWNvZGVkIGZpbGVuYW1lIG9mIHRoZSByZXNv
dXJjZSwgZmFsbGluZwogICAgICAgICAgICAgLy8gYmFjayBvbiB0aGUgKGRlY29kZWQpIGhvc3Ru
YW1lIGlmIHRoZXJlIGlzIG5vIHBhdGguCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAko
cmV2aXNpb24gNjY2MTEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDU1NQcmlt
aXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgpAQCAtOTg2LDEzICs5ODcsMTQgQEAgaW5saW5lIHZv
aWQgbWFrZU1hdHJpeFJlbmRlcmFibGUoVHJhbnNmbwogCiBpbmxpbmUgaW50IGFkanVzdEZvckFi
c29sdXRlWm9vbShpbnQgdmFsdWUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgZmxv
YXQgem9vbUZhY3RvciA9IHJlbmRlcmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisgICAg
ZG91YmxlIHpvb21GYWN0b3IgPSByZW5kZXJlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwog
ICAgIGlmICh6b29tRmFjdG9yID09IDEpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAvLyBO
ZWVkZWQgYmVjYXVzZSBjb21wdXRlTGVuZ3RoSW50IHRydW5jYXRlcyAocmF0aGVyIHRoYW4gcm91
bmRzKSB3aGVuIHNjYWxpbmcgdXAuCiAgICAgaWYgKHpvb21GYWN0b3IgPiAxKQogICAgICAgICB2
YWx1ZSsrOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlIC8gem9vbUZhY3Rvcik7
CisKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgSU5UX01BWCwg
SU5UX01JTj4odmFsdWUgLyB6b29tRmFjdG9yKTsKIH0KIAogaW5saW5lIHZvaWQgYWRqdXN0SW50
UmVjdEZvckFic29sdXRlWm9vbShJbnRSZWN0JiByZWN0LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNjY2MTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOS0wMSAgUGV0ZXIgS2FzdGluZyAg
PHBrYXN0aW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVwb3J0IGNvcnJlY3QgKHVuem9vbWVkKSBpbWFnZSBzaXplcyBmb3Ig
em9vbWVkIGltYWdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMDg5CisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmc6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sOiBB
ZGRlZC4KKwogMjAxMC0wOS0wMSAgUm9iIEJ1aXMgIDxyd2xidWlzQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKK0lkZWFsbHksIGFsbCBvdmFscyBiZWxvdyBz
aG91bGQgYmUgcmVwb3J0ZWQgYXMgaGF2aW5nIHdpZHRoPTM3LCBoZWlnaHQ9MzMuIEN1cnJlbnRs
eSByb3VuZGluZyBwcmV2ZW50cyB1cyBmcm9tIGRvaW5nIHRoaXMuCisKKworWm9vbSAxJSBQQVNT
OiAxMDB4MTAwIGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gMiUgUEFTUzogNTB4NTAg
Y2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAzJSBQQVNTOiAzM3gzMyBjbG9zZSBlbm91
Z2ggdG8gMzd4MzMKKworCitab29tIDQlIFBBU1M6IDI1eDI1IGNsb3NlIGVub3VnaCB0byAzN3gz
MworCisKK1pvb20gNSUgUEFTUzogMjB4MjAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9v
bSAzMCUgUEFTUzogMzZ4MzAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAzMyUgUEFT
UzogMzZ4MzAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSA1MCUgUEFTUzogMzZ4MzIg
Y2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSA3MCUgUEFTUzogMzV4MzIgY2xvc2UgZW5v
dWdoIHRvIDM3eDMzCisKKworWm9vbSAxMDAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAxMTElIFBB
U1M6IDM3eDMzCisKKworWm9vbSAxNTAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAzMzMlIFBBU1M6
IDM3eDMzCisKKworWm9vbSA0MDAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAxMjM0JSBQQVNTOiAz
N3gzMwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVk
LWltZy1zaXplLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpIHsKKyAgICAgICAgLy8gVGhlc2UgYXJyYXlzIHdp
bGwgYmVjb21lIHVubmVjZXNzYXJ5IGlmIHdlIGZpeCB0aGUgcm91bmRpbmcgaXNzdWVzIHRoYXQg
bWFrZSB1cyBub3QgYWx3YXlzIHJlcG9ydCAiMzd4MzMiLgorICAgICAgICB2YXIgZXhwZWN0ZWRX
aWR0aHMgPSBbMTAwLCA1MCwgMzMsIDI1LCAyMCwgMzYsIDM2LCAzNiwgMzUsIDM3LCAzNywgMzcs
IDM3LCAzNywgMzddOworICAgICAgICB2YXIgZXhwZWN0ZWRIZWlnaHRzID0gWzEwMCwgNTAsIDMz
LCAyNSwgMjAsIDMwLCAzMCwgMzIsIDMyLCAzMywgMzMsIDMzLCAzMywgMzMsIDMzXTsKKyAgICAg
ICAgZm9yIChpID0gMDsgaSA8IDE1OyArK2kpIHsKKyAgICAgICAgICB2YXIgb3ZhbCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdvdmFsJyArIGkpOworICAgICAgICAgIHZhciBzdGF0dXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHVzJyArIGkpOworICAgICAgICAgIHZhciBzaXpl
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaXplcycgKyBpKTsKKyAgICAgICAgICBpZiAo
KG92YWwud2lkdGggPT0gZXhwZWN0ZWRXaWR0aHNbaV0pICYmIChvdmFsLmhlaWdodCA9PSBleHBl
Y3RlZEhlaWdodHNbaV0pKSB7CisgICAgICAgICAgICBzdGF0dXMuc3R5bGUuY29sb3IgPSAiZ3Jl
ZW4iOworICAgICAgICAgICAgc3RhdHVzLmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICAgICAgICAg
IHNpemVzLmlubmVySFRNTCA9IG92YWwud2lkdGggKyAieCIgKyBvdmFsLmhlaWdodCArICgoKG92
YWwud2lkdGggIT0gMzcpIHx8IChvdmFsLmhlaWdodCAhPSAzMykpID8gIiBjbG9zZSBlbm91Z2gg
dG8gMzd4MzMiIDogIiIpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGF0dXMu
c3R5bGUuY29sb3IgPSAicmVkIjsKKyAgICAgICAgICAgIHN0YXR1cy5pbm5lckhUTUwgPSAiRkFJ
TCI7CisgICAgICAgICAgICBzaXplcy5pbm5lckhUTUwgPSBvdmFsLndpZHRoICsgIngiICsgb3Zh
bC5oZWlnaHQgKyAiIG5vdCBjbG9zZSBlbm91Z2ggdG8gMzd4MzMiOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgd2luZG93Lm9ubG9hZCA9IHVwZGF0ZTsKKyAgICA8L3Nj
cmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8cD5JZGVhbGx5LCBhbGwgb3ZhbHMgYmVs
b3cgc2hvdWxkIGJlIHJlcG9ydGVkIGFzIGhhdmluZyB3aWR0aD0zNywgaGVpZ2h0PTMzLiAgQ3Vy
cmVudGx5IHJvdW5kaW5nIHByZXZlbnRzIHVzIGZyb20gZG9pbmcgdGhpcy48L3A+CisgICAgPGlt
ZyBpZD0ib3ZhbDAiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMSUiPgor
ICAgIDxwPlpvb20gMSUgPHNwYW4gaWQ9InN0YXR1czAiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXpl
czAiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDEiIHNyYz0icmVzb3VyY2VzL292YWwu
cG5nIiBzdHlsZT0iem9vbTogMiUiPgorICAgIDxwPlpvb20gMiUgPHNwYW4gaWQ9InN0YXR1czEi
Pjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczEiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3Zh
bDIiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMyUiPgorICAgIDxwPlpv
b20gMyUgPHNwYW4gaWQ9InN0YXR1czIiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczIiPjwvc3Bh
bj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDMiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHls
ZT0iem9vbTogNCUiPgorICAgIDxwPlpvb20gNCUgPHNwYW4gaWQ9InN0YXR1czMiPjwvc3Bhbj46
IDxzcGFuIGlkPSJzaXplczMiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDQiIHNyYz0i
cmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogNSUiPgorICAgIDxwPlpvb20gNSUgPHNw
YW4gaWQ9InN0YXR1czQiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczQiPjwvc3Bhbj48L3A+Cisg
ICAgPGltZyBpZD0ib3ZhbDUiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTog
MzAlIj4KKyAgICA8cD5ab29tIDMwJSA8c3BhbiBpZD0ic3RhdHVzNSI+PC9zcGFuPjogPHNwYW4g
aWQ9InNpemVzNSI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNiIgc3JjPSJyZXNvdXJj
ZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAzMyUiPgorICAgIDxwPlpvb20gMzMlIDxzcGFuIGlk
PSJzdGF0dXM2Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM2Ij48L3NwYW4+PC9wPgorICAgIDxp
bWcgaWQ9Im92YWw3IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDUwJSI+
CisgICAgPHA+Wm9vbSA1MCUgPHNwYW4gaWQ9InN0YXR1czciPjwvc3Bhbj46IDxzcGFuIGlkPSJz
aXplczciPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDgiIHNyYz0icmVzb3VyY2VzL292
YWwucG5nIiBzdHlsZT0iem9vbTogNzAlIj4KKyAgICA8cD5ab29tIDcwJSA8c3BhbiBpZD0ic3Rh
dHVzOCI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzOCI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlk
PSJvdmFsOSIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxMDAlIj4KKyAg
ICA8cD5ab29tIDEwMCUgPHNwYW4gaWQ9InN0YXR1czkiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXpl
czkiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDEwIiBzcmM9InJlc291cmNlcy9vdmFs
LnBuZyIgc3R5bGU9Inpvb206IDExMSUiPgorICAgIDxwPlpvb20gMTExJSA8c3BhbiBpZD0ic3Rh
dHVzMTAiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczEwIj48L3NwYW4+PC9wPgorICAgIDxpbWcg
aWQ9Im92YWwxMSIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxNTAlIj4K
KyAgICA8cD5ab29tIDE1MCUgPHNwYW4gaWQ9InN0YXR1czExIj48L3NwYW4+OiA8c3BhbiBpZD0i
c2l6ZXMxMSI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMTIiIHNyYz0icmVzb3VyY2Vz
L292YWwucG5nIiBzdHlsZT0iem9vbTogMzMzJSI+CisgICAgPHA+Wm9vbSAzMzMlIDxzcGFuIGlk
PSJzdGF0dXMxMiI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzMTIiPjwvc3Bhbj48L3A+CisgICAg
PGltZyBpZD0ib3ZhbDEzIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQw
MCUiPgorICAgIDxwPlpvb20gNDAwJSA8c3BhbiBpZD0ic3RhdHVzMTMiPjwvc3Bhbj46IDxzcGFu
IGlkPSJzaXplczEzIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwxNCIgc3JjPSJyZXNv
dXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxMjM0JSI+CisgICAgPHA+Wm9vbSAxMjM0JSA8
c3BhbiBpZD0ic3RhdHVzMTQiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczE0Ij48L3NwYW4+PC9w
PgorICA8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMv
b3ZhbC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBpbWFnZS9wbmcKCgppVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBQ1VBQUFBaENBTUFBQUJwMFpJbkFBQUFBWE5TUjBJQXJzNGM2UUFBQUR4UVRGUkYxV08zCjd2
bnVWc05XVjhOWFdjUlpZY2RoWmNobGVjOTVoOVNIbk55Y25keWRuOTJmcWVDcHIrT3Z0ZVcxdnVp
K3hldkZ6ZTNOMS9IWDQvWGoKUjVqUit3QUFBQUYwVWs1VEFFRG0yR1lBQUFBQllrdEhSQUNJQlIx
SUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSgpUVVVIMmdjTUR4d1dubmhaY0FB
QUFCMXBWRmgwUTI5dGJXVnVkQUFBQUFBQVEzSmxZWFJsWkNCM2FYUm9JRWRKVFZCa0xtVUhBQUFB
CmpFbEVRVlE0eTdYVVN3NkFJQXdFVUtpSThoT1YrOTlWRWx5Z0FwMk5zMzVwQ3JRSThWZmticFo1
bWhlenk2NEpWQ2MwamFOMzNNY2MKMU1yeFJKN2E4VFd5MUl2dHRVM3RRNXcweW5rckdxZWd5S2lJ
bENyRkVxdFNWaHVydHF4V1ZxMVphVmJwckJTckZGd0w2d3M3STNaZgoyTjJENzRqTkJEaGYyS3lD
Y3cvdUVMaVA0RzZqLzhUb3o3a0FjekVKVVIwYVlaUUFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>
<flag name="review"
          id="55206"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="55207"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66257</attachid>
            <date>2010-09-01 13:38:37 -0700</date>
            <delta_ts>2010-09-02 18:03:30 -0700</delta_ts>
            <desc>patch v3.2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17603</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjYxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDktMDEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcG9ydCBjb3JyZWN0ICh1bnpvb21lZCkgaW1hZ2Ugc2l6ZXMgZm9yIHpvb21lZCBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4OQor
CisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCisKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOiBGYWN0b3Igcm91bmRpbmcgY29kZSBvdXQg
dG8gYSB0ZW1wbGF0aXplZCBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgc2hhcmVkLgorICAgICAgICAo
V2ViQ29yZTo6cm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQpOgorICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHA6IFJlcG9ydCB1bnpvb21lZCBzaXplIHRvIHNjcmlwdCB0aGF0IHF1ZXJpZXMgYW4g
aW1hZ2UncyB3aWR0aCBvciBoZWlnaHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVt
ZW50Ojp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQp
OgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3VtZW50LmNwcDogUmVwb3J0IHVuem9vbWVkIHNp
emUgaW4gdGhlIHBhZ2UgdGl0bGUgd2hlbiB2aWV3aW5nIGEgc3RhbmRhbG9uZSBpbWFnZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOiBVc2Ugc2hhcmVkIHJvdW5kaW5nIGNvZGUgZnJvbSBD
U1NQcmltaXRpdmVWYWx1ZSB0byBjb21wZW5zYXRlIGZvciBpbmV4YWN0bmVzcyBpbiB6b29tZWQg
c2l6ZXMuCisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3JBYnNvbHV0ZVpvb20pOgorCiAyMDEw
LTA5LTAxICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAJKHJldmlzaW9uIDY2NjExKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgV1RG
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFQgbWF4LCBU
IG1pbj4gaW5saW5lIFQgcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uKGRvdWJsZSB2YWx1ZSkK
K3sKKyAgICAvLyBEaW1lbnNpb24gY2FsY3VsYXRpb25zIGFyZSBpbXByZWNpc2UsIG9mdGVuIHJl
c3VsdGluZyBpbiB2YWx1ZXMgb2YgZS5nLgorICAgIC8vIDQ0Ljk5OTk4LiAgV2UgbmVlZCB0byBn
byBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRvIHRoZQorICAgIC8vIG5l
eHQgaW50ZWdlciB2YWx1ZS4KKyAgICB2YWx1ZSArPSAodmFsdWUgPCAwKSA/IC0wLjAxIDogKzAu
MDE7CisgICAgcmV0dXJuICgodmFsdWUgPiBtYXgpIHx8ICh2YWx1ZSA8IG1pbikpID8gMCA6IHN0
YXRpY19jYXN0PFQ+KHZhbHVlKTsKK30KKwogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENTU1ByaW1p
dGl2ZVZhbHVlKiwgU3RyaW5nPiBDU1NUZXh0Q2FjaGU7CiBzdGF0aWMgQ1NTVGV4dENhY2hlJiBj
c3NUZXh0Q2FjaGUoKQogewpAQCAtMzA1LDg1ICszMTQsMzcgQEAgdm9pZCBDU1NQcmltaXRpdmVW
YWx1ZTo6Y2xlYW51cCgpCiAKIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aElu
dChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUpCiB7Ci0gICAgZG91
YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSk7Ci0KLSAg
ICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFs
dWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdlCi0gICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQg
cm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCi0g
ICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAtMC4wMSA6ICswLjAxOwotCi0gICAgaWYgKHJlc3Vs
dCA+IElOVF9NQVggfHwgcmVzdWx0IDwgSU5UX01JTikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKKyAgICByZXR1cm4gcm91bmRGb3JJbXBy
ZWNpc2VDb252ZXJzaW9uPGludCwgSU5UX01BWCwgSU5UX01JTj4oY29tcHV0ZUxlbmd0aERvdWJs
ZShzdHlsZSwgcm9vdFN0eWxlKSk7CiB9CiAKIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZUxlbmd0aEludChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRv
dWJsZSBtdWx0aXBsaWVyKQogewotICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlTGVuZ3RoRG91
YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpOwotCi0gICAgLy8gVGhpcyBjb252ZXJz
aW9uIGlzIGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQu
OTk5OTguICBXZQotICAgIC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJl
YWxseSBjbG9zZSB0byB0aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3VsdCArPSByZXN1
bHQgPCAwID8gLTAuMDEgOiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBJTlRfTUFYIHx8IHJl
c3VsdCA8IElOVF9NSU4pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxp
bnQsIElOVF9NQVgsIElOVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHls
ZSwgbXVsdGlwbGllcikpOwogfQogCi1jb25zdCBpbnQgaW50TWF4Rm9yTGVuZ3RoID0gMHg3ZmZm
ZmZmOyAvLyBtYXggdmFsdWUgZm9yIGEgMjgtYml0IGludAorLy8gTGVuZ3RocyBleHBlY3QgYW4g
aW50IHRoYXQgaXMgb25seSAyOC1iaXRzLCBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciBhCisvLyBk
aWZmZXJlbnQgb3ZlcmZsb3cuCitjb25zdCBpbnQgaW50TWF4Rm9yTGVuZ3RoID0gMHg3ZmZmZmZm
OyAgICAgICAgLy8gbWF4IHZhbHVlIGZvciBhIDI4LWJpdCBpbnQKIGNvbnN0IGludCBpbnRNaW5G
b3JMZW5ndGggPSAoLTB4N2ZmZmZmZiAtIDEpOyAvLyBtaW4gdmFsdWUgZm9yIGEgMjgtYml0IGlu
dAogCi0vLyBMZW5ndGhzIGV4cGVjdCBhbiBpbnQgdGhhdCBpcyBvbmx5IDI4LWJpdHMsIHNvIHdl
IGhhdmUgdG8gY2hlY2sgZm9yIGEgZGlmZmVyZW50IG92ZXJmbG93LgogaW50IENTU1ByaW1pdGl2
ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSkKIHsKLSAgICBkb3VibGUgcmVzdWx0ID0gY29tcHV0ZUxlbmd0
aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKTsKLQotICAgIC8vIFRoaXMgY29udmVyc2lvbiBpcyBp
bXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4sIDQ0Ljk5OTk4LiAg
V2UKLSAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdyZSByZWFsbHkgY2xv
c2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQgKz0gcmVzdWx0IDwgMCA/
IC0wLjAxIDogKzAuMDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gaW50TWF4Rm9yTGVuZ3RoIHx8IHJl
c3VsdCA8IGludE1pbkZvckxlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4ocmVzdWx0KTsKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252
ZXJzaW9uPGludCwgaW50TWF4Rm9yTGVuZ3RoLCBpbnRNaW5Gb3JMZW5ndGg+KGNvbXB1dGVMZW5n
dGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSkpOwogfQogCi0vLyBMZW5ndGhzIGV4cGVjdCBhbiBp
bnQgdGhhdCBpcyBvbmx5IDI4LWJpdHMsIHNvIHdlIGhhdmUgdG8gY2hlY2sgZm9yIGEgZGlmZmVy
ZW50IG92ZXJmbG93LgogaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9y
TGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91Ymxl
IG11bHRpcGxpZXIpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhEb3VibGUo
c3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcik7Ci0KLSAgICAvLyBUaGlzIGNvbnZlcnNpb24g
aXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5
OC4gIFdlCi0gICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5
IGNsb3NlIHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJlc3VsdCA8
IDAgPyAtMC4wMSA6ICswLjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IGludE1heEZvckxlbmd0aCB8
fCByZXN1bHQgPCBpbnRNaW5Gb3JMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNl
Q29udmVyc2lvbjxpbnQsIGludE1heEZvckxlbmd0aCwgaW50TWluRm9yTGVuZ3RoPihjb21wdXRl
TGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpKTsKIH0KIAogc2hvcnQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhTaG9ydChSZW5kZXJTdHlsZSogc3R5bGUs
IFJlbmRlclN0eWxlKiByb290U3R5bGUpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVM
ZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSk7Ci0KLSAgICAvLyBUaGlzIGNvbnZlcnNpb24g
aXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5
OC4gIFdlCi0gICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5
IGNsb3NlIHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJlc3VsdCA8
IDAgPyAtMC4wMSA6ICswLjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IFNIUlRfTUFYIHx8IHJlc3Vs
dCA8IFNIUlRfTUlOKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
c2hvcnQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxz
aG9ydCwgU0hSVF9NQVgsIFNIUlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290
U3R5bGUpKTsKIH0KIAogc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhTaG9y
dChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0
aXBsaWVyKQogewotICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxl
LCByb290U3R5bGUsIG11bHRpcGxpZXIpOwotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIGlzIGlt
cHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTguICBX
ZQotICAgIC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9z
ZSB0byB0aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3VsdCArPSByZXN1bHQgPCAwID8g
LTAuMDEgOiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBTSFJUX01BWCB8fCByZXN1bHQgPCBT
SFJUX01JTikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0
PihyZXN1bHQpOworICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248c2hvcnQs
IFNIUlRfTUFYLCBTSFJUX01JTj4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxl
LCBtdWx0aXBsaWVyKSk7CiB9CiAKIGZsb2F0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVu
Z3RoRmxvYXQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBib29s
IGNvbXB1dGluZ0ZvbnRTaXplKQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCShyZXZpc2lv
biA2NjYxMSkKKysrIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiAKIHN0cnVjdCBMZW5ndGg7
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFQgbWF4LCBUIG1pbj4gaW5saW5lIFQgcm91bmRGb3JJ
bXByZWNpc2VDb252ZXJzaW9uKGRvdWJsZSB2YWx1ZSk7CisKIGNsYXNzIENTU1ByaW1pdGl2ZVZh
bHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBlbnVtIFVuaXRUeXBlcyB7Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjYxMSkKKysrIFdlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDEwICsy
NjcsOCBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQCiAgICAgICAg
ICAgICByZXR1cm4gd2lkdGg7CiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2YWlsYWJs
ZSwgdXNlIGl0cyB3aWR0aAotICAgICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKSB7Ci0g
ICAgICAgICAgICBmbG9hdCB6b29tRmFjdG9yID0gZG9jdW1lbnQoKS0+dmlldygpID8gZG9jdW1l
bnQoKS0+dmlldygpLT5wYWdlWm9vbUZhY3RvcigpIDogMS4wZjsKLSAgICAgICAgICAgIHJldHVy
biBtX2ltYWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6ZSh6b29tRmFjdG9yKS53aWR0aCgpOwot
ICAgICAgICB9CisgICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpCisgICAgICAgICAg
ICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNpemUoMS4wZikud2lkdGgoKTsK
ICAgICB9CiAKICAgICBpZiAoaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQpAQCAtMjc4LDcgKzI3
Niw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aChib29sIGlnbm9yZVAKICAgICBlbHNl
CiAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAgcmV0dXJuIHJlbmRl
ckJveCgpID8gcmVuZGVyQm94KCktPmNvbnRlbnRXaWR0aCgpIDogMDsKKyAgICBSZW5kZXJCb3gq
IGJveCA9IHJlbmRlckJveCgpOworICAgIHJldHVybiBib3ggPyBhZGp1c3RGb3JBYnNvbHV0ZVpv
b20oYm94LT5jb250ZW50V2lkdGgoKSwgYm94KSA6IDA7CiB9CiAKIGludCBIVE1MSW1hZ2VFbGVt
ZW50OjpoZWlnaHQoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMpIGNvbnN0CkBAIC0yOTEs
MTAgKzI5MCw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmUKICAg
ICAgICAgICAgIHJldHVybiBoZWlnaHQ7CiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2
YWlsYWJsZSwgdXNlIGl0cyBoZWlnaHQKLSAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2Uo
KSkgewotICAgICAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IGRvY3VtZW50KCktPnZpZXcoKSA/
IGRvY3VtZW50KCktPnZpZXcoKS0+cGFnZVpvb21GYWN0b3IoKSA6IDEuMGY7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNpemUoem9vbUZhY3RvcikuaGVp
Z2h0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkKKyAg
ICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6ZSgxLjBmKS5o
ZWlnaHQoKTsKICAgICB9CiAKICAgICBpZiAoaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQpAQCAt
MzAyLDcgKzI5OSw4IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmUK
ICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAgcmV0
dXJuIHJlbmRlckJveCgpID8gcmVuZGVyQm94KCktPmNvbnRlbnRIZWlnaHQoKSA6IDA7CisgICAg
UmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICByZXR1cm4gYm94ID8gYWRqdXN0Rm9y
QWJzb2x1dGVab29tKGJveC0+Y29udGVudEhlaWdodCgpLCBib3gpIDogMDsKIH0KIAogaW50IEhU
TUxJbWFnZUVsZW1lbnQ6Om5hdHVyYWxXaWR0aCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9JbWFnZURv
Y3VtZW50LmNwcAkocmV2aXNpb24gNjY2MTEpCisrKyBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw5IEBAIHZvaWQgSW1hZ2VEb2N1
bWVudFBhcnNlcjo6ZmluaXNoKCkKIAogICAgICAgICBjYWNoZWRJbWFnZS0+c2V0UmVzcG9uc2Uo
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNl
KCkpOwogCi0gICAgICAgIEludFNpemUgc2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemUocGFn
ZVpvb21GYWN0b3IoZG9jdW1lbnQoKSkpOworICAgICAgICAvLyBSZXBvcnQgdGhlIG5hdHVyYWwg
aW1hZ2Ugc2l6ZSBpbiB0aGUgcGFnZSB0aXRsZSwgcmVnYXJkbGVzcyBvZiB6b29tCisgICAgICAg
IC8vIGxldmVsLgorICAgICAgICBJbnRTaXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VTaXpl
KDEuMGYpOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpKSB7CiAgICAgICAgICAgICAvLyBDb21w
dXRlIHRoZSB0aXRsZSwgd2UgdXNlIHRoZSBkZWNvZGVkIGZpbGVuYW1lIG9mIHRoZSByZXNvdXJj
ZSwgZmFsbGluZwogICAgICAgICAgICAgLy8gYmFjayBvbiB0aGUgKGRlY29kZWQpIGhvc3RuYW1l
IGlmIHRoZXJlIGlzIG5vIHBhdGguCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2
aXNpb24gNjY2MTEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkZsb2F0UXVhZC5oIgpAQCAtOTg2LDEzICs5ODcsMTQgQEAgaW5saW5lIHZvaWQg
bWFrZU1hdHJpeFJlbmRlcmFibGUoVHJhbnNmbwogCiBpbmxpbmUgaW50IGFkanVzdEZvckFic29s
dXRlWm9vbShpbnQgdmFsdWUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgZmxvYXQg
em9vbUZhY3RvciA9IHJlbmRlcmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisgICAgZG91
YmxlIHpvb21GYWN0b3IgPSByZW5kZXJlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwogICAg
IGlmICh6b29tRmFjdG9yID09IDEpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAvLyBOZWVk
ZWQgYmVjYXVzZSBjb21wdXRlTGVuZ3RoSW50IHRydW5jYXRlcyAocmF0aGVyIHRoYW4gcm91bmRz
KSB3aGVuIHNjYWxpbmcgdXAuCiAgICAgaWYgKHpvb21GYWN0b3IgPiAxKQogICAgICAgICB2YWx1
ZSsrOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlIC8gem9vbUZhY3Rvcik7CisK
KyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgSU5UX01BWCwgSU5U
X01JTj4odmFsdWUgLyB6b29tRmFjdG9yKTsKIH0KIAogaW5saW5lIHZvaWQgYWRqdXN0SW50UmVj
dEZvckFic29sdXRlWm9vbShJbnRSZWN0JiByZWN0LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNjY2MTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOS0wMSAgUGV0ZXIgS2FzdGluZyAgPHBr
YXN0aW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVwb3J0IGNvcnJlY3QgKHVuem9vbWVkKSBpbWFnZSBzaXplcyBmb3Igem9v
bWVkIGltYWdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyMDg5CisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmc6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sOiBBZGRl
ZC4KKwogMjAxMC0wOS0wMSAgUm9iIEJ1aXMgIDxyd2xidWlzQGdtYWlsLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKK0lkZWFsbHksIGFsbCBvdmFscyBiZWxvdyBzaG91
bGQgYmUgcmVwb3J0ZWQgYXMgaGF2aW5nIHdpZHRoPTM3LCBoZWlnaHQ9MzMuIEN1cnJlbnRseSBy
b3VuZGluZyBwcmV2ZW50cyB1cyBmcm9tIGRvaW5nIHRoaXMuCisKKworWm9vbSAxJSBQQVNTOiAx
MDB4MTAwIGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gMiUgUEFTUzogNTB4NTAgY2xv
c2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAzJSBQQVNTOiAzM3gzMyBjbG9zZSBlbm91Z2gg
dG8gMzd4MzMKKworCitab29tIDQlIFBBU1M6IDI1eDI1IGNsb3NlIGVub3VnaCB0byAzN3gzMwor
CisKK1pvb20gNSUgUEFTUzogMjB4MjAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAz
MCUgUEFTUzogMzZ4MzAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSAzMyUgUEFTUzog
MzZ4MzAgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSA1MCUgUEFTUzogMzZ4MzIgY2xv
c2UgZW5vdWdoIHRvIDM3eDMzCisKKworWm9vbSA3MCUgUEFTUzogMzV4MzIgY2xvc2UgZW5vdWdo
IHRvIDM3eDMzCisKKworWm9vbSAxMDAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAxMTElIFBBU1M6
IDM3eDMzCisKKworWm9vbSAxNTAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAzMzMlIFBBU1M6IDM3
eDMzCisKKworWm9vbSA0MDAlIFBBU1M6IDM3eDMzCisKKworWm9vbSAxMjM0JSBQQVNTOiAzN3gz
MwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVkLWlt
Zy1zaXplLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICAr
ICoKQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpIHsKKyAgICAgICAgLy8gVGhlc2UgYXJyYXlzIHdpbGwg
YmVjb21lIHVubmVjZXNzYXJ5IGlmIHdlIGZpeCB0aGUgcm91bmRpbmcgaXNzdWVzIHRoYXQgbWFr
ZSB1cyBub3QgYWx3YXlzIHJlcG9ydCAiMzd4MzMiLgorICAgICAgICB2YXIgZXhwZWN0ZWRXaWR0
aHMgPSBbMTAwLCA1MCwgMzMsIDI1LCAyMCwgMzYsIDM2LCAzNiwgMzUsIDM3LCAzNywgMzcsIDM3
LCAzNywgMzddOworICAgICAgICB2YXIgZXhwZWN0ZWRIZWlnaHRzID0gWzEwMCwgNTAsIDMzLCAy
NSwgMjAsIDMwLCAzMCwgMzIsIDMyLCAzMywgMzMsIDMzLCAzMywgMzMsIDMzXTsKKyAgICAgICAg
Zm9yIChpID0gMDsgaSA8IDE1OyArK2kpIHsKKyAgICAgICAgICB2YXIgb3ZhbCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdvdmFsJyArIGkpOworICAgICAgICAgIHZhciBzdGF0dXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHVzJyArIGkpOworICAgICAgICAgIHZhciBzaXplcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaXplcycgKyBpKTsKKyAgICAgICAgICBpZiAoKG92
YWwud2lkdGggPT0gZXhwZWN0ZWRXaWR0aHNbaV0pICYmIChvdmFsLmhlaWdodCA9PSBleHBlY3Rl
ZEhlaWdodHNbaV0pKSB7CisgICAgICAgICAgICBzdGF0dXMuc3R5bGUuY29sb3IgPSAiZ3JlZW4i
OworICAgICAgICAgICAgc3RhdHVzLmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICAgICAgICAgIHNp
emVzLmlubmVySFRNTCA9IG92YWwud2lkdGggKyAieCIgKyBvdmFsLmhlaWdodCArICgoKG92YWwu
d2lkdGggIT0gMzcpIHx8IChvdmFsLmhlaWdodCAhPSAzMykpID8gIiBjbG9zZSBlbm91Z2ggdG8g
Mzd4MzMiIDogIiIpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGF0dXMuc3R5
bGUuY29sb3IgPSAicmVkIjsKKyAgICAgICAgICAgIHN0YXR1cy5pbm5lckhUTUwgPSAiRkFJTCI7
CisgICAgICAgICAgICBzaXplcy5pbm5lckhUTUwgPSBvdmFsLndpZHRoICsgIngiICsgb3ZhbC5o
ZWlnaHQgKyAiIG5vdCBjbG9zZSBlbm91Z2ggdG8gMzd4MzMiOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgd2luZG93Lm9ubG9hZCA9IHVwZGF0ZTsKKyAgICA8L3Njcmlw
dD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8cD5JZGVhbGx5LCBhbGwgb3ZhbHMgYmVsb3cg
c2hvdWxkIGJlIHJlcG9ydGVkIGFzIGhhdmluZyB3aWR0aD0zNywgaGVpZ2h0PTMzLiAgQ3VycmVu
dGx5IHJvdW5kaW5nIHByZXZlbnRzIHVzIGZyb20gZG9pbmcgdGhpcy48L3A+CisgICAgPGltZyBp
ZD0ib3ZhbDAiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMSUiPgorICAg
IDxwPlpvb20gMSUgPHNwYW4gaWQ9InN0YXR1czAiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczAi
Pjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDEiIHNyYz0icmVzb3VyY2VzL292YWwucG5n
IiBzdHlsZT0iem9vbTogMiUiPgorICAgIDxwPlpvb20gMiUgPHNwYW4gaWQ9InN0YXR1czEiPjwv
c3Bhbj46IDxzcGFuIGlkPSJzaXplczEiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDIi
IHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMyUiPgorICAgIDxwPlpvb20g
MyUgPHNwYW4gaWQ9InN0YXR1czIiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczIiPjwvc3Bhbj48
L3A+CisgICAgPGltZyBpZD0ib3ZhbDMiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0i
em9vbTogNCUiPgorICAgIDxwPlpvb20gNCUgPHNwYW4gaWQ9InN0YXR1czMiPjwvc3Bhbj46IDxz
cGFuIGlkPSJzaXplczMiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDQiIHNyYz0icmVz
b3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogNSUiPgorICAgIDxwPlpvb20gNSUgPHNwYW4g
aWQ9InN0YXR1czQiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczQiPjwvc3Bhbj48L3A+CisgICAg
PGltZyBpZD0ib3ZhbDUiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMzAl
Ij4KKyAgICA8cD5ab29tIDMwJSA8c3BhbiBpZD0ic3RhdHVzNSI+PC9zcGFuPjogPHNwYW4gaWQ9
InNpemVzNSI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNiIgc3JjPSJyZXNvdXJjZXMv
b3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAzMyUiPgorICAgIDxwPlpvb20gMzMlIDxzcGFuIGlkPSJz
dGF0dXM2Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM2Ij48L3NwYW4+PC9wPgorICAgIDxpbWcg
aWQ9Im92YWw3IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDUwJSI+Cisg
ICAgPHA+Wm9vbSA1MCUgPHNwYW4gaWQ9InN0YXR1czciPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXpl
czciPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDgiIHNyYz0icmVzb3VyY2VzL292YWwu
cG5nIiBzdHlsZT0iem9vbTogNzAlIj4KKyAgICA8cD5ab29tIDcwJSA8c3BhbiBpZD0ic3RhdHVz
OCI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzOCI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJv
dmFsOSIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxMDAlIj4KKyAgICA8
cD5ab29tIDEwMCUgPHNwYW4gaWQ9InN0YXR1czkiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczki
Pjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDEwIiBzcmM9InJlc291cmNlcy9vdmFsLnBu
ZyIgc3R5bGU9Inpvb206IDExMSUiPgorICAgIDxwPlpvb20gMTExJSA8c3BhbiBpZD0ic3RhdHVz
MTAiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczEwIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9
Im92YWwxMSIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxNTAlIj4KKyAg
ICA8cD5ab29tIDE1MCUgPHNwYW4gaWQ9InN0YXR1czExIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6
ZXMxMSI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMTIiIHNyYz0icmVzb3VyY2VzL292
YWwucG5nIiBzdHlsZT0iem9vbTogMzMzJSI+CisgICAgPHA+Wm9vbSAzMzMlIDxzcGFuIGlkPSJz
dGF0dXMxMiI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzMTIiPjwvc3Bhbj48L3A+CisgICAgPGlt
ZyBpZD0ib3ZhbDEzIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQwMCUi
PgorICAgIDxwPlpvb20gNDAwJSA8c3BhbiBpZD0ic3RhdHVzMTMiPjwvc3Bhbj46IDxzcGFuIGlk
PSJzaXplczEzIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwxNCIgc3JjPSJyZXNvdXJj
ZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiAxMjM0JSI+CisgICAgPHA+Wm9vbSAxMjM0JSA8c3Bh
biBpZD0ic3RhdHVzMTQiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczE0Ij48L3NwYW4+PC9wPgor
ICA8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvb3Zh
bC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjptaW1lLXR5cGUKICAgKyBpbWFnZS9wbmcKCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFB
Q1VBQUFBaENBTUFBQUJwMFpJbkFBQUFBWE5TUjBJQXJzNGM2UUFBQUR4UVRGUkYxV08zCjd2bnVW
c05XVjhOWFdjUlpZY2RoWmNobGVjOTVoOVNIbk55Y25keWRuOTJmcWVDcHIrT3Z0ZVcxdnVpK3hl
dkZ6ZTNOMS9IWDQvWGoKUjVqUit3QUFBQUYwVWs1VEFFRG0yR1lBQUFBQllrdEhSQUNJQlIxSUFB
QUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSgpUVVVIMmdjTUR4d1dubmhaY0FBQUFC
MXBWRmgwUTI5dGJXVnVkQUFBQUFBQVEzSmxZWFJsWkNCM2FYUm9JRWRKVFZCa0xtVUhBQUFBCmpF
bEVRVlE0eTdYVVN3NkFJQXdFVUtpSThoT1YrOTlWRWx5Z0FwMk5zMzVwQ3JRSThWZmticFo1bWhl
enk2NEpWQ2MwamFOMzNNY2MKMU1yeFJKN2E4VFd5MUl2dHRVM3RRNXcweW5rckdxZWd5S2lJbENy
RkVxdFNWaHVydHF4V1ZxMVphVmJwckJTckZGd0w2d3M3STNaZgoyTjJENzRqTkJEaGYyS3lDY3cv
dUVMaVA0RzZqLzhUb3o3a0FjekVKVVIwYVlaUUFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>
<flag name="review"
          id="55212"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="55213"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66448</attachid>
            <date>2010-09-02 18:03:30 -0700</date>
            <delta_ts>2010-09-02 18:04:06 -0700</delta_ts>
            <desc>patch v3.3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6393</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjY5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDktMDIgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBS
ZXBvcnQgY29ycmVjdCAodW56b29tZWQpIGltYWdlIHNpemVzIGZvciB6b29tZWQgaW1hZ2VzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwODkKKwor
ICAgICAgICBUZXN0OiBmYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDogRmFjdG9yIHJvdW5kaW5nIGNvZGUgb3V0IHRv
IGEgdGVtcGxhdGl6ZWQgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHNoYXJlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwOiBSZXBvcnQgdW56b29tZWQgc2l6ZSB0byBzY3JpcHQgdGhhdCBxdWVyaWVzIGFuIGlt
YWdlJ3Mgd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KToK
KyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHA6IFJlcG9ydCB1bnpvb21lZCBzaXpl
IGluIHRoZSBwYWdlIHRpdGxlIHdoZW4gdmlld2luZyBhIHN0YW5kYWxvbmUgaW1hZ2UuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2gpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuaDogVXNlIHNoYXJlZCByb3VuZGluZyBjb2RlIGZyb20gQ1NT
UHJpbWl0aXZlVmFsdWUgdG8gY29tcGVuc2F0ZSBmb3IgaW5leGFjdG5lc3MgaW4gem9vbWVkIHNp
emVzLgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0Rm9yQWJzb2x1dGVab29tKToKKwogMjAxMC0w
OS0wMiAgQWRhbSBMYW5nbGV5ICA8YWdsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNp
b24gNjY2OTUpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDYgKzQ1LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgVCBtYXgsIFQgbWluPiBpbmxpbmUg
VCByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb24oZG91YmxlIHZhbHVlKQoreworICAgIC8vIERp
bWVuc2lvbiBjYWxjdWxhdGlvbnMgYXJlIGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZh
bHVlcyBvZiBlLmcuCisgICAgLy8gNDQuOTk5OTguICBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCBy
b3VuZCBpZiB3ZSdyZSByZWFsbHkgY2xvc2UgdG8gdGhlCisgICAgLy8gbmV4dCBpbnRlZ2VyIHZh
bHVlLgorICAgIHZhbHVlICs9ICh2YWx1ZSA8IDApID8gLTAuMDEgOiArMC4wMTsKKyAgICByZXR1
cm4gKCh2YWx1ZSA+IG1heCkgfHwgKHZhbHVlIDwgbWluKSkgPyAwIDogc3RhdGljX2Nhc3Q8VD4o
dmFsdWUpOworfQorCiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqLCBT
dHJpbmc+IENTU1RleHRDYWNoZTsKIHN0YXRpYyBDU1NUZXh0Q2FjaGUmIGNzc1RleHRDYWNoZSgp
CiB7CkBAIC0zMDUsODIgKzMxNCwzNCBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVw
KCkKIAogaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJlbmRlclN0eWxl
KiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSkKIHsKLSAgICBkb3VibGUgcmVzdWx0ID0g
Y29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKTsKLQotICAgIC8vIFRoaXMgY29u
dmVyc2lvbiBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4s
IDQ0Ljk5OTk4LiAgV2UKLSAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdy
ZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQgKz0g
cmVzdWx0IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gSU5UX01BWCB8
fCByZXN1bHQgPCBJTlRfTUlOKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihyZXN1bHQpOworICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNp
b248aW50LCBJTlRfTUFYLCBJTlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290
U3R5bGUpKTsKIH0KIAogaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxp
ZXIpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJv
b3RTdHlsZSwgbXVsdGlwbGllcik7Ci0KLSAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1wcmVj
aXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdlCi0g
ICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRv
IHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAtMC4w
MSA6ICswLjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IElOVF9NQVggfHwgcmVzdWx0IDwgSU5UX01J
TikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0
KTsKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgSU5UX01BWCwg
SU5UX01JTj4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVy
KSk7CiB9CiAKLS8vIExlbmd0aHMgZXhwZWN0IGFuIGludCB0aGF0IGlzIG9ubHkgMjgtYml0cywg
c28gd2UgaGF2ZSB0byBjaGVjayBmb3IgYSBkaWZmZXJlbnQgb3ZlcmZsb3cuCisvLyBMZW5ndGhz
IGV4cGVjdCBhbiBpbnQgdGhhdCBpcyBvbmx5IDI4LWJpdHMsIHNvIHdlIGhhdmUgdG8gY2hlY2sg
Zm9yIGEKKy8vIGRpZmZlcmVudCBvdmVyZmxvdy4KIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29t
cHV0ZUxlbmd0aEludEZvckxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBy
b290U3R5bGUpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5
bGUsIHJvb3RTdHlsZSk7Ci0KLSAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1wcmVjaXNlLCBv
ZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdlCi0gICAgLy8g
bmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRvIHRoZSBu
ZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAtMC4wMSA6ICsw
LjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IGludE1heEZvckxlbmd0aCB8fCByZXN1bHQgPCBpbnRN
aW5Gb3JMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQs
IGludE1heEZvckxlbmd0aCwgaW50TWluRm9yTGVuZ3RoPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0
eWxlLCByb290U3R5bGUpKTsKIH0KIAotLy8gTGVuZ3RocyBleHBlY3QgYW4gaW50IHRoYXQgaXMg
b25seSAyOC1iaXRzLCBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciBhIGRpZmZlcmVudCBvdmVyZmxv
dy4KIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChSZW5k
ZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVy
KQogewotICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290
U3R5bGUsIG11bHRpcGxpZXIpOwotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIGlzIGltcHJlY2lz
ZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTguICBXZQotICAg
IC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0
aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3VsdCArPSByZXN1bHQgPCAwID8gLTAuMDEg
OiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBpbnRNYXhGb3JMZW5ndGggfHwgcmVzdWx0IDwg
aW50TWluRm9yTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihyZXN1bHQpOworICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248
aW50LCBpbnRNYXhGb3JMZW5ndGgsIGludE1pbkZvckxlbmd0aD4oY29tcHV0ZUxlbmd0aERvdWJs
ZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSk7CiB9CiAKIHNob3J0IENTU1ByaW1pdGl2
ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlKQogewotICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlTGVuZ3RoRG91Ymxl
KHN0eWxlLCByb290U3R5bGUpOwotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIGlzIGltcHJlY2lz
ZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTguICBXZQotICAg
IC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0
aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3VsdCArPSByZXN1bHQgPCAwID8gLTAuMDEg
OiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBTSFJUX01BWCB8fCByZXN1bHQgPCBTSFJUX01J
TikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0PihyZXN1
bHQpOworICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248c2hvcnQsIFNIUlRf
TUFYLCBTSFJUX01JTj4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKSk7CiB9
CiAKIHNob3J0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikKIHsK
LSAgICBkb3VibGUgcmVzdWx0ID0gY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxl
LCBtdWx0aXBsaWVyKTsKLQotICAgIC8vIFRoaXMgY29udmVyc2lvbiBpcyBpbXByZWNpc2UsIG9m
dGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4sIDQ0Ljk5OTk4LiAgV2UKLSAgICAvLyBu
ZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdyZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5l
eHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQgKz0gcmVzdWx0IDwgMCA/IC0wLjAxIDogKzAu
MDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gU0hSVF9NQVggfHwgcmVzdWx0IDwgU0hSVF9NSU4pCi0g
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaG9ydD4ocmVzdWx0KTsK
KyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPHNob3J0LCBTSFJUX01BWCwg
U0hSVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGll
cikpOwogfQogCiBmbG9hdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEZsb2F0KFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgYm9vbCBjb21wdXRpbmdG
b250U2l6ZSkK
</data>
<flag name="commit-queue"
          id="55478"
          type_id="3"
          status="+"
          setter="pkasting"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66449</attachid>
            <date>2010-09-02 18:04:06 -0700</date>
            <delta_ts>2010-09-03 14:20:04 -0700</delta_ts>
            <desc>patch v3.4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17370</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjY5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDktMDIgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBS
ZXBvcnQgY29ycmVjdCAodW56b29tZWQpIGltYWdlIHNpemVzIGZvciB6b29tZWQgaW1hZ2VzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwODkKKwor
ICAgICAgICBUZXN0OiBmYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDogRmFjdG9yIHJvdW5kaW5nIGNvZGUgb3V0IHRv
IGEgdGVtcGxhdGl6ZWQgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHNoYXJlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwOiBSZXBvcnQgdW56b29tZWQgc2l6ZSB0byBzY3JpcHQgdGhhdCBxdWVyaWVzIGFuIGlt
YWdlJ3Mgd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KToK
KyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHA6IFJlcG9ydCB1bnpvb21lZCBzaXpl
IGluIHRoZSBwYWdlIHRpdGxlIHdoZW4gdmlld2luZyBhIHN0YW5kYWxvbmUgaW1hZ2UuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2gpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuaDogVXNlIHNoYXJlZCByb3VuZGluZyBjb2RlIGZyb20gQ1NT
UHJpbWl0aXZlVmFsdWUgdG8gY29tcGVuc2F0ZSBmb3IgaW5leGFjdG5lc3MgaW4gem9vbWVkIHNp
emVzLgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0Rm9yQWJzb2x1dGVab29tKToKKwogMjAxMC0w
OS0wMiAgQWRhbSBMYW5nbGV5ICA8YWdsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNp
b24gNjY2OTUpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDYgKzQ1LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgVCBtYXgsIFQgbWluPiBpbmxpbmUg
VCByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb24oZG91YmxlIHZhbHVlKQoreworICAgIC8vIERp
bWVuc2lvbiBjYWxjdWxhdGlvbnMgYXJlIGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZh
bHVlcyBvZiBlLmcuCisgICAgLy8gNDQuOTk5OTguICBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCBy
b3VuZCBpZiB3ZSdyZSByZWFsbHkgY2xvc2UgdG8gdGhlCisgICAgLy8gbmV4dCBpbnRlZ2VyIHZh
bHVlLgorICAgIHZhbHVlICs9ICh2YWx1ZSA8IDApID8gLTAuMDEgOiArMC4wMTsKKyAgICByZXR1
cm4gKCh2YWx1ZSA+IG1heCkgfHwgKHZhbHVlIDwgbWluKSkgPyAwIDogc3RhdGljX2Nhc3Q8VD4o
dmFsdWUpOworfQorCiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqLCBT
dHJpbmc+IENTU1RleHRDYWNoZTsKIHN0YXRpYyBDU1NUZXh0Q2FjaGUmIGNzc1RleHRDYWNoZSgp
CiB7CkBAIC0zMDUsODIgKzMxNCwzNCBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVw
KCkKIAogaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJlbmRlclN0eWxl
KiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSkKIHsKLSAgICBkb3VibGUgcmVzdWx0ID0g
Y29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKTsKLQotICAgIC8vIFRoaXMgY29u
dmVyc2lvbiBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4s
IDQ0Ljk5OTk4LiAgV2UKLSAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdy
ZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQgKz0g
cmVzdWx0IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gSU5UX01BWCB8
fCByZXN1bHQgPCBJTlRfTUlOKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihyZXN1bHQpOworICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNp
b248aW50LCBJTlRfTUFYLCBJTlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290
U3R5bGUpKTsKIH0KIAogaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxp
ZXIpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJv
b3RTdHlsZSwgbXVsdGlwbGllcik7Ci0KLSAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1wcmVj
aXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdlCi0g
ICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRv
IHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAtMC4w
MSA6ICswLjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IElOVF9NQVggfHwgcmVzdWx0IDwgSU5UX01J
TikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0
KTsKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgSU5UX01BWCwg
SU5UX01JTj4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVy
KSk7CiB9CiAKLS8vIExlbmd0aHMgZXhwZWN0IGFuIGludCB0aGF0IGlzIG9ubHkgMjgtYml0cywg
c28gd2UgaGF2ZSB0byBjaGVjayBmb3IgYSBkaWZmZXJlbnQgb3ZlcmZsb3cuCisvLyBMZW5ndGhz
IGV4cGVjdCBhbiBpbnQgdGhhdCBpcyBvbmx5IDI4LWJpdHMsIHNvIHdlIGhhdmUgdG8gY2hlY2sg
Zm9yIGEKKy8vIGRpZmZlcmVudCBvdmVyZmxvdy4KIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29t
cHV0ZUxlbmd0aEludEZvckxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBy
b290U3R5bGUpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5
bGUsIHJvb3RTdHlsZSk7Ci0KLSAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1wcmVjaXNlLCBv
ZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdlCi0gICAgLy8g
bmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRvIHRoZSBu
ZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAtMC4wMSA6ICsw
LjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IGludE1heEZvckxlbmd0aCB8fCByZXN1bHQgPCBpbnRN
aW5Gb3JMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQs
IGludE1heEZvckxlbmd0aCwgaW50TWluRm9yTGVuZ3RoPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0
eWxlLCByb290U3R5bGUpKTsKIH0KIAotLy8gTGVuZ3RocyBleHBlY3QgYW4gaW50IHRoYXQgaXMg
b25seSAyOC1iaXRzLCBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciBhIGRpZmZlcmVudCBvdmVyZmxv
dy4KIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChSZW5k
ZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVy
KQogewotICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290
U3R5bGUsIG11bHRpcGxpZXIpOwotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIGlzIGltcHJlY2lz
ZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTguICBXZQotICAg
IC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0
aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3VsdCArPSByZXN1bHQgPCAwID8gLTAuMDEg
OiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBpbnRNYXhGb3JMZW5ndGggfHwgcmVzdWx0IDwg
aW50TWluRm9yTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihyZXN1bHQpOworICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248
aW50LCBpbnRNYXhGb3JMZW5ndGgsIGludE1pbkZvckxlbmd0aD4oY29tcHV0ZUxlbmd0aERvdWJs
ZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSk7CiB9CiAKIHNob3J0IENTU1ByaW1pdGl2
ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlKQogewotICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlTGVuZ3RoRG91Ymxl
KHN0eWxlLCByb290U3R5bGUpOwotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIGlzIGltcHJlY2lz
ZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTguICBXZQotICAg
IC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0
aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3VsdCArPSByZXN1bHQgPCAwID8gLTAuMDEg
OiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBTSFJUX01BWCB8fCByZXN1bHQgPCBTSFJUX01J
TikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0PihyZXN1
bHQpOworICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248c2hvcnQsIFNIUlRf
TUFYLCBTSFJUX01JTj4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKSk7CiB9
CiAKIHNob3J0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikKIHsK
LSAgICBkb3VibGUgcmVzdWx0ID0gY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxl
LCBtdWx0aXBsaWVyKTsKLQotICAgIC8vIFRoaXMgY29udmVyc2lvbiBpcyBpbXByZWNpc2UsIG9m
dGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4sIDQ0Ljk5OTk4LiAgV2UKLSAgICAvLyBu
ZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdyZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5l
eHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQgKz0gcmVzdWx0IDwgMCA/IC0wLjAxIDogKzAu
MDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gU0hSVF9NQVggfHwgcmVzdWx0IDwgU0hSVF9NSU4pCi0g
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaG9ydD4ocmVzdWx0KTsK
KyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPHNob3J0LCBTSFJUX01BWCwg
U0hSVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGll
cikpOwogfQogCiBmbG9hdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEZsb2F0KFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgYm9vbCBjb21wdXRpbmdG
b250U2l6ZSkKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkocmV2aXNpb24gNjY2OTUpCisr
KyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCw4IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBzdHJ1Y3QgTGVuZ3RoOwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBUIG1heCwgVCBtaW4+IGlubGluZSBUIHJvdW5kRm9ySW1wcmVjaXNlQ29u
dmVyc2lvbihkb3VibGUgdmFsdWUpOworCiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZSA6IHB1Ymxp
YyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAgZW51bSBVbml0VHlwZXMgewpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNjY2OTUpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NywxMCArMjY3LDggQEAgaW50
IEhUTUxJbWFnZUVsZW1lbnQ6OndpZHRoKGJvb2wgaWdub3JlUAogICAgICAgICAgICAgcmV0dXJu
IHdpZHRoOwogCiAgICAgICAgIC8vIGlmIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVzZSBpdHMg
d2lkdGgKLSAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkgewotICAgICAgICAgICAg
ZmxvYXQgem9vbUZhY3RvciA9IGRvY3VtZW50KCktPnZpZXcoKSA/IGRvY3VtZW50KCktPnZpZXco
KS0+cGFnZVpvb21GYWN0b3IoKSA6IDEuMGY7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxv
YWRlci5pbWFnZSgpLT5pbWFnZVNpemUoem9vbUZhY3Rvcikud2lkdGgoKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1f
aW1hZ2VMb2FkZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKDEuMGYpLndpZHRoKCk7CiAgICAgfQogCiAg
ICAgaWYgKGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKQEAgLTI3OCw3ICsyNzYsOCBAQCBpbnQg
SFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQCiAgICAgZWxzZQogICAgICAgICBk
b2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKIAotICAgIHJldHVybiByZW5kZXJCb3goKSA/IHJl
bmRlckJveCgpLT5jb250ZW50V2lkdGgoKSA6IDA7CisgICAgUmVuZGVyQm94KiBib3ggPSByZW5k
ZXJCb3goKTsKKyAgICByZXR1cm4gYm94ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKGJveC0+Y29u
dGVudFdpZHRoKCksIGJveCkgOiAwOwogfQogCiBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0
KGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKSBjb25zdApAQCAtMjkxLDEwICsyOTAsOCBA
QCBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlCiAgICAgICAgICAgICBy
ZXR1cm4gaGVpZ2h0OwogCiAgICAgICAgIC8vIGlmIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVz
ZSBpdHMgaGVpZ2h0Ci0gICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpIHsKLSAgICAg
ICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBkb2N1bWVudCgpLT52aWV3KCkgPyBkb2N1bWVudCgp
LT52aWV3KCktPnBhZ2Vab29tRmFjdG9yKCkgOiAxLjBmOwotICAgICAgICAgICAgcmV0dXJuIG1f
aW1hZ2VMb2FkZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKHpvb21GYWN0b3IpLmhlaWdodCgpOwotICAg
ICAgICB9CisgICAgICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFnZVNpemUoMS4wZikuaGVpZ2h0KCk7CiAg
ICAgfQogCiAgICAgaWYgKGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKQEAgLTMwMiw3ICsyOTks
OCBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlCiAgICAgZWxzZQog
ICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKIAotICAgIHJldHVybiByZW5kZXJC
b3goKSA/IHJlbmRlckJveCgpLT5jb250ZW50SGVpZ2h0KCkgOiAwOworICAgIFJlbmRlckJveCog
Ym94ID0gcmVuZGVyQm94KCk7CisgICAgcmV0dXJuIGJveCA/IGFkanVzdEZvckFic29sdXRlWm9v
bShib3gtPmNvbnRlbnRIZWlnaHQoKSwgYm94KSA6IDA7CiB9CiAKIGludCBIVE1MSW1hZ2VFbGVt
ZW50OjpuYXR1cmFsV2lkdGgoKSBjb25zdApJbmRleDogV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDY2Njk1KQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsOSBAQCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6
OmZpbmlzaCgpCiAKICAgICAgICAgY2FjaGVkSW1hZ2UtPnNldFJlc3BvbnNlKGRvY3VtZW50KCkt
PmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpKTsKIAotICAg
ICAgICBJbnRTaXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VTaXplKHBhZ2Vab29tRmFjdG9y
KGRvY3VtZW50KCkpKTsKKyAgICAgICAgLy8gUmVwb3J0IHRoZSBuYXR1cmFsIGltYWdlIHNpemUg
aW4gdGhlIHBhZ2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Ygem9vbQorICAgICAgICAvLyBsZXZlbC4K
KyAgICAgICAgSW50U2l6ZSBzaXplID0gY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZSgxLjBmKTsKICAg
ICAgICAgaWYgKHNpemUud2lkdGgoKSkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgdGl0
bGUsIHdlIHVzZSB0aGUgZGVjb2RlZCBmaWxlbmFtZSBvZiB0aGUgcmVzb3VyY2UsIGZhbGxpbmcK
ICAgICAgICAgICAgIC8vIGJhY2sgb24gdGhlIChkZWNvZGVkKSBob3N0bmFtZSBpZiB0aGVyZSBp
cyBubyBwYXRoLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDY2Njk1
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJG
bG9hdFF1YWQuaCIKQEAgLTk4NiwxMyArOTg3LDE0IEBAIGlubGluZSB2b2lkIG1ha2VNYXRyaXhS
ZW5kZXJhYmxlKFRyYW5zZm8KIAogaW5saW5lIGludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50
IHZhbHVlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIGZsb2F0IHpvb21GYWN0b3Ig
PSByZW5kZXJlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOworICAgIGRvdWJsZSB6b29tRmFj
dG9yID0gcmVuZGVyZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKICAgICBpZiAoem9vbUZh
Y3RvciA9PSAxKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgLy8gTmVlZGVkIGJlY2F1c2Ug
Y29tcHV0ZUxlbmd0aEludCB0cnVuY2F0ZXMgKHJhdGhlciB0aGFuIHJvdW5kcykgd2hlbiBzY2Fs
aW5nIHVwLgogICAgIGlmICh6b29tRmFjdG9yID4gMSkKICAgICAgICAgdmFsdWUrKzsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAvIHpvb21GYWN0b3IpOworCisgICAgcmV0dXJu
IHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQsIElOVF9NQVgsIElOVF9NSU4+KHZhbHVl
IC8gem9vbUZhY3Rvcik7CiB9CiAKIGlubGluZSB2b2lkIGFkanVzdEludFJlY3RGb3JBYnNvbHV0
ZVpvb20oSW50UmVjdCYgcmVjdCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDY2Njk1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTAtMDktMDIgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBS
ZXBvcnQgY29ycmVjdCAodW56b29tZWQpIGltYWdlIHNpemVzIGZvciB6b29tZWQgaW1hZ2VzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwODkKKwor
ICAgICAgICAqIGZhc3QvaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZzogQWRkZWQuCisgICAgICAg
ICogZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA5
LTAyICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29t
ZWQtaW1nLXNpemUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ2IEBACitJZGVhbGx5LCBhbGwgb3ZhbHMgYmVsb3cgc2hvdWxkIGJl
IHJlcG9ydGVkIGFzIGhhdmluZyB3aWR0aD0zNywgaGVpZ2h0PTMzLiBDdXJyZW50bHkgcm91bmRp
bmcgcHJldmVudHMgdXMgZnJvbSBkb2luZyB0aGlzLgorCisKK1pvb20gMSUgUEFTUzogMTAweDEw
MCBjbG9zZSBlbm91Z2ggdG8gMzd4MzMKKworCitab29tIDIlIFBBU1M6IDUweDUwIGNsb3NlIGVu
b3VnaCB0byAzN3gzMworCisKK1pvb20gMyUgUEFTUzogMzN4MzMgY2xvc2UgZW5vdWdoIHRvIDM3
eDMzCisKKworWm9vbSA0JSBQQVNTOiAyNXgyNSBjbG9zZSBlbm91Z2ggdG8gMzd4MzMKKworCita
b29tIDUlIFBBU1M6IDIweDIwIGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gMzAlIFBB
U1M6IDM2eDMwIGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gMzMlIFBBU1M6IDM2eDMw
IGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gNTAlIFBBU1M6IDM2eDMyIGNsb3NlIGVu
b3VnaCB0byAzN3gzMworCisKK1pvb20gNzAlIFBBU1M6IDM1eDMyIGNsb3NlIGVub3VnaCB0byAz
N3gzMworCisKK1pvb20gMTAwJSBQQVNTOiAzN3gzMworCisKK1pvb20gMTExJSBQQVNTOiAzN3gz
MworCisKK1pvb20gMTUwJSBQQVNTOiAzN3gzMworCisKK1pvb20gMzMzJSBQQVNTOiAzN3gzMwor
CisKK1pvb20gNDAwJSBQQVNTOiAzN3gzMworCisKK1pvb20gMTIzNCUgUEFTUzogMzd4MzMKClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6
ZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ICBmdW5jdGlvbiB1cGRhdGUoKSB7CisgICAgICAgIC8vIFRoZXNlIGFycmF5cyB3aWxsIGJlY29t
ZSB1bm5lY2Vzc2FyeSBpZiB3ZSBmaXggdGhlIHJvdW5kaW5nIGlzc3VlcyB0aGF0IG1ha2UgdXMg
bm90IGFsd2F5cyByZXBvcnQgIjM3eDMzIi4KKyAgICAgICAgdmFyIGV4cGVjdGVkV2lkdGhzID0g
WzEwMCwgNTAsIDMzLCAyNSwgMjAsIDM2LCAzNiwgMzYsIDM1LCAzNywgMzcsIDM3LCAzNywgMzcs
IDM3XTsKKyAgICAgICAgdmFyIGV4cGVjdGVkSGVpZ2h0cyA9IFsxMDAsIDUwLCAzMywgMjUsIDIw
LCAzMCwgMzAsIDMyLCAzMiwgMzMsIDMzLCAzMywgMzMsIDMzLCAzM107CisgICAgICAgIGZvciAo
aSA9IDA7IGkgPCAxNTsgKytpKSB7CisgICAgICAgICAgdmFyIG92YWwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnb3ZhbCcgKyBpKTsKKyAgICAgICAgICB2YXIgc3RhdHVzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3N0YXR1cycgKyBpKTsKKyAgICAgICAgICB2YXIgc2l6ZXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2l6ZXMnICsgaSk7CisgICAgICAgICAgaWYgKChvdmFsLndp
ZHRoID09IGV4cGVjdGVkV2lkdGhzW2ldKSAmJiAob3ZhbC5oZWlnaHQgPT0gZXhwZWN0ZWRIZWln
aHRzW2ldKSkgeworICAgICAgICAgICAgc3RhdHVzLnN0eWxlLmNvbG9yID0gImdyZWVuIjsKKyAg
ICAgICAgICAgIHN0YXR1cy5pbm5lckhUTUwgPSAiUEFTUyI7CisgICAgICAgICAgICBzaXplcy5p
bm5lckhUTUwgPSBvdmFsLndpZHRoICsgIngiICsgb3ZhbC5oZWlnaHQgKyAoKChvdmFsLndpZHRo
ICE9IDM3KSB8fCAob3ZhbC5oZWlnaHQgIT0gMzMpKSA/ICIgY2xvc2UgZW5vdWdoIHRvIDM3eDMz
IiA6ICIiKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RhdHVzLnN0eWxlLmNv
bG9yID0gInJlZCI7CisgICAgICAgICAgICBzdGF0dXMuaW5uZXJIVE1MID0gIkZBSUwiOworICAg
ICAgICAgICAgc2l6ZXMuaW5uZXJIVE1MID0gb3ZhbC53aWR0aCArICJ4IiArIG92YWwuaGVpZ2h0
ICsgIiBub3QgY2xvc2UgZW5vdWdoIHRvIDM3eDMzIjsKKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIHdpbmRvdy5vbmxvYWQgPSB1cGRhdGU7CisgICAgPC9zY3JpcHQ+Cisg
IDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+SWRlYWxseSwgYWxsIG92YWxzIGJlbG93IHNob3Vs
ZCBiZSByZXBvcnRlZCBhcyBoYXZpbmcgd2lkdGg9MzcsIGhlaWdodD0zMy4gIEN1cnJlbnRseSBy
b3VuZGluZyBwcmV2ZW50cyB1cyBmcm9tIGRvaW5nIHRoaXMuPC9wPgorICAgIDxpbWcgaWQ9Im92
YWwwIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDElIj4KKyAgICA8cD5a
b29tIDElIDxzcGFuIGlkPSJzdGF0dXMwIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMwIj48L3Nw
YW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwxIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5
bGU9Inpvb206IDIlIj4KKyAgICA8cD5ab29tIDIlIDxzcGFuIGlkPSJzdGF0dXMxIj48L3NwYW4+
OiA8c3BhbiBpZD0ic2l6ZXMxIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwyIiBzcmM9
InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDMlIj4KKyAgICA8cD5ab29tIDMlIDxz
cGFuIGlkPSJzdGF0dXMyIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMyIj48L3NwYW4+PC9wPgor
ICAgIDxpbWcgaWQ9Im92YWwzIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206
IDQlIj4KKyAgICA8cD5ab29tIDQlIDxzcGFuIGlkPSJzdGF0dXMzIj48L3NwYW4+OiA8c3BhbiBp
ZD0ic2l6ZXMzIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWw0IiBzcmM9InJlc291cmNl
cy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDUlIj4KKyAgICA8cD5ab29tIDUlIDxzcGFuIGlkPSJz
dGF0dXM0Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM0Ij48L3NwYW4+PC9wPgorICAgIDxpbWcg
aWQ9Im92YWw1IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDMwJSI+Cisg
ICAgPHA+Wm9vbSAzMCUgPHNwYW4gaWQ9InN0YXR1czUiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXpl
czUiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDYiIHNyYz0icmVzb3VyY2VzL292YWwu
cG5nIiBzdHlsZT0iem9vbTogMzMlIj4KKyAgICA8cD5ab29tIDMzJSA8c3BhbiBpZD0ic3RhdHVz
NiI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzNiI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJv
dmFsNyIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA1MCUiPgorICAgIDxw
Plpvb20gNTAlIDxzcGFuIGlkPSJzdGF0dXM3Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM3Ij48
L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWw4IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIg
c3R5bGU9Inpvb206IDcwJSI+CisgICAgPHA+Wm9vbSA3MCUgPHNwYW4gaWQ9InN0YXR1czgiPjwv
c3Bhbj46IDxzcGFuIGlkPSJzaXplczgiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDki
IHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMTAwJSI+CisgICAgPHA+Wm9v
bSAxMDAlIDxzcGFuIGlkPSJzdGF0dXM5Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM5Ij48L3Nw
YW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwxMCIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0
eWxlPSJ6b29tOiAxMTElIj4KKyAgICA8cD5ab29tIDExMSUgPHNwYW4gaWQ9InN0YXR1czEwIj48
L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMxMCI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFs
MTEiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMTUwJSI+CisgICAgPHA+
Wm9vbSAxNTAlIDxzcGFuIGlkPSJzdGF0dXMxMSI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzMTEi
Pjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDEyIiBzcmM9InJlc291cmNlcy9vdmFsLnBu
ZyIgc3R5bGU9Inpvb206IDMzMyUiPgorICAgIDxwPlpvb20gMzMzJSA8c3BhbiBpZD0ic3RhdHVz
MTIiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczEyIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9
Im92YWwxMyIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA0MDAlIj4KKyAg
ICA8cD5ab29tIDQwMCUgPHNwYW4gaWQ9InN0YXR1czEzIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6
ZXMxMyI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMTQiIHNyYz0icmVzb3VyY2VzL292
YWwucG5nIiBzdHlsZT0iem9vbTogMTIzNCUiPgorICAgIDxwPlpvb20gMTIzNCUgPHNwYW4gaWQ9
InN0YXR1czE0Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMxNCI+PC9zcGFuPjwvcD4KKyAgPC9i
b2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvem9vbWVkLWltZy1zaXplLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZwpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNVQUFB
QWhDQU1BQUFCcDBaSW5BQUFBQVhOU1IwSUFyczRjNlFBQUFEeFFURlJGMVdPMwo3dm51VnNOV1Y4
TlhXY1JaWWNkaFpjaGxlYzk1aDlTSG5OeWNuZHlkbjkyZnFlQ3ByK092dGVXMXZ1aSt4ZXZGemUz
TjEvSFg0L1hqClI1alIrd0FBQUFGMFVrNVRBRURtMkdZQUFBQUJZa3RIUkFDSUJSMUlBQUFBQ1hC
SVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkoKVFVVSDJnY01EeHdXbm5oWmNBQUFBQjFwVkZo
MFEyOXRiV1Z1ZEFBQUFBQUFRM0psWVhSbFpDQjNhWFJvSUVkSlRWQmtMbVVIQUFBQQpqRWxFUVZR
NHk3WFVTdzZBSUF3RVVLaUk4aE9WKzk5VkVseWdBcDJOczM1cENyUUk4VmZrYnBaNW1oZXp5NjRK
VkNjMGphTjMzTWNjCjFNcnhSSjdhOFRXeTFJdnR0VTN0UTV3MHlua3JHcWVneUtpSWxDckZFcXRT
Vmh1cnRxeFdWcTFaYVZicHJCU3JGRndMNndzN0kzWmYKMk4yRDc0ak5CRGhmMkt5Q2N3L3VFTGlQ
NEc2ai84VG96N2tBY3pFSlVSMGFZWlFBQUFBQVNVVk9SSzVDWUlJPQoK
</data>
<flag name="commit-queue"
          id="55479"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66540</attachid>
            <date>2010-09-03 14:20:04 -0700</date>
            <delta_ts>2010-09-03 16:04:51 -0700</delta_ts>
            <desc>patch v3.5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17190</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Njc3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDktMDMgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBS
ZXBvcnQgY29ycmVjdCAodW56b29tZWQpIGltYWdlIHNpemVzIGZvciB6b29tZWQgaW1hZ2VzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwODkKKwor
ICAgICAgICBUZXN0OiBmYXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDogRmFjdG9yIHJvdW5kaW5nIGNvZGUgb3V0IHRv
IGEgdGVtcGxhdGl6ZWQgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHNoYXJlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQpOgor
ICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOiBGYWN0b3Igcm91bmRpbmcgY29kZSBv
dXQgdG8gYSB0ZW1wbGF0aXplZCBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgc2hhcmVkLgorICAgICAg
ICAoV2ViQ29yZTo6cm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwOiBSZXBvcnQgdW56b29tZWQgc2l6ZSB0byBzY3JpcHQgdGhh
dCBxdWVyaWVzIGFuIGltYWdlJ3Mgd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHA6IFJlcG9y
dCB1bnpvb21lZCBzaXplIGluIHRoZSBwYWdlIHRpdGxlIHdoZW4gdmlld2luZyBhIHN0YW5kYWxv
bmUgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDogVXNlIHNoYXJlZCByb3VuZGlu
ZyBjb2RlIGZyb20gQ1NTUHJpbWl0aXZlVmFsdWUgdG8gY29tcGVuc2F0ZSBmb3IgaW5leGFjdG5l
c3MgaW4gem9vbWVkIHNpemVzLgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0Rm9yQWJzb2x1dGVa
b29tKToKKwogMjAxMC0wOS0wMyAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCShyZXZpc2lvbiA2Njc2NCkKKysrIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA1LDgyICszMDUsMzQgQEAgdm9pZCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y2xlYW51cCgpCiAKIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZUxlbmd0aEludChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUpCiB7
Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHls
ZSk7Ci0KLSAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1bHRp
bmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdlCi0gICAgLy8gbmVlZCB0byBnbyBh
aGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRvIHRoZSBuZXh0IGludGVnZXIg
dmFsdWUuCi0gICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAtMC4wMSA6ICswLjAxOwotCi0gICAg
aWYgKHJlc3VsdCA+IElOVF9NQVggfHwgcmVzdWx0IDwgSU5UX01JTikKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKKyAgICByZXR1cm4gcm91
bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgSU5UX01BWCwgSU5UX01JTj4oY29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKSk7CiB9CiAKIGludCBDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aEludChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290
U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyKQogewotICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRl
TGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpOwotCi0gICAgLy8gVGhp
cyBjb252ZXJzaW9uIGlzIGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwg
ZS5nLiwgNDQuOTk5OTguICBXZQotICAgIC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlm
IHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3Vs
dCArPSByZXN1bHQgPCAwID8gLTAuMDEgOiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBJTlRf
TUFYIHx8IHJlc3VsdCA8IElOVF9NSU4pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29u
dmVyc2lvbjxpbnQsIElOVF9NQVgsIElOVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUs
IHJvb3RTdHlsZSwgbXVsdGlwbGllcikpOwogfQogCi0vLyBMZW5ndGhzIGV4cGVjdCBhbiBpbnQg
dGhhdCBpcyBvbmx5IDI4LWJpdHMsIHNvIHdlIGhhdmUgdG8gY2hlY2sgZm9yIGEgZGlmZmVyZW50
IG92ZXJmbG93LgorLy8gTGVuZ3RocyBleHBlY3QgYW4gaW50IHRoYXQgaXMgb25seSAyOC1iaXRz
LCBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciBhCisvLyBkaWZmZXJlbnQgb3ZlcmZsb3cuCiBpbnQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoUmVuZGVyU3R5bGUq
IHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlKQogewotICAgIGRvdWJsZSByZXN1bHQgPSBj
b21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUpOwotCi0gICAgLy8gVGhpcyBjb252
ZXJzaW9uIGlzIGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwg
NDQuOTk5OTguICBXZQotICAgIC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3Jl
IHJlYWxseSBjbG9zZSB0byB0aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgotICAgIHJlc3VsdCArPSBy
ZXN1bHQgPCAwID8gLTAuMDEgOiArMC4wMTsKLQotICAgIGlmIChyZXN1bHQgPiBpbnRNYXhGb3JM
ZW5ndGggfHwgcmVzdWx0IDwgaW50TWluRm9yTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOworICAgIHJldHVybiByb3VuZEZvcklt
cHJlY2lzZUNvbnZlcnNpb248aW50LCBpbnRNYXhGb3JMZW5ndGgsIGludE1pbkZvckxlbmd0aD4o
Y29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKSk7CiB9CiAKLS8vIExlbmd0aHMg
ZXhwZWN0IGFuIGludCB0aGF0IGlzIG9ubHkgMjgtYml0cywgc28gd2UgaGF2ZSB0byBjaGVjayBm
b3IgYSBkaWZmZXJlbnQgb3ZlcmZsb3cuCiBpbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGhJbnRGb3JMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBkb3VibGUgbXVsdGlwbGllcikKIHsKLSAgICBkb3VibGUgcmVzdWx0ID0gY29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKTsKLQotICAgIC8vIFRoaXMg
Y29udmVyc2lvbiBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUu
Zy4sIDQ0Ljk5OTk4LiAgV2UKLSAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3
ZSdyZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQg
Kz0gcmVzdWx0IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gaW50TWF4
Rm9yTGVuZ3RoIHx8IHJlc3VsdCA8IGludE1pbkZvckxlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKKyAgICByZXR1cm4gcm91bmRG
b3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgaW50TWF4Rm9yTGVuZ3RoLCBpbnRNaW5Gb3JMZW5n
dGg+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcikpOwog
fQogCiBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KFJlbmRlclN0
eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSkKIHsKLSAgICBkb3VibGUgcmVzdWx0
ID0gY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlKTsKLQotICAgIC8vIFRoaXMg
Y29udmVyc2lvbiBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUu
Zy4sIDQ0Ljk5OTk4LiAgV2UKLSAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3
ZSdyZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KLSAgICByZXN1bHQg
Kz0gcmVzdWx0IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0KLSAgICBpZiAocmVzdWx0ID4gU0hSVF9N
QVggfHwgcmVzdWx0IDwgU0hSVF9NSU4pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxzaG9ydD4ocmVzdWx0KTsKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VD
b252ZXJzaW9uPHNob3J0LCBTSFJUX01BWCwgU0hSVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3VibGUo
c3R5bGUsIHJvb3RTdHlsZSkpOwogfQogCiBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZUxlbmd0aFNob3J0KFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwg
ZG91YmxlIG11bHRpcGxpZXIpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhE
b3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcik7Ci0KLSAgICAvLyBUaGlzIGNvbnZl
cnNpb24gaXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0
NC45OTk5OC4gIFdlCi0gICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUg
cmVhbGx5IGNsb3NlIHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCi0gICAgcmVzdWx0ICs9IHJl
c3VsdCA8IDAgPyAtMC4wMSA6ICswLjAxOwotCi0gICAgaWYgKHJlc3VsdCA+IFNIUlRfTUFYIHx8
IHJlc3VsdCA8IFNIUlRfTUlOKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2hvcnQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVy
c2lvbjxzaG9ydCwgU0hSVF9NQVgsIFNIUlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxl
LCByb290U3R5bGUsIG11bHRpcGxpZXIpKTsKIH0KIAogZmxvYXQgQ1NTUHJpbWl0aXZlVmFsdWU6
OmNvbXB1dGVMZW5ndGhGbG9hdChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290
U3R5bGUsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmgJKHJldmlzaW9uIDY2NzY0KQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTUgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiAKIHN0
cnVjdCBMZW5ndGg7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFQgbWF4LCBUIG1pbj4gaW5saW5l
IFQgcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICAvLyBE
aW1lbnNpb24gY2FsY3VsYXRpb25zIGFyZSBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2
YWx1ZXMgb2YgZS5nLgorICAgIC8vIDQ0Ljk5OTk4LiAgV2UgbmVlZCB0byBnbyBhaGVhZCBhbmQg
cm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRvIHRoZQorICAgIC8vIG5leHQgaW50ZWdlciB2
YWx1ZS4KKyAgICB2YWx1ZSArPSAodmFsdWUgPCAwKSA/IC0wLjAxIDogKzAuMDE7CisgICAgcmV0
dXJuICgodmFsdWUgPiBtYXgpIHx8ICh2YWx1ZSA8IG1pbikpID8gMCA6IHN0YXRpY19jYXN0PFQ+
KHZhbHVlKTsKK30KKwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUg
ewogcHVibGljOgogICAgIGVudW0gVW5pdFR5cGVzIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDY2NzY0KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsMTAgKzI2Nyw4IEBAIGludCBIVE1MSW1hZ2VF
bGVtZW50Ojp3aWR0aChib29sIGlnbm9yZVAKICAgICAgICAgICAgIHJldHVybiB3aWR0aDsKIAog
ICAgICAgICAvLyBpZiB0aGUgaW1hZ2UgaXMgYXZhaWxhYmxlLCB1c2UgaXRzIHdpZHRoCi0gICAg
ICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlKCkpIHsKLSAgICAgICAgICAgIGZsb2F0IHpvb21G
YWN0b3IgPSBkb2N1bWVudCgpLT52aWV3KCkgPyBkb2N1bWVudCgpLT52aWV3KCktPnBhZ2Vab29t
RmFjdG9yKCkgOiAxLjBmOwotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2Uo
KS0+aW1hZ2VTaXplKHpvb21GYWN0b3IpLndpZHRoKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVy
LmltYWdlKCktPmltYWdlU2l6ZSgxLjBmKS53aWR0aCgpOwogICAgIH0KIAogICAgIGlmIChpZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMpCkBAIC0yNzgsNyArMjc2LDggQEAgaW50IEhUTUxJbWFnZUVs
ZW1lbnQ6OndpZHRoKGJvb2wgaWdub3JlUAogICAgIGVsc2UKICAgICAgICAgZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7CiAKLSAgICByZXR1cm4gcmVuZGVyQm94KCkgPyByZW5kZXJCb3goKS0+
Y29udGVudFdpZHRoKCkgOiAwOworICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7Cisg
ICAgcmV0dXJuIGJveCA/IGFkanVzdEZvckFic29sdXRlWm9vbShib3gtPmNvbnRlbnRXaWR0aCgp
LCBib3gpIDogMDsKIH0KIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdodChib29sIGlnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cykgY29uc3QKQEAgLTI5MSwxMCArMjkwLDggQEAgaW50IEhUTUxJ
bWFnZUVsZW1lbnQ6OmhlaWdodChib29sIGlnbm9yZQogICAgICAgICAgICAgcmV0dXJuIGhlaWdo
dDsKIAogICAgICAgICAvLyBpZiB0aGUgaW1hZ2UgaXMgYXZhaWxhYmxlLCB1c2UgaXRzIGhlaWdo
dAotICAgICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBmbG9h
dCB6b29tRmFjdG9yID0gZG9jdW1lbnQoKS0+dmlldygpID8gZG9jdW1lbnQoKS0+dmlldygpLT5w
YWdlWm9vbUZhY3RvcigpIDogMS4wZjsKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVy
LmltYWdlKCktPmltYWdlU2l6ZSh6b29tRmFjdG9yKS5oZWlnaHQoKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1faW1h
Z2VMb2FkZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKDEuMGYpLmhlaWdodCgpOwogICAgIH0KIAogICAg
IGlmIChpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMpCkBAIC0zMDIsNyArMjk5LDggQEAgaW50IEhU
TUxJbWFnZUVsZW1lbnQ6OmhlaWdodChib29sIGlnbm9yZQogICAgIGVsc2UKICAgICAgICAgZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICByZXR1cm4gcmVuZGVyQm94KCkgPyByZW5k
ZXJCb3goKS0+Y29udGVudEhlaWdodCgpIDogMDsKKyAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRl
ckJveCgpOworICAgIHJldHVybiBib3ggPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oYm94LT5jb250
ZW50SGVpZ2h0KCksIGJveCkgOiAwOwogfQogCiBpbnQgSFRNTEltYWdlRWxlbWVudDo6bmF0dXJh
bFdpZHRoKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2
Njc2NCkKKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTIsNyArMTUyLDkgQEAgdm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2goKQog
CiAgICAgICAgIGNhY2hlZEltYWdlLT5zZXRSZXNwb25zZShkb2N1bWVudCgpLT5mcmFtZSgpLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKSk7CiAKLSAgICAgICAgSW50U2l6
ZSBzaXplID0gY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShwYWdlWm9vbUZhY3Rvcihkb2N1bWVudCgp
KSk7CisgICAgICAgIC8vIFJlcG9ydCB0aGUgbmF0dXJhbCBpbWFnZSBzaXplIGluIHRoZSBwYWdl
IHRpdGxlLCByZWdhcmRsZXNzIG9mIHpvb20KKyAgICAgICAgLy8gbGV2ZWwuCisgICAgICAgIElu
dFNpemUgc2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemUoMS4wZik7CiAgICAgICAgIGlmIChz
aXplLndpZHRoKCkpIHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIHRpdGxlLCB3ZSB1c2Ug
dGhlIGRlY29kZWQgZmlsZW5hbWUgb2YgdGhlIHJlc291cmNlLCBmYWxsaW5nCiAgICAgICAgICAg
ICAvLyBiYWNrIG9uIHRoZSAoZGVjb2RlZCkgaG9zdG5hbWUgaWYgdGhlcmUgaXMgbm8gcGF0aC4K
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiA2Njc2NCkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgi
CkBAIC05ODYsMTMgKzk4NywxNCBAQCBpbmxpbmUgdm9pZCBtYWtlTWF0cml4UmVuZGVyYWJsZShU
cmFuc2ZvCiAKIGlubGluZSBpbnQgYWRqdXN0Rm9yQWJzb2x1dGVab29tKGludCB2YWx1ZSwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBmbG9hdCB6b29tRmFjdG9yID0gcmVuZGVyZXIt
PnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKKyAgICBkb3VibGUgem9vbUZhY3RvciA9IHJlbmRl
cmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CiAgICAgaWYgKHpvb21GYWN0b3IgPT0gMSkK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIC8vIE5lZWRlZCBiZWNhdXNlIGNvbXB1dGVMZW5n
dGhJbnQgdHJ1bmNhdGVzIChyYXRoZXIgdGhhbiByb3VuZHMpIHdoZW4gc2NhbGluZyB1cC4KICAg
ICBpZiAoem9vbUZhY3RvciA+IDEpCiAgICAgICAgIHZhbHVlKys7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4odmFsdWUgLyB6b29tRmFjdG9yKTsKKworICAgIHJldHVybiByb3VuZEZvcklt
cHJlY2lzZUNvbnZlcnNpb248aW50LCBJTlRfTUFYLCBJTlRfTUlOPih2YWx1ZSAvIHpvb21GYWN0
b3IpOwogfQogCiBpbmxpbmUgdm9pZCBhZGp1c3RJbnRSZWN0Rm9yQWJzb2x1dGVab29tKEludFJl
Y3QmIHJlY3QsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2Njc3
MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEwLTA5LTAzICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgUmVwb3J0IGNvcnJl
Y3QgKHVuem9vbWVkKSBpbWFnZSBzaXplcyBmb3Igem9vbWVkIGltYWdlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDg5CisKKyAgICAgICAgKiBm
YXN0L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1h
Z2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
aW1hZ2VzL3pvb21lZC1pbWctc2l6ZS5odG1sOiBBZGRlZC4KKwogMjAxMC0wOS0wMyAgRGltaXRy
aSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQtaW1nLXNp
emUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pv
b21lZC1pbWctc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy96b29tZWQtaW1nLXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ2IEBACitJZGVhbGx5LCBhbGwgb3ZhbHMgYmVsb3cgc2hvdWxkIGJlIHJlcG9ydGVk
IGFzIGhhdmluZyB3aWR0aD0zNywgaGVpZ2h0PTMzLiBDdXJyZW50bHkgcm91bmRpbmcgcHJldmVu
dHMgdXMgZnJvbSBkb2luZyB0aGlzLgorCisKK1pvb20gMSUgUEFTUzogMTAweDEwMCBjbG9zZSBl
bm91Z2ggdG8gMzd4MzMKKworCitab29tIDIlIFBBU1M6IDUweDUwIGNsb3NlIGVub3VnaCB0byAz
N3gzMworCisKK1pvb20gMyUgUEFTUzogMzN4MzMgY2xvc2UgZW5vdWdoIHRvIDM3eDMzCisKKwor
Wm9vbSA0JSBQQVNTOiAyNXgyNSBjbG9zZSBlbm91Z2ggdG8gMzd4MzMKKworCitab29tIDUlIFBB
U1M6IDIweDIwIGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gMzAlIFBBU1M6IDM2eDMw
IGNsb3NlIGVub3VnaCB0byAzN3gzMworCisKK1pvb20gMzMlIFBBU1M6IDM2eDMwIGNsb3NlIGVu
b3VnaCB0byAzN3gzMworCisKK1pvb20gNTAlIFBBU1M6IDM2eDMyIGNsb3NlIGVub3VnaCB0byAz
N3gzMworCisKK1pvb20gNzAlIFBBU1M6IDM1eDMyIGNsb3NlIGVub3VnaCB0byAzN3gzMworCisK
K1pvb20gMTAwJSBQQVNTOiAzN3gzMworCisKK1pvb20gMTExJSBQQVNTOiAzN3gzMworCisKK1pv
b20gMTUwJSBQQVNTOiAzN3gzMworCisKK1pvb20gMzMzJSBQQVNTOiAzN3gzMworCisKK1pvb20g
NDAwJSBQQVNTOiAzN3gzMworCisKK1pvb20gMTIzNCUgUEFTUzogMzd4MzMKClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3pvb21lZC1pbWctc2l6ZS1leHBlY3Rl
ZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9v
bWVkLWltZy1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
em9vbWVkLWltZy1zaXplLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy96b29tZWQtaW1nLXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICBmdW5jdGlv
biB1cGRhdGUoKSB7CisgICAgICAgIC8vIFRoZXNlIGFycmF5cyB3aWxsIGJlY29tZSB1bm5lY2Vz
c2FyeSBpZiB3ZSBmaXggdGhlIHJvdW5kaW5nIGlzc3VlcyB0aGF0IG1ha2UgdXMgbm90IGFsd2F5
cyByZXBvcnQgIjM3eDMzIi4KKyAgICAgICAgdmFyIGV4cGVjdGVkV2lkdGhzID0gWzEwMCwgNTAs
IDMzLCAyNSwgMjAsIDM2LCAzNiwgMzYsIDM1LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3XTsKKyAg
ICAgICAgdmFyIGV4cGVjdGVkSGVpZ2h0cyA9IFsxMDAsIDUwLCAzMywgMjUsIDIwLCAzMCwgMzAs
IDMyLCAzMiwgMzMsIDMzLCAzMywgMzMsIDMzLCAzM107CisgICAgICAgIGZvciAoaSA9IDA7IGkg
PCAxNTsgKytpKSB7CisgICAgICAgICAgdmFyIG92YWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnb3ZhbCcgKyBpKTsKKyAgICAgICAgICB2YXIgc3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N0YXR1cycgKyBpKTsKKyAgICAgICAgICB2YXIgc2l6ZXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2l6ZXMnICsgaSk7CisgICAgICAgICAgaWYgKChvdmFsLndpZHRoID09IGV4
cGVjdGVkV2lkdGhzW2ldKSAmJiAob3ZhbC5oZWlnaHQgPT0gZXhwZWN0ZWRIZWlnaHRzW2ldKSkg
eworICAgICAgICAgICAgc3RhdHVzLnN0eWxlLmNvbG9yID0gImdyZWVuIjsKKyAgICAgICAgICAg
IHN0YXR1cy5pbm5lckhUTUwgPSAiUEFTUyI7CisgICAgICAgICAgICBzaXplcy5pbm5lckhUTUwg
PSBvdmFsLndpZHRoICsgIngiICsgb3ZhbC5oZWlnaHQgKyAoKChvdmFsLndpZHRoICE9IDM3KSB8
fCAob3ZhbC5oZWlnaHQgIT0gMzMpKSA/ICIgY2xvc2UgZW5vdWdoIHRvIDM3eDMzIiA6ICIiKTsK
KyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RhdHVzLnN0eWxlLmNvbG9yID0gInJl
ZCI7CisgICAgICAgICAgICBzdGF0dXMuaW5uZXJIVE1MID0gIkZBSUwiOworICAgICAgICAgICAg
c2l6ZXMuaW5uZXJIVE1MID0gb3ZhbC53aWR0aCArICJ4IiArIG92YWwuaGVpZ2h0ICsgIiBub3Qg
Y2xvc2UgZW5vdWdoIHRvIDM3eDMzIjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIHdpbmRvdy5vbmxvYWQgPSB1cGRhdGU7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4K
KyAgPGJvZHk+CisgICAgPHA+SWRlYWxseSwgYWxsIG92YWxzIGJlbG93IHNob3VsZCBiZSByZXBv
cnRlZCBhcyBoYXZpbmcgd2lkdGg9MzcsIGhlaWdodD0zMy4gIEN1cnJlbnRseSByb3VuZGluZyBw
cmV2ZW50cyB1cyBmcm9tIGRvaW5nIHRoaXMuPC9wPgorICAgIDxpbWcgaWQ9Im92YWwwIiBzcmM9
InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDElIj4KKyAgICA8cD5ab29tIDElIDxz
cGFuIGlkPSJzdGF0dXMwIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMwIj48L3NwYW4+PC9wPgor
ICAgIDxpbWcgaWQ9Im92YWwxIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206
IDIlIj4KKyAgICA8cD5ab29tIDIlIDxzcGFuIGlkPSJzdGF0dXMxIj48L3NwYW4+OiA8c3BhbiBp
ZD0ic2l6ZXMxIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwyIiBzcmM9InJlc291cmNl
cy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDMlIj4KKyAgICA8cD5ab29tIDMlIDxzcGFuIGlkPSJz
dGF0dXMyIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMyIj48L3NwYW4+PC9wPgorICAgIDxpbWcg
aWQ9Im92YWwzIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDQlIj4KKyAg
ICA8cD5ab29tIDQlIDxzcGFuIGlkPSJzdGF0dXMzIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMz
Ij48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWw0IiBzcmM9InJlc291cmNlcy9vdmFsLnBu
ZyIgc3R5bGU9Inpvb206IDUlIj4KKyAgICA8cD5ab29tIDUlIDxzcGFuIGlkPSJzdGF0dXM0Ij48
L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM0Ij48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWw1
IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpvb206IDMwJSI+CisgICAgPHA+Wm9v
bSAzMCUgPHNwYW4gaWQ9InN0YXR1czUiPjwvc3Bhbj46IDxzcGFuIGlkPSJzaXplczUiPjwvc3Bh
bj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDYiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBzdHls
ZT0iem9vbTogMzMlIj4KKyAgICA8cD5ab29tIDMzJSA8c3BhbiBpZD0ic3RhdHVzNiI+PC9zcGFu
PjogPHNwYW4gaWQ9InNpemVzNiI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsNyIgc3Jj
PSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA1MCUiPgorICAgIDxwPlpvb20gNTAl
IDxzcGFuIGlkPSJzdGF0dXM3Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM3Ij48L3NwYW4+PC9w
PgorICAgIDxpbWcgaWQ9Im92YWw4IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9Inpv
b206IDcwJSI+CisgICAgPHA+Wm9vbSA3MCUgPHNwYW4gaWQ9InN0YXR1czgiPjwvc3Bhbj46IDxz
cGFuIGlkPSJzaXplczgiPjwvc3Bhbj48L3A+CisgICAgPGltZyBpZD0ib3ZhbDkiIHNyYz0icmVz
b3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMTAwJSI+CisgICAgPHA+Wm9vbSAxMDAlIDxz
cGFuIGlkPSJzdGF0dXM5Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXM5Ij48L3NwYW4+PC9wPgor
ICAgIDxpbWcgaWQ9Im92YWwxMCIgc3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29t
OiAxMTElIj4KKyAgICA8cD5ab29tIDExMSUgPHNwYW4gaWQ9InN0YXR1czEwIj48L3NwYW4+OiA8
c3BhbiBpZD0ic2l6ZXMxMCI+PC9zcGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMTEiIHNyYz0i
cmVzb3VyY2VzL292YWwucG5nIiBzdHlsZT0iem9vbTogMTUwJSI+CisgICAgPHA+Wm9vbSAxNTAl
IDxzcGFuIGlkPSJzdGF0dXMxMSI+PC9zcGFuPjogPHNwYW4gaWQ9InNpemVzMTEiPjwvc3Bhbj48
L3A+CisgICAgPGltZyBpZD0ib3ZhbDEyIiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyIgc3R5bGU9
Inpvb206IDMzMyUiPgorICAgIDxwPlpvb20gMzMzJSA8c3BhbiBpZD0ic3RhdHVzMTIiPjwvc3Bh
bj46IDxzcGFuIGlkPSJzaXplczEyIj48L3NwYW4+PC9wPgorICAgIDxpbWcgaWQ9Im92YWwxMyIg
c3JjPSJyZXNvdXJjZXMvb3ZhbC5wbmciIHN0eWxlPSJ6b29tOiA0MDAlIj4KKyAgICA8cD5ab29t
IDQwMCUgPHNwYW4gaWQ9InN0YXR1czEzIj48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMxMyI+PC9z
cGFuPjwvcD4KKyAgICA8aW1nIGlkPSJvdmFsMTQiIHNyYz0icmVzb3VyY2VzL292YWwucG5nIiBz
dHlsZT0iem9vbTogMTIzNCUiPgorICAgIDxwPlpvb20gMTIzNCUgPHNwYW4gaWQ9InN0YXR1czE0
Ij48L3NwYW4+OiA8c3BhbiBpZD0ic2l6ZXMxNCI+PC9zcGFuPjwvcD4KKyAgPC9ib2R5PgorPC9o
dG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvem9vbWVk
LWltZy1zaXplLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBl
CiAgICsgaW1hZ2UvcG5nCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNVQUFBQWhDQU1BQUFC
cDBaSW5BQUFBQVhOU1IwSUFyczRjNlFBQUFEeFFURlJGMVdPMwo3dm51VnNOV1Y4TlhXY1JaWWNk
aFpjaGxlYzk1aDlTSG5OeWNuZHlkbjkyZnFlQ3ByK092dGVXMXZ1aSt4ZXZGemUzTjEvSFg0L1hq
ClI1alIrd0FBQUFGMFVrNVRBRURtMkdZQUFBQUJZa3RIUkFDSUJSMUlBQUFBQ1hCSVdYTUFBQXNU
QUFBTEV3RUFtcHdZQUFBQUIzUkoKVFVVSDJnY01EeHdXbm5oWmNBQUFBQjFwVkZoMFEyOXRiV1Z1
ZEFBQUFBQUFRM0psWVhSbFpDQjNhWFJvSUVkSlRWQmtMbVVIQUFBQQpqRWxFUVZRNHk3WFVTdzZB
SUF3RVVLaUk4aE9WKzk5VkVseWdBcDJOczM1cENyUUk4VmZrYnBaNW1oZXp5NjRKVkNjMGphTjMz
TWNjCjFNcnhSSjdhOFRXeTFJdnR0VTN0UTV3MHlua3JHcWVneUtpSWxDckZFcXRTVmh1cnRxeFdW
cTFaYVZicHJCU3JGRndMNndzN0kzWmYKMk4yRDc0ak5CRGhmMkt5Q2N3L3VFTGlQNEc2ai84VG96
N2tBY3pFSlVSMGFZWlFBQUFBQVNVVk9SSzVDWUlJPQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>