<?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>41732</bug_id>
          
          <creation_ts>2010-07-06 20:54:47 -0700</creation_ts>
          <short_desc>[Cairo] Bring behavior of paths on the Cairo GraphicsContext into line with the CoreGraphics port</short_desc>
          <delta_ts>2010-08-10 09:42:09 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          <blocked>41308</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>krit</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>247285</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-06 20:54:47 -0700</bug_when>
    <thetext>While implementing https://bugs.webkit.org/show_bug.cgi?id=41308 I found that portions of the new code expect that GraphicsContext::addPath should not affect subsequent drawing. Furthermore, the path added to the GC via addPath should be unaffected by any drawn done that does not use expect to use the current GC path directly.

For instance, one should be able to call:
1. GraphicsContext::addPath
2. GraphicsContext::drawConvexPolygon
3. GraphicsContext::strokePath

In this scenario, the call to drawConvexPolygon should not modify the path added via addPath. Likewise, the polygon drawn in step two should not be affected by the path on the GC from addPath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249235</commentid>
    <comment_count>1</comment_count>
      <attachid>61084</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-09 13:51:17 -0700</bug_when>
    <thetext>Created attachment 61084
Patch for this issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249941</commentid>
    <comment_count>2</comment_count>
      <attachid>61084</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2010-07-12 11:54:57 -0700</bug_when>
    <thetext>Comment on attachment 61084
Patch for this issue

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 4c7f4a6e441aa83fac483dda6abedbffabe6a225..baef5072848f85bfbffb6df354cc3832cdd85b05 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,46 @@
&gt; +2010-07-09  Martin Robinson  &lt;mrobinson@igalia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [GTK] Bring behavior of paths on the Cairo GraphicsContext into line with the CoreGraphics port
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=41732
&gt; +
&gt; +        Make drawing routines on the Cairo graphics context independent from path manipulation.
&gt; +        This means that drawing shapes does not affect in any way paths added to the context via
&gt; +        addPath. Furthermore, paths added to the context do not affect shapes drawn via methods
&gt; +        such as drawEllipse. cairo_save() and cairo_restore() do not affect any path that is on
&gt; +        the cairo context, so we do this manually.
&gt; +
&gt; +        This behavior is necessary to close bug https://bugs.webkit.org/show_bug.cgi?id=41308
&gt; +        so tests for that issue will test this fix.
&gt; +
&gt; +        * platform/graphics/cairo/GraphicsContextCairo.cpp:
&gt; +        (WebCore::GraphicsContextPlatformPrivate::saveCairoPath): Added. This method
&gt; +        saves the current cairo path to a member variable and begins a new path on
&gt; +        the context.
&gt; +        (WebCore::GraphicsContextPlatformPrivate::restoreCairoPath): Added. Restores the
&gt; +        saved cairo path to the context if one exists.
&gt; +        (WebCore::GraphicsContext::drawRect): Guard the previous path on the cairo context by
&gt; +        calling the saveCairoPath/restoreCairoPath pair.
&gt; +        (WebCore::GraphicsContext::drawLine): Ditto.
&gt; +        (WebCore::GraphicsContext::drawEllipse): Ditto
&gt; +        (WebCore::GraphicsContext::strokeArc): Ditto
&gt; +        (WebCore::GraphicsContext::drawConvexPolygon): Ditto.
&gt; +        (WebCore::GraphicsContext::fillRect): Ditto.
&gt; +        (WebCore::GraphicsContext::clip): Ditto.
&gt; +        (WebCore::GraphicsContext::clipPath): Ditto.
&gt; +        (WebCore::GraphicsContext::drawFocusRing): Ditto.
&gt; +        (WebCore::GraphicsContext::drawLineForMisspellingOrBadGrammar): Ditto
&gt; +        (WebCore::GraphicsContext::addInnerRoundedRectClip): Ditto.
&gt; +        (WebCore::GraphicsContext::clearRect): Ditto.
&gt; +        (WebCore::GraphicsContext::strokeRect): Ditto.
&gt; +        (WebCore::GraphicsContext::clipOut): Ditto.
&gt; +        (WebCore::GraphicsContext::fillRoundedRect): Ditto.
&gt; +        * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h: Added a member variable
&gt; +        for caching a cairo path so that it can be saved and restored while doing other operations.
&gt; +        (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate): Intialize the
&gt; +        saved path to 0.
&gt; +
&gt;  2010-07-08  Jon Honeycutt  &lt;jhoneycutt@apple.com&gt;
&gt;  
&gt;          Missing plug-ins may cause an assertion failure.
&gt; diff --git a/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp b/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
&gt; index 8b62267b365e959e67727e92f7fff614a0d1f5a7..5931039787085b71387e8e4cfa3358642d489428 100644
&gt; --- a/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
&gt; +++ b/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
&gt; @@ -143,6 +143,25 @@ static inline void copyContextProperties(cairo_t* srcCr, cairo_t* dstCr)
&gt;      cairo_set_fill_rule(dstCr, cairo_get_fill_rule(srcCr));
&gt;  }
&gt;  
&gt; +void GraphicsContextPlatformPrivate::saveCairoPath()
&gt; +{
&gt; +    if (m_savedCairoPath)
&gt; +        cairo_path_destroy(m_savedCairoPath);
&gt; +    m_savedCairoPath = cairo_copy_path(cr);
&gt; +    cairo_new_path(cr);
&gt; +}
&gt; +
&gt; +void GraphicsContextPlatformPrivate::restoreCairoPath()
&gt; +{
&gt; +    if (!m_savedCairoPath)
&gt; +        return;
&gt; +
&gt; +    cairo_new_path(cr);
&gt; +    cairo_append_path(cr, m_savedCairoPath);
&gt; +    cairo_path_destroy(m_savedCairoPath);
&gt; +    m_savedCairoPath = 0;
&gt; +}
&gt; +
&gt;  void GraphicsContext::calculateShadowBufferDimensions(IntSize&amp; shadowBufferSize, FloatRect&amp; shadowRect, float&amp; kernelSize, const FloatRect&amp; sourceRect, const FloatSize&amp; shadowSize, float shadowBlur)
&gt;  {
&gt;  #if ENABLE(FILTERS)
&gt; @@ -249,6 +268,7 @@ void GraphicsContext::drawRect(const IntRect&amp; rect)
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt;  
&gt;      if (fillColor().alpha())
&gt;          fillRectSourceOver(cr, rect, fillColor());
&gt; @@ -263,6 +283,7 @@ void GraphicsContext::drawRect(const IntRect&amp; rect)
&gt;      }
&gt;  
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  // This is only used to draw borders.
&gt; @@ -277,6 +298,7 @@ void GraphicsContext::drawLine(const IntPoint&amp; point1, const IntPoint&amp; point2)
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt;  
&gt;      float width = strokeThickness();
&gt;      if (width &lt; 1)
&gt; @@ -354,6 +376,7 @@ void GraphicsContext::drawLine(const IntPoint&amp; point1, const IntPoint&amp; point2)
&gt;  
&gt;      cairo_stroke(cr);
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  // This method is only used to draw the little circles used in lists.
&gt; @@ -364,6 +387,7 @@ void GraphicsContext::drawEllipse(const IntRect&amp; rect)
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt;      float yRadius = .5 * rect.height();
&gt;      float xRadius = .5 * rect.width();
&gt;      cairo_translate(cr, rect.x() + xRadius, rect.y() + yRadius);
&gt; @@ -382,7 +406,7 @@ void GraphicsContext::drawEllipse(const IntRect&amp; rect)
&gt;          cairo_stroke(cr);
&gt;      }
&gt;  
&gt; -    cairo_new_path(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::strokeArc(const IntRect&amp; rect, int startAngle, int angleSpan)
&gt; @@ -404,6 +428,7 @@ void GraphicsContext::strokeArc(const IntRect&amp; rect, int startAngle, int angleSp
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt;  
&gt;      if (w != h)
&gt;          cairo_scale(cr, 1., scaleFactor);
&gt; @@ -469,6 +494,7 @@ void GraphicsContext::strokeArc(const IntRect&amp; rect, int startAngle, int angleSp
&gt;  
&gt;      cairo_stroke(cr);
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points, bool shouldAntialias)
&gt; @@ -480,8 +506,9 @@ void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points
&gt;          return;
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt; -
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      cairo_set_antialias(cr, shouldAntialias ? CAIRO_ANTIALIAS_DEFAULT : CAIRO_ANTIALIAS_NONE);
&gt;      cairo_move_to(cr, points[0].x(), points[0].y());
&gt;      for (size_t i = 1; i &lt; npoints; i++)
&gt; @@ -502,6 +529,7 @@ void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points
&gt;  
&gt;      cairo_new_path(cr);
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::clipConvexPolygon(size_t numPoints, const FloatPoint* points)
&gt; @@ -563,8 +591,14 @@ void GraphicsContext::fillRect(const FloatRect&amp; rect)
&gt;          return;
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt; +    cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      cairo_rectangle(cr, rect.x(), rect.y(), rect.width(), rect.height());
&gt;      fillPath();
&gt; +
&gt; +    cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  static void drawBorderlessRectShadow(GraphicsContext* context, const FloatRect&amp; rect, const Color&amp; rectColor)
&gt; @@ -596,9 +630,16 @@ void GraphicsContext::fillRect(const FloatRect&amp; rect, const Color&amp; color, ColorS
&gt;      if (paintingDisabled())
&gt;          return;
&gt;  
&gt; +    cairo_t* cr = m_data-&gt;cr;
&gt; +    cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      drawBorderlessRectShadow(this, rect, color);
&gt;      if (color.alpha())
&gt;          fillRectSourceOver(m_data-&gt;cr, rect, color);
&gt; +
&gt; +    cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::clip(const FloatRect&amp; rect)
&gt; @@ -607,12 +648,16 @@ void GraphicsContext::clip(const FloatRect&amp; rect)
&gt;          return;
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      cairo_rectangle(cr, rect.x(), rect.y(), rect.width(), rect.height());
&gt;      cairo_fill_rule_t savedFillRule = cairo_get_fill_rule(cr);
&gt;      cairo_set_fill_rule(cr, CAIRO_FILL_RULE_WINDING);
&gt;      cairo_clip(cr);
&gt;      cairo_set_fill_rule(cr, savedFillRule);
&gt;      m_data-&gt;clip(rect);
&gt; +
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::clipPath(WindRule clipRule)
&gt; @@ -623,6 +668,7 @@ void GraphicsContext::clipPath(WindRule clipRule)
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt;      cairo_set_fill_rule(cr, clipRule == RULE_EVENODD ? CAIRO_FILL_RULE_EVEN_ODD : CAIRO_FILL_RULE_WINDING);
&gt;      cairo_clip(cr);
&gt; +    cairo_new_path(cr);
&gt;  }
&gt;  
&gt;  void GraphicsContext::drawFocusRing(const Vector&lt;Path&gt;&amp; paths, int width, int offset, const Color&amp; color)
&gt; @@ -639,6 +685,7 @@ void GraphicsContext::drawFocusRing(const Vector&lt;IntRect&gt;&amp; rects, int width, int
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt;      cairo_push_group(cr);
&gt;      cairo_new_path(cr);
&gt;  
&gt; @@ -691,6 +738,7 @@ void GraphicsContext::drawFocusRing(const Vector&lt;IntRect&gt;&amp; rects, int width, int
&gt;      cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
&gt;      cairo_paint(cr);
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::drawLineForText(const IntPoint&amp; origin, int width, bool printing)
&gt; @@ -719,6 +767,7 @@ void GraphicsContext::drawLineForMisspellingOrBadGrammar(const IntPoint&amp; origin,
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt;  
&gt;      // Convention is green for grammar, red for spelling
&gt;      // These need to become configurable
&gt; @@ -735,6 +784,7 @@ void GraphicsContext::drawLineForMisspellingOrBadGrammar(const IntPoint&amp; origin,
&gt;  #endif
&gt;  
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  FloatRect GraphicsContext::roundToDevicePixels(const FloatRect&amp; frect)
&gt; @@ -844,6 +894,8 @@ void GraphicsContext::addInnerRoundedRectClip(const IntRect&amp; rect, int thickness
&gt;      if (paintingDisabled())
&gt;          return;
&gt;  
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      clip(rect);
&gt;  
&gt;      Path p;
&gt; @@ -860,6 +912,8 @@ void GraphicsContext::addInnerRoundedRectClip(const IntRect&amp; rect, int thickness
&gt;      cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD);
&gt;      cairo_clip(cr);
&gt;      cairo_set_fill_rule(cr, savedFillRule);
&gt; +
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::clipToImageBuffer(const FloatRect&amp; rect, const ImageBuffer* imageBuffer)
&gt; @@ -949,12 +1003,15 @@ void GraphicsContext::clearRect(const FloatRect&amp; rect)
&gt;          return;
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt; -
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      cairo_rectangle(cr, rect.x(), rect.y(), rect.width(), rect.height());
&gt;      cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR);
&gt;      cairo_fill(cr);
&gt; +
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::strokeRect(const FloatRect&amp; rect, float width)
&gt; @@ -964,10 +1021,14 @@ void GraphicsContext::strokeRect(const FloatRect&amp; rect, float width)
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt;      cairo_save(cr);
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      cairo_rectangle(cr, rect.x(), rect.y(), rect.width(), rect.height());
&gt;      cairo_set_line_width(cr, width);
&gt;      strokePath();
&gt; +
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::setLineCap(LineCap lineCap)
&gt; @@ -1104,6 +1165,8 @@ void GraphicsContext::clip(const Path&amp; path)
&gt;          return;
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      cairo_path_t* p = cairo_copy_path(path.platformPath()-&gt;m_cr);
&gt;      cairo_append_path(cr, p);
&gt;      cairo_path_destroy(p);
&gt; @@ -1112,6 +1175,8 @@ void GraphicsContext::clip(const Path&amp; path)
&gt;      cairo_clip(cr);
&gt;      cairo_set_fill_rule(cr, savedFillRule);
&gt;      m_data-&gt;clip(path);
&gt; +
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::canvasClip(const Path&amp; path)
&gt; @@ -1125,15 +1190,18 @@ void GraphicsContext::clipOut(const Path&amp; path)
&gt;          return;
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt; +    m_data-&gt;saveCairoPath();
&gt; +    cairo_fill_rule_t savedFillRule = cairo_get_fill_rule(cr);
&gt; +
&gt;      double x1, y1, x2, y2;
&gt;      cairo_clip_extents(cr, &amp;x1, &amp;y1, &amp;x2, &amp;y2);
&gt;      cairo_rectangle(cr, x1, y1, x2 - x1, y2 - y1);
&gt;      addPath(path);
&gt; -
&gt; -    cairo_fill_rule_t savedFillRule = cairo_get_fill_rule(cr);
&gt;      cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD);
&gt;      cairo_clip(cr);
&gt; +
&gt;      cairo_set_fill_rule(cr, savedFillRule);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::rotate(float radians)
&gt; @@ -1160,14 +1228,18 @@ void GraphicsContext::clipOut(const IntRect&amp; r)
&gt;          return;
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt; +    m_data-&gt;saveCairoPath();
&gt; +    cairo_fill_rule_t savedFillRule = cairo_get_fill_rule(cr);
&gt; +
&gt;      double x1, y1, x2, y2;
&gt;      cairo_clip_extents(cr, &amp;x1, &amp;y1, &amp;x2, &amp;y2);
&gt;      cairo_rectangle(cr, x1, y1, x2 - x1, y2 - y1);
&gt;      cairo_rectangle(cr, r.x(), r.y(), r.width(), r.height());
&gt; -    cairo_fill_rule_t savedFillRule = cairo_get_fill_rule(cr);
&gt;      cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD);
&gt;      cairo_clip(cr);
&gt; +
&gt;      cairo_set_fill_rule(cr, savedFillRule);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  void GraphicsContext::clipOutEllipseInRect(const IntRect&amp; r)
&gt; @@ -1186,13 +1258,17 @@ void GraphicsContext::fillRoundedRect(const IntRect&amp; r, const IntSize&amp; topLeft,
&gt;          return;
&gt;  
&gt;      cairo_t* cr = m_data-&gt;cr;
&gt; +    m_data-&gt;saveCairoPath();
&gt; +
&gt;      cairo_save(cr);
&gt;      beginPath();
&gt;      addPath(Path::createRoundedRectangle(r, topLeft, topRight, bottomLeft, bottomRight));
&gt;      setColor(cr, color);
&gt;      drawPathShadow(this, m_common, true, false);
&gt;      cairo_fill(cr);
&gt; +
&gt;      cairo_restore(cr);
&gt; +    m_data-&gt;restoreCairoPath();
&gt;  }
&gt;  
&gt;  #if PLATFORM(GTK)
&gt; diff --git a/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h b/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h
&gt; index 5e388324dcd6fb1e71db1ea582be69743a0b8eb3..b6c07e7ffba71291cf7279f2bb22b89c9ea31d85 100644
&gt; --- a/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h
&gt; +++ b/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h
&gt; @@ -45,6 +45,7 @@ class GraphicsContextPlatformPrivate {
&gt;  public:
&gt;      GraphicsContextPlatformPrivate()
&gt;          : cr(0)
&gt; +        , m_savedCairoPath(0)
&gt;  #if PLATFORM(GTK)
&gt;          , expose(0)
&gt;  #elif PLATFORM(WIN)
&gt; @@ -52,6 +53,7 @@ public:
&gt;          , m_hdc(0)
&gt;          , m_transparencyCount(0)
&gt;          , m_shouldIncludeChildWindows(false)
&gt; +        , m_shouldIncludeChildWindows(false)
&gt;  #endif
&gt;      {
&gt;      }
&gt; @@ -61,6 +63,9 @@ public:
&gt;          cairo_destroy(cr);
&gt;      }
&gt;  
&gt; +    void saveCairoPath();
&gt; +    void restoreCairoPath();
&gt; +
&gt;  #if PLATFORM(WIN)
&gt;      // On Windows, we need to update the HDC for form controls to draw in the right place.
&gt;      void save();
&gt; @@ -95,6 +100,7 @@ public:
&gt;  
&gt;      cairo_t* cr;
&gt;      Vector&lt;float&gt; layers;
&gt; +    cairo_path_t* m_savedCairoPath;
&gt;  
&gt;  #if PLATFORM(GTK)
&gt;      GdkEventExpose* expose;

WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:149
 +          cairo_path_destroy(m_savedCairoPath);
Do we know that we will only ever be one level deep?  Could the &apos;saveCairoPath&apos; be hit during a recursive call to the graphic context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257456</commentid>
    <comment_count>3</comment_count>
      <attachid>61084</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-28 17:06:54 -0700</bug_when>
    <thetext>Comment on attachment 61084
Patch for this issue

Krit has suggested that I could do this in a way that didn&apos;t affect the performance of some of the hotter parts of the GraphicsContext (drawRect, etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257496</commentid>
    <comment_count>4</comment_count>
      <attachid>62904</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-28 18:05:04 -0700</bug_when>
    <thetext>Created attachment 62904
Patch with fewer performance implications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257565</commentid>
    <comment_count>5</comment_count>
      <attachid>62904</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-29 00:08:10 -0700</bug_when>
    <thetext>Comment on attachment 62904
Patch with fewer performance implications

You forgot some context transformations like scale and tranlate. They need to do path transformation similar to ctm transformation.

Also did you check, if save and restore infulence the path transformations as well? You can test this with HTML Canvas:
context-&gt;translate(10,10);
context-&gt;moveTo(0,0);
context-&gt;lineTo(100,0);
context-&gt;save();
context-&gt;scale(0,5);
context-&gt;lineTo(100,100);
context-&gt;restore();
context-&gt;lineTo(0,100);
context-&gt;closePath;
context-&gt;stroke();

Compare the result with firefox and you&apos;ll see if you need extra logic for save/restore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257566</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-29 00:09:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 62904 [details])
&gt; You forgot some context transformations like scale and tranlate. They need to do path transformation similar to ctm transformation.
&gt; 
&gt; Also did you check, if save and restore infulence the path transformations as well? You can test this with HTML Canvas:
&gt; context-&gt;translate(10,10);
&gt; context-&gt;moveTo(0,0);
&gt; context-&gt;lineTo(100,0);
&gt; context-&gt;save();
&gt; context-&gt;scale(0,5);
&gt; context-&gt;lineTo(100,100);
&gt; context-&gt;restore();
&gt; context-&gt;lineTo(0,100);
&gt; context-&gt;closePath;
&gt; context-&gt;stroke();
&gt; 
&gt; Compare the result with firefox and you&apos;ll see if you need extra logic for save/restore.

haha, the scale should be 0.5 not 0,5 :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257841</commentid>
    <comment_count>7</comment_count>
      <attachid>62982</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-29 13:40:09 -0700</bug_when>
    <thetext>Created attachment 62982
Patch which instead handles the path transformation matrix in addPath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257856</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-29 13:53:29 -0700</bug_when>
    <thetext>Per our discussion on IRC, we should only need to update the transformation right before adding the path to the m_pendingPath context. This means there is a little bit of overhead to calling addPath, but the benefit is that there is no extra overhead for changing the transformation matrix at other points in the class. This seems like an acceptable trade-off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257877</commentid>
    <comment_count>9</comment_count>
      <attachid>62982</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-29 14:21:09 -0700</bug_when>
    <thetext>Comment on attachment 62982
Patch which instead handles the path transformation matrix in addPath

Great patch. Just one note:

&gt; +    cairo_t* pathContext = m_data-&gt;m_pendingPath.m_cr;
&gt; +    cairo_path_t* cairoPath = cairo_copy_path(pathContext);
&gt; +    cairo_new_path(pathContext);
&gt; +    cairo_append_path(cr, cairoPath);
&gt; +    cairo_path_destroy(cairoPath);

Cany ou move this into a static function and add a comment about the intention?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257901</commentid>
    <comment_count>10</comment_count>
      <attachid>62995</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-29 15:02:04 -0700</bug_when>
    <thetext>Created attachment 62995
Updated patch with Dirk&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257919</commentid>
    <comment_count>11</comment_count>
      <attachid>62995</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-29 15:27:14 -0700</bug_when>
    <thetext>Comment on attachment 62995
Updated patch with Dirk&apos;s suggestions

You don&apos;t need to write the comment three times. It&apos;s ok to write it once right before
+static void setPathOnCairoContext(cairo_t* to, cairo_t* from)
:-)

I give r+ but please change the style to the suggestion befor landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257958</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-29 16:18:12 -0700</bug_when>
    <thetext>Committed r64318: &lt;http://trac.webkit.org/changeset/64318&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257974</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-29 16:44:32 -0700</bug_when>
    <thetext>Reverted r64318 for reason:

This change broke many tests.

Committed r64322: &lt;http://trac.webkit.org/changeset/64322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258011</commentid>
    <comment_count>14</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-29 18:03:24 -0700</bug_when>
    <thetext>It turns out that fillRect/strokeRect relied on fillPath/strokeRect and should not have. I&apos;ve moved the common logic to helper functions fill/strokeCurrentCairoPath and now fillRect, strokeRect, fillPath and strokePath all call those helpers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258013</commentid>
    <comment_count>15</comment_count>
      <attachid>63018</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-29 18:04:48 -0700</bug_when>
    <thetext>Created attachment 63018
Patch which also removes invalid calls to strokePath and fillPath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258064</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-29 22:37:42 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=63018) [details]
&gt; Patch which also removes invalid calls to strokePath and fillPath

Are you sure that they are invalid? IIRC they are just used from HTML Canvas and should be handled similar like Paths, means replace the current Path. Doesn&apos;t Cg replace the current path with this rect?
You can test it again with HTML Canvas:

canvas-&gt;moveTo(10,10);
canvas-&gt;lineTo(110,10);
canvas-&gt;lineTo(110,110);
canvas-&gt;lineTo(10,110);
canvas-&gt;closePath();
canvas-&gt;strokeRect(120,10,100,100);
canvas-&gt;stroke();

If just see the right rect, Safari replaces the currenPath with the rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258065</commentid>
    <comment_count>17</comment_count>
      <attachid>63018</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-29 22:46:28 -0700</bug_when>
    <thetext>Comment on attachment 63018
Patch which also removes invalid calls to strokePath and fillPath

Ah forgot that Canvas handles it&apos;s path itself :-/ 
So your way is possibly faster for strokeRect/fillRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259772</commentid>
    <comment_count>18</comment_count>
      <attachid>63018</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-08-03 17:52:22 -0700</bug_when>
    <thetext>Comment on attachment 63018
Patch which also removes invalid calls to strokePath and fillPath

Landed http://trac.webkit.org/changeset/64318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262608</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-10 03:55:03 -0700</bug_when>
    <thetext>Not usre if this patch might have introduce a regression. Some strokes on paths (like in http://dev.w3.org/SVG/profiles/1.1F2/test/harness/htmlObject/paths-data-01-t.html) don&apos;t get antialiased. E.g at the black stroke of the yellow circle, or the blue half-circle.
Martin, can you investigate on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262708</commentid>
    <comment_count>20</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-08-10 09:22:32 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; E.g at the black stroke of the yellow circle, or the blue half-circle.

Hrm. These still look anti-aliased to me on a recent GTK+ build.
Do you have any further tips for reproducing this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262716</commentid>
    <comment_count>21</comment_count>
      <attachid>64019</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-10 09:42:09 -0700</bug_when>
    <thetext>Created attachment 64019
Screenshot

A screenshot of the rendering. On the left hand side an older build, on the right hand side trunk. Compare the borders. You can see it best on the shape with the red stroke and on the blue filled stroke. The anti-aliasing is off. But it doesn&apos;t seem the case for the two unfilled shapes. Maybe a problem with shapes, that get filled and stroked?!? Not sure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61084</attachid>
            <date>2010-07-09 13:51:17 -0700</date>
            <delta_ts>2010-07-28 18:05:01 -0700</delta_ts>
            <desc>Patch for this issue</desc>
            <filename>bug-41732-20100709135115.patch</filename>
            <type>text/plain</type>
            <size>14717</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGM3ZjRhNmU0NDFhYTgzZmFjNDgzZGRhNmFiZWRiZmZhYmU2YTIyNS4uYmFlZjUwNzI4NDhmODVi
ZmJmZmI2ZGYzNTRjYzM4MzJjZGQ4NWIwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0wNy0wOSAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQnJpbmcgYmVoYXZpb3Igb2YgcGF0
aHMgb24gdGhlIENhaXJvIEdyYXBoaWNzQ29udGV4dCBpbnRvIGxpbmUgd2l0aCB0aGUgQ29yZUdy
YXBoaWNzIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxNzMyCisKKyAgICAgICAgTWFrZSBkcmF3aW5nIHJvdXRpbmVzIG9uIHRoZSBDYWlybyBn
cmFwaGljcyBjb250ZXh0IGluZGVwZW5kZW50IGZyb20gcGF0aCBtYW5pcHVsYXRpb24uCisgICAg
ICAgIFRoaXMgbWVhbnMgdGhhdCBkcmF3aW5nIHNoYXBlcyBkb2VzIG5vdCBhZmZlY3QgaW4gYW55
IHdheSBwYXRocyBhZGRlZCB0byB0aGUgY29udGV4dCB2aWEKKyAgICAgICAgYWRkUGF0aC4gRnVy
dGhlcm1vcmUsIHBhdGhzIGFkZGVkIHRvIHRoZSBjb250ZXh0IGRvIG5vdCBhZmZlY3Qgc2hhcGVz
IGRyYXduIHZpYSBtZXRob2RzCisgICAgICAgIHN1Y2ggYXMgZHJhd0VsbGlwc2UuIGNhaXJvX3Nh
dmUoKSBhbmQgY2Fpcm9fcmVzdG9yZSgpIGRvIG5vdCBhZmZlY3QgYW55IHBhdGggdGhhdCBpcyBv
bgorICAgICAgICB0aGUgY2Fpcm8gY29udGV4dCwgc28gd2UgZG8gdGhpcyBtYW51YWxseS4KKwor
ICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIG5lY2Vzc2FyeSB0byBjbG9zZSBidWcgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMzA4CisgICAgICAgIHNvIHRlc3RzIGZv
ciB0aGF0IGlzc3VlIHdpbGwgdGVzdCB0aGlzIGZpeC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c2F2ZUNhaXJvUGF0aCk6IEFkZGVkLiBU
aGlzIG1ldGhvZAorICAgICAgICBzYXZlcyB0aGUgY3VycmVudCBjYWlybyBwYXRoIHRvIGEgbWVt
YmVyIHZhcmlhYmxlIGFuZCBiZWdpbnMgYSBuZXcgcGF0aCBvbgorICAgICAgICB0aGUgY29udGV4
dC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVz
dG9yZUNhaXJvUGF0aCk6IEFkZGVkLiBSZXN0b3JlcyB0aGUKKyAgICAgICAgc2F2ZWQgY2Fpcm8g
cGF0aCB0byB0aGUgY29udGV4dCBpZiBvbmUgZXhpc3RzLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3UmVjdCk6IEd1YXJkIHRoZSBwcmV2aW91cyBwYXRoIG9uIHRoZSBj
YWlybyBjb250ZXh0IGJ5CisgICAgICAgIGNhbGxpbmcgdGhlIHNhdmVDYWlyb1BhdGgvcmVzdG9y
ZUNhaXJvUGF0aCBwYWlyLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
TGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3RWxs
aXBzZSk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFy
Yyk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQ
b2x5Z29uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXApOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvck1pc3Nw
ZWxsaW5nT3JCYWRHcmFtbWFyKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOiBBZGRl
ZCBhIG1lbWJlciB2YXJpYWJsZQorICAgICAgICBmb3IgY2FjaGluZyBhIGNhaXJvIHBhdGggc28g
dGhhdCBpdCBjYW4gYmUgc2F2ZWQgYW5kIHJlc3RvcmVkIHdoaWxlIGRvaW5nIG90aGVyIG9wZXJh
dGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6IEludGlhbGl6ZSB0aGUKKyAgICAgICAg
c2F2ZWQgcGF0aCB0byAwLgorCiAyMDEwLTA3LTA4ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0
dEBhcHBsZS5jb20+CiAKICAgICAgICAgTWlzc2luZyBwbHVnLWlucyBtYXkgY2F1c2UgYW4gYXNz
ZXJ0aW9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDhiNjIyNjdiMzY1ZTk1OWU2Nzcy
N2U5MmY3ZmZmNjE0YTBkMWY1YTcuLjU5MzEwMzk3ODcwODViNzEzODdlOGU0Y2ZhMzM1ODY0MmQ0
ODk0MjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xNDMsNiArMTQzLDI1IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb3B5Q29udGV4dFByb3BlcnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRz
dENyKQogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoZHN0Q3IsIGNhaXJvX2dldF9maWxsX3J1bGUo
c3JjQ3IpKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnNhdmVD
YWlyb1BhdGgoKQoreworICAgIGlmIChtX3NhdmVkQ2Fpcm9QYXRoKQorICAgICAgICBjYWlyb19w
YXRoX2Rlc3Ryb3kobV9zYXZlZENhaXJvUGF0aCk7CisgICAgbV9zYXZlZENhaXJvUGF0aCA9IGNh
aXJvX2NvcHlfcGF0aChjcik7CisgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZUNhaXJvUGF0aCgpCit7CisgICAg
aWYgKCFtX3NhdmVkQ2Fpcm9QYXRoKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWlyb19uZXdf
cGF0aChjcik7CisgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY3IsIG1fc2F2ZWRDYWlyb1BhdGgpOwor
ICAgIGNhaXJvX3BhdGhfZGVzdHJveShtX3NhdmVkQ2Fpcm9QYXRoKTsKKyAgICBtX3NhdmVkQ2Fp
cm9QYXRoID0gMDsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1
ZmZlckRpbWVuc2lvbnMoSW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRSZWN0JiBzaGFk
b3dSZWN0LCBmbG9hdCYga2VybmVsU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBGbG9hdFNpemUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpCiB7CiAjaWYgRU5B
QkxFKEZJTFRFUlMpCkBAIC0yNDksNiArMjY4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+
Y3I7CiAgICAgY2Fpcm9fc2F2ZShjcik7CisgICAgbV9kYXRhLT5zYXZlQ2Fpcm9QYXRoKCk7CiAK
ICAgICBpZiAoZmlsbENvbG9yKCkuYWxwaGEoKSkKICAgICAgICAgZmlsbFJlY3RTb3VyY2VPdmVy
KGNyLCByZWN0LCBmaWxsQ29sb3IoKSk7CkBAIC0yNjMsNiArMjgzLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgfQogCiAgICAgY2Fp
cm9fcmVzdG9yZShjcik7CisgICAgbV9kYXRhLT5yZXN0b3JlQ2Fpcm9QYXRoKCk7CiB9CiAKIC8v
IFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycy4KQEAgLTI3Nyw2ICsyOTgsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50MSwgY29u
c3QgSW50UG9pbnQmIHBvaW50MikKIAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAg
ICBjYWlyb19zYXZlKGNyKTsKKyAgICBtX2RhdGEtPnNhdmVDYWlyb1BhdGgoKTsKIAogICAgIGZs
b2F0IHdpZHRoID0gc3Ryb2tlVGhpY2tuZXNzKCk7CiAgICAgaWYgKHdpZHRoIDwgMSkKQEAgLTM1
NCw2ICszNzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9p
bnQmIHBvaW50MSwgY29uc3QgSW50UG9pbnQmIHBvaW50MikKIAogICAgIGNhaXJvX3N0cm9rZShj
cik7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CisgICAgbV9kYXRhLT5yZXN0b3JlQ2Fpcm9QYXRo
KCk7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgdXNlZCB0byBkcmF3IHRoZSBsaXR0bGUg
Y2lyY2xlcyB1c2VkIGluIGxpc3RzLgpAQCAtMzY0LDYgKzM4Nyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RWxsaXBzZShjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAgY2Fpcm9fdCog
Y3IgPSBtX2RhdGEtPmNyOwogICAgIGNhaXJvX3NhdmUoY3IpOworICAgIG1fZGF0YS0+c2F2ZUNh
aXJvUGF0aCgpOwogICAgIGZsb2F0IHlSYWRpdXMgPSAuNSAqIHJlY3QuaGVpZ2h0KCk7CiAgICAg
ZmxvYXQgeFJhZGl1cyA9IC41ICogcmVjdC53aWR0aCgpOwogICAgIGNhaXJvX3RyYW5zbGF0ZShj
ciwgcmVjdC54KCkgKyB4UmFkaXVzLCByZWN0LnkoKSArIHlSYWRpdXMpOwpAQCAtMzgyLDcgKzQw
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RWxsaXBzZShjb25zdCBJbnRSZWN0JiBy
ZWN0KQogICAgICAgICBjYWlyb19zdHJva2UoY3IpOwogICAgIH0KIAotICAgIGNhaXJvX25ld19w
YXRoKGNyKTsKKyAgICBtX2RhdGEtPnJlc3RvcmVDYWlyb1BhdGgoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmds
ZSwgaW50IGFuZ2xlU3BhbikKQEAgLTQwNCw2ICs0MjgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5n
bGVTcAogCiAgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNhaXJvX3NhdmUoY3Ip
OworICAgIG1fZGF0YS0+c2F2ZUNhaXJvUGF0aCgpOwogCiAgICAgaWYgKHcgIT0gaCkKICAgICAg
ICAgY2Fpcm9fc2NhbGUoY3IsIDEuLCBzY2FsZUZhY3Rvcik7CkBAIC00NjksNiArNDk0LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQg
c3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKIAogICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgY2Fp
cm9fcmVzdG9yZShjcik7CisgICAgbV9kYXRhLT5yZXN0b3JlQ2Fpcm9QYXRoKCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnBvaW50cywgY29u
c3QgRmxvYXRQb2ludCogcG9pbnRzLCBib29sIHNob3VsZEFudGlhbGlhcykKQEAgLTQ4MCw4ICs1
MDYsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHlnb24oc2l6ZV90IG5w
b2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cwogICAgICAgICByZXR1cm47CiAKICAgICBj
YWlyb190KiBjciA9IG1fZGF0YS0+Y3I7Ci0KICAgICBjYWlyb19zYXZlKGNyKTsKKyAgICBtX2Rh
dGEtPnNhdmVDYWlyb1BhdGgoKTsKKwogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY3IsIHNob3Vs
ZEFudGlhbGlhcyA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFTX05P
TkUpOwogICAgIGNhaXJvX21vdmVfdG8oY3IsIHBvaW50c1swXS54KCksIHBvaW50c1swXS55KCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbnBvaW50czsgaSsrKQpAQCAtNTAyLDYgKzUy
OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnBv
aW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzCiAKICAgICBjYWlyb19uZXdfcGF0aChjcik7
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CisgICAgbV9kYXRhLT5yZXN0b3JlQ2Fpcm9QYXRoKCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVt
UG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMpCkBAIC01NjMsOCArNTkxLDE0IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb19z
YXZlKGNyKTsKKyAgICBtX2RhdGEtPnNhdmVDYWlyb1BhdGgoKTsKKwogICAgIGNhaXJvX3JlY3Rh
bmdsZShjciwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OwogICAgIGZpbGxQYXRoKCk7CisKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKKyAgICBtX2RhdGEt
PnJlc3RvcmVDYWlyb1BhdGgoKTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd0JvcmRlcmxlc3NSZWN0
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgcmVjdENvbG9yKQpAQCAtNTk2LDkgKzYzMCwxNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yUwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb19zYXZlKGNyKTsKKyAg
ICBtX2RhdGEtPnNhdmVDYWlyb1BhdGgoKTsKKwogICAgIGRyYXdCb3JkZXJsZXNzUmVjdFNoYWRv
dyh0aGlzLCByZWN0LCBjb2xvcik7CiAgICAgaWYgKGNvbG9yLmFscGhhKCkpCiAgICAgICAgIGZp
bGxSZWN0U291cmNlT3ZlcihtX2RhdGEtPmNyLCByZWN0LCBjb2xvcik7CisKKyAgICBjYWlyb19y
ZXN0b3JlKGNyKTsKKyAgICBtX2RhdGEtPnJlc3RvcmVDYWlyb1BhdGgoKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtNjA3LDEyICs2
NDgsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogICAgICAgICByZXR1cm47CiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAg
bV9kYXRhLT5zYXZlQ2Fpcm9QYXRoKCk7CisKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3Qu
eCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19m
aWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CiAgICAg
Y2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwogICAgIGNh
aXJvX2NsaXAoY3IpOwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHNhdmVkRmlsbFJ1bGUp
OwogICAgIG1fZGF0YS0+Y2xpcChyZWN0KTsKKworICAgIG1fZGF0YS0+cmVzdG9yZUNhaXJvUGF0
aCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgoV2luZFJ1bGUgY2xpcFJ1
bGUpCkBAIC02MjMsNiArNjY4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKFdp
bmRSdWxlIGNsaXBSdWxlKQogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAgICBjYWly
b19zZXRfZmlsbF9ydWxlKGNyLCBjbGlwUnVsZSA9PSBSVUxFX0VWRU5PREQgPyBDQUlST19GSUxM
X1JVTEVfRVZFTl9PREQgOiBDQUlST19GSUxMX1JVTEVfV0lORElORyk7CiAgICAgY2Fpcm9fY2xp
cChjcik7CisgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8UGF0aD4mIHBhdGhzLCBpbnQgd2lkdGgsIGlu
dCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTYzOSw2ICs2ODUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3Rz
LCBpbnQgd2lkdGgsIGludAogCiAgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNh
aXJvX3NhdmUoY3IpOworICAgIG1fZGF0YS0+c2F2ZUNhaXJvUGF0aCgpOwogICAgIGNhaXJvX3B1
c2hfZ3JvdXAoY3IpOwogICAgIGNhaXJvX25ld19wYXRoKGNyKTsKIApAQCAtNjkxLDYgKzczOCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBD
QUlST19PUEVSQVRPUl9PVkVSKTsKICAgICBjYWlyb19wYWludChjcik7CiAgICAgY2Fpcm9fcmVz
dG9yZShjcik7CisgICAgbV9kYXRhLT5yZXN0b3JlQ2Fpcm9QYXRoKCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgSW50UG9pbnQmIG9yaWdpbiwgaW50
IHdpZHRoLCBib29sIHByaW50aW5nKQpAQCAtNzE5LDYgKzc2Nyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZUZvck1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGNvbnN0IEludFBvaW50
JiBvcmlnaW4sCiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAgICAgY2Fpcm9fc2F2
ZShjcik7CisgICAgbV9kYXRhLT5zYXZlQ2Fpcm9QYXRoKCk7CiAKICAgICAvLyBDb252ZW50aW9u
IGlzIGdyZWVuIGZvciBncmFtbWFyLCByZWQgZm9yIHNwZWxsaW5nCiAgICAgLy8gVGhlc2UgbmVl
ZCB0byBiZWNvbWUgY29uZmlndXJhYmxlCkBAIC03MzUsNiArNzg0LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdMaW5lRm9yTWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoY29uc3QgSW50UG9p
bnQmIG9yaWdpbiwKICNlbmRpZgogCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CisgICAgbV9kYXRh
LT5yZXN0b3JlQ2Fpcm9QYXRoKCk7CiB9CiAKIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJv
dW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiBmcmVjdCkKQEAgLTg0NCw2ICs4OTQs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3Qg
SW50UmVjdCYgcmVjdCwgaW50IHRoaWNrbmVzcwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAorICAgIG1fZGF0YS0+c2F2ZUNhaXJvUGF0aCgpOworCiAgICAg
Y2xpcChyZWN0KTsKIAogICAgIFBhdGggcDsKQEAgLTg2MCw2ICs5MTIsOCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwg
aW50IHRoaWNrbmVzcwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIENBSVJPX0ZJTExfUlVM
RV9FVkVOX09ERCk7CiAgICAgY2Fpcm9fY2xpcChjcik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVs
ZShjciwgc2F2ZWRGaWxsUnVsZSk7CisKKyAgICBtX2RhdGEtPnJlc3RvcmVDYWlyb1BhdGgoKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQpAQCAtOTQ5LDEyICsx
MDAzLDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgICAgICByZXR1cm47CiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7
Ci0KICAgICBjYWlyb19zYXZlKGNyKTsKKyAgICBtX2RhdGEtPnNhdmVDYWlyb1BhdGgoKTsKKwog
ICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpOwogICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFU
T1JfQ0xFQVIpOwogICAgIGNhaXJvX2ZpbGwoY3IpOworCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7
CisgICAgbV9kYXRhLT5yZXN0b3JlQ2Fpcm9QYXRoKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgd2lkdGgpCkBAIC05
NjQsMTAgKzEwMjEsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKIAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRh
LT5jcjsKICAgICBjYWlyb19zYXZlKGNyKTsKKyAgICBtX2RhdGEtPnNhdmVDYWlyb1BhdGgoKTsK
KwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCB3aWR0aCk7
CiAgICAgc3Ryb2tlUGF0aCgpOworCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CisgICAgbV9kYXRh
LT5yZXN0b3JlQ2Fpcm9QYXRoKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5l
Q2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTExMDQsNiArMTE2NSw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNh
aXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBtX2RhdGEtPnNhdmVDYWlyb1BhdGgoKTsKKwog
ICAgIGNhaXJvX3BhdGhfdCogcCA9IGNhaXJvX2NvcHlfcGF0aChwYXRoLnBsYXRmb3JtUGF0aCgp
LT5tX2NyKTsKICAgICBjYWlyb19hcHBlbmRfcGF0aChjciwgcCk7CiAgICAgY2Fpcm9fcGF0aF9k
ZXN0cm95KHApOwpAQCAtMTExMiw2ICsxMTc1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXAoY29uc3QgUGF0aCYgcGF0aCkKICAgICBjYWlyb19jbGlwKGNyKTsKICAgICBjYWlyb19zZXRf
ZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKICAgICBtX2RhdGEtPmNsaXAocGF0aCk7CisK
KyAgICBtX2RhdGEtPnJlc3RvcmVDYWlyb1BhdGgoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNhbnZhc0NsaXAoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTExMjUsMTUgKzExOTAsMTggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIG1fZGF0YS0+c2F2
ZUNhaXJvUGF0aCgpOworICAgIGNhaXJvX2ZpbGxfcnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWly
b19nZXRfZmlsbF9ydWxlKGNyKTsKKwogICAgIGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKICAgICBj
YWlyb19jbGlwX2V4dGVudHMoY3IsICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAgICAgY2Fpcm9fcmVj
dGFuZ2xlKGNyLCB4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpOwogICAgIGFkZFBhdGgocGF0aCk7
Ci0KLSAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxf
cnVsZShjcik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX0VW
RU5fT0REKTsKICAgICBjYWlyb19jbGlwKGNyKTsKKwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUo
Y3IsIHNhdmVkRmlsbFJ1bGUpOworICAgIG1fZGF0YS0+cmVzdG9yZUNhaXJvUGF0aCgpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cm90YXRlKGZsb2F0IHJhZGlhbnMpCkBAIC0xMTYwLDE0
ICsxMjI4LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJlY3Qm
IHIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAg
ICBtX2RhdGEtPnNhdmVDYWlyb1BhdGgoKTsKKyAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZp
bGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CisKICAgICBkb3VibGUgeDEsIHkxLCB4
MiwgeTI7CiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNyLCAmeDEsICZ5MSwgJngyLCAmeTIpOwog
ICAgIGNhaXJvX3JlY3RhbmdsZShjciwgeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKTsKICAgICBj
YWlyb19yZWN0YW5nbGUoY3IsIHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsK
LSAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVs
ZShjcik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX0VWRU5f
T0REKTsKICAgICBjYWlyb19jbGlwKGNyKTsKKwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3Is
IHNhdmVkRmlsbFJ1bGUpOworICAgIG1fZGF0YS0+cmVzdG9yZUNhaXJvUGF0aCgpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJblJlY3QoY29uc3QgSW50UmVjdCYg
cikKQEAgLTExODYsMTMgKzEyNTgsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBJbnRSZWN0JiByLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LAogICAgICAg
ICByZXR1cm47CiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgbV9kYXRhLT5z
YXZlQ2Fpcm9QYXRoKCk7CisKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBiZWdpblBhdGgoKTsK
ICAgICBhZGRQYXRoKFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUociwgdG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CiAgICAgc2V0Q29sb3IoY3IsIGNvbG9y
KTsKICAgICBkcmF3UGF0aFNoYWRvdyh0aGlzLCBtX2NvbW1vbiwgdHJ1ZSwgZmFsc2UpOwogICAg
IGNhaXJvX2ZpbGwoY3IpOworCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CisgICAgbV9kYXRhLT5y
ZXN0b3JlQ2Fpcm9QYXRoKCk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZUNhaXJvLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKaW5kZXggNWUzODgzMjRkY2Q2ZmIxZTcxZGIxZWE1
ODJiZTY5NzQzYTBiOGViMy4uYjZjMDdlN2ZmYmE3MTI5MWNmNzI3OWYyYmIyMmI4OWM5ZWEzMWQ4
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaApAQCAtNDUsNiAr
NDUsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgewogcHVibGljOgog
ICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgpCiAgICAgICAgIDogY3IoMCkKKyAg
ICAgICAgLCBtX3NhdmVkQ2Fpcm9QYXRoKDApCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAs
IGV4cG9zZSgwKQogI2VsaWYgUExBVEZPUk0oV0lOKQpAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9oZGMoMCkKICAgICAgICAgLCBtX3RyYW5zcGFyZW5jeUNvdW50KDApCiAg
ICAgICAgICwgbV9zaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKGZhbHNlKQorICAgICAgICAsIG1f
c2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyhmYWxzZSkKICNlbmRpZgogICAgIHsKICAgICB9CkBA
IC02MSw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICAgICAgY2Fpcm9fZGVzdHJveShjcik7CiAgICAg
fQogCisgICAgdm9pZCBzYXZlQ2Fpcm9QYXRoKCk7CisgICAgdm9pZCByZXN0b3JlQ2Fpcm9QYXRo
KCk7CisKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gT24gV2luZG93cywgd2UgbmVlZCB0byB1
cGRhdGUgdGhlIEhEQyBmb3IgZm9ybSBjb250cm9scyB0byBkcmF3IGluIHRoZSByaWdodCBwbGFj
ZS4KICAgICB2b2lkIHNhdmUoKTsKQEAgLTk1LDYgKzEwMCw3IEBAIHB1YmxpYzoKIAogICAgIGNh
aXJvX3QqIGNyOwogICAgIFZlY3RvcjxmbG9hdD4gbGF5ZXJzOworICAgIGNhaXJvX3BhdGhfdCog
bV9zYXZlZENhaXJvUGF0aDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHZGtFdmVudEV4cG9z
ZSogZXhwb3NlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62904</attachid>
            <date>2010-07-28 18:05:04 -0700</date>
            <delta_ts>2010-07-29 13:40:07 -0700</delta_ts>
            <desc>Patch with fewer performance implications</desc>
            <filename>bug-41732-20100728180503.patch</filename>
            <type>text/plain</type>
            <size>9182</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDVmZWQ4MmY0M2U4Yzc2MWU4OWQ2NDViZDE3ZmJjZmQyNWRlNDYzYy4uOTNhYzZkZWM4NjAyNzcz
OGZkZmYzZDllOWI1MjY2MDNiZDA1NTIzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wNy0yOCAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0NhaXJvXSBCcmluZyBiZWhhdmlvciBvZiBw
YXRocyBvbiB0aGUgQ2Fpcm8gR3JhcGhpY3NDb250ZXh0IGludG8gbGluZSB3aXRoIHRoZSBDb3Jl
R3JhcGhpY3MgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDE3MzIKKworICAgICAgICBEbyBub3QgYXBwbHkgcGF0aHMgYWRkZWQgdG8gdGhlIENh
aXJvIEdyYXBoaWNzQ29udGV4dCwgdW50aWwgdGhleSBhcmUgdXNlZC4KKyAgICAgICAgVGhpcyBw
cmV2ZW50cyBkcmF3aW5nIHJvdXRpbmVzIHN1Y2ggYXMgZmlsbFJlY3QgZnJvbSBpbnRlcmFjdGlu
ZyB3aXRoIGFueQorICAgICAgICBwYXRoIGNhbGxlcnMgYXJlIGNvbnN0cnVjdGluZyBvbiB0aGUg
R3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIG5lY2Vzc2FyeSB0
byBjbG9zZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMzA4
CisgICAgICAgICBzbyB0ZXN0cyBmb3IgdGhhdCBpc3N1ZSB3aWxsIHRlc3QgdGhpcyBmaXguCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphZGRQYXRoVG9DYWlyb0NvbnRleHQpOiBBZGRlZC4gQSBo
ZWxwZXIgbWV0aG9kIHdoaWNoIGFkZHMgYSBwYXRoCisgICAgICAgIHRvIGEgbmF0aXZlIENhaXJv
IGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNl
KTogT25seSBjbGVhciB0aGUgQ2Fpcm8gcGF0aCBpZiBjYWlyb19zdHJva2UKKyAgICAgICAgd2Fz
IG5vdCBjYWxsZWQsIGJlY2F1c2UgY2Fpcm9fc3Ryb2tlIGltcGxpY2l0bHkgY2xlYXJzIHRoZSBw
YXRoLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdv
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6
IENvcHkgdGhlIHBhdGggZnJvbSBtX3BlbmRpbmdQYXRoIHRvIHRoZSBjb250ZXh0CisgICAgICAg
IGFuZCBjbGVhciBtX3BlbmRpbmdQYXRoLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIHByZS1l
eGlzdGluZyBjb250ZXh0IHBhdGguCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ZvY3VzUmluZyk6IFVzZSB0aGUgbmV3IGFkZFBhdGhUb0NhaXJvQ29udGV4dCBoZWxwZXIgaW5z
dGVhZAorICAgICAgICBvZiBhZGRQYXRoICh3aGljaCB3aWxsIGJsb3cgYXdheSBhbnkgcGF0aCBj
YWxsZXJzIGFyZSBidWlsZGluZykuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNvbmNhdENUTSk6IFRyYW5zZm9ybSBhbnkgaW4tcHJvZ3Jlc3MgcGF0aCBhcyB3ZWxsLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcCk6
IFVzZSB0aGUgbmV3IGFkZFBhdGhUb0NhaXJvQ29udGV4dCBoZWxwZXIgaW5zdGVhZAorICAgICAg
ICBvZiBhZGRQYXRoICh3aGljaCB3aWxsIGJsb3cgYXdheSBhbnkgcGF0aCBjYWxsZXJzIGFyZSBi
dWlsZGluZykuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGF0aCk6
IENsZWFyIG91dCBtX3BlbmRpbmdQYXRoIGhlcmUgaW5zdGVhZCBvZiB0aGUgbWFpbiBuYXRpdmUg
Y29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkUGF0aCk6IEFk
ZCB0aGUgcGF0aCB0byBtX3BlbmRpbmdQYXRoIGluc3RlYWQgb2YgdGhlIG1haW4gbmF0aXZlIGNv
bnRleHQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQpOiBVc2Ug
dGhlIGFkZFBhdGhUb0NhaXJvQ29udGV4dCBoZWxwZXIgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KTogRGl0dG8gYW5kIHJlbW92ZSBhbiB1
bm5lY2Vzc2FyeSBiZWdpblBhdGggY2FsbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOiBBZGQgYSBuZXcgbV9w
ZW5kaW5nUGF0aCBtZW1iZXIuCisKIDIwMTAtMDctMjggIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJs
YW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAppbmRleCA5NmNkNGVlYzJmODk4ZjkxNzBlMGFkMGNiMGZlYTk0OTQ4ODll
OTgxLi5mYTI3YmJiZjMxZmYxOTdlN2ZiZjQwOTQ4MzBmZmUzZmRkNjExMTMwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtMTQzLDYgKzE0MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29weUNvbnRl
eHRQcm9wZXJ0aWVzKGNhaXJvX3QqIHNyY0NyLCBjYWlyb190KiBkc3RDcikKICAgICBjYWlyb19z
ZXRfZmlsbF9ydWxlKGRzdENyLCBjYWlyb19nZXRfZmlsbF9ydWxlKHNyY0NyKSk7CiB9CiAKK3N0
YXRpYyB2b2lkIGFkZFBhdGhUb0NhaXJvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBQ
YXRoJiBwYXRoKQoreworICAgIGNhaXJvX3BhdGhfdCogY2Fpcm9QYXRoID0gY2Fpcm9fY29weV9w
YXRoKHBhdGgucGxhdGZvcm1QYXRoKCktPm1fY3IpOworICAgIGNhaXJvX2FwcGVuZF9wYXRoKGNv
bnRleHQsIGNhaXJvUGF0aCk7CisgICAgY2Fpcm9fcGF0aF9kZXN0cm95KGNhaXJvUGF0aCk7Cit9
CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25z
KEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQm
IGtlcm5lbFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKQogewogI2lmIEVOQUJMRShGSUxURVJTKQpA
QCAtMzgwLDkgKzM4Nyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RWxsaXBzZShjb25z
dCBJbnRSZWN0JiByZWN0KQogICAgICAgICBzZXRDb2xvcihjciwgc3Ryb2tlQ29sb3IoKSk7CiAg
ICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBzdHJva2VUaGlja25lc3MoKSk7CiAgICAg
ICAgIGNhaXJvX3N0cm9rZShjcik7Ci0gICAgfQotCi0gICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwor
ICAgIH0gZWxzZQorICAgICAgICBjYWlyb19uZXdfcGF0aChjcik7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0YXJ0QW5nbGUs
IGludCBhbmdsZVNwYW4pCkBAIC00OTgsOSArNTA0LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2lu
dHMKICAgICAgICAgc2V0Q29sb3IoY3IsIHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBjYWlyb19z
ZXRfbGluZV93aWR0aChjciwgc3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICBjYWlyb19zdHJv
a2UoY3IpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwog
Ci0gICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCkBA
IC01MjIsNiArNTI4LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCgpCiAKICAg
ICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAKKyAgICBjYWlyb190KiBwYXRoQ29udGV4dCA9
IG1fZGF0YS0+bV9wZW5kaW5nUGF0aC5tX2NyOworICAgIGNhaXJvX3BhdGhfdCogY2Fpcm9QYXRo
ID0gY2Fpcm9fY29weV9wYXRoKHBhdGhDb250ZXh0KTsKKyAgICBjYWlyb19uZXdfcGF0aChwYXRo
Q29udGV4dCk7CisgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY3IsIGNhaXJvUGF0aCk7CisgICAgY2Fp
cm9fcGF0aF9kZXN0cm95KGNhaXJvUGF0aCk7CisKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNy
LCBmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCA/IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6
IENBSVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKICAgICBkcmF3UGF0aFNoYWRvdyh0aGlzLCBtX2Nv
bW1vbiwgdHJ1ZSwgZmFsc2UpOwogCkBAIC01MzUsNiArNTQ3LDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXRoKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fpcm9fdCogY3Ig
PSBtX2RhdGEtPmNyOworCisgICAgY2Fpcm9fdCogcGF0aENvbnRleHQgPSBtX2RhdGEtPm1fcGVu
ZGluZ1BhdGgubV9jcjsKKyAgICBjYWlyb19wYXRoX3QqIGNhaXJvUGF0aCA9IGNhaXJvX2NvcHlf
cGF0aChwYXRoQ29udGV4dCk7CisgICAgY2Fpcm9fbmV3X3BhdGgocGF0aENvbnRleHQpOworICAg
IGNhaXJvX2FwcGVuZF9wYXRoKGNyLCBjYWlyb1BhdGgpOworICAgIGNhaXJvX3BhdGhfZGVzdHJv
eShjYWlyb1BhdGgpOworCiAgICAgZHJhd1BhdGhTaGFkb3codGhpcywgbV9jb21tb24sIGZhbHNl
LCB0cnVlKTsKIAogICAgIHNldFBsYXRmb3JtU3Ryb2tlKHRoaXMsIGNyLCBtX2NvbW1vbik7CkBA
IC01NDksNiArNTY4LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aCgpCiAKICAg
ICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAKKyAgICBjYWlyb190KiBwYXRoQ29udGV4dCA9
IG1fZGF0YS0+bV9wZW5kaW5nUGF0aC5tX2NyOworICAgIGNhaXJvX3BhdGhfdCogY2Fpcm9QYXRo
ID0gY2Fpcm9fY29weV9wYXRoKHBhdGhDb250ZXh0KTsKKyAgICBjYWlyb19uZXdfcGF0aChwYXRo
Q29udGV4dCk7CisgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY3IsIGNhaXJvUGF0aCk7CisgICAgY2Fp
cm9fcGF0aF9kZXN0cm95KGNhaXJvUGF0aCk7CisKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNy
LCBmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCA/IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6
IENBSVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKICAgICBkcmF3UGF0aFNoYWRvdyh0aGlzLCBtX2Nv
bW1vbiwgdHJ1ZSwgdHJ1ZSk7CiAKQEAgLTY3Myw3ICs2OTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lk
dGgsIGludAogI2Vsc2UKICAgICBpbnQgcmFkaXVzID0gKHdpZHRoIC0gMSkgLyAyOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWN0Q291bnQ7IGkrKykKLSAgICAgICAgYWRkUGF0aChQ
YXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKHJlY3RzW2ldLCBGbG9hdFNpemUocmFkaXVzLCBy
YWRpdXMpKSk7CisgICAgICAgIGFkZFBhdGhUb0NhaXJvQ29udGV4dChjciwgUGF0aDo6Y3JlYXRl
Um91bmRlZFJlY3RhbmdsZShyZWN0c1tpXSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSkpOwog
CiAgICAgLy8gRm9yY2UgdGhlIGFscGhhIHRvIDUwJS4gIFRoaXMgbWF0Y2hlcyB3aGF0IHRoZSBN
YWMgZG9lcyB3aXRoIG91dGxpbmUgcmluZ3MuCiAgICAgQ29sb3IgcmluZ0NvbG9yKGNvbG9yLnJl
ZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCksIDEyNyk7CkBAIC04MzgsNiArODYzLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAgICAgY29uc3QgY2Fp
cm9fbWF0cml4X3QgbWF0cml4ID0gY2Fpcm9fbWF0cml4X3QodHJhbnNmb3JtKTsKICAgICBjYWly
b190cmFuc2Zvcm0oY3IsICZtYXRyaXgpOworICAgIGNhaXJvX3RyYW5zZm9ybShtX2RhdGEtPm1f
cGVuZGluZ1BhdGgubV9jciwgJm1hdHJpeCk7CiAgICAgbV9kYXRhLT5jb25jYXRDVE0odHJhbnNm
b3JtKTsKIH0KIApAQCAtODQ2LDYgKzg3Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJ
bm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgdGhpY2tuZXNzCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgY2Fpcm9f
dCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNsaXAocmVjdCk7CiAKICAgICBQYXRoIHA7CkBAIC04
NTUsOSArODgyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RD
bGlwKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCB0aGlja25lc3MKICAgICAvLyBBZGQgaW5uZXIg
ZWxsaXBzZQogICAgIHIuaW5mbGF0ZSgtdGhpY2tuZXNzKTsKICAgICBwLmFkZEVsbGlwc2Uocik7
Ci0gICAgYWRkUGF0aChwKTsKKyAgICBhZGRQYXRoVG9DYWlyb0NvbnRleHQoY3IsIHApOwogCi0g
ICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNhaXJvX2ZpbGxfcnVsZV90IHNhdmVk
RmlsbFJ1bGUgPSBjYWlyb19nZXRfZmlsbF9ydWxlKGNyKTsKICAgICBjYWlyb19zZXRfZmlsbF9y
dWxlKGNyLCBDQUlST19GSUxMX1JVTEVfRVZFTl9PREQpOwogICAgIGNhaXJvX2NsaXAoY3IpOwpA
QCAtMTA4NSw4ICsxMTExLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGF0aCgpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9f
dCogY3IgPSBtX2RhdGEtPmNyOwotICAgIGNhaXJvX25ld19wYXRoKGNyKTsKKyAgICBjYWlyb19u
ZXdfcGF0aChtX2RhdGEtPm1fcGVuZGluZ1BhdGgubV9jcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjphZGRQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0xMDk0LDEwICsxMTE5LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9
IG1fZGF0YS0+Y3I7Ci0gICAgY2Fpcm9fcGF0aF90KiBwID0gY2Fpcm9fY29weV9wYXRoKHBhdGgu
cGxhdGZvcm1QYXRoKCktPm1fY3IpOwotICAgIGNhaXJvX2FwcGVuZF9wYXRoKGNyLCBwKTsKLSAg
ICBjYWlyb19wYXRoX2Rlc3Ryb3kocCk7CisgICAgYWRkUGF0aFRvQ2Fpcm9Db250ZXh0KG1fZGF0
YS0+bV9wZW5kaW5nUGF0aC5tX2NyLCBwYXRoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXAoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTExMzAsNyArMTE1Miw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgZG91YmxlIHgxLCB5MSwg
eDIsIHkyOwogICAgIGNhaXJvX2NsaXBfZXh0ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsK
ICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7Ci0gICAg
YWRkUGF0aChwYXRoKTsKKyAgICBhZGRQYXRoVG9DYWlyb0NvbnRleHQoY3IsIHBhdGgpOwogCiAg
ICAgY2Fpcm9fZmlsbF9ydWxlX3Qgc2F2ZWRGaWxsUnVsZSA9IGNhaXJvX2dldF9maWxsX3J1bGUo
Y3IpOwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIENBSVJPX0ZJTExfUlVMRV9FVkVOX09E
RCk7CkBAIC0xMTg5LDggKzEyMTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5k
ZWRSZWN0KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0IEludFNpemUmIHRvcExlZnQsCiAKICAgICBj
YWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAgICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgYmVnaW5Q
YXRoKCk7Ci0gICAgYWRkUGF0aChQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKHIsIHRvcExl
ZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOworICAgIGFkZFBhdGhUb0Nh
aXJvQ29udGV4dChjciwgUGF0aDo6Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShyLCB0b3BMZWZ0LCB0
b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKICAgICBzZXRDb2xvcihjciwgY29s
b3IpOwogICAgIGRyYXdQYXRoU2hhZG93KHRoaXMsIG1fY29tbW9uLCB0cnVlLCBmYWxzZSk7CiAg
ICAgY2Fpcm9fZmlsbChjcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJv
LmgKaW5kZXggNWUzODgzMjRkY2Q2ZmIxZTcxZGIxZWE1ODJiZTY5NzQzYTBiOGViMy4uOTdlN2Uw
N2Y0NzQ4NDJjMTU2ODYyZjI3YWYzNjFkOTc4ZDQ1MGIxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWly
by5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaApAQCAtOTUsNiArOTUsNyBAQCBwdWJsaWM6CiAKICAgICBj
YWlyb190KiBjcjsKICAgICBWZWN0b3I8ZmxvYXQ+IGxheWVyczsKKyAgICBDYWlyb1BhdGggbV9w
ZW5kaW5nUGF0aDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHZGtFdmVudEV4cG9zZSogZXhw
b3NlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62982</attachid>
            <date>2010-07-29 13:40:09 -0700</date>
            <delta_ts>2010-07-29 15:02:01 -0700</delta_ts>
            <desc>Patch which instead handles the path transformation matrix in addPath</desc>
            <filename>bug-41732-20100729134011.patch</filename>
            <type>text/plain</type>
            <size>9418</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWVhYzllNGQ1OWIwNDI0ZGQ1YTM1MzMxZWU0ODljM2UwNWFkOTcyZC4uMGU2NjQ5MzRlMWI2ODVj
MjU3NzA1ZGI2NzRkNjM1NjQyNGQwZjcxNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0wNy0yOCAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0NhaXJvXSBCcmluZyBiZWhhdmlvciBvZiBw
YXRocyBvbiB0aGUgQ2Fpcm8gR3JhcGhpY3NDb250ZXh0IGludG8gbGluZSB3aXRoIHRoZSBDb3Jl
R3JhcGhpY3MgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDE3MzIKKworICAgICAgICBEbyBub3QgYXBwbHkgcGF0aHMgYWRkZWQgdG8gdGhlIENh
aXJvIEdyYXBoaWNzQ29udGV4dCwgdW50aWwgdGhleSBhcmUgdXNlZC4KKyAgICAgICAgVGhpcyBw
cmV2ZW50cyBkcmF3aW5nIHJvdXRpbmVzIHN1Y2ggYXMgZmlsbFJlY3QgZnJvbSBpbnRlcmFjdGlu
ZyB3aXRoIGFueQorICAgICAgICBwYXRoIHdoaWNoIGNhbGxlcnMgYXJlIGNvbnN0cnVjdGluZyBv
biB0aGUgR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIG5lY2Vz
c2FyeSB0byBjbG9zZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxMzA4CisgICAgICAgICBzbyB0ZXN0cyBmb3IgdGhhdCBpc3N1ZSB3aWxsIHRlc3QgdGhpcyBm
aXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRQYXRoVG9DYWlyb0NvbnRleHQpOiBBZGRl
ZC4gQSBoZWxwZXIgbWV0aG9kIHdoaWNoIGFkZHMgYSBwYXRoCisgICAgICAgIHRvIGEgbmF0aXZl
IENhaXJvIGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdF
bGxpcHNlKTogT25seSBjbGVhciB0aGUgQ2Fpcm8gcGF0aCBpZiBjYWlyb19zdHJva2UKKyAgICAg
ICAgd2FzIG5vdCBjYWxsZWQsIGJlY2F1c2UgY2Fpcm9fc3Ryb2tlIGltcGxpY2l0bHkgY2xlYXJz
IHRoZSBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4
UG9seWdvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxs
UGF0aCk6IENvcHkgdGhlIHBhdGggZnJvbSBtX3BlbmRpbmdQYXRoIHRvIHRoZSBjb250ZXh0Cisg
ICAgICAgIGFuZCBjbGVhciBtX3BlbmRpbmdQYXRoLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhl
IHByZS1leGlzdGluZyBjb250ZXh0IHBhdGguCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZVBhdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ZvY3VzUmluZyk6IFVzZSB0aGUgbmV3IGFkZFBhdGhUb0NhaXJvQ29udGV4dCBoZWxw
ZXIgaW5zdGVhZAorICAgICAgICBvZiBhZGRQYXRoICh3aGljaCB3aWxsIGJsb3cgYXdheSBhbnkg
cGF0aCBjYWxsZXJzIGFyZSBidWlsZGluZykuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlwKTogVXNlIHRoZSBuZXcgYWRkUGF0aFRvQ2Fp
cm9Db250ZXh0IGhlbHBlciBpbnN0ZWFkCisgICAgICAgIG9mIGFkZFBhdGggKHdoaWNoIHdpbGwg
YmxvdyBhd2F5IGFueSBwYXRoIGNhbGxlcnMgYXJlIGJ1aWxkaW5nKS4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5QYXRoKTogQ2xlYXIgb3V0IG1fcGVuZGluZ1BhdGgg
aGVyZSBpbnN0ZWFkIG9mIHRoZSBtYWluIG5hdGl2ZSBjb250ZXh0LgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjphZGRQYXRoKTogQWRkIHRoZSBwYXRoIHRvIG1fcGVuZGluZ1Bh
dGggaW5zdGVhZCBvZiB0aGUgbWFpbiBuYXRpdmUgY29udGV4dC4KKyAgICAgICAgQWxzbyBlbnN1
cmUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IG9mIHRoZSBtX3BlbmRpbmdQYXRoIGlz
IGVxdWFsIHRvIHRoYXQgb2YgdGhlIG1haW4KKyAgICAgICAgY2Fpcm8gY29udGV4dC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dCk6IFVzZSB0aGUgYWRkUGF0aFRv
Q2Fpcm9Db250ZXh0IGhlbHBlciBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOiBEaXR0byBhbmQgcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGJl
Z2luUGF0aCBjYWxsLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmg6IEFkZCBhIG5ldyBtX3BlbmRpbmdQYXRoIG1l
bWJlci4KKwogMjAxMC0wNy0yOSAgVmljdG9yIFdhbmcgIDx2aWN0b3J3QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjQyNzAuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
CmluZGV4IDk2Y2Q0ZWVjMmY4OThmOTE3MGUwYWQwY2IwZmVhOTQ5NDg4OWU5ODEuLjViZjAxMDA4
NDE4Yjc1ZDEyZmM0ZTZjODJkOGE2ZjE0ZmIwM2IwMjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC00
LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3Jp
dEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNDMsNiArMTQ0LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5Q29udGV4dFBy
b3BlcnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKQogICAgIGNhaXJvX3NldF9m
aWxsX3J1bGUoZHN0Q3IsIGNhaXJvX2dldF9maWxsX3J1bGUoc3JjQ3IpKTsKIH0KIAorc3RhdGlj
IHZvaWQgYWRkUGF0aFRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IFBhdGgm
IHBhdGgpCit7CisgICAgY2Fpcm9fcGF0aF90KiBjYWlyb1BhdGggPSBjYWlyb19jb3B5X3BhdGgo
cGF0aC5wbGF0Zm9ybVBhdGgoKS0+bV9jcik7CisgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY29udGV4
dCwgY2Fpcm9QYXRoKTsKKyAgICBjYWlyb19wYXRoX2Rlc3Ryb3koY2Fpcm9QYXRoKTsKK30KKwog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoSW50
U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYga2Vy
bmVsU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNo
YWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpCiB7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCkBAIC0z
ODAsOSArMzg4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAgICAgICAgIHNldENvbG9yKGNyLCBzdHJva2VDb2xvcigpKTsKICAgICAg
ICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3IsIHN0cm9rZVRoaWNrbmVzcygpKTsKICAgICAgICAg
Y2Fpcm9fc3Ryb2tlKGNyKTsKLSAgICB9Ci0KLSAgICBjYWlyb19uZXdfcGF0aChjcik7CisgICAg
fSBlbHNlCisgICAgICAgIGNhaXJvX25ld19wYXRoKGNyKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwgaW50
IGFuZ2xlU3BhbikKQEAgLTQ5OCw5ICs1MDUsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0NvbnZleFBvbHlnb24oc2l6ZV90IG5wb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cwog
ICAgICAgICBzZXRDb2xvcihjciwgc3Ryb2tlQ29sb3IoKSk7CiAgICAgICAgIGNhaXJvX3NldF9s
aW5lX3dpZHRoKGNyLCBzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShj
cik7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBjYWlyb19uZXdfcGF0aChjcik7CiAKLSAg
ICBjYWlyb19uZXdfcGF0aChjcik7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKQEAgLTUy
Miw2ICs1MjksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKCkKIAogICAgIGNh
aXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKIAorICAgIGNhaXJvX3QqIHBhdGhDb250ZXh0ID0gbV9k
YXRhLT5tX3BlbmRpbmdQYXRoLm1fY3I7CisgICAgY2Fpcm9fcGF0aF90KiBjYWlyb1BhdGggPSBj
YWlyb19jb3B5X3BhdGgocGF0aENvbnRleHQpOworICAgIGNhaXJvX25ld19wYXRoKHBhdGhDb250
ZXh0KTsKKyAgICBjYWlyb19hcHBlbmRfcGF0aChjciwgY2Fpcm9QYXRoKTsKKyAgICBjYWlyb19w
YXRoX2Rlc3Ryb3koY2Fpcm9QYXRoKTsKKwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIGZp
bGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJ
Uk9fRklMTF9SVUxFX1dJTkRJTkcpOwogICAgIGRyYXdQYXRoU2hhZG93KHRoaXMsIG1fY29tbW9u
LCB0cnVlLCBmYWxzZSk7CiAKQEAgLTUzNSw2ICs1NDgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZVBhdGgoKQogICAgICAgICByZXR1cm47CiAKICAgICBjYWlyb190KiBjciA9IG1f
ZGF0YS0+Y3I7CisKKyAgICBjYWlyb190KiBwYXRoQ29udGV4dCA9IG1fZGF0YS0+bV9wZW5kaW5n
UGF0aC5tX2NyOworICAgIGNhaXJvX3BhdGhfdCogY2Fpcm9QYXRoID0gY2Fpcm9fY29weV9wYXRo
KHBhdGhDb250ZXh0KTsKKyAgICBjYWlyb19uZXdfcGF0aChwYXRoQ29udGV4dCk7CisgICAgY2Fp
cm9fYXBwZW5kX3BhdGgoY3IsIGNhaXJvUGF0aCk7CisgICAgY2Fpcm9fcGF0aF9kZXN0cm95KGNh
aXJvUGF0aCk7CisKICAgICBkcmF3UGF0aFNoYWRvdyh0aGlzLCBtX2NvbW1vbiwgZmFsc2UsIHRy
dWUpOwogCiAgICAgc2V0UGxhdGZvcm1TdHJva2UodGhpcywgY3IsIG1fY29tbW9uKTsKQEAgLTU0
OSw2ICs1NjksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKCkKIAogICAgIGNh
aXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKIAorICAgIGNhaXJvX3QqIHBhdGhDb250ZXh0ID0gbV9k
YXRhLT5tX3BlbmRpbmdQYXRoLm1fY3I7CisgICAgY2Fpcm9fcGF0aF90KiBjYWlyb1BhdGggPSBj
YWlyb19jb3B5X3BhdGgocGF0aENvbnRleHQpOworICAgIGNhaXJvX25ld19wYXRoKHBhdGhDb250
ZXh0KTsKKyAgICBjYWlyb19hcHBlbmRfcGF0aChjciwgY2Fpcm9QYXRoKTsKKyAgICBjYWlyb19w
YXRoX2Rlc3Ryb3koY2Fpcm9QYXRoKTsKKwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIGZp
bGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJ
Uk9fRklMTF9SVUxFX1dJTkRJTkcpOwogICAgIGRyYXdQYXRoU2hhZG93KHRoaXMsIG1fY29tbW9u
LCB0cnVlLCB0cnVlKTsKIApAQCAtNjczLDcgKzY5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwg
aW50CiAjZWxzZQogICAgIGludCByYWRpdXMgPSAod2lkdGggLSAxKSAvIDI7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQotICAgICAgICBhZGRQYXRoKFBhdGg6
OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdHNbaV0sIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1
cykpKTsKKyAgICAgICAgYWRkUGF0aFRvQ2Fpcm9Db250ZXh0KGNyLCBQYXRoOjpjcmVhdGVSb3Vu
ZGVkUmVjdGFuZ2xlKHJlY3RzW2ldLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKSk7CiAKICAg
ICAvLyBGb3JjZSB0aGUgYWxwaGEgdG8gNTAlLiAgVGhpcyBtYXRjaGVzIHdoYXQgdGhlIE1hYyBk
b2VzIHdpdGggb3V0bGluZSByaW5ncy4KICAgICBDb2xvciByaW5nQ29sb3IoY29sb3IucmVkKCks
IGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSwgMTI3KTsKQEAgLTg0Niw2ICs4NzIsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVj
dCYgcmVjdCwgaW50IHRoaWNrbmVzcwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAgICBjbGlwKHJl
Y3QpOwogCiAgICAgUGF0aCBwOwpAQCAtODU1LDkgKzg4Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgdGhp
Y2tuZXNzCiAgICAgLy8gQWRkIGlubmVyIGVsbGlwc2UKICAgICByLmluZmxhdGUoLXRoaWNrbmVz
cyk7CiAgICAgcC5hZGRFbGxpcHNlKHIpOwotICAgIGFkZFBhdGgocCk7CisgICAgYWRkUGF0aFRv
Q2Fpcm9Db250ZXh0KGNyLCBwKTsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAg
ICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShj
cik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0RE
KTsKICAgICBjYWlyb19jbGlwKGNyKTsKQEAgLTEwODUsOCArMTExMSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpiZWdpblBhdGgoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKLSAgICBjYWlyb19u
ZXdfcGF0aChjcik7CisgICAgY2Fpcm9fbmV3X3BhdGgobV9kYXRhLT5tX3BlbmRpbmdQYXRoLm1f
Y3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUGF0aChjb25zdCBQYXRoJiBwYXRo
KQpAQCAtMTA5NCwxMCArMTExOSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUGF0aChj
b25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKLSAgICBjYWlyb19wYXRoX3Qq
IHAgPSBjYWlyb19jb3B5X3BhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKS0+bV9jcik7Ci0gICAgY2Fp
cm9fYXBwZW5kX3BhdGgoY3IsIHApOwotICAgIGNhaXJvX3BhdGhfZGVzdHJveShwKTsKKyAgICBj
YWlyb19tYXRyaXhfdCBjdXJyZW50TWF0cml4OworICAgIGNhaXJvX2dldF9tYXRyaXgobV9kYXRh
LT5jciwgJmN1cnJlbnRNYXRyaXgpOworICAgIGNhaXJvX3NldF9tYXRyaXgobV9kYXRhLT5tX3Bl
bmRpbmdQYXRoLm1fY3IsICZjdXJyZW50TWF0cml4KTsKKyAgICBhZGRQYXRoVG9DYWlyb0NvbnRl
eHQobV9kYXRhLT5tX3BlbmRpbmdQYXRoLm1fY3IsIHBhdGgpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcChjb25zdCBQYXRoJiBwYXRoKQpAQCAtMTEzMCw3ICsxMTU1LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKICAgICBkb3VibGUg
eDEsIHkxLCB4MiwgeTI7CiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNyLCAmeDEsICZ5MSwgJngy
LCAmeTIpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkx
KTsKLSAgICBhZGRQYXRoKHBhdGgpOworICAgIGFkZFBhdGhUb0NhaXJvQ29udGV4dChjciwgcGF0
aCk7CiAKICAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2Zp
bGxfcnVsZShjcik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxF
X0VWRU5fT0REKTsKQEAgLTExODksOCArMTIxNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgciwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwK
IAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAgICBjYWlyb19zYXZlKGNyKTsKLSAg
ICBiZWdpblBhdGgoKTsKLSAgICBhZGRQYXRoKFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUo
ciwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CisgICAgYWRk
UGF0aFRvQ2Fpcm9Db250ZXh0KGNyLCBQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKHIsIHRv
cExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOwogICAgIHNldENvbG9y
KGNyLCBjb2xvcik7CiAgICAgZHJhd1BhdGhTaGFkb3codGhpcywgbV9jb21tb24sIHRydWUsIGZh
bHNlKTsKICAgICBjYWlyb19maWxsKGNyKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlQ2Fpcm8uaAppbmRleCA1ZTM4ODMyNGRjZDZmYjFlNzFkYjFlYTU4MmJlNjk3NDNhMGI4ZWIz
Li45N2U3ZTA3ZjQ3NDg0MmMxNTY4NjJmMjdhZjM2MWQ5NzhkNDUwYjExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZUNhaXJvLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoK
IAogICAgIGNhaXJvX3QqIGNyOwogICAgIFZlY3RvcjxmbG9hdD4gbGF5ZXJzOworICAgIENhaXJv
UGF0aCBtX3BlbmRpbmdQYXRoOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEdka0V2ZW50RXhw
b3NlKiBleHBvc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62995</attachid>
            <date>2010-07-29 15:02:04 -0700</date>
            <delta_ts>2010-07-29 18:04:45 -0700</delta_ts>
            <desc>Updated patch with Dirk&apos;s suggestions</desc>
            <filename>bug-41732-20100729150206.patch</filename>
            <type>text/plain</type>
            <size>10060</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWVhYzllNGQ1OWIwNDI0ZGQ1YTM1MzMxZWU0ODljM2UwNWFkOTcyZC4uZGEyNjcxNTA0YTJlMWJj
ZjA4MjlkZTYwMTU5ZGM2MmI0NGI2MDc5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wNy0yOCAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0NhaXJvXSBCcmluZyBiZWhhdmlvciBvZiBw
YXRocyBvbiB0aGUgQ2Fpcm8gR3JhcGhpY3NDb250ZXh0IGludG8gbGluZSB3aXRoIHRoZSBDb3Jl
R3JhcGhpY3MgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDE3MzIKKworICAgICAgICBEbyBub3QgYXBwbHkgcGF0aHMgYWRkZWQgdG8gdGhlIENh
aXJvIEdyYXBoaWNzQ29udGV4dCwgdW50aWwgdGhleSBhcmUgdXNlZC4KKyAgICAgICAgVGhpcyBw
cmV2ZW50cyBkcmF3aW5nIHJvdXRpbmVzIHN1Y2ggYXMgZmlsbFJlY3QgZnJvbSBpbnRlcmFjdGlu
ZyB3aXRoIGFueQorICAgICAgICBwYXRoIHdoaWNoIGNhbGxlcnMgYXJlIGNvbnN0cnVjdGluZyBv
biB0aGUgR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIG5lY2Vz
c2FyeSB0byBjbG9zZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxMzA4CisgICAgICAgICBzbyB0ZXN0cyBmb3IgdGhhdCBpc3N1ZSB3aWxsIHRlc3QgdGhpcyBm
aXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRQYXRoVG9DYWlyb0NvbnRleHQpOiBB
ZGRlZC4gQSBoZWxwZXIgbWV0aG9kIHdoaWNoIGFkZHMgYSBwYXRoCisgICAgICAgIHRvIGEgbmF0
aXZlIENhaXJvIGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpzZXRQYXRoT25DYWlyb0NvbnRl
eHQpOiBBZGRlZC4gTGlrZSBhcHBlbmRQYXRoVG9DYWlyb0NvbnRleHQsIGJ1dCBjbGVhcnMgdGhl
CisgICAgICAgIGV4aXN0aW5nIHBhdGggZmlyc3QuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRX
ZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KTogQWRkZWQuIExpa2UgYXBwZW5kUGF0aFRvQ2Fpcm9D
b250ZXh0LCBidXQKKyAgICAgICAgb3BlcmF0ZXMgb24gYSBXZWJDb3JlIHBhdGguCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKTogT25seSBjbGVhciB0aGUg
Q2Fpcm8gcGF0aCBpZiBjYWlyb19zdHJva2UKKyAgICAgICAgd2FzIG5vdCBjYWxsZWQsIGJlY2F1
c2UgY2Fpcm9fc3Ryb2tlIGltcGxpY2l0bHkgY2xlYXJzIHRoZSBwYXRoLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6IENvcHkgdGhlIHBhdGggZnJv
bSBtX3BlbmRpbmdQYXRoIHRvIHRoZSBjb250ZXh0CisgICAgICAgIGFuZCBjbGVhciBtX3BlbmRp
bmdQYXRoLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIHByZS1leGlzdGluZyBjb250ZXh0IHBh
dGguCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6IFVzZSB0
aGUgbmV3IGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQgaGVscGVyIGluc3RlYWQKKyAg
ICAgICAgb2YgYWRkUGF0aCAod2hpY2ggd2lsbCBibG93IGF3YXkgYW55IHBhdGggY2FsbGVycyBh
cmUgYnVpbGRpbmcpLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRJbm5l
clJvdW5kZWRSZWN0Q2xpcCk6IFVzZSB0aGUgbmV3IGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0Nv
bnRleHQgaGVscGVyIGluc3RlYWQKKyAgICAgICAgb2YgYWRkUGF0aCAod2hpY2ggd2lsbCBibG93
IGF3YXkgYW55IHBhdGggY2FsbGVycyBhcmUgYnVpbGRpbmcpLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpiZWdpblBhdGgpOiBDbGVhciBvdXQgbV9wZW5kaW5nUGF0aCBoZXJl
IGluc3RlYWQgb2YgdGhlIG1haW4gbmF0aXZlIGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmFkZFBhdGgpOiBBZGQgdGhlIHBhdGggdG8gbV9wZW5kaW5nUGF0aCBp
bnN0ZWFkIG9mIHRoZSBtYWluIG5hdGl2ZSBjb250ZXh0LgorICAgICAgICBBbHNvIGVuc3VyZSB0
aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2YgdGhlIG1fcGVuZGluZ1BhdGggaXMgZXF1
YWwgdG8gdGhhdCBvZiB0aGUgbWFpbgorICAgICAgICBjYWlybyBjb250ZXh0LgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KTogVXNlIHRoZSBhcHBlbmRXZWJDb3Jl
UGF0aFRvQ2Fpcm9Db250ZXh0IGhlbHBlciBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOiBEaXR0byBhbmQgcmVtb3ZlIGFuIHVubmVjZXNz
YXJ5IGJlZ2luUGF0aCBjYWxsLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmg6IEFkZCBhIG5ldyBtX3BlbmRpbmdQ
YXRoIG1lbWJlci4KKwogMjAxMC0wNy0yOSAgVmljdG9yIFdhbmcgIDx2aWN0b3J3QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjQyNzAuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCmluZGV4IDk2Y2Q0ZWVjMmY4OThmOTE3MGUwYWQwY2IwZmVhOTQ5NDg4OWU5ODEuLjRi
NGM3YWFhZWU1ZmUxNDI1MTJjODBkYmU0NGNlMThjZWVmNTA0MDYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
CkBAIC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6
ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNDMsNiArMTQ0LDI0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5Q29u
dGV4dFByb3BlcnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKQogICAgIGNhaXJv
X3NldF9maWxsX3J1bGUoZHN0Q3IsIGNhaXJvX2dldF9maWxsX3J1bGUoc3JjQ3IpKTsKIH0KIAor
c3RhdGljIHZvaWQgYXBwZW5kUGF0aFRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIHRvLCBjYWlyb190
KiBmcm9tKQoreworICAgIGNhaXJvX3BhdGhfdCogY2Fpcm9QYXRoID0gY2Fpcm9fY29weV9wYXRo
KGZyb20pOworICAgIGNhaXJvX2FwcGVuZF9wYXRoKHRvLCBjYWlyb1BhdGgpOworICAgIGNhaXJv
X3BhdGhfZGVzdHJveShjYWlyb1BhdGgpOworfQorCitzdGF0aWMgdm9pZCBzZXRQYXRoT25DYWly
b0NvbnRleHQoY2Fpcm9fdCogdG8sIGNhaXJvX3QqIGZyb20pCit7CisgICAgY2Fpcm9fbmV3X3Bh
dGgodG8pOworICAgIGFwcGVuZFBhdGhUb0NhaXJvQ29udGV4dCh0bywgZnJvbSk7Cit9CisKK3N0
YXRpYyB2b2lkIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQoY2Fpcm9fdCogY29udGV4
dCwgY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBhcHBlbmRQYXRoVG9DYWlyb0NvbnRleHQoY29u
dGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+bV9jcik7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZl
clNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBz
aGFkb3dCbHVyKQogewogI2lmIEVOQUJMRShGSUxURVJTKQpAQCAtMzgwLDkgKzM5OSw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RWxsaXBzZShjb25zdCBJbnRSZWN0JiByZWN0KQogICAg
ICAgICBzZXRDb2xvcihjciwgc3Ryb2tlQ29sb3IoKSk7CiAgICAgICAgIGNhaXJvX3NldF9saW5l
X3dpZHRoKGNyLCBzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7
Ci0gICAgfQotCi0gICAgY2Fpcm9fbmV3X3BhdGgoY3IpOworICAgIH0gZWxzZQorICAgICAgICBj
YWlyb19uZXdfcGF0aChjcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMo
Y29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwYW4pCkBAIC00
OTgsOSArNTE2LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNp
emVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMKICAgICAgICAgc2V0Q29sb3Io
Y3IsIHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgc3Ry
b2tlVGhpY2tuZXNzKCkpOwogICAgICAgICBjYWlyb19zdHJva2UoY3IpOwotICAgIH0KKyAgICB9
IGVsc2UKKyAgICAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwogCi0gICAgY2Fpcm9fbmV3X3BhdGgo
Y3IpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCkBAIC01MjIsNiArNTQwLDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCgpCiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0
YS0+Y3I7CiAKKyAgICAvLyBXZSBhcHBseSB0aGUgcGVuZGluZyBwYXRoIGJ1aWxkIHZpYSA6OmFk
ZFBhdGggdG8gdGhlIENhaXJvIGNvbnRleHQKKyAgICAvLyBsYXppbHkuIFRoaXMgcHJldmVudHMg
aW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgcGF0aCBhbmQgb3RoZXIgcm91dGluZXMKKyAgICAvLyBz
dWNoIGFzIGZpbGxSZWN0LgorICAgIHNldFBhdGhPbkNhaXJvQ29udGV4dChjciwgbV9kYXRhLT5t
X3BlbmRpbmdQYXRoLm1fY3IpOworCiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgZmlsbFJ1
bGUoKSA9PSBSVUxFX0VWRU5PREQgPyBDQUlST19GSUxMX1JVTEVfRVZFTl9PREQgOiBDQUlST19G
SUxMX1JVTEVfV0lORElORyk7CiAgICAgZHJhd1BhdGhTaGFkb3codGhpcywgbV9jb21tb24sIHRy
dWUsIGZhbHNlKTsKIApAQCAtNTM1LDYgKzU1OCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUGF0aCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRh
LT5jcjsKKworICAgIC8vIFdlIGFwcGx5IHRoZSBwZW5kaW5nIHBhdGggYnVpbGQgdmlhIDo6YWRk
UGF0aCB0byB0aGUgQ2Fpcm8gY29udGV4dAorICAgIC8vIGxhemlseS4gVGhpcyBwcmV2ZW50cyBp
bnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBwYXRoIGFuZCBvdGhlciByb3V0aW5lcworICAgIC8vIHN1
Y2ggYXMgZmlsbFJlY3QuCisgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBtX2RhdGEtPm1f
cGVuZGluZ1BhdGgubV9jcik7CisKICAgICBkcmF3UGF0aFNoYWRvdyh0aGlzLCBtX2NvbW1vbiwg
ZmFsc2UsIHRydWUpOwogCiAgICAgc2V0UGxhdGZvcm1TdHJva2UodGhpcywgY3IsIG1fY29tbW9u
KTsKQEAgLTU0OSw2ICs1NzgsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKCkK
IAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKIAorICAgIC8vIFdlIGFwcGx5IHRoZSBw
ZW5kaW5nIHBhdGggYnVpbGQgdmlhIDo6YWRkUGF0aCB0byB0aGUgQ2Fpcm8gY29udGV4dAorICAg
IC8vIGxhemlseS4gVGhpcyBwcmV2ZW50cyBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBwYXRoIGFu
ZCBvdGhlciByb3V0aW5lcworICAgIC8vIHN1Y2ggYXMgZmlsbFJlY3QuCisgICAgc2V0UGF0aE9u
Q2Fpcm9Db250ZXh0KGNyLCBtX2RhdGEtPm1fcGVuZGluZ1BhdGgubV9jcik7CisKICAgICBjYWly
b19zZXRfZmlsbF9ydWxlKGNyLCBmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCA/IENBSVJPX0ZJ
TExfUlVMRV9FVkVOX09ERCA6IENBSVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKICAgICBkcmF3UGF0
aFNoYWRvdyh0aGlzLCBtX2NvbW1vbiwgdHJ1ZSwgdHJ1ZSk7CiAKQEAgLTY3Myw3ICs3MDcsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogI2Vsc2UKICAgICBpbnQgcmFkaXVzID0gKHdpZHRo
IC0gMSkgLyAyOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWN0Q291bnQ7IGkrKykK
LSAgICAgICAgYWRkUGF0aChQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKHJlY3RzW2ldLCBG
bG9hdFNpemUocmFkaXVzLCByYWRpdXMpKSk7CisgICAgICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9D
YWlyb0NvbnRleHQoY3IsIFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdHNbaV0sIEZs
b2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpKTsKIAogICAgIC8vIEZvcmNlIHRoZSBhbHBoYSB0byA1
MCUuICBUaGlzIG1hdGNoZXMgd2hhdCB0aGUgTWFjIGRvZXMgd2l0aCBvdXRsaW5lIHJpbmdzLgog
ICAgIENvbG9yIHJpbmdDb2xvcihjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1
ZSgpLCAxMjcpOwpAQCAtODQ2LDYgKzg4MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJ
bm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgdGhpY2tuZXNzCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgY2Fpcm9f
dCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNsaXAocmVjdCk7CiAKICAgICBQYXRoIHA7CkBAIC04
NTUsOSArODkwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RD
bGlwKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCB0aGlja25lc3MKICAgICAvLyBBZGQgaW5uZXIg
ZWxsaXBzZQogICAgIHIuaW5mbGF0ZSgtdGhpY2tuZXNzKTsKICAgICBwLmFkZEVsbGlwc2Uocik7
Ci0gICAgYWRkUGF0aChwKTsKKyAgICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KGNy
LCBwKTsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAgICBjYWlyb19maWxsX3J1
bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CiAgICAgY2Fpcm9f
c2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REKTsKICAgICBjYWlyb19j
bGlwKGNyKTsKQEAgLTEwODUsOCArMTExOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdp
blBhdGgoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKLSAgICBjYWlyb19uZXdfcGF0aChjcik7Cisg
ICAgY2Fpcm9fbmV3X3BhdGgobV9kYXRhLT5tX3BlbmRpbmdQYXRoLm1fY3IpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6YWRkUGF0aChjb25zdCBQYXRoJiBwYXRoKQpAQCAtMTA5NCwxMCAr
MTEyNywxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUGF0aChjb25zdCBQYXRoJiBwYXRo
KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNh
aXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKLSAgICBjYWlyb19wYXRoX3QqIHAgPSBjYWlyb19jb3B5
X3BhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKS0+bV9jcik7Ci0gICAgY2Fpcm9fYXBwZW5kX3BhdGgo
Y3IsIHApOwotICAgIGNhaXJvX3BhdGhfZGVzdHJveShwKTsKKyAgICBjYWlyb19tYXRyaXhfdCBj
dXJyZW50TWF0cml4OworICAgIGNhaXJvX2dldF9tYXRyaXgobV9kYXRhLT5jciwgJmN1cnJlbnRN
YXRyaXgpOworICAgIGNhaXJvX3NldF9tYXRyaXgobV9kYXRhLT5tX3BlbmRpbmdQYXRoLm1fY3Is
ICZjdXJyZW50TWF0cml4KTsKKyAgICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KG1f
ZGF0YS0+bV9wZW5kaW5nUGF0aC5tX2NyLCBwYXRoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXAoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTExMzAsNyArMTE2Myw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgZG91YmxlIHgxLCB5
MSwgeDIsIHkyOwogICAgIGNhaXJvX2NsaXBfZXh0ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnky
KTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7Ci0g
ICAgYWRkUGF0aChwYXRoKTsKKyAgICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KGNy
LCBwYXRoKTsKIAogICAgIGNhaXJvX2ZpbGxfcnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWlyb19n
ZXRfZmlsbF9ydWxlKGNyKTsKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxM
X1JVTEVfRVZFTl9PREQpOwpAQCAtMTE4OSw4ICsxMjIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByLCBjb25zdCBJbnRTaXplJiB0b3BM
ZWZ0LAogCiAgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNhaXJvX3NhdmUoY3Ip
OwotICAgIGJlZ2luUGF0aCgpOwotICAgIGFkZFBhdGgoUGF0aDo6Y3JlYXRlUm91bmRlZFJlY3Rh
bmdsZShyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAg
ICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KGNyLCBQYXRoOjpjcmVhdGVSb3VuZGVk
UmVjdGFuZ2xlKHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkp
OwogICAgIHNldENvbG9yKGNyLCBjb2xvcik7CiAgICAgZHJhd1BhdGhTaGFkb3codGhpcywgbV9j
b21tb24sIHRydWUsIGZhbHNlKTsKICAgICBjYWlyb19maWxsKGNyKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlQ2Fpcm8uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAppbmRleCA1ZTM4ODMyNGRjZDZmYjFlNzFkYjFlYTU4
MmJlNjk3NDNhMGI4ZWIzLi45N2U3ZTA3ZjQ3NDg0MmMxNTY4NjJmMjdhZjM2MWQ5NzhkNDUwYjEx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCkBAIC05NSw2ICs5
NSw3IEBAIHB1YmxpYzoKIAogICAgIGNhaXJvX3QqIGNyOwogICAgIFZlY3RvcjxmbG9hdD4gbGF5
ZXJzOworICAgIENhaXJvUGF0aCBtX3BlbmRpbmdQYXRoOwogCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIEdka0V2ZW50RXhwb3NlKiBleHBvc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63018</attachid>
            <date>2010-07-29 18:04:48 -0700</date>
            <delta_ts>2010-08-03 17:52:22 -0700</delta_ts>
            <desc>Patch which also removes invalid calls to strokePath and fillPath</desc>
            <filename>bug-41732-20100729180451.patch</filename>
            <type>text/plain</type>
            <size>11987</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzY1NWY4YWM2MjhjYmYxZGZjNWM5MGNjZTFlYTc4MzEyMzViZTFiYS4uODYyOGFlNGQ3MDBiZmY3
YjFhYmJiOTFhZTVmMDZkMTEwZmEwMjU4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw1MSBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IERpcmsgU2NodWx6ZS4KIAorICAgICAgICBbQ2Fpcm9dIEJyaW5nIGJlaGF2aW9yIG9m
IHBhdGhzIG9uIHRoZSBDYWlybyBHcmFwaGljc0NvbnRleHQgaW50byBsaW5lIHdpdGggdGhlIENv
cmVHcmFwaGljcyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MTczMgorCisgICAgICAgIERvIG5vdCBhcHBseSBwYXRocyBhZGRlZCB0byB0aGUg
Q2Fpcm8gR3JhcGhpY3NDb250ZXh0LCB1bnRpbCB0aGV5IGFyZSB1c2VkLgorICAgICAgICBUaGlz
IHByZXZlbnRzIGRyYXdpbmcgcm91dGluZXMgc3VjaCBhcyBmaWxsUmVjdCBmcm9tIGludGVyYWN0
aW5nIHdpdGggYW55CisgICAgICAgIHBhdGggd2hpY2ggY2FsbGVycyBhcmUgY29uc3RydWN0aW5n
IG9uIHRoZSBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgbmVj
ZXNzYXJ5IHRvIGNsb3NlIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDEzMDgKKyAgICAgICAgIHNvIHRlc3RzIGZvciB0aGF0IGlzc3VlIHdpbGwgdGVzdCB0aGlz
IGZpeC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFBhdGhUb0NhaXJvQ29udGV4dCk6
IEFkZGVkLiBBIGhlbHBlciBtZXRob2Qgd2hpY2ggYWRkcyBhIHBhdGgKKyAgICAgICAgdG8gYSBu
YXRpdmUgQ2Fpcm8gY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OnNldFBhdGhPbkNhaXJvQ29u
dGV4dCk6IEFkZGVkLiBMaWtlIGFwcGVuZFBhdGhUb0NhaXJvQ29udGV4dCwgYnV0IGNsZWFycyB0
aGUKKyAgICAgICAgZXhpc3RpbmcgcGF0aCBmaXJzdC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQpOiBBZGRlZC4gTGlrZSBhcHBlbmRQYXRoVG9DYWly
b0NvbnRleHQsIGJ1dAorICAgICAgICBvcGVyYXRlcyBvbiBhIFdlYkNvcmUgcGF0aC4KKyAgICAg
ICAgKFdlYkNvcmU6OmZpbGxDdXJyZW50Q2Fpcm9QYXRoKTogQWRkZWQuIEhlbHBlciB3aGljaCBm
aWxscyB0aGUgY3VycmVudCBjYWlybyBjb250ZXh0IHBhdGguCisgICAgICAgIChXZWJDb3JlOjpz
dHJva2VDdXJyZW50Q2Fpcm9QYXRoKTogQWRkZWQuIEhlbHBlciB3aGljaCBzdHJva2VzIHRoZSBj
dXJyZW50IGNhaXJvIGNvbnRleHQgcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0VsbGlwc2UpOiBPbmx5IGNsZWFyIHRoZSBDYWlybyBwYXRoIGlmIGNhaXJvX3N0
cm9rZQorICAgICAgICB3YXMgbm90IGNhbGxlZCwgYmVjYXVzZSBjYWlyb19zdHJva2UgaW1wbGlj
aXRseSBjbGVhcnMgdGhlIHBhdGguCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdDb252ZXhQb2x5Z29uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxQYXRoKTogQ29weSB0aGUgcGF0aCBmcm9tIG1fcGVuZGluZ1BhdGggdG8gdGhl
IGNvbnRleHQKKyAgICAgICAgYW5kIGNsZWFyIG1fcGVuZGluZ1BhdGgsIGluc3RlYWQgb2YgcmVs
eWluZyBvbiB0aGUgcHJlLWV4aXN0aW5nIGNvbnRleHQgcGF0aC4gRG8gdGhlCisgICAgICAgIGFj
dHVhbCBmaWxsIHZpYSB0aGUgbmV3IGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlUGF0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdCk6IFVzZSB0aGUgbmV3IGZpbGxDdXJyZW50Q2Fpcm9QYXRoIGhlbHBlci4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6IFVzZSB0
aGUgbmV3IGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQgaGVscGVyIGluc3RlYWQKKyAg
ICAgICAgb2YgYWRkUGF0aCAod2hpY2ggd2lsbCBibG93IGF3YXkgYW55IHBhdGggY2FsbGVycyBh
cmUgYnVpbGRpbmcpLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRJbm5l
clJvdW5kZWRSZWN0Q2xpcCk6IFVzZSB0aGUgbmV3IGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0Nv
bnRleHQgaGVscGVyIGluc3RlYWQKKyAgICAgICAgb2YgYWRkUGF0aCAod2hpY2ggd2lsbCBibG93
IGF3YXkgYW55IHBhdGggY2FsbGVycyBhcmUgYnVpbGRpbmcpLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KTogVXNlIHRoZSBuZXcgc3Ryb2tlQ3VycmVudENh
aXJvUGF0aCBoZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJlZ2lu
UGF0aCk6IENsZWFyIG91dCBtX3BlbmRpbmdQYXRoIGhlcmUgaW5zdGVhZCBvZiB0aGUgbWFpbiBu
YXRpdmUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkUGF0
aCk6IEFkZCB0aGUgcGF0aCB0byBtX3BlbmRpbmdQYXRoIGluc3RlYWQgb2YgdGhlIG1haW4gbmF0
aXZlIGNvbnRleHQuCisgICAgICAgIEFsc28gZW5zdXJlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCBvZiB0aGUgbV9wZW5kaW5nUGF0aCBpcyBlcXVhbCB0byB0aGF0IG9mIHRoZSBtYWlu
CisgICAgICAgIGNhaXJvIGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmNsaXBPdXQpOiBVc2UgdGhlIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQgaGVs
cGVyIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVk
UmVjdCk6IERpdHRvIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgYmVnaW5QYXRoIGNhbGwuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlQ2Fpcm8uaDogQWRkIGEgbmV3IG1fcGVuZGluZ1BhdGggbWVtYmVyLgorCisyMDEwLTA3
LTI5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCisKICAgICAgICAgW0NhaXJvXSBSZW1vdmUgc2V0U3Ry
b2tlU3R5bGUgd29ya2Fyb3VuZCBmb3IgSW5saW5lVGV4dEJveGVzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzEzNgogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmlu
ZGV4IDc5NDMxZjBiYmI2MjBkYTYxNjAxNDE1ZGM4MWIzNDA3YzNhOTEyYWIuLmNhNDY4YWQ4NmNk
MzI2ZDE0Njg4OTBmZWM4ZTUwNzhiNjk5YTFiOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC00LDYg
KzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3
ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xNDMsNiArMTQ0LDI3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5Q29udGV4dFByb3Bl
cnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKQogICAgIGNhaXJvX3NldF9maWxs
X3J1bGUoZHN0Q3IsIGNhaXJvX2dldF9maWxsX3J1bGUoc3JjQ3IpKTsKIH0KIAorc3RhdGljIHZv
aWQgYXBwZW5kUGF0aFRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIHRvLCBjYWlyb190KiBmcm9tKQor
eworICAgIGNhaXJvX3BhdGhfdCogY2Fpcm9QYXRoID0gY2Fpcm9fY29weV9wYXRoKGZyb20pOwor
ICAgIGNhaXJvX2FwcGVuZF9wYXRoKHRvLCBjYWlyb1BhdGgpOworICAgIGNhaXJvX3BhdGhfZGVz
dHJveShjYWlyb1BhdGgpOworfQorCisvLyBXZSBhcHBseSB0aGUgcGVuZGluZyBwYXRoIGJ1aWx0
IHZpYSBhZGRQYXRoIHRvIHRoZSBDYWlybyBjb250ZXh0CisvLyBsYXppbHkuIFRoaXMgcHJldmVu
dHMgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgcGF0aCBhbmQgb3RoZXIgcm91dGluZXMKKy8vIHN1
Y2ggYXMgZmlsbFJlY3QuCitzdGF0aWMgdm9pZCBzZXRQYXRoT25DYWlyb0NvbnRleHQoY2Fpcm9f
dCogdG8sIGNhaXJvX3QqIGZyb20pCit7CisgICAgY2Fpcm9fbmV3X3BhdGgodG8pOworICAgIGFw
cGVuZFBhdGhUb0NhaXJvQ29udGV4dCh0bywgZnJvbSk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVu
ZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgUGF0aCYg
cGF0aCkKK3sKKyAgICBhcHBlbmRQYXRoVG9DYWlyb0NvbnRleHQoY29udGV4dCwgcGF0aC5wbGF0
Zm9ybVBhdGgoKS0+bV9jcik7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVj
dCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKQogewog
I2lmIEVOQUJMRShGSUxURVJTKQpAQCAtMjAxLDYgKzIyMywyMiBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRl
eHRQcml2YQogI2VuZGlmCiB9CiAKK3N0YXRpYyB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSogZ2NwLCBjYWly
b190KiBjYWlyb0NvbnRleHQpCit7CisgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjYWlyb0NvbnRl
eHQsIGNvbnRleHQtPmZpbGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxF
X0VWRU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOworICAgIGRyYXdQYXRoU2hhZG93
KGNvbnRleHQsIGdjcCwgdHJ1ZSwgZmFsc2UpOworCisgICAgc2V0UGxhdGZvcm1GaWxsKGNvbnRl
eHQsIGNhaXJvQ29udGV4dCwgZ2NwKTsKKyAgICBjYWlyb19uZXdfcGF0aChjYWlyb0NvbnRleHQp
OworfQorCitzdGF0aWMgdm9pZCBzdHJva2VDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSogZ2NwLCBjYWlyb190KiBjYWlyb0Nv
bnRleHQpCit7CisgICAgZHJhd1BhdGhTaGFkb3coY29udGV4dCwgZ2NwLCBmYWxzZSwgdHJ1ZSk7
CisgICAgc2V0UGxhdGZvcm1TdHJva2UoY29udGV4dCwgY2Fpcm9Db250ZXh0LCBnY3ApOworICAg
IGNhaXJvX25ld19wYXRoKGNhaXJvQ29udGV4dCk7Cit9CisKIEdyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjcikKICAgICA6IG1fY29tbW9u
KGNyZWF0ZUdyYXBoaWNzQ29udGV4dFByaXZhdGUoKSkKICAgICAsIG1fZGF0YShuZXcgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKQpAQCAtMzgwLDkgKzQxOCw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3RWxsaXBzZShjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICBzZXRD
b2xvcihjciwgc3Ryb2tlQ29sb3IoKSk7CiAgICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNy
LCBzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7Ci0gICAgfQot
Ci0gICAgY2Fpcm9fbmV3X3BhdGgoY3IpOworICAgIH0gZWxzZQorICAgICAgICBjYWlyb19uZXdf
cGF0aChjcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50
UmVjdCYgcmVjdCwgaW50IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwYW4pCkBAIC00OTgsOSArNTM1
LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBucG9p
bnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMKICAgICAgICAgc2V0Q29sb3IoY3IsIHN0cm9r
ZUNvbG9yKCkpOwogICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgc3Ryb2tlVGhpY2tu
ZXNzKCkpOwogICAgICAgICBjYWlyb19zdHJva2UoY3IpOwotICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwogCi0gICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwogICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCkBAIC01MjIsMTEgKzU1OSw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsUGF0aCgpCiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAK
LSAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCA/
IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6IENBSVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKLSAg
ICBkcmF3UGF0aFNoYWRvdyh0aGlzLCBtX2NvbW1vbiwgdHJ1ZSwgZmFsc2UpOwotCi0gICAgc2V0
UGxhdGZvcm1GaWxsKHRoaXMsIGNyLCBtX2NvbW1vbik7Ci0gICAgY2Fpcm9fbmV3X3BhdGgoY3Ip
OworICAgIHNldFBhdGhPbkNhaXJvQ29udGV4dChjciwgbV9kYXRhLT5tX3BlbmRpbmdQYXRoLm1f
Y3IpOworICAgIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKHRoaXMsIG1fY29tbW9uLCBjcik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKCkKQEAgLTUzNSwxMSArNTY5LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7Ci0gICAgZHJhd1BhdGhTaGFkb3codGhpcywgbV9j
b21tb24sIGZhbHNlLCB0cnVlKTsKLQotICAgIHNldFBsYXRmb3JtU3Ryb2tlKHRoaXMsIGNyLCBt
X2NvbW1vbik7Ci0gICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwotCisgICAgc2V0UGF0aE9uQ2Fpcm9D
b250ZXh0KGNyLCBtX2RhdGEtPm1fcGVuZGluZ1BhdGgubV9jcik7CisgICAgc3Ryb2tlQ3VycmVu
dENhaXJvUGF0aCh0aGlzLCBtX2NvbW1vbiwgY3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdGgoKQpAQCAtNTQ5LDYgKzU4MCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UGF0aCgpCiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAKKyAgICBzZXRQYXRo
T25DYWlyb0NvbnRleHQoY3IsIG1fZGF0YS0+bV9wZW5kaW5nUGF0aC5tX2NyKTsKKwogICAgIGNh
aXJvX3NldF9maWxsX3J1bGUoY3IsIGZpbGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9f
RklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwogICAgIGRyYXdQ
YXRoU2hhZG93KHRoaXMsIG1fY29tbW9uLCB0cnVlLCB0cnVlKTsKIApAQCAtNTY1LDcgKzU5OCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAg
IGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpOwotICAgIGZpbGxQYXRoKCk7CisgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgo
dGhpcywgbV9jb21tb24sIGNyKTsKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIApAQCAtNjcz
LDcgKzcwNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiAjZWxzZQogICAgIGludCByYWRp
dXMgPSAod2lkdGggLSAxKSAvIDI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RD
b3VudDsgaSsrKQotICAgICAgICBhZGRQYXRoKFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUo
cmVjdHNbaV0sIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpKTsKKyAgICAgICAgYXBwZW5kV2Vi
Q29yZVBhdGhUb0NhaXJvQ29udGV4dChjciwgUGF0aDo6Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShy
ZWN0c1tpXSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSkpOwogCiAgICAgLy8gRm9yY2UgdGhl
IGFscGhhIHRvIDUwJS4gIFRoaXMgbWF0Y2hlcyB3aGF0IHRoZSBNYWMgZG9lcyB3aXRoIG91dGxp
bmUgcmluZ3MuCiAgICAgQ29sb3IgcmluZ0NvbG9yKGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigp
LCBjb2xvci5ibHVlKCksIDEyNyk7CkBAIC04NDAsNiArODczLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCB0
aGlja25lc3MKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAgICAgY2xpcChyZWN0KTsKIAogICAgIFBh
dGggcDsKQEAgLTg0OSw5ICs4ODMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJS
b3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHRoaWNrbmVzcwogICAgIC8v
IEFkZCBpbm5lciBlbGxpcHNlCiAgICAgci5pbmZsYXRlKC10aGlja25lc3MpOwogICAgIHAuYWRk
RWxsaXBzZShyKTsKLSAgICBhZGRQYXRoKHApOworICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWly
b0NvbnRleHQoY3IsIHApOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNh
aXJvX2ZpbGxfcnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWlyb19nZXRfZmlsbF9ydWxlKGNyKTsK
ICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JVTEVfRVZFTl9PREQpOwog
ICAgIGNhaXJvX2NsaXAoY3IpOwpAQCAtOTYyLDcgKzk5NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgd2lkdGgpCiAgICAg
Y2Fpcm9fc2F2ZShjcik7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55
KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAgICAgY2Fpcm9fc2V0X2xpbmVfd2lk
dGgoY3IsIHdpZHRoKTsKLSAgICBzdHJva2VQYXRoKCk7CisgICAgc3Ryb2tlQ3VycmVudENhaXJv
UGF0aCh0aGlzLCBtX2NvbW1vbiwgY3IpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCkBA
IC0xMDc5LDggKzExMTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QYXRoKCkKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190
KiBjciA9IG1fZGF0YS0+Y3I7Ci0gICAgY2Fpcm9fbmV3X3BhdGgoY3IpOworICAgIGNhaXJvX25l
d19wYXRoKG1fZGF0YS0+bV9wZW5kaW5nUGF0aC5tX2NyKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmFkZFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTEwODgsMTAgKzExMjAsMTAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9
IG1fZGF0YS0+Y3I7Ci0gICAgY2Fpcm9fcGF0aF90KiBwID0gY2Fpcm9fY29weV9wYXRoKHBhdGgu
cGxhdGZvcm1QYXRoKCktPm1fY3IpOwotICAgIGNhaXJvX2FwcGVuZF9wYXRoKGNyLCBwKTsKLSAg
ICBjYWlyb19wYXRoX2Rlc3Ryb3kocCk7CisgICAgY2Fpcm9fbWF0cml4X3QgY3VycmVudE1hdHJp
eDsKKyAgICBjYWlyb19nZXRfbWF0cml4KG1fZGF0YS0+Y3IsICZjdXJyZW50TWF0cml4KTsKKyAg
ICBjYWlyb19zZXRfbWF0cml4KG1fZGF0YS0+bV9wZW5kaW5nUGF0aC5tX2NyLCAmY3VycmVudE1h
dHJpeCk7CisgICAgYXBwZW5kV2ViQ29yZVBhdGhUb0NhaXJvQ29udGV4dChtX2RhdGEtPm1fcGVu
ZGluZ1BhdGgubV9jciwgcGF0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNv
bnN0IFBhdGgmIHBhdGgpCkBAIC0xMTI0LDcgKzExNTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2xpcE91dChjb25zdCBQYXRoJiBwYXRoKQogICAgIGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsK
ICAgICBjYWlyb19jbGlwX2V4dGVudHMoY3IsICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAgICAgY2Fp
cm9fcmVjdGFuZ2xlKGNyLCB4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpOwotICAgIGFkZFBhdGgo
cGF0aCk7CisgICAgYXBwZW5kV2ViQ29yZVBhdGhUb0NhaXJvQ29udGV4dChjciwgcGF0aCk7CiAK
ICAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVs
ZShjcik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX0VWRU5f
T0REKTsKQEAgLTExODMsOCArMTIxNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91
bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgciwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwKIAogICAg
IGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAgICBjYWlyb19zYXZlKGNyKTsKLSAgICBiZWdp
blBhdGgoKTsKLSAgICBhZGRQYXRoKFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUociwgdG9w
TGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CisgICAgYXBwZW5kV2Vi
Q29yZVBhdGhUb0NhaXJvQ29udGV4dChjciwgUGF0aDo6Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShy
LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKICAgICBzZXRD
b2xvcihjciwgY29sb3IpOwogICAgIGRyYXdQYXRoU2hhZG93KHRoaXMsIG1fY29tbW9uLCB0cnVl
LCBmYWxzZSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZUNhaXJvLmgKaW5kZXggNWUzODgzMjRkY2Q2ZmIxZTcxZGIxZWE1ODJiZTY5NzQzYTBi
OGViMy4uOTdlN2UwN2Y0NzQ4NDJjMTU2ODYyZjI3YWYzNjFkOTc4ZDQ1MGIxMSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGVDYWlyby5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaApAQCAtOTUsNiArOTUsNyBAQCBwdWJs
aWM6CiAKICAgICBjYWlyb190KiBjcjsKICAgICBWZWN0b3I8ZmxvYXQ+IGxheWVyczsKKyAgICBD
YWlyb1BhdGggbV9wZW5kaW5nUGF0aDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHZGtFdmVu
dEV4cG9zZSogZXhwb3NlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>64019</attachid>
            <date>2010-08-10 09:42:09 -0700</date>
            <delta_ts>2010-08-10 09:42:09 -0700</delta_ts>
            <desc>Screenshot</desc>
            <filename>screenshot.png</filename>
            <type>image/png</type>
            <size>51912</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
      

    </bug>

</bugzilla>