<?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>150590</bug_id>
          
          <creation_ts>2015-10-27 07:26:21 -0700</creation_ts>
          <short_desc>[GTK] Use a persistent main loop source in RunLoop glib implementation</short_desc>
          <delta_ts>2015-10-30 04:29:11 -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>Web Template Framework</component>
          <version>WebKit Local 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>150668</dependson>
          <blocked>150592</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136800</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-27 07:26:21 -0700</bug_when>
    <thetext>It&apos;s more efficient than creating and destroying a new source for every dispatch and it simplifies the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136801</commentid>
    <comment_count>1</comment_count>
      <attachid>264130</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-27 07:33:08 -0700</bug_when>
    <thetext>Created attachment 264130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137073</commentid>
    <comment_count>2</comment_count>
      <attachid>264130</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-10-28 00:54:46 -0700</bug_when>
    <thetext>Comment on attachment 264130
Patch

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

&gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:146
&gt;      stop();
&gt; +    g_source_destroy(m_source.get());

Is stop() still bringing anything here, given that the source is destroyed afterwards?

&gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:152
&gt; +    gint64 current = g_get_monotonic_time();
&gt; +    g_source_set_ready_time(m_source.get(), m_fireInterval.count() ? current + m_fireInterval.count() : current);

I&apos;d advise special-casing the 0-microsecond delay here, which is the most common.

&gt; gint64 delay = 0;
&gt; if (m_fireInterval.count())
&gt;     delay = g_get_monotonic_time() + m_fireInterval.count()
&gt; g_source_set_ready_time(m_source.get(), delay);

That way you avoid querying the monotonic time for most cases, and 0 delay still means &apos;dispatch ASAP&apos; in GLib.

&gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:157
&gt; +    stop();

Is stop() useful here? The source&apos;s ready time is updated afterwards anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137502</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-29 04:47:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 264130 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264130&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:146
&gt; &gt;      stop();
&gt; &gt; +    g_source_destroy(m_source.get());
&gt; 
&gt; Is stop() still bringing anything here, given that the source is destroyed
&gt; afterwards?

Nope, it can be just removed.

&gt; &gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:152
&gt; &gt; +    gint64 current = g_get_monotonic_time();
&gt; &gt; +    g_source_set_ready_time(m_source.get(), m_fireInterval.count() ? current + m_fireInterval.count() : current);
&gt; 
&gt; I&apos;d advise special-casing the 0-microsecond delay here, which is the most
&gt; common.

Ok.

&gt; &gt; gint64 delay = 0;
&gt; &gt; if (m_fireInterval.count())
&gt; &gt;     delay = g_get_monotonic_time() + m_fireInterval.count()
&gt; &gt; g_source_set_ready_time(m_source.get(), delay);
&gt; 
&gt; That way you avoid querying the monotonic time for most cases, and 0 delay
&gt; still means &apos;dispatch ASAP&apos; in GLib.

Ah, right, I guess we can do this too

g_source_set_ready_time(m_source.get(), m_fireInterval.count() ? g_get_monotonic_time() + m_fireInterval.count() : 0);

&gt; &gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:157
&gt; &gt; +    stop();
&gt; 
&gt; Is stop() useful here? The source&apos;s ready time is updated afterwards anyway.

Nope, it&apos;s also useless</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137507</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-29 05:20:33 -0700</bug_when>
    <thetext>Committed r191728: &lt;http://trac.webkit.org/changeset/191728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137510</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-29 06:09:18 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 150668</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137850</commentid>
    <comment_count>6</comment_count>
      <attachid>264389</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-30 04:21:54 -0700</bug_when>
    <thetext>Created attachment 264389
Patch for landing

Found the problem of the timeouts in the bots. I was cancelling the persistent source in RunLoop:stop(). In case of nested main loop, if there are pedning tasks in the parent loop, the source is invalidated and the pending tasks are never done. We don&apos;t really need to cancel the source on stop, since the main loop will be stopped anyway and the main context won&apos;t process more sources. So, this patch simply removes the set_ready_time to -1 line in RunLoop::stop()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137851</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-30 04:29:11 -0700</bug_when>
    <thetext>Committed r191786: &lt;http://trac.webkit.org/changeset/191786&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264130</attachid>
            <date>2015-10-27 07:33:08 -0700</date>
            <delta_ts>2015-10-30 04:21:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wtf-persistent-run-loop.diff</filename>
            <type>text/plain</type>
            <size>10703</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTgyNWZkMy4uYzBhOTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxNS0xMC0yNyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gVXNlIGEgcGVyc2lzdGVudCBtYWluIGxvb3Agc291cmNlIGluIFJ1bkxvb3AgZ2xpYiBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSXQncyBtb3JlIGVmZmljaWVudCB0aGFuIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIGEgbmV3
IHNvdXJjZSBmb3IKKyAgICAgICAgZXZlcnkgZGlzcGF0Y2ggYW5kIGl0IHNpbXBsaWZpZXMgdGhl
IGNvZGUuCisKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9nbGliL01h
aW5UaHJlYWRHTGliLmNwcDoKKyAgICAgICAgKFdURjo6c2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9u
c09uTWFpblRocmVhZCk6IFVzZQorICAgICAgICBSdW5Mb29wOjpkaXNwYXRjaCgpIGluc3RlYWQg
b2YgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgpLgorICAgICAg
ICAqIHd0Zi9nbGliL1J1bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6UnVu
TG9vcCk6IENyZWF0ZSBhbmQgc2V0dXAgdGhlIHBlcnNpc3RlbnQgc291cmNlLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlc3Ryb3kgdGhlIHBlcnNpc3RlbnQgc291cmNlLgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpzdG9wKTogU3RvcCB0aGUgcGVyc2lzdGVudCBzb3VyY2Ug
YmVmb3JlIHN0b3BwaW5nCisgICAgICAgIHRoZSBtYWluIGxvb3AuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6Ondha2VVcCk6IE1ha2UgdGhlIHBlcnNpc3RlbnQgc291cmNlIGFjdGl2ZS4gV2UKKyAg
ICAgICAgbm8gbG9uZ2VyIG5lZWQgdG8gZXhwbGljaXRseSB3YWtldXAgdGhlIGNvbnRleHQuCisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKTogQ3JlYXRlIGFuZCBz
ZXR1cCB0aGUKKyAgICAgICAgcGVyc2lzdGVudCBzb3VyY2UuCisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlc3Ryb3kgdGhlIHBlcnNpc3RlbnQgc291cmNl
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnVwZGF0ZVJlYWR5VGltZSk6IFNl
dCB0aGUgcmVhZHkgdGltZQorICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIGZpcmUgaW50ZXJ2YWwu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBNYWtlIHRoZSBwZXJz
aXN0ZW50IHNvdXJjZSBhY3RpdmUuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6
c3RvcCk6IFN0b3AgdGhlIHBlcnNpc3RlbnQgc291cmNlLgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpUaW1lckJhc2U6OmlzQWN0aXZlKTogUmV0dXJuIHdoZXRoZXIgdGhlCisgICAgICAgIHBlcnNp
c3RlbnQgc291cmNlIGlzIGFjdGl2ZS4KKwogMjAxNS0xMC0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZhY3RvciBvdXQgdGhlIGdyYXBoIG5vZGUgd29ya2xp
c3RzIGZyb20gREZHIGludG8gV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
LmggYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKaW5kZXggNmYzMDIzNi4uOWIxNTllNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1
bkxvb3AuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAog
I2lmIFVTRShHTElCKQotI2luY2x1ZGUgPHd0Zi9nbGliL0dNYWluTG9vcFNvdXJjZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oRUZMKQpA
QCAtMTAwLDcgKzEwMCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEVjb3JlX1RpbWVyKiBtX3RpbWVy
OwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmc7CiAjZWxpZiBVU0UoR0xJQikKLSAgICAgICAg
R01haW5Mb29wU291cmNlIG1fdGltZXJTb3VyY2U7CisgICAgICAgIHZvaWQgdXBkYXRlUmVhZHlU
aW1lKCk7CisgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisgICAgICAgIGJvb2wg
bV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CisgICAgICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29u
ZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CiAjZW5kaWYKICAgICB9OwogCkBAIC0xNTUsMTEgKzE1
OCw5IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRh
LCB2b2lkKiwgdW5zaWduZWQpOwogI2VsaWYgVVNFKEdMSUIpCi1wdWJsaWM6Ci0gICAgc3RhdGlj
IGdib29sZWFuIHF1ZXVlV29yayhSdW5Mb29wKik7Ci1wcml2YXRlOgogICAgIEdSZWZQdHI8R01h
aW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+
IG1fbWFpbkxvb3BzOworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvTWFpblRocmVhZEdMaWIuY3BwIGIv
U291cmNlL1dURi93dGYvZ2xpYi9NYWluVGhyZWFkR0xpYi5jcHAKaW5kZXggNjQ5YTlhNS4uZDJl
MTIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9NYWluVGhyZWFkR0xpYi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9NYWluVGhyZWFkR0xpYi5jcHAKQEAgLTMwLDcgKzMw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYWluVGhyZWFkLmgiCiAKLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HTWFpbkxvb3BTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIGluaXRpYWxp
emVNYWluVGhyZWFkUGxhdGZvcm0oKQogCiB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNP
bk1haW5UaHJlYWQoKQogewotICAgIEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1bGVBbmREZWxldGVP
bkRlc3Ryb3koIltXZWJLaXRdIGRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQiLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4oZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCkpOworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oZGlzcGF0Y2hG
dW5jdGlvbnNGcm9tTWFpblRocmVhZCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291cmNlL1dURi93
dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggN2RjNDA3NS4uMzdhNzhjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTMyLDYgKzMyLDIyIEBACiAKIG5hbWVzcGFjZSBX
VEYgewogCitzdGF0aWMgR1NvdXJjZUZ1bmNzIHJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMgPSB7Cisg
ICAgbnVsbHB0ciwgLy8gcHJlcGFyZQorICAgIG51bGxwdHIsIC8vIGNoZWNrCisgICAgLy8gZGlz
cGF0Y2gKKyAgICBbXShHU291cmNlKiBzb3VyY2UsIEdTb3VyY2VGdW5jIGNhbGxiYWNrLCBncG9p
bnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4KKyAgICB7CisgICAgICAgIGlmIChnX3NvdXJjZV9n
ZXRfcmVhZHlfdGltZShzb3VyY2UpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNF
X0NPTlRJTlVFOworICAgICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UsIC0xKTsK
KyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHVzZXJEYXRhKTsKKyAgICB9LAorICAgIG51bGxwdHIs
IC8vIGZpbmFsaXplCisgICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9jYWxsYmFjaworICAgIG51bGxw
dHIsIC8vIGNsb3N1cmVfbWFyc2hhbGwKK307CisKIFJ1bkxvb3A6OlJ1bkxvb3AoKQogewogICAg
IG1fbWFpbkNvbnRleHQgPSBnX21haW5fY29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKTsKQEAg
LTQyLDEwICs1OCwyMiBAQCBSdW5Mb29wOjpSdW5Mb29wKCkKICAgICBHUmVmUHRyPEdNYWluTG9v
cD4gaW5uZXJtb3N0TG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcobV9tYWluQ29udGV4
dC5nZXQoKSwgRkFMU0UpKTsKICAgICBBU1NFUlQoaW5uZXJtb3N0TG9vcCk7CiAgICAgbV9tYWlu
TG9vcHMuYXBwZW5kKGlubmVybW9zdExvb3ApOworCisgICAgbV9zb3VyY2UgPSBhZG9wdEdSZWYo
Z19zb3VyY2VfbmV3KCZydW5Mb29wU291cmNlRnVuY3Rpb25zLCBzaXplb2YoR1NvdXJjZSkpKTsK
KyAgICBnX3NvdXJjZV9zZXRfbmFtZShtX3NvdXJjZS5nZXQoKSwgIltXZWJLaXRdIFJ1bkxvb3Ag
d29yayIpOworICAgIGdfc291cmNlX3NldF9jYW5fcmVjdXJzZShtX3NvdXJjZS5nZXQoKSwgVFJV
RSk7CisgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUobV9zb3VyY2UuZ2V0KCksIC0xKTsKKyAg
ICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sobV9zb3VyY2UuZ2V0KCksIFtdKGdwb2ludGVyIHVzZXJE
YXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgIHN0YXRpY19jYXN0PFJ1bkxvb3AqPih1c2VyRGF0
YSktPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHJldHVybiBHX1NPVVJDRV9DT05USU5VRTsKKyAg
ICB9LCB0aGlzLCBudWxscHRyKTsKKyAgICBnX3NvdXJjZV9hdHRhY2gobV9zb3VyY2UuZ2V0KCks
IG1fbWFpbkNvbnRleHQuZ2V0KCkpOwogfQogCiBSdW5Mb29wOjp+UnVuTG9vcCgpCiB7CisgICAg
Z19zb3VyY2VfZGVzdHJveShtX3NvdXJjZS5nZXQoKSk7CisKICAgICBmb3IgKGludCBpID0gbV9t
YWluTG9vcHMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgaWYgKCFnX21haW5f
bG9vcF9pc19ydW5uaW5nKG1fbWFpbkxvb3BzW2ldLmdldCgpKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtODIsNiArMTEwLDggQEAgdm9pZCBSdW5Mb29wOjpydW4oKQogCiB2b2lkIFJ1bkxv
b3A6OnN0b3AoKQogeworICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgp
LCAtMSk7CisKICAgICAvLyBUaGUgaW5uZXJtb3N0IG1haW4gbG9vcCBzaG91bGQgYWx3YXlzIGJl
IHRoZXJlLgogICAgIEFTU0VSVCghbV9tYWluTG9vcHMuaXNFbXB0eSgpKTsKICAgICBHUmVmUHRy
PEdNYWluTG9vcD4gbGFzdE1haW5Mb29wID0gbV9tYWluTG9vcHMubGFzdCgpOwpAQCAtOTEsMzcg
KzEyMSw1MyBAQCB2b2lkIFJ1bkxvb3A6OnN0b3AoKQogCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgp
CiB7Ci0gICAgUmVmUHRyPFJ1bkxvb3A+IHJ1bkxvb3AodGhpcyk7Ci0gICAgR01haW5Mb29wU291
cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0gUnVuTG9vcCB3b3JrIiwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+KFtydW5Mb29wXSB7Ci0gICAgICAgIHJ1bkxvb3AtPnBlcmZv
cm1Xb3JrKCk7Ci0gICAgfSksIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgbV9tYWluQ29u
dGV4dC5nZXQoKSk7Ci0gICAgZ19tYWluX2NvbnRleHRfd2FrZXVwKG1fbWFpbkNvbnRleHQuZ2V0
KCkpOworICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCBnX2dldF9t
b25vdG9uaWNfdGltZSgpKTsKIH0KIAogUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVu
TG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQorICAgICwgbV9zb3VyY2Uo
YWRvcHRHUmVmKGdfc291cmNlX25ldygmcnVuTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKEdT
b3VyY2UpKSkpCiB7CisgICAgZ19zb3VyY2Vfc2V0X25hbWUobV9zb3VyY2UuZ2V0KCksICJbV2Vi
S2l0XSBSdW5Mb29wOjpUaW1lciB3b3JrIik7CisgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUo
bV9zb3VyY2UuZ2V0KCksIC0xKTsKKyAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sobV9zb3VyY2Uu
Z2V0KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgIFJ1bkxv
b3A6OlRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPih1
c2VyRGF0YSk7CisgICAgICAgIHRpbWVyLT5maXJlZCgpOworICAgICAgICBpZiAodGltZXItPm1f
aXNSZXBlYXRpbmcpCisgICAgICAgICAgICB0aW1lci0+dXBkYXRlUmVhZHlUaW1lKCk7CisgICAg
ICAgIHJldHVybiBHX1NPVVJDRV9DT05USU5VRTsKKyAgICB9LCB0aGlzLCBudWxscHRyKTsKKyAg
ICBnX3NvdXJjZV9hdHRhY2gobV9zb3VyY2UuZ2V0KCksIG1fcnVuTG9vcC5tX21haW5Db250ZXh0
LmdldCgpKTsKIH0KIAogUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKIHsKICAgICBz
dG9wKCk7CisgICAgZ19zb3VyY2VfZGVzdHJveShtX3NvdXJjZS5nZXQoKSk7Cit9CisKK3ZvaWQg
UnVuTG9vcDo6VGltZXJCYXNlOjp1cGRhdGVSZWFkeVRpbWUoKQoreworICAgIGdpbnQ2NCBjdXJy
ZW50ID0gZ19nZXRfbW9ub3RvbmljX3RpbWUoKTsKKyAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGlt
ZShtX3NvdXJjZS5nZXQoKSwgbV9maXJlSW50ZXJ2YWwuY291bnQoKSA/IGN1cnJlbnQgKyBtX2Zp
cmVJbnRlcnZhbC5jb3VudCgpIDogY3VycmVudCk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6VGltZXJC
YXNlOjpzdGFydChkb3VibGUgZmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKIHsKLSAgICBtX3Rp
bWVyU291cmNlLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gUnVuTG9vcDo6VGltZXIiLCBz
dGQ6OmZ1bmN0aW9uPGJvb2wgKCk+KFt0aGlzLCByZXBlYXRdIHsgZmlyZWQoKTsgcmV0dXJuIHJl
cGVhdDsgfSksCi0gICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGZpcmVJbnRlcnZh
bCkpLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIG1fcnVuTG9vcC5tX21haW5Db250ZXh0
LmdldCgpKTsKKyAgICBzdG9wKCk7CisgICAgbV9maXJlSW50ZXJ2YWwgPSBzdGQ6OmNocm9ubzo6
ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVy
YXRpb248ZG91YmxlPihmaXJlSW50ZXJ2YWwpKTsKKyAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0
OworICAgIHVwZGF0ZVJlYWR5VGltZSgpOwogfQogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
c3RvcCgpCiB7Ci0gICAgbV90aW1lclNvdXJjZS5jYW5jZWwoKTsKKyAgICBnX3NvdXJjZV9zZXRf
cmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgLTEpOwogfQogCiBib29sIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBtX3RpbWVyU291cmNlLmlzU2No
ZWR1bGVkKCk7CisgICAgcmV0dXJuIGdfc291cmNlX2dldF9yZWFkeV90aW1lKG1fc291cmNlLmdl
dCgpKSAhPSAtMTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWVmMzcx
MS4uZjNmNTVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTEwLTI3ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBV
c2UgYSBwZXJzaXN0ZW50IG1haW4gbG9vcCBzb3VyY2UgaW4gUnVuTG9vcCBnbGliIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTA1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgUnVuTG9vcDo6ZGlzcGF0Y2goKSBpbnN0ZWFkIG9mCisgICAgICAgIEdNYWluTG9vcFNvdXJj
ZTo6c2NoZWR1bGVBbmREZWxldGVPbkRlc3Ryb3kgaW4gYSBjb3VwbGUgb2Ygc2ltcGxlCisgICAg
ICAgIGNhc2VzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
SU9DaGFubmVsU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cnVuVGFz
a0luUXVldWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnTGVhdmUpOgorCiAy
MDE1LTEwLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBGaXggR1RLKyBidWlsZCBhZnRlciByMTkxNTQzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9D
aGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCA1YmMwN2M3Li4zN2E1MzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0No
YW5uZWxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcApAQCAtMzAsOCArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR01haW5Mb29wU291cmNlLmg+Ci0jaW5jbHVkZSA8d3RmL2ds
aWIvR011dGV4TG9ja2VyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzgsNyArNzcs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcnVuVGFza0luUXVldWUoc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiB0YXNrLCBXb3JrUXVldWUqIHF1ZXVlKQogICAgIH0KIAogICAgIC8vIFVzaW5nIG51bGxw
dHIgYXMgcXVldWUgc3VibWl0cyB0aGUgcmVzdWx0IHRvIHRoZSBtYWluIGNvbnRleHQuCi0gICAg
R01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0gSU9D
aGFubmVsIHRhc2siLCBXVEY6Om1vdmUodGFzaykpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChXVEY6Om1vdmUodGFzaykpOwogfQogCiBzdGF0aWMgdm9pZCBmaWxsRGF0YUZyb21SZWFk
QnVmZmVyKFNvdXBCdWZmZXIqIHJlYWRCdWZmZXIsIHNpemVfdCBzaXplLCBEYXRhJiBkYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIu
Y3BwCmluZGV4IDMwNGI2YmUuLjExM2Y4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVi
b2FyZEhlbHBlci5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9H
TWFpbkxvb3BTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yMjEs
NyArMjIxLDcgQEAgdm9pZCBEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdMZWF2ZShHZGtEcmFnQ29u
dGV4dCogY29udGV4dCkKICAgICAvLyBEdXJpbmcgYSBkcm9wIEdUSysgd2lsbCBmaXJlIGEgZHJh
Zy1sZWF2ZSBzaWduYWwgcmlnaHQgYmVmb3JlIGZpcmluZwogICAgIC8vIHRoZSBkcmFnLWRyb3Ag
c2lnbmFsLiBXZSB3YW50IHRoZSBhY3Rpb25zIGZvciBkcmFnLWxlYXZlIHRvIGhhcHBlbiBhZnRl
cgogICAgIC8vIHRob3NlIGZvciBkcmFnLWRyb3AsIHNvIHNjaGVkdWxlIHRoZW0gdG8gaGFwcGVu
IGFzeW5jaHJvbm91c2x5IGhlcmUuCi0gICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERl
bGV0ZU9uRGVzdHJveSgiW1dlYktpdF0gaGFuZGxlRHJhZ0xlYXZlTGF0ZXIiLCBbdGhpcywgZHJv
cHBpbmdDb250ZXh0XSgpIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGRy
b3BwaW5nQ29udGV4dF0oKSB7CiAgICAgICAgIGF1dG8gaXQgPSBtX2Ryb3BwaW5nQ29udGV4dHMu
ZmluZChkcm9wcGluZ0NvbnRleHQtPmdka0NvbnRleHQpOwogICAgICAgICBpZiAoaXQgPT0gbV9k
cm9wcGluZ0NvbnRleHRzLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwo=
</data>
<flag name="review"
          id="289270"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264389</attachid>
            <date>2015-10-30 04:21:54 -0700</date>
            <delta_ts>2015-10-30 04:21:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wtf-runloop-source.diff</filename>
            <type>text/plain</type>
            <size>10265</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNDc5N2ZjNy4uNzQ4ZjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxNS0xMC0yOSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gVXNlIGEgcGVyc2lzdGVudCBtYWluIGxvb3Agc291cmNlIGluIFJ1bkxvb3AgZ2xpYiBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAg
ICAgSXQncyBtb3JlIGVmZmljaWVudCB0aGFuIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIGEgbmV3
IHNvdXJjZSBmb3IKKyAgICAgICAgZXZlcnkgZGlzcGF0Y2ggYW5kIGl0IHNpbXBsaWZpZXMgdGhl
IGNvZGUuCisKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9nbGliL01h
aW5UaHJlYWRHTGliLmNwcDoKKyAgICAgICAgKFdURjo6c2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9u
c09uTWFpblRocmVhZCk6IFVzZQorICAgICAgICBSdW5Mb29wOjpkaXNwYXRjaCgpIGluc3RlYWQg
b2YgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgpLgorICAgICAg
ICAqIHd0Zi9nbGliL1J1bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6UnVu
TG9vcCk6IENyZWF0ZSBhbmQgc2V0dXAgdGhlIHBlcnNpc3RlbnQgc291cmNlLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlc3Ryb3kgdGhlIHBlcnNpc3RlbnQgc291cmNlLgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpzdG9wKTogU3RvcCB0aGUgcGVyc2lzdGVudCBzb3VyY2Ug
YmVmb3JlIHN0b3BwaW5nCisgICAgICAgIHRoZSBtYWluIGxvb3AuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6Ondha2VVcCk6IE1ha2UgdGhlIHBlcnNpc3RlbnQgc291cmNlIGFjdGl2ZS4gV2UKKyAg
ICAgICAgbm8gbG9uZ2VyIG5lZWQgdG8gZXhwbGljaXRseSB3YWtldXAgdGhlIGNvbnRleHQuCisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKTogQ3JlYXRlIGFuZCBz
ZXR1cCB0aGUKKyAgICAgICAgcGVyc2lzdGVudCBzb3VyY2UuCisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlc3Ryb3kgdGhlIHBlcnNpc3RlbnQgc291cmNl
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnVwZGF0ZVJlYWR5VGltZSk6IFNl
dCB0aGUgcmVhZHkgdGltZQorICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIGZpcmUgaW50ZXJ2YWwu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBNYWtlIHRoZSBwZXJz
aXN0ZW50IHNvdXJjZSBhY3RpdmUuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6
c3RvcCk6IFN0b3AgdGhlIHBlcnNpc3RlbnQgc291cmNlLgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpUaW1lckJhc2U6OmlzQWN0aXZlKTogUmV0dXJuIHdoZXRoZXIgdGhlCisgICAgICAgIHBlcnNp
c3RlbnQgc291cmNlIGlzIGFjdGl2ZS4KKwogMjAxNS0xMC0zMCAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bTWFjXSBmaXggV1RGIGJ1aWxk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmggYi9Tb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wLmgKaW5kZXggNmYzMDIzNi4uOWIxNTllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaApAQCAtMzYsNyArMzYs
NyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogI2lmIFVTRShHTElCKQotI2luY2x1
ZGUgPHd0Zi9nbGliL0dNYWluTG9vcFNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oRUZMKQpAQCAtMTAwLDcgKzEwMCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIEVjb3JlX1RpbWVyKiBtX3RpbWVyOwogICAgICAgICBib29sIG1faXNS
ZXBlYXRpbmc7CiAjZWxpZiBVU0UoR0xJQikKLSAgICAgICAgR01haW5Mb29wU291cmNlIG1fdGlt
ZXJTb3VyY2U7CisgICAgICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAgICAgIEdSZWZQ
dHI8R1NvdXJjZT4gbV9zb3VyY2U7CisgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNl
IH07CisgICAgICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2YWwgeyAw
IH07CiAjZW5kaWYKICAgICB9OwogCkBAIC0xNTUsMTEgKzE1OCw5IEBAIHByaXZhdGU6CiAKICAg
ICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiwgdW5zaWduZWQpOwog
I2VsaWYgVVNFKEdMSUIpCi1wdWJsaWM6Ci0gICAgc3RhdGljIGdib29sZWFuIHF1ZXVlV29yayhS
dW5Mb29wKik7Ci1wcml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX21haW5Db250
ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+IG1fbWFpbkxvb3BzOworICAgIEdS
ZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvTWFpblRocmVhZEdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9N
YWluVGhyZWFkR0xpYi5jcHAKaW5kZXggNjQ5YTlhNS4uZDJlMTIxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvZ2xpYi9NYWluVGhyZWFkR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
Z2xpYi9NYWluVGhyZWFkR0xpYi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJNYWluVGhyZWFkLmgiCiAKLSNpbmNsdWRlIDx3dGYvZ2xpYi9HTWFp
bkxvb3BTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0o
KQogCiB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQogewotICAg
IEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1bGVBbmREZWxldGVPbkRlc3Ryb3koIltXZWJLaXRdIGRp
c3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQiLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oZGlz
cGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVh
ZCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5j
cHAKaW5kZXggN2RjNDA3NS4uYzVlOGZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xp
Yi9SdW5Mb29wR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5j
cHAKQEAgLTMyLDYgKzMyLDIyIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitzdGF0aWMgR1NvdXJj
ZUZ1bmNzIHJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMgPSB7CisgICAgbnVsbHB0ciwgLy8gcHJlcGFy
ZQorICAgIG51bGxwdHIsIC8vIGNoZWNrCisgICAgLy8gZGlzcGF0Y2gKKyAgICBbXShHU291cmNl
KiBzb3VyY2UsIEdTb3VyY2VGdW5jIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jv
b2xlYW4KKyAgICB7CisgICAgICAgIGlmIChnX3NvdXJjZV9nZXRfcmVhZHlfdGltZShzb3VyY2Up
ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOworICAgICAgICBn
X3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UsIC0xKTsKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKHVzZXJEYXRhKTsKKyAgICB9LAorICAgIG51bGxwdHIsIC8vIGZpbmFsaXplCisgICAgbnVs
bHB0ciwgLy8gY2xvc3VyZV9jYWxsYmFjaworICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfbWFyc2hh
bGwKK307CisKIFJ1bkxvb3A6OlJ1bkxvb3AoKQogewogICAgIG1fbWFpbkNvbnRleHQgPSBnX21h
aW5fY29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKTsKQEAgLTQyLDEwICs1OCwyMSBAQCBSdW5M
b29wOjpSdW5Mb29wKCkKICAgICBHUmVmUHRyPEdNYWluTG9vcD4gaW5uZXJtb3N0TG9vcCA9IGFk
b3B0R1JlZihnX21haW5fbG9vcF9uZXcobV9tYWluQ29udGV4dC5nZXQoKSwgRkFMU0UpKTsKICAg
ICBBU1NFUlQoaW5uZXJtb3N0TG9vcCk7CiAgICAgbV9tYWluTG9vcHMuYXBwZW5kKGlubmVybW9z
dExvb3ApOworCisgICAgbV9zb3VyY2UgPSBhZG9wdEdSZWYoZ19zb3VyY2VfbmV3KCZydW5Mb29w
U291cmNlRnVuY3Rpb25zLCBzaXplb2YoR1NvdXJjZSkpKTsKKyAgICBnX3NvdXJjZV9zZXRfbmFt
ZShtX3NvdXJjZS5nZXQoKSwgIltXZWJLaXRdIFJ1bkxvb3Agd29yayIpOworICAgIGdfc291cmNl
X3NldF9jYW5fcmVjdXJzZShtX3NvdXJjZS5nZXQoKSwgVFJVRSk7CisgICAgZ19zb3VyY2Vfc2V0
X2NhbGxiYWNrKG1fc291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xl
YW4geworICAgICAgICBzdGF0aWNfY2FzdDxSdW5Mb29wKj4odXNlckRhdGEpLT5wZXJmb3JtV29y
aygpOworICAgICAgICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7CisgICAgfSwgdGhpcywgbnVs
bHB0cik7CisgICAgZ19zb3VyY2VfYXR0YWNoKG1fc291cmNlLmdldCgpLCBtX21haW5Db250ZXh0
LmdldCgpKTsKIH0KIAogUnVuTG9vcDo6flJ1bkxvb3AoKQogeworICAgIGdfc291cmNlX2Rlc3Ry
b3kobV9zb3VyY2UuZ2V0KCkpOworCiAgICAgZm9yIChpbnQgaSA9IG1fbWFpbkxvb3BzLnNpemUo
KSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIGlmICghZ19tYWluX2xvb3BfaXNfcnVubmlu
ZyhtX21haW5Mb29wc1tpXS5nZXQoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTkxLDM3
ICsxMTgsNDkgQEAgdm9pZCBSdW5Mb29wOjpzdG9wKCkKIAogdm9pZCBSdW5Mb29wOjp3YWtlVXAo
KQogewotICAgIFJlZlB0cjxSdW5Mb29wPiBydW5Mb29wKHRoaXMpOwotICAgIEdNYWluTG9vcFNv
dXJjZTo6c2NoZWR1bGVBbmREZWxldGVPbkRlc3Ryb3koIltXZWJLaXRdIFJ1bkxvb3Agd29yayIs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihbcnVuTG9vcF0gewotICAgICAgICBydW5Mb29wLT5wZXJm
b3JtV29yaygpOwotICAgIH0pLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIG1fbWFpbkNv
bnRleHQuZ2V0KCkpOwotICAgIGdfbWFpbl9jb250ZXh0X3dha2V1cChtX21haW5Db250ZXh0Lmdl
dCgpKTsKKyAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgZ19nZXRf
bW9ub3RvbmljX3RpbWUoKSk7CiB9CiAKIFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1
bkxvb3AmIHJ1bkxvb3ApCiAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKKyAgICAsIG1fc291cmNl
KGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihH
U291cmNlKSkpKQogeworICAgIGdfc291cmNlX3NldF9uYW1lKG1fc291cmNlLmdldCgpLCAiW1dl
YktpdF0gUnVuTG9vcDo6VGltZXIgd29yayIpOworICAgIGdfc291cmNlX3NldF9jYWxsYmFjayht
X3NvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAg
ICAgUnVuTG9vcDo6VGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3A6OlRpbWVy
QmFzZSo+KHVzZXJEYXRhKTsKKyAgICAgICAgdGltZXItPmZpcmVkKCk7CisgICAgICAgIGlmICh0
aW1lci0+bV9pc1JlcGVhdGluZykKKyAgICAgICAgICAgIHRpbWVyLT51cGRhdGVSZWFkeVRpbWUo
KTsKKyAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOworICAgIH0sIHRoaXMsIG51bGxw
dHIpOworICAgIGdfc291cmNlX2F0dGFjaChtX3NvdXJjZS5nZXQoKSwgbV9ydW5Mb29wLm1fbWFp
bkNvbnRleHQuZ2V0KCkpOwogfQogCiBSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQog
ewotICAgIHN0b3AoKTsKKyAgICBnX3NvdXJjZV9kZXN0cm95KG1fc291cmNlLmdldCgpKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnVwZGF0ZVJlYWR5VGltZSgpCit7CisgICAgZ19z
b3VyY2Vfc2V0X3JlYWR5X3RpbWUobV9zb3VyY2UuZ2V0KCksIG1fZmlyZUludGVydmFsLmNvdW50
KCkgPyBnX2dldF9tb25vdG9uaWNfdGltZSgpICsgbV9maXJlSW50ZXJ2YWwuY291bnQoKSA6IDAp
OwogfQogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIGZpcmVJbnRlcnZh
bCwgYm9vbCByZXBlYXQpCiB7Ci0gICAgbV90aW1lclNvdXJjZS5zY2hlZHVsZUFmdGVyRGVsYXko
IltXZWJLaXRdIFJ1bkxvb3A6OlRpbWVyIiwgc3RkOjpmdW5jdGlvbjxib29sICgpPihbdGhpcywg
cmVwZWF0XSB7IGZpcmVkKCk7IHJldHVybiByZXBlYXQ7IH0pLAotICAgICAgICBzdGQ6OmNocm9u
bzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9ubzo6
ZHVyYXRpb248ZG91YmxlPihmaXJlSW50ZXJ2YWwpKSwgR19QUklPUklUWV9ERUZBVUxULCBudWxs
cHRyLCBtX3J1bkxvb3AubV9tYWluQ29udGV4dC5nZXQoKSk7CisgICAgbV9maXJlSW50ZXJ2YWwg
PSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihz
dGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihmaXJlSW50ZXJ2YWwpKTsKKyAgICBtX2lzUmVw
ZWF0aW5nID0gcmVwZWF0OworICAgIHVwZGF0ZVJlYWR5VGltZSgpOwogfQogCiB2b2lkIFJ1bkxv
b3A6OlRpbWVyQmFzZTo6c3RvcCgpCiB7Ci0gICAgbV90aW1lclNvdXJjZS5jYW5jZWwoKTsKKyAg
ICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgLTEpOwogfQogCiBib29s
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBtX3Rp
bWVyU291cmNlLmlzU2NoZWR1bGVkKCk7CisgICAgcmV0dXJuIGdfc291cmNlX2dldF9yZWFkeV90
aW1lKG1fc291cmNlLmdldCgpKSAhPSAtMTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggYjQ5MjMxYy4uMmZlZDY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE1LTEwLTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXSBVc2UgYSBwZXJzaXN0ZW50IG1haW4gbG9vcCBzb3VyY2UgaW4gUnVuTG9v
cCBnbGliIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTA1OTAKKworICAgICAgICBSZXZpZXdlZCBieSDFvWFuIERvYmVyxaFl
ay4KKworICAgICAgICBVc2UgUnVuTG9vcDo6ZGlzcGF0Y2goKSBpbnN0ZWFkIG9mCisgICAgICAg
IEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1bGVBbmREZWxldGVPbkRlc3Ryb3kgaW4gYSBjb3VwbGUg
b2Ygc2ltcGxlCisgICAgICAgIGNhc2VzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6cnVuVGFza0luUXVldWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJhZ0Fu
ZERyb3BIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpk
cmFnTGVhdmUpOgorCiAyMDE1LTEwLTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBXZWJDb3JlIGEgZnJhbWV3b3JrIGluIE1hYyBD
TWFrZSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCA1YmMwN2M3
Li4zN2E1MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcApAQCAtMzAsOCAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR01haW5Mb29wU291cmNlLmg+
Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR011dGV4TG9ja2VyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNzgsNyArNzcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcnVuVGFza0luUXVldWUo
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiB0YXNrLCBXb3JrUXVldWUqIHF1ZXVlKQogICAgIH0KIAog
ICAgIC8vIFVzaW5nIG51bGxwdHIgYXMgcXVldWUgc3VibWl0cyB0aGUgcmVzdWx0IHRvIHRoZSBt
YWluIGNvbnRleHQuCi0gICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVz
dHJveSgiW1dlYktpdF0gSU9DaGFubmVsIHRhc2siLCBXVEY6Om1vdmUodGFzaykpOworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEY6Om1vdmUodGFzaykpOwogfQogCiBzdGF0aWMgdm9p
ZCBmaWxsRGF0YUZyb21SZWFkQnVmZmVyKFNvdXBCdWZmZXIqIHJlYWRCdWZmZXIsIHNpemVfdCBz
aXplLCBEYXRhJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9E
cmFnQW5kRHJvcEhhbmRsZXIuY3BwCmluZGV4IDMwNGI2YmUuLjExM2Y4NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEhlbHBlci5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HTWFpbkxvb3BTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBEcmFnQW5kRHJvcEhhbmRsZXI6OmRy
YWdMZWF2ZShHZGtEcmFnQ29udGV4dCogY29udGV4dCkKICAgICAvLyBEdXJpbmcgYSBkcm9wIEdU
Sysgd2lsbCBmaXJlIGEgZHJhZy1sZWF2ZSBzaWduYWwgcmlnaHQgYmVmb3JlIGZpcmluZwogICAg
IC8vIHRoZSBkcmFnLWRyb3Agc2lnbmFsLiBXZSB3YW50IHRoZSBhY3Rpb25zIGZvciBkcmFnLWxl
YXZlIHRvIGhhcHBlbiBhZnRlcgogICAgIC8vIHRob3NlIGZvciBkcmFnLWRyb3AsIHNvIHNjaGVk
dWxlIHRoZW0gdG8gaGFwcGVuIGFzeW5jaHJvbm91c2x5IGhlcmUuCi0gICAgR01haW5Mb29wU291
cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0gaGFuZGxlRHJhZ0xlYXZl
TGF0ZXIiLCBbdGhpcywgZHJvcHBpbmdDb250ZXh0XSgpIHsKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3RoaXMsIGRyb3BwaW5nQ29udGV4dF0oKSB7CiAgICAgICAgIGF1dG8gaXQgPSBt
X2Ryb3BwaW5nQ29udGV4dHMuZmluZChkcm9wcGluZ0NvbnRleHQtPmdka0NvbnRleHQpOwogICAg
ICAgICBpZiAoaXQgPT0gbV9kcm9wcGluZ0NvbnRleHRzLmVuZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>