<?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>151372</bug_id>
          
          <creation_ts>2015-11-17 17:02:55 -0800</creation_ts>
          <short_desc>Web Inspector: Initial support for variable timelines</short_desc>
          <delta_ts>2015-12-01 13:54:48 -0800</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 Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1142717</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-17 17:02:55 -0800</bug_when>
    <thetext>* SUMMARY
Initial support for variable timelines.

Currently we assume a fixed set of timelines. This adds basic &quot;Instrument&quot; support so that a recording has a set of instruments not a set of timelines. There is currently a 1-to-1 mapping of Instruments to a Timeline, and that may or may not continue to be the case.

This starts by exposing the Instruments a Recording has, instead of its Timelines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142718</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-17 17:03:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/23586257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142721</commentid>
    <comment_count>2</comment_count>
      <attachid>265718</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-17 17:13:16 -0800</bug_when>
    <thetext>Created attachment 265718
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142938</commentid>
    <comment_count>3</comment_count>
      <attachid>265718</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-18 12:17:28 -0800</bug_when>
    <thetext>Comment on attachment 265718
[PATCH] Proposed Fix

This needs to update Test.html to include the new Models.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142964</commentid>
    <comment_count>4</comment_count>
      <attachid>265718</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-18 13:56:31 -0800</bug_when>
    <thetext>Comment on attachment 265718
[PATCH] Proposed Fix

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

A few things:

 - this patch and the followup make the view classes tied to Instrument instances. But, when we load a timeline recording from disk, I don&apos;t think we should create real Instruments and attach them to a readonly recording. A readonly recording will just have a bunch of deserialized Timelines and 

 - Perhaps we can have TimelineRecording&apos;s clients look at the InstrumentType and then ask for the relevant timeline(s) using that as the key.

 - To avoid always creating all timelines, even if nothing will ever dump data into it, requesting creation of Timelines should be delegated to the individual recordings or TimelineRecording deserializer.

An instrument should initiate a needed Timeline when it&apos;s added to the recording (if a default instrument, like network / scripts) or is started/stopped (if a dynamic instrument, like memory profiling).

So, we would have:

let t = new WebInspector.TimelineRecording(identifier, name);
let defaultInstruments = WebInspector.TimelineManager.defaultInstruments();
for (let instrument of defaultInstruments)
    t.addInstrument(instrument)

Then,

 - Inside TimelineRecording.{addInstrument,removeInstrument}, the recording notifies the instrument with Instrument.{wasAddedTo,willRemoveFrom}Timeline(this).
 - Inside the instrument&apos;s wasAddedToTimeline(), it requests necessary timeline instances using TimelineRecording.getOrCreateTimelineOfType(timelineType).
 - TimelineRecording looks up that timeline, creates a new one if necessary, adds change listeners, returns it to the Instrument.

&gt; Source/WebInspectorUI/UserInterface/Models/TimelineRecording.js:42
&gt; +            WebInspector.TimelineRecord.Type.Script,

I think we only want the timeline to exist if there&apos;s any data being added to it. This will always create a rendering frames timeline. See general comment for a sketch of how we might do it differently.

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineOverview.js:514
&gt; +        let instrument = instrumentOrEvent instanceof WebInspector.Instrument ? instrumentOrEvent : instrumentOrEvent.data.instrument;

I prefer the old style here, less horizontal scanning to find what the possible assignments are.

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineOverview.js:517
&gt; +        let timeline = this._recording.timelineForInstrument(instrument);

maybe this should be timelineForInstrumentType. See general comment.

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js:76
&gt; +        if (WebInspector.FPSInstrument.supported()) {

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142994</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-18 14:55:15 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 265718 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=265718&amp;action=review
&gt; 
&gt; A few things:
&gt; 
&gt;  - this patch and the followup make the view classes tied to Instrument
&gt; instances. But, when we load a timeline recording from disk, I don&apos;t think
&gt; we should create real Instruments and attach them to a readonly recording. A
&gt; readonly recording will just have a bunch of deserialized Timelines and 

If we load a recording from disk I would want it to match what the UI looked like when it was exported. That means knowing the instruments and their order. This will likely mean giving instruments an identifier type for export.


&gt;  - Perhaps we can have TimelineRecording&apos;s clients look at the
&gt; InstrumentType and then ask for the relevant timeline(s) using that as the
&gt; key.
&gt;
&gt;  - To avoid always creating all timelines, even if nothing will ever dump
&gt; data into it, requesting creation of Timelines should be delegated to the
&gt; individual recordings or TimelineRecording deserializer.
&gt; 
&gt; An instrument should initiate a needed Timeline when it&apos;s added to the
&gt; recording (if a default instrument, like network / scripts) or is
&gt; started/stopped (if a dynamic instrument, like memory profiling).
&gt; 
&gt; So, we would have:
&gt; 
&gt; let t = new WebInspector.TimelineRecording(identifier, name);
&gt; let defaultInstruments = WebInspector.TimelineManager.defaultInstruments();
&gt; for (let instrument of defaultInstruments)
&gt;     t.addInstrument(instrument)
&gt; 
&gt; Then,
&gt; 
&gt;  - Inside TimelineRecording.{addInstrument,removeInstrument}, the recording
&gt; notifies the instrument with
&gt; Instrument.{wasAddedTo,willRemoveFrom}Timeline(this).
&gt;  - Inside the instrument&apos;s wasAddedToTimeline(), it requests necessary
&gt; timeline instances using
&gt; TimelineRecording.getOrCreateTimelineOfType(timelineType).
&gt;  - TimelineRecording looks up that timeline, creates a new one if necessary,
&gt; adds change listeners, returns it to the Instrument.

Seems like a lot of work for little pay off. Having a few extra unused timelines in the Recording seems fine to me. Is there a particular case you are thinking of where this approach would improve things?

&gt; &gt; Source/WebInspectorUI/UserInterface/Models/TimelineRecording.js:42
&gt; &gt; +            WebInspector.TimelineRecord.Type.Script,
&gt; 
&gt; I think we only want the timeline to exist if there&apos;s any data being added
&gt; to it. This will always create a rendering frames timeline. See general
&gt; comment for a sketch of how we might do it differently.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/TimelineOverview.js:514
&gt; &gt; +        let instrument = instrumentOrEvent instanceof WebInspector.Instrument ? instrumentOrEvent : instrumentOrEvent.data.instrument;
&gt; 
&gt; I prefer the old style here, less horizontal scanning to find what the
&gt; possible assignments are.

Bah. We should just not have functions called with multiple types like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143086</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-18 16:48:12 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 265718 [details]
&gt;
&gt;  - To avoid always creating all timelines, even if nothing will ever dump
&gt; data into it, requesting creation of Timelines should be delegated to the
&gt; individual recordings or TimelineRecording deserializer.
&gt; 
&gt; An instrument should initiate a needed Timeline when it&apos;s added to the
&gt; recording (if a default instrument, like network / scripts) or is
&gt; started/stopped (if a dynamic instrument, like memory profiling).

After discussion, I don&apos;t think this is necessary for any features in the short term. Having empty timelines always around is okay. We can revisit this when it&apos;s needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143087</commentid>
    <comment_count>7</comment_count>
      <attachid>265718</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-18 16:50:21 -0800</bug_when>
    <thetext>Comment on attachment 265718
[PATCH] Proposed Fix

r=me, let&apos;s keep going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145377</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-01 13:54:48 -0800</bug_when>
    <thetext>&lt;http://trac.webkit.org/changeset/192906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265718</attachid>
            <date>2015-11-17 17:13:16 -0800</date>
            <delta_ts>2015-11-18 16:50:07 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>basic-instruments.patch</filename>
            <type>text/plain</type>
            <size>49896</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQwNmEzYWQuLmVkNzE5MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNCBAQAogMjAxNS0xMS0xNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluaXRp
YWwgc3VwcG9ydCBmb3IgdmFyaWFibGUgdGltZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGlt
ZWxpbmVNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5k
ZWZhdWx0SW5zdHJ1bWVudHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdl
ci5wcm90b3R5cGUuX2xvYWROZXdSZWNvcmRpbmcpOgorICAgICAgICBLZWVwIHRoZSBzdGF0dXMg
cXVvIHdoaWNoIGlzIHRoZSBzYW1lIHNldCBvZiBpbnN0cnVtZW50cyBmb3IgZWFjaCByZWNvcmRp
bmcuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnN0
YXJ0Q2FwdHVyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJv
dG90eXBlLnN0b3BDYXB0dXJpbmcpOgorICAgICAgICBQdXNoIHJlc3BvbnNpYmlsaXR5IG9mIGNh
cHR1cmluZyB0byB0aGUgUmVjb3JkaW5nLCB3aGljaCBoYXMgYSBzcGVjaWZpYyBzZXQKKyAgICAg
ICAgb2YgaW5zdHJ1bWVudHMgdGhhdCBrbm93IHdoYXQgdGhleSBuZWVkIHRvIHR1cm4gb24gYW4g
b2ZmIGZyb20gdGhlIGJhY2tlbmQuCisgICAgICAgIAorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0luc3RydW1lbnQuanM6
IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3RydW1lbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkluc3RydW1lbnQuc3RhcnRMZWdhY3lUaW1lbGluZUFnZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5JbnN0cnVtZW50LnN0b3BMZWdhY3lUaW1lbGluZUFnZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50LnByb3RvdHlwZS5nZXQgdGltZWxpbmVSZWNvcmRU
eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50LnByb3RvdHlwZS5zdGFydElu
c3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudC5wcm90b3R5
cGUuc3RvcEluc3RydW1lbnRhdGlvbik6CisgICAgICAgIE5ldyBjbGFzcyByZXByZXNlbnRpbmcg
c29tZXRoaW5nIHRoYXQgY2FuIGJlIHR1cm5lZCBvbiBhbmQgb2ZmCisgICAgICAgIGZyb20gdGhl
IGJhY2tlbmQgYW5kIHByb2R1Y2VzIGEgc2V0IG9mIFRpbWVsaW5lIHJlY29yZCB0eXBlcy4KKyAg
ICAgICAgQ3VycmVudGx5IGluc3RydW1lbnRzIGFyZSAxLXRvLTEgdG8gYSBUaW1lbGluZSB0eXBl
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvTGF5b3V0SW5zdHJ1bWVudC5qczog
QWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF5b3V0SW5zdHJ1bWVudC5wcm90b3R5cGUu
Z2V0IHRpbWVsaW5lUmVjb3JkVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF5b3V0SW5z
dHJ1bWVudCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvTmV0d29ya0luc3RydW1l
bnQuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtJbnN0cnVtZW50LnBy
b3RvdHlwZS5nZXQgdGltZWxpbmVSZWNvcmRUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrSW5zdHJ1bWVudC5wcm90b3R5cGUuc3RhcnRJbnN0cnVtZW50YXRpb24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtJbnN0cnVtZW50LnByb3RvdHlwZS5zdG9wSW5zdHJ1bWVu
dGF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrSW5zdHJ1bWVudCk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0SW5zdHJ1bWVudC5qczogQWRkZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0SW5zdHJ1bWVudC5wcm90b3R5cGUuZ2V0IHRpbWVs
aW5lUmVjb3JkVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0SW5zdHJ1bWVudCk6
CisgICAgICAgIFRoZSBkZWZhdWx0IHNldCBvZiBpbnN0cnVtZW50cy4gQ3VycmVudGx5IHRoZXkg
YWxsIGVuYWJsZSB0aGUgVGltZWxpbmVBZ2VudCwKKyAgICAgICAgc28gdGhleSBzaGFyZSBjb2Rl
IHRvIGVuYWJsZS9kaXNhYmxlIGluIHRoZSBiYXNlIGNsYXNzIHRvIGF2b2lkIGR1cGxpY2F0aW9u
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRlBTSW5zdHJ1bWVudC5qczogQWRk
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRlBTSW5zdHJ1bWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRlBTSW5zdHJ1bWVudC5zdXBwb3J0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZQU0luc3RydW1lbnQucHJvdG90eXBlLmdldCB0aW1lbGluZVJlY29yZFR5cGUpOgorICAgICAg
ICBQcm92aWRlIGEgInN1cHBvcnRlZCIgc3RhdGljIG1ldGhvZCBhbmQgc2ltcGxpZnkgb3RoZXIg
Y29kZSB0aGF0CisgICAgICAgIGNoZWNrcyB3aGV0aGVyIG9yIG5vdCBSZW5kZXJpbmdGcmFtZXMg
aXMgYXZhaWxhYmxlIG9yIG5vdC4KKworCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
VGltZWxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmUucHJvdG90eXBlLmdl
dCBkaXNwbGF5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmUu
cHJvdG90eXBlLmdldCBpY29uQ2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSB0aGVz
ZSB0byBhIFZpZXcgY2xhc3MsIGFzIHRoaXMgaXMgcHJpbWFyaWx5IFZpZXcgbG9naWMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlLmdldCBpbnN0cnVtZW50cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlLnN0YXJ0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUuc3RvcCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlLnRpbWVsaW5lRm9y
SW5zdHJ1bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJv
dG90eXBlLmFkZEluc3RydW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkaW5nLnByb3RvdHlwZS5yZW1vdmVJbnN0cnVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUuYWRkRXZlbnRNYXJrZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZS5hZGRUaW1lbGluZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBl
LnJlbW92ZVRpbWVsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgQSByZWNvcmRpbmcgbm93IGhhcyBh
IHNldCBvZiBJbnN0cnVtZW50cyBhbmQgaXRzIG93biBzdGFydC9zdG9wCisgICAgICAgIHdoaWNo
IHN0YXJ0cy9zdG9wcyBpdHMgc2V0IG9mIEluc3RydW1lbnRzISBUcmVhdCBJbnN0cnVtZW50cyBh
cworICAgICAgICB0aGUgdmFyaWFibGUgcHJvcGVydHkgb2YgYSBSZWNvcmRpbmcgaW5zdGVhZCBv
ZiBUaW1lbGluZXMuCisgICAgCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZU92ZXJ2aWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlLl9pbnN0cnVt
ZW50QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90
eXBlLl9pbnN0cnVtZW50UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVP
dmVydmlldy5wcm90b3R5cGUuX3RpbWVsaW5lQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlLl90aW1lbGluZVJlbW92ZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdD
b250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRl
bnRWaWV3LnByb3RvdHlwZS5faW5zdHJ1bWVudEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5faW5zdHJ1bWVudFJlbW92
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcu
cHJvdG90eXBlLl90aW1lbGluZUFkZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5fdGltZWxpbmVSZW1vdmVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lU2lkZWJh
clBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5kaXNwbGF5TmFtZUZv
clRpbWVsaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5p
Y29uQ2xhc3NOYW1lRm9yVGltZWxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
U2lkZWJhclBhbmVsLnByb3RvdHlwZS51cGRhdGVGcmFtZVNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlLnJlc3RvcmVTdGF0ZUZy
b21Db29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5fcmVjb3JkaW5nU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faW5zdHJ1bWVudEFkZGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2luc3RydW1lbnRSZW1v
dmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX2NoYW5nZVZpZXdNb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5wcm90b3R5cGUuX3RpbWVsaW5lQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdGltZWxpbmVSZW1vdmVk
KTogRGVsZXRlZC4KKyAgICAgICAgVXBkYXRlIGFsbCBUaW1lbGluZUFkZGVkL1RpbWVsaW5lUmVt
b3ZlZCBjbGllbnRzIHRvIGluc3RlYWQgY2hlY2sKKyAgICAgICAgSW5zdHJ1bWVudEFkZGVkL0lu
c3RydW1lbnRSZW1vdmVkLiBJbW1lZGlhdGVseSBjb252ZXJ0IGZyb20gYW4gSW5zdHJ1bWVudAor
ICAgICAgICB0byBhIFRpbWVsaW5lIHRvIGtlZXAgdGhlIHBhdGNoIHNpbXBsZS4KKworMjAxNS0x
MS0xNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE1vdmUgVGltZWxpbmUgY3JlYXRpb24gaW50byBhIHJlY29yZGluZwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzY3CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCAzZGJiOWUyLi4xOTdiMjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9UaW1lbGluZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCkBAIC00NSw2ICs0NSwyMiBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLnJlc2V0KCk7CiAgICAgfQogCisg
ICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgZGVmYXVsdEluc3RydW1lbnRzKCkKKyAgICB7Cisg
ICAgICAgIGxldCBkZWZhdWx0cyA9IFsKKyAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuTmV0
d29ya0luc3RydW1lbnQsCisgICAgICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLkxheW91dEluc3Ry
dW1lbnQsCisgICAgICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdEluc3RydW1lbnQsCisg
ICAgICAgIF07CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5GUFNJbnN0cnVtZW50LnN1cHBv
cnRlZCgpKQorICAgICAgICAgICAgZGVmYXVsdHMucHVzaChuZXcgV2ViSW5zcGVjdG9yLkZQU0lu
c3RydW1lbnQpOworCisgICAgICAgIHJldHVybiBkZWZhdWx0czsKKyAgICB9CisKICAgICAvLyBQ
dWJsaWMKIAogICAgIHJlc2V0KCkKQEAgLTEwMywyMSArMTE5LDE0IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIGlmICghdGhpcy5fYWN0aXZlUmVjb3JkaW5nIHx8IHNob3VsZENy
ZWF0ZVJlY29yZGluZykKICAgICAgICAgICAgIHRoaXMuX2xvYWROZXdSZWNvcmRpbmcoKTsKIAot
ICAgICAgICB2YXIgcmVzdWx0ID0gVGltZWxpbmVBZ2VudC5zdGFydCgpOwotCi0gICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyA3KTogcmVjb3JkaW5nU3RhcnRlZCBldmVudCBkaWQgbm90IGV4
aXN0IHlldC4gU3RhcnQgZXhwbGljaXRseS4KLSAgICAgICAgaWYgKCFUaW1lbGluZUFnZW50Lmhh
c0V2ZW50KCJyZWNvcmRpbmdTdGFydGVkIikpIHsKLSAgICAgICAgICAgIHJlc3VsdC50aGVuKGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIu
Y2FwdHVyaW5nU3RhcnRlZCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAg
dGhpcy5fYWN0aXZlUmVjb3JkaW5nLnN0YXJ0KCk7CiAgICAgfQogCiAgICAgc3RvcENhcHR1cmlu
ZygpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9pc0NhcHR1cmluZywgIlRp
bWVsaW5lTWFuYWdlciBpcyBub3QgY2FwdHVyaW5nLiIpOwogCi0gICAgICAgIFRpbWVsaW5lQWdl
bnQuc3RvcCgpOworICAgICAgICB0aGlzLl9hY3RpdmVSZWNvcmRpbmcuc3RvcCgpOwogCiAgICAg
ICAgIC8vIE5PVEU6IEFsd2F5cyBzdG9wIGltbWVkaWF0ZWx5IGluc3RlYWQgb2Ygd2FpdGluZyBm
b3IgYSBUaW1lbGluZS5yZWNvcmRpbmdTdG9wcGVkIGV2ZW50LgogICAgICAgICAvLyBUaGlzIHdh
eSB0aGUgVUkgZmVlbHMgYXMgcmVzcG9uc2l2ZSB0byBhIHN0b3AgYXMgcG9zc2libGUuCkBAIC00
NDUsOCArNDU0LDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1l
bGluZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGlmICh0aGlz
Ll9hY3RpdmVSZWNvcmRpbmcgJiYgdGhpcy5fYWN0aXZlUmVjb3JkaW5nLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAvLyBGSVhNRTogTW92ZSB0aGUgbGlzdCBvZiBp
bnN0cnVtZW50cyBmb3IgYSBuZXcgcmVjb3JkaW5nIHRvIGEgU2V0dGluZyB3aGVuIG5ldyBJbnN0
cnVtZW50cyBhcmUgc3VwcG9ydGVkLgorICAgICAgICBsZXQgaW5zdHJ1bWVudHMgPSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVNYW5hZ2VyLmRlZmF1bHRJbnN0cnVtZW50cygpOworCiAgICAgICAgIHZh
ciBpZGVudGlmaWVyID0gdGhpcy5fbmV4dFJlY29yZGluZ0lkZW50aWZpZXIrKzsKLSAgICAgICAg
dmFyIG5ld1JlY29yZGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcoaWRl
bnRpZmllciwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZSBSZWNvcmRpbmcgJWQiKS5m
b3JtYXQoaWRlbnRpZmllcikpOworICAgICAgICB2YXIgbmV3UmVjb3JkaW5nID0gbmV3IFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZGluZyhpZGVudGlmaWVyLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlRpbWVsaW5lIFJlY29yZGluZyAlZCIpLmZvcm1hdChpZGVudGlmaWVyKSwgaW5zdHJ1bWVu
dHMpOwogCiAgICAgICAgIHRoaXMuX3JlY29yZGluZ3MucHVzaChuZXdSZWNvcmRpbmcpOwogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVN
YW5hZ2VyLkV2ZW50LlJlY29yZGluZ0NyZWF0ZWQsIHtyZWNvcmRpbmc6IG5ld1JlY29yZGluZ30p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4
IGRjNjJjMzQuLjBiY2E3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTI0Myw2ICsyNDMsNyBAQAogCiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9CcmVha3BvaW50QWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0NvbnNvbGVNZXNzYWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0luc3RydW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU291cmNl
Q29kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Tb3VyY2VDb2RlTG9j
YXRpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVGltZWxpbmUuanMi
Pjwvc2NyaXB0PgpAQCAtMjgxLDYgKzI4Miw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9F
eGVjdXRpb25Db250ZXh0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0V4
ZWN1dGlvbkNvbnRleHRMaXN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0ZyYW1lLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0ZQU0luc3RydW1l
bnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvR2FyYmFnZUNvbGxlY3Rp
b24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvR2VvbWV0cnkuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvR3JhZGllbnQuanMiPjwvc2NyaXB0PgpA
QCAtMjg5LDExICsyOTEsMTMgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlSW5kZXguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvSXNzdWVNZXNzYWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0tl
eWJvYXJkU2hvcnRjdXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5
b3V0SW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXlv
dXRUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9M
YXp5U291cmNlQ29kZUxvY2F0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0xpbmVXaWRnZXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTG9n
T2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL05hdGl2ZUZ1bmN0
aW9uUGFyYW1ldGVycy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9OZXR3
b3JrSW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9OZXR3
b3JrVGltZWxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvT2JqZWN0
UHJldmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Qcm9iZS5qcyI+
PC9zY3JpcHQ+CkBAIC0zMTYsNiArMzIwLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jl
dmlzaW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Njb3BlQ2hhaW5O
b2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NjcmlwdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY3JpcHRJbnN0cnVtZW50LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU2V0dGluZy5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRlBT
SW5zdHJ1bWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9GUFNJbnN0cnVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1
ZTQ0NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvRlBTSW5zdHJ1bWVudC5qcwpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworV2ViSW5zcGVjdG9yLkZQU0luc3RydW1lbnQgPSBjbGFzcyBGUFNJbnN0cnVtZW50IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkluc3RydW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgewor
ICAgICAgICBzdXBlcigpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdlYkluc3BlY3Rvci5G
UFNJbnN0cnVtZW50LnN1cHBvcnRlZCgpKTsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAg
IHN0YXRpYyBzdXBwb3J0ZWQoKQorICAgIHsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9T
IDgpOiBUaW1lbGluZUFnZW50LkV2ZW50VHlwZS5SZW5kZXJpbmdGcmFtZSBkaWQgbm90IGV4aXN0
LgorICAgICAgICByZXR1cm4gd2luZG93LlRpbWVsaW5lQWdlbnQgJiYgVGltZWxpbmVBZ2VudC5F
dmVudFR5cGUuUmVuZGVyaW5nRnJhbWU7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAg
ICBnZXQgdGltZWxpbmVSZWNvcmRUeXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SZW5kZXJpbmdGcmFtZTsKKyAgICB9Cit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luc3Ry
dW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5z
dHJ1bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDEyYzUxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0luc3RydW1lbnQuanMKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3Bl
Y3Rvci5JbnN0cnVtZW50ID0gY2xhc3MgSW5zdHJ1bWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK3sKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBzdGFydExlZ2FjeVRpbWVsaW5l
QWdlbnQoKQorICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50Ll9sZWdh
Y3lUaW1lbGluZUFnZW50U3RhcnRlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBX
ZWJJbnNwZWN0b3IuSW5zdHJ1bWVudC5fbGVnYWN5VGltZWxpbmVBZ2VudFN0YXJ0ZWQgPSB0cnVl
OworCisgICAgICAgIGxldCByZXN1bHQgPSBUaW1lbGluZUFnZW50LnN0YXJ0KCk7CisKKyAgICAg
ICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDcpOiByZWNvcmRpbmdTdGFydGVkIGV2ZW50IGRpZCBu
b3QgZXhpc3QgeWV0LiBTdGFydCBleHBsaWNpdGx5LgorICAgICAgICBpZiAoIVRpbWVsaW5lQWdl
bnQuaGFzRXZlbnQoInJlY29yZGluZ1N0YXJ0ZWQiKSkgeworICAgICAgICAgICAgcmVzdWx0LnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFu
YWdlci5jYXB0dXJpbmdTdGFydGVkKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHN0YXRpYyBzdG9wTGVnYWN5VGltZWxpbmVBZ2VudCgpCisgICAgeworICAgICAg
ICBpZiAoIVdlYkluc3BlY3Rvci5JbnN0cnVtZW50Ll9sZWdhY3lUaW1lbGluZUFnZW50U3RhcnRl
ZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVu
dC5fbGVnYWN5VGltZWxpbmVBZ2VudFN0YXJ0ZWQgPSBmYWxzZTsKKworICAgICAgICBUaW1lbGlu
ZUFnZW50LnN0b3AoKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGdldCB0aW1l
bGluZVJlY29yZFR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGw7IC8vIEltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgc3RhcnRJbnN0cnVtZW50YXRpb24oKQor
ICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkluc3RydW1lbnQuc3RhcnRMZWdhY3lUaW1lbGlu
ZUFnZW50KCk7CisgICAgfQorCisgICAgc3RvcEluc3RydW1lbnRhdGlvbigpCisgICAgeworICAg
ICAgICBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudC5zdG9wTGVnYWN5VGltZWxpbmVBZ2VudCgpOwor
ICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5JbnN0cnVtZW50Ll9sZWdhY3lUaW1lbGluZUFnZW50
U3RhcnRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0xheW91dEluc3RydW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGF5b3V0SW5zdHJ1bWVudC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDMzYWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xheW91dEluc3RydW1lbnQuanMK
QEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5MYXlvdXRJbnN0cnVt
ZW50ID0gY2xhc3MgTGF5b3V0SW5zdHJ1bWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50Cit7CisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBnZXQgdGltZWxpbmVSZWNvcmRUeXBlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5M
YXlvdXQ7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9OZXR3b3JrSW5zdHJ1bWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OZXR3b3JrSW5zdHJ1bWVudC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTQ2ZGI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05ldHdvcmtJbnN0cnVtZW50
LmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuTmV0d29ya0lu
c3RydW1lbnQgPSBjbGFzcyBOZXR3b3JrSW5zdHJ1bWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5J
bnN0cnVtZW50Cit7CisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBnZXQgdGltZWxpbmVSZWNvcmRU
eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
VHlwZS5OZXR3b3JrOworICAgIH0KKworICAgIHN0YXJ0SW5zdHJ1bWVudGF0aW9uKCkKKyAgICB7
CisgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIG5ldHdvcmsgaW5zdHJ1bWVudGF0aW9uIGlzIGFs
d2F5cyBoYXBwZW5pbmcuCisgICAgfQorCisgICAgc3RvcEluc3RydW1lbnRhdGlvbigpCisgICAg
eworICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLCBuZXR3b3JrIGluc3RydW1lbnRhdGlvbiBpcyBh
bHdheXMgaGFwcGVuaW5nLgorICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0SW5zdHJ1bWVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRJbnN0cnVtZW50LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMDIyZWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0SW5z
dHJ1bWVudC5qcwpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlNj
cmlwdEluc3RydW1lbnQgPSBjbGFzcyBTY3JpcHRJbnN0cnVtZW50IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLkluc3RydW1lbnQKK3sKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGdldCB0aW1lbGluZVJl
Y29yZFR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZC5UeXBlLlNjcmlwdDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzCmluZGV4IGYxZTMwY2YuLjNj
OGI4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9UaW1lbGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvVGltZWxpbmUuanMKQEAgLTY2LDM0ICs2Niw2IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZSA9IGNsYXNzIFRpbWVsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICByZXR1cm4gdGhpcy5fcmVjb3JkczsKICAgICB9CiAKLSAgICBnZXQgZGlzcGxheU5hbWUoKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZC5UeXBlLk5ldHdvcmspCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJOZXR3b3JrIFJlcXVlc3RzIik7Ci0gICAgICAgIGlmICh0aGlzLl90eXBlID09PSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQpCi0gICAgICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQgJiBSZW5kZXJpbmciKTsKLSAgICAgICAgaWYg
KHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCkK
LSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkphdmFTY3JpcHQgJiBF
dmVudHMiKTsKLSAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5UeXBlLlJlbmRlcmluZ0ZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVuZGVyaW5nIEZyYW1lcyIpOwotCi0gICAgICAgIGNvbnNvbGUuZXJy
b3IoIlRpbWVsaW5lIGhhcyB1bmtub3duIHR5cGU6IiwgdGhpcy5fdHlwZSwgdGhpcyk7Ci0gICAg
fQotCi0gICAgZ2V0IGljb25DbGFzc05hbWUoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3R5
cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspCi0gICAgICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk5ldHdvcmtJY29u
U3R5bGVDbGFzczsKLSAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZC5UeXBlLkxheW91dCkKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwuQ29sb3JzSWNvblN0eWxlQ2xhc3M7Ci0gICAgICAgIGlmICh0
aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQpCi0g
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNjcmlw
dEljb25TdHlsZUNsYXNzOwotICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlbmRlcmluZ0ZyYW1lSWNvblN0eWxl
Q2xhc3M7Ci0KLSAgICAgICAgY29uc29sZS5lcnJvcigiVGltZWxpbmUgaGFzIHVua25vd24gdHlw
ZToiLCB0aGlzLl90eXBlLCB0aGlzKTsKLSAgICB9Ci0KICAgICByZXNldChzdXBwcmVzc0V2ZW50
cykKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY29yZHMgPSBbXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJl
Y29yZGluZy5qcwppbmRleCBmNWYwOWJkLi4wYmRlY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVj
b3JkaW5nLmpzCkBAIC0yNSwyMiArMjUsMjkgQEAKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkaW5nID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiB7Ci0gICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUpCisgICAgY29u
c3RydWN0b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIGluc3RydW1lbnRzKQogICAgIHsKICAg
ICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVzID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fZGlzcGxh
eU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICAgICAgdGhpcy5fY2FwdHVyaW5nID0gZmFsc2U7CiAg
ICAgICAgIHRoaXMuX3JlYWRvbmx5ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2luc3RydW1lbnRz
ID0gaW5zdHJ1bWVudHMgfHwgW107CiAKLSAgICAgICAgdGhpcy5hZGRUaW1lbGluZShXZWJJbnNw
ZWN0b3IuVGltZWxpbmUuY3JlYXRlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5l
dHdvcmspKTsKLSAgICAgICAgdGhpcy5hZGRUaW1lbGluZShXZWJJbnNwZWN0b3IuVGltZWxpbmUu
Y3JlYXRlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCkpOwotICAgICAg
ICB0aGlzLmFkZFRpbWVsaW5lKFdlYkluc3BlY3Rvci5UaW1lbGluZS5jcmVhdGUoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0KSk7CisgICAgICAgIGxldCB0aW1lbGluZXMg
PSBbCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3Jr
LAorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0LAor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0LAorICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJhbWUs
CisgICAgICAgIF07CiAKLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBUaW1lbGlu
ZUFnZW50LkV2ZW50VHlwZS5SZW5kZXJpbmdGcmFtZSBkaWQgbm90IGV4aXN0LgotICAgICAgICBp
ZiAod2luZG93LlRpbWVsaW5lQWdlbnQgJiYgVGltZWxpbmVBZ2VudC5FdmVudFR5cGUuUmVuZGVy
aW5nRnJhbWUpCi0gICAgICAgICAgICB0aGlzLmFkZFRpbWVsaW5lKFdlYkluc3BlY3Rvci5UaW1l
bGluZS5jcmVhdGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJh
bWUpKTsKKyAgICAgICAgZm9yIChsZXQgdHlwZSBvZiB0aW1lbGluZXMpIHsKKyAgICAgICAgICAg
IGxldCB0aW1lbGluZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZS5jcmVhdGUodHlwZSk7CisgICAg
ICAgICAgICB0aGlzLl90aW1lbGluZXMuc2V0KHR5cGUsIHRpbWVsaW5lKTsKKyAgICAgICAgICAg
IHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlRp
bWVzVXBkYXRlZCwgdGhpcy5fdGltZWxpbmVUaW1lc1VwZGF0ZWQsIHRoaXMpOworICAgICAgICB9
CiAKICAgICAgICAgLy8gRm9yIGxlZ2FjeSBiYWNrZW5kcywgd2UgY29tcHV0ZSB0aGUgZWxhcHNl
ZCB0aW1lIG9mIHJlY29yZHMgcmVsYXRpdmUgdG8gdGhpcyB0aW1lc3RhbXAuCiAgICAgICAgIHRo
aXMuX2xlZ2FjeUZpcnN0UmVjb3JkZWRUaW1lc3RhbXAgPSBOYU47CkBAIC02NSw2ICs3MiwxMSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGlu
ZyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYgogICAgICAgICByZXR1cm4gdGhpcy5fdGltZWxpbmVz
OwogICAgIH0KIAorICAgIGdldCBpbnN0cnVtZW50cygpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5faW5zdHJ1bWVudHM7CisgICAgfQorCiAgICAgZ2V0IHJlYWRvbmx5KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9yZWFkb25seTsKQEAgLTgwLDYgKzkyLDI4IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZGluZyA9IGNsYXNzIFRpbWVsaW5lUmVjb3JkaW5nIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iCiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwogICAgIH0KIAor
ICAgIHN0YXJ0KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9jYXB0dXJp
bmcsICJBdHRlbXB0ZWQgdG8gc3RhcnQgYW4gYWxyZWFkeSBzdGFydGVkIHNlc3Npb24uIik7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9yZWFkb25seSwgIkF0dGVtcHRlZCB0byBzdGFy
dCBhIHJlYWRvbmx5IHNlc3Npb24uIik7CisKKyAgICAgICAgdGhpcy5fY2FwdHVyaW5nID0gdHJ1
ZTsKKworICAgICAgICBmb3IgKGxldCBpbnN0cnVtZW50IG9mIHRoaXMuX2luc3RydW1lbnRzKQor
ICAgICAgICAgICAgaW5zdHJ1bWVudC5zdGFydEluc3RydW1lbnRhdGlvbigpOworICAgIH0KKwor
ICAgIHN0b3AoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY2FwdHVyaW5n
LCAiQXR0ZW1wdGVkIHRvIHN0b3AgYW4gYWxyZWFkeSBzdG9wcGVkIHNlc3Npb24uIik7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9yZWFkb25seSwgIkF0dGVtcHRlZCB0byBzdG9wIGEg
cmVhZG9ubHkgc2Vzc2lvbi4iKTsKKworICAgICAgICB0aGlzLl9jYXB0dXJpbmcgPSBmYWxzZTsK
KworICAgICAgICBmb3IgKGxldCBpbnN0cnVtZW50IG9mIHRoaXMuX2luc3RydW1lbnRzKQorICAg
ICAgICAgICAgaW5zdHJ1bWVudC5zdG9wSW5zdHJ1bWVudGF0aW9uKCk7CisgICAgfQorCiAgICAg
c2F2ZUlkZW50aXR5VG9Db29raWUoKQogICAgIHsKICAgICAgICAgLy8gRG8gbm90aGluZy4gVGlt
ZWxpbmUgcmVjb3JkaW5ncyBhcmUgbm90IHBlcnNpc3RlZCB3aGVuIHRoZSBpbnNwZWN0b3IgaXMK
QEAgLTEzMywzMiArMTY3LDM0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZyA9IGNs
YXNzIFRpbWVsaW5lUmVjb3JkaW5nIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iCiAgICAgICAgIHJl
dHVybiBbLi4udGltZWxpbmVzLnZhbHVlcygpXTsKICAgICB9CiAKLSAgICBhZGRUaW1lbGluZSh0
aW1lbGluZSkKKyAgICB0aW1lbGluZUZvckluc3RydW1lbnQoaW5zdHJ1bWVudCkKICAgICB7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lLCB0aW1lbGluZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90aW1lbGlu
ZXMuaGFzKHRpbWVsaW5lKSwgdGhpcy5fdGltZWxpbmVzLCB0aW1lbGluZSk7CisgICAgICAgIHJl
dHVybiB0aGlzLl90aW1lbGluZXMuZ2V0KGluc3RydW1lbnQudGltZWxpbmVSZWNvcmRUeXBlKTsK
KyAgICB9CisKKyAgICBhZGRJbnN0cnVtZW50KGluc3RydW1lbnQpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChpbnN0cnVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluc3RydW1l
bnQsIGluc3RydW1lbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5faW5zdHJ1bWVu
dHMuY29udGFpbnMoaW5zdHJ1bWVudCksIHRoaXMuX2luc3RydW1lbnRzLCBpbnN0cnVtZW50KTsK
IAotICAgICAgICB0aGlzLl90aW1lbGluZXMuc2V0KHRpbWVsaW5lLnR5cGUsIHRpbWVsaW5lKTsK
KyAgICAgICAgdGhpcy5faW5zdHJ1bWVudHMucHVzaChpbnN0cnVtZW50KTsKIAotICAgICAgICB0
aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5UaW1l
c1VwZGF0ZWQsIHRoaXMuX3RpbWVsaW5lVGltZXNVcGRhdGVkLCB0aGlzKTsKLSAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5n
LkV2ZW50LlRpbWVsaW5lQWRkZWQsIHt0aW1lbGluZX0pOworICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuSW5z
dHJ1bWVudEFkZGVkLCB7aW5zdHJ1bWVudH0pOwogICAgIH0KIAotICAgIHJlbW92ZVRpbWVsaW5l
KHRpbWVsaW5lKQorICAgIHJlbW92ZUluc3RydW1lbnQoaW5zdHJ1bWVudCkKICAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lLCB0aW1lbGluZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RpbWVsaW5lcy5o
YXModGltZWxpbmUudHlwZSksIHRoaXMuX3RpbWVsaW5lcywgdGltZWxpbmUpOwotICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl90aW1lbGluZXMuZ2V0KHRpbWVsaW5lLnR5cGUpID09PSB0aW1l
bGluZSwgdGhpcy5fdGltZWxpbmVzLCB0aW1lbGluZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGluc3RydW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudCwgaW5zdHJ1bWVu
dCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2luc3RydW1lbnRzLmNvbnRhaW5zKGlu
c3RydW1lbnQpLCB0aGlzLl9pbnN0cnVtZW50cywgaW5zdHJ1bWVudCk7CiAKLSAgICAgICAgdGhp
cy5fdGltZWxpbmVzLmRlbGV0ZSh0aW1lbGluZS50eXBlKTsKKyAgICAgICAgdGhpcy5faW5zdHJ1
bWVudHMucmVtb3ZlKGluc3RydW1lbnQpOwogCi0gICAgICAgIHRpbWVsaW5lLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlRpbWVzVXBkYXRlZCwgdGhpcy5f
dGltZWxpbmVUaW1lc1VwZGF0ZWQsIHRoaXMpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuVGltZWxpbmVS
ZW1vdmVkLCB7dGltZWxpbmV9KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50Lkluc3RydW1lbnRSZW1vdmVk
LCB7aW5zdHJ1bWVudH0pOwogICAgIH0KIAogICAgIGFkZEV2ZW50TWFya2VyKG1hcmtlcikKICAg
ICB7Ci0gICAgICAgIGlmICghV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5pc0NhcHR1cmlu
ZygpKQorICAgICAgICBpZiAoIXRoaXMuX2NhcHR1cmluZykKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB0aGlzLl9ldmVudE1hcmtlcnMucHVzaChtYXJrZXIpOwpAQCAtMjkxLDggKzMy
Nyw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudCA9IHsKICAgICBSZXNl
dDogInRpbWVsaW5lLXJlY29yZGluZy1yZXNldCIsCiAgICAgVW5sb2FkZWQ6ICJ0aW1lbGluZS1y
ZWNvcmRpbmctdW5sb2FkZWQiLAogICAgIFNvdXJjZUNvZGVUaW1lbGluZUFkZGVkOiAidGltZWxp
bmUtcmVjb3JkaW5nLXNvdXJjZS1jb2RlLXRpbWVsaW5lLWFkZGVkIiwKLSAgICBUaW1lbGluZUFk
ZGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXRpbWVsaW5lLWFkZGVkIiwKLSAgICBUaW1lbGluZVJl
bW92ZWQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctdGltZWxpbmUtcmVtb3ZlZCIsCisgICAgSW5zdHJ1
bWVudEFkZGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLWluc3RydW1lbnQtYWRkZWQiLAorICAgIElu
c3RydW1lbnRSZW1vdmVkOiAidGltZWxpbmUtcmVjb3JkaW5nLWluc3RydW1lbnQtcmVtb3ZlZCIs
CiAgICAgVGltZXNVcGRhdGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXRpbWVzLXVwZGF0ZWQiLAog
ICAgIE1hcmtlckFkZGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLW1hcmtlci1hZGRlZCIsCiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVPdmVydmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lT3ZlcnZpZXcuanMKaW5kZXggZTc2NjgzMi4uNGZmNTcxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVy
dmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZU92ZXJ2aWV3LmpzCkBAIC0zMiw4ICszMiw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU92ZXJ2aWV3ID0gY2xhc3MgVGltZWxpbmVPdmVydmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lUmVjb3JkaW5nIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nKTsKIAogICAgICAgICB0aGlzLl9yZWNvcmRp
bmcgPSB0aW1lbGluZVJlY29yZGluZzsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lQWRk
ZWQsIHRoaXMuX3RpbWVsaW5lQWRkZWQsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZWNvcmRpbmcu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuVGlt
ZWxpbmVSZW1vdmVkLCB0aGlzLl90aW1lbGluZVJlbW92ZWQsIHRoaXMpOworICAgICAgICB0aGlz
Ll9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcuRXZlbnQuSW5zdHJ1bWVudEFkZGVkLCB0aGlzLl9pbnN0cnVtZW50QWRkZWQsIHRoaXMpOwor
ICAgICAgICB0aGlzLl9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRpbmcuRXZlbnQuSW5zdHJ1bWVudFJlbW92ZWQsIHRoaXMuX2luc3RydW1lbnRS
ZW1vdmVkLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50Lk1hcmtlckFkZGVkLCB0aGlzLl9t
YXJrZXJBZGRlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5SZXNldCwgdGhpcy5fcmVj
b3JkaW5nUmVzZXQsIHRoaXMpOwogCkBAIC05MSw4ICs5MSw4IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZU92ZXJ2aWV3ID0gY2xhc3MgVGltZWxpbmVPdmVydmlldyBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplCiAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lID0gdGhpcy5fc2VsZWN0aW9u
U3RhcnRWYWx1ZVNldHRpbmcudmFsdWU7CiAgICAgICAgIHRoaXMuc2VsZWN0aW9uRHVyYXRpb24g
PSB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNldHRpbmcudmFsdWU7CiAKLSAgICAgICAgZm9yICh2
YXIgdGltZWxpbmUgb2YgdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lcy52YWx1ZXMoKSkKLSAgICAg
ICAgICAgIHRoaXMuX3RpbWVsaW5lQWRkZWQodGltZWxpbmUpOworICAgICAgICBmb3IgKGxldCBp
bnN0cnVtZW50IG9mIHRoaXMuX3JlY29yZGluZy5pbnN0cnVtZW50cykKKyAgICAgICAgICAgIHRo
aXMuX2luc3RydW1lbnRBZGRlZChpbnN0cnVtZW50KTsKIAogICAgICAgICBpZiAoIVdlYkluc3Bl
Y3Rvci50aW1lbGluZU1hbmFnZXIuaXNDYXB0dXJpbmdQYWdlUmVsb2FkKCkpCiAgICAgICAgICAg
ICB0aGlzLl9yZXNldFNlbGVjdGlvbigpOwpAQCAtNTA5LDMzICs1MDksMzQgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXcgPSBjbGFzcyBUaW1lbGluZU92ZXJ2aWV3IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamUKICAgICAgICAgdGhpcy5fZ2VzdHVyZVN0YXJ0RHVyYXRpb25QZXJQaXhl
bCA9IE5hTjsKICAgICB9CiAKLSAgICBfdGltZWxpbmVBZGRlZCh0aW1lbGluZU9yRXZlbnQpCisg
ICAgX2luc3RydW1lbnRBZGRlZChpbnN0cnVtZW50T3JFdmVudCkKICAgICB7Ci0gICAgICAgIHZh
ciB0aW1lbGluZSA9IHRpbWVsaW5lT3JFdmVudDsKLSAgICAgICAgaWYgKCEodGltZWxpbmUgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpKQotICAgICAgICAgICAgdGltZWxpbmUgPSB0
aW1lbGluZU9yRXZlbnQuZGF0YS50aW1lbGluZTsKKyAgICAgICAgbGV0IGluc3RydW1lbnQgPSBp
bnN0cnVtZW50T3JFdmVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50ID8gaW5z
dHJ1bWVudE9yRXZlbnQgOiBpbnN0cnVtZW50T3JFdmVudC5kYXRhLmluc3RydW1lbnQ7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGluc3RydW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5z
dHJ1bWVudCwgaW5zdHJ1bWVudCk7CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKKyAgICAgICAgbGV0
IHRpbWVsaW5lID0gdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lRm9ySW5zdHJ1bWVudChpbnN0cnVt
ZW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdHcmFw
aHNNYXAuaGFzKHRpbWVsaW5lKSwgdGltZWxpbmUpOwogICAgICAgICBpZiAoIXRoaXMuY2FuU2hv
d1RpbWVsaW5lKHRpbWVsaW5lKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIg
b3ZlcnZpZXdHcmFwaCA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguY3JlYXRl
Rm9yVGltZWxpbmUodGltZWxpbmUsIHRoaXMpOworICAgICAgICBsZXQgb3ZlcnZpZXdHcmFwaCA9
IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguY3JlYXRlRm9yVGltZWxpbmUodGlt
ZWxpbmUsIHRoaXMpOwogICAgICAgICBvdmVydmlld0dyYXBoLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5FdmVudC5SZWNvcmRTZWxlY3RlZCwgdGhp
cy5fcmVjb3JkU2VsZWN0ZWQsIHRoaXMpOwogICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3
R3JhcGhzTWFwLnNldCh0aW1lbGluZSwgb3ZlcnZpZXdHcmFwaCk7CiAgICAgICAgIHRoaXMuX2dy
YXBoc0NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQob3ZlcnZpZXdHcmFwaC5lbGVtZW50KTsK
ICAgICB9CiAKLSAgICBfdGltZWxpbmVSZW1vdmVkKGV2ZW50KQorICAgIF9pbnN0cnVtZW50UmVt
b3ZlZChldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB0aW1lbGluZSA9IGV2ZW50LmRhdGEudGlt
ZWxpbmU7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7CisgICAgICAgIGxldCBpbnN0cnVtZW50ID0gZXZl
bnQuZGF0YS5pbnN0cnVtZW50OworICAgICAgICBjb25zb2xlLmFzc2VydChpbnN0cnVtZW50IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluc3RydW1lbnQsIGluc3RydW1lbnQpOworCisgICAgICAg
IGxldCB0aW1lbGluZSA9IHRoaXMuX3JlY29yZGluZy50aW1lbGluZUZvckluc3RydW1lbnQoaW5z
dHJ1bWVudCk7CiAgICAgICAgIGlmICghdGhpcy5jYW5TaG93VGltZWxpbmUodGltZWxpbmUpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RpbWVs
aW5lT3ZlcnZpZXdHcmFwaHNNYXAuaGFzKHRpbWVsaW5lKSwgdGltZWxpbmUpOwogCi0gICAgICAg
IHZhciBvdmVydmlld0dyYXBoID0gdGhpcy5fdGltZWxpbmVPdmVydmlld0dyYXBoc01hcC50YWtl
KHRpbWVsaW5lKTsKKyAgICAgICAgbGV0IG92ZXJ2aWV3R3JhcGggPSB0aGlzLl90aW1lbGluZU92
ZXJ2aWV3R3JhcGhzTWFwLnRha2UodGltZWxpbmUpOwogICAgICAgICBvdmVydmlld0dyYXBoLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5FdmVu
dC5SZWNvcmRTZWxlY3RlZCwgdGhpcy5fcmVjb3JkU2VsZWN0ZWQsIHRoaXMpOwogICAgICAgICB0
aGlzLl9ncmFwaHNDb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkKG92ZXJ2aWV3R3JhcGguZWxl
bWVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcuanMKaW5kZXggOWNmMjZjMS4uNDZlMWQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzCkBAIC02OSw4ICs2OSw4IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmdDb250
ZW50VmlldyBlCiAgICAgICAgIHRoaXMuX3N0YXJ0VGltZU5lZWRzUmVzZXQgPSB0cnVlOwogICAg
ICAgICB0aGlzLl9yZW5kZXJpbmdGcmFtZVRpbWVsaW5lID0gbnVsbDsKIAotICAgICAgICB0aGlz
Ll9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcuRXZlbnQuVGltZWxpbmVBZGRlZCwgdGhpcy5fdGltZWxpbmVBZGRlZCwgdGhpcyk7Ci0gICAg
ICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZGluZy5FdmVudC5UaW1lbGluZVJlbW92ZWQsIHRoaXMuX3RpbWVsaW5lUmVtb3ZlZCwg
dGhpcyk7CisgICAgICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5JbnN0cnVtZW50QWRkZWQsIHRoaXMuX2luc3Ry
dW1lbnRBZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5JbnN0cnVtZW50UmVtb3Zl
ZCwgdGhpcy5faW5zdHJ1bWVudFJlbW92ZWQsIHRoaXMpOwogICAgICAgICB0aGlzLl9yZWNvcmRp
bmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQu
UmVzZXQsIHRoaXMuX3JlY29yZGluZ1Jlc2V0LCB0aGlzKTsKICAgICAgICAgdGhpcy5fcmVjb3Jk
aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50
LlVubG9hZGVkLCB0aGlzLl9yZWNvcmRpbmdVbmxvYWRlZCwgdGhpcyk7CiAKQEAgLTgzLDggKzgz
LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgPSBjbGFzcyBU
aW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3IGUKICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNl
bGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1NlbGVjdGlv
blBhdGhDb21wb25lbnREaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQu
U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmll
d1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7CiAKLSAgICAg
ICAgZm9yICh2YXIgdGltZWxpbmUgb2YgdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lcy52YWx1ZXMo
KSkKLSAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lQWRkZWQodGltZWxpbmUpOworICAgICAgICBm
b3IgKGxldCBpbnN0cnVtZW50IG9mIHRoaXMuX3JlY29yZGluZy5pbnN0cnVtZW50cykKKyAgICAg
ICAgICAgIHRoaXMuX2luc3RydW1lbnRBZGRlZChpbnN0cnVtZW50KTsKIAogICAgICAgICB0aGlz
LnNob3dPdmVydmlld1RpbWVsaW5lVmlldygpOwogICAgIH0KQEAgLTU3NywzMyArNTc3LDM2IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgVGltZWxp
bmVSZWNvcmRpbmdDb250ZW50VmlldyBlCiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFp
bmVyLmVsZW1lbnQuc3R5bGUudG9wID0gc3R5bGVWYWx1ZTsKICAgICB9CiAKLSAgICBfdGltZWxp
bmVBZGRlZCh0aW1lbGluZU9yRXZlbnQpCisgICAgX2luc3RydW1lbnRBZGRlZChpbnN0cnVtZW50
T3JFdmVudCkKICAgICB7Ci0gICAgICAgIHZhciB0aW1lbGluZSA9IHRpbWVsaW5lT3JFdmVudDsK
LSAgICAgICAgaWYgKCEodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUp
KQotICAgICAgICAgICAgdGltZWxpbmUgPSB0aW1lbGluZU9yRXZlbnQuZGF0YS50aW1lbGluZTsK
KyAgICAgICAgbGV0IGluc3RydW1lbnQgPSBpbnN0cnVtZW50T3JFdmVudCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50ID8gaW5zdHJ1bWVudE9yRXZlbnQgOiBpbnN0cnVtZW50T3JF
dmVudC5kYXRhLmluc3RydW1lbnQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluc3RydW1lbnQg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudCwgaW5zdHJ1bWVudCk7CiAKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxp
bmUsIHRpbWVsaW5lKTsKKyAgICAgICAgbGV0IHRpbWVsaW5lID0gdGhpcy5fcmVjb3JkaW5nLnRp
bWVsaW5lRm9ySW5zdHJ1bWVudChpbnN0cnVtZW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuX3RpbWVsaW5lVmlld01hcC5oYXModGltZWxpbmUpLCB0aW1lbGluZSk7CiAKICAgICAg
ICAgdGhpcy5fdGltZWxpbmVWaWV3TWFwLnNldCh0aW1lbGluZSwgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LmNyZWF0ZUZyb21SZXByZXNlbnRlZE9iamVjdCh0aW1lbGluZSwge3RpbWVsaW5lU2lk
ZWJhclBhbmVsOiB0aGlzLl90aW1lbGluZVNpZGViYXJQYW5lbH0pKTsKICAgICAgICAgaWYgKHRp
bWVsaW5lLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlJlbmRlcmlu
Z0ZyYW1lKQogICAgICAgICAgICAgdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZSA9IHRpbWVs
aW5lOwogCi0gICAgICAgIHZhciBwYXRoQ29tcG9uZW50ID0gbmV3IFdlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50KHRpbWVsaW5lLmRpc3BsYXlOYW1lLCB0aW1lbGluZS5pY29u
Q2xhc3NOYW1lLCB0aW1lbGluZSk7CisgICAgICAgIGxldCBkaXNwbGF5TmFtZSA9IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5kaXNwbGF5TmFtZUZvclRpbWVsaW5lKHRpbWVsaW5l
KTsKKyAgICAgICAgbGV0IGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRl
YmFyUGFuZWwuaWNvbkNsYXNzTmFtZUZvclRpbWVsaW5lKHRpbWVsaW5lKTsKKyAgICAgICAgbGV0
IHBhdGhDb21wb25lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQoZGlzcGxheU5hbWUsIGljb25DbGFzc05hbWUsIHRpbWVsaW5lKTsKICAgICAgICAgcGF0aENv
bXBvbmVudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LkV2ZW50LlNpYmxpbmdXYXNTZWxlY3RlZCwgdGhpcy5fcGF0aENvbXBvbmVudFNlbGVj
dGVkLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcGF0aENvbXBvbmVudE1hcC5zZXQodGltZWxpbmUs
IHBhdGhDb21wb25lbnQpOwogCiAgICAgICAgIHRoaXMuX3RpbWVsaW5lQ291bnRDaGFuZ2VkKCk7
CiAgICAgfQogCi0gICAgX3RpbWVsaW5lUmVtb3ZlZChldmVudCkKKyAgICBfaW5zdHJ1bWVudFJl
bW92ZWQoZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdGltZWxpbmUgPSBldmVudC5kYXRhLnRp
bWVsaW5lOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOworICAgICAgICBsZXQgaW5zdHJ1bWVudCA9IGV2
ZW50LmRhdGEuaW5zdHJ1bWVudDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaW5zdHJ1bWVudCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50KTsKKworICAgICAgICBsZXQgdGltZWxp
bmUgPSB0aGlzLl9yZWNvcmRpbmcudGltZWxpbmVGb3JJbnN0cnVtZW50KGluc3RydW1lbnQpOwog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90aW1lbGluZVZpZXdNYXAuaGFzKHRpbWVsaW5l
KSwgdGltZWxpbmUpOwogCi0gICAgICAgIHZhciB0aW1lbGluZVZpZXcgPSB0aGlzLl90aW1lbGlu
ZVZpZXdNYXAudGFrZSh0aW1lbGluZSk7CisgICAgICAgIGxldCB0aW1lbGluZVZpZXcgPSB0aGlz
Ll90aW1lbGluZVZpZXdNYXAudGFrZSh0aW1lbGluZSk7CiAgICAgICAgIGlmICh0aGlzLmN1cnJl
bnRUaW1lbGluZVZpZXcgPT09IHRpbWVsaW5lVmlldykKICAgICAgICAgICAgIHRoaXMuc2hvd092
ZXJ2aWV3VGltZWxpbmVWaWV3KCk7CiAgICAgICAgIGlmICh0aW1lbGluZS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SZW5kZXJpbmdGcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lU2lkZWJh
clBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuanMKaW5kZXggZTkwNmI4MS4uMzdiNzQ0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVTaWRlYmFy
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVTaWRlYmFyUGFuZWwuanMKQEAgLTczLDEwICs3Myw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVNpZGViYXJQYW5lbCA9IGNsYXNzIFRpbWVsaW5lU2lkZWJhclBhbmVsIGV4dGVuZHMg
V2ViSW5zcGVjCiAKICAgICAgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcCA9IG5ldyBN
YXA7CiAKLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBUaW1lbGluZUFnZW50LkV2
ZW50VHlwZS5SZW5kZXJpbmdGcmFtZSBkaWQgbm90IGV4aXN0LgotICAgICAgICB0aGlzLl9yZW5k
ZXJpbmdGcmFtZXNTdXBwb3J0ZWQgPSB3aW5kb3cuVGltZWxpbmVBZ2VudCAmJiBUaW1lbGluZUFn
ZW50LkV2ZW50VHlwZS5SZW5kZXJpbmdGcmFtZTsKLQotICAgICAgICBpZiAodGhpcy5fcmVuZGVy
aW5nRnJhbWVzU3VwcG9ydGVkKSB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuRlBTSW5zdHJ1
bWVudC5zdXBwb3J0ZWQoKSkgewogICAgICAgICAgICAgdmFyIHRpbWVsaW5lc05hdmlnYXRpb25J
dGVtID0gbmV3IFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5WaWV3TW9kZS5UaW1lbGluZXMsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiVGltZWxpbmVzIikpCiAgICAgICAgICAgICB2YXIgcmVuZGVyaW5nRnJhbWVz
TmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0oV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlZpZXdNb2RlLlJlbmRlcmluZ0Zy
YW1lcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5kZXJpbmcgRnJhbWVzIikpCiAgICAgICAg
ICAgICB0aGlzLl92aWV3TW9kZU5hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIobnVsbCwgW3RpbWVsaW5lc05hdmlnYXRpb25JdGVtLCByZW5kZXJpbmdGcmFtZXNO
YXZpZ2F0aW9uSXRlbV0sICJ0YWJsaXN0Iik7CkBAIC0xODIsNiArMTc5LDQwIEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbCA9IGNsYXNzIFRpbWVsaW5lU2lkZWJhclBhbmVsIGV4
dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIHRoaXMuX3RvZ2dsZU5ld1JlY29yZGluZ1Nob3J0Y3V0
LmltcGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQgPSBmYWxzZTsKICAgICB9CiAKKyAgICAvLyBTdGF0
aWMKKworICAgIHN0YXRpYyBkaXNwbGF5TmFtZUZvclRpbWVsaW5lKHRpbWVsaW5lKQorICAgIHsK
KyAgICAgICAgc3dpdGNoICh0aW1lbGluZS50eXBlKSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yazoKKyAgICAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsgUmVxdWVzdHMiKTsKKyAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQ6CisgICAgICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQgJiBSZW5kZXJpbmciKTsKKyAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQ6CisgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJKYXZhU2NyaXB0ICYgRXZlbnRzIik7CisgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJhbWU6
CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5kZXJpbmcgRnJh
bWVzIik7CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIFRpbWVs
aW5lIHR5cGU6IiwgdGltZWxpbmUudHlwZSk7CisgICAgfQorCisgICAgc3RhdGljIGljb25DbGFz
c05hbWVGb3JUaW1lbGluZSh0aW1lbGluZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGltZWxp
bmUudHlwZSkgeworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBl
Lk5ldHdvcms6CisgICAgICAgICAgICByZXR1cm4gIm5ldHdvcmstaWNvbiI7CisgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0OgorICAgICAgICAgICAg
cmV0dXJuICJjb2xvcnMtaWNvbiI7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkLlR5cGUuU2NyaXB0OgorICAgICAgICAgICAgcmV0dXJuICJzY3JpcHQtaWNvbiI7Cisg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJh
bWU6CisgICAgICAgICAgICByZXR1cm4gInJlbmRlcmluZy1mcmFtZS1pY29uIjsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gVGltZWxpbmUgdHlwZToiLCB0aW1l
bGluZS50eXBlKTsKKyAgICB9CisKICAgICAvLyBQdWJsaWMKIAogICAgIHNob3duKCkKQEAgLTM2
Niw3ICszOTcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwgPSBjbGFzcyBU
aW1lbGluZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgdXBkYXRlRnJhbWVT
ZWxlY3Rpb24oc3RhcnRGcmFtZUluZGV4LCBlbmRGcmFtZUluZGV4KQogICAgIHsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoc3RhcnRGcmFtZUluZGV4IDw9IGVuZEZyYW1lSW5kZXgpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChzdGFydEZyYW1lSW5kZXggPD0gZW5kRnJhbWVJbmRleCwgc3RhcnRG
cmFtZUluZGV4LCBlbmRGcmFtZUluZGV4KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy52
aWV3TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlZpZXdNb2RlLlJl
bmRlcmluZ0ZyYW1lcywgdGhpcy5fdmlld01vZGUpOwogICAgICAgICBpZiAodGhpcy5fc3RhcnRG
cmFtZUluZGV4ID09PSBzdGFydEZyYW1lSW5kZXggJiYgdGhpcy5fZW5kRnJhbWVJbmRleCA9PT0g
ZW5kRnJhbWVJbmRleCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUxMCw3ICs1NDEsNyBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwgPSBjbGFzcyBUaW1lbGluZVNpZGViYXJQ
YW5lbCBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlzLl9yZXN0b3JlZFNob3dpbmdUaW1l
bGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY29va2llW1dlYkluc3BlY3Rvci5UaW1lbGluZVNp
ZGViYXJQYW5lbC5TaG93aW5nVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlld0Nvb2tpZUtleV07
CiAKICAgICAgICAgdmFyIHNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRpZmllciA9IGNvb2tpZVtX
ZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVu
dGlmaWVyQ29va2llS2V5XTsKLSAgICAgICAgaWYgKHNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRp
ZmllciA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJhbWUg
JiYgIXRoaXMuX3JlbmRlcmluZ0ZyYW1lc1N1cHBvcnRlZCkKKyAgICAgICAgaWYgKHNlbGVjdGVk
VGltZWxpbmVWaWV3SWRlbnRpZmllciA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5
cGUuUmVuZGVyaW5nRnJhbWUgJiYgIVdlYkluc3BlY3Rvci5GUFNJbnN0cnVtZW50LnN1cHBvcnRl
ZCgpKQogICAgICAgICAgICAgc2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVudGlmaWVyID0gbnVsbDsK
IAogICAgICAgICBpZiAoc2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVudGlmaWVyICYmIHRoaXMuX2Rp
c3BsYXllZFJlY29yZGluZy50aW1lbGluZXMuaGFzKHNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRp
ZmllcikpCkBAIC02NjksOCArNzAwLDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBh
bmVsID0gY2xhc3MgVGltZWxpbmVTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAg
ICAgdmFyIG9sZFJlY29yZGluZyA9IHRoaXMuX2Rpc3BsYXllZFJlY29yZGluZyB8fCBudWxsOwog
CiAgICAgICAgIGlmIChvbGRSZWNvcmRpbmcpIHsKLSAgICAgICAgICAgIG9sZFJlY29yZGluZy5y
ZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5U
aW1lbGluZUFkZGVkLCB0aGlzLl90aW1lbGluZUFkZGVkLCB0aGlzKTsKLSAgICAgICAgICAgIG9s
ZFJlY29yZGluZy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZGluZy5FdmVudC5UaW1lbGluZVJlbW92ZWQsIHRoaXMuX3RpbWVsaW5lUmVtb3ZlZCwgdGhpcyk7
CisgICAgICAgICAgICBvbGRSZWNvcmRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuSW5zdHJ1bWVudEFkZGVkLCB0aGlzLl9pbnN0cnVt
ZW50QWRkZWQsIHRoaXMpOworICAgICAgICAgICAgb2xkUmVjb3JkaW5nLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50Lkluc3RydW1lbnRSZW1v
dmVkLCB0aGlzLl9pbnN0cnVtZW50UmVtb3ZlZCwgdGhpcyk7CiAKICAgICAgICAgICAgIC8vIERl
c3Ryb3kgdHJlZSBlbGVtZW50cyBpbiBvbmUgb3BlcmF0aW9uIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IGZpeHVwcy4KICAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLnJlbW92ZUNo
aWxkcmVuKCk7CkBAIC02NzgsMTEgKzcwOSwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRl
YmFyUGFuZWwgPSBjbGFzcyBUaW1lbGluZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlYwog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZGlzcGxheWVkUmVjb3JkaW5nID0gcmVjb3JkaW5n
OwotICAgICAgICB0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuVGltZWxpbmVBZGRlZCwgdGhpcy5fdGlt
ZWxpbmVBZGRlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX2Rpc3BsYXllZFJlY29yZGluZy5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lbGlu
ZVJlbW92ZWQsIHRoaXMuX3RpbWVsaW5lUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2Rp
c3BsYXllZFJlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZy5FdmVudC5JbnN0cnVtZW50QWRkZWQsIHRoaXMuX2luc3RydW1lbnRBZGRlZCwgdGhp
cyk7CisgICAgICAgIHRoaXMuX2Rpc3BsYXllZFJlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5JbnN0cnVtZW50UmVtb3ZlZCwgdGhp
cy5faW5zdHJ1bWVudFJlbW92ZWQsIHRoaXMpOwogCi0gICAgICAgIGZvciAodmFyIHRpbWVsaW5l
IG9mIHJlY29yZGluZy50aW1lbGluZXMudmFsdWVzKCkpCi0gICAgICAgICAgICB0aGlzLl90aW1l
bGluZUFkZGVkKHRpbWVsaW5lKTsKKyAgICAgICAgZm9yIChsZXQgaW5zdHJ1bWVudCBvZiByZWNv
cmRpbmcuaW5zdHJ1bWVudHMpCisgICAgICAgICAgICB0aGlzLl9pbnN0cnVtZW50QWRkZWQoaW5z
dHJ1bWVudCk7CiAKICAgICAgICAgLy8gU2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBpbmNhc2Ugd2Ug
bmVlZCB0byByZXN0b3JlIGl0IHRvIGEgbmV3IHJlY29yZGluZy4KICAgICAgICAgdmFyIGNvb2tp
ZSA9IHt9OwpAQCAtNzE3LDEzICs3NDgsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJh
clBhbmVsID0gY2xhc3MgVGltZWxpbmVTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKICAg
ICAgICAgdGhpcy5fcmVjb3JkaW5nU2VsZWN0ZWQoV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdl
ci5hY3RpdmVSZWNvcmRpbmcpOwogICAgIH0KIAotICAgIF90aW1lbGluZUFkZGVkKHRpbWVsaW5l
T3JFdmVudCkKKyAgICBfaW5zdHJ1bWVudEFkZGVkKGluc3RydW1lbnRPckV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIHRpbWVsaW5lID0gdGltZWxpbmVPckV2ZW50OwotICAgICAgICBpZiAoISh0
aW1lbGluZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSkpCi0gICAgICAgICAgICB0
aW1lbGluZSA9IHRpbWVsaW5lT3JFdmVudC5kYXRhLnRpbWVsaW5lOworICAgICAgICBsZXQgaW5z
dHJ1bWVudCA9IGluc3RydW1lbnRPckV2ZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluc3Ry
dW1lbnQgPyBpbnN0cnVtZW50T3JFdmVudCA6IGluc3RydW1lbnRPckV2ZW50LmRhdGEuaW5zdHJ1
bWVudDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaW5zdHJ1bWVudCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5JbnN0cnVtZW50LCBpbnN0cnVtZW50KTsKIAotICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aW1lbGluZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwor
ICAgICAgICBsZXQgdGltZWxpbmUgPSB0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcudGltZWxpbmVG
b3JJbnN0cnVtZW50KGluc3RydW1lbnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5f
dGltZWxpbmVUcmVlRWxlbWVudE1hcC5oYXModGltZWxpbmUpLCB0aW1lbGluZSk7CiAKICAgICAg
ICAgaWYgKHRpbWVsaW5lLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBl
LlJlbmRlcmluZ0ZyYW1lKSB7CkBAIC03MzEsOSArNzYxLDExIEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbCA9IGNsYXNzIFRpbWVsaW5lU2lkZWJhclBhbmVsIGV4dGVuZHMgV2Vi
SW5zcGVjCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgdGlt
ZWxpbmVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFt0
aW1lbGluZS5pY29uQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
TGFyZ2VJY29uU3R5bGVDbGFzc10sIHRpbWVsaW5lLmRpc3BsYXlOYW1lLCBudWxsLCB0aW1lbGlu
ZSk7Ci0gICAgICAgIHZhciB0b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbG9zZSAl
cyB0aW1lbGluZSB2aWV3IikuZm9ybWF0KHRpbWVsaW5lLmRpc3BsYXlOYW1lKTsKLSAgICAgICAg
dmFyIGJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24odXNl
U1ZHU3ltYm9sKCJJbWFnZXMvQ2xvc2VMYXJnZS5zdmciLCAiY2xvc2UtYnV0dG9uIiwgdG9vbHRp
cCkpOworICAgICAgICBsZXQgZGlzcGxheU5hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRl
YmFyUGFuZWwuZGlzcGxheU5hbWVGb3JUaW1lbGluZSh0aW1lbGluZSk7CisgICAgICAgIGxldCBp
Y29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLmljb25DbGFz
c05hbWVGb3JUaW1lbGluZSh0aW1lbGluZSk7CisgICAgICAgIGxldCB0aW1lbGluZVRyZWVFbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQoW2ljb25DbGFzc05hbWUs
IFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5MYXJnZUljb25TdHlsZUNsYXNzXSwg
ZGlzcGxheU5hbWUsIG51bGwsIHRpbWVsaW5lKTsKKyAgICAgICAgbGV0IHRvb2x0aXAgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNsb3NlICVzIHRpbWVsaW5lIHZpZXciKS5mb3JtYXQoZGlzcGxh
eU5hbWUpOworICAgICAgICBsZXQgYnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVu
dFN0YXR1c0J1dHRvbih1c2VTVkdTeW1ib2woIkltYWdlcy9DbG9zZUxhcmdlLnN2ZyIsICJjbG9z
ZS1idXR0b24iLCB0b29sdGlwKSk7CiAgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5FdmVudC5DbGlja2VkLCB0aGlzLnNo
b3dUaW1lbGluZU92ZXJ2aWV3LCB0aGlzKTsKICAgICAgICAgdGltZWxpbmVUcmVlRWxlbWVudC5z
dGF0dXMgPSBidXR0b24uZWxlbWVudDsKIApAQCAtNzQzLDEwICs3NzUsMTIgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsID0gY2xhc3MgVGltZWxpbmVTaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fdGltZWxpbmVDb3VudENoYW5nZWQoKTsKICAg
ICB9CiAKLSAgICBfdGltZWxpbmVSZW1vdmVkKGV2ZW50KQorICAgIF9pbnN0cnVtZW50UmVtb3Zl
ZChldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB0aW1lbGluZSA9IGV2ZW50LmRhdGEudGltZWxp
bmU7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7CisgICAgICAgIGxldCBpbnN0cnVtZW50ID0gZXZlbnQu
ZGF0YS5pbnN0cnVtZW50OworICAgICAgICBjb25zb2xlLmFzc2VydChpbnN0cnVtZW50IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkluc3RydW1lbnQsIGluc3RydW1lbnQpOworCisgICAgICAgIGxl
dCB0aW1lbGluZSA9IHRoaXMuX2Rpc3BsYXllZFJlY29yZGluZy50aW1lbGluZUZvckluc3RydW1l
bnQoaW5zdHJ1bWVudCk7CiAKICAgICAgICAgaWYgKHRpbWVsaW5lLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlJlbmRlcmluZ0ZyYW1lKSB7CiAgICAgICAgICAgICB0
aW1lbGluZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5U
aW1lc1VwZGF0ZWQsIHRoaXMuX3JlbmRlcmluZ0ZyYW1lVGltZWxpbmVUaW1lc1VwZGF0ZWQsIHRo
aXMpOwpAQCAtNzU1LDkgKzc4OSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bCA9IGNsYXNzIFRpbWVsaW5lU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5oYXModGltZWxp
bmUpLCB0aW1lbGluZSk7CiAKLSAgICAgICAgdmFyIHRpbWVsaW5lVHJlZUVsZW1lbnQgPSB0aGlz
Ll90aW1lbGluZVRyZWVFbGVtZW50TWFwLnRha2UodGltZWxpbmUpOwotICAgICAgICB2YXIgc2hv
dWxkU3VwcHJlc3NPbkRlc2VsZWN0ID0gZmFsc2U7Ci0gICAgICAgIHZhciBzaG91bGRTdXBwcmVz
c1NlbGVjdFNpYmxpbmcgPSB0cnVlOworICAgICAgICBsZXQgdGltZWxpbmVUcmVlRWxlbWVudCA9
IHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAudGFrZSh0aW1lbGluZSk7CisgICAgICAgIGxl
dCBzaG91bGRTdXBwcmVzc09uRGVzZWxlY3QgPSBmYWxzZTsKKyAgICAgICAgbGV0IHNob3VsZFN1
cHByZXNzU2VsZWN0U2libGluZyA9IHRydWU7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVP
dXRsaW5lLnJlbW92ZUNoaWxkKHRpbWVsaW5lVHJlZUVsZW1lbnQsIHNob3VsZFN1cHByZXNzT25E
ZXNlbGVjdCwgc2hvdWxkU3VwcHJlc3NTZWxlY3RTaWJsaW5nKTsKICAgICAgICAgdGhpcy5fdGlt
ZWxpbmVUcmVlRWxlbWVudE1hcC5kZWxldGUodGltZWxpbmUpOwogCkBAIC04MzUsNyArODY5LDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsID0gY2xhc3MgVGltZWxpbmVTaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIF9jaGFuZ2VWaWV3TW9kZShtb2RlLCBz
ZWxlY3RlZEJ5VXNlcikKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcmVuZGVyaW5nRnJhbWVz
U3VwcG9ydGVkIHx8IHRoaXMuX3ZpZXdNb2RlID09PSBtb2RlKQorICAgICAgICBpZiAoIVdlYklu
c3BlY3Rvci5GUFNJbnN0cnVtZW50LnN1cHBvcnRlZCgpIHx8IHRoaXMuX3ZpZXdNb2RlID09PSBt
b2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3ZpZXdNb2RlID0gbW9k
ZTsKQEAgLTEwMjIsMTAgKzEwNTYsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwuVGltZWxpbmVFdmVudHNUaXRsZUJhclN0eWxlQ2xhc3MgPSAidGltZWxpbmUtZQogV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lc0NvbnRlbnRDb250YWluZXJTdHls
ZUNsYXNzID0gInRpbWVsaW5lcy1jb250ZW50IjsKIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5MYXJnZUljb25TdHlsZUNsYXNzID0gImxhcmdlIjsKIFdlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbC5TdG9wd2F0Y2hJY29uU3R5bGVDbGFzcyA9ICJzdG9wd2F0Y2gtaWNv
biI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuTmV0d29ya0ljb25TdHlsZUNs
YXNzID0gIm5ldHdvcmstaWNvbiI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
Q29sb3JzSWNvblN0eWxlQ2xhc3MgPSAiY29sb3JzLWljb24iOwotV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLlNjcmlwdEljb25TdHlsZUNsYXNzID0gInNjcmlwdC1pY29uIjsKLVdl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZW5kZXJpbmdGcmFtZUljb25TdHlsZUNs
YXNzID0gInJlbmRlcmluZy1mcmFtZS1pY29uIjsKIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3U2hvd2luZ1N0eWxlQ2xhc3MgPSAi
dGltZWxpbmUtcmVjb3JkaW5nLWNvbnRlbnQtdmlldy1zaG93aW5nIjsKIAogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLlNob3dpbmdUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
Q29va2llS2V5ID0gInRpbWVsaW5lLXNpZGViYXItcGFuZWwtc2hvd2luZy10aW1lbGluZS1yZWNv
cmRpbmctY29udGVudC12aWV3IjsK
</data>
<flag name="review"
          id="290742"
          type_id="1"
          status="+"
          setter="bburg"
    />
    <flag name="commit-queue"
          id="290743"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>