<?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>78315</bug_id>
          
          <creation_ts>2012-02-09 19:11:47 -0800</creation_ts>
          <short_desc>REGRESSION(99539): Infinite repaint loop with SVGImage and deferred repaint timers</short_desc>
          <delta_ts>2012-04-06 23:36:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>79707</dependson>
    
    <dependson>79840</dependson>
    
    <dependson>80732</dependson>
    
    <dependson>81010</dependson>
    
    <dependson>82052</dependson>
          <blocked>82232</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>mitz</cc>
    
    <cc>morrita</cc>
    
    <cc>schenney</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>553730</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-02-09 19:11:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/10651634&gt;

Turning on deferred repaint timers exposes an issue in SVGImage/SVGImageChromeClient which gets WebKit into a state of infinitely repainting.

Steps to Reproduce:

0. Turn on layer borders, to make the repainting clear.
1. Switch on deferred repaint timers in JavaScriptCore/wtf/Platform.h (#define ENABLE_REPAINT_THROTTLING 1)
2. Open the attached (extremely simple) test case.

The result is that after the deferred repaint timer fires, SVGImageChromeClient ends up invalidating the SVGImageCache, and we repaint the image, causing another deferred repaint timer to be started, and so on.

Niko, my question for you: why do we invalidate the image in this situation? Where do you think it&apos;s best to break the loop? Antti is of the belief that we should break it somewhere between SVGImageChromeClient and SVGImageCache, but neither of us are sure where to do so!

Here&apos;s a partial backtrace of the interesting bit:

#0  WebCore::SVGImageCache::imageContentChanged (this=0x7f9f8f00bf20) at /Volumes/SSD/src/WebKit/OpenSource/Source/WebCore/svg/graphics/SVGImageCache.cpp:80
#1  0x000000010e680326 in WebCore::CachedImage::changedInRect (this=0x7f9f8b820800, image=0x7f9f8f00d3e0, rect=@0x7fff6c4c7448) at /Volumes/SSD/src/WebKit/OpenSource/Source/WebCore/loader/cache/CachedImage.cpp:462
#2  0x000000010e680377 in non-virtual thunk to WebCore::CachedImage::changedInRect(WebCore::Image const*, WebCore::IntRect const&amp;) () at /Volumes/SSD/src/WebKit/OpenSource/Source/WebCore/loader/cache/CachedImage.cpp:467
#3  0x000000010f953cff in WebCore::SVGImageChromeClient::invalidateContentsAndRootView (this=0x7f9f8f00d530, r=@0x7fff6c4c7448) at /Volumes/SSD/src/WebKit/OpenSource/Source/WebCore/svg/graphics/SVGImage.cpp:80
#4  0x000000010e6b9a25 in WebCore::Chrome::invalidateContentsAndRootView (this=0x7f9f8f00c030, updateRect=@0x7fff6c4c7448, immediate=false) at /Volumes/SSD/src/WebKit/OpenSource/Source/WebCore/page/Chrome.cpp:86
#5  0x000000010f814935 in WebCore::ScrollView::repaintContentRectangle (this=0x7f9f8f010ce0, rect=@0x7f9f910010b0, now=false) at /Volumes/SSD/src/WebKit/OpenSource/Source/WebCore/platform/ScrollView.cpp:959
#6  0x000000010ebd7227 in WebCore::FrameView::doDeferredRepaints (this=0x7f9f8f010ce0) at /Volumes/SSD/src/WebKit/OpenSource/Source/WebCore/page/FrameView.cpp:1907
#7  0x000000010ebcf2b9 in WebCore::FrameView::deferredRepaintTimerFired (this=0x7f9f8f010ce0) at /Volumes/SSD/src/WebKit/OpenSource/Source/WebCore/page/FrameView.cpp:1950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553731</commentid>
    <comment_count>1</comment_count>
      <attachid>126433</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-02-09 19:12:28 -0800</bug_when>
    <thetext>Created attachment 126433
repro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557064</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-15 01:58:31 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; The result is that after the deferred repaint timer fires, SVGImageChromeClient ends up invalidating the SVGImageCache, and we repaint the image, causing another deferred repaint timer to be started, and so on.
Ouch this is evil. When the SVG embedded document repaint timer fires, we should trigger a repaint of the host document. This is not the problematic part, right? It all happens in the SVG documents FrameView itself? (
 
&gt; Niko, my question for you: why do we invalidate the image in this situation? Where do you think it&apos;s best to break the loop? Antti is of the belief that we should break it somewhere between SVGImageChromeClient and SVGImageCache, but neither of us are sure where to do so!

Looking at:

void SVGImageCache::imageContentChanged()
{
    ImageDataMap::iterator end = m_imageDataMap.end();
    for (ImageDataMap::iterator it = m_imageDataMap.begin(); it != end; ++it)
        it-&gt;second.imageNeedsUpdate = true;

    // Start redrawing dirty images with a timer, as imageContentChanged() may be called
    // by the FrameView of the SVGImage which is currently in FrameView::layout().
    if (!m_redrawTimer.isActive())
        m_redrawTimer.startOneShot(0);

the redraw timer was invented, to avoid redrawing from within layout - here FrameView::layout() is not the root of the stack trace (at least it seems so, correct me if I&apos;m wrong, but the deferred repaint timer should always fire after FrameView::layout() finished).

Hm, as quick test within an ENABLE_REPAINT_THROTTLING enabled build, could you try to just remove the m_redrawTimer, and copy the content of redrawTimerFired into imageContentChanged -- does that fix the bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557550</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-02-15 14:27:39 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; The result is that after the deferred repaint timer fires, SVGImageChromeClient ends up invalidating the SVGImageCache, and we repaint the image, causing another deferred repaint timer to be started, and so on.
&gt; Ouch this is evil. When the SVG embedded document repaint timer fires, we should trigger a repaint of the host document. This is not the problematic part, right? It all happens in the SVG documents FrameView itself? (
&gt; 
&gt; &gt; Niko, my question for you: why do we invalidate the image in this situation? Where do you think it&apos;s best to break the loop? Antti is of the belief that we should break it somewhere between SVGImageChromeClient and SVGImageCache, but neither of us are sure where to do so!
&gt; 
&gt; Looking at:
&gt; 
&gt; void SVGImageCache::imageContentChanged()
&gt; {
&gt;     ImageDataMap::iterator end = m_imageDataMap.end();
&gt;     for (ImageDataMap::iterator it = m_imageDataMap.begin(); it != end; ++it)
&gt;         it-&gt;second.imageNeedsUpdate = true;
&gt; 
&gt;     // Start redrawing dirty images with a timer, as imageContentChanged() may be called
&gt;     // by the FrameView of the SVGImage which is currently in FrameView::layout().
&gt;     if (!m_redrawTimer.isActive())
&gt;         m_redrawTimer.startOneShot(0);
&gt; 
&gt; the redraw timer was invented, to avoid redrawing from within layout - here FrameView::layout() is not the root of the stack trace (at least it seems so, correct me if I&apos;m wrong, but the deferred repaint timer should always fire after FrameView::layout() finished).
&gt; 
&gt; Hm, as quick test within an ENABLE_REPAINT_THROTTLING enabled build, could you try to just remove the m_redrawTimer, and copy the content of redrawTimerFired into imageContentChanged -- does that fix the bug?

*Excellent*! That does it... so, is there a better way to prevent repainting from inside of layout?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557587</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-15 14:52:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; *Excellent*! That does it... so, is there a better way to prevent repainting from inside of layout?
Phew! Glad I still knew what&apos;s going on there :-) Anyhow, my assumption that this is only ever called from within FrameView::layout, doesn&apos;t hold - so that needs to be fixed. Maybe as simple as checking for frameView-&gt;needsLayout() - if it returns false, don&apos;t start our timer, but redraw immediately.

Does that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557808</commentid>
    <comment_count>5</comment_count>
      <attachid>127291</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-02-15 18:41:53 -0800</bug_when>
    <thetext>Created attachment 127291
experimental patch (for ews)

This fixes it for me, but I&apos;m not sure it&apos;s appropriate (I see no obvious way to get to the frameview without plumbing it through in an ugly way, so I went with redraw-immediately-if-we&apos;re-painting, using the painting check from CachedImage). Uploading here to check chromium EWS and see what it says.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558064</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-16 03:56:54 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=127291) [details]
&gt; experimental patch (for ews)
&gt; 
&gt; This fixes it for me, but I&apos;m not sure it&apos;s appropriate (I see no obvious way to get to the frameview without plumbing it through in an ugly way, so I went with redraw-immediately-if-we&apos;re-painting, using the painting check from CachedImage). Uploading here to check chromium EWS and see what it says.

I&apos;m not sure if the patch is perfect as well never used the currentPaintTimeStamp logic so far, anyhow it might be easier to just grab a FrameView. SVGImageCache has acccess to the SVGImage. You could add a FrameView* accessor to SVGImage and use it from SVGImageCache, no?
The SVGImage has the Page, which has the Frame &amp; FrameView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558307</commentid>
    <comment_count>7</comment_count>
      <attachid>127403</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-02-16 10:24:58 -0800</bug_when>
    <thetext>Created attachment 127403
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558362</commentid>
    <comment_count>8</comment_count>
      <attachid>127403</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-16 11:20:18 -0800</bug_when>
    <thetext>Comment on attachment 127403
patch

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

r=me, but please add null-checks first.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:260
&gt; +    return m_page-&gt;mainFrame()-&gt;view();

You should check for a null m_page,, as hasRelativeWidth etc. does.

&gt; Source/WebCore/svg/graphics/SVGImage.h:57
&gt; +    FrameView* frameView();

Should be const, no?

&gt; Source/WebCore/svg/graphics/SVGImageCache.cpp:87
&gt; +    if (m_svgImage-&gt;frameView()-&gt;needsLayout() &amp;&amp; !m_redrawTimer.isActive())

This needs a null-check as well, m_page could be null, if not, you&apos;l need assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558442</commentid>
    <comment_count>9</comment_count>
      <attachid>127403</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-16 12:40:21 -0800</bug_when>
    <thetext>Comment on attachment 127403
patch

Attachment 127403 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11539200

New failing tests:
svg/as-image/animated-svg-as-image-no-fixed-intrinsic-size.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558760</commentid>
    <comment_count>10</comment_count>
      <attachid>127484</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-02-16 17:49:18 -0800</bug_when>
    <thetext>Created attachment 127484
revised patch

The logic was slightly wrong; before, with the !timer.isActive() inside the same condition as needsLayout(), if the timer was active and we were in layout, we would (bad!) perform an immediate repaint. Uploading in hopes that the Chromium EWS is happier with this, but this does fix it locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564520</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-02-24 11:41:56 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/108834</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566464</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-28 00:37:15 -0800</bug_when>
    <thetext>Tim, this broke Chromium/Mac 10.6, according to ennes observation in bug 79707.
Can you revisit this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566466</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-02-28 00:39:22 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Tim, this broke Chromium/Mac 10.6, according to ennes observation in bug 79707.
&gt; Can you revisit this?

Kinda bizarre that it would only break that platform! I&apos;ll take a look, but it&apos;s not a configuration I have readily available. Do you have any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571086</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-05 15:15:20 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Tim, this broke Chromium/Mac 10.6, according to ennes observation in bug 79707.
&gt; &gt; Can you revisit this?
&gt; 
&gt; Kinda bizarre that it would only break that platform! I&apos;ll take a look, but it&apos;s not a configuration I have readily available. Do you have any thoughts?

I can reproduce on Mac (though only inside DRT).

This isn&apos;t going to work as-is (obviously, since it got rolled out) because we end up modifying m_repaintRects while inside the loop in doDeferredRepaints, because drawSVGToImageBuffer ends up doing layout...

1   0x10936f104 WebCore::FrameView::repaintContentRectangle(WebCore::IntRect const&amp;, bool)
2   0x109f89309 WebCore::RenderView::repaintViewRectangle(WebCore::IntRect const&amp;, bool)
3   0x109e93ba1 WebCore::RenderObject::repaintUsingContainer(WebCore::RenderBoxModelObject*, WebCore::IntRect const&amp;, bool)
4   0x109e93d2d WebCore::RenderObject::repaint(bool)
5   0x10936b4fd WebCore::FrameView::layout(bool)
6   0x10a19e7f6 WebCore::SVGImage::draw(WebCore::GraphicsContext*, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ColorSpace, WebCore::CompositeOperator)
7   0x10a19e424 WebCore::SVGImage::drawSVGToImageBuffer(WebCore::ImageBuffer*, WebCore::IntSize const&amp;, float, WebCore::SVGImage::ShouldClearBuffer)
8   0x10a1a431a WebCore::SVGImageCache::redraw()
9   0x10a1a4191 WebCore::SVGImageCache::imageContentChanged()
10  0x108dcdc56 WebCore::CachedImage::changedInRect(WebCore::Image const*, WebCore::IntRect const&amp;)
11  0x108dcdca7 non-virtual thunk to WebCore::CachedImage::changedInRect(WebCore::Image const*, WebCore::IntRect const&amp;)
12  0x10a1a1aff WebCore::SVGImageChromeClient::invalidateContentsAndRootView(WebCore::IntRect const&amp;, bool)
13  0x108e150f5 WebCore::Chrome::invalidateContentsAndRootView(WebCore::IntRect const&amp;, bool)
14  0x10a045055 WebCore::ScrollView::repaintContentRectangle(WebCore::IntRect const&amp;, bool)
15  0x10936f99a WebCore::FrameView::doDeferredRepaints()
16  0x109367949 WebCore::FrameView::deferredRepaintTimerFired(WebCore::Timer&lt;WebCore::FrameView&gt;*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571108</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-05 15:38:48 -0800</bug_when>
    <thetext>&gt; This isn&apos;t going to work as-is (obviously, since it got rolled out) because we end up modifying m_repaintRects while inside the loop in doDeferredRepaints, because drawSVGToImageBuffer ends up doing layout...

The layout occurs because of the resize:

SVGImage::drawSVGToImageBuffer    frame-&gt;view()-&gt;resize(this-&gt;size());

From other fixes to similar problems in this area in the past, I assume the correct solution is to ensure that the layout (and the resize) happen before we&apos;re painting at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571799</commentid>
    <comment_count>16</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-06 06:29:30 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; SVGImage::drawSVGToImageBuffer    frame-&gt;view()-&gt;resize(this-&gt;size());
&gt; 
&gt; From other fixes to similar problems in this area in the past, I assume the correct solution is to ensure that the layout (and the resize) happen before we&apos;re painting at all.
drawSVGToImageBuffer layouts the SVG document, and paints it while the host document is painting. This is potentially okay, when done right. Currently drawSVGToImageBuffer overrides the imageObserver to zero, so that any frame view resize calls etc. that follow, don&apos;t cause calls to SVGImageChromeClient::invalidateContentsAndRootView(), as that calls back to the host document, which is currently painting.

But I&apos;ve realized this doensn&apos;t prevent the SVG documents FrameView to schedule relayouts/repaints, and that&apos;s the problem - we don&apos;t want that at all.

Currently drawSVGToImageBuffer works like this:
- Override image observer, so that no one notices what we&apos;re doing with the SVG document (in theory)
- Resize to desired target size and zoom factor (this information comes from the SVGImageCache) - utilizing SVGImage::draw(), which calls frameView-&gt;layout().
- Draw SVG root object to ImageBuffer (SVGImage::draw, calling frameView-&gt;paint()).
- Reset zoom factor and size to initial size
- Restore image observer.

Basically we need to be able to snapshot the document at a specific size &amp; zoom level, but then restore the original document as-is. We can&apos;t leave the cached document mutated in any way. Consider two SVG documents which both embed foo.svg - if document &apos;A&apos; wants to draw the SVG Image into a 300x300 target &lt;div&gt; element as background-image, it would resize the SVG document to 300x300, paint that. Now what if document &apos;B&apos; already embedded the embedded SVG before with another size? It would now get redrawn as well using another size.....

When animations are running its even harder to get this right, if resources are shared.

To summarize: I think the drawSVGToImageBuffer approach is right in general, but still has some bugs. 
You coudl try to call frame-&gt;view()-&gt;beginDefferedRepaints() after the setImageObserver(0) call, end endDeferredRepaints() after the restoring of it, and see if that affects anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572081</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-06 12:55:40 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; To summarize: I think the drawSVGToImageBuffer approach is right in general, but still has some bugs. 
&gt; You coudl try to call frame-&gt;view()-&gt;beginDefferedRepaints() after the setImageObserver(0) call, end endDeferredRepaints() after the restoring of it, and see if that affects anything.

That will just result in queueing all the repaints-we-don&apos;t-want up and firing them at the end :-D (experimental results agree)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572095</commentid>
    <comment_count>18</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-06 13:17:08 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; To summarize: I think the drawSVGToImageBuffer approach is right in general, but still has some bugs. 
&gt; &gt; You coudl try to call frame-&gt;view()-&gt;beginDefferedRepaints() after the setImageObserver(0) call, end endDeferredRepaints() after the restoring of it, and see if that affects anything.
&gt; 
&gt; That will just result in queueing all the repaints-we-don&apos;t-want up and firing them at the end :-D (experimental results agree)

Whereas adding a way to explicitly prevent FrameView from firing any repaints works fine. Not sure that&apos;s actually a reasonable thing to do, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572660</commentid>
    <comment_count>19</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-07 00:48:42 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; To summarize: I think the drawSVGToImageBuffer approach is right in general, but still has some bugs. 
&gt; &gt; &gt; You coudl try to call frame-&gt;view()-&gt;beginDefferedRepaints() after the setImageObserver(0) call, end endDeferredRepaints() after the restoring of it, and see if that affects anything.
&gt; &gt; 
&gt; &gt; That will just result in queueing all the repaints-we-don&apos;t-want up and firing them at the end :-D (experimental results agree)
&gt; 
&gt; Whereas adding a way to explicitly prevent FrameView from firing any repaints works fine. Not sure that&apos;s actually a reasonable thing to do, though.
Ah yeah, that&apos;s true - just deffering won&apos;t help, we need to clear these repaints.
I think its reasonable, as SVGImage is really special. We want to force layout, paint, and reset layout to the old state w/o any side effects (aka. triggering repainting or anything in the host document)...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573428</commentid>
    <comment_count>20</comment_count>
      <attachid>130740</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-07 17:57:13 -0800</bug_when>
    <thetext>Created attachment 130740
revised patch, cancelling all painting during layout inside drawSVGToImageBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574759</commentid>
    <comment_count>21</comment_count>
      <attachid>130740</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-09 02:37:38 -0800</bug_when>
    <thetext>Comment on attachment 130740
revised patch, cancelling all painting during layout inside drawSVGToImageBuffer

Looks great to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575026</commentid>
    <comment_count>22</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-09 11:22:27 -0800</bug_when>
    <thetext>Re-landed in http://trac.webkit.org/changeset/110309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575305</commentid>
    <comment_count>23</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-09 15:40:24 -0800</bug_when>
    <thetext>Re-rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575648</commentid>
    <comment_count>24</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-10 22:48:14 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Re-rolled out.

I can&apos;t reproduce any crashes or unexpected failures at all related to this patch with a cr-mac-lion or mac-lion build...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575649</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-10 22:58:55 -0800</bug_when>
    <thetext>The crashes went away when we rolled out the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575650</commentid>
    <comment_count>26</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-10 23:00:05 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; The crashes went away when we rolled out the patch.

Indeed; I&apos;ll find a SL machine, I guess. It would be really nice if the bot crash logs worked :-\</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575651</commentid>
    <comment_count>27</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-10 23:05:44 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; The crashes went away when we rolled out the patch.
&gt; 
&gt; Indeed; I&apos;ll find a SL machine, I guess. It would be really nice if the bot crash logs worked :-\

Or not, I can make it reproduce by turning on deferred repaints. They must only be on on SL by default? (I was never able to find out where/why you guys were turning them on last time I looked). Will investigate, anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576340</commentid>
    <comment_count>28</comment_count>
      <attachid>131367</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-12 11:45:51 -0700</bug_when>
    <thetext>Created attachment 131367
patch (third time&apos;s a charm); this time, prevent deferred timers from even being started

This patch passes on mac-lion and cr-mac-lion (in both cases, with deferred repaint timers forced on). That said, before this fix I was easily able to make the failures flaky by running a different subset of tests, since they&apos;re timing related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576435</commentid>
    <comment_count>29</comment_count>
      <attachid>131367</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-12 13:09:01 -0700</bug_when>
    <thetext>Comment on attachment 131367
patch (third time&apos;s a charm); this time, prevent deferred timers from even being started

Looks great to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576436</commentid>
    <comment_count>30</comment_count>
      <attachid>131367</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-12 13:09:35 -0700</bug_when>
    <thetext>Comment on attachment 131367
patch (third time&apos;s a charm); this time, prevent deferred timers from even being started

Looks great to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576459</commentid>
    <comment_count>31</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-12 13:27:20 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/110469</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577156</commentid>
    <comment_count>32</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-13 01:29:51 -0700</bug_when>
    <thetext>This crashes on cr-mac (again?)...

----
Regressions: Unexpected DumpRenderTree crashes : (5)
  svg/as-background-image/svg-as-background-6.html = CRASH
  svg/as-image/svg-nested.html = CRASH
  svg/custom/fill-opacity-rgba.svg = CRASH
  tables/mozilla_expected_failures/marvin/table_overflow_td_align_right.html = CRASH
  transitions/interrupt-transform-transition.html = CRASH
----
http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Mac10.6%20%28dbg%29/builds/8809
The range under suspicion is from r110481 to r110466, which includes this one.
And the crash list is highly related svg images...
And unfortunately the log didn&apos;t leave any stack traces. 

WildFox@ told me that this is tested against even cr-mac.
So I&apos;m hesitant to revert this blindly. But I don&apos;t want to leave this as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577271</commentid>
    <comment_count>33</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-13 06:50:17 -0700</bug_when>
    <thetext>Got some stacktraces https://gist.github.com/2028708</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577291</commentid>
    <comment_count>34</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-13 07:30:30 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Got some stacktraces https://gist.github.com/2028708

Some look related; I don&apos;t understand why the assertion failures are so intermittent. I&apos;ll take a look right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577308</commentid>
    <comment_count>35</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-13 07:57:36 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; Some look related; I don&apos;t understand why the assertion failures are so intermittent. I&apos;ll take a look right away.
The rest are mine from bug 12437.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577376</commentid>
    <comment_count>36</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-13 08:55:34 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; Got some stacktraces https://gist.github.com/2028708
&gt; 
&gt; Some look related; I don&apos;t understand why the assertion failures are so intermittent. I&apos;ll take a look right away.

I can&apos;t make this reproduce at all on cr-mac-lion with deferred repaint timers forced on; you guys can roll it out if it&apos;s still failing, but I&apos;m at a loss for how to fix it this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577402</commentid>
    <comment_count>37</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-03-13 09:06:56 -0700</bug_when>
    <thetext>I&apos;d rather we avoid rolling this out again. Tim has done due diligence in trying to debug this in cr-mac, and I think it&apos;s time to get some help from Chromium people.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577447</commentid>
    <comment_count>38</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-13 09:47:31 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; I&apos;d rather we avoid rolling this out again. Tim has done due diligence in trying to debug this in cr-mac, and I think it&apos;s time to get some help from Chromium people.

Or Niko, since r99539 was his (though he&apos;s been a great help all along!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579085</commentid>
    <comment_count>39</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-14 20:44:06 -0700</bug_when>
    <thetext>Reopening because this one was reverted at r110581.
I&apos;m investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581716</commentid>
    <comment_count>40</comment_count>
      <attachid>132567</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-19 03:11:19 -0700</bug_when>
    <thetext>Created attachment 132567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581717</commentid>
    <comment_count>41</comment_count>
      <attachid>131367</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-19 03:13:11 -0700</bug_when>
    <thetext>Comment on attachment 131367
patch (third time&apos;s a charm); this time, prevent deferred timers from even being started

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

Hi Zimmerman, could you rubberstamp? I&apos;d like to see if my fix works.
It works on my local mac-chromium.

&gt; Source/WebCore/page/FrameView.cpp:-1853
&gt; -        return;

Found that this deletion caused the assertion failure.
I recovered this line on the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581762</commentid>
    <comment_count>42</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-19 07:24:49 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 131367 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131367&amp;action=review
&gt; 
&gt; Hi Zimmerman, could you rubberstamp? I&apos;d like to see if my fix works.
&gt; It works on my local mac-chromium.
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:-1853
&gt; &gt; -        return;
&gt; 
&gt; Found that this deletion caused the assertion failure.
&gt; I recovered this line on the updated patch.


Hey Hajime,

sure, let&apos;s give it a try, rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583677</commentid>
    <comment_count>43</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-20 18:20:08 -0700</bug_when>
    <thetext>Committed r111480: &lt;http://trac.webkit.org/changeset/111480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584980</commentid>
    <comment_count>44</comment_count>
      <attachid>132567</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-21 22:19:56 -0700</bug_when>
    <thetext>Comment on attachment 132567
Patch

Landed at r111480. Closing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584983</commentid>
    <comment_count>45</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-21 22:23:48 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (From update of attachment 132567 [details])
&gt; Landed at r111480. Closing.

Yay! Thanks for your help, Hajime!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596566</commentid>
    <comment_count>46</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-04-05 08:05:55 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596567</commentid>
    <comment_count>47</comment_count>
      <attachid>135825</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-04-05 08:05:59 -0700</bug_when>
    <thetext>Created attachment 135825
Patch

This problem has been a nightmare. The fix as currently in trunk causes crashes on MacOS for Chromium tests, and probably also causes flaky results on Release builds. This patch addresses the remaining problems, and after tens of thousands of test runs on a MacOS 10.6 machine there are no signs of crashes. The previous crash rate was about 1 in 20. There may still be issues with the repaint timer firing in the _next_ layout test, but I&apos;ll deal with that separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596585</commentid>
    <comment_count>48</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-04-05 08:25:32 -0700</bug_when>
    <thetext>I can also shed some light on why this is flaky. That is, why the crashes only happen rarely (although I have no idea why only on Mac platforms).

DRT execution traces looking at layout calls and requests for repaint show that non-crash runs execute very linearly, in the sense that there is an initial layout, a resize or two, another layout and we&apos;re done. The runs that crash, for some reason, have a layout timer that fires and causes SVG layout to fire which makes many many more calls requesting repaint of various rects. This in turn gets the repaint timer into the mix and the interactions between the timers causes problems.

I&apos;m guessing that the underlying issue is how fast some content comes off disk, or how the OS timers behave, or how loaded the machine is, or ...

In some cases we are also seeing the SVGImageCache repaint timer fire at the very beginning of a test. We find this odd and need to investigate further. It does, however, explain why this crash can be hit even when there is no SVG content in the test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596601</commentid>
    <comment_count>49</comment_count>
      <attachid>135825</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-05 08:44:05 -0700</bug_when>
    <thetext>Comment on attachment 135825
Patch

The whole thing of even needing to fire a timer to redraw sounds bad, but this doesn&apos;t make it worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596609</commentid>
    <comment_count>50</comment_count>
      <attachid>135825</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-04-05 08:51:29 -0700</bug_when>
    <thetext>Comment on attachment 135825
Patch

Clearing flags on attachment: 135825

Committed r113323: &lt;http://trac.webkit.org/changeset/113323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596610</commentid>
    <comment_count>51</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-04-05 08:51:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597928</commentid>
    <comment_count>52</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-06 23:36:37 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; (From update of attachment 135825 [details])
&gt; The whole thing of even needing to fire a timer to redraw sounds bad, but this doesn&apos;t make it worse.
Your intuition is correct, it&apos;s indeed weird on first sight, but there were good arguments for it, see the bug which initially introduced SVGImageCache.

Stephen, thanks so much for tackling this!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>126433</attachid>
            <date>2012-02-09 19:12:28 -0800</date>
            <delta_ts>2012-02-09 19:12:28 -0800</delta_ts>
            <desc>repro</desc>
            <filename>repro.zip</filename>
            <type>application/zip</type>
            <size>1154</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">UEsDBBQACAAIAEiFO0AAAAAAAAAAAAAAAAAKABAAYnJva2VuLnN2Z1VYDAD+ijRPaEQjT/UBFAAl
zEEOgyAQheG1nmLC2swwoFIM5Tq0iQJRIu3ti3b5v3x57jgDfLY1Hk/xKiUvRLVWrBrTHkhJKakJ
4fvO5bR+Q4qQ0zuWxi0qaQaDrGYwaKweHjiNDMx3sPqXvlkbmxNAvnfXo/8BUEsHCAYagAZnAAAA
eQAAAFBLAwQKAAAAAACHmUlAAAAAAAAAAAAAAAAACQAQAF9fTUFDT1NYL1VYDAAOizRPDos0T/UB
FABQSwMEFAAIAAgASIU7QAAAAAAAAAAAAAAAABUAEABfX01BQ09TWC8uX2Jyb2tlbi5zdmdVWAwA
/oo0T2hEI0/1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFxOxCD+DsZiAKOISFBUCZIxwwg
VkRTwogQF03Oz9XLTUwuys9NLEkt1ktOLEotYajmArkiOT+nNDdPwVbBzBrMz8nMSwXyjKy5agFQ
SwcIS4vZ3WUAAAC5AAAAUEsDBBQACAAIALdlSEAAAAAAAAAAAAAAAAAKABAAaW5kZXguaHRtbFVY
DAACizRP+t4yT/UBFACzKS6pzEm141LOzE1MT1WoVijPTCnJsDIyNSuosFbISM1MzyiB8ZISk7PT
i/JL81J0waqtSotyNJSSivKzU/P0isvSlTStFRRquWz0oWZy2aRklilkptgqgZUr2dnoAwXsuABQ
SwcIeuRFMGMAAAB0AAAAUEsDBBQACAAIALdlSEAAAAAAAAAAAAAAAAAVABAAX19NQUNPU1gvLl9p
bmRleC5odG1sVVgMAAKLNE/63jJP9QEUAGNgFWNnYGJg8E1MVvAPVohQgAKQGAMnEBsBcQcQg/i7
GIgCjiEhQVAmSMcMIFZCU8KIEBdNzs/Vy01MLsrPTSxJLdZLTixKLWGo5gK5Ijk/pzQ3T8FWwczE
GiyQk5mXCuQaWnPVAgBQSwcIThEFfGcAAAC6AAAAUEsBAhUDFAAIAAgASIU7QAYagAZnAAAAeQAA
AAoADAAAAAAAAAAAQKSBAAAAAGJyb2tlbi5zdmdVWAgA/oo0T2hEI09QSwECFQMKAAAAAACHmUlA
AAAAAAAAAAAAAAAACQAMAAAAAAAAAABA/UGvAAAAX19NQUNPU1gvVVgIAA6LNE8OizRPUEsBAhUD
FAAIAAgASIU7QEuL2d1lAAAAuQAAABUADAAAAAAAAAAAQKSB5gAAAF9fTUFDT1NYLy5fYnJva2Vu
LnN2Z1VYCAD+ijRPaEQjT1BLAQIVAxQACAAIALdlSEB65EUwYwAAAHQAAAAKAAwAAAAAAAAAAECk
gZ4BAABpbmRleC5odG1sVVgIAAKLNE/63jJPUEsBAhUDFAAIAAgAt2VIQE4RBXxnAAAAugAAABUA
DAAAAAAAAAAAQKSBSQIAAF9fTUFDT1NYLy5faW5kZXguaHRtbFVYCAACizRP+t4yT1BLBQYAAAAA
BQAFAGkBAAADAwAAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127291</attachid>
            <date>2012-02-15 18:41:53 -0800</date>
            <delta_ts>2012-02-16 10:24:58 -0800</delta_ts>
            <desc>experimental patch (for ews)</desc>
            <filename>repaint.diff</filename>
            <type>text/plain</type>
            <size>2068</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCBj
ZDkwMWY0Li4wYWEyMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlQ2FjaGUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiU1ZHSW1hZ2VDYWNoZS5o
IgogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR1Jvb3QuaCIKQEAgLTgxLDEzICs4MiwxNSBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6Omlt
YWdlQ29udGVudENoYW5nZWQoKQogICAgIGZvciAoSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9
IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnNl
Y29uZC5pbWFnZU5lZWRzVXBkYXRlID0gdHJ1ZTsKIAotICAgIC8vIFN0YXJ0IHJlZHJhd2luZyBk
aXJ0eSBpbWFnZXMgd2l0aCBhIHRpbWVyLCBhcyBpbWFnZUNvbnRlbnRDaGFuZ2VkKCkgbWF5IGJl
IGNhbGxlZAotICAgIC8vIGJ5IHRoZSBGcmFtZVZpZXcgb2YgdGhlIFNWR0ltYWdlIHdoaWNoIGlz
IGN1cnJlbnRseSBpbiBGcmFtZVZpZXc6OmxheW91dCgpLgotICAgIGlmICghbV9yZWRyYXdUaW1l
ci5pc0FjdGl2ZSgpKQorICAgIC8vIElmIHdlJ3JlIG5vdCBwYWludGluZywgd2UgY291bGQgYmUg
aW4gdGhlIG1pZGRsZSBvZiBsYXlvdXQsIHNvIHN0YXJ0CisgICAgLy8gcmVkcmF3aW5nIGRpcnR5
IGltYWdlcyBvbiBhIHRpbWVyLgorICAgIGlmIChGcmFtZVZpZXc6OmN1cnJlbnRQYWludFRpbWVT
dGFtcCgpID09IDApCisgICAgICAgIHJlZHJhdygpOworICAgIGVsc2UgaWYgKCFtX3JlZHJhd1Rp
bWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcmVkcmF3VGltZXIuc3RhcnRPbmVTaG90KDApOwog
fQogCi12b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VD
YWNoZT4qKQordm9pZCBTVkdJbWFnZUNhY2hlOjpyZWRyYXcoKQogewogICAgIEltYWdlRGF0YU1h
cDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURhdGFNYXAuZW5kKCk7CiAgICAgZm9yIChJbWFnZURh
dGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CkBAIC0xMDUsNiArMTA4LDExIEBAIHZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGlt
ZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopCiAgICAgbV9zdmdJbWFnZS0+aW1hZ2VPYnNl
cnZlcigpLT5hbmltYXRpb25BZHZhbmNlZChtX3N2Z0ltYWdlKTsKIH0KIAordm9pZCBTVkdJbWFn
ZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKFRpbWVyPFNWR0ltYWdlQ2FjaGU+KikKK3sKKyAgICBy
ZWRyYXcoKTsKK30KKwogSW1hZ2UqIFNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0bWFw
SW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIEFT
U0VSVChyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuaAppbmRleCA1M2QyMTYxLi40NmI3MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIFNWR0ltYWdlQ2FjaGUoU1ZHSW1hZ2UqKTsKKyAgICB2b2lkIHJlZHJhdygpOwogICAg
IHZvaWQgcmVkcmF3VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopOwogCiAgICAgc3Ry
dWN0IEltYWdlRGF0YSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127403</attachid>
            <date>2012-02-16 10:24:58 -0800</date>
            <delta_ts>2012-02-16 17:49:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>repaint.diff</filename>
            <type>text/plain</type>
            <size>4793</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMDYxY2JlLi5iMDFjMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTItMDItMTYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW5maW5pdGUgcmVwYWludCBsb29wIHdpdGggU1ZHSW1hZ2VDYWNoZSBhbmQgZGVm
ZXJyZWQgcmVwYWludCB0aW1lcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc4MzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDY1MTYzND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGRlZmVy
IGltYWdlIHJlZHJhdyBvbiBhIHRpbWVyIGlmIHdlJ3JlIGluIGxheW91dC4gVGhpcyBicmVha3MK
KyAgICAgICAgdGhlIHJlcGFpbnQgbG9vcCB3aGlsZSBzdGlsbCBwcmV2ZW50aW5nIHVzIGZyb20g
ZHJhd2luZyBpbnNpZGUgbGF5b3V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhlIHBy
b2JsZW0gb25seSBvY2N1cnMgaW4gYSBub25zdGFuZGFyZCBjb25maWd1cmF0aW9uLgorCisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpmcmFtZVZpZXcpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAgIChTVkdJ
bWFnZUNhY2hlKToKKwogMjAxMi0wMi0xNSAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYkNvcmUgYnVpbGQgZXhjZWVkcyBhZGRyZXNzIHNwYWNlIG9uIDMy
LWJpdCBXaW5kb3dzIGJ1aWxkZXJzIChhZ2FpbikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAppbmRleCA3ZTFjZTI4Li4wZTQ0MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFNWR0ltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgRnJhbWVWaWV3
KiB2aWV3ID0gZnJhbWVWaWV3KCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcCk7CkBAIC0yNTUsNiArMjU1LDExIEBAIFJlbmRlckJveCogU1ZHSW1hZ2U6OmVt
YmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmVuZGVyQm94KHJvb3RFbGVt
ZW50LT5yZW5kZXJlcigpKTsKIH0KIAorRnJhbWVWaWV3KiBTVkdJbWFnZTo6ZnJhbWVWaWV3KCkK
K3sKKyAgICByZXR1cm4gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOworfQorCiBib29sIFNW
R0ltYWdlOjpoYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggN2UxNjA0OS4uODFiZjc1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJCb3g7CkBAIC01Myw2ICs1NCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25z
dCBJbnRTaXplJiwgZmxvYXQgem9vbSwgU2hvdWxkQ2xlYXJCdWZmZXIpOwogICAgIFJlbmRlckJv
eCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXco
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKaW5kZXggY2Q5MDFmNC4uMjVmZTc0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcApAQCAtMjEs
NiArMjEsNyBAQAogI2luY2x1ZGUgIlNWR0ltYWdlQ2FjaGUuaCIKIAogI2lmIEVOQUJMRShTVkcp
CisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCkBAIC04
MSwxMyArODIsMTUgQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKCkK
ICAgICBmb3IgKEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGl0LT5zZWNvbmQuaW1hZ2VOZWVkc1VwZGF0
ZSA9IHRydWU7CiAKLSAgICAvLyBTdGFydCByZWRyYXdpbmcgZGlydHkgaW1hZ2VzIHdpdGggYSB0
aW1lciwgYXMgaW1hZ2VDb250ZW50Q2hhbmdlZCgpIG1heSBiZSBjYWxsZWQKLSAgICAvLyBieSB0
aGUgRnJhbWVWaWV3IG9mIHRoZSBTVkdJbWFnZSB3aGljaCBpcyBjdXJyZW50bHkgaW4gRnJhbWVW
aWV3OjpsYXlvdXQoKS4KLSAgICBpZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKKyAgICAv
LyBJZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGxheW91dCwgc3RhcnQgcmVkcmF3aW5nIGRpcnR5
CisgICAgLy8gaW1hZ2VzIG9uIGEgdGltZXI7IG90aGVyd2lzZSBpdCdzIHNhZmUgdG8gZHJhdyBp
bW1lZGlhdGVseS4KKyAgICBpZiAobV9zdmdJbWFnZS0+ZnJhbWVWaWV3KCktPm5lZWRzTGF5b3V0
KCkgJiYgIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9yZWRyYXdUaW1lci5z
dGFydE9uZVNob3QoMCk7CisgICAgZWxzZQorICAgICAgICByZWRyYXcoKTsKIH0KIAotdm9pZCBT
VkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKFRpbWVyPFNWR0ltYWdlQ2FjaGU+KikKK3Zv
aWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3KCkKIHsKICAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9y
IGVuZCA9IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwogICAgIGZvciAoSW1hZ2VEYXRhTWFwOjppdGVy
YXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAt
MTA1LDYgKzEwOCwxMSBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQoVGlt
ZXI8U1ZHSW1hZ2VDYWNoZT4qKQogICAgIG1fc3ZnSW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+YW5p
bWF0aW9uQWR2YW5jZWQobV9zdmdJbWFnZSk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVk
cmF3VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopCit7CisgICAgcmVkcmF3KCk7Cit9
CisKIEltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVu
ZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBBU1NFUlQocmVuZGVy
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKaW5kZXgg
NTNkMjE2MS4uNDZiNzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTVkdJ
bWFnZUNhY2hlKFNWR0ltYWdlKik7CisgICAgdm9pZCByZWRyYXcoKTsKICAgICB2b2lkIHJlZHJh
d1RpbWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4qKTsKIAogICAgIHN0cnVjdCBJbWFnZURh
dGEgewo=
</data>
<flag name="review"
          id="129522"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="129556"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127484</attachid>
            <date>2012-02-16 17:49:18 -0800</date>
            <delta_ts>2012-03-07 17:57:13 -0800</delta_ts>
            <desc>revised patch</desc>
            <filename>repaint.diff</filename>
            <type>text/plain</type>
            <size>4961</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMDYxY2JlLi5iMDFjMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTItMDItMTYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW5maW5pdGUgcmVwYWludCBsb29wIHdpdGggU1ZHSW1hZ2VDYWNoZSBhbmQgZGVm
ZXJyZWQgcmVwYWludCB0aW1lcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc4MzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDY1MTYzND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGRlZmVy
IGltYWdlIHJlZHJhdyBvbiBhIHRpbWVyIGlmIHdlJ3JlIGluIGxheW91dC4gVGhpcyBicmVha3MK
KyAgICAgICAgdGhlIHJlcGFpbnQgbG9vcCB3aGlsZSBzdGlsbCBwcmV2ZW50aW5nIHVzIGZyb20g
ZHJhd2luZyBpbnNpZGUgbGF5b3V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhlIHBy
b2JsZW0gb25seSBvY2N1cnMgaW4gYSBub25zdGFuZGFyZCBjb25maWd1cmF0aW9uLgorCisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpmcmFtZVZpZXcpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAgIChTVkdJ
bWFnZUNhY2hlKToKKwogMjAxMi0wMi0xNSAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYkNvcmUgYnVpbGQgZXhjZWVkcyBhZGRyZXNzIHNwYWNlIG9uIDMy
LWJpdCBXaW5kb3dzIGJ1aWxkZXJzIChhZ2FpbikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAppbmRleCA3ZTFjZTI4Li42MDM5NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFNWR0ltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgRnJhbWVWaWV3
KiB2aWV3ID0gZnJhbWVWaWV3KCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcCk7CkBAIC0yNTUsNiArMjU1LDE0IEBAIFJlbmRlckJveCogU1ZHSW1hZ2U6OmVt
YmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmVuZGVyQm94KHJvb3RFbGVt
ZW50LT5yZW5kZXJlcigpKTsKIH0KIAorRnJhbWVWaWV3KiBTVkdJbWFnZTo6ZnJhbWVWaWV3KCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOworfQorCiBib29sIFNWR0ltYWdlOjpoYXNS
ZWxhdGl2ZVdpZHRoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggN2UxNjA0OS4uMGZlN2I2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNz
IFBhZ2U7CiBjbGFzcyBSZW5kZXJCb3g7CkBAIC01Myw2ICs1NCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQgem9vbSwgU2hvdWxkQ2xlYXJCdWZmZXIpOwogICAgIFJlbmRlckJveCogZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3Q7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKaW5kZXggY2Q5MDFmNC4uNzRhZGQyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcApAQCAtMjEsNiArMjEs
NyBAQAogI2luY2x1ZGUgIlNWR0ltYWdlQ2FjaGUuaCIKIAogI2lmIEVOQUJMRShTVkcpCisjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCkBAIC04MSwxMyAr
ODIsMTggQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKCkKICAgICBm
b3IgKEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGl0LT5zZWNvbmQuaW1hZ2VOZWVkc1VwZGF0ZSA9IHRy
dWU7CiAKLSAgICAvLyBTdGFydCByZWRyYXdpbmcgZGlydHkgaW1hZ2VzIHdpdGggYSB0aW1lciwg
YXMgaW1hZ2VDb250ZW50Q2hhbmdlZCgpIG1heSBiZSBjYWxsZWQKLSAgICAvLyBieSB0aGUgRnJh
bWVWaWV3IG9mIHRoZSBTVkdJbWFnZSB3aGljaCBpcyBjdXJyZW50bHkgaW4gRnJhbWVWaWV3Ojps
YXlvdXQoKS4KLSAgICBpZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9y
ZWRyYXdUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgLy8gSWYgd2UncmUgaW4gdGhlIG1pZGRs
ZSBvZiBsYXlvdXQsIHN0YXJ0IHJlZHJhd2luZyBkaXJ0eQorICAgIC8vIGltYWdlcyBvbiBhIHRp
bWVyOyBvdGhlcndpc2UgaXQncyBzYWZlIHRvIGRyYXcgaW1tZWRpYXRlbHkuCisgICAgCisgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3N2Z0ltYWdlLT5mcmFtZVZpZXcoKTsKKyAgICBpZiAo
ZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkgeworICAgICAgICBpZiAoIW1f
cmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fcmVkcmF3VGltZXIuc3RhcnRP
bmVTaG90KDApOworICAgIH0gZWxzZQorICAgICAgICByZWRyYXcoKTsKIH0KIAotdm9pZCBTVkdJ
bWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKFRpbWVyPFNWR0ltYWdlQ2FjaGU+KikKK3ZvaWQg
U1ZHSW1hZ2VDYWNoZTo6cmVkcmF3KCkKIHsKICAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGVu
ZCA9IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwogICAgIGZvciAoSW1hZ2VEYXRhTWFwOjppdGVyYXRv
ciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMTA1
LDYgKzExMSwxMSBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQoVGltZXI8
U1ZHSW1hZ2VDYWNoZT4qKQogICAgIG1fc3ZnSW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+YW5pbWF0
aW9uQWR2YW5jZWQobV9zdmdJbWFnZSk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3
VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopCit7CisgICAgcmVkcmF3KCk7Cit9CisK
IEltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBBU1NFUlQocmVuZGVyZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKaW5kZXggNTNk
MjE2MS4uNDZiNzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VD
YWNoZS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTVkdJbWFn
ZUNhY2hlKFNWR0ltYWdlKik7CisgICAgdm9pZCByZWRyYXcoKTsKICAgICB2b2lkIHJlZHJhd1Rp
bWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4qKTsKIAogICAgIHN0cnVjdCBJbWFnZURhdGEg
ewo=
</data>
<flag name="review"
          id="129627"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130740</attachid>
            <date>2012-03-07 17:57:13 -0800</date>
            <delta_ts>2012-03-12 11:45:51 -0700</delta_ts>
            <desc>revised patch, cancelling all painting during layout inside drawSVGToImageBuffer</desc>
            <filename>repaint.diff</filename>
            <type>text/plain</type>
            <size>9000</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YzE5MmRhLi5mNWJmNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTItMDMtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW5maW5pdGUgcmVwYWludCBsb29wIHdpdGggU1ZHSW1hZ2VDYWNoZSBhbmQgZGVm
ZXJyZWQgcmVwYWludCB0aW1lcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc4MzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDY1MTYzND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGRlZmVy
IGltYWdlIHJlZHJhdyBvbiBhIHRpbWVyIGlmIHdlJ3JlIGluIGxheW91dC4gVGhpcyBicmVha3MK
KyAgICAgICAgdGhlIHJlcGFpbnQgbG9vcCB3aGlsZSBzdGlsbCBwcmV2ZW50aW5nIHVzIGZyb20g
ZHJhd2luZyBpbnNpZGUgbGF5b3V0LgorCisgICAgICAgIENvbXBsZXRlbHkgZGlzYWJsZSByZXBh
aW50IGR1cmluZyByZWxheW91dCBpbnNpZGUgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVy
LAorICAgICAgICBwcmV2ZW50aW5nIGRlZmVycmVkIHJlcGFpbnQgdGltZXJzIGZyb20gYmVpbmcg
c3RhcnRlZCBkdXJpbmcgdGhhdCBwcm9jZXNzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMg
dGhlIHByb2JsZW0gb25seSBvY2N1cnMgaW4gYSBub25zdGFuZGFyZCBjb25maWd1cmF0aW9uLgor
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpmcmFtZVZpZXcp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAg
IChTVkdJbWFnZUNhY2hlKToKKwogMjAxMi0wMy0wNyAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQ2hhbmdlIHJlbWFpbmluZyBzY3JvbGwgbWV0aG9kcyB0byBp
bnRlZ2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDkzNzcyNTMuLmY2YzYxMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzOCw2ICsxMzgsNyBAQCBGcmFtZVZp
ZXc6OkZyYW1lVmlldyhGcmFtZSogZnJhbWUpCiAgICAgLCBtX3dhc1Njcm9sbGVkQnlVc2VyKGZh
bHNlKQogICAgICwgbV9pblByb2dyYW1tYXRpY1Njcm9sbChmYWxzZSkKICAgICAsIG1fZGVmZXJy
ZWRSZXBhaW50VGltZXIodGhpcywgJkZyYW1lVmlldzo6ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJl
ZCkKKyAgICAsIG1fZGlzYWJsZVJlcGFpbnRzKDApCiAgICAgLCBtX2lzVHJhY2tpbmdSZXBhaW50
cyhmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4odHJ1ZSkKICAgICAs
IG1fZGVmZXJTZXROZWVkc0xheW91dHMoMCkKQEAgLTI0NCw2ICsyNDUsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cmVzZXQoKQogICAgIG1faXNWaXN1YWxseU5vbkVtcHR5ID0gZmFsc2U7CiAgICAgbV9m
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFja1BlbmRpbmcgPSB0cnVlOwogICAgIG1f
bWFpbnRhaW5TY3JvbGxQb3NpdGlvbkFuY2hvciA9IDA7CisgICAgbV9kaXNhYmxlUmVwYWludHMg
PSAwOwogfQogCiBib29sIEZyYW1lVmlldzo6aXNGcmFtZVZpZXcoKSBjb25zdCAKQEAgLTE3Nzgs
NyArMTc4MCw3IEBAIGNvbnN0IHVuc2lnbmVkIGNSZXBhaW50UmVjdFVuaW9uVGhyZXNob2xkID0g
MjU7CiB2b2lkIEZyYW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVj
dCYgciwgYm9vbCBpbW1lZGlhdGUpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1lLT5vd25lckVsZW1l
bnQoKSk7Ci0gICAgCisKICAgICBpZiAobV9pc1RyYWNraW5nUmVwYWludHMpIHsKICAgICAgICAg
SW50UmVjdCByZXBhaW50UmVjdCA9IHI7CiAgICAgICAgIHJlcGFpbnRSZWN0Lm1vdmUoLXNjcm9s
bE9mZnNldCgpKTsKQEAgLTE5NTgsNyArMTk2MCwxOCBAQCBkb3VibGUgRnJhbWVWaWV3OjphZGp1
c3RlZERlZmVycmVkUmVwYWludERlbGF5KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3OjpkZWZlcnJl
ZFJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKQogewogICAgIGRvRGVmZXJyZWRS
ZXBhaW50cygpOwotfSAgICAKK30KKwordm9pZCBGcmFtZVZpZXc6OmJlZ2luRGlzYWJsZVJlcGFp
bnRzKCkKK3sKKyAgICBtX2Rpc2FibGVSZXBhaW50cysrOworfQorCit2b2lkIEZyYW1lVmlldzo6
ZW5kRGlzYWJsZVJlcGFpbnRzKCkKK3sKKyAgICBBU1NFUlQobV9kaXNhYmxlUmVwYWludHMgPiAw
KTsKKyAgICBtX2Rpc2FibGVSZXBhaW50cy0tOworfQogCiB2b2lkIEZyYW1lVmlldzo6bGF5b3V0
VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+KikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmlu
ZGV4IGI0MDY5NjYuLmE1ZDhlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjAzLDYg
KzIwMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVw
YWludHMoKTsKICAgICB2b2lkIHJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAorICAgIHZv
aWQgYmVnaW5EaXNhYmxlUmVwYWludHMoKTsKKyAgICB2b2lkIGVuZERpc2FibGVSZXBhaW50cygp
OworICAgIGJvb2wgcmVwYWludHNEaXNhYmxlZCgpIHsgcmV0dXJuIG1fZGlzYWJsZVJlcGFpbnRz
ID4gMDsgfQorCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHZvaWQgdXBkYXRl
RGFzaGJvYXJkUmVnaW9ucygpOwogI2VuZGlmCkBAIC00NjYsNyArNDcwLDkgQEAgcHJpdmF0ZToK
ICAgICBUaW1lcjxGcmFtZVZpZXc+IG1fZGVmZXJyZWRSZXBhaW50VGltZXI7CiAgICAgZG91Ymxl
IG1fZGVmZXJyZWRSZXBhaW50RGVsYXk7CiAgICAgZG91YmxlIG1fbGFzdFBhaW50VGltZTsKLSAg
ICAKKworICAgIHVuc2lnbmVkIG1fZGlzYWJsZVJlcGFpbnRzOworCiAgICAgYm9vbCBtX2lzVHJh
Y2tpbmdSZXBhaW50czsgLy8gVXNlZCBmb3IgdGVzdGluZy4KICAgICBWZWN0b3I8SW50UmVjdD4g
bV90cmFja2VkUmVwYWludFJlY3RzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKaW5kZXggNWY3ODcyNS4uMGFiNDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcApAQCAtMjk4LDcgKzI5OCwxMCBAQCBib29sIFJlbmRlclZpZXc6OnNob3Vs
ZFJlcGFpbnQoY29uc3QgSW50UmVjdCYgcikgY29uc3QKIAogICAgIGlmICghbV9mcmFtZVZpZXcp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKworICAgIGlmIChtX2ZyYW1lVmlldy0+cmVw
YWludHNEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNTg1
NzgwZi4uNWNiODEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CkBAIC0xNzcsMTAgKzE3NywxNSBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbAogICAgIEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyID0gaW1hZ2VPYnNlcnZlcigpOwogICAgIEFTU0VSVChvYnNlcnZl
cik7CiAKLSAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2UgZG9uJ3Qg
d2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdGhpcyByZWxheW91
dC4KKyAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2UgZG9uJ3Qgd2Fu
dCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhpcyByZWxheW91
dC4KICAgICBzZXRJbWFnZU9ic2VydmVyKDApOworCisgICAgLy8gRGlzYWJsZSByZXBhaW50aW5n
OyB3ZSBkb24ndCB3YW50IGRlZmVycmVkIHJlcGFpbnRzIHRvIHNjaGVkdWxlIGFueSB0aW1lcnMg
ZHVlIHRvIHRoaXMgcmVsYXlvdXQuCisgICAgZnJhbWUtPnZpZXcoKS0+YmVnaW5EaXNhYmxlUmVw
YWludHMoKTsKKwogICAgIHJlbmRlcmVyLT5zZXRDb250YWluZXJTaXplKHNpemUpOwogICAgIGZy
YW1lLT52aWV3KCktPnJlc2l6ZSh0aGlzLT5zaXplKCkpOworCiAgICAgaWYgKHpvb20gIT0gMSkK
ICAgICAgICAgZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHpvb20pOwogCkBAIC0yMDIsNyArMjA3
LDkgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmwKICAgICBpZiAoZnJhbWUtPnZpZXcoKS0+bmVl
ZHNMYXlvdXQoKSkKICAgICAgICAgZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CiAKLSAgICBzZXRJ
bWFnZU9ic2VydmVyKG9ic2VydmVyKTsgCisgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7
CisKKyAgICBmcmFtZS0+dmlldygpLT5lbmREaXNhYmxlUmVwYWludHMoKTsKIH0KIAogdm9pZCBT
VkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCkKQEAgLTIxMCw3ICsyMTcsNyBAQCB2b2lkIFNWR0ltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2
aWV3ID0gZnJhbWVWaWV3KCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21w
b3NpdGVPcCk7CkBAIC0yNTUsNiArMjYyLDE0IEBAIFJlbmRlckJveCogU1ZHSW1hZ2U6OmVtYmVk
ZGVkQ29udGVudEJveCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmVuZGVyQm94KHJvb3RFbGVtZW50
LT5yZW5kZXJlcigpKTsKIH0KIAorRnJhbWVWaWV3KiBTVkdJbWFnZTo6ZnJhbWVWaWV3KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
bV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOworfQorCiBib29sIFNWR0ltYWdlOjpoYXNSZWxh
dGl2ZVdpZHRoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggN2UxNjA0OS4uMGZlN2I2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBSZW5kZXJCb3g7CkBAIC01Myw2ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBJbnRTaXplJiwgZmxv
YXQgem9vbSwgU2hvdWxkQ2xlYXJCdWZmZXIpOwogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250
ZW50Qm94KCkgY29uc3Q7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VDYWNoZS5jcHAKaW5kZXggMGQ5N2EwZi4uZmIzOGZkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcApAQCAtMjEsNiArMjEsNyBA
QAogI2luY2x1ZGUgIlNWR0ltYWdlQ2FjaGUuaCIKIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCkBAIC04MSwxMyArODIs
MTggQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKCkKICAgICBmb3Ig
KEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCiAgICAgICAgIGl0LT5zZWNvbmQuaW1hZ2VOZWVkc1VwZGF0ZSA9IHRydWU7
CiAKLSAgICAvLyBTdGFydCByZWRyYXdpbmcgZGlydHkgaW1hZ2VzIHdpdGggYSB0aW1lciwgYXMg
aW1hZ2VDb250ZW50Q2hhbmdlZCgpIG1heSBiZSBjYWxsZWQKLSAgICAvLyBieSB0aGUgRnJhbWVW
aWV3IG9mIHRoZSBTVkdJbWFnZSB3aGljaCBpcyBjdXJyZW50bHkgaW4gRnJhbWVWaWV3OjpsYXlv
dXQoKS4KLSAgICBpZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9yZWRy
YXdUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgLy8gSWYgd2UncmUgaW4gdGhlIG1pZGRsZSBv
ZiBsYXlvdXQsIHN0YXJ0IHJlZHJhd2luZyBkaXJ0eQorICAgIC8vIGltYWdlcyBvbiBhIHRpbWVy
OyBvdGhlcndpc2UgaXQncyBzYWZlIHRvIGRyYXcgaW1tZWRpYXRlbHkuCisKKyAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IG1fc3ZnSW1hZ2UtPmZyYW1lVmlldygpOworICAgIGlmIChmcmFtZVZp
ZXcgJiYgZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgIGlmICghbV9yZWRyYXdU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9yZWRyYXdUaW1lci5zdGFydE9uZVNob3Qo
MCk7CisgICAgfSBlbHNlCisgICAgICAgcmVkcmF3KCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VDYWNo
ZTo6cmVkcmF3VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopCit2b2lkIFNWR0ltYWdl
Q2FjaGU6OnJlZHJhdygpCiB7CiAgICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBlbmQgPSBtX2lt
YWdlRGF0YU1hcC5lbmQoKTsKICAgICBmb3IgKEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBt
X2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTEwNSw2ICsxMTEs
MTEgQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKFRpbWVyPFNWR0ltYWdl
Q2FjaGU+KikKICAgICBtX3N2Z0ltYWdlLT5pbWFnZU9ic2VydmVyKCktPmFuaW1hdGlvbkFkdmFu
Y2VkKG1fc3ZnSW1hZ2UpOwogfQogCit2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmly
ZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4qKQoreworICAgIHJlZHJhdygpOworfQorCiBJbWFnZSog
U1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCmluZGV4IDUzZDIxNjEuLjQ2
YjcwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaApA
QCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VDYWNoZShT
VkdJbWFnZSopOworICAgIHZvaWQgcmVkcmF3KCk7CiAgICAgdm9pZCByZWRyYXdUaW1lckZpcmVk
KFRpbWVyPFNWR0ltYWdlQ2FjaGU+Kik7CiAKICAgICBzdHJ1Y3QgSW1hZ2VEYXRhIHsK
</data>
<flag name="review"
          id="133829"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131367</attachid>
            <date>2012-03-12 11:45:51 -0700</date>
            <delta_ts>2012-03-19 03:13:11 -0700</delta_ts>
            <desc>patch (third time&apos;s a charm); this time, prevent deferred timers from even being started</desc>
            <filename>repaint.diff</filename>
            <type>text/plain</type>
            <size>11496</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyY2MwMDE5Li4yNmEyNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDMtMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW5maW5pdGUgcmVwYWludCBsb29wIHdpdGggU1ZHSW1hZ2VDYWNoZSBhbmQgZGVm
ZXJyZWQgcmVwYWludCB0aW1lcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc4MzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDY1MTYzND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGRlZmVy
IGltYWdlIHJlZHJhdyBvbiBhIHRpbWVyIGlmIHdlJ3JlIGluIGxheW91dC4gVGhpcyBicmVha3MK
KyAgICAgICAgdGhlIHJlcGFpbnQgbG9vcCB3aGlsZSBzdGlsbCBwcmV2ZW50aW5nIHVzIGZyb20g
ZHJhd2luZyBpbnNpZGUgbGF5b3V0LgorCisgICAgICAgIENvbXBsZXRlbHkgZGlzYWJsZSByZXBh
aW50IGR1cmluZyByZWxheW91dCBpbnNpZGUgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVy
LAorICAgICAgICBwcmV2ZW50aW5nIGRlZmVycmVkIHJlcGFpbnQgdGltZXJzIGZyb20gYmVpbmcg
c3RhcnRlZCBkdXJpbmcgdGhhdCBwcm9jZXNzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMg
dGhlIHByb2JsZW0gb25seSBvY2N1cnMgaW4gYSBub25zdGFuZGFyZCBjb25maWd1cmF0aW9uLgor
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZW5kRGVmZXJyZWRSZXBhaW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnN0YXJ0RGVmZXJyZWRSZXBhaW50VGltZXIpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRvRGVmZXJyZWRSZXBh
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRlZmVycmVkUmVwYWludFRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpiZWdpbkRpc2FibGVSZXBhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmVuZERpc2FibGVSZXBhaW50cyk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlcGFpbnRzRGlzYWJsZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNob3Vs
ZFJlcGFpbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmZyYW1l
Vmlldyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OmltYWdlQ29udGVu
dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6cmVkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaDoKKyAg
ICAgICAgKFNWR0ltYWdlQ2FjaGUpOgorCiAyMDEyLTAzLTEyICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEwOTI4NSk6IENyYXNoIGluIFdl
YkNvcmU6OkRvY3VtZW50Ojpub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggNWVjYmNhMy4uZDk5ODQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtMTM4LDYgKzEzOCw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBm
cmFtZSkKICAgICAsIG1fd2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpCiAgICAgLCBtX2luUHJvZ3Jh
bW1hdGljU2Nyb2xsKGZhbHNlKQogICAgICwgbV9kZWZlcnJlZFJlcGFpbnRUaW1lcih0aGlzLCAm
RnJhbWVWaWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKQorICAgICwgbV9kaXNhYmxlUmVw
YWludHMoMCkKICAgICAsIG1faXNUcmFja2luZ1JlcGFpbnRzKGZhbHNlKQogICAgICwgbV9zaG91
bGRVcGRhdGVXaGlsZU9mZnNjcmVlbih0cnVlKQogICAgICwgbV9kZWZlclNldE5lZWRzTGF5b3V0
cygwKQpAQCAtMjQ0LDYgKzI0NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9p
c1Zpc3VhbGx5Tm9uRW1wdHkgPSBmYWxzZTsKICAgICBtX2ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dENhbGxiYWNrUGVuZGluZyA9IHRydWU7CiAgICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9u
QW5jaG9yID0gMDsKKyAgICBtX2Rpc2FibGVSZXBhaW50cyA9IDA7CiB9CiAKIGJvb2wgRnJhbWVW
aWV3Ojppc0ZyYW1lVmlldygpIGNvbnN0IApAQCAtMTc1NCw3ICsxNzU2LDcgQEAgY29uc3QgdW5z
aWduZWQgY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQgPSAyNTsKIHZvaWQgRnJhbWVWaWV3Ojpy
ZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkK
IHsKICAgICBBU1NFUlQoIW1fZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKLSAgICAKKwogICAgIGlm
IChtX2lzVHJhY2tpbmdSZXBhaW50cykgewogICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0ID0g
cjsKICAgICAgICAgcmVwYWludFJlY3QubW92ZSgtc2Nyb2xsT2Zmc2V0KCkpOwpAQCAtMTc4MCw5
ICsxNzgyLDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpyZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25z
dCBJbnRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9yZXBhaW50UmVjdHNbMF0udW5pdGUocGFpbnRSZWN0KTsKICAgICAgICAgbV9yZXBhaW50Q291
bnQrKzsKLSAgICAKLSAgICAgICAgaWYgKCFtX2RlZmVycmluZ1JlcGFpbnRzICYmICFtX2RlZmVy
cmVkUmVwYWludFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAgICAgbV9kZWZlcnJlZFJlcGFp
bnRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOworCisgICAgICAgIGlmICghbV9kZWZlcnJpbmdS
ZXBhaW50cykKKyAgICAgICAgICAgIHN0YXJ0RGVmZXJyZWRSZXBhaW50VGltZXIoZGVsYXkpOwor
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xODM1LDcgKzE4MzgsNiBAQCB2b2lk
IEZyYW1lVmlldzo6YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCkKICAgICBtX2RlZmVycmluZ1JlcGFp
bnRzKys7CiB9CiAKLQogdm9pZCBGcmFtZVZpZXc6OmVuZERlZmVycmVkUmVwYWludHMoKQogewog
ICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CkBAIC0xODQ4LDE4ICsxODUwLDI2IEBA
IHZvaWQgRnJhbWVWaWV3OjplbmREZWZlcnJlZFJlcGFpbnRzKCkKIAogICAgIGlmICgtLW1fZGVm
ZXJyaW5nUmVwYWludHMpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAobV9kZWZlcnJl
ZFJlcGFpbnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZG91
YmxlIGRlbGF5ID0gYWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpKSB7Ci0gICAgICAgIG1f
ZGVmZXJyZWRSZXBhaW50VGltZXIuc3RhcnRPbmVTaG90KGRlbGF5KTsKKyAgICAgICAgc3RhcnRE
ZWZlcnJlZFJlcGFpbnRUaW1lcihkZWxheSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CiAgICAgZG9EZWZlcnJlZFJlcGFpbnRzKCk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3OjpzdGFydERl
ZmVycmVkUmVwYWludFRpbWVyKGRvdWJsZSBkZWxheSkKK3sKKyAgICBpZiAobV9kZWZlcnJlZFJl
cGFpbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9kaXNh
YmxlUmVwYWludHMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVmZXJyZWRSZXBhaW50VGlt
ZXIuc3RhcnRPbmVTaG90KGRlbGF5KTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OmNoZWNrU3RvcERl
bGF5aW5nRGVmZXJyZWRSZXBhaW50cygpCiB7CiAgICAgaWYgKCFtX2RlZmVycmVkUmVwYWludFRp
bWVyLmlzQWN0aXZlKCkpCkBAIC0xODc2LDYgKzE4ODYsOSBAQCB2b2lkIEZyYW1lVmlldzo6Y2hl
Y2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCkKICAgICAKIHZvaWQgRnJhbWVWaWV3Ojpk
b0RlZmVycmVkUmVwYWludHMoKQogeworICAgIGlmIChtX2Rpc2FibGVSZXBhaW50cykKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgQVNTRVJUKCFtX2RlZmVycmluZ1JlcGFpbnRzKTsKICAgICBpZiAo
IXNob3VsZFVwZGF0ZSgpKSB7CiAgICAgICAgIG1fcmVwYWludFJlY3RzLmNsZWFyKCk7CkBAIC0x
OTM0LDcgKzE5NDcsMTggQEAgZG91YmxlIEZyYW1lVmlldzo6YWRqdXN0ZWREZWZlcnJlZFJlcGFp
bnREZWxheSgpIGNvbnN0CiB2b2lkIEZyYW1lVmlldzo6ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJl
ZChUaW1lcjxGcmFtZVZpZXc+KikKIHsKICAgICBkb0RlZmVycmVkUmVwYWludHMoKTsKLX0gICAg
Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpiZWdpbkRpc2FibGVSZXBhaW50cygpCit7CisgICAgbV9k
aXNhYmxlUmVwYWludHMrKzsKK30KKwordm9pZCBGcmFtZVZpZXc6OmVuZERpc2FibGVSZXBhaW50
cygpCit7CisgICAgQVNTRVJUKG1fZGlzYWJsZVJlcGFpbnRzID4gMCk7CisgICAgbV9kaXNhYmxl
UmVwYWludHMtLTsKK30KIAogdm9pZCBGcmFtZVZpZXc6OmxheW91dFRpbWVyRmlyZWQoVGltZXI8
RnJhbWVWaWV3PiopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAxZjkwYmMzLi5kM2Fm
NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTIwMSw4ICsyMDEsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBlbmREZWZlcnJl
ZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBjaGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVwYWludHMo
KTsKKyAgICB2b2lkIHN0YXJ0RGVmZXJyZWRSZXBhaW50VGltZXIoZG91YmxlIGRlbGF5KTsKICAg
ICB2b2lkIHJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAorICAgIHZvaWQgYmVnaW5EaXNh
YmxlUmVwYWludHMoKTsKKyAgICB2b2lkIGVuZERpc2FibGVSZXBhaW50cygpOworICAgIGJvb2wg
cmVwYWludHNEaXNhYmxlZCgpIHsgcmV0dXJuIG1fZGlzYWJsZVJlcGFpbnRzID4gMDsgfQorCiAj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHZvaWQgdXBkYXRlRGFzaGJvYXJkUmVn
aW9ucygpOwogI2VuZGlmCkBAIC00NjYsNyArNDcxLDkgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxG
cmFtZVZpZXc+IG1fZGVmZXJyZWRSZXBhaW50VGltZXI7CiAgICAgZG91YmxlIG1fZGVmZXJyZWRS
ZXBhaW50RGVsYXk7CiAgICAgZG91YmxlIG1fbGFzdFBhaW50VGltZTsKLSAgICAKKworICAgIHVu
c2lnbmVkIG1fZGlzYWJsZVJlcGFpbnRzOworCiAgICAgYm9vbCBtX2lzVHJhY2tpbmdSZXBhaW50
czsgLy8gVXNlZCBmb3IgdGVzdGluZy4KICAgICBWZWN0b3I8SW50UmVjdD4gbV90cmFja2VkUmVw
YWludFJlY3RzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXgg
Y2QzODkzYS4uMGRmOWQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtMjk4LDcgKzI5OCwxMCBAQCBib29sIFJlbmRlclZpZXc6OnNob3VsZFJlcGFpbnQoY29u
c3QgSW50UmVjdCYgcikgY29uc3QKIAogICAgIGlmICghbV9mcmFtZVZpZXcpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKKworICAgIGlmIChtX2ZyYW1lVmlldy0+cmVwYWludHNEaXNhYmxl
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNTg1NzgwZi4uNWNiODEw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xNzcsMTAg
KzE3NywxNSBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbAogICAgIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyID0gaW1hZ2VPYnNlcnZlcigpOwogICAgIEFTU0VSVChvYnNlcnZlcik7CiAKLSAgICAv
LyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2UgZG9uJ3Qgd2FudCB0byByZWNl
aXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdGhpcyByZWxheW91dC4KKyAgICAvLyBU
ZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2UgZG9uJ3Qgd2FudCB0byByZWNlaXZl
IGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhpcyByZWxheW91dC4KICAgICBzZXRJ
bWFnZU9ic2VydmVyKDApOworCisgICAgLy8gRGlzYWJsZSByZXBhaW50aW5nOyB3ZSBkb24ndCB3
YW50IGRlZmVycmVkIHJlcGFpbnRzIHRvIHNjaGVkdWxlIGFueSB0aW1lcnMgZHVlIHRvIHRoaXMg
cmVsYXlvdXQuCisgICAgZnJhbWUtPnZpZXcoKS0+YmVnaW5EaXNhYmxlUmVwYWludHMoKTsKKwog
ICAgIHJlbmRlcmVyLT5zZXRDb250YWluZXJTaXplKHNpemUpOwogICAgIGZyYW1lLT52aWV3KCkt
PnJlc2l6ZSh0aGlzLT5zaXplKCkpOworCiAgICAgaWYgKHpvb20gIT0gMSkKICAgICAgICAgZnJh
bWUtPnNldFBhZ2Vab29tRmFjdG9yKHpvb20pOwogCkBAIC0yMDIsNyArMjA3LDkgQEAgdm9pZCBT
VkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgZmwKICAgICBpZiAoZnJhbWUtPnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkK
ICAgICAgICAgZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CiAKLSAgICBzZXRJbWFnZU9ic2VydmVy
KG9ic2VydmVyKTsgCisgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CisKKyAgICBmcmFt
ZS0+dmlldygpLT5lbmREaXNhYmxlUmVwYWludHMoKTsKIH0KIAogdm9pZCBTVkdJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCkKQEAgLTIxMCw3ICsyMTcsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbAogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWVW
aWV3KCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOwogICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCk7CkBA
IC0yNTUsNiArMjYyLDE0IEBAIFJlbmRlckJveCogU1ZHSW1hZ2U6OmVtYmVkZGVkQ29udGVudEJv
eCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmVuZGVyQm94KHJvb3RFbGVtZW50LT5yZW5kZXJlcigp
KTsKIH0KIAorRnJhbWVWaWV3KiBTVkdJbWFnZTo6ZnJhbWVWaWV3KCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+dmlldygpOworfQorCiBib29sIFNWR0ltYWdlOjpoYXNSZWxhdGl2ZVdpZHRoKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmgKaW5kZXggN2UxNjA0OS4uMGZlN2I2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBS
ZW5kZXJCb3g7CkBAIC01Myw2ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHJhd1NWR1Rv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgem9vbSwgU2hv
dWxkQ2xlYXJCdWZmZXIpOwogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29u
c3Q7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9v
bCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgSW50U2l6
ZSBzaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VD
YWNoZS5jcHAKaW5kZXggMGQ5N2EwZi4uZmIzOGZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg
IlNWR0ltYWdlQ2FjaGUuaCIKIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCkBAIC04MSwxMyArODIsMTggQEAgdm9pZCBT
VkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKCkKICAgICBmb3IgKEltYWdlRGF0YU1h
cDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CiAgICAgICAgIGl0LT5zZWNvbmQuaW1hZ2VOZWVkc1VwZGF0ZSA9IHRydWU7CiAKLSAgICAvLyBT
dGFydCByZWRyYXdpbmcgZGlydHkgaW1hZ2VzIHdpdGggYSB0aW1lciwgYXMgaW1hZ2VDb250ZW50
Q2hhbmdlZCgpIG1heSBiZSBjYWxsZWQKLSAgICAvLyBieSB0aGUgRnJhbWVWaWV3IG9mIHRoZSBT
VkdJbWFnZSB3aGljaCBpcyBjdXJyZW50bHkgaW4gRnJhbWVWaWV3OjpsYXlvdXQoKS4KLSAgICBp
ZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9yZWRyYXdUaW1lci5zdGFy
dE9uZVNob3QoMCk7CisgICAgLy8gSWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBsYXlvdXQsIHN0
YXJ0IHJlZHJhd2luZyBkaXJ0eQorICAgIC8vIGltYWdlcyBvbiBhIHRpbWVyOyBvdGhlcndpc2Ug
aXQncyBzYWZlIHRvIGRyYXcgaW1tZWRpYXRlbHkuCisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IG1fc3ZnSW1hZ2UtPmZyYW1lVmlldygpOworICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVW
aWV3LT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgIGlmICghbV9yZWRyYXdUaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICAgICAgbV9yZWRyYXdUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgfSBl
bHNlCisgICAgICAgcmVkcmF3KCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGlt
ZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopCit2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJh
dygpCiB7CiAgICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBlbmQgPSBtX2ltYWdlRGF0YU1hcC5l
bmQoKTsKICAgICBmb3IgKEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1h
cC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTEwNSw2ICsxMTEsMTEgQEAgdm9pZCBT
VkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKFRpbWVyPFNWR0ltYWdlQ2FjaGU+KikKICAg
ICBtX3N2Z0ltYWdlLT5pbWFnZU9ic2VydmVyKCktPmFuaW1hdGlvbkFkdmFuY2VkKG1fc3ZnSW1h
Z2UpOwogfQogCit2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQoVGltZXI8U1ZH
SW1hZ2VDYWNoZT4qKQoreworICAgIHJlZHJhdygpOworfQorCiBJbWFnZSogU1ZHSW1hZ2VDYWNo
ZTo6bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCmluZGV4IDUzZDIxNjEuLjQ2YjcwOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaApAQCAtNzAsNiArNzAs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VDYWNoZShTVkdJbWFnZSopOwor
ICAgIHZvaWQgcmVkcmF3KCk7CiAgICAgdm9pZCByZWRyYXdUaW1lckZpcmVkKFRpbWVyPFNWR0lt
YWdlQ2FjaGU+Kik7CiAKICAgICBzdHJ1Y3QgSW1hZ2VEYXRhIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132567</attachid>
            <date>2012-03-19 03:11:19 -0700</date>
            <delta_ts>2012-03-21 22:19:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78315-20120319191117.patch</filename>
            <type>text/plain</type>
            <size>12065</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc5YjNkNDQ3NWI4YzFm
NjUwZjRhMDhmNTkzYTBmNjU0NDdhMTQ5Yy4uMGQ3NzRkM2RjYWQ4MjZjOGY5ZjdkMjgxZDMyN2M2
MTAwM2NkODM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAzLTE4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEluZmluaXRlIHJl
cGFpbnQgbG9vcCB3aXRoIFNWR0ltYWdlQ2FjaGUgYW5kIGRlZmVycmVkIHJlcGFpbnQgdGltZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODMxNQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA2NTE2MzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tmlrb2xhcyBaaW1tZXJtYW5uLgorCisgICAgICAgIE9ubHkgZGVmZXIgaW1hZ2UgcmVkcmF3IG9u
IGEgdGltZXIgaWYgd2UncmUgaW4gbGF5b3V0LiBUaGlzIGJyZWFrcworICAgICAgICB0aGUgcmVw
YWludCBsb29wIHdoaWxlIHN0aWxsIHByZXZlbnRpbmcgdXMgZnJvbSBkcmF3aW5nIGluc2lkZSBs
YXlvdXQuCisKKyAgICAgICAgQ29tcGxldGVseSBkaXNhYmxlIHJlcGFpbnQgZHVyaW5nIHJlbGF5
b3V0IGluc2lkZSBTVkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIsCisgICAgICAgIHByZXZl
bnRpbmcgZGVmZXJyZWQgcmVwYWludCB0aW1lcnMgZnJvbSBiZWluZyBzdGFydGVkIGR1cmluZyB0
aGF0IHByb2Nlc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUgcHJvYmxlbSBvbmx5
IG9jY3VycyBpbiBhIG5vbnN0YW5kYXJkIGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OkZyYW1lVmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjplbmREZWZlcnJlZFJlcGFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c3RhcnREZWZlcnJlZFJlcGFpbnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZG9EZWZlcnJlZFJlcGFpbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmJlZ2luRGlzYWJsZVJlcGFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6ZW5kRGlzYWJsZVJlcGFpbnRzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6cmVwYWludHNEaXNhYmxlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2hvdWxkUmVwYWludCk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZnJhbWVWaWV3KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VDb250ZW50Q2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpyZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oOgorICAgICAgICAoU1ZHSW1hZ2VD
YWNoZSk6CisKIDIwMTItMDMtMTggIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIEZhbGxiYWNrIHRvIGNvbW1vbiBzY3JpcHQgd2hlbiBwZXItc2NyaXB0
IGZvbnQgc2V0dGluZyBpcyB0aGUgZW1wdHkgc3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggOGI4ZDFlMDkyODg0ZWFmN2UyZTk1NTc4NDRkNmY0YmQ5OWIyZjU4Yi4uNTVlZWI0
YTRmYWJjNjkzOTVjMTM4ZjIwNzY1YjUyYTVhOTkwMWIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtMTM5LDYgKzEzOSw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBm
cmFtZSkKICAgICAsIG1fd2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpCiAgICAgLCBtX2luUHJvZ3Jh
bW1hdGljU2Nyb2xsKGZhbHNlKQogICAgICwgbV9kZWZlcnJlZFJlcGFpbnRUaW1lcih0aGlzLCAm
RnJhbWVWaWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKQorICAgICwgbV9kaXNhYmxlUmVw
YWludHMoMCkKICAgICAsIG1faXNUcmFja2luZ1JlcGFpbnRzKGZhbHNlKQogICAgICwgbV9zaG91
bGRVcGRhdGVXaGlsZU9mZnNjcmVlbih0cnVlKQogICAgICwgbV9kZWZlclNldE5lZWRzTGF5b3V0
cygwKQpAQCAtMjQ1LDYgKzI0Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9p
c1Zpc3VhbGx5Tm9uRW1wdHkgPSBmYWxzZTsKICAgICBtX2ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dENhbGxiYWNrUGVuZGluZyA9IHRydWU7CiAgICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9u
QW5jaG9yID0gMDsKKyAgICBtX2Rpc2FibGVSZXBhaW50cyA9IDA7CiB9CiAKIGJvb2wgRnJhbWVW
aWV3Ojppc0ZyYW1lVmlldygpIGNvbnN0IApAQCAtMTc2OCw3ICsxNzcwLDcgQEAgY29uc3QgdW5z
aWduZWQgY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQgPSAyNTsKIHZvaWQgRnJhbWVWaWV3Ojpy
ZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkK
IHsKICAgICBBU1NFUlQoIW1fZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKLSAgICAKKwogICAgIGlm
IChtX2lzVHJhY2tpbmdSZXBhaW50cykgewogICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0ID0g
cjsKICAgICAgICAgcmVwYWludFJlY3QubW92ZSgtc2Nyb2xsT2Zmc2V0KCkpOwpAQCAtMTc5NCw5
ICsxNzk2LDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpyZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25z
dCBJbnRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9yZXBhaW50UmVjdHNbMF0udW5pdGUocGFpbnRSZWN0KTsKICAgICAgICAgbV9yZXBhaW50Q291
bnQrKzsKLSAgICAKLSAgICAgICAgaWYgKCFtX2RlZmVycmluZ1JlcGFpbnRzICYmICFtX2RlZmVy
cmVkUmVwYWludFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAgICAgbV9kZWZlcnJlZFJlcGFp
bnRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOworCisgICAgICAgIGlmICghbV9kZWZlcnJpbmdS
ZXBhaW50cykKKyAgICAgICAgICAgIHN0YXJ0RGVmZXJyZWRSZXBhaW50VGltZXIoZGVsYXkpOwor
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xODQ5LDcgKzE4NTIsNiBAQCB2b2lk
IEZyYW1lVmlldzo6YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCkKICAgICBtX2RlZmVycmluZ1JlcGFp
bnRzKys7CiB9CiAKLQogdm9pZCBGcmFtZVZpZXc6OmVuZERlZmVycmVkUmVwYWludHMoKQogewog
ICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CkBAIC0xODYyLDE4ICsxODY0LDI5IEBA
IHZvaWQgRnJhbWVWaWV3OjplbmREZWZlcnJlZFJlcGFpbnRzKCkKIAogICAgIGlmICgtLW1fZGVm
ZXJyaW5nUmVwYWludHMpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmIChtX2RlZmVy
cmVkUmVwYWludFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChk
b3VibGUgZGVsYXkgPSBhZGp1c3RlZERlZmVycmVkUmVwYWludERlbGF5KCkpIHsKLSAgICAgICAg
bV9kZWZlcnJlZFJlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOworICAgICAgICBzdGFy
dERlZmVycmVkUmVwYWludFRpbWVyKGRlbGF5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKICAgICBkb0RlZmVycmVkUmVwYWludHMoKTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnN0YXJ0
RGVmZXJyZWRSZXBhaW50VGltZXIoZG91YmxlIGRlbGF5KQoreworICAgIGlmIChtX2RlZmVycmVk
UmVwYWludFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2Rp
c2FibGVSZXBhaW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWZlcnJlZFJlcGFpbnRU
aW1lci5zdGFydE9uZVNob3QoZGVsYXkpOworfQorCiB2b2lkIEZyYW1lVmlldzo6Y2hlY2tTdG9w
RGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCkKIHsKICAgICBpZiAoIW1fZGVmZXJyZWRSZXBhaW50
VGltZXIuaXNBY3RpdmUoKSkKQEAgLTE4OTAsNiArMTkwMyw5IEBAIHZvaWQgRnJhbWVWaWV3Ojpj
aGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVwYWludHMoKQogICAgIAogdm9pZCBGcmFtZVZpZXc6
OmRvRGVmZXJyZWRSZXBhaW50cygpCiB7CisgICAgaWYgKG1fZGlzYWJsZVJlcGFpbnRzKQorICAg
ICAgICByZXR1cm47CisKICAgICBBU1NFUlQoIW1fZGVmZXJyaW5nUmVwYWludHMpOwogICAgIGlm
ICghc2hvdWxkVXBkYXRlKCkpIHsKICAgICAgICAgbV9yZXBhaW50UmVjdHMuY2xlYXIoKTsKQEAg
LTE5NDgsNyArMTk2NCwxOCBAQCBkb3VibGUgRnJhbWVWaWV3OjphZGp1c3RlZERlZmVycmVkUmVw
YWludERlbGF5KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZp
cmVkKFRpbWVyPEZyYW1lVmlldz4qKQogewogICAgIGRvRGVmZXJyZWRSZXBhaW50cygpOwotfSAg
ICAKK30KKwordm9pZCBGcmFtZVZpZXc6OmJlZ2luRGlzYWJsZVJlcGFpbnRzKCkKK3sKKyAgICBt
X2Rpc2FibGVSZXBhaW50cysrOworfQorCit2b2lkIEZyYW1lVmlldzo6ZW5kRGlzYWJsZVJlcGFp
bnRzKCkKK3sKKyAgICBBU1NFUlQobV9kaXNhYmxlUmVwYWludHMgPiAwKTsKKyAgICBtX2Rpc2Fi
bGVSZXBhaW50cy0tOworfQogCiB2b2lkIEZyYW1lVmlldzo6bGF5b3V0VGltZXJGaXJlZChUaW1l
cjxGcmFtZVZpZXc+KikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDI3OTg0MDE1NjRk
NTY5YjZkMjBhZWVhOWE2OWYwNDgxYmMwZDg5MjYuLmM1NGMzMWQ2YjMyMDIyYTZkMjliOWUzMDI4
ZTlhYTQ5NjQ1ZDdlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjA2LDggKzIwNiwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lk
IGVuZERlZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lkIGNoZWNrU3RvcERlbGF5aW5nRGVmZXJy
ZWRSZXBhaW50cygpOworICAgIHZvaWQgc3RhcnREZWZlcnJlZFJlcGFpbnRUaW1lcihkb3VibGUg
ZGVsYXkpOwogICAgIHZvaWQgcmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOwogCisgICAgdm9p
ZCBiZWdpbkRpc2FibGVSZXBhaW50cygpOworICAgIHZvaWQgZW5kRGlzYWJsZVJlcGFpbnRzKCk7
CisgICAgYm9vbCByZXBhaW50c0Rpc2FibGVkKCkgeyByZXR1cm4gbV9kaXNhYmxlUmVwYWludHMg
PiAwOyB9CisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgdm9pZCB1cGRhdGVE
YXNoYm9hcmRSZWdpb25zKCk7CiAjZW5kaWYKQEAgLTQ3Myw3ICs0NzgsOSBAQCBwcml2YXRlOgog
ICAgIFRpbWVyPEZyYW1lVmlldz4gbV9kZWZlcnJlZFJlcGFpbnRUaW1lcjsKICAgICBkb3VibGUg
bV9kZWZlcnJlZFJlcGFpbnREZWxheTsKICAgICBkb3VibGUgbV9sYXN0UGFpbnRUaW1lOwotICAg
IAorCisgICAgdW5zaWduZWQgbV9kaXNhYmxlUmVwYWludHM7CisKICAgICBib29sIG1faXNUcmFj
a2luZ1JlcGFpbnRzOyAvLyBVc2VkIGZvciB0ZXN0aW5nLgogICAgIFZlY3RvcjxJbnRSZWN0PiBt
X3RyYWNrZWRSZXBhaW50UmVjdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCBjZDM4OTNhNTU1ZDYwZjFhYjg5ZjI2MTYzZTcwZTQyN2EyNThkY2E0Li4wZGY5
ZDAyYTYyMGVmYjk1MjU5NzZmNmI2Y2I1ZTU4MzgwYmNiNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yOTgsNyArMjk4LDEwIEBAIGJvb2wgUmVuZGVyVmll
dzo6c2hvdWxkUmVwYWludChjb25zdCBJbnRSZWN0JiByKSBjb25zdAogCiAgICAgaWYgKCFtX2Zy
YW1lVmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCisgICAgaWYgKG1fZnJhbWVW
aWV3LT5yZXBhaW50c0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApp
bmRleCA2Yjc1ZjI3NDkxZWQ3MzBmNGQzZTVjN2JiMjE1MDEwNGIwZjIzYWMwLi41MDgwNjA1Y2Ew
ZWQ1N2MzZWRjM2IxY2YzODQzNmFmNzhkNzUzMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKQEAgLTE3NywxMCArMTc3LDE1IEBAIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdTVkdUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEludFNpemUmIHNp
emUsIGZsCiAgICAgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZU9ic2VydmVyKCk7CiAg
ICAgQVNTRVJUKG9ic2VydmVyKTsKIAotICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdlIG9i
c2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNhbGxz
IGR1ZSB0aGlzIHJlbGF5b3V0LgorICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdlIG9ic2Vy
dmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNhbGxzIGR1
ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgIHNldEltYWdlT2JzZXJ2ZXIoMCk7CisKKyAgICAvLyBE
aXNhYmxlIHJlcGFpbnRpbmc7IHdlIGRvbid0IHdhbnQgZGVmZXJyZWQgcmVwYWludHMgdG8gc2No
ZWR1bGUgYW55IHRpbWVycyBkdWUgdG8gdGhpcyByZWxheW91dC4KKyAgICBmcmFtZS0+dmlldygp
LT5iZWdpbkRpc2FibGVSZXBhaW50cygpOworCiAgICAgcmVuZGVyZXItPnNldENvbnRhaW5lclNp
emUoc2l6ZSk7CiAgICAgZnJhbWUtPnZpZXcoKS0+cmVzaXplKHRoaXMtPnNpemUoKSk7CisKICAg
ICBpZiAoem9vbSAhPSAxKQogICAgICAgICBmcmFtZS0+c2V0UGFnZVpvb21GYWN0b3Ioem9vbSk7
CiAKQEAgLTIwMiw3ICsyMDcsOSBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbAogICAgIGlmIChm
cmFtZS0+dmlldygpLT5uZWVkc0xheW91dCgpKQogICAgICAgICBmcmFtZS0+dmlldygpLT5sYXlv
dXQoKTsKIAotICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOyAKKyAgICBzZXRJbWFnZU9i
c2VydmVyKG9ic2VydmVyKTsKKworICAgIGZyYW1lLT52aWV3KCktPmVuZERpc2FibGVSZXBhaW50
cygpOwogfQogCiB2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQpAQCAtMjEwLDcgKzIxNyw3IEBA
IHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEZyYW1lVmlldyogdmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsK
KyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZVZpZXcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wKTsKQEAgLTI1NSw2ICsyNjIsMTQgQEAgUmVuZGVyQm94
KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKICAgICByZXR1cm4gdG9SZW5k
ZXJCb3gocm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkpOwogfQogCitGcmFtZVZpZXcqIFNWR0ltYWdl
OjpmcmFtZVZpZXcoKSBjb25zdAoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7Cit9CisKIGJvb2wg
U1ZHSW1hZ2U6Omhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdAogewogICAgIGlmICghbV9wYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA3ZTE2MDQ5MzE0M2MyNjg4
MDc3M2JmNDc2MThjNzI5MGQwZjRiNTFiLi4wZmU3YjY5YjdjMDhlZmNlZjIwOTY0NzIyZDI3NjU1
MDlmODk1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtMzQs
NiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZyYW1lVmlldzsKIGNs
YXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsKQEAgLTUzLDYg
KzU0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciosIGNvbnN0IEludFNpemUmLCBmbG9hdCB6b29tLCBTaG91bGRDbGVhckJ1ZmZlcik7CiAg
ICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKKyAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCAwZDk3
YTBmZWNlZmRjMWRlMWIyMjcwMTkyYmZjZjQxZDA0OTJiOGMzLi5mYjM4ZmQ1NTRiNjI3NmUwNmQ2
Y2E0OGFlNjUyMTcyYjBkNjg4YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlQ2FjaGUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiU1ZHSW1hZ2VD
YWNoZS5oIgogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIlJlbmRlclNWR1Jvb3QuaCIKQEAgLTgxLDEzICs4MiwxOCBAQCB2b2lkIFNWR0ltYWdlQ2Fj
aGU6OmltYWdlQ29udGVudENoYW5nZWQoKQogICAgIGZvciAoSW1hZ2VEYXRhTWFwOjppdGVyYXRv
ciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAg
aXQtPnNlY29uZC5pbWFnZU5lZWRzVXBkYXRlID0gdHJ1ZTsKIAotICAgIC8vIFN0YXJ0IHJlZHJh
d2luZyBkaXJ0eSBpbWFnZXMgd2l0aCBhIHRpbWVyLCBhcyBpbWFnZUNvbnRlbnRDaGFuZ2VkKCkg
bWF5IGJlIGNhbGxlZAotICAgIC8vIGJ5IHRoZSBGcmFtZVZpZXcgb2YgdGhlIFNWR0ltYWdlIHdo
aWNoIGlzIGN1cnJlbnRseSBpbiBGcmFtZVZpZXc6OmxheW91dCgpLgotICAgIGlmICghbV9yZWRy
YXdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3JlZHJhd1RpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKKyAgICAvLyBJZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGxheW91dCwgc3RhcnQgcmVkcmF3
aW5nIGRpcnR5CisgICAgLy8gaW1hZ2VzIG9uIGEgdGltZXI7IG90aGVyd2lzZSBpdCdzIHNhZmUg
dG8gZHJhdyBpbW1lZGlhdGVseS4KKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9zdmdJ
bWFnZS0+ZnJhbWVWaWV3KCk7CisgICAgaWYgKGZyYW1lVmlldyAmJiBmcmFtZVZpZXctPm5lZWRz
TGF5b3V0KCkpIHsKKyAgICAgICAgaWYgKCFtX3JlZHJhd1RpbWVyLmlzQWN0aXZlKCkpCisgICAg
ICAgICAgICBtX3JlZHJhd1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICB9IGVsc2UKKyAgICAg
ICByZWRyYXcoKTsKIH0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKFRp
bWVyPFNWR0ltYWdlQ2FjaGU+KikKK3ZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3KCkKIHsKICAg
ICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwogICAg
IGZvciAoSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMTA1LDYgKzExMSwxMSBAQCB2b2lkIFNWR0ltYWdlQ2Fj
aGU6OnJlZHJhd1RpbWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4qKQogICAgIG1fc3ZnSW1h
Z2UtPmltYWdlT2JzZXJ2ZXIoKS0+YW5pbWF0aW9uQWR2YW5jZWQobV9zdmdJbWFnZSk7CiB9CiAK
K3ZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hl
PiopCit7CisgICAgcmVkcmF3KCk7Cit9CisKIEltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBP
ckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKIHsKICAgICBBU1NFUlQocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmgKaW5kZXggNTNkMjE2MTlhMTI0ODJhZjA3NDBlYjlmMzZhODhiNDRi
YzY5YmRhZC4uNDZiNzA5MzQxZGQxYjMyM2E5MjVkM2ZkNDI4ZjExZTEyZTQ5MjdiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCkBAIC03MCw2ICs3MCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUNhY2hlKFNWR0ltYWdlKik7Cisg
ICAgdm9pZCByZWRyYXcoKTsKICAgICB2b2lkIHJlZHJhd1RpbWVyRmlyZWQoVGltZXI8U1ZHSW1h
Z2VDYWNoZT4qKTsKIAogICAgIHN0cnVjdCBJbWFnZURhdGEgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135825</attachid>
            <date>2012-04-05 08:05:59 -0700</date>
            <delta_ts>2012-04-05 08:51:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78315-20120405110558.patch</filename>
            <type>text/plain</type>
            <size>2793</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTA1ICBTdGVwaGVu
IENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTig5
OTUzOSk6IEluZmluaXRlIHJlcGFpbnQgbG9vcCB3aXRoIFNWR0ltYWdlIGFuZCBkZWZlcnJlZCBy
ZXBhaW50IHRpbWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzgzMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgZXhpc3RpbmcgZml4IGZvciB0aGlzIGlzc3VlIHdhcyBmYWlsaW5nIHRvIGNoZWNr
IGlmIHRoZSBmcmFtZVZpZXcgb2JqZWN0CisgICAgICAgIHdhcyBjdXJyZW50bHkgX2luXyBsYXlv
dXQsIGluIGFkZGl0aW9uIHRvIHdoZXRoZXIgaXQgbmVlZHMgbGF5b3V0LiBDYWxsaW5nIHRoZQor
ICAgICAgICByZWRyYXcgbWV0aG9kIHdoaWxlIGluIGxheW91dCBsZWFkcyB0byBhIGRlYnVnIGFz
c2VydGlvbiBhbmQgcG90ZW50aWFsIGluZmluaXRlCisgICAgICAgIGxheW91dCBsb29wcy4gTm93
IHdlIGNoZWNrIHdoZXRoZXIgd2UgbmVlZCBsYXlvdXQgb3IgYXJlIGluIGxheW91dC4gV2UgYWxz
byBhZGQKKyAgICAgICAgYSBjaGVjayB3aGVuIHRoZSByZXBhaW50IHRpbWVyIGZpcmVzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgY2FsbCByZWRyYXcgZHVyaW5nIGxheW91dAorICAgICAgICBhdCB0aGF0
IHBvaW50LgorCisgICAgICAgIFRoaXMgcGF0Y2ggd2FzIHRlc3RlZCB3aXRoIHRlbnMgb2YgdGhv
dXNhbmRzIG9mIHJ1bnMgb24gbGF5b3V0IHRlc3QgY2FzZXMgdGhhdAorICAgICAgICBwcmV2aW91
c2x5IGNyYXNoZWQgYXQgYSByYXRlIG9mIGFib3V0IDEgaW4gMjUuIE5vdyB3ZSBzZWUgbm8gY3Jh
c2hlcyBhbmQgbm8gdGVzdAorICAgICAgICBmYWlsdXJlcy4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGFzIHRoaXMgZXhpc3RzIHRvIGZpeCBmbGFreSBleGlzdGluZyB0ZXN0cy4KKworICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlQ2FjaGU6OmltYWdlQ29udGVudENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJGaXJlZCk6CisKIDIwMTItMDQtMDUgIEtlaXNoaSBIYXR0
b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSGlkZSBkYXRhbGlzdCBlbGVtZW50
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3Bw
CShyZXZpc2lvbiAxMTMwNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDggQEAgdm9pZCBTVkdJbWFn
ZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKAogCiAgICAgLy8gSWYgd2UncmUgaW4gdGhlIG1p
ZGRsZSBvZiBsYXlvdXQsIHN0YXJ0IHJlZHJhd2luZyBkaXJ0eQogICAgIC8vIGltYWdlcyBvbiBh
IHRpbWVyOyBvdGhlcndpc2UgaXQncyBzYWZlIHRvIGRyYXcgaW1tZWRpYXRlbHkuCi0KICAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fc3ZnSW1hZ2UtPmZyYW1lVmlldygpOwotICAgIGlmIChm
cmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSB7CisgICAgaWYgKGZyYW1lVmll
dyAmJiAoZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpIHx8IGZyYW1lVmlldy0+aXNJbkxheW91dCgp
KSkgewogICAgICAgICBpZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgICAg
IG1fcmVkcmF3VGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0gZWxzZQpAQCAtMTEzLDcgKzEx
MiwxNCBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhdygpCiAKIHZvaWQgU1ZHSW1hZ2VDYWNo
ZTo6cmVkcmF3VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopCiB7Ci0gICAgcmVkcmF3
KCk7CisgICAgLy8gV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCB0aGUgZnJhbWUgZG9lcyBub3Qg
cmVxdWlyZSBsYXlvdXQgd2hlbiB0aGUgdGltZXIgZmlyZWQuCisgICAgLy8gU28gYmUgc3VyZSB0
byBjaGVjayBhZ2FpbiBpbiBjYXNlIGl0IGlzIHN0aWxsIG5vdCBzYWZlIHRvIHJ1biByZWRyYXcu
CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3N2Z0ltYWdlLT5mcmFtZVZpZXcoKTsKKyAg
ICBpZiAoZnJhbWVWaWV3ICYmIChmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkgfHwgZnJhbWVWaWV3
LT5pc0luTGF5b3V0KCkpKSB7CisgICAgICAgIGlmICghbV9yZWRyYXdUaW1lci5pc0FjdGl2ZSgp
KQorICAgICAgICAgICAgbV9yZWRyYXdUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgfSBlbHNl
CisgICAgICAgcmVkcmF3KCk7CiB9CiAKIEltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNy
ZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>