<?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>38704</bug_id>
          
          <creation_ts>2010-05-06 16:51:30 -0700</creation_ts>
          <short_desc>SVG pattern size changed when resizing browser</short_desc>
          <delta_ts>2010-08-19 04:55:43 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>41396</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steven Lai">s3lance</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>krit</cc>
    
    <cc>pkchan+bugzilla=webkit</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>222060</commentid>
    <comment_count>0</comment_count>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-06 16:51:30 -0700</bug_when>
    <thetext>* SUMMARY

The pattern size changed when resizing browser, which the pattern size should be independent of the browser&apos;s size.
The pattern even failed to render repeatedly if we resize the browser to smaller than the element which applied the pattern and then scroll down.

The problem doesn&apos;t exist if we don&apos;t use viewBox, but it is needed.

* STEPS TO REPRODUCE  (see test-case in attachment)
1. Define a pattern with {x=0, y=0, width=700, height=700}
2. Set the pattern with viewBox {0 0 200 200}
3. Apply the pattern on a rect with {x=0, y=0, width=800 height=800}
4. Resize browser to smaller than the pattern size
5. Scroll down

* EXPECTED RESULTS
The pattern size doesn&apos;t change when resizing and scrolling

* ACTUAL RESULTS
pattern size changed in step 4
pattern failed to render repeatedly in step 5

* REGRESSION
Safari Version 4.0.4 (6531.21.10, r53178) / Mac

It seems that the size of SVG pattern is upper-bounded by the size of the browser window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222062</commentid>
    <comment_count>1</comment_count>
      <attachid>55321</attachid>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-06 16:52:17 -0700</bug_when>
    <thetext>Created attachment 55321
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222063</commentid>
    <comment_count>2</comment_count>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-06 16:52:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/7541466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222168</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-06 22:19:33 -0700</bug_when>
    <thetext>So the problem is, that the pattern is cut to the actual viewport, but doesn&apos;t rebuild if the size of the windows changes or if we scroll a bit.

I looked at an older revision, and even the size of the pattern changes with resizing the window. That is wrong to.

My proposal is to not clip to viewport anymore on creating a pattern in RenderSVGResourcePattern.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222171</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-06 22:31:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; So the problem is, that the pattern is cut to the actual viewport, but doesn&apos;t
&gt; rebuild if the size of the windows changes or if we scroll a bit.
&gt; 
&gt; I looked at an older revision, and even the size of the pattern changes with
&gt; resizing the window. That is wrong to.
&gt; 
&gt; My proposal is to not clip to viewport anymore on creating a pattern in
&gt; RenderSVGResourcePattern.cpp.

Clipping itself is realy dangerous. I thougt about at least clipping to the size of the target element, but we have to respect pattern transformations. While scale and translation isn&apos;t a problem, determin the visible size of a pattern on skewing or rotation is realy difficult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222173</commentid>
    <comment_count>5</comment_count>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-06 22:34:45 -0700</bug_when>
    <thetext>Yep. Just tried removing the call to clampImageBufferSizeToViewport(object-&gt;document()-&gt;view(), imageSize)
it works :-)

Although the repaint issue (if the browser client area size is smaller than the pattern filled rectangle and you scroll it) is still there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222179</commentid>
    <comment_count>6</comment_count>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-06 22:48:57 -0700</bug_when>
    <thetext>
&gt; While scale and translation isn&apos;t a problem, determine the visible size of a
&gt; pattern on skewing or rotation is realy difficult.

We should be able to deal with the easy case first: check if the affine transform matrix to see if is in the form:
[ a 0 e ]
[ 0 d f ]
[ 0 0 1 ]
So that we know if there&apos;s no rotation and skewing. The decomposition of this particular case is trivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222180</commentid>
    <comment_count>7</comment_count>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-06 22:56:13 -0700</bug_when>
    <thetext>
&gt; Clipping itself is realy dangerous. I thougt about at least clipping to the
&gt; size of the target element, but we have to respect pattern transformations.
&gt; While scale and translation isn&apos;t a problem, determin the visible size of a
&gt; pattern on skewing or rotation is realy difficult.

By the way, do you think it&apos;s possible to simply use GraphicsContext::setFillPattern() / GraphicsContext::applyFillPattern() instead of implementing it ourselves??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222181</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-06 23:02:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Clipping itself is realy dangerous. I thougt about at least clipping to the
&gt; &gt; size of the target element, but we have to respect pattern transformations.
&gt; &gt; While scale and translation isn&apos;t a problem, determin the visible size of a
&gt; &gt; pattern on skewing or rotation is realy difficult.
&gt; 
&gt; By the way, do you think it&apos;s possible to simply use
&gt; GraphicsContext::setFillPattern() / GraphicsContext::applyFillPattern() instead
&gt; of implementing it ourselves??

Not sure what you mean? We use  context-&gt;setFillPattern(patternData-&gt;pattern); and context-&gt;fillPath(). Simiular to the HTML Canvas code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222186</commentid>
    <comment_count>9</comment_count>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-06 23:07:18 -0700</bug_when>
    <thetext>
&gt; Not sure what you mean? We use  context-&gt;setFillPattern(patternData-&gt;pattern);
&gt; and context-&gt;fillPath(). Simiular to the HTML Canvas code.

oops ... please ignore that :)
I&apos;m looking at RenderSVGResourcePattern::buildPattern

    newTileImageContext-&gt;save();
    newTileImageContext-&gt;translate(-patternBoundaries.width() * numX, -patternBoundaries.height() * numY);
    for (int i = numY; i &gt; 0; --i) {
        newTileImageContext-&gt;translate(0, patternBoundaries.height());
        for (int j = numX; j &gt; 0; --j) {
            newTileImageContext-&gt;translate(patternBoundaries.width(), 0);
            newTileImageContext-&gt;drawImage(tileImage-&gt;image(), style()-&gt;colorSpace(), tileRect, tileRect);
        }
        newTileImageContext-&gt;translate(-patternBoundaries.width() * numX, 0);
    }
    newTileImageContext-&gt;restore();


and i saw a method called DrawTiledImage() in GraphicsContext

I just want to know if it could do the same thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222189</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-06 23:10:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; While scale and translation isn&apos;t a problem, determine the visible size of a
&gt; &gt; pattern on skewing or rotation is realy difficult.
&gt; 
&gt; We should be able to deal with the easy case first: check if the affine
&gt; transform matrix to see if is in the form:
&gt; [ a 0 e ]
&gt; [ 0 d f ]
&gt; [ 0 0 1 ]
&gt; So that we know if there&apos;s no rotation and skewing. The decomposition of this
&gt; particular case is trivial.

We have isIdentityOrTranslationOrFlipped() you can start with. If we want to clip to the target element boundaries, we need to be carefull, if we fil the target or stroke the target with the pattern. It&apos;s saver to take the strokeBoundaries of the object instead of the boundingBox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222190</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-06 23:14:28 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Not sure what you mean? We use  context-&gt;setFillPattern(patternData-&gt;pattern);
&gt; &gt; and context-&gt;fillPath(). Simiular to the HTML Canvas code.
&gt; 
&gt; oops ... please ignore that :)
&gt; I&apos;m looking at RenderSVGResourcePattern::buildPattern
&gt; 
&gt;     newTileImageContext-&gt;save();
&gt;     newTileImageContext-&gt;translate(-patternBoundaries.width() * numX,
&gt; -patternBoundaries.height() * numY);
&gt;     for (int i = numY; i &gt; 0; --i) {
&gt;         newTileImageContext-&gt;translate(0, patternBoundaries.height());
&gt;         for (int j = numX; j &gt; 0; --j) {
&gt;             newTileImageContext-&gt;translate(patternBoundaries.width(), 0);
&gt;             newTileImageContext-&gt;drawImage(tileImage-&gt;image(),
&gt; style()-&gt;colorSpace(), tileRect, tileRect);
&gt;         }
&gt;         newTileImageContext-&gt;translate(-patternBoundaries.width() * numX, 0);
&gt;     }
&gt;     newTileImageContext-&gt;restore();
&gt; 
&gt; 
&gt; and i saw a method called DrawTiledImage() in GraphicsContext
&gt; 
&gt; I just want to know if it could do the same thing

it&apos;s a rarely used case and was needed by css-property overflow. The old code had a switch and we didn&apos;t run throug that code the most of the time. I need to look at the history, why this switch was removed ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222192</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-06 23:17:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; &gt; Not sure what you mean? We use  context-&gt;setFillPattern(patternData-&gt;pattern);
&gt; &gt; &gt; and context-&gt;fillPath(). Simiular to the HTML Canvas code.
&gt; &gt; 
&gt; &gt; oops ... please ignore that :)
&gt; &gt; I&apos;m looking at RenderSVGResourcePattern::buildPattern
&gt; &gt; 
&gt; &gt;     newTileImageContext-&gt;save();
&gt; &gt;     newTileImageContext-&gt;translate(-patternBoundaries.width() * numX,
&gt; &gt; -patternBoundaries.height() * numY);
&gt; &gt;     for (int i = numY; i &gt; 0; --i) {
&gt; &gt;         newTileImageContext-&gt;translate(0, patternBoundaries.height());
&gt; &gt;         for (int j = numX; j &gt; 0; --j) {
&gt; &gt;             newTileImageContext-&gt;translate(patternBoundaries.width(), 0);
&gt; &gt;             newTileImageContext-&gt;drawImage(tileImage-&gt;image(),
&gt; &gt; style()-&gt;colorSpace(), tileRect, tileRect);
&gt; &gt;         }
&gt; &gt;         newTileImageContext-&gt;translate(-patternBoundaries.width() * numX, 0);
&gt; &gt;     }
&gt; &gt;     newTileImageContext-&gt;restore();
&gt; &gt; 
&gt; &gt; 
&gt; &gt; and i saw a method called DrawTiledImage() in GraphicsContext
&gt; &gt; 
&gt; &gt; I just want to know if it could do the same thing
&gt; 
&gt; it&apos;s a rarely used case and was needed by css-property overflow. The old code
&gt; had a switch and we didn&apos;t run throug that code the most of the time. I need to
&gt; look at the history, why this switch was removed ...

Ah, here is it:
http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderSVGResourcePattern.cpp#L291</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222212</commentid>
    <comment_count>13</comment_count>
      <attachid>55345</attachid>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-07 00:13:40 -0700</bug_when>
    <thetext>Created attachment 55345
Patch (without optimization)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222219</commentid>
    <comment_count>14</comment_count>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-07 00:35:36 -0700</bug_when>
    <thetext> 
&gt; We have isIdentityOrTranslationOrFlipped() you can start with. If we want to
&gt; clip to the target element boundaries, we need to be carefull, if we fil the
&gt; target or stroke the target with the pattern. It&apos;s saver to take the
&gt; strokeBoundaries of the object instead of the boundingBox.

We can also determine if the matrix represents any skewing too
Consider the 2x2 portion of the CTM

[ a b ]
[ c d ]

for rotation, scaling, and flipping, the row vectors [ a b ] and [ c d ] are orthogonal, thus we can check if the dot product is (close to) zero

then, we could decompose the matrix by normalizing the vector [ a b ] and [ c d ], determine flipping by inspecting the signs of the components, and use atan2() to find the rotation angle


perhaps skewing is hard because even if we know the skewed pattern tile rect fully encloses the clipping rect, we still have to think how we should clip it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222273</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-07 04:47:36 -0700</bug_when>
    <thetext>I&apos;m hestitated to r+ the patch, some background notes on the clipping. The intent was to avoid creating uber-large ImageBuffers that may consume all your memory. Can you investigate whether we can find a better way to handle this problem? What about LayoutTests/svg/custom/pattern-excessive-malloc.svg - doesn&apos;t it blow up with your patch? (aka. crash)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222570</commentid>
    <comment_count>16</comment_count>
      <attachid>55345</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-07 12:57:36 -0700</bug_when>
    <thetext>Comment on attachment 55345
Patch (without optimization)

We should realy think about clipping here. I maybe mixed up this bug with another clipping bug we had with pattern. On the other bug, we also clipped the content of the pattern to viewPort, and that had the problems with determing the correct drawing are on skewing.
Maybe this is not quite relevant here. We know the strokeBoundaries of the target-element, and the tmpImageBuffer for the pattern don&apos;t need to be bigger (after all transformations) than the strokeBoundaries of the target.
We need some test cases, but maybe Niko is right and we don&apos;t care about the type of transformation, but just about the resulting size of the pattern.
And this is quite easy to check. We can transform the current boundaries of the Pattern with the transfromation matrix of the pattern and clip it to the strokeBoundaries of the target.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222573</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-07 13:02:18 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 55345 [details])
&gt; We should realy think about clipping here. I maybe mixed up this bug with
&gt; another clipping bug we had with pattern. On the other bug, we also clipped the
&gt; content of the pattern to viewPort, and that had the problems with determing
&gt; the correct drawing are on skewing.
&gt; Maybe this is not quite relevant here. We know the strokeBoundaries of the
&gt; target-element, and the tmpImageBuffer for the pattern don&apos;t need to be bigger
&gt; (after all transformations) than the strokeBoundaries of the target.
&gt; We need some test cases, but maybe Niko is right and we don&apos;t care about the
&gt; type of transformation, but just about the resulting size of the pattern.
&gt; And this is quite easy to check. We can transform the current boundaries of the
&gt; Pattern with the transfromation matrix of the pattern and clip it to the
&gt; strokeBoundaries of the target.

The other bug I mixed up this bug was bug 29911.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224163</commentid>
    <comment_count>18</comment_count>
      <attachid>55758</attachid>
    <who name="Steven Lai">s3lance</who>
    <bug_when>2010-05-11 14:35:55 -0700</bug_when>
    <thetext>Created attachment 55758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224168</commentid>
    <comment_count>19</comment_count>
      <attachid>55760</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 14:48:50 -0700</bug_when>
    <thetext>Created attachment 55760
Test case

SVG Test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224176</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 15:10:04 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=55760) [details]
&gt; Test case
&gt; 
&gt; SVG Test case.

Note, that pattern were faster and had better results before the code move to the Renderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224444</commentid>
    <comment_count>21</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-12 00:10:41 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; Created an attachment (id=55760) [details] [details]
&gt; &gt; Test case
&gt; &gt; 
&gt; &gt; SVG Test case.
&gt; 
&gt; Note, that pattern were faster and had better results before the code move to the Renderer.
Huh? I almost can&apos;t believe you on that one, please elaborate. If you are aware of problems, why didn&apos;t you file a bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224449</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-12 00:21:25 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; Created an attachment (id=55760) [details] [details] [details]
&gt; &gt; &gt; Test case
&gt; &gt; &gt; 
&gt; &gt; &gt; SVG Test case.
&gt; &gt; 
&gt; &gt; Note, that pattern were faster and had better results before the code move to the Renderer.
&gt; Huh? I almost can&apos;t believe you on that one, please elaborate. If you are aware of problems, why didn&apos;t you file a bug?
I realised the perf problems with the test above and I created the test just for this bug.
I think that the patch (that still needs to be uploaded ;-)) will catch the issues on the test as well, since it looks like a to big imageBuffer is used.

But I&apos;m not sure how we can cover this problem. The current pattern already has a size of 10000x10000. With the transformation of patternTransform (scale of 0.001) it gets 1000 times bigger. At the moment we clip this to the viewport size, so it is at least displayable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241066</commentid>
    <comment_count>23</comment_count>
      <attachid>55758</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-21 19:30:14 -0700</bug_when>
    <thetext>Comment on attachment 55758
Patch

This patch might well be a good code change, but it doesn&apos;t have any tests.  If this isn&apos;t possible to test in DRT (can we resize the viewport in DRT?), then please at least add a test case to manual-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266650</commentid>
    <comment_count>24</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-19 04:55:43 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 41396 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>55321</attachid>
            <date>2010-05-06 16:52:17 -0700</date>
            <delta_ts>2010-05-06 16:52:17 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>resize_bug.zip</filename>
            <type>application/zip</type>
            <size>3831</size>
            <attacher name="Steven Lai">s3lance</attacher>
            
              <data encoding="base64">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
nR7qfO6LLva42F0FnShcnZIfjBGouahqNwTW7SVPid5xU0rdzfI3pwlgZIVWKYmjmHx+3SVjjCL8
kDLrpVCvn/Pyp8hrBDiSCpzJlS21aVJit7nkF/EYTyGMpOClPQYYtrlz3CgQRUp+CikJDDtrJRxy
e7PcPLf5lj+oteXIJyXY3D58h96/n/YeggEie+cRKMncIRf2DWI2RikE7260xwMG2LCfWGo43rjj
17blW/eUO6FT0q+E2qzyHhrOHXlnj/xFk1f8I1aXp6y+hC42OA/QEKSc1YaXKREqJGoTtaoi9EQ0
OjQ4h6Oq9FTWxGAZlKgm6mfkxbkXdhy0iw80/fKVdYx+Re+cszCOG5OhIP6/ofFhhPN4R3oJrdAH
ifcOGpQORqXeuPPRP1BLBwh8lbGeuQEAAFIDAABQSwMEFAAIAAgAjpsuPAAAAAAAAAAAAAAAACQA
EABfX01BQ09TWC9yZXNpemVfYnVnLy5fcmVzaXplX2J1Zy5zdmdVWAwASABPS9z/Tkv1ARQAY2AV
Y2dgYmDwTUxW8A9WiFCAApAYAycQGwFxJRCD+KsZiAKOISFBTEy7NaE65gAxP5oSRoS4eHJ+rl5i
QUFOql5IakWJa15yfkpmXjpQsrQkTdfC2tDYxMjQ3NLCBABQSwcI4kQ0eF8AAACrAAAAUEsBAhUD
CgAAAAAAwpsuPAAAAAAAAAAAAAAAAAsADAAAAAAAAAAAQO1BAAAAAHJlc2l6ZV9idWcvVVgIADEA
T0s7AE9LUEsBAhUDFAAIAAgAXFd5O5miMutxBwAAbAcAABgADAAAAAAAAAAAQKSBOQAAAHJlc2l6
ZV9idWcvaW5zcGVjdG9yLnBuZ1VYCABIAE9Lb50MS1BLAQIVAwoAAAAAAMibLjwAAAAAAAAAAAAA
AAAJAAwAAAAAAAAAAED9QQAIAABfX01BQ09TWC9VWAgASABPS0gAT0tQSwECFQMKAAAAAADImy48
AAAAAAAAAAAAAAAAFAAMAAAAAAAAAABA/UE3CAAAX19NQUNPU1gvcmVzaXplX2J1Zy9VWAgASABP
S0gAT0tQSwECFQMUAAgACABcV3k7peLUMgABAAB5AQAAIwAMAAAAAAAAAABApIF5CAAAX19NQUNP
U1gvcmVzaXplX2J1Zy8uX2luc3BlY3Rvci5wbmdVWAgASABPS2+dDEtQSwECFQMUAAgACACOmy48
fJWxnrkBAABSAwAAGQAMAAAAAAAAAABApIHaCQAAcmVzaXplX2J1Zy9yZXNpemVfYnVnLnN2Z1VY
CABIAE9L3P9OS1BLAQIVAxQACAAIAI6bLjziRDR4XwAAAKsAAAAkAAwAAAAAAAAAAECkgeoLAABf
X01BQ09TWC9yZXNpemVfYnVnLy5fcmVzaXplX2J1Zy5zdmdVWAgASABPS9z/TktQSwUGAAAAAAcA
BwA2AgAAqwwAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55345</attachid>
            <date>2010-05-07 00:13:40 -0700</date>
            <delta_ts>2010-05-11 17:58:38 -0700</delta_ts>
            <desc>Patch (without optimization)</desc>
            <filename>svg-pattern-fill-bug.patch</filename>
            <type>text/plain</type>
            <size>1279</size>
            <attacher name="Steven Lai">s3lance</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMDUtMDcgIFN0ZXZlbiBMYWkgIDxzdGV2ZW5fbGFpQGFzaWEu
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERvbid0IGNsaXAgdG8gdmlld3BvcnQgYW55bW9yZSBvbiBjcmVhdGluZyBhIHBhdHRlcm4g
aW4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSk6CisKIDIwMTAtMDQtMjcgIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRl
bC4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAkocmV2aXNpb24gNTg3ODkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksOSArMjM5LDYgQEAgUGFzc093
blB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyYwogCiAgICAgSW50U2l6ZSBpbWFnZVNp
emUobHJvdW5kZihwYXR0ZXJuQm91bmRhcmllc0luY2x1ZGluZ092ZXJmbG93LndpZHRoKCkpLCBs
cm91bmRmKHBhdHRlcm5Cb3VuZGFyaWVzSW5jbHVkaW5nT3ZlcmZsb3cuaGVpZ2h0KCkpKTsKIAot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBjbGlwIHRoaXMgbW9yZSwgbmVlZHMg
aW52ZXN0aWdhdGlvbgotICAgIGNsYW1wSW1hZ2VCdWZmZXJTaXplVG9WaWV3cG9ydChvYmplY3Qt
PmRvY3VtZW50KCktPnZpZXcoKSwgaW1hZ2VTaXplKTsKLQogICAgIC8vIERvbid0IGNyZWF0ZSBJ
bWFnZUJ1ZmZlcnMgd2l0aCBpbWFnZSBzaXplIG9mIDAKICAgICBpZiAoaW1hZ2VTaXplLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7Cg==
</data>
<flag name="review"
          id="39510"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55758</attachid>
            <date>2010-05-11 14:35:55 -0700</date>
            <delta_ts>2010-06-21 19:30:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>38704.patch</filename>
            <type>text/plain</type>
            <size>4044</size>
            <attacher name="Steven Lai">s3lance</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTE3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDUtMTEgIFN0ZXZlbiBMYWkgIDxzdGV2ZW5fbGFpQGFzaWEu
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNWRyBwYXR0ZXJuIHNpemUgY2hhbmdlZCB3aGVuIHJlc2l6aW5nIGJyb3dzZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzA0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83NTQxNDY2PgorCisgICAgICAgIENsYW1wIHBhdHRlcm4gdGlsZSBp
bWFnZSBzaXplIGFnYWluc3QgdGhlIGRvY3VtZW50IGluc3RlYWQgb2YgY2xhbXBpbmcgYWdhaW5z
dCB0aGUgdmlld3BvcnQgc2l6ZQorICAgICAgICBCdXQgd2Ugc2hvdWxkIGJlIGNsYW1waW5nIGFn
YWluc3QgZWFjaCByZW5kZXIgb2JqZWN0IHRoYXQgdXNlcyB0aGlzIHBhdHRlcm4gZmlsbCBpbnN0
ZWFkCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcEltYWdlQnVm
ZmVyU2l6ZVRvRG9jdW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0
Lmg6CisKIDIwMTAtMDUtMTEgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEZhbGtlbmJ1cmcuCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlzaW9uIDU5
MDk0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM5LDggKzIzOSw4IEBAIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+
IFJlbmRlclNWR1Jlc291cmMKIAogICAgIEludFNpemUgaW1hZ2VTaXplKGxyb3VuZGYocGF0dGVy
bkJvdW5kYXJpZXNJbmNsdWRpbmdPdmVyZmxvdy53aWR0aCgpKSwgbHJvdW5kZihwYXR0ZXJuQm91
bmRhcmllc0luY2x1ZGluZ092ZXJmbG93LmhlaWdodCgpKSk7CiAKLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGJlIGFibGUgdG8gY2xpcCB0aGlzIG1vcmUsIG5lZWRzIGludmVzdGlnYXRpb24KLSAg
ICBjbGFtcEltYWdlQnVmZmVyU2l6ZVRvVmlld3BvcnQob2JqZWN0LT5kb2N1bWVudCgpLT52aWV3
KCksIGltYWdlU2l6ZSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBjbGFtcGluZyBhZ2Fp
bnN0IHRoZSBzaXplIG9mIHRoZSBkaW1lbnNpb25zIG9mIGVhY2ggcmVuZGVyIG9iamVjdCB0aGF0
IHJlZmVyZW5jZSB0aGlzIHBhdHRlcm4gZmlsbAorICAgIGNsYW1wSW1hZ2VCdWZmZXJTaXplVG9E
b2N1bWVudChvYmplY3QtPmRvY3VtZW50KCksIGltYWdlU2l6ZSk7CiAKICAgICAvLyBEb24ndCBj
cmVhdGUgSW1hZ2VCdWZmZXJzIHdpdGggaW1hZ2Ugc2l6ZSBvZiAwCiAgICAgaWYgKGltYWdlU2l6
ZS5pc0VtcHR5KCkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAko
cmV2aXNpb24gNTkwOTQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDE5ICsyMTQsMjMgQEAgdm9pZCByZW5kZXJTdWJ0cmVl
VG9JbWFnZShJbWFnZUJ1ZmZlciogaQogICAgICAgICBzdmdDb250YWluZXItPnNldERyYXdzQ29u
dGVudHMoZmFsc2UpOwogfQogCi12b2lkIGNsYW1wSW1hZ2VCdWZmZXJTaXplVG9WaWV3cG9ydChG
cmFtZVZpZXcqIGZyYW1lVmlldywgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgY2xhbXBJbWFnZUJ1ZmZl
clNpemVUb0RvY3VtZW50KERvY3VtZW50ICpkb2N1bWVudCwgSW50U2l6ZSYgc2l6ZSkKIHsKLSAg
ICBpZiAoIWZyYW1lVmlldykKKyAgICBpZiAoIWRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGludCB2aWV3V2lkdGggPSBmcmFtZVZpZXctPnZpc2libGVXaWR0aCgpOwot
ICAgIGludCB2aWV3SGVpZ2h0ID0gZnJhbWVWaWV3LT52aXNpYmxlSGVpZ2h0KCk7CisgICAgY29u
c3QgSW50U2l6ZSYgY29udGVudHNTaXplID0gZG9jdW1lbnQtPnZpZXcoKS0+Y29udGVudHNTaXpl
KCk7CiAKLSAgICBpZiAoc2l6ZS53aWR0aCgpID4gdmlld1dpZHRoKQotICAgICAgICBzaXplLnNl
dFdpZHRoKHZpZXdXaWR0aCk7CisgICAgaW50IHNjcm9sbFdpZHRoID0gZG9jdW1lbnQtPmRvY3Vt
ZW50RWxlbWVudCgpLT5zY3JvbGxXaWR0aCgpOworICAgIGludCBzY3JvbGxIZWlnaHQgPSBkb2N1
bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnNjcm9sbEhlaWdodCgpOworICAgIGludCB3ID0gY29u
dGVudHNTaXplLndpZHRoKCkgPiBzY3JvbGxXaWR0aCA/IGNvbnRlbnRzU2l6ZS53aWR0aCgpIDog
c2Nyb2xsV2lkdGg7CisgICAgaW50IGggPSBjb250ZW50c1NpemUuaGVpZ2h0KCkgPiBzY3JvbGxI
ZWlnaHQgPyBjb250ZW50c1NpemUuaGVpZ2h0KCkgOiBzY3JvbGxIZWlnaHQ7CiAKLSAgICBpZiAo
c2l6ZS5oZWlnaHQoKSA+IHZpZXdIZWlnaHQpCi0gICAgICAgIHNpemUuc2V0SGVpZ2h0KHZpZXdI
ZWlnaHQpOworICAgIGlmIChzaXplLndpZHRoKCkgPiB3KQorICAgICAgICBzaXplLnNldFdpZHRo
KHcpOworCisgICAgaWYgKHNpemUuaGVpZ2h0KCkgPiBoKQorICAgICAgICBzaXplLnNldEhlaWdo
dChoKTsKIH0KIAogRmxvYXRSZWN0IFNWR1JlbmRlckJhc2U6OmNvbXB1dGVDb250YWluZXJCb3Vu
ZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgYm9vbCBpbmNsdWRlQWxsUGFp
bnRlZENvbnRlbnQpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCShyZXZp
c2lvbiA1OTA5NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIGFwcGx5VHJhbnNmb3JtVG9QYWludElu
Zm8oUmVuZGVyT2JqCiB2b2lkIHJlbmRlclN1YnRyZWVUb0ltYWdlKEltYWdlQnVmZmVyKiwgUmVu
ZGVyT2JqZWN0Kik7CiAKIHZvaWQgZGVyZWdpc3RlckZyb21SZXNvdXJjZXMoUmVuZGVyT2JqZWN0
Kik7Ci12b2lkIGNsYW1wSW1hZ2VCdWZmZXJTaXplVG9WaWV3cG9ydChGcmFtZVZpZXcqLCBJbnRT
aXplJiBpbWFnZUJ1ZmZlclNpemUpOwordm9pZCBjbGFtcEltYWdlQnVmZmVyU2l6ZVRvRG9jdW1l
bnQoRG9jdW1lbnQqLCBJbnRTaXplJiBpbWFnZUJ1ZmZlclNpemUpOwogCiB2b2lkIGFwcGx5U3Ry
b2tlU3R5bGVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBj
b25zdCBSZW5kZXJPYmplY3QqKTsKIERhc2hBcnJheSBkYXNoQXJyYXlGcm9tUmVuZGVyaW5nU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlKTsK
</data>
<flag name="review"
          id="40061"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>55760</attachid>
            <date>2010-05-11 14:48:50 -0700</date>
            <delta_ts>2010-05-11 14:48:50 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>pattern-internal-clip.svg</filename>
            <type>image/svg+xml</type>
            <size>2061</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGRlZnM+CjwhLS0gbm8gY3Jhc2ggaWYgd2l0aC9o
ZWlnaHQgaXMgMCAtLT4KPHBhdHRlcm4gaWQ9InBhdHRlcm4tMSIgd2lkdGg9IjAiIGhlaWdodD0i
MTAwIj4KICAgIDxyZWN0IHdpZHRoPSIxMDAwMCIgaGVpZ2h0PSIxMDAwMCIgZmlsbD0icmVkIi8+
CjwvcGF0dGVybj4KPCEtLSBjbGlwIHRvIHRhcmdldHMgc3Ryb2tlIGJvdW5kYXJpZXMsIG5vIHRy
YW5zZm9ybWF0aW9uIC0tPgo8cGF0dGVybiBpZD0icGF0dGVybi0yIiB3aWR0aD0iMTAwMDAiIGhl
aWdodD0iMTAwMDAiPgogICAgPHJlY3Qgd2lkdGg9IjEwMDAwIiBoZWlnaHQ9IjEwMDAwIiBmaWxs
PSJncmVlbiIvPgo8L3BhdHRlcm4+CjwhLS0gY2xpcCB0byB0YXJnZXRzIHN0cm9rZSBib3VuZGFy
aWVzLCB3aXRoIHNjYWxlIC0tPgo8cGF0dGVybiBpZD0icGF0dGVybi0yIiB3aWR0aD0iMTAwMDAi
IGhlaWdodD0iMTAwMDAiIHBhdHRlcm5UcmFuc2Zvcm09InNjYWxlKDAuMDAxKSI+CiAgICA8cmVj
dCB3aWR0aD0iMTAwMDAiIGhlaWdodD0iMTAwMDAiIGZpbGw9ImdyZWVuIi8+CjwvcGF0dGVybj4K
PCEtLSBjbGlwIHRvIHRhcmdldHMgc3Ryb2tlIGJvdW5kYXJpZXMsIHdpdGggc2tldyg0NSkgLS0+
CjxwYXR0ZXJuIGlkPSJwYXR0ZXJuLTMiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBwYXR0ZXJu
VHJhbnNmb3JtPSJza2V3WCg0NSkiPgogICAgPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAi
IGZpbGw9ImdyZWVuIi8+CjwvcGF0dGVybj4KPCEtLSBjbGlwIHRvIHRhcmdldHMgc3Ryb2tlIGJv
dW5kYXJpZXMsIHdpdGggdHJhbnNsYXRlIGFuZCBza2V3IC0tPgo8cGF0dGVybiBpZD0icGF0dGVy
bi00IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgcGF0dGVyblRyYW5zZm9ybT0idHJhbnNsYXRl
KC01MCwwKSBza2V3WCg0NSkiPgogICAgPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZp
bGw9ImdyZWVuIi8+CjwvcGF0dGVybj4KPCEtLSBjbGlwIHRvIHRhcmdldHMgc3Ryb2tlIGJvdW5k
YXJpZXMsIHdpdGggdHJhbnNsYXRlIGFuZCBza2V3IC0tPgo8cGF0dGVybiBpZD0icGF0dGVybi01
IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgcGF0dGVyblRyYW5zZm9ybT0icm90YXRlKDQ1LCA1
MCwgNTApIj4KICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIv
Pgo8L3BhdHRlcm4+CjwhLS0gY2xpcCB0byB0YXJnZXRzIHN0cm9rZSBib3VuZGFyaWVzLCB3aXRo
IHNjYWxlLCByb3RhdGUgLS0+CjxwYXR0ZXJuIGlkPSJwYXR0ZXJuLTYiIHdpZHRoPSIxMDAwMCIg
aGVpZ2h0PSIxMDAwMCIgcGF0dGVyblRyYW5zZm9ybT0ic2NhbGUoMC4wMSkgdHJhbnNsYXRlKDUw
MDAsIC0yNTAwKSByb3RhdGUoNDUsIDUwLCA1MCkiPgogICAgPHJlY3Qgd2lkdGg9IjEwMDAwIiBo
ZWlnaHQ9IjEwMDAwIiBmaWxsPSJncmVlbiIvPgo8L3BhdHRlcm4+CjwvZGVmcz4KCjxyZWN0IHdp
ZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJ1cmwoI3BhdHRlcm4tMSkgZ3JlZW4iIHRyYW5z
Zm9ybT0idHJhbnNsYXRlKDEwLDEwKSIvPgo8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIg
ZmlsbD0idXJsKCNwYXR0ZXJuLTIpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAsMTApIi8+Cjxy
ZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJ1cmwoI3BhdHRlcm4tMykiIHRyYW5z
Zm9ybT0idHJhbnNsYXRlKDEwLDEzMCkiLz4KPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAi
IGZpbGw9InVybCgjcGF0dGVybi00KSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLDEzMCkiLz4K
PHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjcGF0dGVybi01KSIgdHJh
bnNmb3JtPSJ0cmFuc2xhdGUoMTAsMjUwKSIvPgo8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgZmlsbD0idXJsKCNwYXR0ZXJuLTYpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAsMjUwKSIv
Pgo8L3N2Zz4K
</data>

          </attachment>
      

    </bug>

</bugzilla>