<?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>31784</bug_id>
          
          <creation_ts>2009-11-22 04:32:37 -0800</creation_ts>
          <short_desc>Web Inspector: Reimplement TimelinePanel to make it scale</short_desc>
          <delta_ts>2009-11-22 10:25:24 -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 (Deprecated)</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165704</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-22 04:32:37 -0800</bug_when>
    <thetext>Today instrumenting 30 seconds of cnn.com or techcrunch.com makes timeline unresponsive. The reason is that several thousands or recurds result in proportional number of elements attached to the dom.

What this change does:
- Extracts grid and overview classes into separate files
- Makes timeline create only divs for visible rows
- It makes timeline really fast and scalable. We can further optimize it via bucketing events by time if that is needed (like in order to handle &gt;100K entries).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165705</commentid>
    <comment_count>1</comment_count>
      <attachid>43675</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-22 04:35:53 -0800</bug_when>
    <thetext>Created attachment 43675
[PATCH] the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165716</commentid>
    <comment_count>2</comment_count>
      <attachid>43675</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-22 07:59:30 -0800</bug_when>
    <thetext>Comment on attachment 43675
[PATCH] the patch.

&gt; +        var visibleTop = this._containerElement.scrollTop;
&gt; +        var visibleBottom = visibleTop + this._containerElement.clientHeight;
&gt; +        var rowHeight = 18;
&gt; +        var startIndex = Math.max(0, Math.floor(visibleTop / rowHeight) - 1);
&gt; +        var endIndex = Math.min(recordsInWindow.length, Math.ceil(visibleBottom / rowHeight));

Use const instead of var for these.


&gt; +        var top = (startIndex * rowHeight) + &quot;px&quot;;

Use const.


&gt;  .sidebar {
&gt;      position: absolute;
&gt;      top: 0;
&gt; +    min-height: 100%;
&gt;      left: 0;
&gt; -    bottom: 0;

Why was this needed?


&gt;  .sidebar-resizer-vertical {
&gt;      position: absolute;
&gt;      top: 0;
&gt; -    bottom: 0;
&gt; +    min-height: 100%;

Ditto.


&gt; +.timeline-tree-section {

Is this class uses in your patch? What is this for?


&gt; +    color: rgb(92, 110, 129);
&gt; +    font-family: Helvetica, Arial, sans-serif;

Why is this Helvetica? We don&apos;t use Helvetica except in a few rare places. Otherwise the font is inherited from the body.


&gt; +    position: relative;

Why relative, so it have positioned children?


&gt; +    text-shadow: rgba(255, 255, 255, 0.746094) 0px 1px 0px;

Just use 0.75 instead of 0.746094. The CSS parser ignores the extra precision anyway.


&gt; +    font-family: Helvetica, Arial, sans-serif;

Why specify the font?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165737</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-22 10:17:12 -0800</bug_when>
    <thetext>&gt; Use const instead of var for these.
&gt; 

Done.

&gt; 
&gt; Use const.
&gt; 

Done.

&gt; 
&gt; &gt;  .sidebar {
&gt; &gt;      position: absolute;
&gt; &gt;      top: 0;
&gt; &gt; +    min-height: 100%;
&gt; &gt;      left: 0;
&gt; &gt; -    bottom: 0;
&gt; 
&gt; Why was this needed?
&gt; 

I shared an image on IRC.

&gt; 
&gt; &gt; +.timeline-tree-section {
&gt; 
&gt; Is this class uses in your patch? What is this for?
&gt; 

Should not be here - from a previous version of patch. Removed.


&gt; Why is this Helvetica? We don&apos;t use Helvetica except in a few rare places.
&gt; Otherwise the font is inherited from the body.
&gt; Why relative, so it have positioned children?

I was experimenting and forgot to delete. from a previous version of patch. Removed.


&gt; &gt; +    text-shadow: rgba(255, 255, 255, 0.746094) 0px 1px 0px;
&gt; 
&gt; Just use 0.75 instead of 0.746094. The CSS parser ignores the extra precision
&gt; anyway.
&gt; 

That was a copypaste from inspector. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165739</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-22 10:25:24 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/inspector/timeline-test.js
	M	WebCore/ChangeLog
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/inspector/front-end/AbstractTimelinePanel.js
	A	WebCore/inspector/front-end/TimelineGrid.js
	A	WebCore/inspector/front-end/TimelineOverviewPane.js
	M	WebCore/inspector/front-end/TimelinePanel.js
	M	WebCore/inspector/front-end/WebKit.qrc
	M	WebCore/inspector/front-end/inspector.css
	M	WebCore/inspector/front-end/inspector.html
Committed r51296</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43675</attachid>
            <date>2009-11-22 04:35:53 -0800</date>
            <delta_ts>2009-11-22 07:59:29 -0800</delta_ts>
            <desc>[PATCH] the patch.</desc>
            <filename>timeline_scales</filename>
            <type>text/plain</type>
            <size>65893</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDk1MDRiMi4uNjQxNmZmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAwOS0xMS0yMiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWltcGxlbWVudCBUaW1lbGluZVBh
bmVsIHRvIG1ha2UgaXQgZmFzdDoKKyAgICAgICAgLSBFeHRyYWN0IGdyaWQgYW5kIG92ZXJ2aWV3
IGludG8gc2VwYXJhdGUgZmlsZXMKKyAgICAgICAgLSBNYWtlIHRpbWVsaW5lIGNyZWF0ZSBvbmx5
IGRpdnMgZm9yIHZpc2libGUgcm93cworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMTc4NAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvQWJzdHJhY3RUaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5cGUuY3JlYXRlSW50ZXJmYWNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lUGFuZWwucHJvdG90eXBlLnJlZnJlc2gp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5cGUu
c2V0IGNhbGN1bGF0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVH
cmlkLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUdyaWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lR3JpZC5wcm90b3R5cGUuZ2V0IGl0ZW1zR3JhcGhz
RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVHcmlkLnByb3RvdHlwZS51
cGRhdGVEaXZpZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVHcmlkLnByb3Rv
dHlwZS5hZGRFdmVudERpdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lR3Jp
ZC5wcm90b3R5cGUuc2V0U2Nyb2xsQW5kRGl2aWRlclRvcCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fb25DaGVja2JveENsaWNrZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5zZXRT
aWRlYmFyV2lkdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5l
LnByb3RvdHlwZS51cGRhdGVNYWluVmlld1dpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fcmVzaXplV2luZG93KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUuX3dpbmRvd1Jl
c2l6ZURyYWdnaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFu
ZS5wcm90b3R5cGUuX2RyYWdXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
T3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fd2luZG93RHJhZ2dpbmcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fcmVzaXplV2luZG93TGVmdCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlLl9y
ZXNpemVXaW5kb3dSaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d1BhbmUucHJvdG90eXBlLl9zZXRXaW5kb3dQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlLl9lbmRXaW5kb3dEcmFnZ2luZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0NhbGN1bGF0b3IpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yLnByb3RvdHlwZS5jb21w
dXRlQmFyR3JhcGhQZXJjZW50YWdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVP
dmVydmlld0NhbGN1bGF0b3IucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3VsYXRvci5wcm90b3R5cGUudXBkYXRlQm91bmRhcmllcyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0NhbGN1bGF0b3IucHJvdG90
eXBlLmdldCBib3VuZGFyeVNwYW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdDYWxjdWxhdG9yLnByb3RvdHlwZS5mb3JtYXRWYWx1ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGltZWxpbmVDYXRlZ29yeVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZUNhdGVnb3J5VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5R3JhcGgpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlHcmFwaC5wcm90b3R5cGUuZ2V0IGdyYXBoRWxlbWVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeUdyYXBoLnByb3RvdHlwZS5h
ZGRDaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeUdyYXBoLnBy
b3RvdHlwZS5jbGVhckNodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRl
Z29yeUdyYXBoLnByb3RvdHlwZS5zZXQgZGltbWVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3Rv
Z2dsZVRpbWVsaW5lQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5wcm90b3R5cGUuYWRkUmVjb3JkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2Zvcm1hdFJlY29yZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRoKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS51cGRhdGVNYWluVmll
d1dpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5y
ZXNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLnJl
c2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5zaG93
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fb25TY3Jv
bGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9zY2hl
ZHVsZVJlZnJlc2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90
eXBlLl9yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3Rv
dHlwZS5fcmVmcmVzaFJlY29yZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlLl9hZGp1c3RTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVDYXRlZ29yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxj
dWxhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IucHJvdG90
eXBlLmdldCBib3VuZGFyeVNwYW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkTGlzdFJvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93
LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
R3JhcGhSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cu
cHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQu
cXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDA5LTExLTE4ICBH
aXJpc2ggUmFtYWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YzUxYTYwLi40MWZiNGMwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MzY2OCw2ICszNjY4LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RD
b250cm9sbGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9t
cHQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVBZ2VudC5q
cycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFu
ZS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUdyaWQuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJl
ZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcycs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4NWM1ZjZlLi5jNGRmZTA0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQyNDk0LDYgKzQyNDk0
LDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFRpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzIg0KKwkJ
CQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcVGltZWxpbmVHcmlkLmpzIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+
DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRc
VGltZWxpbmVQYW5lbC5qcyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BYnN0cmFjdFRpbWVsaW5lUGFuZWwuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQWJzdHJhY3RUaW1lbGluZVBhbmVsLmpzCmluZGV4IGVi
MTY2MDIuLjY1NWE0YTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
YnN0cmFjdFRpbWVsaW5lUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0Fic3RyYWN0VGltZWxpbmVQYW5lbC5qcwpAQCAtODEsNyArODEsOCBAQCBXZWJJbnNwZWN0b3Iu
QWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zdW1tYXJ5
QmFyLmVsZW1lbnQuaWQgPSAicmVzb3VyY2VzLXN1bW1hcnkiOwogICAgICAgICB0aGlzLl9jb250
YWluZXJDb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnN1bW1hcnlCYXIuZWxlbWVudCk7
CiAKLSAgICAgICAgdGhpcy5fdGltZWxpbmVHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZUdyaWQodGhpcy5fY29udGFpbmVyQ29udGVudEVsZW1lbnQpOworICAgICAgICB0aGlzLl90aW1l
bGluZUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lR3JpZCgpOworICAgICAgICB0aGlz
Ll9jb250YWluZXJDb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZUdyaWQu
ZWxlbWVudCk7CiAgICAgICAgIHRoaXMuaXRlbXNHcmFwaHNFbGVtZW50ID0gdGhpcy5fdGltZWxp
bmVHcmlkLml0ZW1zR3JhcGhzRWxlbWVudDsKICAgICB9LAogCkBAIC0zMDAsNyArMzAxLDcgQEAg
V2ViSW5zcGVjdG9yLkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgaWYgKGJvdW5kYXJpZXNDaGFuZ2VkKSB7CiAgICAgICAgICAgICAvLyBUaGUgYm91bmRhcmll
cyBjaGFuZ2VkLCBzbyBhbGwgaXRlbSBncmFwaHMgYXJlIHN0YWxlLgotICAgICAgICAgICAgdGhp
cy5fc3RhbGVJdGVtcyA9IHRoaXMuX2l0ZW1zOworICAgICAgICAgICAgdGhpcy5fc3RhbGVJdGVt
cyA9IHRoaXMuX2l0ZW1zLnNsaWNlKCk7CiAgICAgICAgICAgICBzdGFsZUl0ZW1zTGVuZ3RoID0g
dGhpcy5fc3RhbGVJdGVtcy5sZW5ndGg7CiAgICAgICAgIH0KIApAQCAtMzQ5LDcgKzM1MCw3IEBA
IFdlYkluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9jYWxjdWxhdG9yID0geDsKICAgICAgICAgdGhpcy5fY2FsY3VsYXRvci5yZXNldCgp
OwogCi0gICAgICAgIHRoaXMuX3N0YWxlSXRlbXMgPSB0aGlzLl9pdGVtczsKKyAgICAgICAgdGhp
cy5fc3RhbGVJdGVtcyA9IHRoaXMuX2l0ZW1zLnNsaWNlKCk7CiAgICAgICAgIHRoaXMucmVmcmVz
aCgpOwogICAgIH0sCiAKQEAgLTUwNiw3NCArNTA3LDMgQEAgV2ViSW5zcGVjdG9yLkFic3RyYWN0
VGltZWxpbmVDYXRlZ29yeS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLnRpdGxl
OwogICAgIH0KIH0KLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lR3JpZCA9IGZ1bmN0aW9uKGNvbnRh
aW5lcikKLXsKLSAgICB0aGlzLl9pdGVtc0dyYXBoc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9pdGVtc0dyYXBoc0VsZW1lbnQuaWQgPSAicmVzb3Vy
Y2VzLWdyYXBocyI7Ci0gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2l0ZW1zR3JhcGhz
RWxlbWVudCk7Ci0KLSAgICB0aGlzLl9kaXZpZGVyc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9kaXZpZGVyc0VsZW1lbnQuaWQgPSAicmVzb3VyY2Vz
LWRpdmlkZXJzIjsKLSAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fZGl2aWRlcnNFbGVt
ZW50KTsKLQotICAgIHRoaXMuX2V2ZW50RGl2aWRlcnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZXZlbnREaXZpZGVyc0VsZW1lbnQuaWQgPSAicmVz
b3VyY2VzLWV2ZW50LWRpdmlkZXJzIjsKLSAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5f
ZXZlbnREaXZpZGVyc0VsZW1lbnQpOwotCi0gICAgdGhpcy5fZGl2aWRlcnNMYWJlbEJhckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9kaXZpZGVyc0xh
YmVsQmFyRWxlbWVudC5pZCA9ICJyZXNvdXJjZXMtZGl2aWRlcnMtbGFiZWwtYmFyIjsKLSAgICBj
b250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQpOwotfQot
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVHcmlkLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgaXRlbXNH
cmFwaHNFbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc0dyYXBoc0Vs
ZW1lbnQ7Ci0gICAgfSwKLQotICAgIHVwZGF0ZURpdmlkZXJzOiBmdW5jdGlvbihmb3JjZSwgY2Fs
Y3VsYXRvcikKLSAgICB7Ci0gICAgICAgIHZhciBkaXZpZGVyQ291bnQgPSBNYXRoLnJvdW5kKHRo
aXMuX2RpdmlkZXJzRWxlbWVudC5vZmZzZXRXaWR0aCAvIDY0KTsKLSAgICAgICAgdmFyIHNsaWNl
ID0gY2FsY3VsYXRvci5ib3VuZGFyeVNwYW4gLyBkaXZpZGVyQ291bnQ7Ci0gICAgICAgIGlmICgh
Zm9yY2UgJiYgdGhpcy5fY3VycmVudERpdmlkZXJTbGljZSA9PT0gc2xpY2UpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5fY3VycmVudERpdmlkZXJTbGljZSA9IHNs
aWNlOwotCi0gICAgICAgIHRoaXMuX2RpdmlkZXJzRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwot
ICAgICAgICB0aGlzLl9ldmVudERpdmlkZXJzRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAg
ICAgICB0aGlzLl9kaXZpZGVyc0xhYmVsQmFyRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0g
ICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IGRpdmlkZXJDb3VudDsgKytpKSB7Ci0gICAgICAg
ICAgICB2YXIgZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAg
ICAgICAgZGl2aWRlci5jbGFzc05hbWUgPSAicmVzb3VyY2VzLWRpdmlkZXIiOwotICAgICAgICAg
ICAgaWYgKGkgPT09IGRpdmlkZXJDb3VudCkKLSAgICAgICAgICAgICAgICBkaXZpZGVyLmFkZFN0
eWxlQ2xhc3MoImxhc3QiKTsKLSAgICAgICAgICAgIGRpdmlkZXIuc3R5bGUubGVmdCA9ICgoaSAv
IGRpdmlkZXJDb3VudCkgKiAxMDApICsgIiUiOwotCi0gICAgICAgICAgICB0aGlzLl9kaXZpZGVy
c0VsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2aWRlci5jbG9uZU5vZGUoKSk7Ci0KLSAgICAgICAgICAg
IHZhciBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAg
bGFiZWwuY2xhc3NOYW1lID0gInJlc291cmNlcy1kaXZpZGVyLWxhYmVsIjsKLSAgICAgICAgICAg
IGlmICghaXNOYU4oc2xpY2UpKQotICAgICAgICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0g
Y2FsY3VsYXRvci5mb3JtYXRWYWx1ZShzbGljZSAqIGkpOwotICAgICAgICAgICAgZGl2aWRlci5h
cHBlbmRDaGlsZChsYWJlbCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX2RpdmlkZXJzTGFiZWxCYXJF
bGVtZW50LmFwcGVuZENoaWxkKGRpdmlkZXIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0sCi0KLSAgICBhZGRFdmVudERpdmlkZXI6IGZ1bmN0aW9uKGRpdmlkZXIpCi0g
ICAgewotICAgICAgICB0aGlzLl9ldmVudERpdmlkZXJzRWxlbWVudC5hcHBlbmRDaGlsZChkaXZp
ZGVyKTsKLSAgICB9LAotCi0gICAgc2V0U2Nyb2xsQW5kRGl2aWRlclRvcDogZnVuY3Rpb24oc2Ny
b2xsVG9wLCBkaXZpZGVyc1RvcCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2RpdmlkZXJzRWxlbWVu
dC5zdHlsZS50b3AgPSBzY3JvbGxUb3AgKyAicHgiOwotICAgICAgICB0aGlzLl9ldmVudERpdmlk
ZXJzRWxlbWVudC5zdHlsZS50b3AgPSBzY3JvbGxUb3AgKyAicHgiOwotICAgICAgICB0aGlzLl9k
aXZpZGVyc0xhYmVsQmFyRWxlbWVudC5zdHlsZS50b3AgPSBkaXZpZGVyc1RvcCArICJweCI7Ci0g
ICAgfQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
R3JpZC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUdyaWQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkOTRiNgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUdyaWQuanMKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBbnRob255IFJp
Y2F1ZCA8cmlrQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVHcmlkID0gZnVuY3Rpb24o
KQoreworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
CisgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50LmlkID0gInJlc291cmNlcy1ncmFw
aHMiOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pdGVtc0dyYXBoc0VsZW1l
bnQpOworCisgICAgdGhpcy5fZGl2aWRlcnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgdGhpcy5fZGl2aWRlcnNFbGVtZW50LmlkID0gInJlc291cmNlcy1kaXZp
ZGVycyI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RpdmlkZXJzRWxlbWVu
dCk7CisKKyAgICB0aGlzLl9ldmVudERpdmlkZXJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIHRoaXMuX2V2ZW50RGl2aWRlcnNFbGVtZW50LmlkID0gInJlc291
cmNlcy1ldmVudC1kaXZpZGVycyI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2V2ZW50RGl2aWRlcnNFbGVtZW50KTsKKworICAgIHRoaXMuX2RpdmlkZXJzTGFiZWxCYXJFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5fZGl2aWRlcnNM
YWJlbEJhckVsZW1lbnQuaWQgPSAicmVzb3VyY2VzLWRpdmlkZXJzLWxhYmVsLWJhciI7CisgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RpdmlkZXJzTGFiZWxCYXJFbGVtZW50KTsK
K30KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lR3JpZC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGl0
ZW1zR3JhcGhzRWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNHcmFw
aHNFbGVtZW50OworICAgIH0sCisKKyAgICB1cGRhdGVEaXZpZGVyczogZnVuY3Rpb24oZm9yY2Us
IGNhbGN1bGF0b3IpCisgICAgeworICAgICAgICB2YXIgZGl2aWRlckNvdW50ID0gTWF0aC5yb3Vu
ZCh0aGlzLl9kaXZpZGVyc0VsZW1lbnQub2Zmc2V0V2lkdGggLyA2NCk7CisgICAgICAgIHZhciBz
bGljZSA9IGNhbGN1bGF0b3IuYm91bmRhcnlTcGFuIC8gZGl2aWRlckNvdW50OworICAgICAgICBp
ZiAoIWZvcmNlICYmIHRoaXMuX2N1cnJlbnREaXZpZGVyU2xpY2UgPT09IHNsaWNlKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRoaXMuX2N1cnJlbnREaXZpZGVyU2xpY2Ug
PSBzbGljZTsKKworICAgICAgICB0aGlzLl9kaXZpZGVyc0VsZW1lbnQucmVtb3ZlQ2hpbGRyZW4o
KTsKKyAgICAgICAgdGhpcy5fZXZlbnREaXZpZGVyc0VsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsK
KyAgICAgICAgdGhpcy5fZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsK
KworICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBkaXZpZGVyQ291bnQ7ICsraSkgeworICAg
ICAgICAgICAgdmFyIGRpdmlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgICAgIGRpdmlkZXIuY2xhc3NOYW1lID0gInJlc291cmNlcy1kaXZpZGVyIjsKKyAgICAg
ICAgICAgIGlmIChpID09PSBkaXZpZGVyQ291bnQpCisgICAgICAgICAgICAgICAgZGl2aWRlci5h
ZGRTdHlsZUNsYXNzKCJsYXN0Iik7CisgICAgICAgICAgICBkaXZpZGVyLnN0eWxlLmxlZnQgPSAo
KGkgLyBkaXZpZGVyQ291bnQpICogMTAwKSArICIlIjsKKworICAgICAgICAgICAgdGhpcy5fZGl2
aWRlcnNFbGVtZW50LmFwcGVuZENoaWxkKGRpdmlkZXIuY2xvbmVOb2RlKCkpOworCisgICAgICAg
ICAgICB2YXIgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
ICAgIGxhYmVsLmNsYXNzTmFtZSA9ICJyZXNvdXJjZXMtZGl2aWRlci1sYWJlbCI7CisgICAgICAg
ICAgICBpZiAoIWlzTmFOKHNsaWNlKSkKKyAgICAgICAgICAgICAgICBsYWJlbC50ZXh0Q29udGVu
dCA9IGNhbGN1bGF0b3IuZm9ybWF0VmFsdWUoc2xpY2UgKiBpKTsKKyAgICAgICAgICAgIGRpdmlk
ZXIuYXBwZW5kQ2hpbGQobGFiZWwpOworCisgICAgICAgICAgICB0aGlzLl9kaXZpZGVyc0xhYmVs
QmFyRWxlbWVudC5hcHBlbmRDaGlsZChkaXZpZGVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgYWRkRXZlbnREaXZpZGVyOiBmdW5jdGlvbihkaXZpZGVy
KQorICAgIHsKKyAgICAgICAgdGhpcy5fZXZlbnREaXZpZGVyc0VsZW1lbnQuYXBwZW5kQ2hpbGQo
ZGl2aWRlcik7CisgICAgfSwKKworICAgIHNldFNjcm9sbEFuZERpdmlkZXJUb3A6IGZ1bmN0aW9u
KHNjcm9sbFRvcCwgZGl2aWRlcnNUb3ApCisgICAgeworICAgICAgICB0aGlzLl9kaXZpZGVyc0Vs
ZW1lbnQuc3R5bGUudG9wID0gc2Nyb2xsVG9wICsgInB4IjsKKyAgICAgICAgdGhpcy5fZXZlbnRE
aXZpZGVyc0VsZW1lbnQuc3R5bGUudG9wID0gc2Nyb2xsVG9wICsgInB4IjsKKyAgICAgICAgdGhp
cy5fZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQuc3R5bGUudG9wID0gZGl2aWRlcnNUb3AgKyAicHgi
OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZU92ZXJ2aWV3UGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZU92ZXJ2aWV3UGFuZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDc5
ZDRjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC0wLDAgKzEsMzc4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5l
T3ZlcnZpZXdQYW5lID0gZnVuY3Rpb24oY2F0ZWdvcmllcykKK3sKKyAgICB0aGlzLmVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLmVsZW1lbnQuaWQgPSAi
dGltZWxpbmUtb3ZlcnZpZXctcGFuZWwiOworCisgICAgdGhpcy5fY2F0ZWdvcmllcyA9IGNhdGVn
b3JpZXM7CisgICAgdGhpcy5fb3ZlcnZpZXdTaWRlYmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIHRoaXMuX292ZXJ2aWV3U2lkZWJhckVsZW1lbnQuaWQgPSAi
dGltZWxpbmUtb3ZlcnZpZXctc2lkZWJhciI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX292ZXJ2aWV3U2lkZWJhckVsZW1lbnQpOworCisgICAgdmFyIG92ZXJ2aWV3VHJlZUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIG92ZXJ2aWV3VHJlZUVs
ZW1lbnQuY2xhc3NOYW1lID0gInNpZGViYXItdHJlZSI7CisgICAgdGhpcy5fb3ZlcnZpZXdTaWRl
YmFyRWxlbWVudC5hcHBlbmRDaGlsZChvdmVydmlld1RyZWVFbGVtZW50KTsKKyAgICB2YXIgc2lk
ZWJhclRyZWUgPSBuZXcgVHJlZU91dGxpbmUob3ZlcnZpZXdUcmVlRWxlbWVudCk7CisKKyAgICB2
YXIgY2F0ZWdvcmllc1RyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyU2VjdGlv
blRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVElNRUxJTkVTIiksIHt9LCB0cnVl
KTsKKyAgICBjYXRlZ29yaWVzVHJlZUVsZW1lbnQuZXhwYW5kZWQgPSB0cnVlOworICAgIHNpZGVi
YXJUcmVlLmFwcGVuZENoaWxkKGNhdGVnb3JpZXNUcmVlRWxlbWVudCk7CisgICAgZm9yICh2YXIg
Y2F0ZWdvcnlOYW1lIGluIHRoaXMuX2NhdGVnb3JpZXMpIHsKKyAgICAgICAgdmFyIGNhdGVnb3J5
ID0gdGhpcy5fY2F0ZWdvcmllc1tjYXRlZ29yeU5hbWVdOworICAgICAgICBjYXRlZ29yaWVzVHJl
ZUVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5VHJl
ZUVsZW1lbnQoY2F0ZWdvcnksIHRoaXMuX29uQ2hlY2tib3hDbGlja2VkLmJpbmQodGhpcywgY2F0
ZWdvcnkpKSk7CisgICAgfQorCisgICAgdGhpcy5fb3ZlcnZpZXdHcmlkID0gbmV3IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUdyaWQoKTsKKyAgICB0aGlzLl9vdmVydmlld0dyaWQuZWxlbWVudC5pZCA9
ICJ0aW1lbGluZS1vdmVydmlldy1ncmlkIjsKKyAgICB0aGlzLl9vdmVydmlld0dyaWQuaXRlbXNH
cmFwaHNFbGVtZW50LmlkID0gInRpbWVsaW5lLW92ZXJ2aWV3LWdyYXBocyI7CisgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX292ZXJ2aWV3R3JpZC5lbGVtZW50KTsKKworICAgIHRo
aXMuX2NhdGVnb3J5R3JhcGhzID0ge307CisgICAgdmFyIGkgPSAwOworICAgIGZvciAodmFyIGNh
dGVnb3J5IGluIHRoaXMuX2NhdGVnb3JpZXMpIHsKKyAgICAgICAgdmFyIGNhdGVnb3J5R3JhcGgg
PSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlHcmFwaCh0aGlzLl9jYXRlZ29yaWVz
W2NhdGVnb3J5XSwgaSsrICUgMik7CisgICAgICAgIHRoaXMuX2NhdGVnb3J5R3JhcGhzW2NhdGVn
b3J5XSA9IGNhdGVnb3J5R3JhcGg7CisgICAgICAgIHRoaXMuX292ZXJ2aWV3R3JpZC5pdGVtc0dy
YXBoc0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2F0ZWdvcnlHcmFwaC5ncmFwaEVsZW1lbnQpOworICAg
IH0KKyAgICB0aGlzLl9vdmVydmlld0dyaWQuc2V0U2Nyb2xsQW5kRGl2aWRlclRvcCgwLCAwKTsK
KworICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5pZCA9ICJ0aW1lbGlu
ZS1vdmVydmlldy13aW5kb3ciOworICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9kcmFnV2luZG93LmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICB0aGlzLl9vdmVydmlld0dyaWQuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9v
dmVydmlld1dpbmRvd0VsZW1lbnQpOworCisgICAgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9sZWZ0UmVzaXplRWxlbWVu
dC5jbGFzc05hbWUgPSAidGltZWxpbmUtd2luZG93LXJlc2l6ZXIiOworICAgIHRoaXMuX2xlZnRS
ZXNpemVFbGVtZW50LnN0eWxlLmxlZnQgPSAwOworICAgIHRoaXMuX292ZXJ2aWV3R3JpZC5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRSZXNpemVFbGVtZW50KTsKKyAgICB0aGlzLl9sZWZ0
UmVzaXplRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9yZXNpemVX
aW5kb3cuYmluZCh0aGlzLCB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudCksIGZhbHNlKTsKKworICAg
IHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtd2lu
ZG93LXJlc2l6ZXIgdGltZWxpbmUtd2luZG93LXJlc2l6ZXItcmlnaHQiOworICAgIHRoaXMuX3Jp
Z2h0UmVzaXplRWxlbWVudC5zdHlsZS5yaWdodCA9IDA7CisgICAgdGhpcy5fb3ZlcnZpZXdHcmlk
LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRSZXNpemVFbGVtZW50KTsKKyAgICB0aGlz
Ll9yaWdodFJlc2l6ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5f
cmVzaXplV2luZG93LmJpbmQodGhpcywgdGhpcy5fcmlnaHRSZXNpemVFbGVtZW50KSwgZmFsc2Up
OworCisgICAgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5UaW1l
bGluZU92ZXJ2aWV3Q2FsY3VsYXRvcigpOworCisgICAgdmFyIHNlcGFyYXRvckVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBzZXBhcmF0b3JFbGVtZW50LmlkID0g
InRpbWVsaW5lLW92ZXJ2aWV3LXNlcGFyYXRvciI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHNlcGFyYXRvckVsZW1lbnQpOworCisgICAgdGhpcy53aW5kb3dMZWZ0ID0gMC4wOworICAg
IHRoaXMud2luZG93UmlnaHQgPSAxLjA7Cit9CisKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdQYW5lLnByb3RvdHlwZSA9IHsKKyAgICBfb25DaGVja2JveENsaWNrZWQ6IGZ1bmN0aW9u
IChjYXRlZ29yeSwgZXZlbnQpIHsKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKQor
ICAgICAgICAgICAgY2F0ZWdvcnkuaGlkZGVuID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNhdGVnb3J5LmhpZGRlbiA9IHRydWU7CisgICAgICAgIHRoaXMuX2NhdGVnb3J5R3Jh
cGhzW2NhdGVnb3J5Lm5hbWVdLmRpbW1lZCA9ICFldmVudC50YXJnZXQuY2hlY2tlZDsKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImZpbHRlciBjaGFuZ2VkIik7CisgICAg
fSwKKworICAgIHVwZGF0ZTogZnVuY3Rpb24ocmVjb3JkcykKKyAgICB7CisgICAgICAgIC8vIENs
ZWFyIHN1bW1hcnkgYmFycy4KKyAgICAgICAgdmFyIHRpbWVsaW5lcyA9IHt9OworICAgICAgICBm
b3IgKHZhciBjYXRlZ29yeSBpbiB0aGlzLl9jYXRlZ29yaWVzKSB7CisgICAgICAgICAgICB0aW1l
bGluZXNbY2F0ZWdvcnldID0gW107CisgICAgICAgICAgICB0aGlzLl9jYXRlZ29yeUdyYXBoc1tj
YXRlZ29yeV0uY2xlYXJDaHVua3MoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENyZWF0ZSBz
cGFyc2UgYXJyYXlzIHdpdGggMTAxIGNlbGxzIGVhY2ggdG8gZmlsbCB3aXRoIGNodW5rcyBmb3Ig
YSBnaXZlbiBjYXRlZ29yeS4KKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9yLnJlc2V0
KCk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCByZWNvcmRzLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9yLnVwZGF0ZUJvdW5kYXJpZXMocmVj
b3Jkc1tpXSk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc1tpXTsKKyAgICAgICAgICAg
IHZhciBwZXJjZW50YWdlcyA9IHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5jb21wdXRlQmFyR3Jh
cGhQZXJjZW50YWdlcyhyZWNvcmQpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZW5k
ID0gTWF0aC5yb3VuZChwZXJjZW50YWdlcy5lbmQpOworICAgICAgICAgICAgdmFyIGNhdGVnb3J5
TmFtZSA9IHJlY29yZC5jYXRlZ29yeS5uYW1lOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IE1h
dGgucm91bmQocGVyY2VudGFnZXMuc3RhcnQpOyBqIDw9IGVuZDsgKytqKQorICAgICAgICAgICAg
ICAgIHRpbWVsaW5lc1tjYXRlZ29yeU5hbWVdW2pdID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIENvbnZlcnQgc3BhcnNlIGFycmF5cyB0byBjb250aW51b3VzIHNlZ21lbnRzLCByZW5k
ZXIgZ3JhcGhzIGZvciBlYWNoLgorICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBpbiB0aGlzLl9j
YXRlZ29yaWVzKSB7CisgICAgICAgICAgICB2YXIgdGltZWxpbmUgPSB0aW1lbGluZXNbY2F0ZWdv
cnldOworICAgICAgICAgICAgd2luZG93LnRpbWVsaW5lU2F2ZWQgPSB0aW1lbGluZTsKKyAgICAg
ICAgICAgIHZhciBjaHVua1N0YXJ0ID0gLTE7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IDEwMTsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKHRpbWVsaW5lW2pdKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChjaHVua1N0YXJ0ID09PSAtMSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNodW5rU3RhcnQgPSBqOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChjaHVua1N0YXJ0ICE9PSAtMSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fY2F0ZWdvcnlHcmFwaHNbY2F0ZWdvcnldLmFkZENodW5rKGNodW5rU3RhcnQs
IGopOworICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtTdGFydCA9IC0xOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGNodW5rU3RhcnQgIT09IC0xKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY2F0ZWdv
cnlHcmFwaHNbY2F0ZWdvcnldLmFkZENodW5rKGNodW5rU3RhcnQsIDEwMCk7CisgICAgICAgICAg
ICAgICAgY2h1bmtTdGFydCA9IC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHRoaXMuX292ZXJ2aWV3R3JpZC51cGRhdGVEaXZpZGVycyh0cnVlLCB0aGlzLl9vdmVydmlld0Nh
bGN1bGF0b3IpOworICAgIH0sCisKKyAgICBzZXRTaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKHdpZHRo
KQorICAgIHsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdTaWRlYmFyRWxlbWVudC5zdHlsZS53aWR0
aCA9IHdpZHRoICsgInB4IjsKKyAgICB9LAorCisgICAgdXBkYXRlTWFpblZpZXdXaWR0aDogZnVu
Y3Rpb24od2lkdGgpCisgICAgeworICAgICAgICB0aGlzLl9vdmVydmlld0dyaWQuZWxlbWVudC5z
dHlsZS5sZWZ0ID0gd2lkdGggKyAicHgiOworICAgIH0sCisKKyAgICByZXNldDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9yLnJlc2V0KCk7CisgICAg
ICAgIHRoaXMuX292ZXJ2aWV3R3JpZC51cGRhdGVEaXZpZGVycyh0cnVlLCB0aGlzLl9vdmVydmll
d0NhbGN1bGF0b3IpOworICAgICAgICB0aGlzLndpbmRvd0xlZnQgPSAwLjA7CisgICAgICAgIHRo
aXMud2luZG93UmlnaHQgPSAxLjA7CisgICAgfSwKKworICAgIF9yZXNpemVXaW5kb3c6IGZ1bmN0
aW9uKHJlc2l6ZUVsZW1lbnQsIGV2ZW50KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmVs
ZW1lbnREcmFnU3RhcnQocmVzaXplRWxlbWVudCwgdGhpcy5fd2luZG93UmVzaXplRHJhZ2dpbmcu
YmluZCh0aGlzLCByZXNpemVFbGVtZW50KSwgdGhpcy5fZW5kV2luZG93RHJhZ2dpbmcuYmluZCh0
aGlzKSwgZXZlbnQsICJjb2wtcmVzaXplIik7CisgICAgfSwKKworICAgIF93aW5kb3dSZXNpemVE
cmFnZ2luZzogZnVuY3Rpb24ocmVzaXplRWxlbWVudCwgZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAocmVzaXplRWxlbWVudCA9PT0gdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQpCisgICAgICAgICAg
ICB0aGlzLl9yZXNpemVXaW5kb3dMZWZ0KGV2ZW50LnBhZ2VYIC0gdGhpcy5fb3ZlcnZpZXdHcmlk
LmVsZW1lbnQub2Zmc2V0TGVmdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3Jl
c2l6ZVdpbmRvd1JpZ2h0KGV2ZW50LnBhZ2VYIC0gdGhpcy5fb3ZlcnZpZXdHcmlkLmVsZW1lbnQu
b2Zmc2V0TGVmdCk7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKwor
ICAgIF9kcmFnV2luZG93OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5lbGVtZW50RHJhZ1N0YXJ0KHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudCwgdGhpcy5f
d2luZG93RHJhZ2dpbmcuYmluZCh0aGlzLCBldmVudC5wYWdlWCwKKyAgICAgICAgICAgIHRoaXMu
X2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQsIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5v
ZmZzZXRMZWZ0KSwgdGhpcy5fZW5kV2luZG93RHJhZ2dpbmcuYmluZCh0aGlzKSwgZXZlbnQsICJl
dy1yZXNpemUiKTsKKyAgICB9LAorCisgICAgX3dpbmRvd0RyYWdnaW5nOiBmdW5jdGlvbihzdGFy
dFgsIHdpbmRvd0xlZnQsIHdpbmRvd1JpZ2h0LCBldmVudCkKKyAgICB7CisgICAgICAgIHZhciBk
ZWx0YSA9IGV2ZW50LnBhZ2VYIC0gc3RhcnRYOworICAgICAgICB2YXIgc3RhcnQgPSB3aW5kb3dM
ZWZ0ICsgZGVsdGE7CisgICAgICAgIHZhciBlbmQgPSB3aW5kb3dSaWdodCArIGRlbHRhOworICAg
ICAgICB2YXIgd2luZG93U2l6ZSA9IHdpbmRvd1JpZ2h0IC0gd2luZG93TGVmdDsKKworICAgICAg
ICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgICAgICBzdGFydCA9IDA7CisgICAgICAgICAgICBl
bmQgPSB3aW5kb3dTaXplOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVuZCA+IHRoaXMuX292
ZXJ2aWV3R3JpZC5lbGVtZW50LmNsaWVudFdpZHRoKSB7CisgICAgICAgICAgICBlbmQgPSB0aGlz
Ll9vdmVydmlld0dyaWQuZWxlbWVudC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHN0YXJ0ID0g
ZW5kIC0gd2luZG93U2l6ZTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9zZXRXaW5kb3dQb3Np
dGlvbihzdGFydCwgZW5kKTsKKworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAg
IH0sCisKKyAgICBfcmVzaXplV2luZG93TGVmdDogZnVuY3Rpb24oc3RhcnQpCisgICAgeworICAg
ICAgICAvLyBHbHVlIHRvIGVkZ2UuCisgICAgICAgIGlmIChzdGFydCA8IDEwKQorICAgICAgICAg
ICAgc3RhcnQgPSAwOworICAgICAgICB0aGlzLl9zZXRXaW5kb3dQb3NpdGlvbihzdGFydCwgbnVs
bCk7CisgICAgfSwKKworICAgIF9yZXNpemVXaW5kb3dSaWdodDogZnVuY3Rpb24oZW5kKQorICAg
IHsKKyAgICAgICAgLy8gR2x1ZSB0byBlZGdlLgorICAgICAgICBpZiAoZW5kID4gdGhpcy5fb3Zl
cnZpZXdHcmlkLmVsZW1lbnQuY2xpZW50V2lkdGggLSAxMCkKKyAgICAgICAgICAgIGVuZCA9IHRo
aXMuX292ZXJ2aWV3R3JpZC5lbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICB0aGlzLl9zZXRX
aW5kb3dQb3NpdGlvbihudWxsLCBlbmQpOworICAgIH0sCisKKyAgICBfc2V0V2luZG93UG9zaXRp
b246IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIHN0YXJ0
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgaWYgKHN0YXJ0ID4gdGhpcy5fcmlnaHRSZXNp
emVFbGVtZW50Lm9mZnNldExlZnQgLSAyNSkKKyAgICAgICAgICAgICAgICBzdGFydCA9IHRoaXMu
X3JpZ2h0UmVzaXplRWxlbWVudC5vZmZzZXRMZWZ0IC0gMjU7CisKKyAgICAgICAgICAgIHRoaXMu
d2luZG93TGVmdCA9IHN0YXJ0IC8gdGhpcy5fb3ZlcnZpZXdHcmlkLmVsZW1lbnQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhp
cy53aW5kb3dMZWZ0ICogMTAwICsgIiUiOworICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdXaW5k
b3dFbGVtZW50LnN0eWxlLmxlZnQgPSB0aGlzLndpbmRvd0xlZnQgKiAxMDAgKyAiJSI7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHR5cGVvZiBlbmQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICBpZiAoZW5kIDwgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCArIDMwKQorICAg
ICAgICAgICAgICAgIGVuZCA9IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyAz
MDsKKworICAgICAgICAgICAgdGhpcy53aW5kb3dSaWdodCA9IGVuZCAvIHRoaXMuX292ZXJ2aWV3
R3JpZC5lbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdGhpcy5fcmlnaHRSZXNpemVF
bGVtZW50LnN0eWxlLmxlZnQgPSB0aGlzLndpbmRvd1JpZ2h0ICogMTAwICsgIiUiOworICAgICAg
ICB9CisgICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5zdHlsZS53aWR0aCA9ICh0
aGlzLndpbmRvd1JpZ2h0IC0gdGhpcy53aW5kb3dMZWZ0KSAqIDEwMCArICIlIjsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoIndpbmRvdyBjaGFuZ2VkIik7CisgICAgfSwK
KworICAgIF9lbmRXaW5kb3dEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBXZWJJbnNwZWN0b3IuZWxlbWVudERyYWdFbmQoZXZlbnQpOworICAgIH0KK30KKworV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKKworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d0NhbGN1bGF0b3IgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fdWlTdHJpbmcgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcuYmluZChXZWJJbnNwZWN0b3IpOworfQorCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld0NhbGN1bGF0b3IucHJvdG90eXBlID0geworICAgIGNvbXB1dGVCYXJHcmFw
aFBlcmNlbnRhZ2VzOiBmdW5jdGlvbihyZWNvcmQpCisgICAgeworICAgICAgICB2YXIgc3RhcnQg
PSAocmVjb3JkLnN0YXJ0VGltZSAtIHRoaXMubWluaW11bUJvdW5kYXJ5KSAvIHRoaXMuYm91bmRh
cnlTcGFuICogMTAwOworICAgICAgICB2YXIgZW5kID0gKHJlY29yZC5lbmRUaW1lIC0gdGhpcy5t
aW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7CisgICAgICAgIHJldHVy
biB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH07CisgICAgfSwKKworICAgIHJlc2V0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5taW5pbXVtQm91bmRhcnk7CisgICAgICAg
IGRlbGV0ZSB0aGlzLm1heGltdW1Cb3VuZGFyeTsKKyAgICB9LAorCisgICAgdXBkYXRlQm91bmRh
cmllczogZnVuY3Rpb24ocmVjb3JkKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1p
bmltdW1Cb3VuZGFyeSA9PT0gInVuZGVmaW5lZCIgfHwgcmVjb3JkLnN0YXJ0VGltZSA8IHRoaXMu
bWluaW11bUJvdW5kYXJ5KSB7CisgICAgICAgICAgICB0aGlzLm1pbmltdW1Cb3VuZGFyeSA9IHJl
Y29yZC5zdGFydFRpbWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodHlwZW9mIHRoaXMubWF4aW11bUJvdW5kYXJ5ID09PSAidW5kZWZpbmVkIiB8fCBy
ZWNvcmQuZW5kVGltZSA+IHRoaXMubWF4aW11bUJvdW5kYXJ5KSB7CisgICAgICAgICAgICB0aGlz
Lm1heGltdW1Cb3VuZGFyeSA9IHJlY29yZC5lbmRUaW1lOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICBnZXQg
Ym91bmRhcnlTcGFuKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLm1heGltdW1Cb3VuZGFy
eSAtIHRoaXMubWluaW11bUJvdW5kYXJ5OworICAgIH0sCisKKyAgICBmb3JtYXRWYWx1ZTogZnVu
Y3Rpb24odmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0cmlu
Zyh2YWx1ZSwgdGhpcy5fdWlTdHJpbmcpOworICAgIH0KK30KKworCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVDYXRlZ29yeVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2F0ZWdvcnksIG9uQ2hlY2tib3hD
bGlja2VkKQoreworICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CisgICAgdGhpcy5fb25D
aGVja2JveENsaWNrZWQgPSBvbkNoZWNrYm94Q2xpY2tlZDsKKyAgICAvLyBQYXNzIGFuIGVtcHR5
IHRpdGxlLCB0aGUgdGl0bGUgZ2V0cyBtYWRlIGxhdGVyIGluIG9uYXR0YWNoLgorICAgIFRyZWVF
bGVtZW50LmNhbGwodGhpcywgIiIsIG51bGwsIGZhbHNlKTsKK30KKworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQ2F0ZWdvcnlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgb25hdHRhY2g6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxk
cmVuKCk7CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRpbWVs
aW5lLWNhdGVnb3J5LXRyZWUtaXRlbSIpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJ0aW1lbGluZS1jYXRlZ29yeS0iICsgdGhpcy5fY2F0ZWdvcnkubmFtZSk7
CisKKyAgICAgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsK
KworICAgICAgICB2YXIgY2hlY2tFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5w
dXQiKTsKKyAgICAgICAgY2hlY2tFbGVtZW50LnR5cGUgPSAiY2hlY2tib3giOworICAgICAgICBj
aGVja0VsZW1lbnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLWNhdGVnb3J5LWNoZWNrYm94IjsKKyAg
ICAgICAgY2hlY2tFbGVtZW50LmNoZWNrZWQgPSB0cnVlOworICAgICAgICBjaGVja0VsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vbkNoZWNrYm94Q2xpY2tlZCk7CisgICAg
ICAgIGxhYmVsLmFwcGVuZENoaWxkKGNoZWNrRWxlbWVudCk7CisKKyAgICAgICAgdmFyIHR5cGVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0eXBlRWxl
bWVudC5jbGFzc05hbWUgPSAidHlwZSI7CisgICAgICAgIHR5cGVFbGVtZW50LnRleHRDb250ZW50
ID0gdGhpcy5fY2F0ZWdvcnkudGl0bGU7CisgICAgICAgIGxhYmVsLmFwcGVuZENoaWxkKHR5cGVF
bGVtZW50KTsKKworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChsYWJl
bCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeVRyZWVFbGVtZW50
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBUcmVlRWxlbWVudC5wcm90b3R5cGU7CisKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZUNhdGVnb3J5R3JhcGggPSBmdW5jdGlvbihjYXRlZ29yeSwgaXNFdmVuKQor
eworICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CisKKyAgICB0aGlzLl9ncmFwaEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9ncmFwaEVsZW1l
bnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLWdyYXBoLXNpZGUgdGltZWxpbmUtb3ZlcnZpZXctZ3Jh
cGgtc2lkZSIgKyAoaXNFdmVuID8gIiBldmVuIiA6ICIiKTsKKworICAgIHRoaXMuX2JhckFyZWFF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5fYmFyQXJl
YUVsZW1lbnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLWdyYXBoLWJhci1hcmVhIHRpbWVsaW5lLWNh
dGVnb3J5LSIgKyBjYXRlZ29yeS5uYW1lOworICAgIHRoaXMuX2dyYXBoRWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9iYXJBcmVhRWxlbWVudCk7Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZUNh
dGVnb3J5R3JhcGgucHJvdG90eXBlID0geworICAgIGdldCBncmFwaEVsZW1lbnQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoRWxlbWVudDsKKyAgICB9LAorCisgICAgYWRkQ2h1
bms6IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpCisgICAgeworICAgICAgICB2YXIgY2h1bmsgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY2h1bmsuY2xhc3NOYW1lID0gInRp
bWVsaW5lLWdyYXBoLWJhciI7CisgICAgICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmFwcGVuZENo
aWxkKGNodW5rKTsKKyAgICAgICAgY2h1bmsuc3R5bGUuc2V0UHJvcGVydHkoImxlZnQiLCBzdGFy
dCArICIlIik7CisgICAgICAgIGNodW5rLnN0eWxlLnNldFByb3BlcnR5KCJ3aWR0aCIsIChlbmQg
LSBzdGFydCkgKyAiJSIpOworICAgIH0sCisKKyAgICBjbGVhckNodW5rczogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAg
ICB9LAorCisgICAgc2V0IGRpbW1lZChkaW1tZWQpCisgICAgeworICAgICAgICBpZiAoZGltbWVk
KQorICAgICAgICAgICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygidGlt
ZWxpbmUtY2F0ZWdvcnktIiArIHRoaXMuX2NhdGVnb3J5Lm5hbWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl9iYXJBcmVhRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ0aW1lbGluZS1j
YXRlZ29yeS0iICsgdGhpcy5fY2F0ZWdvcnkubmFtZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRleCAzNzcwZWJjLi5kMTY0MGMy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAt
MzAsMjIgKzMwLDUzIEBACiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24o
KQogewotICAgIFdlYkluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lUGFuZWwuY2FsbCh0aGlzKTsK
LQorICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMpOwogICAgIHRoaXMuZWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJ0aW1lbGluZSIpOwogCi0gICAgdGhpcy5fY3JlYXRlT3ZlcnZpZXcoKTsK
LSAgICB0aGlzLmNyZWF0ZUludGVyZmFjZSgpOwotICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5p
ZCA9ICJ0aW1lbGluZS1jb250YWluZXIiOwotICAgIHRoaXMuc3VtbWFyeUJhci5lbGVtZW50Lmlk
ID0gInRpbWVsaW5lLXN1bW1hcnkiOwotICAgIHRoaXMuaXRlbXNHcmFwaHNFbGVtZW50LmlkID0g
InRpbWVsaW5lLWdyYXBocyI7CisgICAgdGhpcy5fb3ZlcnZpZXdQYW5lID0gbmV3IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSh0aGlzLmNhdGVnb3JpZXMpOworICAgIHRoaXMuX292
ZXJ2aWV3UGFuZS5hZGRFdmVudExpc3RlbmVyKCJ3aW5kb3cgY2hhbmdlZCIsIHRoaXMuX3NjaGVk
dWxlUmVmcmVzaCwgdGhpcyk7CisgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLmFkZEV2ZW50TGlzdGVu
ZXIoImZpbHRlciBjaGFuZ2VkIiwgdGhpcy5fcmVmcmVzaCwgdGhpcyk7CisgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX292ZXJ2aWV3UGFuZS5lbGVtZW50KTsKKworICAgIHRoaXMu
X2NvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0
aGlzLl9jb250YWluZXJFbGVtZW50LmlkID0gInRpbWVsaW5lLWNvbnRhaW5lciI7CisgICAgdGhp
cy5fY29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9vblNj
cm9sbC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NvbnRhaW5lckVsZW1lbnQpOworCisgICAgdGhpcy5jcmVhdGVTaWRlYmFyKHRoaXMuX2Nv
bnRhaW5lckVsZW1lbnQsIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQpOworICAgIHRoaXMuc2lkZWJh
ckVsZW1lbnQuaWQgPSAidGltZWxpbmUtc2lkZWJhciI7CisgICAgdGhpcy5pdGVtc1RyZWVFbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyU2VjdGlvblRyZWVFbGVtZW50KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUkVDT1JEUyIpLCB7fSwgdHJ1ZSk7CisgICAgdGhpcy5pdGVtc1RyZWVF
bGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKKyAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxk
KHRoaXMuaXRlbXNUcmVlRWxlbWVudCk7CisKKyAgICB0aGlzLl9zaWRlYmFyTGlzdEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX3NpZGViYXJMaXN0RWxlbWVudCk7CisKKyAgICB0aGlzLl9jb250
YWluZXJDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
IHRoaXMuX2NvbnRhaW5lckNvbnRlbnRFbGVtZW50LmlkID0gInJlc291cmNlcy1jb250YWluZXIt
Y29udGVudCI7CisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9j
b250YWluZXJDb250ZW50RWxlbWVudCk7CisKKyAgICB0aGlzLl90aW1lbGluZUdyaWQgPSBuZXcg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lR3JpZCgpOworICAgIHRoaXMuX2l0ZW1zR3JhcGhzRWxlbWVu
dCA9IHRoaXMuX3RpbWVsaW5lR3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQ7CisgICAgdGhpcy5faXRl
bXNHcmFwaHNFbGVtZW50LmlkID0gInRpbWVsaW5lLWdyYXBocyI7CisgICAgdGhpcy5fY29udGFp
bmVyQ29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGltZWxpbmVHcmlkLmVsZW1lbnQp
OworCisgICAgdGhpcy5fdG9wR2FwRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgIHRoaXMuX3RvcEdhcEVsZW1lbnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLWdhcCI7
CisgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RvcEdhcEVs
ZW1lbnQpOworCisgICAgdGhpcy5fZ3JhcGhSb3dzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIHRoaXMuX2l0ZW1zR3JhcGhzRWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9ncmFwaFJvd3NFbGVtZW50KTsKKworICAgIHRoaXMuX2JvdHRvbUdhcEVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9ib3R0b21HYXBFbGVtZW50
LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1nYXAiOworICAgIHRoaXMuX2l0ZW1zR3JhcGhzRWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9ib3R0b21HYXBFbGVtZW50KTsKIAogICAgIHRoaXMuX2NyZWF0
ZVN0YXR1c2JhckJ1dHRvbnMoKTsKIAotICAgIHRoaXMuY2FsY3VsYXRvciA9IG5ldyBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yKCk7Ci0gICAgZm9yIChjYXRlZ29yeSBpbiB0aGlzLmNh
dGVnb3JpZXMpCi0gICAgICAgIHRoaXMuc2hvd0NhdGVnb3J5KGNhdGVnb3J5KTsKKyAgICB0aGlz
Ll9yZWNvcmRzID0gW107CiAgICAgdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzID0ge307CisgICAg
dGhpcy5fY2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yKCk7
CiB9CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKQEAgLTczLDEz
ICsxMDQsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jYXRlZ29yaWVzOwogICAgIH0sCiAKLSAgICBwb3B1bGF0ZVNpZGVi
YXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuaXRlbXNUcmVlRWxlbWVudCA9IG5l
dyBXZWJJbnNwZWN0b3IuU2lkZWJhclNlY3Rpb25UcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJFQ09SRFMiKSwge30sIHRydWUpOwotICAgICAgICB0aGlzLml0ZW1zVHJlZUVsZW1l
bnQuZXhwYW5kZWQgPSB0cnVlOwotICAgICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxk
KHRoaXMuaXRlbXNUcmVlRWxlbWVudCk7Ci0gICAgfSwKLQogICAgIF9jcmVhdGVTdGF0dXNiYXJC
dXR0b25zOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnRvZ2dsZVRpbWVsaW5lQnV0
dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oIiIsICJyZWNvcmQtcHJvZmls
ZS1zdGF0dXMtYmFyLWl0ZW0iKTsKQEAgLTg5LDYgKzExMywxNCBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY2xlYXJCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLnJlc2V0LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB9
LAogCisgICAgX3RvZ2dsZVRpbWVsaW5lQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMudG9nZ2xlVGltZWxpbmVCdXR0b24udG9nZ2xlZCkKKyAgICAgICAg
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zdGFydFRpbWVsaW5lUHJvZmls
ZXIoKTsKKyAgICB9LAorCiAgICAgdGltZWxpbmVXYXNTdGFydGVkOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICB0aGlzLnRvZ2dsZVRpbWVsaW5lQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwpAQCAt
MTEwLDMyICsxNDIsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWUgLSB0aGlzLl9sYXN0
UmVjb3JkLmVuZFRpbWUgPCAwLjEpIHsKICAgICAgICAgICAgIHRoaXMuX2xhc3RSZWNvcmQuZW5k
VGltZSA9IGZvcm1hdHRlZFJlY29yZC5lbmRUaW1lOwogICAgICAgICAgICAgdGhpcy5fbGFzdFJl
Y29yZC5jb3VudCsrOwotICAgICAgICAgICAgdGhpcy5yZWZyZXNoSXRlbSh0aGlzLl9sYXN0UmVj
b3JkKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuYWRkSXRlbShmb3JtYXR0
ZWRSZWNvcmQpOworICAgICAgICAgICAgdGhpcy5fcmVjb3Jkcy5wdXNoKGZvcm1hdHRlZFJlY29y
ZCk7CiAKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyByZWNvcmQuY2hpbGRyZW4gJiYgaSA8
IHJlY29yZC5jaGlsZHJlbi5sZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICB0aGlzLmFkZFJl
Y29yZFRvVGltZWxpbmUocmVjb3JkLmNoaWxkcmVuW2ldKTsKICAgICAgICAgICAgIHRoaXMuX2xh
c3RSZWNvcmQgPSByZWNvcmQuY2hpbGRyZW4gJiYgcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA/IG51
bGwgOiBmb3JtYXR0ZWRSZWNvcmQ7CiAgICAgICAgIH0KLSAgICB9LAotCi0gICAgY3JlYXRlSXRl
bVRyZWVFbGVtZW50OiBmdW5jdGlvbihpdGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudChpdGVtKTsKLSAgICB9LAotCi0g
ICAgY3JlYXRlSXRlbUdyYXBoOiBmdW5jdGlvbihpdGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVHcmFwaChpdGVtKTsKLSAgICB9LAotCi0gICAgX3Rv
Z2dsZVRpbWVsaW5lQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMudG9nZ2xlVGltZWxpbmVCdXR0b24udG9nZ2xlZCkKLSAgICAgICAgICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXIuc3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICAg
ICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKCk7CiAgICAgfSwKIAogICAgIF9mb3JtYXRSZWNvcmQ6
IGZ1bmN0aW9uKHJlY29yZCkKQEAgLTE4Miw3ICsxOTYsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVz
cG9uc2VSZWNlaXZlZEZvcm1hdHRlZFRpbWUgPSBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lOwog
ICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZSA9IHNlbmRSZXF1ZXN0UmVjb3Jk
LnN0YXJ0VGltZTsKICAgICAgICAgICAgIHNlbmRSZXF1ZXN0UmVjb3JkLmRldGFpbHMgPSB0aGlz
Ll9nZXRSZWNvcmREZXRhaWxzKHJlY29yZCk7Ci0gICAgICAgICAgICB0aGlzLnJlZnJlc2hJdGVt
KHNlbmRSZXF1ZXN0UmVjb3JkKTsKICAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaCkgewog
ICAgICAgICAgICAgdmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNv
cmRzW3JlY29yZC5kYXRhLmlkZW50aWZpZXJdOwogICAgICAgICAgICAgaWYgKHNlbmRSZXF1ZXN0
UmVjb3JkKSAvLyBGYWxzZSBmb3IgbWFpbiByZXNvdXJjZS4KQEAgLTIyMCwzNjEgKzIzMywxNjAg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfSwKIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0
b3IuQWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpOwotICAg
ICAgICB0aGlzLl9sYXN0UmVjb3JkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdDYWxj
dWxhdG9yLnJlc2V0KCk7Ci0gICAgICAgIGZvciAodmFyIGNhdGVnb3J5IGluIHRoaXMuY2F0ZWdv
cmllcykKLSAgICAgICAgICAgIHRoaXMuX2NhdGVnb3J5R3JhcGhzW2NhdGVnb3J5XS5jbGVhckNo
dW5rcygpOwotICAgICAgICB0aGlzLl9zZXRXaW5kb3dQb3NpdGlvbigwLCB0aGlzLl9vdmVydmll
d0dyaWRFbGVtZW50LmNsaWVudFdpZHRoKTsKLSAgICAgICAgdGhpcy5fc2VuZFJlcXVlc3RSZWNv
cmRzID0ge307Ci0gICAgfSwKLQotICAgIF9jcmVhdGVPdmVydmlldzogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdmFyIG92ZXJ2aWV3UGFuZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgICAgIG92ZXJ2aWV3UGFuZWxFbGVtZW50LmlkID0gInRpbWVsaW5l
LW92ZXJ2aWV3LXBhbmVsIjsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG92ZXJ2
aWV3UGFuZWxFbGVtZW50KTsKLQotICAgICAgICB0aGlzLl9vdmVydmlld1NpZGViYXJFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3
U2lkZWJhckVsZW1lbnQuaWQgPSAidGltZWxpbmUtb3ZlcnZpZXctc2lkZWJhciI7Ci0gICAgICAg
IG92ZXJ2aWV3UGFuZWxFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX292ZXJ2aWV3U2lkZWJhckVs
ZW1lbnQpOwotCi0gICAgICAgIHZhciBvdmVydmlld1RyZWVFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgib2wiKTsKLSAgICAgICAgb3ZlcnZpZXdUcmVlRWxlbWVudC5jbGFzc05hbWUg
PSAic2lkZWJhci10cmVlIjsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdTaWRlYmFyRWxlbWVudC5h
cHBlbmRDaGlsZChvdmVydmlld1RyZWVFbGVtZW50KTsKLSAgICAgICAgdmFyIHNpZGViYXJUcmVl
ID0gbmV3IFRyZWVPdXRsaW5lKG92ZXJ2aWV3VHJlZUVsZW1lbnQpOwotCi0gICAgICAgIHZhciBj
YXRlZ29yaWVzVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJl
ZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUSU1FTElORVMiKSwge30sIHRydWUpOwot
ICAgICAgICBjYXRlZ29yaWVzVHJlZUVsZW1lbnQuZXhwYW5kZWQgPSB0cnVlOwotICAgICAgICBz
aWRlYmFyVHJlZS5hcHBlbmRDaGlsZChjYXRlZ29yaWVzVHJlZUVsZW1lbnQpOwotCi0gICAgICAg
IGZvciAodmFyIGNhdGVnb3J5IGluIHRoaXMuY2F0ZWdvcmllcykKLSAgICAgICAgICAgIGNhdGVn
b3JpZXNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0
ZWdvcnlUcmVlRWxlbWVudCh0aGlzLmNhdGVnb3JpZXNbY2F0ZWdvcnldKSk7Ci0KLSAgICAgICAg
dGhpcy5fb3ZlcnZpZXdHcmlkRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgICAgICB0aGlzLl9vdmVydmlld0dyaWRFbGVtZW50LmlkID0gInRpbWVsaW5lLW92ZXJ2
aWV3LWdyaWQiOwotICAgICAgICBvdmVydmlld1BhbmVsRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9vdmVydmlld0dyaWRFbGVtZW50KTsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkID0gbmV3
IFdlYkluc3BlY3Rvci5UaW1lbGluZUdyaWQodGhpcy5fb3ZlcnZpZXdHcmlkRWxlbWVudCk7Ci0g
ICAgICAgIHRoaXMuX292ZXJ2aWV3R3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQuaWQgPSAidGltZWxp
bmUtb3ZlcnZpZXctZ3JhcGhzIjsKLQotICAgICAgICB0aGlzLl9jYXRlZ29yeUdyYXBocyA9IHt9
OwotICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBpbiB0aGlzLmNhdGVnb3JpZXMpIHsKLSAgICAg
ICAgICAgIHZhciBjYXRlZ29yeUdyYXBoID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVn
b3J5R3JhcGgodGhpcy5jYXRlZ29yaWVzW2NhdGVnb3J5XSk7Ci0gICAgICAgICAgICB0aGlzLl9j
YXRlZ29yeUdyYXBoc1tjYXRlZ29yeV0gPSBjYXRlZ29yeUdyYXBoOwotICAgICAgICAgICAgdGhp
cy5fb3ZlcnZpZXdHcmlkLml0ZW1zR3JhcGhzRWxlbWVudC5hcHBlbmRDaGlsZChjYXRlZ29yeUdy
YXBoLmdyYXBoRWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlk
LnNldFNjcm9sbEFuZERpdmlkZXJUb3AoMCwgMCk7Ci0KLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdX
aW5kb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRo
aXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5pZCA9ICJ0aW1lbGluZS1vdmVydmlldy13aW5kb3ci
OwotICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgdGhpcy5fZHJhZ1dpbmRvdy5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAg
IHRoaXMuX292ZXJ2aWV3R3JpZEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3ZlcnZpZXdXaW5k
b3dFbGVtZW50KTsKLQotICAgICAgICB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5j
bGFzc05hbWUgPSAidGltZWxpbmUtd2luZG93LXJlc2l6ZXIiOwotICAgICAgICB0aGlzLl9sZWZ0
UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0gMDsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlk
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0UmVzaXplRWxlbWVudCk7Ci0gICAgICAgIHRo
aXMuX2xlZnRSZXNpemVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X3Jlc2l6ZVdpbmRvdy5iaW5kKHRoaXMsIHRoaXMuX2xlZnRSZXNpemVFbGVtZW50KSwgZmFsc2Up
OwotCi0gICAgICAgIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQuY2xhc3NOYW1l
ID0gInRpbWVsaW5lLXdpbmRvdy1yZXNpemVyIHRpbWVsaW5lLXdpbmRvdy1yZXNpemVyLXJpZ2h0
IjsKLSAgICAgICAgdGhpcy5fcmlnaHRSZXNpemVFbGVtZW50LnN0eWxlLnJpZ2h0ID0gMDsKLSAg
ICAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFJl
c2l6ZUVsZW1lbnQpOwotICAgICAgICB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fcmVzaXplV2luZG93LmJpbmQodGhpcywgdGhpcy5f
cmlnaHRSZXNpemVFbGVtZW50KSwgZmFsc2UpOwotCi0gICAgICAgIHRoaXMuX292ZXJ2aWV3Q2Fs
Y3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yKCk7Ci0KLSAgICAg
ICAgdmFyIHNlcGFyYXRvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgc2VwYXJhdG9yRWxlbWVudC5pZCA9ICJ0aW1lbGluZS1vdmVydmlldy1zZXBhcmF0
b3IiOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VwYXJhdG9yRWxlbWVudCk7
Ci0gICAgfSwKLQogICAgIHNldFNpZGViYXJXaWR0aDogZnVuY3Rpb24od2lkdGgpCiAgICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3RvdHlwZS5zZXRT
aWRlYmFyV2lkdGguY2FsbCh0aGlzLCB3aWR0aCk7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3U2lk
ZWJhckVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICJweCI7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5QYW5lbC5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRoLmNhbGwodGhpcywgd2lkdGgpOwor
ICAgICAgICB0aGlzLl9vdmVydmlld1BhbmUuc2V0U2lkZWJhcldpZHRoKHdpZHRoKTsKICAgICB9
LAogCiAgICAgdXBkYXRlTWFpblZpZXdXaWR0aDogZnVuY3Rpb24od2lkdGgpCiAgICAgewotICAg
ICAgICBXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3RvdHlwZS51cGRhdGVN
YWluVmlld1dpZHRoLmNhbGwodGhpcywgd2lkdGgpOwotICAgICAgICB0aGlzLl9vdmVydmlld0dy
aWRFbGVtZW50LnN0eWxlLmxlZnQgPSB3aWR0aCArICJweCI7CisgICAgICAgIHRoaXMuX2NvbnRh
aW5lckNvbnRlbnRFbGVtZW50LnN0eWxlLmxlZnQgPSB3aWR0aCArICJweCI7CisgICAgICAgIHRo
aXMuX3NjaGVkdWxlUmVmcmVzaCgpOworICAgICAgICB0aGlzLl9vdmVydmlld1BhbmUudXBkYXRl
TWFpblZpZXdXaWR0aCh3aWR0aCk7CiAgICAgfSwKIAotICAgIHVwZGF0ZUdyYXBoRGl2aWRlcnNJ
Zk5lZWRlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkFic3RyYWN0
VGltZWxpbmVQYW5lbC5wcm90b3R5cGUudXBkYXRlR3JhcGhEaXZpZGVyc0lmTmVlZGVkLmNhbGwo
dGhpcyk7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3R3JpZC51cGRhdGVEaXZpZGVycyh0cnVlLCB0
aGlzLl9vdmVydmlld0NhbGN1bGF0b3IpOworICAgIHJlc2l6ZTogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCgpOwogICAgIH0sCiAKLSAgICByZWZyZXNoOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZVBhbmVs
LnByb3RvdHlwZS5yZWZyZXNoLmNhbGwodGhpcyk7Ci0gICAgICAgIHRoaXMuYWRqdXN0U2Nyb2xs
UG9zaXRpb24oKTsKLQotICAgICAgICAvLyBDbGVhciBzdW1tYXJ5IGJhcnMuCi0gICAgICAgIHZh
ciB0aW1lbGluZXMgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gdGhpcy5jYXRl
Z29yaWVzKSB7Ci0gICAgICAgICAgICB0aW1lbGluZXNbY2F0ZWdvcnldID0gW107Ci0gICAgICAg
ICAgICB0aGlzLl9jYXRlZ29yeUdyYXBoc1tjYXRlZ29yeV0uY2xlYXJDaHVua3MoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIENyZWF0ZSBzcGFyc2UgYXJyYXlzIHdpdGggMTAxIGNlbGxzIGVh
Y2ggdG8gZmlsbCB3aXRoIGNodW5rcyBmb3IgYSBnaXZlbiBjYXRlZ29yeS4KLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLml0ZW1zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2
YXIgcmVjb3JkID0gdGhpcy5pdGVtc1tpXTsKLSAgICAgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2Fs
Y3VsYXRvci51cGRhdGVCb3VuZGFyaWVzKHJlY29yZCk7Ci0gICAgICAgICAgICB2YXIgcGVyY2Vu
dGFnZXMgPSB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IuY29tcHV0ZUJhckdyYXBoUGVyY2VudGFn
ZXMocmVjb3JkKTsKLSAgICAgICAgICAgIHZhciBlbmQgPSBNYXRoLnJvdW5kKHBlcmNlbnRhZ2Vz
LmVuZCk7Ci0gICAgICAgICAgICB2YXIgY2F0ZWdvcnlOYW1lID0gcmVjb3JkLmNhdGVnb3J5Lm5h
bWU7Ci0gICAgICAgICAgICBmb3IgKHZhciBqID0gTWF0aC5yb3VuZChwZXJjZW50YWdlcy5zdGFy
dCk7IGogPD0gZW5kOyArK2opCi0gICAgICAgICAgICAgICAgdGltZWxpbmVzW2NhdGVnb3J5TmFt
ZV1bal0gPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ29udmVydCBzcGFyc2UgYXJy
YXlzIHRvIGNvbnRpbnVvdXMgc2VnbWVudHMsIHJlbmRlciBncmFwaHMgZm9yIGVhY2guCi0gICAg
ICAgIGZvciAodmFyIGNhdGVnb3J5IGluIHRoaXMuY2F0ZWdvcmllcykgewotICAgICAgICAgICAg
dmFyIHRpbWVsaW5lID0gdGltZWxpbmVzW2NhdGVnb3J5XTsKLSAgICAgICAgICAgIHdpbmRvdy50
aW1lbGluZVNhdmVkID0gdGltZWxpbmU7Ci0gICAgICAgICAgICB2YXIgY2h1bmtTdGFydCA9IC0x
OwotICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMDE7ICsraikgewotICAgICAgICAg
ICAgICAgIGlmICh0aW1lbGluZVtqXSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoY2h1bmtT
dGFydCA9PT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBjaHVua1N0YXJ0ID0gajsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoY2h1bmtTdGFy
dCAhPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhdGVnb3J5R3JhcGhz
W2NhdGVnb3J5XS5hZGRDaHVuayhjaHVua1N0YXJ0LCBqKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNodW5rU3RhcnQgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaHVua1N0YXJ0ICE9PSAtMSkg
ewotICAgICAgICAgICAgICAgIHRoaXMuX2NhdGVnb3J5R3JhcGhzW2NhdGVnb3J5XS5hZGRDaHVu
ayhjaHVua1N0YXJ0LCAxMDApOwotICAgICAgICAgICAgICAgIGNodW5rU3RhcnQgPSAtMTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0aGlzLl9vdmVydmlld0dyaWQudXBkYXRl
RGl2aWRlcnModHJ1ZSwgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9yKTsKLSAgICB9LAotCi0gICAg
X3Jlc2l6ZVdpbmRvdzogZnVuY3Rpb24ocmVzaXplRWxlbWVudCwgZXZlbnQpCisgICAgcmVzZXQ6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ1N0YXJ0
KHJlc2l6ZUVsZW1lbnQsIHRoaXMuX3dpbmRvd1Jlc2l6ZURyYWdnaW5nLmJpbmQodGhpcywgcmVz
aXplRWxlbWVudCksIHRoaXMuX2VuZFdpbmRvd0RyYWdnaW5nLmJpbmQodGhpcyksIGV2ZW50LCAi
Y29sLXJlc2l6ZSIpOworICAgICAgICB0aGlzLl9sYXN0UmVjb3JkID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzID0ge307CisgICAgICAgIHRoaXMuX292ZXJ2aWV3UGFu
ZS5yZXNldCgpOworICAgICAgICB0aGlzLl9yZWNvcmRzID0gW107CisgICAgICAgIHRoaXMuX3Jl
ZnJlc2goKTsKICAgICB9LAogCi0gICAgX3dpbmRvd1Jlc2l6ZURyYWdnaW5nOiBmdW5jdGlvbihy
ZXNpemVFbGVtZW50LCBldmVudCkKKyAgICBzaG93OiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICBpZiAocmVzaXplRWxlbWVudCA9PT0gdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQpCi0gICAgICAg
ICAgICB0aGlzLl9yZXNpemVXaW5kb3dMZWZ0KGV2ZW50LnBhZ2VYIC0gdGhpcy5fb3ZlcnZpZXdH
cmlkRWxlbWVudC5vZmZzZXRMZWZ0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5f
cmVzaXplV2luZG93UmlnaHQoZXZlbnQucGFnZVggLSB0aGlzLl9vdmVydmlld0dyaWRFbGVtZW50
Lm9mZnNldExlZnQpOwotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCisg
ICAgICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMpOwogCi0g
ICAgX2RyYWdXaW5kb3c6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLmVsZW1lbnREcmFnU3RhcnQodGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50LCB0aGlzLl93
aW5kb3dEcmFnZ2luZy5iaW5kKHRoaXMsIGV2ZW50LnBhZ2VYLAotICAgICAgICAgICAgdGhpcy5f
bGVmdFJlc2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCwgdGhpcy5fcmlnaHRSZXNpemVFbGVtZW50Lm9m
ZnNldExlZnQpLCB0aGlzLl9lbmRXaW5kb3dEcmFnZ2luZy5iaW5kKHRoaXMpLCBldmVudCwgImV3
LXJlc2l6ZSIpOworICAgICAgICBpZiAodGhpcy5fbmVlZHNSZWZyZXNoKQorICAgICAgICAgICAg
dGhpcy5fcmVmcmVzaCgpOwogICAgIH0sCiAKLSAgICBfd2luZG93RHJhZ2dpbmc6IGZ1bmN0aW9u
KHN0YXJ0WCwgd2luZG93TGVmdCwgd2luZG93UmlnaHQsIGV2ZW50KQorICAgIF9vblNjcm9sbDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgZGVsdGEgPSBldmVudC5wYWdlWCAt
IHN0YXJ0WDsKLSAgICAgICAgdmFyIHN0YXJ0ID0gd2luZG93TGVmdCArIGRlbHRhOwotICAgICAg
ICB2YXIgZW5kID0gd2luZG93UmlnaHQgKyBkZWx0YTsKLSAgICAgICAgdmFyIHdpbmRvd1NpemUg
PSB3aW5kb3dSaWdodCAtIHdpbmRvd0xlZnQ7Ci0KLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgewot
ICAgICAgICAgICAgc3RhcnQgPSAwOwotICAgICAgICAgICAgZW5kID0gd2luZG93U2l6ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChlbmQgPiB0aGlzLl9vdmVydmlld0dyaWRFbGVtZW50LmNs
aWVudFdpZHRoKSB7Ci0gICAgICAgICAgICBlbmQgPSB0aGlzLl9vdmVydmlld0dyaWRFbGVtZW50
LmNsaWVudFdpZHRoOwotICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSB3aW5kb3dTaXplOwotICAg
ICAgICB9Ci0gICAgICAgIHRoaXMuX3NldFdpbmRvd1Bvc2l0aW9uKHN0YXJ0LCBlbmQpOwotCi0g
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIHZhciBzY3JvbGxUb3AgPSB0
aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcDsKKyAgICAgICAgdmFyIGRpdmlkZXJzVG9w
ID0gTWF0aC5tYXgoMCwgc2Nyb2xsVG9wKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVHcmlkLnNl
dFNjcm9sbEFuZERpdmlkZXJUb3Aoc2Nyb2xsVG9wLCBkaXZpZGVyc1RvcCk7CisgICAgICAgIHRo
aXMuX3NjaGVkdWxlUmVmcmVzaCgpOwogICAgIH0sCiAKLSAgICBfcmVzaXplV2luZG93TGVmdDog
ZnVuY3Rpb24oc3RhcnQpCisgICAgX3NjaGVkdWxlUmVmcmVzaDogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgLy8gR2x1ZSB0byBlZGdlLgotICAgICAgICBpZiAoc3RhcnQgPCAxMCkKLSAgICAg
ICAgICAgIHN0YXJ0ID0gMDsKLSAgICAgICAgdGhpcy5fc2V0V2luZG93UG9zaXRpb24oc3RhcnQs
IG51bGwpOwotICAgIH0sCisgICAgICAgIGlmICh0aGlzLl9uZWVkc1JlZnJlc2gpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX25lZWRzUmVmcmVzaCA9IHRydWU7CiAKLSAgICBf
cmVzaXplV2luZG93UmlnaHQ6IGZ1bmN0aW9uKGVuZCkKLSAgICB7Ci0gICAgICAgIC8vIEdsdWUg
dG8gZWRnZS4KLSAgICAgICAgaWYgKGVuZCA+IHRoaXMuX292ZXJ2aWV3R3JpZEVsZW1lbnQuY2xp
ZW50V2lkdGggLSAxMCkKLSAgICAgICAgICAgIGVuZCA9IHRoaXMuX292ZXJ2aWV3R3JpZEVsZW1l
bnQuY2xpZW50V2lkdGg7Ci0gICAgICAgIHRoaXMuX3NldFdpbmRvd1Bvc2l0aW9uKG51bGwsIGVu
ZCk7CisgICAgICAgIGlmICh0aGlzLnZpc2libGUgJiYgISgiX3JlZnJlc2hUaW1lb3V0IiBpbiB0
aGlzKSkKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlz
Ll9yZWZyZXNoLmJpbmQodGhpcyksIDEwMCk7CiAgICAgfSwKIAotICAgIF9zZXRXaW5kb3dQb3Np
dGlvbjogZnVuY3Rpb24oc3RhcnQsIGVuZCkKKyAgICBfcmVmcmVzaDogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgdGhpcy5jYWxjdWxhdG9yLnJlc2V0KCk7Ci0gICAgICAgIHRoaXMuaW52YWxp
ZGF0ZUFsbEl0ZW1zKCk7Ci0gICAgICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICJudW1iZXIiKSB7
Ci0gICAgICAgICAgICBpZiAoc3RhcnQgPiB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQub2Zmc2V0
TGVmdCAtIDI1KQotICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5fcmlnaHRSZXNpemVFbGVt
ZW50Lm9mZnNldExlZnQgLSAyNTsKLQotICAgICAgICAgICAgdmFyIHdpbmRvd0xlZnQgPSBzdGFy
dCAvIHRoaXMuX292ZXJ2aWV3R3JpZEVsZW1lbnQuY2xpZW50V2lkdGg7Ci0gICAgICAgICAgICB0
aGlzLmNhbGN1bGF0b3Iud2luZG93TGVmdCA9IHdpbmRvd0xlZnQ7Ci0gICAgICAgICAgICB0aGlz
Ll9sZWZ0UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0gd2luZG93TGVmdCAqIDEwMCArICIlIjsK
LSAgICAgICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5zdHlsZS5sZWZ0ID0gd2lu
ZG93TGVmdCAqIDEwMCArICIlIjsKLSAgICAgICAgfQotICAgICAgICBpZiAodHlwZW9mIGVuZCA9
PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIGlmIChlbmQgPCB0aGlzLl9sZWZ0UmVzaXplRWxl
bWVudC5vZmZzZXRMZWZ0ICsgMzApCi0gICAgICAgICAgICAgICAgZW5kID0gdGhpcy5fbGVmdFJl
c2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCArIDMwOwotCi0gICAgICAgICAgICB2YXIgd2luZG93Umln
aHQgPSBlbmQgLyB0aGlzLl9vdmVydmlld0dyaWRFbGVtZW50LmNsaWVudFdpZHRoOwotICAgICAg
ICAgICAgdGhpcy5jYWxjdWxhdG9yLndpbmRvd1JpZ2h0ID0gd2luZG93UmlnaHQ7Ci0gICAgICAg
ICAgICB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVmdCA9IHdpbmRvd1JpZ2h0ICog
MTAwICsgIiUiOworICAgICAgICB0aGlzLl9uZWVkc1JlZnJlc2ggPSBmYWxzZTsKKyAgICAgICAg
aWYgKCJfcmVmcmVzaFRpbWVvdXQiIGluIHRoaXMpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91
dCh0aGlzLl9yZWZyZXNoVGltZW91dCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVmcmVz
aFRpbWVvdXQ7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50
LnN0eWxlLndpZHRoID0gKHRoaXMuY2FsY3VsYXRvci53aW5kb3dSaWdodCAtIHRoaXMuY2FsY3Vs
YXRvci53aW5kb3dMZWZ0KSAqIDEwMCArICIlIjsKLSAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2gg
PSB0cnVlOworICAgICAgICB0aGlzLl9vdmVydmlld1BhbmUudXBkYXRlKHRoaXMuX3JlY29yZHMp
OworICAgICAgICB0aGlzLl9yZWZyZXNoUmVjb3JkcygpOwogICAgIH0sCiAKLSAgICBfZW5kV2lu
ZG93RHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWZyZXNoUmVjb3JkczogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnRW5kKGV2ZW50KTsK
LSAgICB9Ci19CisgICAgICAgIHRoaXMuX2NhbGN1bGF0b3Iud2luZG93TGVmdCA9IHRoaXMuX292
ZXJ2aWV3UGFuZS53aW5kb3dMZWZ0OworICAgICAgICB0aGlzLl9jYWxjdWxhdG9yLndpbmRvd1Jp
Z2h0ID0gdGhpcy5fb3ZlcnZpZXdQYW5lLndpbmRvd1JpZ2h0OworICAgICAgICB0aGlzLl9jYWxj
dWxhdG9yLnJlc2V0KCk7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3RvdHlwZTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yZWNvcmRzLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRvci51cGRhdGVCb3VuZGFyaWVzKHRoaXMuX3JlY29y
ZHNbaV0pOwogCisgICAgICAgIHZhciByZWNvcmRzSW5XaW5kb3cgPSBbXTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yZWNvcmRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICB2YXIgcmVjb3JkID0gdGhpcy5fcmVjb3Jkc1tpXTsKKyAgICAgICAgICAgIHZhciBwZXJjZW50
YWdlcyA9IHRoaXMuX2NhbGN1bGF0b3IuY29tcHV0ZUJhckdyYXBoUGVyY2VudGFnZXMocmVjb3Jk
KTsKKyAgICAgICAgICAgIGlmIChwZXJjZW50YWdlcy5zdGFydCA8IDEwMCAmJiBwZXJjZW50YWdl
cy5lbmQgPj0gMCAmJiAhcmVjb3JkLmNhdGVnb3J5LmhpZGRlbikKKyAgICAgICAgICAgICAgICBy
ZWNvcmRzSW5XaW5kb3cucHVzaChyZWNvcmQpOworICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5U
aW1lbGluZUNhdGVnb3J5ID0gZnVuY3Rpb24obmFtZSwgdGl0bGUsIGNvbG9yKQotewotICAgIFdl
Ykluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lQ2F0ZWdvcnkuY2FsbCh0aGlzLCBuYW1lLCB0aXRs
ZSwgY29sb3IpOwotfQotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeS5wcm90b3R5cGUg
PSB7Ci19Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZUNhdGVnb3J5LnByb3RvdHlwZTsKKyAg
ICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB2aXNpYmxlIGFyZWEuCisgICAgICAgIHZhciB2aXNpYmxl
VG9wID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3A7CisgICAgICAgIHZhciB2aXNp
YmxlQm90dG9tID0gdmlzaWJsZVRvcCArIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY2xpZW50SGVp
Z2h0OworICAgICAgICB2YXIgcm93SGVpZ2h0ID0gMTg7CiAKKyAgICAgICAgLy8gQ29udmVydCB2
aXNpYmxlIGFyZWEgdG8gdmlzaWJsZSBpbmRleGVzLgorICAgICAgICB2YXIgc3RhcnRJbmRleCA9
IE1hdGgubWF4KDAsIE1hdGguZmxvb3IodmlzaWJsZVRvcCAvIHJvd0hlaWdodCkgLSAxKTsKKyAg
ICAgICAgdmFyIGVuZEluZGV4ID0gTWF0aC5taW4ocmVjb3Jkc0luV2luZG93Lmxlbmd0aCwgTWF0
aC5jZWlsKHZpc2libGVCb3R0b20gLyByb3dIZWlnaHQpKTsKIAorICAgICAgICB2YXIgbGlzdFJv
d0VsZW1lbnQgPSB0aGlzLl9zaWRlYmFyTGlzdEVsZW1lbnQuZmlyc3RDaGlsZDsKKyAgICAgICAg
dmFyIGdyYXBoUm93RWxlbWVudCA9IHRoaXMuX2dyYXBoUm93c0VsZW1lbnQuZmlyc3RDaGlsZDsK
KyAgICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbmRJbmRleDsgKytpKSB7Cisg
ICAgICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc0luV2luZG93W2ldOworICAgICAgICAgICAg
dmFyIGlzRXZlbiA9ICEoaSAlIDIpOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oY2F0ZWdvcnkpCi17Ci0gICAgdGhpcy5fY2F0ZWdvcnkgPSBj
YXRlZ29yeTsKKyAgICAgICAgICAgIGlmICghbGlzdFJvd0VsZW1lbnQpIHsKKyAgICAgICAgICAg
ICAgICBsaXN0Um93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0
Um93KCkuZWxlbWVudDsKKyAgICAgICAgICAgICAgICB0aGlzLl9zaWRlYmFyTGlzdEVsZW1lbnQu
YXBwZW5kQ2hpbGQobGlzdFJvd0VsZW1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCFncmFwaFJvd0VsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBncmFwaFJvd0VsZW1lbnQg
PSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3coKS5lbGVtZW50OworICAg
ICAgICAgICAgICAgIHRoaXMuX2dyYXBoUm93c0VsZW1lbnQuYXBwZW5kQ2hpbGQoZ3JhcGhSb3dF
bGVtZW50KTsKKyAgICAgICAgICAgIH0KIAotICAgIC8vIFBhc3MgYW4gZW1wdHkgdGl0bGUsIHRo
ZSB0aXRsZSBnZXRzIG1hZGUgbGF0ZXIgaW4gb25hdHRhY2guCi0gICAgVHJlZUVsZW1lbnQuY2Fs
bCh0aGlzLCAiIiwgbnVsbCwgZmFsc2UpOwotfQorICAgICAgICAgICAgbGlzdFJvd0VsZW1lbnQu
bGlzdFJvdy51cGRhdGUocmVjb3JkLCBpc0V2ZW4pOworICAgICAgICAgICAgZ3JhcGhSb3dFbGVt
ZW50LmdyYXBoUm93LnVwZGF0ZShyZWNvcmQsIGlzRXZlbiwgdGhpcy5fY2FsY3VsYXRvcik7CiAK
LVdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewot
ICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmxpc3RJdGVtRWxl
bWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJ0aW1lbGluZS1jYXRlZ29yeS10cmVlLWl0ZW0iKTsKLSAgICAgICAgdGhpcy5s
aXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcygidGltZWxpbmUtY2F0ZWdvcnktIiArIHRoaXMu
X2NhdGVnb3J5Lm5hbWUpOworICAgICAgICAgICAgbGlzdFJvd0VsZW1lbnQgPSBsaXN0Um93RWxl
bWVudC5uZXh0U2libGluZzsKKyAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudCA9IGdyYXBoUm93
RWxlbWVudC5uZXh0U2libGluZzsKKyAgICAgICAgfQogCi0gICAgICAgIHZhciBsYWJlbCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CisgICAgICAgIHdoaWxlIChsaXN0Um93RWxl
bWVudCkgeworICAgICAgICAgICAgdmFyIG5leHRFbGVtZW50ID0gbGlzdFJvd0VsZW1lbnQubmV4
dFNpYmxpbmc7CisgICAgICAgICAgICBsaXN0Um93RWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92
ZUNoaWxkKGxpc3RSb3dFbGVtZW50KTsKKyAgICAgICAgICAgIGxpc3RSb3dFbGVtZW50ID0gbmV4
dEVsZW1lbnQ7CisgICAgICAgIH0KIAotICAgICAgICB2YXIgY2hlY2tFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICAgICAgY2hlY2tFbGVtZW50LnR5cGUgPSAi
Y2hlY2tib3giOwotICAgICAgICBjaGVja0VsZW1lbnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLWNh
dGVnb3J5LWNoZWNrYm94IjsKLSAgICAgICAgY2hlY2tFbGVtZW50LmNoZWNrZWQgPSB0cnVlOwot
ICAgICAgICBjaGVja0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vbkNo
ZWNrYm94Q2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoY2hl
Y2tFbGVtZW50KTsKKyAgICAgICAgd2hpbGUgKGdyYXBoUm93RWxlbWVudCkgeworICAgICAgICAg
ICAgdmFyIG5leHRFbGVtZW50ID0gZ3JhcGhSb3dFbGVtZW50Lm5leHRTaWJsaW5nOworICAgICAg
ICAgICAgZ3JhcGhSb3dFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZ3JhcGhSb3dF
bGVtZW50KTsKKyAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudCA9IG5leHRFbGVtZW50OworICAg
ICAgICB9CiAKLSAgICAgICAgdmFyIHR5cGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOwotICAgICAgICB0eXBlRWxlbWVudC5jbGFzc05hbWUgPSAidHlwZSI7Ci0gICAg
ICAgIHR5cGVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fY2F0ZWdvcnkudGl0bGU7Ci0gICAg
ICAgIGxhYmVsLmFwcGVuZENoaWxkKHR5cGVFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fdGltZWxp
bmVHcmlkLnVwZGF0ZURpdmlkZXJzKHRydWUsIHRoaXMuX2NhbGN1bGF0b3IpOwogCi0gICAgICAg
IHRoaXMubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGxhYmVsKTsKKyAgICAgICAgdmFyIHRv
cCA9IChzdGFydEluZGV4ICogcm93SGVpZ2h0KSArICJweCI7CisgICAgICAgIHRoaXMuX3RvcEdh
cEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdG9wOworICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50
LnN0eWxlLnRvcCA9IHRvcDsKKyAgICAgICAgdGhpcy5zaWRlYmFyUmVzaXplRWxlbWVudC5zdHls
ZS50b3AgPSB0b3A7CisgICAgICAgIHRoaXMuX2JvdHRvbUdhcEVsZW1lbnQuc3R5bGUuaGVpZ2h0
ID0gKHJlY29yZHNJbldpbmRvdy5sZW5ndGggLSBlbmRJbmRleCkgKiByb3dIZWlnaHQgKyAicHgi
OworICAgICAgICB0aGlzLl9hZGp1c3RTY3JvbGxQb3NpdGlvbigocmVjb3Jkc0luV2luZG93Lmxl
bmd0aCArIDEpICogcm93SGVpZ2h0KTsKICAgICB9LAogCi0gICAgX29uQ2hlY2tib3hDbGlja2Vk
OiBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKQot
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS5zaG93Q2F0ZWdvcnkodGhp
cy5fY2F0ZWdvcnkubmFtZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy50aW1lbGluZS5oaWRlQ2F0ZWdvcnkodGhpcy5fY2F0ZWdvcnkubmFtZSk7Ci0g
ICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnRpbWVsaW5lLmFkanVzdFNjcm9sbFBvc2l0
aW9uKCk7Ci0gICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS5f
Y2F0ZWdvcnlHcmFwaHNbdGhpcy5fY2F0ZWdvcnkubmFtZV0uZGltbWVkID0gIWV2ZW50LnRhcmdl
dC5jaGVja2VkOworICAgIF9hZGp1c3RTY3JvbGxQb3NpdGlvbjogZnVuY3Rpb24odG90YWxIZWln
aHQpCisgICAgeworICAgICAgICAvLyBQcmV2ZW50IHRoZSBjb250YWluZXIgZnJvbSBiZWluZyBz
Y3JvbGxlZCBvZmYgdGhlIGVuZC4KKyAgICAgICAgaWYgKCh0aGlzLl9jb250YWluZXJFbGVtZW50
LnNjcm9sbFRvcCArIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0KSA+IHRvdGFs
SGVpZ2h0ICsgMSkKKyAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9w
ID0gKHRvdGFsSGVpZ2h0IC0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5vZmZzZXRIZWlnaHQpOwog
ICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlUcmVlRWxlbWVudC5wcm90
b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5QYW5lbC5wcm90
b3R5cGU7CiAKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQgPSBmdW5j
dGlvbihyZWNvcmQpCitXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSA9IGZ1bmN0aW9uKG5h
bWUsIHRpdGxlLCBjb2xvcikKIHsKLSAgICB0aGlzLl9yZWNvcmQgPSByZWNvcmQ7Ci0KLSAgICAv
LyBQYXNzIGFuIGVtcHR5IHRpdGxlLCB0aGUgdGl0bGUgZ2V0cyBtYWRlIGxhdGVyIGluIG9uYXR0
YWNoLgotICAgIFRyZWVFbGVtZW50LmNhbGwodGhpcywgIiIsIG51bGwsIGZhbHNlKTsKKyAgICB0
aGlzLm5hbWUgPSBuYW1lOworICAgIHRoaXMudGl0bGUgPSB0aXRsZTsKKyAgICB0aGlzLmNvbG9y
ID0gY29sb3I7CiB9CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5saXN0SXRlbUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdGhpcy5saXN0SXRl
bUVsZW1lbnQuYWRkU3R5bGVDbGFzcygidGltZWxpbmUtdHJlZS1pdGVtIik7Ci0gICAgICAgIHRo
aXMubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRpbWVsaW5lLWNhdGVnb3J5LSIgKyB0
aGlzLl9yZWNvcmQuY2F0ZWdvcnkubmFtZSk7Ci0KLSAgICAgICAgdmFyIGljb25FbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBpY29uRWxlbWVudC5jbGFz
c05hbWUgPSAidGltZWxpbmUtdHJlZS1pY29uIjsKLSAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1l
bnQuYXBwZW5kQ2hpbGQoaWNvbkVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMudHlwZUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMudHlwZUVsZW1l
bnQuY2xhc3NOYW1lID0gInR5cGUiOwotICAgICAgICB0aGlzLnR5cGVFbGVtZW50LnRleHRDb250
ZW50ID0gdGhpcy5fcmVjb3JkLnRpdGxlOwotICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLnR5cGVFbGVtZW50KTsKLQotICAgICAgICBpZiAodGhpcy5fcmVjb3Jk
LmRldGFpbHMpIHsKLSAgICAgICAgICAgIHZhciBzZXBhcmF0b3JFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgc2VwYXJhdG9yRWxlbWVudC5jbGFz
c05hbWUgPSAic2VwYXJhdG9yIjsKLSAgICAgICAgICAgIHNlcGFyYXRvckVsZW1lbnQudGV4dENv
bnRlbnQgPSAiICI7Ci0KLSAgICAgICAgICAgIHRoaXMuZGF0YUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgICAgICB0aGlzLmRhdGFFbGVtZW50LmNsYXNz
TmFtZSA9ICJkYXRhIGRpbW1lZCI7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVEZXRhaWxzKCk7
Ci0KLSAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHNlcGFyYXRv
ckVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5kYXRhRWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX3VwZGF0ZURldGFp
bHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmRhdGFFbGVtZW50ICYmIHRo
aXMuX3JlY29yZC5kZXRhaWxzICE9PSB0aGlzLl9kZXRhaWxzKSB7Ci0gICAgICAgICAgICB0aGlz
Ll9kZXRhaWxzID0gdGhpcy5fcmVjb3JkLmRldGFpbHM7Ci0gICAgICAgICAgICB0aGlzLmRhdGFF
bGVtZW50LnRleHRDb250ZW50ID0gIigiICsgdGhpcy5fZGV0YWlscyArICIpIjsKLSAgICAgICAg
ICAgIHRoaXMuZGF0YUVsZW1lbnQudGl0bGUgPSB0aGlzLl9kZXRhaWxzOwotICAgICAgICB9Ci0g
ICAgfSwKLQotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Vw
ZGF0ZURldGFpbHMoKTsKLQotICAgICAgICBpZiAodGhpcy5fcmVjb3JkLmNvdW50IDw9IDEpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCF0aGlzLnJlcGVhdENvdW50RWxlbWVu
dCkgewotICAgICAgICAgICAgdGhpcy5yZXBlYXRDb3VudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudC5j
bGFzc05hbWUgPSAiY291bnQiOwotICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5yZXBlYXRDb3VudEVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dGhpcy5yZXBlYXRDb3VudEVsZW1lbnQudGV4dENvbnRlbnQgPSAiXHUyMDA5XHUwMGQ3XHUyMDA5
IiArIHRoaXMuX3JlY29yZC5jb3VudDsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZFRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBUcmVlRWxlbWVudC5wcm90
b3R5cGU7Ci0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvciA9IGZ1bmN0aW9uKCkK
IHsKLSAgICBXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZUNhbGN1bGF0b3IuY2FsbCh0aGlz
KTsKICAgICB0aGlzLndpbmRvd0xlZnQgPSAwLjA7CiAgICAgdGhpcy53aW5kb3dSaWdodCA9IDEu
MDsKICAgICB0aGlzLl91aVN0cmluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZy5iaW5kKFdlYklu
c3BlY3Rvcik7CkBAIC01ODgsMTYgKzQwMCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1
bGF0b3IucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4ge3N0YXJ0OiBzdGFydCwgZW5kOiBl
bmR9OwogICAgIH0sCiAKLSAgICBjb21wdXRlUGVyY2VudGFnZUZyb21FdmVudFRpbWU6IGZ1bmN0
aW9uKGV2ZW50VGltZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoKGV2ZW50VGltZSAtIHRoaXMu
bWluaW11bUJvdW5kYXJ5KSAvIHRoaXMuYm91bmRhcnlTcGFuKSAqIDEwMDsKLSAgICB9LAotCi0g
ICAgY29tcHV0ZUJhckdyYXBoTGFiZWxzOiBmdW5jdGlvbihyZWNvcmQpCi0gICAgewotICAgICAg
ICByZXR1cm4ge3Rvb2x0aXA6IHJlY29yZC50aXRsZX07Ci0gICAgfSwKLQogICAgIGdldCBtaW5p
bXVtQm91bmRhcnkoKQogICAgIHsKICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9taW5pbXVtQm91
bmRhcnkgPT09ICJudW1iZXIiKQpAQCAtNjUyLDEwOSArNDU0LDg4IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZUNhbGN1bGF0b3IucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZGlkQ2hhbmdl
OwogICAgIH0sCiAKKyAgICBnZXQgYm91bmRhcnlTcGFuKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLm1heGltdW1Cb3VuZGFyeSAtIHRoaXMubWluaW11bUJvdW5kYXJ5OworICAgIH0sCisK
ICAgICBmb3JtYXRWYWx1ZTogZnVuY3Rpb24odmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4g
TnVtYmVyLnNlY29uZHNUb1N0cmluZyh2YWx1ZSArIHRoaXMubWluaW11bUJvdW5kYXJ5IC0gdGhp
cy5fYWJzb2x1dGVNaW5pbXVtQm91bmRhcnksIHRoaXMuX3VpU3RyaW5nKTsKICAgICB9CiB9CiAK
LVdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGU7CiAKLQotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlHcmFwaCA9IGZ1bmN0aW9uKGNhdGVnb3J5KQorV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdyA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0aGlz
Ll9jYXRlZ29yeSA9IGNhdGVnb3J5OworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIHRoaXMuZWxlbWVudC5saXN0Um93ID0gdGhpczsKIAotICAg
IHRoaXMuX2dyYXBoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
IHRoaXMuX2dyYXBoRWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtZ3JhcGgtc2lkZSB0aW1l
bGluZS1vdmVydmlldy1ncmFwaC1zaWRlIjsKKyAgICB2YXIgaWNvbkVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgaWNvbkVsZW1lbnQuY2xhc3NOYW1lID0gInRp
bWVsaW5lLXRyZWUtaWNvbiI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGljb25FbGVt
ZW50KTsKIAotICAgIHRoaXMuX2JhckFyZWFFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQuY2xhc3NOYW1lID0gInRpbWVsaW5l
LWdyYXBoLWJhci1hcmVhIHRpbWVsaW5lLWNhdGVnb3J5LSIgKyBjYXRlZ29yeS5uYW1lOwotICAg
IHRoaXMuX2dyYXBoRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9iYXJBcmVhRWxlbWVudCk7Ci19
CisgICAgdGhpcy5fdHlwZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CisgICAgdGhpcy5fdHlwZUVsZW1lbnQuY2xhc3NOYW1lID0gInR5cGUiOworICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl90eXBlRWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5UaW1l
bGluZUNhdGVnb3J5R3JhcGgucHJvdG90eXBlID0gewotICAgIGdldCBncmFwaEVsZW1lbnQoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoRWxlbWVudDsKLSAgICB9LAorICAgIHZh
ciBzZXBhcmF0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
IHNlcGFyYXRvckVsZW1lbnQuY2xhc3NOYW1lID0gInNlcGFyYXRvciI7CisgICAgc2VwYXJhdG9y
RWxlbWVudC50ZXh0Q29udGVudCA9ICIgIjsKIAotICAgIGFkZENodW5rOiBmdW5jdGlvbihzdGFy
dCwgZW5kKQotICAgIHsKLSAgICAgICAgdmFyIGNodW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgIGNodW5rLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1ncmFwaC1iYXIi
OwotICAgICAgICB0aGlzLl9iYXJBcmVhRWxlbWVudC5hcHBlbmRDaGlsZChjaHVuayk7Ci0gICAg
ICAgIGNodW5rLnN0eWxlLnNldFByb3BlcnR5KCJsZWZ0Iiwgc3RhcnQgKyAiJSIpOwotICAgICAg
ICBjaHVuay5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLCAoZW5kIC0gc3RhcnQpICsgIiUiKTsK
LSAgICB9LAorICAgIHRoaXMuX2RhdGFFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOworICAgIHRoaXMuX2RhdGFFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhIGRpbW1lZCI7
CiAKLSAgICBjbGVhckNodW5rczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fYmFy
QXJlYUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIHRoaXMuX3JlcGVhdENv
dW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICB0aGlzLl9y
ZXBlYXRDb3VudEVsZW1lbnQuY2xhc3NOYW1lID0gImNvdW50IjsKKworICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZChzZXBhcmF0b3JFbGVtZW50KTsKKyAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fZGF0YUVsZW1lbnQpOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9yZXBlYXRDb3VudEVsZW1lbnQpOworfQogCi0gICAgc2V0IGRpbW1lZChkaW1tZWQpCitX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnByb3RvdHlwZSA9IHsKKyAgICB1cGRh
dGU6IGZ1bmN0aW9uKHJlY29yZCwgaXNFdmVuKQogICAgIHsKLSAgICAgICAgaWYgKGRpbW1lZCkK
LSAgICAgICAgICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInRpbWVs
aW5lLWNhdGVnb3J5LSIgKyB0aGlzLl9jYXRlZ29yeS5uYW1lKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS10cmVlLWl0ZW0gdGltZWxpbmUtY2F0ZWdvcnktIiAr
IHJlY29yZC5jYXRlZ29yeS5uYW1lICsgKGlzRXZlbiA/ICIgZXZlbiIgOiAiIik7CisgICAgICAg
IHRoaXMuX3R5cGVFbGVtZW50LnRleHRDb250ZW50ID0gcmVjb3JkLnRpdGxlOworCisgICAgICAg
IGlmIChyZWNvcmQuZGV0YWlscykgeworICAgICAgICAgICAgdGhpcy5fZGF0YUVsZW1lbnQudGV4
dENvbnRlbnQgPSAiKCIgKyByZWNvcmQuZGV0YWlscyArICIpIjsKKyAgICAgICAgICAgIHRoaXMu
X2RhdGFFbGVtZW50LnRpdGxlID0gcmVjb3JkLmRldGFpbHM7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0aGlzLl9kYXRhRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOworICAgICAgICAg
ICAgdGhpcy5fZGF0YUVsZW1lbnQudGl0bGUgPSAiIjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChyZWNvcmQuY291bnQgPiAxKQorICAgICAgICAgICAgdGhpcy5fcmVwZWF0Q291bnRFbGVtZW50
LnRleHRDb250ZW50ID0gIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyByZWNvcmQuY291bnQ7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
InRpbWVsaW5lLWNhdGVnb3J5LSIgKyB0aGlzLl9jYXRlZ29yeS5uYW1lKTsKKyAgICAgICAgICAg
IHRoaXMuX3JlcGVhdENvdW50RWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwogICAgIH0KIH0KIAog
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVHcmFwaCA9IGZ1bmN0aW9uKHJlY29yZCkKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMucmVj
b3JkID0gcmVjb3JkOwotCi0gICAgdGhpcy5fZ3JhcGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZ3JhcGhFbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1l
bGluZS1ncmFwaC1zaWRlIjsKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICB0aGlzLmVsZW1lbnQuZ3JhcGhSb3cgPSB0aGlzOwogCiAgICAgdGhp
cy5fYmFyQXJlYUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0
aGlzLl9iYXJBcmVhRWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtZ3JhcGgtYmFyLWFyZWEi
OwotICAgIHRoaXMuX2dyYXBoRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9iYXJBcmVhRWxlbWVu
dCk7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JhckFyZWFFbGVtZW50KTsK
IAogICAgIHRoaXMuX2JhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICB0aGlzLl9iYXJFbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1ncmFwaC1iYXIiOwog
ICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JhckVsZW1lbnQpOwot
Ci0gICAgdGhpcy5fZ3JhcGhFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRpbWVsaW5lLWNhdGVnb3J5
LSIgKyByZWNvcmQuY2F0ZWdvcnkubmFtZSk7Ci0gICAgdGhpcy5faGlkZGVuID0gZmFsc2U7CiB9
CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZUdyYXBoLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZ3Jh
cGhFbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ncmFwaEVsZW1lbnQ7Ci0g
ICAgfSwKLQotICAgIHJlZnJlc2hMYWJlbFBvc2l0aW9uczogZnVuY3Rpb24oKQorV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cucHJvdG90eXBlID0geworICAgIHVwZGF0ZTogZnVu
Y3Rpb24ocmVjb3JkLCBpc0V2ZW4sIGNhbGN1bGF0b3IpCiAgICAgewotICAgIH0sCi0KLSAgICBy
ZWZyZXNoOiBmdW5jdGlvbihjYWxjdWxhdG9yKQotICAgIHsKLSAgICAgICAgdmFyIHBlcmNlbnRh
Z2VzID0gY2FsY3VsYXRvci5jb21wdXRlQmFyR3JhcGhQZXJjZW50YWdlcyh0aGlzLnJlY29yZCk7
Ci0gICAgICAgIHZhciBsYWJlbHMgPSBjYWxjdWxhdG9yLmNvbXB1dGVCYXJHcmFwaExhYmVscyh0
aGlzLnJlY29yZCk7Ci0KLSAgICAgICAgdGhpcy5fcGVyY2VudGFnZXMgPSBwZXJjZW50YWdlczsK
LQotICAgICAgICBpZiAocGVyY2VudGFnZXMuc3RhcnQgPiAxMDAgfHwgcGVyY2VudGFnZXMuZW5k
IDwgMCkgewotICAgICAgICAgICAgaWYgKCF0aGlzLl9oaWRkZW4pIHsKLSAgICAgICAgICAgICAg
ICB0aGlzLl9ncmFwaEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5yZWNvcmQuX2l0ZW1zVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0
eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2hpZGRlbiA9IHRydWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9iYXJF
bGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJsZWZ0IiwgcGVyY2VudGFnZXMuc3RhcnQgKyAiJSIp
OwotICAgICAgICAgICAgdGhpcy5fYmFyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgicmlnaHQi
LCAoMTAwIC0gcGVyY2VudGFnZXMuZW5kKSArICIlIik7Ci0gICAgICAgICAgICBpZiAodGhpcy5f
aGlkZGVuKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZ3JhcGhFbGVtZW50LnJlbW92ZVN0eWxl
Q2xhc3MoImhpZGRlbiIpOwotICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkLl9pdGVtc1RyZWVF
bGVtZW50Lmxpc3RJdGVtRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9oaWRkZW4gPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICB2YXIgdG9vbHRpcCA9IChsYWJlbHMudG9vbHRpcCB8fCAiIik7Ci0gICAgICAg
IHRoaXMuX2JhckVsZW1lbnQudGl0bGUgPSB0b29sdGlwOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NOYW1lID0gInRpbWVsaW5lLWdyYXBoLXNpZGUgdGltZWxpbmUtY2F0ZWdvcnktIiArIHJl
Y29yZC5jYXRlZ29yeS5uYW1lICsgKGlzRXZlbiA/ICIgZXZlbiIgOiAiIik7CisgICAgICAgIHZh
ciBwZXJjZW50YWdlcyA9IGNhbGN1bGF0b3IuY29tcHV0ZUJhckdyYXBoUGVyY2VudGFnZXMocmVj
b3JkKTsKKyAgICAgICAgdGhpcy5fYmFyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgibGVmdCIs
IHBlcmNlbnRhZ2VzLnN0YXJ0ICsgIiUiKTsKKyAgICAgICAgdGhpcy5fYmFyRWxlbWVudC5zdHls
ZS5zZXRQcm9wZXJ0eSgicmlnaHQiLCAoMTAwIC0gcGVyY2VudGFnZXMuZW5kKSArICIlIik7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA1MzkxN2Y2
Li4zNmJiMmZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNjEs
NiArNjEsOCBAQAogICAgIDxmaWxlPlRlc3RDb250cm9sbGVyLmpzPC9maWxlPgogICAgIDxmaWxl
PlRleHRQcm9tcHQuanM8L2ZpbGU+CiAgICAgPGZpbGU+VGltZWxpbmVBZ2VudC5qczwvZmlsZT4K
KyAgICA8ZmlsZT5UaW1lbGluZUdyaWQuanM8L2ZpbGU+CisgICAgPGZpbGU+VGltZWxpbmVPdmVy
dmlld1BhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+VGltZWxpbmVQYW5lbC5qczwvZmlsZT4KICAg
ICA8ZmlsZT5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qczwvZmlsZT4KICAgICA8ZmlsZT50
cmVlb3V0bGluZS5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MKaW5kZXggMDM1ZGMxMy4uYWRhODFjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKQEAgLTE3NzcsOCArMTc3Nyw4IEBAIGxpLmVkaXRpbmcgLnN3YXRj
aCwgbGkuZWRpdGluZyAuZW5hYmxlZC1idXR0b24sICBsaS5lZGl0aW5nLXN1Yi1wYXJ0IC5kZWxl
dGUtYnV0CiAuc2lkZWJhciB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsK
KyAgICBtaW4taGVpZ2h0OiAxMDAlOwogICAgIGxlZnQ6IDA7Ci0gICAgYm90dG9tOiAwOwogICAg
IHdpZHRoOiAyMDBweDsKICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKQEAgLTI1OTAsNyArMjU5MCw3IEBAIGJ1dHRvbi5lbmFibGUtdG9nZ2xlLXN0YXR1cy1i
YXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CiAKICNyZXNvdXJjZXMtZGl2aWRlcnMtbGFiZWwt
YmFyIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiA5M3B4OworICAgIHRvcDog
MDsKICAgICBsZWZ0OiAwcHg7CiAgICAgcmlnaHQ6IDA7CiAgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwpAQCAtMjg1OCw3ICsyODU4LDcgQEAgYnV0dG9uLmVu
YWJsZS10b2dnbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKIC5zaWRlYmFy
LXJlc2l6ZXItdmVydGljYWwgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7
Ci0gICAgYm90dG9tOiAwOworICAgIG1pbi1oZWlnaHQ6IDEwMCU7CiAgICAgd2lkdGg6IDVweDsK
ICAgICB6LWluZGV4OiA1MDA7CiAgICAgY3Vyc29yOiBjb2wtcmVzaXplOwpAQCAtMzMzOCwxMCAr
MzMzOCw2IEBAIGJvZHkuaW5hY3RpdmUgLnNpZGViYXItdHJlZS1pdGVtLnNlbGVjdGVkIC5idWJi
bGUuc2VhcmNoLW1hdGNoZXMgewogICAgIC13ZWJraXQtYm94LXNoYWRvdzogd2hpdGUgMXB4IDAg
MCwgd2hpdGUgLTFweCAwIDAsIHdoaXRlIDAgMXB4IDAsIHdoaXRlIDAgLTFweCAwOwogfQogCi0u
dGltZWxpbmUgLnNpZGViYXItcmVzaXplci12ZXJ0aWNhbCB7Ci0gICAgdG9wOiA5MHB4OwotfQot
CiAjdGltZWxpbmUtb3ZlcnZpZXctZ3JpZCAjcmVzb3VyY2VzLWdyYXBocyB7CiAgICAgcG9zaXRp
b246IGFic29sdXRlOwogICAgIHRvcDogMDsKQEAgLTMzNjUsMTAgKzMzNjEsMjQgQEAgYm9keS5p
bmFjdGl2ZSAuc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgLmJ1YmJsZS5zZWFyY2gtbWF0Y2hl
cyB7CiAgICAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoSW1hZ2VzL2NsZWFyQ29uc29sZUJ1dHRv
bkdseXBoLnBuZyk7CiB9CiAKKy50aW1lbGluZS10cmVlLXNlY3Rpb24geworICAgIGNvbG9yOiBy
Z2IoOTIsIDExMCwgMTI5KTsKKyAgICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fu
cy1zZXJpZjsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBoZWlnaHQ6IDE4cHg7CisgICAg
bGluZS1oZWlnaHQ6IDE4cHg7CisgICAgbWFyZ2luLXRvcDogMXB4OworICAgIHBhZGRpbmctbGVm
dDogMTBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgdGV4dC1zaGFkb3c6IHJnYmEo
MjU1LCAyNTUsIDI1NSwgMC43NDYwOTQpIDBweCAxcHggMHB4OworICAgIHdoaXRlLXNwYWNlOiBu
b3dyYXA7Cit9CisKIC50aW1lbGluZS1jYXRlZ29yeS10cmVlLWl0ZW0gewogICAgIGhlaWdodDog
MjBweDsKKyAgICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKyAg
ICBsaW5lLWhlaWdodDogMjBweDsKICAgICBwYWRkaW5nLWxlZnQ6IDZweDsKLSAgICBwYWRkaW5n
LXRvcDogM3B4OwogICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgdGV4dC1vdmVyZmxvdzog
ZWxsaXBzaXM7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKQEAgLTM0MzMsNyArMzQ0Myw3IEBAIGJv
ZHkuaW5hY3RpdmUgLnNpZGViYXItdHJlZS1pdGVtLnNlbGVjdGVkIC5idWJibGUuc2VhcmNoLW1h
dGNoZXMgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKIH0KIAotLnRpbWVsaW5lLXRyZWUtaXRl
bTpudGgtb2YtdHlwZSgybikgeworLnRpbWVsaW5lLXRyZWUtaXRlbS5ldmVuIHsKICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpOwogfQogCkBAIC0zNDQxLDE2ICszNDUx
LDYgQEAgYm9keS5pbmFjdGl2ZSAuc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgLmJ1YmJsZS5z
ZWFyY2gtbWF0Y2hlcyB7CiAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTsKIH0KIAotI3Rp
bWVsaW5lLWNvbnRhaW5lciAudGltZWxpbmUtY2F0ZWdvcnktbG9hZGluZywgI3RpbWVsaW5lLWNv
bnRhaW5lciAudGltZWxpbmUtY2F0ZWdvcnktc2NyaXB0aW5nLCAjdGltZWxpbmUtY29udGFpbmVy
IC50aW1lbGluZS1jYXRlZ29yeS1yZW5kZXJpbmcgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0K
LSN0aW1lbGluZS1jb250YWluZXIgLmZpbHRlci1hbGwgLnRpbWVsaW5lLWNhdGVnb3J5LWxvYWRp
bmcsICN0aW1lbGluZS1jb250YWluZXIgLmZpbHRlci1sb2FkaW5nIC50aW1lbGluZS1jYXRlZ29y
eS1sb2FkaW5nLAotI3RpbWVsaW5lLWNvbnRhaW5lciAuZmlsdGVyLWFsbCAudGltZWxpbmUtY2F0
ZWdvcnktc2NyaXB0aW5nLCAjdGltZWxpbmUtY29udGFpbmVyIC5maWx0ZXItc2NyaXB0aW5nIC50
aW1lbGluZS1jYXRlZ29yeS1zY3JpcHRpbmcsCi0jdGltZWxpbmUtY29udGFpbmVyIC5maWx0ZXIt
YWxsIC50aW1lbGluZS1jYXRlZ29yeS1yZW5kZXJpbmcsICN0aW1lbGluZS1jb250YWluZXIgLmZp
bHRlci1yZW5kZXJpbmcgLnRpbWVsaW5lLWNhdGVnb3J5LXJlbmRlcmluZyB7Ci0gICAgZGlzcGxh
eTogbGlzdC1pdGVtOwotfQotCiAjdGltZWxpbmUtb3ZlcnZpZXctZ3JhcGhzIHsKICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CiAgICAgbGVmdDogMDsKQEAgLTM1MTAsNyArMzUxMCw3IEBAIGJvZHku
aW5hY3RpdmUgLnNpZGViYXItdHJlZS1pdGVtLnNlbGVjdGVkIC5idWJibGUuc2VhcmNoLW1hdGNo
ZXMgewogICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogfQogCi0udGltZWxpbmUtZ3JhcGgtc2lk
ZTpudGgtb2YtdHlwZSgybikgeworLnRpbWVsaW5lLWdyYXBoLXNpZGUuZXZlbiB7CiAgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IGE2MDlmODkuLmI4ODI0ZDIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTQ2LDYgKzQ2LDcg
QEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDaGFu
Z2VzVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iQ29uc29sZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlBhbmVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJUaW1lbGluZUdyaWQuanMiPjwvc2NyaXB0PiAgICAKICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBYnN0cmFjdFRpbWVsaW5lUGFuZWwu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJl
c291cmNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJSZXNvdXJjZUNhdGVnb3J5LmpzIj48L3NjcmlwdD4KQEAgLTk2LDYgKzk3LDcgQEAgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbmplY3RlZFNj
cmlwdEFjY2Vzcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iVGltZWxpbmVBZ2VudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVQYW5lbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVPdmVydmlld1BhbmUuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRlc3RD
b250cm9sbGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJkZXRhY2hlZCI+
Cg==
</data>
<flag name="review"
          id="25411"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>