<?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>150392</bug_id>
          
          <creation_ts>2015-10-21 06:35:57 -0700</creation_ts>
          <short_desc>[GTK] Implement rendering frames timeline panel for GTK port</short_desc>
          <delta_ts>2020-08-24 23:15:31 -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 Inspector</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=142748</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1135202</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-21 06:35:57 -0700</bug_when>
    <thetext>The Web Inspector has now a nice view to show the rendering times when in accelerated compositing mode, but that doesn&apos;t work in GTK+. It&apos;s quite confusing for the users, because the panel is in the inspector but it is never updated. This is because we don&apos;t implement the instrumentation required. The mac implementation is based on RunLoopObserver, that only has an implementation based on CF. It&apos;s not currently possible to do the same with the glib main loop, so even if there&apos;s a proper platform abstraction of RunLoopObserver, we won&apos;t be able to provide a glib implementation. Maybe when persistent sources patch lands (see bug #138691), we can provide a way to monitor our sources. For now, what we can do is to use a custom persistent source for the AC rendering, instead of a GMainLoopSource and notify the inspector on every source dispatch, after and before actually dispatching the source callback. And it will improve the performance for the same price.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135203</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-10-21 06:36:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/23200510&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135204</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-10-21 06:36:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/23200512&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135208</commentid>
    <comment_count>3</comment_count>
      <attachid>263677</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-21 06:43:19 -0700</bug_when>
    <thetext>Created attachment 263677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135220</commentid>
    <comment_count>4</comment_count>
      <attachid>263677</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-21 09:02:46 -0700</bug_when>
    <thetext>Comment on attachment 263677
Patch

I don&apos;t think this will do the right thing when the debugger pauses and we use a nested run loop. Can you test it to see what happens?

I do think that it is a little weird that these events do not go through InspectorInstrumentation already. There is no event system in place to notify WK2 clients when specific domains have instrumentation enabled or disabled, so there&apos;s no good way to selectively add/remove RunLoopObservers only when necessary. Thus, it&apos;s put into TimelineAgent&apos;s start/stop code itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135221</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-21 09:04:34 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; The mac implementation is based on RunLoopObserver, that only has
&gt; an implementation based on CF. It&apos;s not currently possible to do the same
&gt; with the glib main loop, so even if there&apos;s a proper platform abstraction of
&gt; RunLoopObserver, we won&apos;t be able to provide a glib implementation. Maybe
&gt; when persistent sources patch lands (see bug #138691), we can provide a way
&gt; to monitor our sources.

If you could provide some rationale for why RunLoopObserver isn&apos;t a sufficient abstraction in &lt;https://bugs.webkit.org/show_bug.cgi?id=142748&gt;, that would be helpful in moving that discussion forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135590</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-21 23:45:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 263677 [details]
&gt; Patch
&gt; 
&gt; I don&apos;t think this will do the right thing when the debugger pauses and we
&gt; use a nested run loop. Can you test it to see what happens?

Ah, right, I forgot about the debugger, I&apos;ll check it.

&gt; I do think that it is a little weird that these events do not go through
&gt; InspectorInstrumentation already. There is no event system in place to
&gt; notify WK2 clients when specific domains have instrumentation enabled or
&gt; disabled, so there&apos;s no good way to selectively add/remove RunLoopObservers
&gt; only when necessary. Thus, it&apos;s put into TimelineAgent&apos;s start/stop code
&gt; itself.

In our case we need to notify the inspector from WebKit2, because we can&apos;t monitor the run loop to observe the sources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135593</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-21 23:50:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #0)
&gt; &gt; The mac implementation is based on RunLoopObserver, that only has
&gt; &gt; an implementation based on CF. It&apos;s not currently possible to do the same
&gt; &gt; with the glib main loop, so even if there&apos;s a proper platform abstraction of
&gt; &gt; RunLoopObserver, we won&apos;t be able to provide a glib implementation. Maybe
&gt; &gt; when persistent sources patch lands (see bug #138691), we can provide a way
&gt; &gt; to monitor our sources.
&gt; 
&gt; If you could provide some rationale for why RunLoopObserver isn&apos;t a
&gt; sufficient abstraction in &lt;https://bugs.webkit.org/show_bug.cgi?id=142748&gt;,
&gt; that would be helpful in moving that discussion forward.

Yes, the glib main loop doesn&apos;t provide any way to know its status, and there isn&apos;t any GMainLoopObserver in glib either. We could implement something like that in glib, though, but in the meantime we need a different way to implement at least the rendering frames panel. What we can do with the current glib main loop, is to use custom sources, that we can dispatch. That way we can do whatever before and after the source is actually dispatched, which is what I&apos;m doing in this patch. We plan to change some glib sources used in WebKit with custom sources like the one I&apos;m using in this patch, but in a more generic way. Once we have that we could implement a RunLoopObserver, but only to monitor our own custom sources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135714</commentid>
    <comment_count>8</comment_count>
      <attachid>263677</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-22 09:52:23 -0700</bug_when>
    <thetext>Comment on attachment 263677
Patch

Matt, can you help review this patch? It would be great to use only one code path to deliver will/didRenderFrame. Is it possible we can route runLoopObserver&apos;s callbacks through InspectorInstrumentation and have it live outside of TimelineAgent? This would make me a lot more confident about this working for nested run loops. Or, if that&apos;s not going to work, we might have to think up a different design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135725</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-22 10:34:54 -0700</bug_when>
    <thetext>I&apos;ve tried to test the debugger, but for some reason the inspector web process crashes here just by clicking on the debugger tab. I&apos;ve been working on using a persistent source in the RunLoop implementation that would allow us to implement RunLoopObserver to monitor tasks run in a RunLoop, not any source in the GMainLoop, though, but it could be enough for us. See patch attached to bug #138691.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135727</commentid>
    <comment_count>10</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-22 10:44:59 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I&apos;ve tried to test the debugger, but for some reason the inspector web
&gt; process crashes here just by clicking on the debugger tab.

If it&apos;s unrelated to this patch, definitely file a bug! Crashes are bad.

I&apos;ve been working
&gt; on using a persistent source in the RunLoop implementation that would allow
&gt; us to implement RunLoopObserver to monitor tasks run in a RunLoop, not any
&gt; source in the GMainLoop, though, but it could be enough for us. See patch
&gt; attached to bug #138691.

Sounds good. If it turns out to be too much work, we can figure out a way to make the frontend hide the rendering frames view when the backend doesn&apos;t support it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135732</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-22 10:49:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; I&apos;ve tried to test the debugger, but for some reason the inspector web
&gt; &gt; process crashes here just by clicking on the debugger tab.
&gt; 
&gt; If it&apos;s unrelated to this patch, definitely file a bug! Crashes are bad.

Yes, it&apos;s unrelated, I was waiting to check if it still happens in current trunk.

&gt; I&apos;ve been working
&gt; &gt; on using a persistent source in the RunLoop implementation that would allow
&gt; &gt; us to implement RunLoopObserver to monitor tasks run in a RunLoop, not any
&gt; &gt; source in the GMainLoop, though, but it could be enough for us. See patch
&gt; &gt; attached to bug #138691.
&gt; 
&gt; Sounds good. If it turns out to be too much work, we can figure out a way to
&gt; make the frontend hide the rendering frames view when the backend doesn&apos;t
&gt; support it.

Yes, well, but this is quite useful feature we want to support :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135874</commentid>
    <comment_count>12</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-22 15:37:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 263677 [details]
&gt; Patch
&gt; 
&gt; Matt, can you help review this patch? It would be great to use only one code
&gt; path to deliver will/didRenderFrame. Is it possible we can route
&gt; runLoopObserver&apos;s callbacks through InspectorInstrumentation and have it
&gt; live outside of TimelineAgent? This would make me a lot more confident about
&gt; this working for nested run loops. Or, if that&apos;s not going to work, we might
&gt; have to think up a different design.

I&apos;ll need to give this some thought, and look over the glib main event loop docs (https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html). I have enough experience with the Win32 message pump to have an idea of how to implement this for the Windows port, but have no experience with glib. According to Carlos it seems there are some obstacles (hopefully not insurmountable) to instrumenting glib&apos;s event loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137928</commentid>
    <comment_count>13</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-30 12:35:51 -0700</bug_when>
    <thetext>Carlos, will this patch be affected by recent work on GTK run loop? If so, we should reset r? until you have amended the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138125</commentid>
    <comment_count>14</comment_count>
      <attachid>263677</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-31 00:16:50 -0700</bug_when>
    <thetext>Comment on attachment 263677
Patch

Yes, let&apos;s clear flags for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144597</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-27 09:17:48 -0800</bug_when>
    <thetext>We have switched all our sources to use RunLoop, so we could now implement a RunLoopObserver for a RunLoop. The problem is how to identify the sources to filter the notifications, because RunLoop works with std::function and RunLoop::Timer with function pointer. For now we could limit it to monitor RunLoop::Timers only. We could set a unique id to RunLoop::Timer and add API to get it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681048</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-18 07:24:09 -0700</bug_when>
    <thetext>Many things have changed since the first time I tried to implement this for GTK port. Now we always use the threaded compositor for accelerated rendering, which means that frames are rendered in a secondary thread. That complicates things a bit, because we need to notify the inspector in the main thread. My initial patch  notified about frame start right before the contents were rendered into the GL context and the frame end after the swap buffers. But I&apos;m not sure that&apos;s actually what we want here. I don&apos;t know how Core Animation works, so could someone explain when is begin/end frame and will/did composite expected to happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681052</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-18 07:51:29 -0700</bug_when>
    <thetext>hmm, I&apos;ve just read https://webkit.org/blog/3996/introducing-the-rendering-frames-timeline/ So, every frame is actually a main run loop iteration? not necessarily a loop iteration in which the frames are rendered? I guess other run loop sources are just discarded because the record has no children (no style recalc, no paint, etc.). If that&apos;s the case, then I think we can implement a RunLoopObserver for WTF::RunLoop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681322</commentid>
    <comment_count>18</comment_count>
      <attachid>406841</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-19 05:22:21 -0700</bug_when>
    <thetext>Created attachment 406841
Patch

This patch follows the run loop approach. We can&apos;t monitor the run loop because GLib doesn&apos;t have API for that, but we can at least monitor our sources, which seems to be enough to get quite useful information. It&apos;s not exactly a frame per loop cycle in some cases, because here we are monitoring the sources, but in most of the cases there&apos;s only one source per loop iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681325</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-19 05:35:25 -0700</bug_when>
    <thetext>Btw, the patch uses glib event loop ifdefs. I think it should be possible to use the same API for cocoa, probably moving the run loop observer to WTF and using that in RunLoop. That could be done in a follow up as part of bug #142748.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682303</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-24 06:09:59 -0700</bug_when>
    <thetext>Brian?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682351</commentid>
    <comment_count>21</comment_count>
      <attachid>406841</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-24 09:40:53 -0700</bug_when>
    <thetext>Comment on attachment 406841
Patch

This change looks like it&apos;s in the right direction. Unfortunately the engineers who wrote and reviewed this code are no longer available, so I&apos;d need to do more research on existing vs desired behavior to know if your proposed refactoring will work out on Cocoa platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682585</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-24 23:15:31 -0700</bug_when>
    <thetext>Committed r266103: &lt;https://trac.webkit.org/changeset/266103&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263677</attachid>
            <date>2015-10-21 06:43:19 -0700</date>
            <delta_ts>2020-08-19 05:22:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-rendering-frames.diff</filename>
            <type>text/plain</type>
            <size>19480</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2M2IxZWNmLi5lZWJmZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkg
QEAKIDIwMTUtMTAtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEltcGxlbWVudCByZW5kZXJpbmcgZnJhbWVzIHRpbWVsaW5lIHBh
bmVsIGZvciBHVEsrIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gbm90aWZ5IHRoZSBpbnNwZWN0b3IgYWJvdXQg
cmVuZGVyaW5nIGZyYW1lcy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxSZW5k
ZXJGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZW5k
ZXJGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbmRlckZyYW1lSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbmRlckZy
YW1lSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVuZGVy
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW5kZXJGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlbmRl
ckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFJl
bmRlckZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorCisyMDE1LTEwLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKwogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBtYXJrRm9udERhdGEgaW4gRm9udENhc2Nh
ZGU6OmVtcGhhc2lzTWFya0hlaWdodAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUwMTcxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA5MDA3NTExLi4xYzMzY2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00ODYs
NCArNDg2LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tcG9zaXRlKEZyYW1l
JiBmcmFtZSkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbXBvc2l0ZShmcmFt
ZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFJlbmRlckZyYW1lKEZyYW1l
JiBmcmFtZSkKK3sKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW5kZXJGcmFt
ZShmcmFtZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVuZGVyRnJhbWUo
RnJhbWUmIGZyYW1lKQoreworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVuZGVy
RnJhbWUoZnJhbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAwMWU1YzQ0Li40N2M4
MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKQEAgLTEzNCw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0M6OlZNJiB2bSgp
IG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21wb3NpdGUoRnJhbWUm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxSZW5kZXJGcmFtZShGcmFtZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVuZGVyRnJhbWUoRnJhbWUmKTsKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRl
eCBmNWIxN2M4Li4xNWQ1ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNTEzLDYgKzUxMywxOCBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tcG9zaXRlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRDb21wb3NpdGUo
KTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW5kZXJGcmFtZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1l
KQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHRpbWVs
aW5lQWdlbnQtPndpbGxSZW5kZXJGcmFtZShmcmFtZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZW5kZXJGcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZW5kZXJGcmFtZSgpOworfQorCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZjllNjE2Ni4uYjBjMDlm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaApAQCAtMTY5LDYgKzE2OSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
aWRTY3JvbGxMYXllcihGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxDb21wb3NpdGUoRnJh
bWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDb21wb3NpdGUoRnJhbWUmKTsKKyAgICBzdGF0aWMg
dm9pZCB3aWxsUmVuZGVyRnJhbWUoRnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW5kZXJG
cmFtZShGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQYWludChSZW5kZXJPYmplY3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRQYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRSZWN0
Jik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxj
dWxhdGVTdHlsZShEb2N1bWVudCYpOwpAQCAtMzUyLDYgKzM1NCw4IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgZGlkU2Nyb2xsTGF5ZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKICAg
ICBzdGF0aWMgdm9pZCB3aWxsQ29tcG9zaXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJh
bWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDb21wb3NpdGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVuZGVyRnJhbWVJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBGcmFtZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbmRlckZyYW1lSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBhaW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUGFpbnRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRSZWN0
Jik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxj
dWxhdGVTdHlsZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50Jik7CkBAIC04NjIs
NiArODY2LDIwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29t
cG9zaXRlKEZyYW1lJiBmcmFtZSkKICAgICAgICAgZGlkQ29tcG9zaXRlSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cyk7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFJlbmRlckZyYW1lKEZyYW1lJiBmcmFtZSkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZSgmZnJhbWUpKQorICAgICAg
ICB3aWxsUmVuZGVyRnJhbWVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7Cit9CisK
K2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVuZGVyRnJhbWUoRnJh
bWUmIGZyYW1lKQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwor
ICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKCZmcmFtZSkpCisgICAgICAgIGRpZFJlbmRlckZyYW1lSW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFBhaW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMWM4YjU1Ny4uODdh
YTI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcApAQCAtNDAxLDYgKzQwMSwxNiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZENvbXBvc2l0ZSgpCiAgICAgbV9zdGFydGVkQ29tcG9zaXRlID0gZmFsc2U7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlbmRlckZyYW1lKEZyYW1lJiBm
cmFtZSkKK3sKKyAgICBwdXNoQ3VycmVudFJlY29yZChJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
LCBUaW1lbGluZVJlY29yZFR5cGU6OlJlbmRlcmluZ0ZyYW1lLCBmYWxzZSwgJmZyYW1lKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZW5kZXJGcmFtZSgpCit7CisgICAg
ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVuZGVyaW5nRnJh
bWUpOworfQorCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxQYWludChGcmFtZSYg
ZnJhbWUpCiB7CiAgICAgcHVzaEN1cnJlbnRSZWNvcmQoSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQYWludCwgdHJ1ZSwgJmZyYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDY3MWI0
YjMuLjQwNTRjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaApAQCAtMTU3LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZERpc3BhdGNoWEhSTG9hZEV2ZW50KCk7CiAgICAgdm9pZCB3aWxsQ29tcG9zaXRlKEZyYW1lJik7
CiAgICAgdm9pZCBkaWRDb21wb3NpdGUoKTsKKyAgICB2b2lkIHdpbGxSZW5kZXJGcmFtZShGcmFt
ZSYpOworICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoKTsKICAgICB2b2lkIHdpbGxQYWludChGcmFt
ZSYpOwogICAgIHZvaWQgZGlkUGFpbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYp
OwogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3
YTZlYjA2Li42YjllOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzMgQEAKIDIwMTUtMTAtMjEg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtH
VEtdIEltcGxlbWVudCByZW5kZXJpbmcgZnJhbWVzIHRpbWVsaW5lIHBhbmVsIGZvciBHVEsrIHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDM5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBh
IGN1c3RvbSBwZXJzaXN0ZW50IG1haW4gbG9vcCBzb3VyY2UgaW5zdGVhZCBvZiBhCisgICAgICAg
IEdNYWluTG9vcFNvdXJjZSBmb3IgdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHJlbmRlciBs
b29wLCBhbmQKKyAgICAgICAgbm90aWZ5IHRoZSBpbnNwZWN0b3Igb24gZXZlcnkgZGlzcGF0Y2gu
IEFsbCB0aGUgbG9naWMgdG8gc2NoZWR1bGUKKyAgICAgICAgZnJhbWVzIGhhcyBiZWVuIG1vdmVk
IHRvIGEgaGVscGVyIGludGVybmFsIGNsYXNzIFJlbmRlckZyYW1lU2NoZWR1bGVyLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OlJlbmRl
ckZyYW1lU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6UmVu
ZGVyRnJhbWVTY2hlZHVsZXI6On5SZW5kZXJGcmFtZVNjaGVkdWxlcik6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1bGVyOjpzdGFydCk6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1bGVyOjpzdG9w
KToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkU2tpcE5leHRGcmFtZUJlY2F1c2VPZkNvbnRpbm91
c0ltbWVkaWF0ZUZsdXNoZXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpS
ZW5kZXJGcmFtZVNjaGVkdWxlcjo6bmV4dEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnJlbmRlckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OnJlbmRlckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6Zmx1c2hBbmRSZW5kZXJMYXllcnMpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVIb3N0R3RrOjpzY2hlZHVsZUxheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVIb3N0R3RrOjpjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZpcmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaDoKKwor
MjAxNS0xMC0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
ICAgICAgICAgTmV0d29ya1Byb2Nlc3M6IEROUyBwcmVmZXRjaCBoYXBwZW5zIGluIHRoZSBXZWIg
UHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3ODI0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDY5ZWY2YWIuLmZhY2QyMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXll
clRyZWVIb3N0R3RrLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNw
ZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC02
MSw2ICs2MiwxMDAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitzdGF0aWMgR1NvdXJjZUZ1bmNzIHJlbmRlckZyYW1lU291cmNlRnVuY3Rpb25zID0g
eworICAgIG51bGxwdHIsIC8vIHByZXBhcmUKKyAgICBudWxscHRyLCAvLyBjaGVjaworICAgIC8v
IGRpc3BhdGNoCisgICAgW10oR1NvdXJjZSogc291cmNlLCBHU291cmNlRnVuYyBjYWxsYmFjaywg
Z3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuCisgICAgeworICAgICAgICBnX3NvdXJjZV9z
ZXRfcmVhZHlfdGltZShzb3VyY2UsIC0xKTsKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHVzZXJE
YXRhKTsKKyAgICB9LAorICAgIG51bGxwdHIsIC8vIGZpbmFsaXplCisgICAgbnVsbHB0ciwgLy8g
Y2xvc3VyZV9jYWxsYmFjaworICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfbWFyc2hhbGwKK307CisK
K0xheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1bGVyOjpSZW5kZXJGcmFtZVNjaGVk
dWxlcihzdGQ6OmZ1bmN0aW9uPGJvb2woKT4gcmVuZGVyZXIsIFdlYlBhZ2UqIHdlYlBhZ2UpCisg
ICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAg
LCBtX3NvdXJjZShhZG9wdEdSZWYoZ19zb3VyY2VfbmV3KCZyZW5kZXJGcmFtZVNvdXJjZUZ1bmN0
aW9ucywgc2l6ZW9mKEdTb3VyY2UpKSkpCit7CisgICAgZ19zb3VyY2Vfc2V0X25hbWUobV9zb3Vy
Y2UuZ2V0KCksICJbV2ViS2l0XSBMYXllclRyZWVIb3N0R3RrIHJlbmRlciBmcmFtZSIpOworICAg
IC8vIFVzZSBhIGhpZ2hlciBwcmlvcml0eSB0aGFuIFdlYkNvcmUgdGltZXJzLgorICAgIGdfc291
cmNlX3NldF9wcmlvcml0eShtX3NvdXJjZS5nZXQoKSwgR0RLX1BSSU9SSVRZX1JFRFJBVyAtIDEp
OworICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3NvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIg
dXNlckRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgUmVuZGVyRnJhbWVTY2hlZHVsZXIqIHNj
aGVkdWxlciA9IHN0YXRpY19jYXN0PFJlbmRlckZyYW1lU2NoZWR1bGVyKj4odXNlckRhdGEpOwor
ICAgICAgICBGcmFtZSogY29yZUZyYW1lID0gc2NoZWR1bGVyLT5tX3dlYlBhZ2UtPm1haW5GcmFt
ZSgpOworICAgICAgICBpZiAoY29yZUZyYW1lKQorICAgICAgICAgICAgc2NoZWR1bGVyLT5tX3dl
YlBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS53aWxsUmVuZGVyRnJhbWUo
KmNvcmVGcmFtZSk7CisgICAgICAgIHNjaGVkdWxlci0+cmVuZGVyRnJhbWUoKTsKKyAgICAgICAg
aWYgKGNvcmVGcmFtZSkKKyAgICAgICAgICAgIHNjaGVkdWxlci0+bV93ZWJQYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlkUmVuZGVyRnJhbWUoKmNvcmVGcmFtZSk7Cisg
ICAgICAgIHJldHVybiBHX1NPVVJDRV9DT05USU5VRTsKKyAgICB9LCB0aGlzLCBudWxscHRyKTsK
KworICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCAtMSk7CisgICAg
Z19zb3VyY2VfYXR0YWNoKG1fc291cmNlLmdldCgpLCBudWxscHRyKTsKK30KKworTGF5ZXJUcmVl
SG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6On5SZW5kZXJGcmFtZVNjaGVkdWxlcigpCit7
CisgICAgZ19zb3VyY2VfZGVzdHJveShtX3NvdXJjZS5nZXQoKSk7Cit9CisKK3ZvaWQgTGF5ZXJU
cmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnN0YXJ0KCkKK3sKKyAgICBpZiAoZ19z
b3VyY2VfZ2V0X3JlYWR5X3RpbWUobV9zb3VyY2UuZ2V0KCkpICE9IC0xKQorICAgICAgICByZXR1
cm47CisgICAgbV9maXJlVGltZSA9IDA7CisgICAgbmV4dEZyYW1lKCk7Cit9CisKK3ZvaWQgTGF5
ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnN0b3AoKQoreworICAgIGdfc291
cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCAtMSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgYm9vbCBzaG91bGRTa2lwTmV4dEZyYW1lQmVjYXVzZU9mQ29udGlub3VzSW1tZWRpYXRlRmx1
c2hlcyhkb3VibGUgY3VycmVudCwgZG91YmxlIGxhc3RJbW1lZGlhdGVGbHVzaFRpbWUpCit7Cisg
ICAgLy8gMTAwbXMgaXMgYWJvdXQgYSBwZXJjZXB0YWJsZSBkZWxheSBpbiBVSSwgc28gd2hlbiBz
Y2hlZHVsaW5nIGxheWVyIGZsdXNoZXMgaW1tZWRpYXRlbHkgZm9yIG1vcmUgdGhhbiAxMDBtcywK
KyAgICAvLyB3ZSBza2lwIHRoZSBuZXh0IGZyYW1lIHRvIGVuc3VyZSBwZW5kaW5nIHRpbWVycyBo
YXZlIGEgY2hhbmdlIHRvIGJlIGZpcmVkLgorICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4RHVy
YXRpb25PZkltbWVkaWF0ZUZsdXNoZXMgPSAwLjEwMDsKKyAgICBpZiAoIWxhc3RJbW1lZGlhdGVG
bHVzaFRpbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbGFzdEltbWVkaWF0
ZUZsdXNoVGltZSArIG1heER1cmF0aW9uT2ZJbW1lZGlhdGVGbHVzaGVzIDwgY3VycmVudDsKK30K
Kwordm9pZCBMYXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6bmV4dEZyYW1l
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHRhcmdldEZyYW1lcmF0ZSA9IDEgLyA2MC4w
OworICAgIC8vIFdoZW4gcmVuZGVyaW5nIGxheWVycyB0YWtlcyBtb3JlIHRpbWUgdGhhbiB0aGUg
dGFyZ2V0IGRlbGF5ICgwLjAxNiksIHdlIGVuZCB1cCBzY2hlZHVsaW5nIGxheWVyIGZsdXNoZXMK
KyAgICAvLyBpbW1lZGlhdGVseS4gU2luY2UgdGhlIGxheWVyIGZsdXNoIHRpbWVyIGhhcyBhIGhp
Z2hlciBwcmlvcml0eSB0aGFuIFdlYkNvcmUgdGltZXJzLCB0aGVzZSBhcmUgbmV2ZXIKKyAgICAv
LyBmaXJlZCB3aGlsZSB3ZSBrZWVwIHNjaGVkdWxpbmcgbGF5ZXIgZmx1c2hlcyBpbW1lZGlhdGVs
eS4KKyAgICBkb3VibGUgY3VycmVudCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwor
ICAgIGRvdWJsZSB0aW1lVG9OZXh0Rmx1c2ggPSBzdGQ6Om1heCh0YXJnZXRGcmFtZXJhdGUgLSAo
Y3VycmVudCAtIG1fZmlyZVRpbWUpLCAwLjApOworICAgIGlmICh0aW1lVG9OZXh0Rmx1c2gpCisg
ICAgICAgIG1fbGFzdEltbWVkaWF0ZUZsdXNoVGltZSA9IDA7CisgICAgZWxzZSBpZiAoIW1fbGFz
dEltbWVkaWF0ZUZsdXNoVGltZSkKKyAgICAgICAgbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1lID0g
Y3VycmVudDsKKworICAgIGlmIChzaG91bGRTa2lwTmV4dEZyYW1lQmVjYXVzZU9mQ29udGlub3Vz
SW1tZWRpYXRlRmx1c2hlcyhjdXJyZW50LCBtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUpKSB7Cisg
ICAgICAgIHRpbWVUb05leHRGbHVzaCA9IHRhcmdldEZyYW1lcmF0ZTsKKyAgICAgICAgbV9sYXN0
SW1tZWRpYXRlRmx1c2hUaW1lID0gMDsKKyAgICB9CisKKyAgICBnX3NvdXJjZV9zZXRfcmVhZHlf
dGltZShtX3NvdXJjZS5nZXQoKSwgKGN1cnJlbnQgKyB0aW1lVG9OZXh0Rmx1c2gpICogR19VU0VD
X1BFUl9TRUMpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1
bGVyOjpyZW5kZXJGcmFtZSgpCit7CisgICAgbV9maXJlVGltZSA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOworICAgIGlmICghbV9yZW5kZXJlcigpIHx8IGdfc291cmNlX2dldF9yZWFk
eV90aW1lKG1fc291cmNlLmdldCgpKSAhPSAtMSkKKyAgICAgICAgcmV0dXJuOworICAgIG5leHRG
cmFtZSgpOworfQorCiBQYXNzUmVmUHRyPExheWVyVHJlZUhvc3RHdGs+IExheWVyVHJlZUhvc3RH
dGs6OmNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFJlZlB0cjxMYXllclRyZWVIb3N0
R3RrPiBob3N0ID0gYWRvcHRSZWYobmV3IExheWVyVHJlZUhvc3RHdGsod2ViUGFnZSkpOwpAQCAt
NzIsOSArMTY3LDkgQEAgTGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdl
KiB3ZWJQYWdlKQogICAgIDogTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQogICAgICwgbV9pc1ZhbGlk
KHRydWUpCiAgICAgLCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaChmYWxzZSkKLSAg
ICAsIG1fbGFzdEltbWVkaWF0ZUZsdXNoVGltZSgwKQogICAgICwgbV9sYXllckZsdXNoU2NoZWR1
bGluZ0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fdmlld092ZXJsYXlSb290TGF5ZXIobnVsbHB0cikK
KyAgICAsIG1fcmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpiaW5kKCZMYXllclRyZWVIb3N0R3Rr
OjpyZW5kZXJGcmFtZSwgdGhpcyksIHdlYlBhZ2UpCiB7CiB9CiAKQEAgLTIzNyw0NCArMzMyLDEw
IEBAIGZsb2F0IExheWVyVHJlZUhvc3RHdGs6OnBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAg
cmV0dXJuIG1fd2ViUGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRTa2lwTmV4dEZyYW1lQmVjYXVzZU9mQ29udGlub3VzSW1tZWRpYXRlRmx1c2hl
cyhkb3VibGUgY3VycmVudCwgZG91YmxlIGxhc3RJbW1lZGlhdGVGbHVzaFRpbWUpCi17Ci0gICAg
Ly8gMTAwbXMgaXMgYWJvdXQgYSBwZXJjZXB0YWJsZSBkZWxheSBpbiBVSSwgc28gd2hlbiBzY2hl
ZHVsaW5nIGxheWVyIGZsdXNoZXMgaW1tZWRpYXRlbHkgZm9yIG1vcmUgdGhhbiAxMDBtcywKLSAg
ICAvLyB3ZSBza2lwIHRoZSBuZXh0IGZyYW1lIHRvIGVuc3VyZSBwZW5kaW5nIHRpbWVycyBoYXZl
IGEgY2hhbmdlIHRvIGJlIGZpcmVkLgotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4RHVyYXRp
b25PZkltbWVkaWF0ZUZsdXNoZXMgPSAwLjEwMDsKLSAgICBpZiAoIWxhc3RJbW1lZGlhdGVGbHVz
aFRpbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbGFzdEltbWVkaWF0ZUZs
dXNoVGltZSArIG1heER1cmF0aW9uT2ZJbW1lZGlhdGVGbHVzaGVzIDwgY3VycmVudDsKLX0KLQot
Ly8gVXNlIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gV2ViQ29yZSB0aW1lcnMuCi1zdGF0aWMgY29u
c3QgaW50IGxheWVyRmx1c2hUaW1lclByaW9yaXR5ID0gR0RLX1BSSU9SSVRZX1JFRFJBVyAtIDE7
Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKQorYm9vbCBM
YXllclRyZWVIb3N0R3RrOjpyZW5kZXJGcmFtZSgpCiB7Ci0gICAgZG91YmxlIGZpcmVUaW1lID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgZmx1c2hBbmRSZW5kZXJMYXllcnMo
KTsKLSAgICBpZiAobV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5pc1NjaGVkdWxlZCgpIHx8ICFk
b3duY2FzdDxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4oKm1fcm9vdExheWVyKS5sYXllcigp
LmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdGFyZ2V0RnJhbWVyYXRlID0gMSAvIDYwLjA7
Ci0gICAgLy8gV2hlbiByZW5kZXJpbmcgbGF5ZXJzIHRha2VzIG1vcmUgdGltZSB0aGFuIHRoZSB0
YXJnZXQgZGVsYXkgKDAuMDE2KSwgd2UgZW5kIHVwIHNjaGVkdWxpbmcgbGF5ZXIgZmx1c2hlcwot
ICAgIC8vIGltbWVkaWF0ZWx5LiBTaW5jZSB0aGUgbGF5ZXIgZmx1c2ggdGltZXIgaGFzIGEgaGln
aGVyIHByaW9yaXR5IHRoYW4gV2ViQ29yZSB0aW1lcnMsIHRoZXNlIGFyZSBuZXZlcgotICAgIC8v
IGZpcmVkIHdoaWxlIHdlIGtlZXAgc2NoZWR1bGluZyBsYXllciBmbHVzaGVzIGltbWVkaWF0ZWx5
LgotICAgIGRvdWJsZSBjdXJyZW50ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0g
ICAgZG91YmxlIHRpbWVUb05leHRGbHVzaCA9IHN0ZDo6bWF4KHRhcmdldEZyYW1lcmF0ZSAtIChj
dXJyZW50IC0gZmlyZVRpbWUpLCAwLjApOwotICAgIGlmICh0aW1lVG9OZXh0Rmx1c2gpCi0gICAg
ICAgIG1fbGFzdEltbWVkaWF0ZUZsdXNoVGltZSA9IDA7Ci0gICAgZWxzZSBpZiAoIW1fbGFzdElt
bWVkaWF0ZUZsdXNoVGltZSkKLSAgICAgICAgbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1lID0gY3Vy
cmVudDsKLQotICAgIGlmIChzaG91bGRTa2lwTmV4dEZyYW1lQmVjYXVzZU9mQ29udGlub3VzSW1t
ZWRpYXRlRmx1c2hlcyhjdXJyZW50LCBtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUpKSB7Ci0gICAg
ICAgIHRpbWVUb05leHRGbHVzaCA9IHRhcmdldEZyYW1lcmF0ZTsKLSAgICAgICAgbV9sYXN0SW1t
ZWRpYXRlRmx1c2hUaW1lID0gMDsKLSAgICB9Ci0KLSAgICBtX2xheWVyRmx1c2hUaW1lckNhbGxi
YWNrLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gbGF5ZXJGbHVzaFRpbWVyIiwgc3RkOjpi
aW5kKCZMYXllclRyZWVIb3N0R3RrOjpsYXllckZsdXNoVGltZXJGaXJlZCwgdGhpcyksCi0gICAg
ICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+
KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KHRpbWVUb05leHRGbHVzaCkpLCBsYXllckZs
dXNoVGltZXJQcmlvcml0eSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyPigqbV9yb290TGF5ZXIpLmxheWVyKCkuZGVzY2VuZGFudHNPclNlbGZIYXZlUnVu
bmluZ0FuaW1hdGlvbnMoKTsKIH0KIAogYm9vbCBMYXllclRyZWVIb3N0R3RrOjpmbHVzaFBlbmRp
bmdMYXllckNoYW5nZXMoKQpAQCAtMzM2LDYgKzM5Nyw5IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0
azo6Zmx1c2hBbmRSZW5kZXJMYXllcnMoKQogICAgIC8vIE91ciBtb2RlbCBpcyB2ZXJ5IHNpbXBs
ZS4gV2UgYWx3YXlzIGNvbXBvc2l0ZSBhbmQgcmVuZGVyIHRoZSB0cmVlIGltbWVkaWF0ZWx5IGFm
dGVyIHVwZGF0aW5nIGl0LgogICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOwogCisgICAg
aWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaWRDb21wb3NpdGUo
KmNvcmVGcmFtZSk7CisKICAgICBpZiAobV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2gp
IHsKICAgICAgICAgLy8gTGV0IHRoZSBkcmF3aW5nIGFyZWEga25vdyB0aGF0IHdlJ3ZlIGRvbmUg
YSBmbHVzaCBvZiB0aGUgbGF5ZXIgY2hhbmdlcy4KICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhd2lu
Z0FyZWFJbXBsKj4obV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpKS0+bGF5ZXJIb3N0RGlkRmx1c2hM
YXllcnMoKTsKQEAgLTM0OSw4ICs0MTMsNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNjaGVk
dWxlTGF5ZXJGbHVzaCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIHVzZSBhIEdMaWIg
dGltZXIgYmVjYXVzZSBvdGhlcndpc2UgR1RLKyBldmVudCBoYW5kbGluZyBkdXJpbmcgZHJhZ2dp
bmcgY2FuIHN0YXJ2ZSBXZWJDb3JlIHRpbWVycywgd2hpY2ggaGF2ZSBhIGxvd2VyIHByaW9yaXR5
LgotICAgIGlmICghbV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5pc1NjaGVkdWxlZCgpKQotICAg
ICAgICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLnNjaGVkdWxlKCJbV2ViS2l0XSBsYXllckZs
dXNoVGltZXIiLCBzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZp
cmVkLCB0aGlzKSwgbGF5ZXJGbHVzaFRpbWVyUHJpb3JpdHkpOworICAgIG1fcmVuZGVyRnJhbWVT
Y2hlZHVsZXIuc3RhcnQoKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRMYXllckZs
dXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCBsYXllckZsdXNoaW5nRW5hYmxlZCkKQEAgLTM3NSw3
ICs0MzgsNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJl
bmN5Q2hhbmdlZCgpCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6Y2FuY2VsUGVuZGluZ0xheWVy
Rmx1c2goKQogewotICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2suY2FuY2VsKCk7CisgICAg
bV9yZW5kZXJGcmFtZVNjaGVkdWxlci5zdG9wKCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0
azo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogdmlld092
ZXJsYXlSb290TGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDljNjdhNjcuLmExYzNhYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HTENv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIv
R01haW5Mb29wU291cmNlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtNjUsNiArNjUsMjYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgorCisgICAgY2xhc3MgUmVuZGVyRnJhbWVTY2hlZHVsZXIgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgUmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpmdW5jdGlvbjxi
b29sKCk+LCBXZWJQYWdlKik7CisgICAgICAgIH5SZW5kZXJGcmFtZVNjaGVkdWxlcigpOworCisg
ICAgICAgIHZvaWQgc3RhcnQoKTsKKyAgICAgICAgdm9pZCBzdG9wKCk7CisgICAgICAgIHZvaWQg
bmV4dEZyYW1lKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHJlbmRlckZyYW1lKCk7
CisKKyAgICAgICAgc3RkOjpmdW5jdGlvbjxib29sKCk+IG1fcmVuZGVyZXI7CisgICAgICAgIFdl
YlBhZ2UqIG1fd2ViUGFnZTsKKyAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsKKyAg
ICAgICAgZG91YmxlIG1fZmlyZVRpbWUgeyAwIH07CisgICAgICAgIGRvdWJsZSBtX2xhc3RJbW1l
ZGlhdGVGbHVzaFRpbWUgeyAwIH07CisgICAgfTsKKwogICAgIC8vIExheWVyVHJlZUhvc3QKICAg
ICB2aXJ0dWFsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVk
TGF5ZXJGbHVzaChib29sKSBvdmVycmlkZTsKQEAgLTg3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmbHVzaEFuZFJlbmRlckxheWVycygpOwogICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xh
eWVyRmx1c2goKTsKIAotICAgIHZvaWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKKyAgICBib29s
IHJlbmRlckZyYW1lKCk7CiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC0x
MDAsOSArMTIwLDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xD
b250ZXh0PiBtX2NvbnRleHQ7CiAgICAgZG91YmxlIG1fbGFzdEltbWVkaWF0ZUZsdXNoVGltZTsK
ICAgICBib29sIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkOwotICAgIEdNYWluTG9vcFNv
dXJjZSBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrOwogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqIG1fdmlld092ZXJsYXlSb290TGF5ZXI7CiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXggbV9zY2FsZU1hdHJpeDsKKyAgICBSZW5kZXJGcmFtZVNjaGVkdWxlciBtX3JlbmRlckZy
YW1lU2NoZWR1bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406841</attachid>
            <date>2020-08-19 05:22:21 -0700</date>
            <delta_ts>2020-08-24 09:40:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-frame-timelines.diff</filename>
            <type>text/plain</type>
            <size>8664</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGFmMTkxNzQyMDFlLi41Yzk0NjkzMzM5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MjAtMDgtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEltcGxlbWVudCByZW5kZXJpbmcgZnJhbWVzIHRpbWVsaW5lIHBhbmVsIGZv
ciBHVEsrIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDM5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMyMDA1MTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0byBvYnNlcnZl
IFJ1bkxvb3AgZXZlbnRzIGZvciBHTGliIGV2ZW50IGxvb3AgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9nbGliL1J1bkxvb3BHTGliLmNw
cDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6UnVuTG9vcCk6IFVzZSBSdW5Mb29wU291cmNlIHN0
cnVjdCBhbmQgaW5pdGlhbGl6ZSB0aGUgUnVuTG9vcC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6
b2JzZXJ2ZSk6IEFkZCB0aGUgZ2l2ZW4gb2JzZXJ2ZXIgdG8gdGhlIHNldC4KKyAgICAgICAgKFdU
Rjo6UnVuTG9vcDo6bm90aWZ5KTogTm90aWZlIG9ic2VydmVycyBvZiB0aGUgZ2l2ZW4gZXZlbnQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKTogVXNlIFJ1bkxv
b3BTb3VyY2Ugc3RydWN0IGFuZCBpbml0aWFsaXplIHRoZSBSdW5Mb29wLgorCiAyMDIwLTA4LTE3
ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtX
VEZdIEhhc2hUYWJsZTxSZWY8Sz4sIFY+OjpIYXNoVGFibGUoY29uc3QgSGFzaFRhYmxlJiBvdGhl
cikgY2FuJ3QgY29tcGlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIv
U291cmNlL1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGFkN2EwYzdhM2MyZi4uNDk0YTg3NDkzODY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93
dGYvUnVuTG9vcC5oCkBAIC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1By
aW1pdGl2ZXMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShDRikKQEAgLTk2LDYgKzk4LDkgQEAgcHVibGlj
OgogCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgR01h
aW5Db250ZXh0KiBtYWluQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkNvbnRleHQuZ2V0
KCk7IH0KKyAgICBlbnVtIGNsYXNzIEV2ZW50IHsgV2lsbERpc3BhdGNoLCBEaWREaXNwYXRjaCB9
OworICAgIHVzaW5nIE9ic2VydmVyID0gV1RGOjpPYnNlcnZlcjx2b2lkKEV2ZW50KT47CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgb2JzZXJ2ZShjb25zdCBPYnNlcnZlciYpOwogI2VuZGlm
CiAKICNpZiBVU0UoR0VORVJJQ19FVkVOVF9MT09QKSB8fCBVU0UoV0lORE9XU19FVkVOVF9MT09Q
KQpAQCAtMjIxLDkgKzIyNiwxMyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BS
ZWY+IG1fcnVuTG9vcDsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxv
b3BTb3VyY2U7CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQorICAgIHZvaWQgbm90aWZ5KEV2
ZW50KTsKKworICAgIHN0YXRpYyBHU291cmNlRnVuY3Mgc19ydW5Mb29wU291cmNlRnVuY3Rpb25z
OwogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxH
UmVmUHRyPEdNYWluTG9vcD4+IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9z
b3VyY2U7CisgICAgV2Vha0hhc2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogI2VsaWYgVVNF
KEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICB2b2lkIHNjaGVkdWxlKFJlZjxUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s+JiYpOwogICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBSZWY8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29w
R0xpYi5jcHAKaW5kZXggNWUzY2NlZWY3NDVmLi40NTYwYzQ4MTYyMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2ds
aWIvUnVuTG9vcEdMaWIuY3BwCkBAIC0zMyw3ICszMywxMiBAQAogCiBuYW1lc3BhY2UgV1RGIHsK
IAotc3RhdGljIEdTb3VyY2VGdW5jcyBydW5Mb29wU291cmNlRnVuY3Rpb25zID0gewordHlwZWRl
ZiBzdHJ1Y3QgeworICAgIEdTb3VyY2Ugc291cmNlOworICAgIFJ1bkxvb3AqIHJ1bkxvb3A7Cit9
IFJ1bkxvb3BTb3VyY2U7CisKK0dTb3VyY2VGdW5jcyBSdW5Mb29wOjpzX3J1bkxvb3BTb3VyY2VG
dW5jdGlvbnMgPSB7CiAgICAgbnVsbHB0ciwgLy8gcHJlcGFyZQogICAgIG51bGxwdHIsIC8vIGNo
ZWNrCiAgICAgLy8gZGlzcGF0Y2gKQEAgLTQyLDcgKzQ3LDExIEBAIHN0YXRpYyBHU291cmNlRnVu
Y3MgcnVuTG9vcFNvdXJjZUZ1bmN0aW9ucyA9IHsKICAgICAgICAgaWYgKGdfc291cmNlX2dldF9y
ZWFkeV90aW1lKHNvdXJjZSkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gR19TT1VSQ0VfQ09O
VElOVUU7CiAgICAgICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKHNvdXJjZSwgLTEpOwotICAg
ICAgICByZXR1cm4gY2FsbGJhY2sodXNlckRhdGEpOworICAgICAgICBhdXRvJiBydW5Mb29wU291
cmNlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8UnVuTG9vcFNvdXJjZSo+KHNvdXJjZSk7CisgICAgICAg
IHJ1bkxvb3BTb3VyY2UucnVuTG9vcC0+bm90aWZ5KFJ1bkxvb3A6OkV2ZW50OjpXaWxsRGlzcGF0
Y2gpOworICAgICAgICBhdXRvIHJldHVyblZhbHVlID0gY2FsbGJhY2sodXNlckRhdGEpOworICAg
ICAgICBydW5Mb29wU291cmNlLnJ1bkxvb3AtPm5vdGlmeShSdW5Mb29wOjpFdmVudDo6RGlkRGlz
cGF0Y2gpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfSwKICAgICBudWxscHRy
LCAvLyBmaW5hbGl6ZQogICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfY2FsbGJhY2sKQEAgLTYwLDcg
KzY5LDkgQEAgUnVuTG9vcDo6UnVuTG9vcCgpCiAgICAgQVNTRVJUKGlubmVybW9zdExvb3ApOwog
ICAgIG1fbWFpbkxvb3BzLmFwcGVuZChpbm5lcm1vc3RMb29wKTsKIAotICAgIG1fc291cmNlID0g
YWRvcHRHUmVmKGdfc291cmNlX25ldygmcnVuTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKEdT
b3VyY2UpKSk7CisgICAgbV9zb3VyY2UgPSBhZG9wdEdSZWYoZ19zb3VyY2VfbmV3KCZSdW5Mb29w
OjpzX3J1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihSdW5Mb29wU291cmNlKSkpOworICAg
IGF1dG8mIHJ1bkxvb3BTb3VyY2UgPSAqcmVpbnRlcnByZXRfY2FzdDxSdW5Mb29wU291cmNlKj4o
bV9zb3VyY2UuZ2V0KCkpOworICAgIHJ1bkxvb3BTb3VyY2UucnVuTG9vcCA9IHRoaXM7CiAgICAg
Z19zb3VyY2Vfc2V0X3ByaW9yaXR5KG1fc291cmNlLmdldCgpLCBSdW5Mb29wU291cmNlUHJpb3Jp
dHk6OlJ1bkxvb3BEaXNwYXRjaGVyKTsKICAgICBnX3NvdXJjZV9zZXRfbmFtZShtX3NvdXJjZS5n
ZXQoKSwgIltXZWJLaXRdIFJ1bkxvb3Agd29yayIpOwogICAgIGdfc291cmNlX3NldF9jYW5fcmVj
dXJzZShtX3NvdXJjZS5nZXQoKSwgVFJVRSk7CkBAIC0xMjksMTAgKzE0MCwyOSBAQCBSdW5Mb29w
OjpDeWNsZVJlc3VsdCBSdW5Mb29wOjpjeWNsZShSdW5Mb29wTW9kZSkKICAgICByZXR1cm4gQ3lj
bGVSZXN1bHQ6OkNvbnRpbnVlOwogfQogCit2b2lkIFJ1bkxvb3A6Om9ic2VydmUoY29uc3QgUnVu
TG9vcDo6T2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAgIEFTU0VSVCghbV9vYnNlcnZlcnMuY29u
dGFpbnMob2JzZXJ2ZXIpKTsKKyAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOworfQorCit2
b2lkIFJ1bkxvb3A6Om5vdGlmeShSdW5Mb29wOjpFdmVudCBldmVudCkKK3sKKyAgICBpZiAobV9v
YnNlcnZlcnMuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX29ic2Vy
dmVycy5mb3JFYWNoKFtldmVudF0oYXV0byYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIo
ZXZlbnQpOworICAgIH0pOworfQorCiBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5M
b29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCi0gICAgLCBtX3NvdXJjZShh
ZG9wdEdSZWYoZ19zb3VyY2VfbmV3KCZydW5Mb29wU291cmNlRnVuY3Rpb25zLCBzaXplb2YoR1Nv
dXJjZSkpKSkKKyAgICAsIG1fc291cmNlKGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJlJ1bkxvb3A6
OnNfcnVuTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKEdTb3VyY2UpKSkpCiB7CisgICAgYXV0
byYgcnVuTG9vcFNvdXJjZSA9ICpyZWludGVycHJldF9jYXN0PFJ1bkxvb3BTb3VyY2UqPihtX3Nv
dXJjZS5nZXQoKSk7CisgICAgcnVuTG9vcFNvdXJjZS5ydW5Mb29wID0gbV9ydW5Mb29wLnB0cigp
OworCiAgICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KG1fc291cmNlLmdldCgpLCBSdW5Mb29wU291
cmNlUHJpb3JpdHk6OlJ1bkxvb3BUaW1lcik7CiAgICAgZ19zb3VyY2Vfc2V0X25hbWUobV9zb3Vy
Y2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wOjpUaW1lciB3b3JrIik7CiAgICAgZ19zb3VyY2Vf
c2V0X2NhbGxiYWNrKG1fc291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jv
b2xlYW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIxNTY2OWI5YjE5Zi4uZjgxYmVlZWUzM2Q5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDgtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCByZW5kZXJpbmcg
ZnJhbWVzIHRpbWVsaW5lIHBhbmVsIGZvciBHVEsrIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDM5MgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjMyMDA1MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIG5ldyBSdW5Mb29wIEFQSSB0byBvYnNlcnZlIHRoZSBydW4gbG9vcCBldmVudHMg
d2hlbiB0aGUgR0xpYiBldmVudCBsb29wIGlzIHVzZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3ApOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorCiAyMDIwLTA4LTE3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQXVkaW9Db250ZXh0LmdldE91dHB1
dFRpbWVzdGFtcCgpIGlzIG1pc3NpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDE0MGUxNTc4
YzVmMC4uN2VlNjVmYjYyY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTIyNiw2ICsyMjYs
MjEgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGlu
dCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgcHVzaEN1cnJlbnRSZWNvcmQoSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpSZW5kZXJpbmdGcmFtZSwgZmFsc2UsIG51
bGxwdHIpOwogCiAgICAgbV9ydW5Mb29wTmVzdGluZ0xldmVsID0gMTsKKyNlbGlmIFVTRShHTElC
X0VWRU5UX0xPT1ApCisgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6
Ok9ic2VydmVyPihbdGhpc10oUnVuTG9vcDo6RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKCFt
X3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHN3aXRjaCAoZXZlbnQpIHsKKyAgICAg
ICAgY2FzZSBSdW5Mb29wOjpFdmVudDo6V2lsbERpc3BhdGNoOgorICAgICAgICAgICAgcHVzaEN1
cnJlbnRSZWNvcmQoSlNPTjo6T2JqZWN0OjpjcmVhdGUoKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpS
ZW5kZXJpbmdGcmFtZSwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUnVuTG9vcDo6RXZlbnQ6OkRpZERpc3BhdGNoOgorICAgICAgICAgICAgZGlkQ29t
cGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVuZGVyaW5nRnJhbWUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkub2JzZXJ2ZSgqbV9ydW5Mb29wT2JzZXJ2ZXIpOwogI2VuZGlmCiAKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+cmVjb3JkaW5nU3RhcnRlZCh0aW1lc3RhbXAoKSk7CkBAIC0yNDcsMTEg
KzI2MiwxMyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RvcCgpCiAg
ICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBudWxscHRyOwogICAgIG1fZnJhbWVTdG9wT2JzZXJ2
ZXIgPSBudWxscHRyOwogICAgIG1fcnVuTG9vcE5lc3RpbmdMZXZlbCA9IDA7CisjZWxpZiBVU0Uo
R0xJQl9FVkVOVF9MT09QKQorICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbnVsbHB0cjsKKyNlbmRp
ZgogCiAgICAgLy8gQ29tcGxldGUgYWxsIHBlbmRpbmcgcmVjb3JkcyB0byBwcmV2ZW50IGRpc2Nh
cmRpbmcgZXZlbnRzIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBwcm9ncmVzcy4KICAgICB3aGlsZSAo
IW1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKQogICAgICAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNv
cmQobV9yZWNvcmRTdGFjay5sYXN0KCkudHlwZSk7Ci0jZW5kaWYKIAogICAgIG1fcmVjb3JkU3Rh
Y2suY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCAzMGZjOTc5NTI0YTkuLjNjNDZhNDIw
YTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU2NyaXB0RGVidWdMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFs
dWVzLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIyMyw4ICsyMjQsMTAgQEAgcHJpdmF0ZToKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UnVuTG9vcE9i
c2VydmVyPiBtX2ZyYW1lU3RhcnRPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6UnVuTG9vcE9ic2VydmVyPiBtX2ZyYW1lU3RvcE9ic2VydmVyOwotI2VuZGlmCiAgICAgaW50
IG1fcnVuTG9vcE5lc3RpbmdMZXZlbCB7IDAgfTsKKyNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1Ap
CisgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bkxvb3A6Ok9ic2VydmVyPiBtX3J1bkxvb3BPYnNlcnZl
cjsKKyNlbmRpZgogICAgIGJvb2wgbV9zdGFydGVkQ29tcG9zaXRlIHsgZmFsc2UgfTsKIH07CiAK
</data>
<flag name="review"
          id="422211"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>