<?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>216677</bug_id>
          
          <creation_ts>2020-09-17 18:36:34 -0700</creation_ts>
          <short_desc>REGRESSION(r267137): PaintFrequencyTracker needs to track all the painting</short_desc>
          <delta_ts>2020-09-18 12:30:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1689681</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-09-17 18:36:34 -0700</bug_when>
    <thetext>r267137 made PaintFrequencyTracker track only the painting which comes through Page::updateRendering(). This caused ~30% regression in the MotionMark Design test because it enlarged the gap between the paintings. So PaintFrequencyTracker will never encounter a PaintFrequency::High. This means we lost the optimization that could be gained from replaying back the DisplayList of the text runs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689682</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-09-17 18:37:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/69080461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689688</commentid>
    <comment_count>2</comment_count>
      <attachid>409098</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-09-17 18:46:32 -0700</bug_when>
    <thetext>Created attachment 409098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689691</commentid>
    <comment_count>3</comment_count>
      <attachid>409098</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-17 18:53:01 -0700</bug_when>
    <thetext>Comment on attachment 409098
Patch

What painting does not &quot;come through&quot; Page::updateRendering() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689694</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-09-17 19:01:43 -0700</bug_when>
    <thetext>Updating control tints: See the call stack in https://bugs.webkit.org/show_bug.cgi?id=216190#c10.

Or WebPage snapshotting:

WebCore: WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paintLayerWithEffects(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paintList(WebCore::RenderLayer::LayerList, WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paintLayerWithEffects(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
WebCore: WebCore::RenderLayer::paint(WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, WebCore::LayoutSize const&amp;, WTF::OptionSet&lt;WebCore::PaintBehavior&gt;, WebCore::RenderObject*, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;, WebCore::RenderLayer::SecurityOriginPaintPolicy, WebCore::EventRegionContext*)
WebCore: WebCore::FrameView::paintContents(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;, WebCore::Widget::SecurityOriginPaintPolicy, WebCore::EventRegionContext*)
WebCore: WebCore::FrameView::paintContentsForSnapshot(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;, WebCore::FrameView::SelectionInSnapshot, WebCore::FrameView::CoordinateSpaceForSnapshot)
WebKit: WebKit::WebPage::paintSnapshotAtSize(WebCore::IntRect const&amp;, WebCore::IntSize const&amp;, unsigned int, WebCore::Frame&amp;, WebCore::FrameView&amp;, WebCore::GraphicsContext&amp;)
WebKit: WebKit::WebPage::snapshotAtSize(WebCore::IntRect const&amp;, WebCore::IntSize const&amp;, unsigned int)
WebKit: WebKit::WebPage::scaledSnapshotWithOptions(WebCore::IntRect const&amp;, double, unsigned int)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689699</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-17 19:14:21 -0700</bug_when>
    <thetext>But none of those code paths should be performance-sensitive. updateControlTints shouldn&apos;t even paint glyph buffers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689748</commentid>
    <comment_count>6</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-09-18 02:15:18 -0700</bug_when>
    <thetext>#2	WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
#3	WebCore::RenderLayerBacking::paintIntoLayer(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;, WTF::OptionSet&lt;WebCore::PaintBehavior&gt;, WebCore::EventRegionContext*)::$_22::operator()(WebCore::RenderLayer&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;) const
#4	WebCore::RenderLayerBacking::paintIntoLayer(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;, WTF::OptionSet&lt;WebCore::PaintBehavior&gt;, WebCore::EventRegionContext*)
#5	WebCore::RenderLayerBacking::paintContents(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, unsigned int)
#6	WebCore::GraphicsLayer::paintGraphicsLayerContents(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, unsigned int)
#7	WebCore::GraphicsLayerCA::platformCALayerPaintContents(WebCore::PlatformCALayer*, WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, unsigned int)
#8	WebCore::PlatformCALayer::drawLayerContents(WebCore::GraphicsContext&amp;, WebCore::PlatformCALayer*, WTF::Vector&lt;WebCore::FloatRect, 5ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;, unsigned int)
#9	WebCore::TileGrid::platformCALayerPaintContents(WebCore::PlatformCALayer*, WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, unsigned int)
#10	[WebSimpleLayer drawInContext:]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689797</commentid>
    <comment_count>7</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-09-18 08:42:37 -0700</bug_when>
    <thetext>I was wrong. I understand now what is happening.

Resetting the Page::m_renderingUpdateTimestamp at the end of Page::updateRendering() is wrong since this will make RenderLayer::paintLayerContents() sees it always zero. There is no direct call from Page::updateRendering() to RenderLayer::paintLayerContents(). Actual painting is scheduled in next run loop through TiledCoreAnimationDrawingArea::scheduleRenderingUpdateRunLoopObserver(). So PaintFrequencyTracker does not see the gap between the painting increased as I stated above. In fact PaintFrequencyTracker is not tracking any painting because the timestamp is always zero. And this is why we were falling always to the none DisplayList replaying back scenario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689810</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-18 09:13:56 -0700</bug_when>
    <thetext>That makes more sense. Be sure to check iOS and macOS which paint differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689861</commentid>
    <comment_count>9</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-09-18 10:46:56 -0700</bug_when>
    <thetext>I made Page::updateRendering() records the last MonotonicTime::now() when it called and make PaintFrequencyTracker use this timestamp. This is the same as the change in r266677. The only difference is PaintFrequencyTracker will track all the painting from now on. When Page::lastRenderingUpdateTimestamp() is zero, PaintFrequencyTracker will use call MonotonicTime::now() which will happen only in cases like calling updateControlTints() before calling Page::updateRendering() is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689877</commentid>
    <comment_count>10</comment_count>
      <attachid>409149</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-09-18 11:06:18 -0700</bug_when>
    <thetext>Created attachment 409149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689913</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-18 12:30:10 -0700</bug_when>
    <thetext>Committed r267254: &lt;https://trac.webkit.org/changeset/267254&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409149.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409098</attachid>
            <date>2020-09-17 18:46:32 -0700</date>
            <delta_ts>2020-09-18 11:06:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216677-20200917184632.patch</filename>
            <type>text/plain</type>
            <size>2277</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY5M2I1MmNlMWZlMGVm
ZjcyZDI5OTg2MDAwMWQ3NzM1ZjYwN2UxNy4uODAxMGE2Njk3ZTM1NDlkMmY3OTAxYmY4NWUxNDJl
ZTZjNGNiOGJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA5LTE3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVT
U0lPTihyMjY3MTM3KTogUGFpbnRGcmVxdWVuY3lUcmFja2VyIG5lZWRzIHRvIHRyYWNrIGFsbCB0
aGUgcGFpbnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNjY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRyYWNrIGFsbCB0aGUgcGFpbnRpbmcgcmVnYXJkbGVzcyB0aGV5IGNvbWUgdGhyb3VnaCBQ
YWdlOjp1cGRhdGVSZW5kZXJpbmcoKQorICAgICAgICBvciBub3QuIElmIHRoZSBwYWludGluZyBk
b2VzIG5vdCBjb21lIHRocm91Z2ggUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCksCisgICAgICAgIFBh
Z2U6OnJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCgpIHdpbGwgcmV0dXJuIHplcm8uIEluIHRoaXMg
Y2FzZSB3ZSB3aWxsCisgICAgICAgIHJlY29yZCBNb25vdG9uaWNUaW1lOjpub3coKS4gV2Ugd2ls
bCBsb3dlciB0aGUgdGltZSByZXNvbHV0aW9uIHdoaWxlCisgICAgICAgIFBhZ2U6OnVwZGF0ZVJl
bmRlcmluZygpIGlzIG9uIHRoZSBzdGFjayBidXQgd2Ugd2lsbCBjYWxsIE1vbm90b25pY1RpbWU6
Om5vdygpCisgICAgICAgIHdoZW4gaXQgaXMgbm90IG9uIHRoZSBzdGFjay4KKworICAgICAgICAq
IHJlbmRlcmluZy9QYWludEZyZXF1ZW5jeVRyYWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bmdsZVBhaW50RnJlcXVlbmN5VHJhY2tpbmc6OlNpbmdsZVBhaW50RnJlcXVlbmN5VHJhY2tpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2luZ2xlUGFpbnRGcmVxdWVuY3lUcmFja2luZzo6flNpbmds
ZVBhaW50RnJlcXVlbmN5VHJhY2tpbmcpOgorCiAyMDIwLTA5LTE3ICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFNlZ2ZhdWx0IGluIFdlYkNvcmU6OklEQktl
eTo6Y3JlYXRlQmluYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFp
bnRGcmVxdWVuY3lUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRGcmVx
dWVuY3lUcmFja2VyLmgKaW5kZXggNWFkYzY4NGQxNmZhYzZhNDU3ZmViNzBlYzA2NmZkYzExNGM4
NTk0Mi4uYTA5YmU1YjIwNjQ4NGZhYzYwOTk2NWVhY2QyNjBiODRhNmMxNzFlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50RnJlcXVlbmN5VHJhY2tlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEZyZXF1ZW5jeVRyYWNrZXIuaApAQCAtODcs
MjEgKzg3LDE3IEBAIGNsYXNzIFNpbmdsZVBhaW50RnJlcXVlbmN5VHJhY2tpbmcgewogcHVibGlj
OgogICAgIFNpbmdsZVBhaW50RnJlcXVlbmN5VHJhY2tpbmcoUGFpbnRGcmVxdWVuY3lUcmFja2Vy
JiBwYWludEZyZXF1ZW5jeVRyYWNrZXIsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wKQogICAgICAg
ICA6IG1fcGFpbnRGcmVxdWVuY3lUcmFja2VyKHBhaW50RnJlcXVlbmN5VHJhY2tlcikKLSAgICAg
ICAgLCBtX3RyYWNrKHRpbWVzdGFtcCkKICAgICB7Ci0gICAgICAgIGlmIChtX3RyYWNrKQotICAg
ICAgICAgICAgbV9wYWludEZyZXF1ZW5jeVRyYWNrZXIuYmVnaW4odGltZXN0YW1wKTsKKyAgICAg
ICAgbV9wYWludEZyZXF1ZW5jeVRyYWNrZXIuYmVnaW4odGltZXN0YW1wID8gdGltZXN0YW1wIDog
TW9ub3RvbmljVGltZTo6bm93KCkpOwogICAgIH0KIAogICAgIH5TaW5nbGVQYWludEZyZXF1ZW5j
eVRyYWNraW5nKCkKICAgICB7Ci0gICAgICAgIGlmIChtX3RyYWNrKQotICAgICAgICAgICAgbV9w
YWludEZyZXF1ZW5jeVRyYWNrZXIuZW5kKCk7CisgICAgICAgIG1fcGFpbnRGcmVxdWVuY3lUcmFj
a2VyLmVuZCgpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBQYWludEZyZXF1ZW5jeVRyYWNrZXIm
IG1fcGFpbnRGcmVxdWVuY3lUcmFja2VyOwotICAgIGJvb2wgbV90cmFjazsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409149</attachid>
            <date>2020-09-18 11:06:18 -0700</date>
            <delta_ts>2020-09-18 12:30:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216677-20200918110617.patch</filename>
            <type>text/plain</type>
            <size>6030</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY5M2I1MmNlMWZlMGVm
ZjcyZDI5OTg2MDAwMWQ3NzM1ZjYwN2UxNy4uN2Y0YWFmMmU3OGZmMjlhMjYwY2RhMThjODM3MjUx
YTJkODFkZjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTA5LTE4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVT
U0lPTihyMjY3MTM3KTogUGFpbnRGcmVxdWVuY3lUcmFja2VyIG5lZWRzIHRvIHRyYWNrIGFsbCB0
aGUgcGFpbnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNjY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIHIyNjcxMzcgcmVtb3ZlZCBhbGwgdGhlIG9wdGltaXphdGlvbnMgd2hpY2ggdGhlIERlc2ln
biB0ZXN0IGdvdCBmcm9tCisgICAgICAgIHIyMzA1NDQgYmVjYXVzZSBpdCByZXNldHMgdGhlIHJl
bmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCB0byB6ZXJvIHdoZW4gaXQKKyAgICAgICAgZXhpc3RzLiBU
aGlzIG1ha2VzIFJlbmRlckxheWVyIGFsd2F5cyByZXRyaWV2ZXMgdGhpcyB0aW1lc3RhbXAgd2l0
aCB2YWx1ZQorICAgICAgICBlcXVhbCB0byB6ZXJvLiBUaGVyZSBpcyBubyBkaXJlY3QgY2FsbCBm
cm9tIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpIHRvCisgICAgICAgIFJlbmRlckxheWVyOjpwYWlu
dExheWVyQ29udGVudHMoKS4gUGFpbnRpbmcgaGFzIHRvIGJlIHNjaGVkdWxlZCB0byB0aGUKKyAg
ICAgICAgbmV4dCBydW4tbG9vcC4gQmVjYXVzZSBTaW5nbGVQYWludEZyZXF1ZW5jeVRyYWNraW5n
IHRyYWNrcyBvbmx5IHRoZSBwYWludGluZworICAgICAgICB3aG9zZSB0aW1lc3RhbXAgaXMgbm90
IHplcm8sIFNpbmdsZVBhaW50RnJlcXVlbmN5VHJhY2tpbmcgaGFzIG5vdCBiZWVuCisgICAgICAg
IHRyYWNraW5nIGFueSBwYWludGluZy4KKworICAgICAgICBUaGUgc29sdXRpb24gaXMgdG8gdHJh
Y2sgYWxsIHRoZSBwYWludGluZy4gV2hlbiByZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAoKQorICAg
ICAgICBpcyB6ZXJvLCBTaW5nbGVQYWludEZyZXF1ZW5jeVRyYWNraW5nIHdpbGwgdXNlIE1vbm90
b25pY1RpbWU6Om5vdygpIGluc3RlYWQuCisgICAgICAgIFRoaXMgd2lsbCBoYXBwZW4gaW4gY2Fz
ZXMgbGlrZSBjYWxsaW5nIHVwZGF0ZUNvbnRyb2xUaW50cygpIGJlZm9yZSBjYWxsaW5nCisgICAg
ICAgIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpsYXN0UmVuZGVyaW5nVXBkYXRlVGlt
ZXN0YW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbmRlcmluZ1VwZGF0ZVRp
bWVzdGFtcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1BhaW50RnJlcXVl
bmN5VHJhY2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2luZ2xlUGFpbnRGcmVxdWVuY3lUcmFj
a2luZzo6U2luZ2xlUGFpbnRGcmVxdWVuY3lUcmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpT
aW5nbGVQYWludEZyZXF1ZW5jeVRyYWNraW5nOjp+U2luZ2xlUGFpbnRGcmVxdWVuY3lUcmFja2lu
Zyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisKIDIwMjAtMDktMTcgIE1p
Y2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgU2VnZmF1bHQgaW4g
V2ViQ29yZTo6SURCS2V5OjpjcmVhdGVCaW5hcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGY5MjNi
YTg5Mjk5YzAwOGUxMGYwZDI4ZWU4MGEzZjNmOTdiYWE5ODYuLmQ0NWQzNDQ0MDcwYTQ3OGMzMmM3
NTJmMDgxOTZlYmJmNDIyMWU0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTQ0Miw3ICsxNDQy
LDcgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgIH0KIAogICAgIFNldEZvclNj
b3BlPGJvb2w+IGluVXBkYXRlUmVuZGVyaW5nKG1faW5VcGRhdGVSZW5kZXJpbmcsIHRydWUpOwot
ICAgIFNldEZvclNjb3BlPE1vbm90b25pY1RpbWU+IHJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCht
X3JlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCwgTW9ub3RvbmljVGltZTo6bm93KCkpOworICAgIG1f
bGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAg
ICAgYm9vbCBpc1NWR0ltYWdlUGFnZSA9IGNocm9tZSgpLmNsaWVudCgpLmlzU1ZHSW1hZ2VDaHJv
bWVDbGllbnQoKTsKICAgICBpZiAoIWlzU1ZHSW1hZ2VQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAw
YTFkZDZiNGIzZjU1NWQwOTVhMGRjZWUzM2FhMTVlMDA4M2FjNzFlLi5hZGY5MDYyY2IwYTJhOTY4
OTk0MjdiNGJiYmEzNjFlODExN2Q5OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNzc1LDcgKzc3NSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMo
KSBjb25zdCB7IHJldHVybiBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHM7IH0K
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeVRvSW5qZWN0VXNlclNjcmlwdHMoKTsKIAot
ICAgIE1vbm90b25pY1RpbWUgcmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXA7IH0KKyAgICBNb25vdG9uaWNUaW1lIGxhc3RS
ZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2xhc3RSZW5kZXJpbmdV
cGRhdGVUaW1lc3RhbXA7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgTmF2aWdhdGlvbiB7CkBA
IC0xMDcyLDcgKzEwNzIsNyBAQCBwcml2YXRlOgogICAgIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKICAgICBib29sIG1faGFzQmVl
bk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyB7IGZhbHNlIH07CiAKLSAgICBNb25vdG9uaWNU
aW1lIG1fcmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOworICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6
Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50RnJlcXVl
bmN5VHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50RnJlcXVlbmN5VHJh
Y2tlci5oCmluZGV4IDVhZGM2ODRkMTZmYWM2YTQ1N2ZlYjcwZWMwNjZmZGMxMTRjODU5NDIuLmEw
OWJlNWIyMDY0ODRmYWM2MDk5NjVlYWNkMjYwYjg0YTZjMTcxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEZyZXF1ZW5jeVRyYWNrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRGcmVxdWVuY3lUcmFja2VyLmgKQEAgLTg3LDIxICs4Nywx
NyBAQCBjbGFzcyBTaW5nbGVQYWludEZyZXF1ZW5jeVRyYWNraW5nIHsKIHB1YmxpYzoKICAgICBT
aW5nbGVQYWludEZyZXF1ZW5jeVRyYWNraW5nKFBhaW50RnJlcXVlbmN5VHJhY2tlciYgcGFpbnRG
cmVxdWVuY3lUcmFja2VyLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCkKICAgICAgICAgOiBtX3Bh
aW50RnJlcXVlbmN5VHJhY2tlcihwYWludEZyZXF1ZW5jeVRyYWNrZXIpCi0gICAgICAgICwgbV90
cmFjayh0aW1lc3RhbXApCiAgICAgewotICAgICAgICBpZiAobV90cmFjaykKLSAgICAgICAgICAg
IG1fcGFpbnRGcmVxdWVuY3lUcmFja2VyLmJlZ2luKHRpbWVzdGFtcCk7CisgICAgICAgIG1fcGFp
bnRGcmVxdWVuY3lUcmFja2VyLmJlZ2luKHRpbWVzdGFtcCA/IHRpbWVzdGFtcCA6IE1vbm90b25p
Y1RpbWU6Om5vdygpKTsKICAgICB9CiAKICAgICB+U2luZ2xlUGFpbnRGcmVxdWVuY3lUcmFja2lu
ZygpCiAgICAgewotICAgICAgICBpZiAobV90cmFjaykKLSAgICAgICAgICAgIG1fcGFpbnRGcmVx
dWVuY3lUcmFja2VyLmVuZCgpOworICAgICAgICBtX3BhaW50RnJlcXVlbmN5VHJhY2tlci5lbmQo
KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgUGFpbnRGcmVxdWVuY3lUcmFja2VyJiBtX3BhaW50
RnJlcXVlbmN5VHJhY2tlcjsKLSAgICBib29sIG1fdHJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBhMGUwZTIzZThjZjhkNmUyNjg5ZjFj
YmI2MjZjOWFhYWQ1ZTVkNGEwLi43ZWI0YzVmN2VkMzRkZGZjOGJhMTFmZGIwZDc5ZjNiYjRhMWM1
NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQ2MjEs
NyArNDYyMSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgYm9vbCBzZWxlY3Rpb25B
bmRCYWNrZ3JvdW5kc09ubHkgPSBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvci5jb250YWlucyhQ
YWludEJlaGF2aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpOwogICAgIGJvb2wgc2Vs
ZWN0aW9uT25seSA9IHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVo
YXZpb3I6OlNlbGVjdGlvbk9ubHkpOwogCi0gICAgU2luZ2xlUGFpbnRGcmVxdWVuY3lUcmFja2lu
ZyBzaW5nbGVQYWludEZyZXF1ZW5jeVRyYWNraW5nKG1fcGFpbnRGcmVxdWVuY3lUcmFja2VyLCBw
YWdlKCkucmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wKCkpOworICAgIFNpbmdsZVBhaW50RnJlcXVl
bmN5VHJhY2tpbmcgc2luZ2xlUGFpbnRGcmVxdWVuY3lUcmFja2luZyhtX3BhaW50RnJlcXVlbmN5
VHJhY2tlciwgcGFnZSgpLmxhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAoKSk7CiAKICAgICBM
YXllckZyYWdtZW50cyBsYXllckZyYWdtZW50czsKICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlciA9IG51bGxwdHI7CkBAIC03MDEyLDcgKzcwMTIsNyBAQCBib29s
IFJlbmRlckxheWVyOjppc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnNpbXVsYXRlRnJlcXVlbnRQYWludCgpCiB7Ci0gICAgU2lu
Z2xlUGFpbnRGcmVxdWVuY3lUcmFja2luZyB7IG1fcGFpbnRGcmVxdWVuY3lUcmFja2VyLCBwYWdl
KCkucmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wKCkgfTsKKyAgICBTaW5nbGVQYWludEZyZXF1ZW5j
eVRyYWNraW5nIHsgbV9wYWludEZyZXF1ZW5jeVRyYWNrZXIsIHBhZ2UoKS5sYXN0UmVuZGVyaW5n
VXBkYXRlVGltZXN0YW1wKCkgfTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>