<?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>67988</bug_id>
          
          <creation_ts>2011-09-12 23:25:55 -0700</creation_ts>
          <short_desc>Large canvas fills should not crash or create unnecessarily large image buffers</short_desc>
          <delta_ts>2011-09-16 18:01:56 -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>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>68070</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Wells">benwells</reporter>
          <assigned_to name="Ben Wells">benwells</assigned_to>
          <cc>darin</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>mikelawther</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>rgabor</cc>
    
    <cc>senorblanco</cc>
    
    <cc>twiz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>466161</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-12 23:25:55 -0700</bug_when>
    <thetext>Large canvas fills should not crash or create unnecessarily large image buffers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466163</commentid>
    <comment_count>1</comment_count>
      <attachid>107148</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-12 23:42:37 -0700</bug_when>
    <thetext>Created attachment 107148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466282</commentid>
    <comment_count>2</comment_count>
      <attachid>107148</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-09-13 07:22:04 -0700</bug_when>
    <thetext>Comment on attachment 107148
Patch

Looks good.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466299</commentid>
    <comment_count>3</comment_count>
      <attachid>107148</attachid>
    <who name="Jeff Timanus">twiz</who>
    <bug_when>2011-09-13 08:14:50 -0700</bug_when>
    <thetext>Comment on attachment 107148
Patch

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

&gt; LayoutTests/fast/canvas/canvas-large-fills.html:5
&gt; +&lt;p&gt;Tests that using reasonably large values for canvas.height and canvas.height don&apos;t cause a crash&lt;/p&gt;

Type-o:  canvas.width</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466660</commentid>
    <comment_count>4</comment_count>
      <attachid>107253</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-13 16:27:34 -0700</bug_when>
    <thetext>Created attachment 107253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466663</commentid>
    <comment_count>5</comment_count>
      <attachid>107253</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-13 16:29:24 -0700</bug_when>
    <thetext>Comment on attachment 107253
Patch

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

I’m concerned about the change from FloatRect to IntRect. Otherwise, the patch looks good.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1513
&gt; +    IntRect canvasRect(0, 0, canvas()-&gt;width(), canvas()-&gt;height());
&gt; +    canvasRect = canvas()-&gt;baseTransform().mapRect(canvasRect);

Why is it OK to change this from FloatRect to IntRect? Does the code below always work properly with an integer-rounded rect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466685</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-13 16:49:10 -0700</bug_when>
    <thetext>&gt; Why is it OK to change this from FloatRect to IntRect? Does the code below always work properly with an integer-rounded rect?

This rect starts in canvas space and is transformed to device space. The canvas space is integral. The coordinates in device space will also be integral, I think, but if it isn&apos;t in some cases it shouldn&apos;t be a problem - internally the transform is done with a FloatRect and then EnclosingIntRect is used to expand this if needed.

The canvasRect is used in one call later on, clearRect, which takes a FloatRect. The IntRect will be implicitly cast to a FloatRect.

If the canvasRect ends up being a little bigger than it needs to be through rounding in the transform it won&apos;t be a problem. This is used now in two ways - to limit the size of the buffer used and to clear the original canvas. If our rect is a little bigger than needed this will all still work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466686</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-13 16:50:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The canvas space is integral. The coordinates in device space will also be integral, I think

Could you explain why? I know that doesn’t matter for this patch, but I’m curious why you think that.

&gt; If the canvasRect ends up being a little bigger than it needs to be through rounding in the transform it won&apos;t be a problem.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466704</commentid>
    <comment_count>8</comment_count>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-13 17:05:57 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; The canvas space is integral. The coordinates in device space will also be integral, I think
&gt; 
&gt; Could you explain why? I know that doesn’t matter for this patch, but I’m curious why you think that.
&gt; 

It could be a case of a little knowledge being a dangerous thing. 

I&apos;ve seen two instances of the base transform - in skia where it is the identity transform, and with core graphics where it seemed to be integral (something like flipping y and an offset if I remember correctly).

I think I have made an assumption that in general the underlying canvas image buffer will always be of integral bounds in device space (i.e. the transformed canvasRect will be integral).

Thinking about it some more for some devices with low resolution, and if the whole space is zoomed (e.g. at a browser level) the bounds not be integral but I don&apos;t know whether this is applied at this level or at a higher level (like RenderLayer).

Please, feel free to correct any misunderstandings I have just demonstrated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466774</commentid>
    <comment_count>9</comment_count>
      <attachid>107253</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-13 18:55:54 -0700</bug_when>
    <thetext>Comment on attachment 107253
Patch

Rejecting attachment 107253 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ernational/danda-space.html = IMAGE
  fast/text/international/thai-baht-space.html = IMAGE
  fast/text/international/thai-line-breaks.html = IMAGE
  platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE

Regressions: Unexpected DumpRenderTree crashes : (1)
  css3/calc/regression-62276.html = CRASH

Regressions: Unexpected image and text mismatch : (2)
  fast/borders/border-image-scrambled.html = IMAGE+TEXT
  svg/custom/svg-fonts-word-spacing.html = IMAGE+TEXT



Full output: http://queues.webkit.org/results/9657356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466807</commentid>
    <comment_count>10</comment_count>
      <attachid>107253</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-13 20:46:33 -0700</bug_when>
    <thetext>Comment on attachment 107253
Patch

Rejecting attachment 107253 from commit-queue.

benwells@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466812</commentid>
    <comment_count>11</comment_count>
      <attachid>107253</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2011-09-13 21:00:26 -0700</bug_when>
    <thetext>Comment on attachment 107253
Patch

setting cq+ after Darin&apos;s r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466825</commentid>
    <comment_count>12</comment_count>
      <attachid>107282</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-13 21:43:16 -0700</bug_when>
    <thetext>Created attachment 107282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466827</commentid>
    <comment_count>13</comment_count>
      <attachid>107282</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-13 21:44:09 -0700</bug_when>
    <thetext>Comment on attachment 107282
Patch

Fixed test, I had not updated the expectations after updating the comment in the html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466828</commentid>
    <comment_count>14</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2011-09-13 21:51:11 -0700</bug_when>
    <thetext>Ok, lets try it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466836</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-13 22:09:42 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I&apos;ve seen two instances of the base transform - in skia where it is the identity transform, and with core graphics where it seemed to be integral (something like flipping y and an offset if I remember correctly).

What you’ve described is probably right for the baseTransform of the image buffer. 

But if you look at the implementation of HTMLCanvasElement::baseTransform function you’ll see that the transform can easily be non-integral if there is a non-integral ratio between the size of the canvas (determined by the height and width attributes) and the size of the place where the canvas element is laid out on the page (determined by CSS  height and width).

&gt; I think I have made an assumption that in general the underlying canvas image buffer will always be of integral bounds in device space (i.e. the transformed canvasRect will be integral).

It&apos;s an incorrect assumption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466851</commentid>
    <comment_count>16</comment_count>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-13 22:55:17 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #8)
&gt; &gt; I&apos;ve seen two instances of the base transform - in skia where it is the identity transform, and with core graphics where it seemed to be integral (something like flipping y and an offset if I remember correctly).
&gt; 
&gt; What you’ve described is probably right for the baseTransform of the image buffer. 
&gt; 
&gt; But if you look at the implementation of HTMLCanvasElement::baseTransform function you’ll see that the transform can easily be non-integral if there is a non-integral ratio between the size of the canvas (determined by the height and width attributes) and the size of the place where the canvas element is laid out on the page (determined by CSS  height and width).
&gt; 
&gt; &gt; I think I have made an assumption that in general the underlying canvas image buffer will always be of integral bounds in device space (i.e. the transformed canvasRect will be integral).
&gt; 
&gt; It&apos;s an incorrect assumption.

Thanks for clarifying. I can see now there are four coordinate spaces in action: transformed canvas, untransformed canvas, page (or css) and device. I wasn&apos;t considering the page / css space.

Based on your explanation I can see some areas of the code for me to understand better, and some cases to test to make sure these fill modes are working as expected - in particular when the canvas space and page / css spaces aren&apos;t 1:1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466907</commentid>
    <comment_count>17</comment_count>
      <attachid>107282</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-14 01:09:11 -0700</bug_when>
    <thetext>Comment on attachment 107282
Patch

Clearing flags on attachment: 107282

Committed r95080: &lt;http://trac.webkit.org/changeset/95080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466908</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-14 01:09:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466951</commentid>
    <comment_count>19</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2011-09-14 02:44:15 -0700</bug_when>
    <thetext>Reopen, because it was rolled out by http://trac.webkit.org/changeset/95084

See https://bugs.webkit.org/show_bug.cgi?id=68070 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467549</commentid>
    <comment_count>20</comment_count>
      <attachid>107443</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-14 19:44:12 -0700</bug_when>
    <thetext>Created attachment 107443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467551</commentid>
    <comment_count>21</comment_count>
      <attachid>107443</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-14 19:52:59 -0700</bug_when>
    <thetext>Comment on attachment 107443
Patch

The previous patch caused some tests to fail on CG. Specifically when the region being filled did not intersect with the canvas.

I believe this is because clipOut in the CG graphics context clips out the entire context, if called with an empty rect.

This version of the patch optimizes out this case as we just have to clear the canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467553</commentid>
    <comment_count>22</comment_count>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-14 20:03:32 -0700</bug_when>
    <thetext>As I wrote that last comment it sounded implausible. I&apos;m doing more testing to verify this or if its something else figure out what is happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467561</commentid>
    <comment_count>23</comment_count>
      <attachid>107445</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-14 20:21:25 -0700</bug_when>
    <thetext>Created attachment 107445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467562</commentid>
    <comment_count>24</comment_count>
      <attachid>107445</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-14 20:23:41 -0700</bug_when>
    <thetext>Comment on attachment 107445
Patch

The earlier statement was incorrect, it is not clipOut acting differently but ImageBuffer::create. On CG this returns null if the requested buffer size is empty.

Change log has been updated to reflect this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467586</commentid>
    <comment_count>25</comment_count>
      <attachid>107448</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-14 21:09:32 -0700</bug_when>
    <thetext>Created attachment 107448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467587</commentid>
    <comment_count>26</comment_count>
      <attachid>107448</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-14 21:11:20 -0700</bug_when>
    <thetext>Comment on attachment 107448
Patch

Change log updated and test formatting changed based on feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467894</commentid>
    <comment_count>27</comment_count>
      <attachid>107448</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-15 10:28:43 -0700</bug_when>
    <thetext>Comment on attachment 107448
Patch

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

I’m going to say review+, but I think it would be much better to post the early return version.

&gt; LayoutTests/fast/canvas/canvas-large-fills-expected.txt:7
&gt; +source-over
&gt; +PASS Actual: 0 Expected: 0
&gt; +PASS Actual: 0 Expected: 0
&gt; +PASS Actual: 255 Expected: 255

This test output is pretty good. I think it would be even better to check these as a single value; less verbose and easier to understand. The test can convert them to hex form or some other easy to understand form. More like:

    PASS: source-over: #0000FF

That would cut the number of lines of output by 4 and make the test clearer.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1518
&gt; +    if (!bufferRect.isEmpty()) {

In the WebKit project our usual style is to use “early return”. If we do that here, a side benefit is that the patch will be smaller. Like this:

    if (bufferRect.isEmpty()) {
        clearCanvas();
        return;
    }

This makes it so we don’t have the whole function indented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467948</commentid>
    <comment_count>28</comment_count>
      <attachid>107448</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-15 11:39:41 -0700</bug_when>
    <thetext>Comment on attachment 107448
Patch

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

&gt; LayoutTests/fast/canvas/canvas-large-fills-expected.txt:8
&gt; +source-in

Totally agree with Darin. The output text should optimize the time it takes to find out exactly what the failures are - if there are any. So, I&apos;d say one step further would be to only output failures and if there are none, simply have one &quot;PASS&quot; line and that&apos;s it. This minimizes the burden on someone who finds the test failing on the bots or when run locally.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1516
&gt; +    bufferRect.intersect(canvasRect);

Do we need to normalize the bufferRect here (since intersect assumes it is)?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1521
&gt; +        RenderingMode renderMode = canvas()-&gt;buffer()-&gt;isAccelerated() ? Accelerated : Unaccelerated;

FYI, this line changed yesterday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467950</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-15 11:40:41 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Totally agree with Darin. The output text should optimize the time it takes to find out exactly what the failures are - if there are any.

Glad we agree on this.

&gt; So, I&apos;d say one step further would be to only output failures and if there are none, simply have one &quot;PASS&quot; line and that&apos;s it.

I don’t agree with this. I do not like tests that just say PASS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468268</commentid>
    <comment_count>30</comment_count>
      <attachid>107593</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-15 20:26:08 -0700</bug_when>
    <thetext>Created attachment 107593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468281</commentid>
    <comment_count>31</comment_count>
      <attachid>107593</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-15 20:59:16 -0700</bug_when>
    <thetext>Comment on attachment 107593
Patch

This patch has added the early exit. This makes the code much nicer and also makes the diff cleaner.

The test output has been trimmed, and now doesn&apos;t need scrolling when showing up in test results. I&apos;ve compromised with the test output: passing lines are all shown, but failure lines have extra text (...EXPECTED x, GOT y versus just ...x) so they stand out. The javascript for the test has also been cleaned up based on offline feedback to be more readable.

About the normalised rectangles: as long as Path.boundingRect returns a normalised rect this code should be fine. Looking at the skia implementation this will be the case; I cannot tell for sure about CG. Is this a safe assumption to make? From my reading of the SVG path code (rendering/svg/RenderSVGPath) it also makes this assumption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468320</commentid>
    <comment_count>32</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2011-09-15 23:16:52 -0700</bug_when>
    <thetext>cq+ following Darin&apos;s r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468429</commentid>
    <comment_count>33</comment_count>
      <attachid>107593</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-09-16 04:48:29 -0700</bug_when>
    <thetext>Comment on attachment 107593
Patch

Taking of cq+ as the queue has been stuck for hours. Will try putting through the queue again tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468952</commentid>
    <comment_count>34</comment_count>
      <attachid>107593</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-16 18:01:50 -0700</bug_when>
    <thetext>Comment on attachment 107593
Patch

Clearing flags on attachment: 107593

Committed r95346: &lt;http://trac.webkit.org/changeset/95346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468953</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-16 18:01:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107148</attachid>
            <date>2011-09-12 23:42:37 -0700</date>
            <delta_ts>2011-09-13 16:27:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67988-20110913164234.patch</filename>
            <type>text/plain</type>
            <size>9634</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwMTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZjNmMTkwMjlhMDJlYTAxZGVhZjE1
OGRmMWFjN2RhODk0Y2EwOTBiLi44ZTRiNjViZTgzYjlhMDAxYzJhOThlZjdiYjYwM2UyZjhkMmI2
ZDk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTIgIEJlbiBXZWxscyAgPGJlbndl
bGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBMYXJnZSBjYW52YXMgZmlsbHMgc2hvdWxkIG5v
dCBjcmFzaCBvciBjcmVhdGUgdW5uZWNlc3NhcmlseSBsYXJnZSBpbWFnZSBidWZmZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzk4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMv
Y2FudmFzLWxhcmdlLWZpbGxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWw6IEFkZGVkLgorCiAyMDExLTA5LTEyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHRlc3Qg
dGhhdCBlbnN1cmVzIHRoYXQgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzU1MGExNTQ5ZDFkMTZkN2M3MWE5ZjQ4OTQyOTUwMDEyZDRkY2E3YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMzggQEAKK1Rlc3RzIHRoYXQgdXNpbmcgcmVhc29uYWJs
eSBsYXJnZSB2YWx1ZXMgZm9yIGNhbnZhcy5oZWlnaHQgYW5kIGNhbnZhcy5oZWlnaHQgZG9uJ3Qg
Y2F1c2UgYSBjcmFzaAorCitzaXplID09IDEwMDAwCitzb3VyY2Utb3ZlcgorUEFTUyBBY3R1YWw6
IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDog
MjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1pbgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAy
NTUKK3NvdXJjZS1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDog
MCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3NvdXJjZS1hdG9wCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BB
U1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorZGVzdGluYXRpb24tb3ZlcgorUEFTUyBBY3R1
YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorUEFTUyBB
Y3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWluCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBF
eHBlY3RlZDogMAorZGVzdGluYXRpb24tb3V0CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitk
ZXN0aW5hdGlvbi1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6
IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorbGlnaHRlcgor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1
NQorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Citjb3B5CitQQVNTIEFjdHVhbDogMCBF
eHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUg
RXhwZWN0ZWQ6IDI1NQoreG9yCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitzaXplID09IDUw
MDAwCitzb3VyY2Utb3ZlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFs
OiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1p
bgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAw
CitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1vdXQKK1BBU1MgQWN0dWFs
OiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6
IDAgRXhwZWN0ZWQ6IDAKK3NvdXJjZS1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1
NQorZGVzdGluYXRpb24tb3ZlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0
dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3Rp
bmF0aW9uLWluCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBF
eHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24tb3V0
CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1hdG9wCitQQVNTIEFjdHVh
bDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorbGlnaHRlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAK
K1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3Rl
ZDogMjU1Citjb3B5CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAg
RXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQoreG9yCitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitzaXplID09IDEwMDAwMAorc291cmNlLW92ZXIKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDI1NSBFeHBlY3RlZDogMjU1Citzb3VyY2UtaW4KK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVk
OiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3Rl
ZDogMjU1Citzb3VyY2Utb3V0CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitzb3VyY2UtYXRv
cAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAw
CitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK2Rlc3RpbmF0aW9uLW92ZXIKK1BBU1Mg
QWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BB
U1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1pbgorUEFTUyBBY3R1YWw6IDAg
RXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6
IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLW91dAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6
IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorZGVzdGluYXRpb24tYXRvcAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0
dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2xpZ2h0
ZXIKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVk
OiAyNTUKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorY29weQorUEFTUyBBY3R1YWw6
IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDog
MjU1IEV4cGVjdGVkOiAyNTUKK3hvcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJmZWIzZmIzZTlhNzQ4NmVhNTUzNDYyZmY1YmZhNmI2NDMzMmJkZTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMuaHRtbApA
QCAtMCwwICsxLDU5IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5DYW52YXMgdGVzdDogdGVz
dCBsYXJnZSB3aWR0aC9oZWlnaHQgdmFsdWVzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8cD5UZXN0cyB0aGF0
IHVzaW5nIHJlYXNvbmFibHkgbGFyZ2UgdmFsdWVzIGZvciBjYW52YXMuaGVpZ2h0IGFuZCBjYW52
YXMuaGVpZ2h0IGRvbid0IGNhdXNlIGEgY3Jhc2g8L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAi
PjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+
Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIik7Cit2
YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7Cit2YXIgeCwgeSwgdz0xLCBoPTE7Cit2
YXIgd2lkdGg9Y2FudmFzLndpZHRoOwordmFyIGhlaWdodD1jYW52YXMuaGVpZ2h0OworCitmdW5j
dGlvbiBjbGVhckNvbnRleHQoKSB7CisgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0i
c291cmNlLW92ZXIiOworICAgIGN0eC5maWxsU3R5bGUgPSAicmdiKDAsIDI1NSwgMCkiOworICAg
IGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordmFyIGNvbXBvc2l0ZVR5
cGVzID0gWworICAgICdzb3VyY2Utb3ZlcicsJ3NvdXJjZS1pbicsJ3NvdXJjZS1vdXQnLCdzb3Vy
Y2UtYXRvcCcsCisgICAgJ2Rlc3RpbmF0aW9uLW92ZXInLCdkZXN0aW5hdGlvbi1pbicsJ2Rlc3Rp
bmF0aW9uLW91dCcsJ2Rlc3RpbmF0aW9uLWF0b3AnLAorICAgICdsaWdodGVyJywnY29weScsJ3hv
cicKK107CisKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBbMCwgMCwgMjU1XSwgWzAsIDAsIDI1NV0s
IFswLCAwLCAwXSwgWzAsIDAsIDI1NV0sCisgICAgWzAsIDI1NSwgMF0sIFswLCAyNTUsIDBdLCBb
MCwgMCwgMF0sIFswLCAyNTUsIDBdLAorICAgIFswLCAyNTUsIDI1NV0sIFswLCAwLCAyNTVdLCBb
MCwgMCwgMF0KK107CisKK2Z1bmN0aW9uIHRlc3RGaWxscyhzaXplKSB7CisgICAgdmFyIG1zZyA9
ICJzaXplID09ICIrc2l6ZTsKKyAgICBkZWJ1Zyhtc2cpOworICAgIGZvciAodmFyIGk9MDsgaSA8
IGNvbXBvc2l0ZVR5cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNsZWFyQ29udGV4dChjdHgp
OworICAgICAgICBjdHguZmlsbFN0eWxlID0gInJnYigwLCAwLCAyNTUpIjsKKyAgICAgICAgY3R4
Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbXBvc2l0ZVR5cGVzW2ldOworICAgICAgICBk
ZWJ1Zyhjb21wb3NpdGVUeXBlc1tpXSk7CisgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBzaXpl
LCBzaXplKTsKKyAgICAgICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRo
LCBoZWlnaHQpOworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDM7IHgrKykgeworICAgICAg
ICAgICAgdmFyIG1zZyA9ICJBY3R1YWw6ICIgKyBkYXRhLmRhdGFbeF0gKyAiIEV4cGVjdGVkOiAi
ICsgZXhwZWN0ZWRbaV1beF07CisgICAgICAgICAgICBpZiAoZGF0YS5kYXRhW3hdID09IGV4cGVj
dGVkW2ldW3hdKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNnKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3Rlc3RGaWxscygxMDAwMCk7Cit0ZXN0RmlsbHMoNTAwMDApOwordGVzdEZpbGxzKDEw
MDAwMCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAyMmJh
MmYzM2VkMzI3N2E1NjM2ZTY3YTU4ZDI0MTY1M2M2NTI1MmYuLmFlNzY3YzJmNjI0NGJhYjc4ZmFk
MDRiZjQzMTRmM2ZiZTE4YjA3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0w
OS0xMiAgQmVuIFdlbGxzICA8YmVud2VsbHNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIExhcmdl
IGNhbnZhcyBmaWxscyBzaG91bGQgbm90IGNyYXNoIG9yIGNyZWF0ZSB1bm5lY2Vzc2FyaWx5IGxh
cmdlIGltYWdlIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY3OTg4CisKKyAgICAgICAgV2hlbiB1c2luZyBzb3VyY2UtaW4sIGRlc3RpbmF0
aW9uLWluLCBzb3VyY2Utb3V0LCBvciBkZXN0aW5hdGlvbi1hdG9wIGEgdGVtcG9yYXJ5CisgICAg
ICAgIGJ1ZmZlciBpcyBjcmVhdGVkLiBUaGlzIGJ1ZmZlciBvbmx5IG5lZWRzIHRvIGJlIGJpZyBl
bm91Z2ggdG8gY292ZXIgdGhlIGludGVyc2VjdGlvbgorICAgICAgICBvZiB0aGUgcGF0aCBhbmQg
dGhlIGNhbnZhcy4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIGFkZHMgc29tZSBudWxsIGNo
ZWNrcyBmb3IgZmFpbHVyZXMgdG8gY3JlYXRlIGNvbnRleHRzIG9yIGJ1ZmZlcnMuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52
YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNsZWFyQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZmlsbEFuZERpc3BsYXlUcmFuc3BhcmVuY3lFbHNld2hlcmUpOgorCiAy
MDExLTA5LTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgQ3Jhc2hlcyBpbiBXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6dW5saXN0aWZ5UGFyYWdy
YXBoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMzk5MjRkOWRhYmEyMjNmNjhlMGYyNjU0MjBjZGMxYWZk
MmJkOGYyMS4uZjM4NmRhNTRkMmViYzZkZTgzZjdlNDY2YWJlZmQwMjc5NTgyYjNlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCkBAIC0xNDcyLDYgKzE0NzIsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6Y2xlYXJDYW52YXMoKQogewogICAgIEZsb2F0UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNh
bnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOwogICAgIEdyYXBoaWNzQ29udGV4
dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CisgICAgaWYgKCFjKQorICAgICAgICByZXR1cm47CiAK
ICAgICBjLT5zYXZlKCk7CiAgICAgYy0+c2V0Q1RNKGNhbnZhcygpLT5iYXNlVHJhbnNmb3JtKCkp
OwpAQCAtMTUwNywyMCArMTUwOSwyNiBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZmlsbEFuZERpc3BsYXlUcmFuc3BhcmVuY3lFbHNldwogewogICAg
IEFTU0VSVChzaG91bGREaXNwbGF5VHJhbnNwYXJlbmN5RWxzZXdoZXJlKCkpOwogCisgICAgSW50
UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0
KCkpOworICAgIGNhbnZhc1JlY3QgPSBjYW52YXMoKS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3Qo
Y2FudmFzUmVjdCk7CiAgICAgUGF0aCBwYXRoID0gdHJhbnNmb3JtQXJlYVRvRGV2aWNlKGFyZWEp
OwogICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocGF0aC5ib3VuZGlu
Z1JlY3QoKSk7CisgICAgYnVmZmVyUmVjdC5pbnRlcnNlY3QoY2FudmFzUmVjdCk7CiAgICAgcGF0
aC50cmFuc2xhdGUoRmxvYXRTaXplKC1idWZmZXJSZWN0LngoKSwgLWJ1ZmZlclJlY3QueSgpKSk7
CiAKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlck1vZGUgPSBjYW52YXMoKS0+YnVmZmVyKCktPmlz
QWNjZWxlcmF0ZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKICAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyUmVjdC5zaXpl
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlbmRlck1vZGUpOworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm47CisKICAgICBidWZmZXItPmNvbnRleHQoKS0+c2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHN0YXRlKCkubV9maWxsU3R5bGUtPmFw
cGx5RmlsbENvbG9yKGJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBidWZmZXItPmNvbnRleHQoKS0+
ZmlsbFBhdGgocGF0aCk7CiAKLSAgICBGbG9hdFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMo
KS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKLSAgICBjYW52YXNSZWN0ID0gY2FudmFz
KCktPmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0KGNhbnZhc1JlY3QpOwotCiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKKyAgICBpZiAoIWMpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGMtPnNhdmUoKTsKICAgICBjLT5zZXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107253</attachid>
            <date>2011-09-13 16:27:34 -0700</date>
            <delta_ts>2011-09-13 21:43:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67988-20110914092732.patch</filename>
            <type>text/plain</type>
            <size>9639</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwMTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZjNmMTkwMjlhMDJlYTAxZGVhZjE1
OGRmMWFjN2RhODk0Y2EwOTBiLi40YWZhMDIxMjM3ZmNhM2ZiZDU0OTk5MzZjZjA1M2VhNDM4ODFh
ZGYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTIgIEJlbiBXZWxscyAgPGJlbndl
bGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBMYXJnZSBjYW52YXMgZmlsbHMgc2hvdWxkIG5v
dCBjcmFzaCBvciBjcmVhdGUgdW5uZWNlc3NhcmlseSBsYXJnZSBpbWFnZSBidWZmZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzk4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4gV2hpdGUuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMuaHRtbDogQWRkZWQuCisKIDIwMTEtMDktMTIgIERvbWlu
aWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIGEgdGVzdCB0
aGF0IGVuc3VyZXMgdGhhdCB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNTUwYTE1NDlkMWQxNmQ3YzcxYTlmNDg5NDI5NTAwMTJkNGRjYTdjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzOCBAQAorVGVzdHMgdGhhdCB1c2luZyByZWFzb25hYmx5
IGxhcmdlIHZhbHVlcyBmb3IgY2FudmFzLmhlaWdodCBhbmQgY2FudmFzLmhlaWdodCBkb24ndCBj
YXVzZSBhIGNyYXNoCisKK3NpemUgPT0gMTAwMDAKK3NvdXJjZS1vdmVyCitQQVNTIEFjdHVhbDog
MCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAy
NTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLWluCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1
NQorc291cmNlLW91dAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAw
IEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorc291cmNlLWF0b3AKK1BB
U1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFT
UyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitkZXN0aW5hdGlvbi1vdmVyCitQQVNTIEFjdHVh
bDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24taW4KK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4
cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rl
c3RpbmF0aW9uLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDog
MjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitsaWdodGVyCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1
CitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK2NvcHkKK1BBU1MgQWN0dWFsOiAwIEV4
cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBF
eHBlY3RlZDogMjU1Cit4b3IKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVh
bDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3NpemUgPT0gNTAw
MDAKK3NvdXJjZS1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6
IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLWlu
CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAK
K1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLW91dAorUEFTUyBBY3R1YWw6
IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDog
MCBFeHBlY3RlZDogMAorc291cmNlLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1
CitkZXN0aW5hdGlvbi1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGlu
YXRpb24taW4KK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4
cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1vdXQK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWF0b3AKK1BBU1MgQWN0dWFs
OiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitsaWdodGVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVk
OiAyNTUKK2NvcHkKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBF
eHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Cit4b3IKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDAgRXhwZWN0ZWQ6IDAKK3NpemUgPT0gMTAwMDAwCitzb3VyY2Utb3ZlcgorUEFTUyBBY3R1
YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVh
bDogMjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1pbgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6
IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVk
OiAyNTUKK3NvdXJjZS1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVh
bDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3NvdXJjZS1hdG9w
CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAK
K1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorZGVzdGluYXRpb24tb3ZlcgorUEFTUyBB
Y3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWluCitQQVNTIEFjdHVhbDogMCBF
eHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDog
MCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24tb3V0CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAw
CitkZXN0aW5hdGlvbi1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorbGlnaHRl
cgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6
IDI1NQorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Citjb3B5CitQQVNTIEFjdHVhbDog
MCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAy
NTUgRXhwZWN0ZWQ6IDI1NQoreG9yCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBB
Y3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzdjYWQ4MjUwMTQ4OTA5ZjFhZTRlZDA1NWFiMTViZjdjNWNkYzg1ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy5odG1sCkBA
IC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPkNhbnZhcyB0ZXN0OiB0ZXN0
IGxhcmdlIHdpZHRoL2hlaWdodCB2YWx1ZXM8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxwPlRlc3RzIHRoYXQg
dXNpbmcgdGhlIGRpZmZlcmVudCBjb21wb3NpdGUgbW9kZXMgdG8gZmlsbCBsYXJnZSByZWN0cyBk
b2Vzbid0IGNyYXNoIGFuZCB3b3JrcyBhcyBleHBlY3RlZC48L3A+Cis8cHJlIGlkPSJjb25zb2xl
Ij48L3ByZT4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdo
dD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9j
YW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
Iik7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7Cit2YXIgeCwgeSwgdz0xLCBo
PTE7Cit2YXIgd2lkdGg9Y2FudmFzLndpZHRoOwordmFyIGhlaWdodD1jYW52YXMuaGVpZ2h0Owor
CitmdW5jdGlvbiBjbGVhckNvbnRleHQoKSB7CisgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJh
dGlvbj0ic291cmNlLW92ZXIiOworICAgIGN0eC5maWxsU3R5bGUgPSAicmdiKDAsIDI1NSwgMCki
OworICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordmFyIGNvbXBv
c2l0ZVR5cGVzID0gWworICAgICdzb3VyY2Utb3ZlcicsJ3NvdXJjZS1pbicsJ3NvdXJjZS1vdXQn
LCdzb3VyY2UtYXRvcCcsCisgICAgJ2Rlc3RpbmF0aW9uLW92ZXInLCdkZXN0aW5hdGlvbi1pbics
J2Rlc3RpbmF0aW9uLW91dCcsJ2Rlc3RpbmF0aW9uLWF0b3AnLAorICAgICdsaWdodGVyJywnY29w
eScsJ3hvcicKK107CisKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBbMCwgMCwgMjU1XSwgWzAsIDAs
IDI1NV0sIFswLCAwLCAwXSwgWzAsIDAsIDI1NV0sCisgICAgWzAsIDI1NSwgMF0sIFswLCAyNTUs
IDBdLCBbMCwgMCwgMF0sIFswLCAyNTUsIDBdLAorICAgIFswLCAyNTUsIDI1NV0sIFswLCAwLCAy
NTVdLCBbMCwgMCwgMF0KK107CisKK2Z1bmN0aW9uIHRlc3RGaWxscyhzaXplKSB7CisgICAgdmFy
IG1zZyA9ICJzaXplID09ICIrc2l6ZTsKKyAgICBkZWJ1Zyhtc2cpOworICAgIGZvciAodmFyIGk9
MDsgaSA8IGNvbXBvc2l0ZVR5cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNsZWFyQ29udGV4
dChjdHgpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gInJnYigwLCAwLCAyNTUpIjsKKyAgICAg
ICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbXBvc2l0ZVR5cGVzW2ldOworICAg
ICAgICBkZWJ1Zyhjb21wb3NpdGVUeXBlc1tpXSk7CisgICAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCBzaXplLCBzaXplKTsKKyAgICAgICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAs
IHdpZHRoLCBoZWlnaHQpOworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDM7IHgrKykgewor
ICAgICAgICAgICAgdmFyIG1zZyA9ICJBY3R1YWw6ICIgKyBkYXRhLmRhdGFbeF0gKyAiIEV4cGVj
dGVkOiAiICsgZXhwZWN0ZWRbaV1beF07CisgICAgICAgICAgICBpZiAoZGF0YS5kYXRhW3hdID09
IGV4cGVjdGVkW2ldW3hdKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNnKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3Rlc3RGaWxscygxMDAwMCk7Cit0ZXN0RmlsbHMoNTAwMDApOwordGVzdEZp
bGxzKDEwMDAwMCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDAyMmJhMmYzM2VkMzI3N2E1NjM2ZTY3YTU4ZDI0MTY1M2M2NTI1MmYuLjlkZWFjYzZiZGRkNTg3
NzAyNjhlZmNjZjAxNmY5ODQwOWNmNzUwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxMS0wOS0xMiAgQmVuIFdlbGxzICA8YmVud2VsbHNAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IExhcmdlIGNhbnZhcyBmaWxscyBzaG91bGQgbm90IGNyYXNoIG9yIGNyZWF0ZSB1bm5lY2Vzc2Fy
aWx5IGxhcmdlIGltYWdlIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY3OTg4CisKKyAgICAgICAgV2hlbiB1c2luZyBzb3VyY2UtaW4sIGRl
c3RpbmF0aW9uLWluLCBzb3VyY2Utb3V0LCBvciBkZXN0aW5hdGlvbi1hdG9wIGEgdGVtcG9yYXJ5
CisgICAgICAgIGJ1ZmZlciBpcyBjcmVhdGVkLiBUaGlzIGJ1ZmZlciBvbmx5IG5lZWRzIHRvIGJl
IGJpZyBlbm91Z2ggdG8gY292ZXIgdGhlIGludGVyc2VjdGlvbgorICAgICAgICBvZiB0aGUgcGF0
aCBhbmQgdGhlIGNhbnZhcy4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIGFkZHMgc29tZSBu
dWxsIGNoZWNrcyBmb3IgZmFpbHVyZXMgdG8gY3JlYXRlIGNvbnRleHRzIG9yIGJ1ZmZlcnMuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICBUZXN0OiBmYXN0
L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMuaHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsQW5kRGlzcGxheVRyYW5zcGFyZW5jeUVsc2V3aGVyZSk6
CisKIDIwMTEtMDktMTIgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBDcmFzaGVzIGluIFdlYkNvcmU6Okluc2VydExpc3RDb21tYW5kOjp1bmxpc3RpZnlQ
YXJhZ3JhcGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAzOTkyNGQ5ZGFiYTIyM2Y2OGUwZjI2NTQyMGNk
YzFhZmQyYmQ4ZjIxLi5mMzg2ZGE1NGQyZWJjNmRlODNmN2U0NjZhYmVmZDAyNzk1ODJiM2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKQEAgLTE0NzIsNiArMTQ3Miw4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjbGVhckNhbnZhcygpCiB7CiAgICAgRmxvYXRSZWN0IGNhbnZhc1JlY3QoMCwg
MCwgY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSk7CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKKyAgICBpZiAoIWMpCisgICAgICAgIHJldHVy
bjsKIAogICAgIGMtPnNhdmUoKTsKICAgICBjLT5zZXRDVE0oY2FudmFzKCktPmJhc2VUcmFuc2Zv
cm0oKSk7CkBAIC0xNTA3LDIwICsxNTA5LDI2IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsQW5kRGlzcGxheVRyYW5zcGFyZW5jeUVsc2V3CiB7
CiAgICAgQVNTRVJUKHNob3VsZERpc3BsYXlUcmFuc3BhcmVuY3lFbHNld2hlcmUoKSk7CiAKKyAg
ICBJbnRSZWN0IGNhbnZhc1JlY3QoMCwgMCwgY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5o
ZWlnaHQoKSk7CisgICAgY2FudmFzUmVjdCA9IGNhbnZhcygpLT5iYXNlVHJhbnNmb3JtKCkubWFw
UmVjdChjYW52YXNSZWN0KTsKICAgICBQYXRoIHBhdGggPSB0cmFuc2Zvcm1BcmVhVG9EZXZpY2Uo
YXJlYSk7CiAgICAgSW50UmVjdCBidWZmZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwYXRoLmJv
dW5kaW5nUmVjdCgpKTsKKyAgICBidWZmZXJSZWN0LmludGVyc2VjdChjYW52YXNSZWN0KTsKICAg
ICBwYXRoLnRyYW5zbGF0ZShGbG9hdFNpemUoLWJ1ZmZlclJlY3QueCgpLCAtYnVmZmVyUmVjdC55
KCkpKTsKIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyTW9kZSA9IGNhbnZhcygpLT5idWZmZXIo
KS0+aXNBY2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOwogICAgIE93
blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJSZWN0
LnNpemUoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVuZGVyTW9kZSk7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5zZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgc3RhdGUoKS5tX2ZpbGxTdHls
ZS0+YXBwbHlGaWxsQ29sb3IoYnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT5maWxsUGF0aChwYXRoKTsKIAotICAgIEZsb2F0UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNh
bnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOwotICAgIGNhbnZhc1JlY3QgPSBj
YW52YXMoKS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7Ci0KICAgICBHcmFw
aGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOworICAgIGlmICghYykKKyAgICAgICAg
cmV0dXJuOworCiAgICAgYy0+c2F2ZSgpOwogICAgIGMtPnNldENUTShBZmZpbmVUcmFuc2Zvcm0o
KSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107282</attachid>
            <date>2011-09-13 21:43:16 -0700</date>
            <delta_ts>2011-09-14 19:44:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67988-20110914144314.patch</filename>
            <type>text/plain</type>
            <size>9670</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwNTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYjQ2MzhiYjhiZjdmOTc1NTJjOWQz
MTgxMmRhMGM1YzI5YzkxOWYzLi5iOTkyMjVhMmRmODQ5NTg3M2FlZmNkNjY0ZGE3OWFlMjU4Y2Ri
ZmE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTMgIEJlbiBXZWxscyAgPGJlbndl
bGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBMYXJnZSBjYW52YXMgZmlsbHMgc2hvdWxkIG5v
dCBjcmFzaCBvciBjcmVhdGUgdW5uZWNlc3NhcmlseSBsYXJnZSBpbWFnZSBidWZmZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzk4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4gV2hpdGUuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMuaHRtbDogQWRkZWQuCisKIDIwMTEtMDktMTMgIEplcmVt
eSBBcHRob3JwICA8amVyZW15YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJlbW92aW5nIGFuIGlm
cmFtZSBmcm9tIHRoZSBkb2N1bWVudCBkdXJpbmcgYSB0cmFuc2l0aW9uIHRvIGZ1bGxzY3JlZW4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MTlmODE0NzU0NjkwZmNkOTc2MDdkYTUxMDJiZmFh
YzI2NDYwYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTM4IEBACitUZXN0cyB0aGF0
IHVzaW5nIHRoZSBkaWZmZXJlbnQgY29tcG9zaXRlIG1vZGVzIHRvIGZpbGwgbGFyZ2UgcmVjdHMg
ZG9lc24ndCBjcmFzaCBhbmQgd29ya3MgYXMgZXhwZWN0ZWQuCisKK3NpemUgPT0gMTAwMDAKK3Nv
dXJjZS1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLWluCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLW91dAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorc291cmNlLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitkZXN0
aW5hdGlvbi1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1
NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24t
aW4KK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVk
OiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1vdXQKK1BBU1Mg
QWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBB
Y3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4
cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAw
IEV4cGVjdGVkOiAwCitsaWdodGVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBB
Y3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUK
K2NvcHkKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3Rl
ZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Cit4b3IKK1BBU1MgQWN0dWFsOiAw
IEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAg
RXhwZWN0ZWQ6IDAKK3NpemUgPT0gNTAwMDAKK3NvdXJjZS1vdmVyCitQQVNTIEFjdHVhbDogMCBF
eHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUg
RXhwZWN0ZWQ6IDI1NQorc291cmNlLWluCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQor
c291cmNlLW91dAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4
cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorc291cmNlLWF0b3AKK1BBU1Mg
QWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBB
Y3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitkZXN0aW5hdGlvbi1vdmVyCitQQVNTIEFjdHVhbDog
MCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVh
bDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24taW4KK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVk
OiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitkZXN0aW5hdGlvbi1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3Rp
bmF0aW9uLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1
IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitsaWdodGVyCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQ
QVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK2NvcHkKK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBl
Y3RlZDogMjU1Cit4b3IKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDog
MCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3NpemUgPT0gMTAwMDAw
Citzb3VyY2Utb3ZlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAw
IEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1pbgor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1vdXQKK1BBU1MgQWN0dWFsOiAw
IEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAg
RXhwZWN0ZWQ6IDAKK3NvdXJjZS1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQor
ZGVzdGluYXRpb24tb3ZlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFs
OiAyNTUgRXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0
aW9uLWluCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBl
Y3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24tb3V0CitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BB
U1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1hdG9wCitQQVNTIEFjdHVhbDog
MCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVh
bDogMCBFeHBlY3RlZDogMAorbGlnaHRlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BB
U1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDog
MjU1Citjb3B5CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQoreG9yCitQQVNTIEFjdHVh
bDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFs
OiAwIEV4cGVjdGVkOiAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1sYXJnZS1maWxscy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWxh
cmdlLWZpbGxzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdjYWQ4MjUwMTQ4OTA5ZjFhZTRlZDA1NWFiMTVi
ZjdjNWNkYzg1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1sYXJnZS1maWxscy5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PHRpdGxlPkNhbnZhcyB0ZXN0OiB0ZXN0IGxhcmdlIHdpZHRoL2hlaWdodCB2YWx1ZXM8L3RpdGxl
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8Ym9keT4KKzxwPlRlc3RzIHRoYXQgdXNpbmcgdGhlIGRpZmZlcmVudCBjb21wb3NpdGUgbW9k
ZXMgdG8gZmlsbCBsYXJnZSByZWN0cyBkb2Vzbid0IGNyYXNoIGFuZCB3b3JrcyBhcyBleHBlY3Rl
ZC48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJv
dXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAo
ZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIik7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQo
IjJkIik7Cit2YXIgeCwgeSwgdz0xLCBoPTE7Cit2YXIgd2lkdGg9Y2FudmFzLndpZHRoOwordmFy
IGhlaWdodD1jYW52YXMuaGVpZ2h0OworCitmdW5jdGlvbiBjbGVhckNvbnRleHQoKSB7CisgICAg
Y3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLW92ZXIiOworICAgIGN0eC5maWxs
U3R5bGUgPSAicmdiKDAsIDI1NSwgMCkiOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwg
aGVpZ2h0KTsKK30KKwordmFyIGNvbXBvc2l0ZVR5cGVzID0gWworICAgICdzb3VyY2Utb3Zlcics
J3NvdXJjZS1pbicsJ3NvdXJjZS1vdXQnLCdzb3VyY2UtYXRvcCcsCisgICAgJ2Rlc3RpbmF0aW9u
LW92ZXInLCdkZXN0aW5hdGlvbi1pbicsJ2Rlc3RpbmF0aW9uLW91dCcsJ2Rlc3RpbmF0aW9uLWF0
b3AnLAorICAgICdsaWdodGVyJywnY29weScsJ3hvcicKK107CisKK3ZhciBleHBlY3RlZCA9IFsK
KyAgICBbMCwgMCwgMjU1XSwgWzAsIDAsIDI1NV0sIFswLCAwLCAwXSwgWzAsIDAsIDI1NV0sCisg
ICAgWzAsIDI1NSwgMF0sIFswLCAyNTUsIDBdLCBbMCwgMCwgMF0sIFswLCAyNTUsIDBdLAorICAg
IFswLCAyNTUsIDI1NV0sIFswLCAwLCAyNTVdLCBbMCwgMCwgMF0KK107CisKK2Z1bmN0aW9uIHRl
c3RGaWxscyhzaXplKSB7CisgICAgdmFyIG1zZyA9ICJzaXplID09ICIrc2l6ZTsKKyAgICBkZWJ1
Zyhtc2cpOworICAgIGZvciAodmFyIGk9MDsgaSA8IGNvbXBvc2l0ZVR5cGVzLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgIGNsZWFyQ29udGV4dChjdHgpOworICAgICAgICBjdHguZmlsbFN0eWxlID0g
InJnYigwLCAwLCAyNTUpIjsKKyAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9
IGNvbXBvc2l0ZVR5cGVzW2ldOworICAgICAgICBkZWJ1Zyhjb21wb3NpdGVUeXBlc1tpXSk7Cisg
ICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBzaXplLCBzaXplKTsKKyAgICAgICAgdmFyIGRhdGEg
PSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBmb3IgKHZh
ciB4ID0gMDsgeCA8IDM7IHgrKykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICJBY3R1YWw6ICIg
KyBkYXRhLmRhdGFbeF0gKyAiIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRbaV1beF07CisgICAgICAg
ICAgICBpZiAoZGF0YS5kYXRhW3hdID09IGV4cGVjdGVkW2ldW3hdKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQobXNnKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKG1zZyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3RGaWxscygxMDAwMCk7Cit0
ZXN0RmlsbHMoNTAwMDApOwordGVzdEZpbGxzKDEwMDAwMCk7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg1ODIwZTQ5NGFkYmZkODc0NDBjNDdkMmE0M2MwYzkx
MTcwNTE5ZmYuLjJmMDIyMzcwOGU0NmI4YjllOWI4ZTgyOWQzZWMzYjJkODkwNDNlMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wOS0xMyAgQmVuIFdlbGxzICA8YmVud2VsbHNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIExhcmdlIGNhbnZhcyBmaWxscyBzaG91bGQgbm90IGNy
YXNoIG9yIGNyZWF0ZSB1bm5lY2Vzc2FyaWx5IGxhcmdlIGltYWdlIGJ1ZmZlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3OTg4CisKKyAgICAgICAg
V2hlbiB1c2luZyBzb3VyY2UtaW4sIGRlc3RpbmF0aW9uLWluLCBzb3VyY2Utb3V0LCBvciBkZXN0
aW5hdGlvbi1hdG9wIGEgdGVtcG9yYXJ5CisgICAgICAgIGJ1ZmZlciBpcyBjcmVhdGVkLiBUaGlz
IGJ1ZmZlciBvbmx5IG5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gY292ZXIgdGhlIGludGVyc2Vj
dGlvbgorICAgICAgICBvZiB0aGUgcGF0aCBhbmQgdGhlIGNhbnZhcy4KKworICAgICAgICBUaGlz
IGNoYW5nZSBhbHNvIGFkZHMgc29tZSBudWxsIGNoZWNrcyBmb3IgZmFpbHVyZXMgdG8gY3JlYXRl
IGNvbnRleHRzIG9yIGJ1ZmZlcnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0
ZS4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMuaHRtbAor
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJDYW52YXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsQW5kRGlzcGxh
eVRyYW5zcGFyZW5jeUVsc2V3aGVyZSk6CisKIDIwMTEtMDktMTMgIEplcmVteSBBcHRob3JwICA8
amVyZW15YUBnb29nbGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFzaCB3aGVuIGFuIGlmcmFtZSBl
bGVtZW50IGlzIHJlbW92ZWQgZHVyaW5nIGEgdHJhbnNpdGlvbiB0bwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5k
ZXggMzk5MjRkOWRhYmEyMjNmNjhlMGYyNjU0MjBjZGMxYWZkMmJkOGYyMS4uZjM4NmRhNTRkMmVi
YzZkZTgzZjdlNDY2YWJlZmQwMjc5NTgyYjNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNDcyLDYg
KzE0NzIsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJDYW52YXMoKQog
ewogICAgIEZsb2F0UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52
YXMoKS0+aGVpZ2h0KCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0
KCk7CisgICAgaWYgKCFjKQorICAgICAgICByZXR1cm47CiAKICAgICBjLT5zYXZlKCk7CiAgICAg
Yy0+c2V0Q1RNKGNhbnZhcygpLT5iYXNlVHJhbnNmb3JtKCkpOwpAQCAtMTUwNywyMCArMTUwOSwy
NiBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zmls
bEFuZERpc3BsYXlUcmFuc3BhcmVuY3lFbHNldwogewogICAgIEFTU0VSVChzaG91bGREaXNwbGF5
VHJhbnNwYXJlbmN5RWxzZXdoZXJlKCkpOwogCisgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAs
IGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOworICAgIGNhbnZhc1JlY3Qg
PSBjYW52YXMoKS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CiAgICAgUGF0
aCBwYXRoID0gdHJhbnNmb3JtQXJlYVRvRGV2aWNlKGFyZWEpOwogICAgIEludFJlY3QgYnVmZmVy
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocGF0aC5ib3VuZGluZ1JlY3QoKSk7CisgICAgYnVmZmVy
UmVjdC5pbnRlcnNlY3QoY2FudmFzUmVjdCk7CiAgICAgcGF0aC50cmFuc2xhdGUoRmxvYXRTaXpl
KC1idWZmZXJSZWN0LngoKSwgLWJ1ZmZlclJlY3QueSgpKSk7CiAKICAgICBSZW5kZXJpbmdNb2Rl
IHJlbmRlck1vZGUgPSBjYW52YXMoKS0+YnVmZmVyKCktPmlzQWNjZWxlcmF0ZWQoKSA/IEFjY2Vs
ZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyUmVjdC5zaXplKCksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIHJlbmRlck1vZGUpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm47CisKICAg
ICBidWZmZXItPmNvbnRleHQoKS0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOwogICAgIHN0YXRlKCkubV9maWxsU3R5bGUtPmFwcGx5RmlsbENvbG9yKGJ1ZmZlci0+
Y29udGV4dCgpKTsKICAgICBidWZmZXItPmNvbnRleHQoKS0+ZmlsbFBhdGgocGF0aCk7CiAKLSAg
ICBGbG9hdFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCkt
PmhlaWdodCgpKTsKLSAgICBjYW52YXNSZWN0ID0gY2FudmFzKCktPmJhc2VUcmFuc2Zvcm0oKS5t
YXBSZWN0KGNhbnZhc1JlY3QpOwotCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0Nv
bnRleHQoKTsKKyAgICBpZiAoIWMpCisgICAgICAgIHJldHVybjsKKwogICAgIGMtPnNhdmUoKTsK
ICAgICBjLT5zZXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107443</attachid>
            <date>2011-09-14 19:44:12 -0700</date>
            <delta_ts>2011-09-14 20:21:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67988-20110915124410.patch</filename>
            <type>text/plain</type>
            <size>11329</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxNDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MzcyYTI1MmIyYTNjNzI5ZGNhNDlj
ZjE5MmQ1NzdiMzQwMGNiMjZmLi5lNzUxYWQwN2ZmOGMzYjRlMzM2YWJmMjdlNWIxZmQ5MzE3NWYy
ODZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTQgIEJlbiBXZWxscyAgPGJlbndl
bGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBMYXJnZSBjYW52YXMgZmlsbHMgc2hvdWxkIG5v
dCBjcmFzaCBvciBjcmVhdGUgdW5uZWNlc3NhcmlseSBsYXJnZSBpbWFnZSBidWZmZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzk4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMv
Y2FudmFzLWxhcmdlLWZpbGxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWw6IEFkZGVkLgorCiAyMDExLTA5LTE0ICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlYmFz
ZWxpbmVzIGR1ZSB0byByOTUwOTYsIHI5NTEyMSwgYW5kIHI5NTEyOS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE5MTlmODE0NzU0NjkwZmNkOTc2MDdkYTUxMDJiZmFhYzI2NDYwYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTM4IEBACitUZXN0cyB0aGF0IHVzaW5nIHRoZSBkaWZm
ZXJlbnQgY29tcG9zaXRlIG1vZGVzIHRvIGZpbGwgbGFyZ2UgcmVjdHMgZG9lc24ndCBjcmFzaCBh
bmQgd29ya3MgYXMgZXhwZWN0ZWQuCisKK3NpemUgPT0gMTAwMDAKK3NvdXJjZS1vdmVyCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLWluCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhw
ZWN0ZWQ6IDI1NQorc291cmNlLW91dAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorc291cmNl
LWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3Rl
ZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitkZXN0aW5hdGlvbi1vdmVyCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1
CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24taW4KK1BBU1MgQWN0dWFs
OiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0
ZWQ6IDAKK2Rlc3RpbmF0aW9uLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNT
IEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCits
aWdodGVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBl
Y3RlZDogMjU1CitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK2NvcHkKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDI1NSBFeHBlY3RlZDogMjU1Cit4b3IKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3Np
emUgPT0gNTAwMDAKK3NvdXJjZS1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQor
c291cmNlLWluCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLW91dAorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorc291cmNlLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBl
Y3RlZDogMjU1CitkZXN0aW5hdGlvbi1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorZGVzdGluYXRpb24taW4KK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVh
bDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5h
dGlvbi1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWF0b3AKK1BB
U1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitsaWdodGVyCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMjU1
IEV4cGVjdGVkOiAyNTUKK2NvcHkKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Cit4b3IK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3NpemUgPT0gMTAwMDAwCitzb3VyY2Utb3Zlcgor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1pbgorUEFTUyBBY3R1YWw6IDAg
RXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1
IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3Nv
dXJjZS1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorZGVzdGluYXRpb24tb3Zl
cgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6
IDI1NQorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWluCitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24tb3V0CitQQVNTIEFjdHVhbDogMCBF
eHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4
cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorbGlnaHRlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUg
RXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Citjb3B5CitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQoreG9yCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAw
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxs
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzdjYWQ4MjUwMTQ4OTA5ZjFhZTRlZDA1NWFiMTViZjdjNWNkYzg1ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxs
cy5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPkNhbnZhcyB0
ZXN0OiB0ZXN0IGxhcmdlIHdpZHRoL2hlaWdodCB2YWx1ZXM8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxwPlRl
c3RzIHRoYXQgdXNpbmcgdGhlIGRpZmZlcmVudCBjb21wb3NpdGUgbW9kZXMgdG8gZmlsbCBsYXJn
ZSByZWN0cyBkb2Vzbid0IGNyYXNoIGFuZCB3b3JrcyBhcyBleHBlY3RlZC48L3A+Cis8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIx
MDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVu
dCk8L3A+PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjIik7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7Cit2YXIgeCwg
eSwgdz0xLCBoPTE7Cit2YXIgd2lkdGg9Y2FudmFzLndpZHRoOwordmFyIGhlaWdodD1jYW52YXMu
aGVpZ2h0OworCitmdW5jdGlvbiBjbGVhckNvbnRleHQoKSB7CisgICAgY3R4Lmdsb2JhbENvbXBv
c2l0ZU9wZXJhdGlvbj0ic291cmNlLW92ZXIiOworICAgIGN0eC5maWxsU3R5bGUgPSAicmdiKDAs
IDI1NSwgMCkiOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKK30KKwor
dmFyIGNvbXBvc2l0ZVR5cGVzID0gWworICAgICdzb3VyY2Utb3ZlcicsJ3NvdXJjZS1pbicsJ3Nv
dXJjZS1vdXQnLCdzb3VyY2UtYXRvcCcsCisgICAgJ2Rlc3RpbmF0aW9uLW92ZXInLCdkZXN0aW5h
dGlvbi1pbicsJ2Rlc3RpbmF0aW9uLW91dCcsJ2Rlc3RpbmF0aW9uLWF0b3AnLAorICAgICdsaWdo
dGVyJywnY29weScsJ3hvcicKK107CisKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBbMCwgMCwgMjU1
XSwgWzAsIDAsIDI1NV0sIFswLCAwLCAwXSwgWzAsIDAsIDI1NV0sCisgICAgWzAsIDI1NSwgMF0s
IFswLCAyNTUsIDBdLCBbMCwgMCwgMF0sIFswLCAyNTUsIDBdLAorICAgIFswLCAyNTUsIDI1NV0s
IFswLCAwLCAyNTVdLCBbMCwgMCwgMF0KK107CisKK2Z1bmN0aW9uIHRlc3RGaWxscyhzaXplKSB7
CisgICAgdmFyIG1zZyA9ICJzaXplID09ICIrc2l6ZTsKKyAgICBkZWJ1Zyhtc2cpOworICAgIGZv
ciAodmFyIGk9MDsgaSA8IGNvbXBvc2l0ZVR5cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNs
ZWFyQ29udGV4dChjdHgpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gInJnYigwLCAwLCAyNTUp
IjsKKyAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbXBvc2l0ZVR5cGVz
W2ldOworICAgICAgICBkZWJ1Zyhjb21wb3NpdGVUeXBlc1tpXSk7CisgICAgICAgIGN0eC5maWxs
UmVjdCgwLCAwLCBzaXplLCBzaXplKTsKKyAgICAgICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VE
YXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDM7
IHgrKykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICJBY3R1YWw6ICIgKyBkYXRhLmRhdGFbeF0g
KyAiIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRbaV1beF07CisgICAgICAgICAgICBpZiAoZGF0YS5k
YXRhW3hdID09IGV4cGVjdGVkW2ldW3hdKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNn
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3RGaWxscygxMDAwMCk7Cit0ZXN0RmlsbHMoNTAwMDAp
OwordGVzdEZpbGxzKDEwMDAwMCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM4NDhjNjQwOGYxZmE5ZDkwZmE2MWY0YzQ1MzM2NGRkOWVkMGMwYjcuLmNhOTZm
ZmNhYTBlNjM2NGJjMDAzZTU4YjBkNWVlMzI3YmNmYmE4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMS0wOS0xNCAgQmVuIFdlbGxzICA8YmVud2VsbHNAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIExhcmdlIGNhbnZhcyBmaWxscyBzaG91bGQgbm90IGNyYXNoIG9yIGNyZWF0ZSB1
bm5lY2Vzc2FyaWx5IGxhcmdlIGltYWdlIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3OTg4CisKKyAgICAgICAgV2hlbiB1c2luZyBzb3Vy
Y2UtaW4sIGRlc3RpbmF0aW9uLWluLCBzb3VyY2Utb3V0LCBvciBkZXN0aW5hdGlvbi1hdG9wIGEg
dGVtcG9yYXJ5CisgICAgICAgIGJ1ZmZlciBpcyBjcmVhdGVkLiBUaGlzIGJ1ZmZlciBvbmx5IG5l
ZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gY292ZXIgdGhlIGludGVyc2VjdGlvbgorICAgICAgICBv
ZiB0aGUgcGF0aCBhbmQgdGhlIGNhbnZhcy4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIGFk
ZHMgc29tZSBudWxsIGNoZWNrcyBmb3IgZmFpbHVyZXMgdG8gY3JlYXRlIGNvbnRleHRzIG9yIGJ1
ZmZlcnMuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgc2Vjb25kIGF0dGVtcHQgdG8gbGFuZCB0aGlz
IGNoYW5nZSwgaW4gdGhpcyB2ZXJzaW9uIHRoZSBjYXNlIHdoZXJlCisgICAgICAgIHRoZSB0ZW1w
b3JhcnkgYnVmZmVyIHdvdWxkIGJlIGVtcHR5IGlzIG9wdGltaXplZCBhd2F5LiBUaGlzIGNhbiBo
YXBwZW4gaWYgdGhlIHBhdGgKKyAgICAgICAgb3IgcmVjdCBiZWluZyBmaWxsZWQgaXMgb3V0c2lk
ZSB0aGUgY2FudmFzLiBUaGlzIGlzIGEgd29yaHkgb3B0aW1pemF0aW9uIGJ5IGl0c2VsZiwKKyAg
ICAgICAgaXRzIGFsc28gZ29vZCBiZWNhdXNlIHdpdGhvdXQgaXQgQ0cgcG9ydHMgZG8gbm90IGRv
IHRoZXNlIHR5cGVzIG9mIGZpbGxzIHByb3Blcmx5CisgICAgICAgIGR1ZSB0byBkaWZmZXJlbmNl
cyBpbiB3aGF0IGNsaXBPdXQgY2FsbGVkIHdpdGggYW4gZW1wdHkgcmVjdCB3aWxsIGRvLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
Y2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhckNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxBbmREaXNwbGF5VHJhbnNwYXJlbmN5RWxzZXdoZXJlKToK
KwogMjAxMS0wOS0xNCAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQWRkZWQgYSBwdXJlIHZpcnR1YWwgY2xhc3MgQ0NMYXllckRlbGVnYXRlIHdoaWNoIGhl
bHBzIHRvIGlzb2xhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDM5OTI0ZDlkYWJhMjIzZjY4ZTBmMjY1
NDIwY2RjMWFmZDJiZDhmMjEuLjg1ZTQzOTJiYWI4YTg3OWU5NDUxNGRiZTMzOWEwY2M0YjI1Mzk1
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTQ3Miw2ICsxNDcyLDggQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNsZWFyQ2FudmFzKCkKIHsKICAgICBGbG9hdFJlY3QgY2FudmFzUmVj
dCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKICAgICBHcmFw
aGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOworICAgIGlmICghYykKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgYy0+c2F2ZSgpOwogICAgIGMtPnNldENUTShjYW52YXMoKS0+YmFzZVRy
YW5zZm9ybSgpKTsKQEAgLTE1MDcsMzAgKzE1MDksNDAgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxBbmREaXNwbGF5VHJhbnNwYXJlbmN5RWxz
ZXcKIHsKICAgICBBU1NFUlQoc2hvdWxkRGlzcGxheVRyYW5zcGFyZW5jeUVsc2V3aGVyZSgpKTsK
IAorICAgIEludFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFz
KCktPmhlaWdodCgpKTsKKyAgICBjYW52YXNSZWN0ID0gY2FudmFzKCktPmJhc2VUcmFuc2Zvcm0o
KS5tYXBSZWN0KGNhbnZhc1JlY3QpOwogICAgIFBhdGggcGF0aCA9IHRyYW5zZm9ybUFyZWFUb0Rl
dmljZShhcmVhKTsKICAgICBJbnRSZWN0IGJ1ZmZlclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHBh
dGguYm91bmRpbmdSZWN0KCkpOwotICAgIHBhdGgudHJhbnNsYXRlKEZsb2F0U2l6ZSgtYnVmZmVy
UmVjdC54KCksIC1idWZmZXJSZWN0LnkoKSkpOworICAgIGJ1ZmZlclJlY3QuaW50ZXJzZWN0KGNh
bnZhc1JlY3QpOwogCi0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJNb2RlID0gY2FudmFzKCktPmJ1
ZmZlcigpLT5pc0FjY2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7Ci0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZl
clJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZW5kZXJNb2RlKTsKLSAgICBidWZm
ZXItPmNvbnRleHQoKS0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIp
OwotICAgIHN0YXRlKCkubV9maWxsU3R5bGUtPmFwcGx5RmlsbENvbG9yKGJ1ZmZlci0+Y29udGV4
dCgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+ZmlsbFBhdGgocGF0aCk7CisgICAgaWYgKCFi
dWZmZXJSZWN0LmlzRW1wdHkoKSkgeworICAgICAgICBwYXRoLnRyYW5zbGF0ZShGbG9hdFNpemUo
LWJ1ZmZlclJlY3QueCgpLCAtYnVmZmVyUmVjdC55KCkpKTsKIAotICAgIEZsb2F0UmVjdCBjYW52
YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOwotICAg
IGNhbnZhc1JlY3QgPSBjYW52YXMoKS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVj
dCk7CisgICAgICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyTW9kZSA9IGNhbnZhcygpLT5idWZmZXIo
KS0+aXNBY2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOworICAgICAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVy
UmVjdC5zaXplKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlbmRlck1vZGUpOworICAgICAgICBp
ZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCog
YyA9IGRyYXdpbmdDb250ZXh0KCk7Ci0gICAgYy0+c2F2ZSgpOwotICAgIGMtPnNldENUTShBZmZp
bmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5zZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIHN0YXRlKCkubV9maWxsU3R5
bGUtPmFwcGx5RmlsbENvbG9yKGJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAgICAgYnVmZmVyLT5j
b250ZXh0KCktPmZpbGxQYXRoKHBhdGgpOwogCi0gICAgYy0+c2F2ZSgpOwotICAgIGMtPmNsaXBP
dXQoYnVmZmVyUmVjdCk7Ci0gICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwotICAgIGMtPnJl
c3RvcmUoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsK
KyAgICAgICAgaWYgKCFjKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgYy0+ZHJhd0ltYWdl
QnVmZmVyKGJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVjdC5sb2Nh
dGlvbigpLCBzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKTsKLSAgICBjLT5yZXN0b3JlKCk7Cisg
ICAgICAgIGMtPnNhdmUoKTsKKyAgICAgICAgYy0+c2V0Q1RNKEFmZmluZVRyYW5zZm9ybSgpKTsK
KworICAgICAgICBjLT5zYXZlKCk7CisgICAgICAgIGMtPmNsaXBPdXQoYnVmZmVyUmVjdCk7Cisg
ICAgICAgIGMtPmNsZWFyUmVjdChjYW52YXNSZWN0KTsKKyAgICAgICAgYy0+cmVzdG9yZSgpOwor
CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlY3QubG9jYXRpb24oKSwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7
CisgICAgICAgIGMtPnJlc3RvcmUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2xlYXJDYW52YXMo
KTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnByZXBhcmVHcmFkaWVudEZv
ckRhc2hib2FyZChDYW52YXNHcmFkaWVudCogZ3JhZGllbnQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107445</attachid>
            <date>2011-09-14 20:21:25 -0700</date>
            <delta_ts>2011-09-14 21:09:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67988-20110915132123.patch</filename>
            <type>text/plain</type>
            <size>11320</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxNDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MzcyYTI1MmIyYTNjNzI5ZGNhNDlj
ZjE5MmQ1NzdiMzQwMGNiMjZmLi5lNzUxYWQwN2ZmOGMzYjRlMzM2YWJmMjdlNWIxZmQ5MzE3NWYy
ODZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTQgIEJlbiBXZWxscyAgPGJlbndl
bGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBMYXJnZSBjYW52YXMgZmlsbHMgc2hvdWxkIG5v
dCBjcmFzaCBvciBjcmVhdGUgdW5uZWNlc3NhcmlseSBsYXJnZSBpbWFnZSBidWZmZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzk4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMv
Y2FudmFzLWxhcmdlLWZpbGxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWw6IEFkZGVkLgorCiAyMDExLTA5LTE0ICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlYmFz
ZWxpbmVzIGR1ZSB0byByOTUwOTYsIHI5NTEyMSwgYW5kIHI5NTEyOS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE5MTlmODE0NzU0NjkwZmNkOTc2MDdkYTUxMDJiZmFhYzI2NDYwYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTM4IEBACitUZXN0cyB0aGF0IHVzaW5nIHRoZSBkaWZm
ZXJlbnQgY29tcG9zaXRlIG1vZGVzIHRvIGZpbGwgbGFyZ2UgcmVjdHMgZG9lc24ndCBjcmFzaCBh
bmQgd29ya3MgYXMgZXhwZWN0ZWQuCisKK3NpemUgPT0gMTAwMDAKK3NvdXJjZS1vdmVyCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLWluCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhw
ZWN0ZWQ6IDI1NQorc291cmNlLW91dAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorc291cmNl
LWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3Rl
ZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitkZXN0aW5hdGlvbi1vdmVyCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1
CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24taW4KK1BBU1MgQWN0dWFs
OiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0
ZWQ6IDAKK2Rlc3RpbmF0aW9uLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNT
IEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCits
aWdodGVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBl
Y3RlZDogMjU1CitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK2NvcHkKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDI1NSBFeHBlY3RlZDogMjU1Cit4b3IKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3Np
emUgPT0gNTAwMDAKK3NvdXJjZS1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQor
c291cmNlLWluCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLW91dAorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorc291cmNlLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBl
Y3RlZDogMjU1CitkZXN0aW5hdGlvbi1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorZGVzdGluYXRpb24taW4KK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVh
bDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5h
dGlvbi1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWF0b3AKK1BB
U1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitsaWdodGVyCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMjU1
IEV4cGVjdGVkOiAyNTUKK2NvcHkKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Cit4b3IK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3NpemUgPT0gMTAwMDAwCitzb3VyY2Utb3Zlcgor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1pbgorUEFTUyBBY3R1YWw6IDAg
RXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1
IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3Nv
dXJjZS1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorZGVzdGluYXRpb24tb3Zl
cgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6
IDI1NQorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWluCitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24tb3V0CitQQVNTIEFjdHVhbDogMCBF
eHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4
cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorbGlnaHRlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUg
RXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Citjb3B5CitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQoreG9yCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAw
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxs
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzdjYWQ4MjUwMTQ4OTA5ZjFhZTRlZDA1NWFiMTViZjdjNWNkYzg1ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxs
cy5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPkNhbnZhcyB0
ZXN0OiB0ZXN0IGxhcmdlIHdpZHRoL2hlaWdodCB2YWx1ZXM8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxwPlRl
c3RzIHRoYXQgdXNpbmcgdGhlIGRpZmZlcmVudCBjb21wb3NpdGUgbW9kZXMgdG8gZmlsbCBsYXJn
ZSByZWN0cyBkb2Vzbid0IGNyYXNoIGFuZCB3b3JrcyBhcyBleHBlY3RlZC48L3A+Cis8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIx
MDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVu
dCk8L3A+PC9jYW52YXM+Cis8c2NyaXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjIik7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7Cit2YXIgeCwg
eSwgdz0xLCBoPTE7Cit2YXIgd2lkdGg9Y2FudmFzLndpZHRoOwordmFyIGhlaWdodD1jYW52YXMu
aGVpZ2h0OworCitmdW5jdGlvbiBjbGVhckNvbnRleHQoKSB7CisgICAgY3R4Lmdsb2JhbENvbXBv
c2l0ZU9wZXJhdGlvbj0ic291cmNlLW92ZXIiOworICAgIGN0eC5maWxsU3R5bGUgPSAicmdiKDAs
IDI1NSwgMCkiOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKK30KKwor
dmFyIGNvbXBvc2l0ZVR5cGVzID0gWworICAgICdzb3VyY2Utb3ZlcicsJ3NvdXJjZS1pbicsJ3Nv
dXJjZS1vdXQnLCdzb3VyY2UtYXRvcCcsCisgICAgJ2Rlc3RpbmF0aW9uLW92ZXInLCdkZXN0aW5h
dGlvbi1pbicsJ2Rlc3RpbmF0aW9uLW91dCcsJ2Rlc3RpbmF0aW9uLWF0b3AnLAorICAgICdsaWdo
dGVyJywnY29weScsJ3hvcicKK107CisKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBbMCwgMCwgMjU1
XSwgWzAsIDAsIDI1NV0sIFswLCAwLCAwXSwgWzAsIDAsIDI1NV0sCisgICAgWzAsIDI1NSwgMF0s
IFswLCAyNTUsIDBdLCBbMCwgMCwgMF0sIFswLCAyNTUsIDBdLAorICAgIFswLCAyNTUsIDI1NV0s
IFswLCAwLCAyNTVdLCBbMCwgMCwgMF0KK107CisKK2Z1bmN0aW9uIHRlc3RGaWxscyhzaXplKSB7
CisgICAgdmFyIG1zZyA9ICJzaXplID09ICIrc2l6ZTsKKyAgICBkZWJ1Zyhtc2cpOworICAgIGZv
ciAodmFyIGk9MDsgaSA8IGNvbXBvc2l0ZVR5cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNs
ZWFyQ29udGV4dChjdHgpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gInJnYigwLCAwLCAyNTUp
IjsKKyAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbXBvc2l0ZVR5cGVz
W2ldOworICAgICAgICBkZWJ1Zyhjb21wb3NpdGVUeXBlc1tpXSk7CisgICAgICAgIGN0eC5maWxs
UmVjdCgwLCAwLCBzaXplLCBzaXplKTsKKyAgICAgICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VE
YXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDM7
IHgrKykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICJBY3R1YWw6ICIgKyBkYXRhLmRhdGFbeF0g
KyAiIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRbaV1beF07CisgICAgICAgICAgICBpZiAoZGF0YS5k
YXRhW3hdID09IGV4cGVjdGVkW2ldW3hdKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNn
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3RGaWxscygxMDAwMCk7Cit0ZXN0RmlsbHMoNTAwMDAp
OwordGVzdEZpbGxzKDEwMDAwMCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM4NDhjNjQwOGYxZmE5ZDkwZmE2MWY0YzQ1MzM2NGRkOWVkMGMwYjcuLjhmMzkw
MzUzZTY3ZThlYzJmMGRlYjQ2ZjZjYjhmZDM4MzM3MTZmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMS0wOS0xNCAgQmVuIFdlbGxzICA8YmVud2VsbHNAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIExhcmdlIGNhbnZhcyBmaWxscyBzaG91bGQgbm90IGNyYXNoIG9yIGNyZWF0ZSB1
bm5lY2Vzc2FyaWx5IGxhcmdlIGltYWdlIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3OTg4CisKKyAgICAgICAgV2hlbiB1c2luZyBzb3Vy
Y2UtaW4sIGRlc3RpbmF0aW9uLWluLCBzb3VyY2Utb3V0LCBvciBkZXN0aW5hdGlvbi1hdG9wIGEg
dGVtcG9yYXJ5CisgICAgICAgIGJ1ZmZlciBpcyBjcmVhdGVkLiBUaGlzIGJ1ZmZlciBvbmx5IG5l
ZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gY292ZXIgdGhlIGludGVyc2VjdGlvbgorICAgICAgICBv
ZiB0aGUgcGF0aCBhbmQgdGhlIGNhbnZhcy4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIGFk
ZHMgc29tZSBudWxsIGNoZWNrcyBmb3IgZmFpbHVyZXMgdG8gY3JlYXRlIGNvbnRleHRzIG9yIGJ1
ZmZlcnMuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgc2Vjb25kIGF0dGVtcHQgdG8gbGFuZCB0aGlz
IGNoYW5nZSwgaW4gdGhpcyB2ZXJzaW9uIHRoZSBjYXNlIHdoZXJlCisgICAgICAgIHRoZSB0ZW1w
b3JhcnkgYnVmZmVyIHdvdWxkIGJlIGVtcHR5IGlzIG9wdGltaXplZCBhd2F5LiBUaGlzIGNhbiBo
YXBwZW4gaWYgdGhlIHBhdGgKKyAgICAgICAgb3IgcmVjdCBiZWluZyBmaWxsZWQgaXMgb3V0c2lk
ZSB0aGUgY2FudmFzLiBUaGlzIGlzIGEgd29yaHkgb3B0aW1pemF0aW9uIGJ5IGl0c2VsZiwKKyAg
ICAgICAgaXRzIGFsc28gZ29vZCBiZWNhdXNlIHdpdGhvdXQgaXQgc29tZSBwb3J0cyB3aWxsIGV4
aXQgdGhlCisgICAgICAgIGZpbGxBbmREaXNwbGF5VHJhbnNwYXJlbmN5RWxzZXdoZXJlIGZ1bmN0
aW9uIGVhcmx5IGFmdGVyIGdldHRpbmcgYSBudWxsIEltYWdlQnVmZmVyLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2Nh
bnZhcy1sYXJnZS1maWxscy5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpjbGVhckNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmZpbGxBbmREaXNwbGF5VHJhbnNwYXJlbmN5RWxzZXdoZXJlKToKKwogMjAxMS0w
OS0xNCAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRk
ZWQgYSBwdXJlIHZpcnR1YWwgY2xhc3MgQ0NMYXllckRlbGVnYXRlIHdoaWNoIGhlbHBzIHRvIGlz
b2xhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDM5OTI0ZDlkYWJhMjIzZjY4ZTBmMjY1NDIwY2RjMWFm
ZDJiZDhmMjEuLjg1ZTQzOTJiYWI4YTg3OWU5NDUxNGRiZTMzOWEwY2M0YjI1Mzk1NGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcApAQCAtMTQ3Miw2ICsxNDcyLDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNsZWFyQ2FudmFzKCkKIHsKICAgICBGbG9hdFJlY3QgY2FudmFzUmVjdCgwLCAwLCBj
YW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKICAgICBHcmFwaGljc0NvbnRl
eHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOworICAgIGlmICghYykKKyAgICAgICAgcmV0dXJuOwog
CiAgICAgYy0+c2F2ZSgpOwogICAgIGMtPnNldENUTShjYW52YXMoKS0+YmFzZVRyYW5zZm9ybSgp
KTsKQEAgLTE1MDcsMzAgKzE1MDksNDAgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxBbmREaXNwbGF5VHJhbnNwYXJlbmN5RWxzZXcKIHsKICAg
ICBBU1NFUlQoc2hvdWxkRGlzcGxheVRyYW5zcGFyZW5jeUVsc2V3aGVyZSgpKTsKIAorICAgIElu
dFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdo
dCgpKTsKKyAgICBjYW52YXNSZWN0ID0gY2FudmFzKCktPmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0
KGNhbnZhc1JlY3QpOwogICAgIFBhdGggcGF0aCA9IHRyYW5zZm9ybUFyZWFUb0RldmljZShhcmVh
KTsKICAgICBJbnRSZWN0IGJ1ZmZlclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHBhdGguYm91bmRp
bmdSZWN0KCkpOwotICAgIHBhdGgudHJhbnNsYXRlKEZsb2F0U2l6ZSgtYnVmZmVyUmVjdC54KCks
IC1idWZmZXJSZWN0LnkoKSkpOworICAgIGJ1ZmZlclJlY3QuaW50ZXJzZWN0KGNhbnZhc1JlY3Qp
OwogCi0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJNb2RlID0gY2FudmFzKCktPmJ1ZmZlcigpLT5p
c0FjY2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7Ci0gICAgT3duUHRy
PEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6
ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZW5kZXJNb2RlKTsKLSAgICBidWZmZXItPmNvbnRl
eHQoKS0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIHN0
YXRlKCkubV9maWxsU3R5bGUtPmFwcGx5RmlsbENvbG9yKGJ1ZmZlci0+Y29udGV4dCgpKTsKLSAg
ICBidWZmZXItPmNvbnRleHQoKS0+ZmlsbFBhdGgocGF0aCk7CisgICAgaWYgKCFidWZmZXJSZWN0
LmlzRW1wdHkoKSkgeworICAgICAgICBwYXRoLnRyYW5zbGF0ZShGbG9hdFNpemUoLWJ1ZmZlclJl
Y3QueCgpLCAtYnVmZmVyUmVjdC55KCkpKTsKIAotICAgIEZsb2F0UmVjdCBjYW52YXNSZWN0KDAs
IDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOwotICAgIGNhbnZhc1Jl
Y3QgPSBjYW52YXMoKS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CisgICAg
ICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyTW9kZSA9IGNhbnZhcygpLT5idWZmZXIoKS0+aXNBY2Nl
bGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOworICAgICAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyUmVjdC5zaXpl
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlbmRlck1vZGUpOworICAgICAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdp
bmdDb250ZXh0KCk7Ci0gICAgYy0+c2F2ZSgpOwotICAgIGMtPnNldENUTShBZmZpbmVUcmFuc2Zv
cm0oKSk7CisgICAgICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIHN0YXRlKCkubV9maWxsU3R5bGUtPmFwcGx5
RmlsbENvbG9yKGJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAgICAgYnVmZmVyLT5jb250ZXh0KCkt
PmZpbGxQYXRoKHBhdGgpOwogCi0gICAgYy0+c2F2ZSgpOwotICAgIGMtPmNsaXBPdXQoYnVmZmVy
UmVjdCk7Ci0gICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwotICAgIGMtPnJlc3RvcmUoKTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAg
aWYgKCFjKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1
ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVjdC5sb2NhdGlvbigpLCBz
dGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKTsKLSAgICBjLT5yZXN0b3JlKCk7CisgICAgICAgIGMt
PnNhdmUoKTsKKyAgICAgICAgYy0+c2V0Q1RNKEFmZmluZVRyYW5zZm9ybSgpKTsKKworICAgICAg
ICBjLT5zYXZlKCk7CisgICAgICAgIGMtPmNsaXBPdXQoYnVmZmVyUmVjdCk7CisgICAgICAgIGMt
PmNsZWFyUmVjdChjYW52YXNSZWN0KTsKKyAgICAgICAgYy0+cmVzdG9yZSgpOworCisgICAgICAg
IGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1
ZmZlclJlY3QubG9jYXRpb24oKSwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CisgICAgICAg
IGMtPnJlc3RvcmUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2xlYXJDYW52YXMoKTsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnByZXBhcmVHcmFkaWVudEZvckRhc2hib2Fy
ZChDYW52YXNHcmFkaWVudCogZ3JhZGllbnQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107448</attachid>
            <date>2011-09-14 21:09:32 -0700</date>
            <delta_ts>2011-09-15 20:25:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67988-20110915140930.patch</filename>
            <type>text/plain</type>
            <size>10964</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxNDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MzcyYTI1MmIyYTNjNzI5ZGNhNDlj
ZjE5MmQ1NzdiMzQwMGNiMjZmLi5lNzUxYWQwN2ZmOGMzYjRlMzM2YWJmMjdlNWIxZmQ5MzE3NWYy
ODZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTQgIEJlbiBXZWxscyAgPGJlbndl
bGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBMYXJnZSBjYW52YXMgZmlsbHMgc2hvdWxkIG5v
dCBjcmFzaCBvciBjcmVhdGUgdW5uZWNlc3NhcmlseSBsYXJnZSBpbWFnZSBidWZmZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzk4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMv
Y2FudmFzLWxhcmdlLWZpbGxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWw6IEFkZGVkLgorCiAyMDExLTA5LTE0ICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlYmFz
ZWxpbmVzIGR1ZSB0byByOTUwOTYsIHI5NTEyMSwgYW5kIHI5NTEyOS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE5MTlmODE0NzU0NjkwZmNkOTc2MDdkYTUxMDJiZmFhYzI2NDYwYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTM4IEBACitUZXN0cyB0aGF0IHVzaW5nIHRoZSBkaWZm
ZXJlbnQgY29tcG9zaXRlIG1vZGVzIHRvIGZpbGwgbGFyZ2UgcmVjdHMgZG9lc24ndCBjcmFzaCBh
bmQgd29ya3MgYXMgZXhwZWN0ZWQuCisKK3NpemUgPT0gMTAwMDAKK3NvdXJjZS1vdmVyCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLWluCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhw
ZWN0ZWQ6IDI1NQorc291cmNlLW91dAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorc291cmNl
LWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3Rl
ZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitkZXN0aW5hdGlvbi1vdmVyCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1
CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24taW4KK1BBU1MgQWN0dWFs
OiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0
ZWQ6IDAKK2Rlc3RpbmF0aW9uLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNT
IEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCits
aWdodGVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBl
Y3RlZDogMjU1CitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK2NvcHkKK1BBU1MgQWN0
dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1
YWw6IDI1NSBFeHBlY3RlZDogMjU1Cit4b3IKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3Np
emUgPT0gNTAwMDAKK3NvdXJjZS1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQor
c291cmNlLWluCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorc291cmNlLW91dAorUEFT
UyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorc291cmNlLWF0b3AKK1BBU1MgQWN0dWFsOiAwIEV4cGVj
dGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBl
Y3RlZDogMjU1CitkZXN0aW5hdGlvbi1vdmVyCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorZGVzdGluYXRpb24taW4KK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVh
bDogMjU1IEV4cGVjdGVkOiAyNTUKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitkZXN0aW5h
dGlvbi1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWF0b3AKK1BB
U1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitsaWdodGVyCitQQVNTIEFjdHVhbDogMCBFeHBl
Y3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMjU1
IEV4cGVjdGVkOiAyNTUKK2NvcHkKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Cit4b3IK
K1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3NpemUgPT0gMTAwMDAwCitzb3VyY2Utb3Zlcgor
UEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMjU1IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1pbgorUEFTUyBBY3R1YWw6IDAg
RXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQQVNTIEFjdHVhbDogMjU1
IEV4cGVjdGVkOiAyNTUKK3NvdXJjZS1vdXQKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAwCitQ
QVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK3Nv
dXJjZS1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhw
ZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQorZGVzdGluYXRpb24tb3Zl
cgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUgRXhwZWN0ZWQ6
IDI1NQorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK2Rlc3RpbmF0aW9uLWluCitQQVNTIEFj
dHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorZGVzdGluYXRpb24tb3V0CitQQVNTIEFjdHVhbDogMCBF
eHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4
cGVjdGVkOiAwCitkZXN0aW5hdGlvbi1hdG9wCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDogMAor
UEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1CitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorbGlnaHRlcgorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAyNTUg
RXhwZWN0ZWQ6IDI1NQorUEFTUyBBY3R1YWw6IDI1NSBFeHBlY3RlZDogMjU1Citjb3B5CitQQVNT
IEFjdHVhbDogMCBFeHBlY3RlZDogMAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1Mg
QWN0dWFsOiAyNTUgRXhwZWN0ZWQ6IDI1NQoreG9yCitQQVNTIEFjdHVhbDogMCBFeHBlY3RlZDog
MAorUEFTUyBBY3R1YWw6IDAgRXhwZWN0ZWQ6IDAKK1BBU1MgQWN0dWFsOiAwIEV4cGVjdGVkOiAw
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxs
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjNmZTFhZWNlMjQzN2U0YWVkZDBjM2Q5ZjAwY2Q2NGE3ZTcyNGEzYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZS1maWxs
cy5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPHA+VGVzdHMgdGhh
dCB1c2luZyB0aGUgZGlmZmVyZW50IGNvbXBvc2l0ZSBtb2RlcyB0byBmaWxsIGxhcmdlIHJlY3Rz
IGRvZXNuJ3QgY3Jhc2ggYW5kIHdvcmtzIGFzIGV4cGVjdGVkLjwvcD4KKzxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgorPGNhbnZhcyBpZD0iYyIgY2xhc3M9Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSI1MCI+PHAgY2xhc3M9ImZhbGxiYWNrIj5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48
L2NhbnZhcz4KKworPHNjcmlwdD4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYyIpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwordmFyIHgsIHksIHc9
MSwgaD0xOwordmFyIHdpZHRoPWNhbnZhcy53aWR0aDsKK3ZhciBoZWlnaHQ9Y2FudmFzLmhlaWdo
dDsKKworZnVuY3Rpb24gY2xlYXJDb250ZXh0KCkgeworICAgIGN0eC5nbG9iYWxDb21wb3NpdGVP
cGVyYXRpb249InNvdXJjZS1vdmVyIjsKKyAgICBjdHguZmlsbFN0eWxlID0gInJnYigwLCAyNTUs
IDApIjsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZhciBj
b21wb3NpdGVUeXBlcyA9IFsKKyAgICAnc291cmNlLW92ZXInLCdzb3VyY2UtaW4nLCdzb3VyY2Ut
b3V0Jywnc291cmNlLWF0b3AnLAorICAgICdkZXN0aW5hdGlvbi1vdmVyJywnZGVzdGluYXRpb24t
aW4nLCdkZXN0aW5hdGlvbi1vdXQnLCdkZXN0aW5hdGlvbi1hdG9wJywKKyAgICAnbGlnaHRlcics
J2NvcHknLCd4b3InCitdOworCit2YXIgZXhwZWN0ZWQgPSBbCisgICAgWzAsIDAsIDI1NV0sIFsw
LCAwLCAyNTVdLCBbMCwgMCwgMF0sIFswLCAwLCAyNTVdLAorICAgIFswLCAyNTUsIDBdLCBbMCwg
MjU1LCAwXSwgWzAsIDAsIDBdLCBbMCwgMjU1LCAwXSwKKyAgICBbMCwgMjU1LCAyNTVdLCBbMCwg
MCwgMjU1XSwgWzAsIDAsIDBdCitdOworCitmdW5jdGlvbiB0ZXN0RmlsbHMoc2l6ZSkgeworICAg
IHZhciBtc2cgPSAic2l6ZSA9PSAiICsgc2l6ZTsKKyAgICBkZWJ1Zyhtc2cpOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY29tcG9zaXRlVHlwZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY2xl
YXJDb250ZXh0KGN0eCk7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmdiKDAsIDAsIDI1NSki
OworICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gY29tcG9zaXRlVHlwZXNb
aV07CisgICAgICAgIGRlYnVnKGNvbXBvc2l0ZVR5cGVzW2ldKTsKKyAgICAgICAgY3R4LmZpbGxS
ZWN0KDAsIDAsIHNpemUsIHNpemUpOworICAgICAgICB2YXIgZGF0YSA9IGN0eC5nZXRJbWFnZURh
dGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgMzsg
eCsrKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gIkFjdHVhbDogIiArIGRhdGEuZGF0YVt4XSAr
ICIgRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZFtpXVt4XTsKKyAgICAgICAgICAgIGlmIChkYXRhLmRh
dGFbeF0gPT0gZXhwZWN0ZWRbaV1beF0pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChtc2cp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQobXNnKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordGVzdEZpbGxzKDEwMDAwKTsKK3Rlc3RGaWxscyg1MDAwMCk7
Cit0ZXN0RmlsbHMoMTAwMDAwKTsKKworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Yzg0OGM2NDA4ZjFmYTlkOTBmYTYxZjRjNDUzMzY0ZGQ5ZWQwYzBiNy4uM2MxNzYzNjU1MjE3YjIw
OGNjYjZkMjIwZDJhNmYxNGZhM2YwOGIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDExLTA5LTE0ICBCZW4gV2VsbHMgIDxiZW53ZWxsc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
TGFyZ2UgY2FudmFzIGZpbGxzIHNob3VsZCBub3QgY3Jhc2ggb3IgY3JlYXRlIHVubmVjZXNzYXJp
bHkgbGFyZ2UgaW1hZ2UgYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njc5ODgKKworICAgICAgICBXaGVuIHVzaW5nIHNvdXJjZS1pbiwgZGVz
dGluYXRpb24taW4sIHNvdXJjZS1vdXQsIG9yIGRlc3RpbmF0aW9uLWF0b3AgYSB0ZW1wb3JhcnkK
KyAgICAgICAgYnVmZmVyIGlzIGNyZWF0ZWQuIFRoaXMgYnVmZmVyIG9ubHkgbmVlZHMgdG8gYmUg
YmlnIGVub3VnaCB0byBjb3ZlciB0aGUgaW50ZXJzZWN0aW9uCisgICAgICAgIG9mIHRoZSBwYXRo
IGFuZCB0aGUgY2FudmFzLiBJZiB0aGUgYXJlYSBvZiBpbnRlcnNlY3Rpb24gYmV0d2VlbiB0aGUg
ZmlsbCBhbmQgdGhlCisgICAgICAgIGNhbnZhcyBpcyBlbXB0eSB0aGUgY2FudmFzIGlzIGNvbXBs
ZXRlbHkgY2xlYXJlZCBhbmQgYSB0ZW1wb3JhcnkgYnVmZmVyIGlzIG5vdCB1c2VkLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIGFsc28gYWRkcyBzb21lIG51bGwgY2hlY2tzIGZvciBmYWlsdXJlcyB0
byBjcmVhdGUgY29udGV4dHMgb3IgYnVmZmVycy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmls
bHMuaHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJD
YW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxs
QW5kRGlzcGxheVRyYW5zcGFyZW5jeUVsc2V3aGVyZSk6CisKIDIwMTEtMDktMTQgIEFudG9pbmUg
TGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZGVkIGEgcHVyZSB2aXJ0
dWFsIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB3aGljaCBoZWxwcyB0byBpc29sYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAppbmRleCAzOTkyNGQ5ZGFiYTIyM2Y2OGUwZjI2NTQyMGNkYzFhZmQyYmQ4ZjIxLi44NWU0
MzkyYmFiOGE4NzllOTQ1MTRkYmUzMzlhMGNjNGIyNTM5NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAg
LTE0NzIsNiArMTQ3Miw4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhckNh
bnZhcygpCiB7CiAgICAgRmxvYXRSZWN0IGNhbnZhc1JlY3QoMCwgMCwgY2FudmFzKCktPndpZHRo
KCksIGNhbnZhcygpLT5oZWlnaHQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2lu
Z0NvbnRleHQoKTsKKyAgICBpZiAoIWMpCisgICAgICAgIHJldHVybjsKIAogICAgIGMtPnNhdmUo
KTsKICAgICBjLT5zZXRDVE0oY2FudmFzKCktPmJhc2VUcmFuc2Zvcm0oKSk7CkBAIC0xNTA3LDMw
ICsxNTA5LDQwIEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmaWxsQW5kRGlzcGxheVRyYW5zcGFyZW5jeUVsc2V3CiB7CiAgICAgQVNTRVJUKHNob3Vs
ZERpc3BsYXlUcmFuc3BhcmVuY3lFbHNld2hlcmUoKSk7CiAKKyAgICBJbnRSZWN0IGNhbnZhc1Jl
Y3QoMCwgMCwgY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSk7CisgICAgY2Fu
dmFzUmVjdCA9IGNhbnZhcygpLT5iYXNlVHJhbnNmb3JtKCkubWFwUmVjdChjYW52YXNSZWN0KTsK
ICAgICBQYXRoIHBhdGggPSB0cmFuc2Zvcm1BcmVhVG9EZXZpY2UoYXJlYSk7CiAgICAgSW50UmVj
dCBidWZmZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwYXRoLmJvdW5kaW5nUmVjdCgpKTsKLSAg
ICBwYXRoLnRyYW5zbGF0ZShGbG9hdFNpemUoLWJ1ZmZlclJlY3QueCgpLCAtYnVmZmVyUmVjdC55
KCkpKTsKKyAgICBidWZmZXJSZWN0LmludGVyc2VjdChjYW52YXNSZWN0KTsKIAotICAgIFJlbmRl
cmluZ01vZGUgcmVuZGVyTW9kZSA9IGNhbnZhcygpLT5idWZmZXIoKS0+aXNBY2NlbGVyYXRlZCgp
ID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
YnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJSZWN0LnNpemUoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgcmVuZGVyTW9kZSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICBzdGF0ZSgpLm1fZmlsbFN0
eWxlLT5hcHBseUZpbGxDb2xvcihidWZmZXItPmNvbnRleHQoKSk7Ci0gICAgYnVmZmVyLT5jb250
ZXh0KCktPmZpbGxQYXRoKHBhdGgpOworICAgIGlmICghYnVmZmVyUmVjdC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgcGF0aC50cmFuc2xhdGUoRmxvYXRTaXplKC1idWZmZXJSZWN0LngoKSwgLWJ1ZmZl
clJlY3QueSgpKSk7CiAKLSAgICBGbG9hdFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMoKS0+
d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKLSAgICBjYW52YXNSZWN0ID0gY2FudmFzKCkt
PmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0KGNhbnZhc1JlY3QpOworICAgICAgICBSZW5kZXJpbmdN
b2RlIHJlbmRlck1vZGUgPSBjYW52YXMoKS0+YnVmZmVyKCktPmlzQWNjZWxlcmF0ZWQoKSA/IEFj
Y2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKKyAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCByZW5kZXJNb2RlKTsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwot
ICAgIGMtPnNhdmUoKTsKLSAgICBjLT5zZXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAg
ICBidWZmZXItPmNvbnRleHQoKS0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgICAgICBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5hcHBseUZpbGxDb2xvcihidWZm
ZXItPmNvbnRleHQoKSk7CisgICAgICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5maWxsUGF0aChwYXRo
KTsKIAotICAgIGMtPnNhdmUoKTsKLSAgICBjLT5jbGlwT3V0KGJ1ZmZlclJlY3QpOwotICAgIGMt
PmNsZWFyUmVjdChjYW52YXNSZWN0KTsKLSAgICBjLT5yZXN0b3JlKCk7CisgICAgICAgIEdyYXBo
aWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIGlmICghYykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIuZ2V0KCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlY3QubG9jYXRpb24oKSwgc3RhdGUoKS5tX2dsb2Jh
bENvbXBvc2l0ZSk7Ci0gICAgYy0+cmVzdG9yZSgpOworICAgICAgICBjLT5zYXZlKCk7CisgICAg
ICAgIGMtPnNldENUTShBZmZpbmVUcmFuc2Zvcm0oKSk7CisKKyAgICAgICAgYy0+c2F2ZSgpOwor
ICAgICAgICBjLT5jbGlwT3V0KGJ1ZmZlclJlY3QpOworICAgICAgICBjLT5jbGVhclJlY3QoY2Fu
dmFzUmVjdCk7CisgICAgICAgIGMtPnJlc3RvcmUoKTsKKworICAgICAgICBjLT5kcmF3SW1hZ2VC
dWZmZXIoYnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0LmxvY2F0
aW9uKCksIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOworICAgICAgICBjLT5yZXN0b3JlKCk7
CisgICAgfSBlbHNlCisgICAgICAgIGNsZWFyQ2FudmFzKCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFzR3JhZGll
bnQqIGdyYWRpZW50KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107593</attachid>
            <date>2011-09-15 20:26:08 -0700</date>
            <delta_ts>2011-09-16 18:01:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67988-20110916132606.patch</filename>
            <type>text/plain</type>
            <size>8637</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUyNDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMWYwOTYzZjgxZmE5ODE2M2NmZDcw
N2Y0OGYyMjVhNzA0ODQ5MDZmLi5iMmZlNmIxMDhlZTExNDIyMTIxMGEzOGNmM2ZiYjMyMmVhZjNh
MTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTQgIEJlbiBXZWxscyAgPGJlbndl
bGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBMYXJnZSBjYW52YXMgZmlsbHMgc2hvdWxkIG5v
dCBjcmFzaCBvciBjcmVhdGUgdW5uZWNlc3NhcmlseSBsYXJnZSBpbWFnZSBidWZmZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzk4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMv
Y2FudmFzLWxhcmdlLWZpbGxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWxhcmdlLWZpbGxzLmh0bWw6IEFkZGVkLgorCiAyMDExLTA5LTE1ICBEYXZp
ZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1sYXJnZS1maWxscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2ZmU2
YjNiYTkyYTZkYTlkYTg1NzlkNTQzODNmYzcxMzllZTY0NjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzUgQEAKK1Rlc3RzIHRoYXQgdXNpbmcgdGhlIGRpZmZlcmVudCBjb21wb3NpdGUg
bW9kZXMgdG8gZmlsbCBsYXJnZSByZWN0cyBkb2Vzbid0IGNyYXNoIGFuZCB3b3JrcyBhcyBleHBl
Y3RlZC4KK1BBU1MgRmlsbCBTaXplIDEwMDAwLCBzb3VyY2Utb3ZlcjogIzAwMDBGRgorUEFTUyBG
aWxsIFNpemUgMTAwMDAsIHNvdXJjZS1pbjogIzAwMDBGRgorUEFTUyBGaWxsIFNpemUgMTAwMDAs
IHNvdXJjZS1vdXQ6ICMwMDAwMDAKK1BBU1MgRmlsbCBTaXplIDEwMDAwLCBzb3VyY2UtYXRvcDog
IzAwMDBGRgorUEFTUyBGaWxsIFNpemUgMTAwMDAsIGRlc3RpbmF0aW9uLW92ZXI6ICMwMEZGMDAK
K1BBU1MgRmlsbCBTaXplIDEwMDAwLCBkZXN0aW5hdGlvbi1pbjogIzAwRkYwMAorUEFTUyBGaWxs
IFNpemUgMTAwMDAsIGRlc3RpbmF0aW9uLW91dDogIzAwMDAwMAorUEFTUyBGaWxsIFNpemUgMTAw
MDAsIGRlc3RpbmF0aW9uLWF0b3A6ICMwMEZGMDAKK1BBU1MgRmlsbCBTaXplIDEwMDAwLCBsaWdo
dGVyOiAjMDBGRkZGCitQQVNTIEZpbGwgU2l6ZSAxMDAwMCwgY29weTogIzAwMDBGRgorUEFTUyBG
aWxsIFNpemUgMTAwMDAsIHhvcjogIzAwMDAwMAorUEFTUyBGaWxsIFNpemUgNTAwMDAsIHNvdXJj
ZS1vdmVyOiAjMDAwMEZGCitQQVNTIEZpbGwgU2l6ZSA1MDAwMCwgc291cmNlLWluOiAjMDAwMEZG
CitQQVNTIEZpbGwgU2l6ZSA1MDAwMCwgc291cmNlLW91dDogIzAwMDAwMAorUEFTUyBGaWxsIFNp
emUgNTAwMDAsIHNvdXJjZS1hdG9wOiAjMDAwMEZGCitQQVNTIEZpbGwgU2l6ZSA1MDAwMCwgZGVz
dGluYXRpb24tb3ZlcjogIzAwRkYwMAorUEFTUyBGaWxsIFNpemUgNTAwMDAsIGRlc3RpbmF0aW9u
LWluOiAjMDBGRjAwCitQQVNTIEZpbGwgU2l6ZSA1MDAwMCwgZGVzdGluYXRpb24tb3V0OiAjMDAw
MDAwCitQQVNTIEZpbGwgU2l6ZSA1MDAwMCwgZGVzdGluYXRpb24tYXRvcDogIzAwRkYwMAorUEFT
UyBGaWxsIFNpemUgNTAwMDAsIGxpZ2h0ZXI6ICMwMEZGRkYKK1BBU1MgRmlsbCBTaXplIDUwMDAw
LCBjb3B5OiAjMDAwMEZGCitQQVNTIEZpbGwgU2l6ZSA1MDAwMCwgeG9yOiAjMDAwMDAwCitQQVNT
IEZpbGwgU2l6ZSAxMDAwMDAsIHNvdXJjZS1vdmVyOiAjMDAwMEZGCitQQVNTIEZpbGwgU2l6ZSAx
MDAwMDAsIHNvdXJjZS1pbjogIzAwMDBGRgorUEFTUyBGaWxsIFNpemUgMTAwMDAwLCBzb3VyY2Ut
b3V0OiAjMDAwMDAwCitQQVNTIEZpbGwgU2l6ZSAxMDAwMDAsIHNvdXJjZS1hdG9wOiAjMDAwMEZG
CitQQVNTIEZpbGwgU2l6ZSAxMDAwMDAsIGRlc3RpbmF0aW9uLW92ZXI6ICMwMEZGMDAKK1BBU1Mg
RmlsbCBTaXplIDEwMDAwMCwgZGVzdGluYXRpb24taW46ICMwMEZGMDAKK1BBU1MgRmlsbCBTaXpl
IDEwMDAwMCwgZGVzdGluYXRpb24tb3V0OiAjMDAwMDAwCitQQVNTIEZpbGwgU2l6ZSAxMDAwMDAs
IGRlc3RpbmF0aW9uLWF0b3A6ICMwMEZGMDAKK1BBU1MgRmlsbCBTaXplIDEwMDAwMCwgbGlnaHRl
cjogIzAwRkZGRgorUEFTUyBGaWxsIFNpemUgMTAwMDAwLCBjb3B5OiAjMDAwMEZGCitQQVNTIEZp
bGwgU2l6ZSAxMDAwMDAsIHhvcjogIzAwMDAwMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1sYXJnZS1maWxscy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNjdkODJhMzA4OTI4MDkx
ZWFiM2I3YTY5NmI5YzJiNDU3Y2FmMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtbGFyZ2UtZmlsbHMuaHRtbApAQCAtMCwwICsxLDcxIEBACis8IURP
Q1RZUEUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPGNhbnZhcyBpZD0iYyIg
Y2xhc3M9Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCI+PHAgY2xhc3M9ImZhbGxiYWNr
Ij5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKworPHNjcmlwdD4KK3ZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYyIpOwordmFyIGN0eCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCIyZCIpOworCitmdW5jdGlvbiBjbGVhckNvbnRleHRUb0dyZWVuKCkgeworICAg
IGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1vdmVyIjsKKyAgICBjdHguZmls
bFN0eWxlID0gInJnYigwLCAyNTUsIDApIjsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFz
LndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKK30KKwordmFyIHRlc3REYXRhID0gWworICAgIHtjb21w
b3NpdGVNb2RlOiAnc291cmNlLW92ZXInLCBleHBlY3RlZDogWzAsIDAsIDI1NV19LAorICAgIHtj
b21wb3NpdGVNb2RlOiAnc291cmNlLWluJywgZXhwZWN0ZWQ6IFswLCAwLCAyNTVdfSwKKyAgICB7
Y29tcG9zaXRlTW9kZTogJ3NvdXJjZS1vdXQnLCBleHBlY3RlZDogWzAsIDAsIDBdfSwKKyAgICB7
Y29tcG9zaXRlTW9kZTogJ3NvdXJjZS1hdG9wJywgZXhwZWN0ZWQ6IFswLCAwLCAyNTVdfSwKKyAg
ICB7Y29tcG9zaXRlTW9kZTogJ2Rlc3RpbmF0aW9uLW92ZXInLCBleHBlY3RlZDogWzAsIDI1NSwg
MF19LAorICAgIHtjb21wb3NpdGVNb2RlOiAnZGVzdGluYXRpb24taW4nLCBleHBlY3RlZDogWzAs
IDI1NSwgMF19LAorICAgIHtjb21wb3NpdGVNb2RlOiAnZGVzdGluYXRpb24tb3V0JywgZXhwZWN0
ZWQ6IFswLCAwLCAwXX0sCisgICAge2NvbXBvc2l0ZU1vZGU6ICdkZXN0aW5hdGlvbi1hdG9wJywg
ZXhwZWN0ZWQ6IFswLCAyNTUsIDBdfSwKKyAgICB7Y29tcG9zaXRlTW9kZTogJ2xpZ2h0ZXInLCBl
eHBlY3RlZDogWzAsIDI1NSwgMjU1XX0sCisgICAge2NvbXBvc2l0ZU1vZGU6ICdjb3B5JywgZXhw
ZWN0ZWQ6IFswLCAwLCAyNTVdfSwKKyAgICB7Y29tcG9zaXRlTW9kZTogJ3hvcicsIGV4cGVjdGVk
OiBbMCwgMCwgMF19LAorXTsKKworZnVuY3Rpb24gdG9IZXhTdHJpbmcobnVtYmVyKSB7CisgICAg
dmFyIGhleFN0cmluZyA9IG51bWJlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICBp
ZiAobnVtYmVyIDw9IDkpCisgICAgICAgIGhleFN0cmluZyA9ICcwJyArIGhleFN0cmluZzsKKyAg
ICByZXR1cm4gaGV4U3RyaW5nOworfQorCitmdW5jdGlvbiBkb1Rlc3QoZGF0YUl0ZW0sIGZpbGxT
aXplKSB7CisgICAgY2xlYXJDb250ZXh0VG9HcmVlbigpOworICAgIGN0eC5maWxsU3R5bGUgPSAi
cmdiKDAsIDAsIDI1NSkiOworICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBkYXRh
SXRlbS5jb21wb3NpdGVNb2RlOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCBmaWxsU2l6ZSwgZmls
bFNpemUpOworCisgICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53
aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgdmFyIHBpeGVsT0sgPSB0cnVlOworICAgIHZhciBw
aXhlbFN0cmluZyA9ICcjJzsKKyAgICB2YXIgZXhwZWN0ZWRTdHJpbmcgPSAnIyc7CisKKyAgICBm
b3IgKHZhciB4ID0gMDsgeCA8IDM7IHgrKykgeworICAgICAgICBwaXhlbFN0cmluZyA9IHBpeGVs
U3RyaW5nICsgdG9IZXhTdHJpbmcoZGF0YS5kYXRhW3hdKTsKKyAgICAgICAgZXhwZWN0ZWRTdHJp
bmcgPSBleHBlY3RlZFN0cmluZyArIHRvSGV4U3RyaW5nKGRhdGFJdGVtLmV4cGVjdGVkW3hdKTsK
KyAgICAgICAgaWYgKGRhdGEuZGF0YVt4XSAhPSBkYXRhSXRlbS5leHBlY3RlZFt4XSkKKyAgICAg
ICAgICAgIHBpeGVsT0sgPSBmYWxzZTsKKyAgICB9CisKKyAgICB2YXIgdGVzdE5hbWUgPSAiRmls
bCBTaXplICIgKyBmaWxsU2l6ZSArICcsICcgKyBkYXRhSXRlbS5jb21wb3NpdGVNb2RlOworICAg
IGlmIChwaXhlbE9LKQorICAgICAgICB0ZXN0UGFzc2VkKHRlc3ROYW1lICsgJzogJyArIHBpeGVs
U3RyaW5nKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAnOiBFWFBF
Q1RFRCAnICsgZXhwZWN0ZWRTdHJpbmcgKyAnLCBHT1QgJyArIHBpeGVsU3RyaW5nKTsKK30KKwor
ZGVidWcoIlRlc3RzIHRoYXQgdXNpbmcgdGhlIGRpZmZlcmVudCBjb21wb3NpdGUgbW9kZXMgdG8g
ZmlsbCBsYXJnZSByZWN0cyBkb2Vzbid0IGNyYXNoIGFuZCB3b3JrcyBhcyBleHBlY3RlZC4iKTsK
K1sxMDAwMCwgNTAwMDAsIDEwMDAwMF0uZm9yRWFjaChmdW5jdGlvbihmaWxsU2l6ZSkgeworICAg
IHRlc3REYXRhLmZvckVhY2goZnVuY3Rpb24oZGF0YUl0ZW0pIHsKKyAgICAgICAgZG9UZXN0KGRh
dGFJdGVtLCBmaWxsU2l6ZSkKKyAgICB9KX0pOworCis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBjN2E0ZjI1MjZlMmI4ZTRkYWQwZmQxODU1ZTBmMmU4MGQ3NDRlM2FiLi44NTY5OTM3
OWJlODJjYTQyZWFhN2VjMmY5ZDg2NTEwMTZjZTNkOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMTEtMDktMTQgIEJlbiBXZWxscyAgPGJlbndlbGxzQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBMYXJnZSBjYW52YXMgZmlsbHMgc2hvdWxkIG5vdCBjcmFzaCBvciBjcmVhdGUgdW5u
ZWNlc3NhcmlseSBsYXJnZSBpbWFnZSBidWZmZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzk4OAorCisgICAgICAgIFdoZW4gdXNpbmcgc291cmNl
LWluLCBkZXN0aW5hdGlvbi1pbiwgc291cmNlLW91dCwgb3IgZGVzdGluYXRpb24tYXRvcCBhIHRl
bXBvcmFyeQorICAgICAgICBidWZmZXIgaXMgY3JlYXRlZC4gVGhpcyBidWZmZXIgb25seSBuZWVk
cyB0byBiZSBiaWcgZW5vdWdoIHRvIGNvdmVyIHRoZSBpbnRlcnNlY3Rpb24KKyAgICAgICAgb2Yg
dGhlIHBhdGggYW5kIHRoZSBjYW52YXMuIElmIHRoZSBhcmVhIG9mIGludGVyc2VjdGlvbiBiZXR3
ZWVuIHRoZSBmaWxsIGFuZCB0aGUKKyAgICAgICAgY2FudmFzIGlzIGVtcHR5IHRoZSBjYW52YXMg
aXMgY29tcGxldGVseSBjbGVhcmVkIGFuZCBhIHRlbXBvcmFyeSBidWZmZXIgaXMgbm90IHVzZWQu
CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBhZGRzIHNvbWUgbnVsbCBjaGVja3MgZm9yIGZh
aWx1cmVzIHRvIGNyZWF0ZSBjb250ZXh0cyBvciBidWZmZXJzLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1s
YXJnZS1maWxscy5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpjbGVhckNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmZpbGxBbmREaXNwbGF5VHJhbnNwYXJlbmN5RWxzZXdoZXJlKToKKwogMjAxMS0wOS0xNSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGN1
c3RvbSBzY3JvbGxiYXIgdGhlbWUgZm9yIHVzZSBpbiBEUlQsIHRvIHJlZHVjZSBwaXhlbCBkaWZm
ZXJlbmNlcyBiZXR3ZWVuIHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZDgwYjkyZjZlNWRi
YTViMmQ4NzU4NTkzNDQxNjJmNWQzMTFkNjI5Ni4uODIyN2JlOTk4MjgzN2QyZDllMzgxN2UyNGQ2
ZDhiODZkMDdjODhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNDY4LDYgKzE0NjgsOCBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJDYW52YXMoKQogewogICAgIEZsb2F0UmVj
dCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkp
OwogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CisgICAgaWYgKCFj
KQorICAgICAgICByZXR1cm47CiAKICAgICBjLT5zYXZlKCk7CiAgICAgYy0+c2V0Q1RNKGNhbnZh
cygpLT5iYXNlVHJhbnNmb3JtKCkpOwpAQCAtMTUwMywyMCArMTUwNSwzMiBAQCB0ZW1wbGF0ZTxj
bGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbEFuZERpc3BsYXlUcmFu
c3BhcmVuY3lFbHNldwogewogICAgIEFTU0VSVChzaG91bGREaXNwbGF5VHJhbnNwYXJlbmN5RWxz
ZXdoZXJlKCkpOwogCisgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0
aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOworICAgIGNhbnZhc1JlY3QgPSBjYW52YXMoKS0+YmFz
ZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CiAgICAgUGF0aCBwYXRoID0gdHJhbnNm
b3JtQXJlYVRvRGV2aWNlKGFyZWEpOwogICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGVuY2xvc2lu
Z0ludFJlY3QocGF0aC5ib3VuZGluZ1JlY3QoKSk7CisgICAgYnVmZmVyUmVjdC5pbnRlcnNlY3Qo
Y2FudmFzUmVjdCk7CisKKyAgICBpZiAoYnVmZmVyUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Y2xlYXJDYW52YXMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHBhdGgudHJhbnNs
YXRlKEZsb2F0U2l6ZSgtYnVmZmVyUmVjdC54KCksIC1idWZmZXJSZWN0LnkoKSkpOwogCiAgICAg
UmVuZGVyaW5nTW9kZSByZW5kZXJNb2RlID0gaXNBY2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQg
OiBVbmFjY2VsZXJhdGVkOwogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShidWZmZXJSZWN0LnNpemUoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVu
ZGVyTW9kZSk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7
CiAgICAgc3RhdGUoKS5tX2ZpbGxTdHlsZS0+YXBwbHlGaWxsQ29sb3IoYnVmZmVyLT5jb250ZXh0
KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5maWxsUGF0aChwYXRoKTsKIAotICAgIEZsb2F0
UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0
KCkpOwotICAgIGNhbnZhc1JlY3QgPSBjYW52YXMoKS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3Qo
Y2FudmFzUmVjdCk7Ci0KICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgp
OworICAgIGlmICghYykKKyAgICAgICAgcmV0dXJuOworCiAgICAgYy0+c2F2ZSgpOwogICAgIGMt
PnNldENUTShBZmZpbmVUcmFuc2Zvcm0oKSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>