<?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>38390</bug_id>
          
          <creation_ts>2010-04-30 07:48:10 -0700</creation_ts>
          <short_desc>[Qt] Failed on http://philip.html5.org/tests/canvas/suite/tests/2d.drawImage.negativesource.html</short_desc>
          <delta_ts>2010-07-02 11:48:13 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="qi">qi.2.zhang</reporter>
          <assigned_to name="qi">qi.2.zhang</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>cshu</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>krit</cc>
    
    <cc>laszlo.gombos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219484</commentid>
    <comment_count>0</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-04-30 07:48:10 -0700</bug_when>
    <thetext>Qt failed on http://philip.html5.org/tests/canvas/suite/tests/2d.drawImage.nowrap.html, but Safari passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219485</commentid>
    <comment_count>1</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-04-30 07:49:38 -0700</bug_when>
    <thetext>Also failed on:
http://philip.html5.org/tests/canvas/suite/tests/2d.drawImage.negativedest.html
http://philip.html5.org/tests/canvas/suite/tests/2d.drawImage.negativedir.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219495</commentid>
    <comment_count>2</comment_count>
      <attachid>54807</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-04-30 08:38:18 -0700</bug_when>
    <thetext>Created attachment 54807
patch

This bug is pretty much similar with 56619. Both of them is about negative width or height in drawing a image. The difference is 56619 was drawing a special image - canvas (drawing a canvas to another canvas), in Qt, StillImage draw is used for this purpose. This case is a normal image (draw a normal image to canvas), ImageQt draw is used for this purpose. I copy the code from StillImage to ImageQt for the same reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223811</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 01:34:54 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=54807) [details]
&gt; patch
&gt; 
&gt; This bug is pretty much similar with 56619. Both of them is about negative width or height in drawing a image. The difference is 56619 was drawing a special image - canvas (drawing a canvas to another canvas), in Qt, StillImage draw is used for this purpose. This case is a normal image (draw a normal image to canvas), ImageQt draw is used for this purpose. I copy the code from StillImage to ImageQt for the same reason.

IIRC I talked to hixie, and you also need to flip the image on negative sizes. So 56619 might be wrong too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223891</commentid>
    <comment_count>4</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-05-11 06:24:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Created an attachment (id=54807) [details] [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; This bug is pretty much similar with 56619. Both of them is about negative width or height in drawing a image. The difference is 56619 was drawing a special image - canvas (drawing a canvas to another canvas), in Qt, StillImage draw is used for this purpose. This case is a normal image (draw a normal image to canvas), ImageQt draw is used for this purpose. I copy the code from StillImage to ImageQt for the same reason.
&gt; IIRC I talked to hixie, and you also need to flip the image on negative sizes. So 56619 might be wrong too.

Hi Dirk,

Can you explain what&apos;s your means on &quot;flip the image on negative sizes&quot;?

What I did is following the HTML5 spec:
The source rectangle is the rectangle whose corners are the four points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), (sx,sy+sh).
The destination rectangle is the rectangle whose corners are the four points (dx, dy), (dx+dw, dy), (dx+dw,dy+dh), (dx, dy+dh).

In this case, the sw(width) or sh(height) could be negative. Based on the spec, as long as sx+sw &gt; 0 or sy+sh, it is still legal.
In Qt, QPainter don&apos;t support a negative width or height.

Note: 56619 is the wrong id, it is 35005.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223896</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 06:34:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; Created an attachment (id=54807) [details] [details] [details]
&gt; &gt; &gt; patch
&gt; &gt; &gt; 
&gt; &gt; &gt; This bug is pretty much similar with 56619. Both of them is about negative width or height in drawing a image. The difference is 56619 was drawing a special image - canvas (drawing a canvas to another canvas), in Qt, StillImage draw is used for this purpose. This case is a normal image (draw a normal image to canvas), ImageQt draw is used for this purpose. I copy the code from StillImage to ImageQt for the same reason.
&gt; &gt; IIRC I talked to hixie, and you also need to flip the image on negative sizes. So 56619 might be wrong too.
&gt; 
&gt; Hi Dirk,
&gt; 
&gt; Can you explain what&apos;s your means on &quot;flip the image on negative sizes&quot;?
&gt; 
&gt; What I did is following the HTML5 spec:
&gt; The source rectangle is the rectangle whose corners are the four points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), (sx,sy+sh).
&gt; The destination rectangle is the rectangle whose corners are the four points (dx, dy), (dx+dw, dy), (dx+dw,dy+dh), (dx, dy+dh).
&gt; 
&gt; In this case, the sw(width) or sh(height) could be negative. Based on the spec, as long as sx+sw &gt; 0 or sy+sh, it is still legal.
&gt; In Qt, QPainter don&apos;t support a negative width or height.
&gt; 
&gt; Note: 56619 is the wrong id, it is 35005.

Of course are negative values allowed, but a neg with means the same like using scale(-1, 1); a neg height means a additional scale(1,-1);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225309</commentid>
    <comment_count>6</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-05-13 08:08:34 -0700</bug_when>
    <thetext>I think what your means is using 

     QTransform transform;
     transform.scale(1, -1); //or (-1,1)or (-1,-1)
     painter.setTransform(transform);

Is that correct?

If so, the issue is in this case:

     painter-&gt;drawPixmap(dstM, *image, srcM);    

We have source rect - srcM and destination rect - dstM. Any one of them or both of them have negative width or height. 

The transform will apply to both of them anyway. That&apos;s not what we expect. You know, maybe in some case if dstM has negative width, but srcM has no negative width or height. I think we just want to apply the transformation to dstM, not the srcM. But can we do that? Looks like in Qt, the transformation is for painter, we can&apos;t use it to transform by ourselves, is this correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227718</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-19 00:15:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I think what your means is using 
&gt; 
&gt;      QTransform transform;
&gt;      transform.scale(1, -1); //or (-1,1)or (-1,-1)
&gt;      painter.setTransform(transform);
&gt; 
&gt; Is that correct?
&gt; 
&gt; If so, the issue is in this case:
&gt; 
&gt;      painter-&gt;drawPixmap(dstM, *image, srcM);    
&gt; 
&gt; We have source rect - srcM and destination rect - dstM. Any one of them or both of them have negative width or height. 
&gt; 
&gt; The transform will apply to both of them anyway. That&apos;s not what we expect. You know, maybe in some case if dstM has negative width, but srcM has no negative width or height. I think we just want to apply the transformation to dstM, not the srcM. But can we do that? Looks like in Qt, the transformation is for painter, we can&apos;t use it to transform by ourselves, is this correct?

Not sure if transforming the painter is the only solution. But it should be possible to check if just one of the width values (just one of the height values) of dstRect or srcRect is negative and transform the image or the context befor the drawing.
Please also check what Safari is doing. We also have a test in our test suite to determine this problem: fast/canvas/drawImage-with-negative-source-destination.html. The test checks both, negative values for srcRect as well as negative dstRect values. Nevertheless, the test needs a change and should use the apple logo from the resources instead of the green rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227728</commentid>
    <comment_count>8</comment_count>
      <attachid>56470</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-19 00:38:12 -0700</bug_when>
    <thetext>Created attachment 56470
Test

Test for negative srcRect or dstRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235896</commentid>
    <comment_count>9</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-06-09 11:20:54 -0700</bug_when>
    <thetext>1. I think using transform in painter is not a good idea. The reason is source rect and destination rect may need different transform.

2. What transformation is for our purpose? I think scale might not be correct one.
   for example: if we have rect like(100, 0, -100, 50); 

   What we expect after transformation is (0, 0, 100 , 50); scale(-1, 1) doesn&apos;t do it.

3. Do you think my code is wrong from theory or just not good enough? I asked this question because I think my code is straight forward, based on the spec:

The source rectangle is the rectangle whose corners are the four points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), (sx,sy+sh).
The destination rectangle is the rectangle whose corners are the four points (dx, dy), (dx+dw, dy), (dx+dw,dy+dh), (dx, dy+dh).

If you think scale might be better solution, Actually I think it is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239036</commentid>
    <comment_count>10</comment_count>
      <attachid>54807</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-16 13:11:47 -0700</bug_when>
    <thetext>Comment on attachment 54807
patch

In principle this looks good to me, but wouldn&apos;t it be much nicer if FloatRect had a member function, like this?

FloatRect FloatRect::normalized() const;

and then you could simply write:

painter-&gt;drawPixmap(dst.normalized(), *image, src.normalized())

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239040</commentid>
    <comment_count>11</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-06-16 13:18:35 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 54807 [details])
&gt; In principle this looks good to me, but wouldn&apos;t it be much nicer if FloatRect had a member function, like this?
&gt; 
&gt; FloatRect FloatRect::normalized() const;
&gt; 
&gt; and then you could simply write:
&gt; 
&gt; painter-&gt;drawPixmap(dst.normalized(), *image, src.normalized())
&gt; 
&gt; What do you think?

That&apos;s great idea, but we need change webkit common code. Do you think it deserve to change common code (new API)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242646</commentid>
    <comment_count>12</comment_count>
      <attachid>59691</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-06-24 13:40:52 -0700</bug_when>
    <thetext>Created attachment 59691
patch2

New patch based on comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244685</commentid>
    <comment_count>13</comment_count>
      <attachid>59691</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-30 01:47:36 -0700</bug_when>
    <thetext>Comment on attachment 59691
patch2

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 61783)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,17 @@
&gt; +2010-06-24  Qi Zhang  &lt;qi.2.zhang@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt]  Failed on http://philip.html5.org/tests/canvas/suite/tests/2d.drawImage.negativesource.html
&gt; +
&gt; +        Support negative width and height in canvas image draw
&gt; +
&gt; +        * platform/graphics/FloatRect.h:
&gt; +        * platform/graphics/qt/FloatRectQt.cpp:
&gt; +        (WebCore::FloatRect::normalized):
&gt; +        * platform/graphics/qt/ImageQt.cpp:
&gt; +        (WebCore::BitmapImage::draw):
&gt; +
&gt;  2010-06-24  Nate Chapin  &lt;japhet@chromium.org&gt;
&gt;  
&gt;          Reviewed by Adam Barth.
&gt; Index: WebCore/platform/graphics/FloatRect.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/FloatRect.h	(revision 61759)
&gt; +++ WebCore/platform/graphics/FloatRect.h	(working copy)
&gt; @@ -143,6 +143,7 @@ public:
&gt;  #if PLATFORM(QT)
&gt;      FloatRect(const QRectF&amp;);
&gt;      operator QRectF() const;
&gt; +    FloatRect normalized() const;
&gt;  #endif
&gt;  
&gt;  #if PLATFORM(WX) &amp;&amp; USE(WXGC)
&gt; Index: WebCore/platform/graphics/qt/FloatRectQt.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/qt/FloatRectQt.cpp	(revision 61759)
&gt; +++ WebCore/platform/graphics/qt/FloatRectQt.cpp	(working copy)
&gt; @@ -44,6 +44,21 @@ FloatRect::operator QRectF() const
&gt;      return QRectF(x(), y(), width(), height());
&gt;  }
&gt;  
&gt; +FloatRect FloatRect::normalized() const
&gt; +{
&gt; +    FloatRect normalizedRect = *this;
&gt; +
&gt; +    if (width() &lt; 0) {
&gt; +        normalizedRect.setX(x() + width());
&gt; +        normalizedRect.setWidth(-width());
&gt; +    }
&gt; +    if (height() &lt; 0) {
&gt; +        normalizedRect.setY(y() + height());
&gt; +        normalizedRect.setHeight(-height());
&gt; +    }
&gt; +    return normalizedRect;
&gt; +}
&gt; +
&gt;  }
&gt;  
&gt;  // vim: ts=4 sw=4 et
&gt; Index: WebCore/platform/graphics/qt/ImageQt.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/qt/ImageQt.cpp	(revision 61759)
&gt; +++ WebCore/platform/graphics/qt/ImageQt.cpp	(working copy)
&gt; @@ -164,6 +164,9 @@ void BitmapImage::invalidatePlatformData
&gt;  void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect&amp; dst,
&gt;                         const FloatRect&amp; src, ColorSpace styleColorSpace, CompositeOperator op)
&gt;  {
&gt; +    FloatRect normalizedDst = dst.normalized();
&gt; +    FloatRect normalizedSrc = src.normalized();
&gt; +
&gt;      startAnimation();
&gt;  
&gt;      QPixmap* image = nativeImageForCurrentFrame();
&gt; @@ -171,7 +174,7 @@ void BitmapImage::draw(GraphicsContext* 
&gt;          return;
&gt;  
&gt;      if (mayFillWithSolidColor()) {
&gt; -        fillWithSolidColor(ctxt, dst, solidColor(), styleColorSpace, op);
&gt; +        fillWithSolidColor(ctxt, normalizedDst, solidColor(), styleColorSpace, op);
&gt;          return;
&gt;      }
&gt;  
&gt; @@ -191,22 +194,22 @@ void BitmapImage::draw(GraphicsContext* 
&gt;      float shadowBlur;
&gt;      Color shadowColor;
&gt;      if (ctxt-&gt;getShadow(shadowSize, shadowBlur, shadowColor)) {
&gt; -        FloatRect shadowImageRect(dst);
&gt; +        FloatRect shadowImageRect(normalizedDst);
&gt;          shadowImageRect.move(shadowSize.width(), shadowSize.height());
&gt;  
&gt; -        QImage shadowImage(QSize(static_cast&lt;int&gt;(src.width()), static_cast&lt;int&gt;(src.height())), QImage::Format_ARGB32_Premultiplied);
&gt; +        QImage shadowImage(QSize(static_cast&lt;int&gt;(normalizedSrc.width()), static_cast&lt;int&gt;(normalizedSrc.height())), QImage::Format_ARGB32_Premultiplied);
&gt;          QPainter p(&amp;shadowImage);
&gt;          p.setCompositionMode(QPainter::CompositionMode_Source);
&gt;          p.fillRect(shadowImage.rect(), shadowColor);
&gt;          p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
&gt; -        p.drawPixmap(dst, *image, src);
&gt; +        p.drawPixmap(normalizedDst, *image, normalizedSrc);
&gt;          p.end();
&gt; -        painter-&gt;drawImage(shadowImageRect, shadowImage, src);
&gt; +        painter-&gt;drawImage(shadowImageRect, shadowImage, normalizedSrc);
&gt;      }
&gt;  
&gt;      // Test using example site at
&gt;      // http://www.meyerweb.com/eric/css/edge/complexspiral/demo.html
&gt; -    painter-&gt;drawPixmap(dst, *image, src);
&gt; +    painter-&gt;drawPixmap(normalizedDst, *image, normalizedSrc);
&gt;  
&gt;      painter-&gt;setCompositionMode(lastCompositionMode);
&gt;  
&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================
&gt; --- LayoutTests/ChangeLog	(revision 61783)
&gt; +++ LayoutTests/ChangeLog	(working copy)
&gt; @@ -1,3 +1,16 @@
&gt; +2010-06-24  Qi Zhang  &lt;qi.2.zhang@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt]  Failed on http://philip.html5.org/tests/canvas/suite/tests/2d.drawImage.negativesource.html
&gt; +        
&gt; +        Remove the following test case from Skipped:
&gt; +        canvas/philip/tests/2d.drawImage.negativedest.html
&gt; +        canvas/philip/tests/2d.drawImage.negativedir.html
&gt; +        canvas/philip/tests/2d.drawImage.negativesource.html
&gt; +
&gt; +        * platform/qt/Skipped:
&gt; +
&gt;  2010-06-24  Martin Robinson  &lt;mrobinson@igalia.com&gt;
&gt;  
&gt;          Unreviewed.
&gt; Index: LayoutTests/platform/qt/Skipped
&gt; ===================================================================
&gt; --- LayoutTests/platform/qt/Skipped	(revision 61759)
&gt; +++ LayoutTests/platform/qt/Skipped	(working copy)
&gt; @@ -5247,9 +5247,6 @@ canvas/philip/tests/2d.composite.uncover
&gt;  canvas/philip/tests/2d.composite.uncovered.pattern.source-out.html
&gt;  canvas/philip/tests/2d.drawImage.broken.html
&gt;  canvas/philip/tests/2d.drawImage.incomplete.html
&gt; -canvas/philip/tests/2d.drawImage.negativedest.html
&gt; -canvas/philip/tests/2d.drawImage.negativedir.html
&gt; -canvas/philip/tests/2d.drawImage.negativesource.html
&gt;  canvas/philip/tests/2d.drawImage.null.html
&gt;  canvas/philip/tests/2d.drawImage.wrongtype.html
&gt;  canvas/philip/tests/2d.drawImage.zerocanvas.html

WebCore/platform/graphics/FloatRect.h:146
 +      FloatRect normalized() const;
IMO this should be a cross-platform method and replace normalizeRect(FloatRect) in CanvasRenderingContext2D.cpp

Rest looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244686</commentid>
    <comment_count>14</comment_count>
      <attachid>59691</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-30 01:48:57 -0700</bug_when>
    <thetext>Comment on attachment 59691
patch2

Heh, looks like the review-tool didn&apos;t quite work as I thought. Sorry about the mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245987</commentid>
    <comment_count>15</comment_count>
      <attachid>59691</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-07-02 11:20:05 -0700</bug_when>
    <thetext>Comment on attachment 59691
patch2

looks good to me, r+.

To Andreas point - I could not find another port that would need the normalized function and I do not think we should force the overhead of calling this function on other ports that do not need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246000</commentid>
    <comment_count>16</comment_count>
      <attachid>59691</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-02 11:48:07 -0700</bug_when>
    <thetext>Comment on attachment 59691
patch2

Clearing flags on attachment: 59691

Committed r62394: &lt;http://trac.webkit.org/changeset/62394&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246001</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-02 11:48:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54807</attachid>
            <date>2010-04-30 08:38:18 -0700</date>
            <delta_ts>2010-06-24 13:40:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug38390.patch</filename>
            <type>text/plain</type>
            <size>1943</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODU3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQtMzAgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSAgRmFpbGVkIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90
ZXN0cy8yZC5kcmF3SW1hZ2UubmVnYXRpdmVzb3VyY2UuaHRtbAorCisgICAgICAgIFN1cHBvcnQg
bmVnYXRpdmUgd2lkdGggYW5kIGhlaWdodCBpbiBjYW52YXMgaW1hZ2UgZHJhdworCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisKIDIwMTAtMDQtMzAgIExhc3psbyBHb21ib3MgIDxsYXN6bG8u
MS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAkocmV2aXNpb24gNTgz
MDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODcsOSArMTg3LDQzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiAKICAgICBpZiAoIWltYWdlLT5oYXNBbHBoYSgpICYmIHBhaW50ZXItPmNvbXBv
c2l0aW9uTW9kZSgpID09IFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlT3ZlcikKICAg
ICAgICAgcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1v
ZGVfU291cmNlKTsKIAorICAgIC8vIFRvIHN1cHBvcnQgd2lkdGggb3IgaGVpZ2h0IGlzIG5lZ2F0
aXZlCisgICAgZmxvYXQgc3ggPSBzcmMueCgpOworICAgIGZsb2F0IHN5ID0gc3JjLnkoKTsKKyAg
ICBmbG9hdCBzdyA9IHNyYy53aWR0aCgpOworICAgIGZsb2F0IHNoID0gc3JjLmhlaWdodCgpOwor
CisgICAgaWYgKHN3IDwgMCkgeworICAgICAgICBzeCA9IHN4ICsgc3c7CisgICAgICAgIHN3ID0g
LXN3OworICAgIH0KKworICAgIGlmIChzaCA8IDApIHsKKyAgICAgICAgc3kgPSBzeSArIHNoOwor
ICAgICAgICBzaCA9IC1zaDsKKyAgICB9CisKKyAgICBmbG9hdCBkeCA9IGRzdC54KCk7CisgICAg
ZmxvYXQgZHkgPSBkc3QueSgpOworICAgIGZsb2F0IGR3ID0gZHN0LndpZHRoKCk7CisgICAgZmxv
YXQgZGggPSBkc3QuaGVpZ2h0KCk7CisKKyAgICBpZiAoZHcgPCAwKSB7CisgICAgICAgIGR4ID0g
ZHggKyBkdzsKKyAgICAgICAgZHcgPSAtZHc7CisgICAgfQorCisgICAgaWYgKGRoIDwgMCkgewor
ICAgICAgICBkeSA9IGR5ICsgZGg7CisgICAgICAgIGRoID0gLWRoOworICAgIH0KKworICAgIEZs
b2F0UmVjdCBzcmNNKHN4LCBzeSwgc3csIHNoKTsKKyAgICBGbG9hdFJlY3QgZHN0TShkeCwgZHks
IGR3LCBkaCk7CisKICAgICAvLyBUZXN0IHVzaW5nIGV4YW1wbGUgc2l0ZSBhdAogICAgIC8vIGh0
dHA6Ly93d3cubWV5ZXJ3ZWIuY29tL2VyaWMvY3NzL2VkZ2UvY29tcGxleHNwaXJhbC9kZW1vLmh0
bWwKLSAgICBwYWludGVyLT5kcmF3UGl4bWFwKGRzdCwgKmltYWdlLCBzcmMpOworICAgIHBhaW50
ZXItPmRyYXdQaXhtYXAoZHN0TSwgKmltYWdlLCBzcmNNKTsKIAogICAgIGN0eHQtPnJlc3RvcmUo
KTsKIAo=
</data>
<flag name="review"
          id="38857"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>56470</attachid>
            <date>2010-05-19 00:38:12 -0700</date>
            <delta_ts>2010-05-19 00:38:12 -0700</delta_ts>
            <desc>Test</desc>
            <filename>drawImage-with-negative-source-destination2.html</filename>
            <type>text/html</type>
            <size>1003</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KIDxoZWFkPgogIDx0aXRsZT5kcmF3SW1h
Z2Ugd2l0aCBuZWdhdGl2ZSB2YWx1ZXMgZm9yIGRzdFJlY3QgYW5kIHNyY1JlY3Q8L3RpdGxlPgog
IDxzY3JpcHQ+CiAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICB3aW5kb3cub25sb2FkID0gZnVuY3Rp
b24oKXsKICAgIHZhciBpID0gbmV3IEltYWdlKCk7CiAgICBpLnNyYyA9ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2V4cG9ydC81OTc1MS90cnVuay9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yZXNv
dXJjZXMvYXBwbGUuZ2lmIjsKICAgIGkub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFy
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXS5nZXRD
b250ZXh0KCcyZCcpOwogICAgICAgIGNhbnZhcy5kcmF3SW1hZ2UoaSwgNTIsIDAsIC01MiwgNjQs
IDAsIDAsIDUyLCA2NCk7CiAgICAgICAgY2FudmFzLmRyYXdJbWFnZShpLCA1MiwgNjQsIC01Miwg
LTY0LCAwLCAxMjgsIDUyLCAtNjQpOwogICAgICAgIGNhbnZhcy5kcmF3SW1hZ2UoaSwgMCwgNjQs
IDUyLCAtNjQsIDEwNCwgNjQsIC01MiwgLTY0KTsKICAgICAgICBjYW52YXMuZHJhd0ltYWdlKGks
IDAsIDAsIDUyLCA2NCwgMTA0LCA2NCwgLTUyLCA2NCk7CiAgICAJCiAgICAJaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKICAgIAkgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOwogICAJCX0KICAgfQogIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiAgPHA+WW91
IHNob3VsZCBzZWUgNCBhcHBsZXMsIGFuZCBhbGwgNCBhcHBsZXMgc2hvdWxkIGhhdmUgdGhlIG5p
cCBvbiB0aGUgbGVmdCBoYW5kIHNpZGUuPC9wPgogIDxjYW52YXMgaGVpZ2h0PSIxMjgiIHdpZHRo
PSIxMDQiPjwvY2FudmFzPgogPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59691</attachid>
            <date>2010-06-24 13:40:52 -0700</date>
            <delta_ts>2010-07-02 11:48:07 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>bug38390_2.patch</filename>
            <type>text/plain</type>
            <size>5741</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTc4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMjQgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSAgRmFpbGVkIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90
ZXN0cy8yZC5kcmF3SW1hZ2UubmVnYXRpdmVzb3VyY2UuaHRtbAorCisgICAgICAgIFN1cHBvcnQg
bmVnYXRpdmUgd2lkdGggYW5kIGhlaWdodCBpbiBjYW52YXMgaW1hZ2UgZHJhdworCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRmxvYXRSZWN0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSZWN0Ojpu
b3JtYWxpemVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKwogMjAxMC0wNi0yNCAgTmF0
ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgJKHJldmlz
aW9uIDYxNzU5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShRVCkK
ICAgICBGbG9hdFJlY3QoY29uc3QgUVJlY3RGJik7CiAgICAgb3BlcmF0b3IgUVJlY3RGKCkgY29u
c3Q7CisgICAgRmxvYXRSZWN0IG5vcm1hbGl6ZWQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oV1gpICYmIFVTRShXWEdDKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9GbG9hdFJlY3RRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9GbG9hdFJlY3RRdC5jcHAJKHJldmlzaW9uIDYxNzU5KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9GbG9hdFJlY3RRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0
LDIxIEBAIEZsb2F0UmVjdDo6b3BlcmF0b3IgUVJlY3RGKCkgY29uc3QKICAgICByZXR1cm4gUVJl
Y3RGKHgoKSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7CiB9CiAKK0Zsb2F0UmVjdCBGbG9hdFJl
Y3Q6Om5vcm1hbGl6ZWQoKSBjb25zdAoreworICAgIEZsb2F0UmVjdCBub3JtYWxpemVkUmVjdCA9
ICp0aGlzOworCisgICAgaWYgKHdpZHRoKCkgPCAwKSB7CisgICAgICAgIG5vcm1hbGl6ZWRSZWN0
LnNldFgoeCgpICsgd2lkdGgoKSk7CisgICAgICAgIG5vcm1hbGl6ZWRSZWN0LnNldFdpZHRoKC13
aWR0aCgpKTsKKyAgICB9CisgICAgaWYgKGhlaWdodCgpIDwgMCkgeworICAgICAgICBub3JtYWxp
emVkUmVjdC5zZXRZKHkoKSArIGhlaWdodCgpKTsKKyAgICAgICAgbm9ybWFsaXplZFJlY3Quc2V0
SGVpZ2h0KC1oZWlnaHQoKSk7CisgICAgfQorICAgIHJldHVybiBub3JtYWxpemVkUmVjdDsKK30K
KwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBldApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlUXQuY3BwCShyZXZpc2lvbiA2MTc1OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsOSBA
QCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhCiB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgRmxvYXRSZWN0IG5v
cm1hbGl6ZWREc3QgPSBkc3Qubm9ybWFsaXplZCgpOworICAgIEZsb2F0UmVjdCBub3JtYWxpemVk
U3JjID0gc3JjLm5vcm1hbGl6ZWQoKTsKKwogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKICAgICBR
UGl4bWFwKiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xNzEsNyAr
MTc0LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIAogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobWF5RmlsbFdpdGhTb2xpZENvbG9yKCkpIHsKLSAgICAgICAg
ZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIG5vcm1hbGl6ZWREc3Qs
IHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTE5MSwyMiArMTk0LDIyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiAKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9y
OwogICAgIGlmIChjdHh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBzaGFkb3dJbWFnZVJlY3QoZHN0KTsKKyAgICAg
ICAgRmxvYXRSZWN0IHNoYWRvd0ltYWdlUmVjdChub3JtYWxpemVkRHN0KTsKICAgICAgICAgc2hh
ZG93SW1hZ2VSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgp
KTsKIAotICAgICAgICBRSW1hZ2Ugc2hhZG93SW1hZ2UoUVNpemUoc3RhdGljX2Nhc3Q8aW50Pihz
cmMud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc3JjLmhlaWdodCgpKSksIFFJbWFnZTo6Rm9y
bWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKKyAgICAgICAgUUltYWdlIHNoYWRvd0ltYWdlKFFT
aXplKHN0YXRpY19jYXN0PGludD4obm9ybWFsaXplZFNyYy53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8
aW50Pihub3JtYWxpemVkU3JjLmhlaWdodCgpKSksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVt
dWx0aXBsaWVkKTsKICAgICAgICAgUVBhaW50ZXIgcCgmc2hhZG93SW1hZ2UpOwogICAgICAgICBw
LnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAg
ICAgICAgIHAuZmlsbFJlY3Qoc2hhZG93SW1hZ2UucmVjdCgpLCBzaGFkb3dDb2xvcik7CiAgICAg
ICAgIHAuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfRGVzdGlu
YXRpb25Jbik7Ci0gICAgICAgIHAuZHJhd1BpeG1hcChkc3QsICppbWFnZSwgc3JjKTsKKyAgICAg
ICAgcC5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICppbWFnZSwgbm9ybWFsaXplZFNyYyk7CiAg
ICAgICAgIHAuZW5kKCk7Ci0gICAgICAgIHBhaW50ZXItPmRyYXdJbWFnZShzaGFkb3dJbWFnZVJl
Y3QsIHNoYWRvd0ltYWdlLCBzcmMpOworICAgICAgICBwYWludGVyLT5kcmF3SW1hZ2Uoc2hhZG93
SW1hZ2VSZWN0LCBzaGFkb3dJbWFnZSwgbm9ybWFsaXplZFNyYyk7CiAgICAgfQogCiAgICAgLy8g
VGVzdCB1c2luZyBleGFtcGxlIHNpdGUgYXQKICAgICAvLyBodHRwOi8vd3d3Lm1leWVyd2ViLmNv
bS9lcmljL2Nzcy9lZGdlL2NvbXBsZXhzcGlyYWwvZGVtby5odG1sCi0gICAgcGFpbnRlci0+ZHJh
d1BpeG1hcChkc3QsICppbWFnZSwgc3JjKTsKKyAgICBwYWludGVyLT5kcmF3UGl4bWFwKG5vcm1h
bGl6ZWREc3QsICppbWFnZSwgbm9ybWFsaXplZFNyYyk7CiAKICAgICBwYWludGVyLT5zZXRDb21w
b3NpdGlvbk1vZGUobGFzdENvbXBvc2l0aW9uTW9kZSk7CiAKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYx
NzgzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTAtMDYtMjQgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSAgRmFpbGVk
IG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90ZXN0cy8yZC5k
cmF3SW1hZ2UubmVnYXRpdmVzb3VyY2UuaHRtbAorICAgICAgICAKKyAgICAgICAgUmVtb3ZlIHRo
ZSBmb2xsb3dpbmcgdGVzdCBjYXNlIGZyb20gU2tpcHBlZDoKKyAgICAgICAgY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5kcmF3SW1hZ2UubmVnYXRpdmVkZXN0Lmh0bWwKKyAgICAgICAgY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UubmVnYXRpdmVkaXIuaHRtbAorICAgICAgICBjYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLmRyYXdJbWFnZS5uZWdhdGl2ZXNvdXJjZS5odG1sCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDEwLTA2LTI0ICBNYXJ0aW4gUm9iaW5zb24gIDxt
cm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2MTc1OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTUyNDcsOSArNTI0Nyw2IEBAIGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuY29tcG9zaXRlLnVuY292ZXIKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
Y29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLnNvdXJjZS1vdXQuaHRtbAogY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5kcmF3SW1hZ2UuYnJva2VuLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
ZHJhd0ltYWdlLmluY29tcGxldGUuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1h
Z2UubmVnYXRpdmVkZXN0Lmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm5l
Z2F0aXZlZGlyLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm5lZ2F0aXZl
c291cmNlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm51bGwuaHRtbAog
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2Uud3Jvbmd0eXBlLmh0bWwKIGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLnplcm9jYW52YXMuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>