<?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>79684</bug_id>
          
          <creation_ts>2012-02-27 10:51:04 -0800</creation_ts>
          <short_desc>Web Inspector: move record formatting into the timeline presentation model.</short_desc>
          <delta_ts>2012-02-27 11:14:47 -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>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565814</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-27 10:51:04 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565815</commentid>
    <comment_count>1</comment_count>
      <attachid>129069</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-27 10:52:43 -0800</bug_when>
    <thetext>Created attachment 129069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565820</commentid>
    <comment_count>2</comment_count>
      <attachid>129069</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-02-27 10:59:51 -0800</bug_when>
    <thetext>Comment on attachment 129069
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelineModel.js:-173
&gt; -        this.stopRecord();

So what happens when we load a file during record?

&gt; Source/WebCore/inspector/front-end/TimelinePresentationModel.js:195
&gt; +WebInspector.TimelinePresentationModel.Record = function(presentationModel, record, parentRecord, linkifier, scriptDetails)

Now that linkifier is in PresentationModel, we don&apos;t have to pass it as a separate patameter

&gt; Source/WebCore/inspector/front-end/TimelinePresentationModel.js:509
&gt; +    this._contentTable = document.createElement(&quot;table&quot;);;

one ;; should be enough</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565823</commentid>
    <comment_count>3</comment_count>
      <attachid>129069</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-02-27 11:02:17 -0800</bug_when>
    <thetext>Comment on attachment 129069
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelineOverviewPane.js:178
&gt; +        function updateBoundaries(record)

I think it&apos;s worth of a comment (or explicit return false)

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:896
&gt; +        return {left: left, width: width, widthWithChildren: widthWithChildren, cpuWidth: cpuWidth};

This could at least appear in the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565826</commentid>
    <comment_count>4</comment_count>
      <attachid>129069</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-27 11:04:04 -0800</bug_when>
    <thetext>Comment on attachment 129069
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:461
&gt; +                 this._glueParentButton.toggled &amp;&amp;

indent?

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:466
&gt; +            var newParentRecord = this._presentationModel._findParentRecord(record);

private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565828</commentid>
    <comment_count>5</comment_count>
      <attachid>129070</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-27 11:07:21 -0800</bug_when>
    <thetext>Created attachment 129070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565830</commentid>
    <comment_count>6</comment_count>
      <attachid>129071</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-27 11:10:12 -0800</bug_when>
    <thetext>Created attachment 129071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565836</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-27 11:14:47 -0800</bug_when>
    <thetext>Committed r109009: &lt;http://trac.webkit.org/changeset/109009&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129069</attachid>
            <date>2012-02-27 10:52:43 -0800</date>
            <delta_ts>2012-02-27 11:07:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79684-20120227225240.patch</filename>
            <type>text/plain</type>
            <size>73514</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI0OTAzNmVkNDllZmQy
OGE3ZjA1ZTA1MzY1NWEyYTZlYTEzYjg3MS4uZDE4ZTY0NzFmNzNkN2Q2OWNlMjI5YTM3OGMwMjNh
NTRkOGZjYjg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0IEBACiAyMDEyLTAyLTI3ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9y
OiBtb3ZlIHJlY29yZCBmb3JtYXR0aW5nIGludG8gdGhlIHRpbWVsaW5lIHByZXNlbnRhdGlvbiBt
b2RlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5
Njg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVNb2RlbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlLnVwZGF0ZS51cGRhdGVCb3VuZGFyaWVzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3VsYXRvci5wcm90b3R5
cGUudXBkYXRlQm91bmRhcmllcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9yb290UmVjb3JkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fdXBkYXRlUmVj
b3Jkc0NvdW50ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90
eXBlLl9yZXBvcHVsYXRlUmVjb3Jkcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5wcm90b3R5cGUuX29uVGltZWxpbmVFdmVudFJlY29yZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5l
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fcmVzZXRQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3Jl
ZnJlc2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl91
cGRhdGVCb3VuZGFyaWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnBy
b3RvdHlwZS5fZmlsdGVyUmVjb3Jkcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5wcm90b3R5cGUucmV2ZWFsUmVjb3JkQXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwucHJvdG90eXBlLl9zaG93UG9wb3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZS5jb21wdXRlQmFyR3JhcGhQZXJjZW50YWdl
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZS5j
b21wdXRlQmFyR3JhcGhXaW5kb3dQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZS51cGRhdGVCb3VuZGFyaWVzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVN0YXJ0QXRaZXJvQ2FsY3VsYXRvci5wcm90b3R5cGUuY29tcHV0
ZUJhckdyYXBoUGVyY2VudGFnZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkR3JhcGhSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhS
b3cucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLmNyZWF0ZUZvcm1hdHRlZFJlY29yZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2NyZWF0ZVJv
b3RSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlLnJvb3RSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZmluZFBhcmVudFJlY29yZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUuX3Jlc2V0V2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5fYWRkQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnNldENhdGVnb3J5VmlzaWJpbGl0
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuZ2V0IF9yZWNvcmRTdHlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUuZ2V0IGxhc3RDaGlsZEVuZFRpbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3Jk
LnByb3RvdHlwZS5zZXQgbGFzdENoaWxkRW5kVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLmdldCBzZWxmVGltZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQu
cHJvdG90eXBlLnNldCBzZWxmVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLmdldCBjcHVUaW1lKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUu
aXNMb25nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LlJlY29yZC5wcm90b3R5cGUuZ2V0IGNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUuY29udGFpbnNUaW1lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5w
cm90b3R5cGUuX2dlbmVyYXRlQWdncmVnYXRlZEluZm8pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZS5nZW5lcmF0ZVBvcHVw
Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5SZWNvcmQucHJvdG90eXBlLl9yZWZyZXNoRGV0YWlscyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLl9nZXRSZWNvcmRE
ZXRhaWxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LlJlY29yZC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLl9saW5raWZ5Q2Fs
bEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LlJlY29yZC5wcm90b3R5cGUuX2xpbmtpZnlUb3BDYWxsRnJhbWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZS5fbGlua2lm
eVNjcmlwdExvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUuY2FsY3VsYXRlQWdncmVnYXRlZFN0YXRzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90
b3R5cGUuZ2V0IGFnZ3JlZ2F0ZWRTdGF0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5Qb3B1cENvbnRlbnRIZWxwZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3Rv
dHlwZS5fY3JlYXRlQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50
YXRpb25Nb2RlbC5Qb3B1cENvbnRlbnRIZWxwZXIucHJvdG90eXBlLl9hcHBlbmRUZXh0Um93KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlBvcHVwQ29u
dGVudEhlbHBlci5wcm90b3R5cGUuX2FwcGVuZEVsZW1lbnRSb3cpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3Rv
dHlwZS5fYXBwZW5kU3RhY2tUcmFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC90
aW1lbGluZVBhbmVsLmNzczoKKyAgICAgICAgKC50aW1lbGluZS1ncmFwaC1iYXIuY3B1KToKKwor
MjAxMi0wMi0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogQ3RybCtLIHNob3VsZCBub3Qgem9vbSBpbgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2NzYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzCmluZGV4IDk2
ZjI1NDQxODUxNGUxYTVmMThmYjZmNzQ4OWY4YjJmZmYwZmI3MTMuLjJkMDc4Mzg4N2VmZGMyYTU3
YTM1NzljOTRiZTNmZDUwODVkMjI0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanMKQEAgLTE3MCw3ICsxNzAsNiBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICByZXNldDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgdGhpcy5zdG9wUmVjb3JkKCk7CiAgICAgICAgIHRoaXMuX3Jl
Y29yZHMgPSBbXTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZp
ZXdQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92
ZXJ2aWV3UGFuZS5qcwppbmRleCA1OTI2ZGI3MGU1OGI3MWJkMGEwNTVmYzUyZTE5OWI5ZmU2OTMw
ODIxLi41NDBlM2RkYTJkZjY3ZTUyNTY4MGE4ZjdiN2YyOGNmZWFjYThkNTA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVy
dmlld1BhbmUuanMKQEAgLTE3NCw3ICsxNzQsMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdQYW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBDcmVhdGUgc3BhcnNlIGFycmF5
cyB3aXRoIDEwMSBjZWxscyBlYWNoIHRvIGZpbGwgd2l0aCBjaHVua3MgZm9yIGEgZ2l2ZW4gY2F0
ZWdvcnkuCiAgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5yZXNldCgpOwotICAgICAg
ICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5mb3JBbGxSZWNvcmRzKHJlY29yZHMsIHRoaXMu
X292ZXJ2aWV3Q2FsY3VsYXRvci51cGRhdGVCb3VuZGFyaWVzLmJpbmQodGhpcy5fb3ZlcnZpZXdD
YWxjdWxhdG9yKSk7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiB1cGRhdGVCb3VuZGFyaWVz
KHJlY29yZCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9y
LnVwZGF0ZUJvdW5kYXJpZXMocmVjb3JkKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVjb3JkcyhyZWNvcmRzLCB1cGRhdGVC
b3VuZGFyaWVzLmJpbmQodGhpcykpOwogCiAgICAgICAgIGZ1bmN0aW9uIG1hcmtQZXJjZW50YWdl
c0ZvclJlY29yZChyZWNvcmQpCiAgICAgICAgIHsKQEAgLTQ3NywxNSArNDgzLDE2IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiAKICAgICB1
cGRhdGVCb3VuZGFyaWVzOiBmdW5jdGlvbihyZWNvcmQpCiAgICAgeworICAgICAgICB2YXIgcmVz
dWx0ID0gZmFsc2U7CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5taW5pbXVtQm91bmRhcnkgPT09
ICJ1bmRlZmluZWQiIHx8IHJlY29yZC5zdGFydFRpbWUgPCB0aGlzLm1pbmltdW1Cb3VuZGFyeSkg
ewogICAgICAgICAgICAgdGhpcy5taW5pbXVtQm91bmRhcnkgPSByZWNvcmQuc3RhcnRUaW1lOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwogICAg
ICAgICB9CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXhpbXVtQm91bmRhcnkgPT09ICJ1bmRl
ZmluZWQiIHx8IHJlY29yZC5lbmRUaW1lID4gdGhpcy5tYXhpbXVtQm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHRoaXMubWF4aW11bUJvdW5kYXJ5ID0gcmVjb3JkLmVuZFRpbWU7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKICAg
ICBnZXQgYm91bmRhcnlTcGFuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRleCAyMTRmMWEyMjcxOGE5YjE2NGFlMTliYzBm
YzYzNDE4MWJkODIwNzg4Li4yNGQ1NTQ5NjlhMjVkYTJlOWQ4NTM3NDdlYTFkMGMyMzU4MjY4MDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVBhbmVsLmpzCkBAIC0zOCw5ICszOCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0g
ZnVuY3Rpb24oKQogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygidGltZWxpbmVQYW5lbC5j
c3MiKTsKIAogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsKCk7Ci0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwu
YWRkQ2F0ZWdvcnkobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5KCJsb2FkaW5nIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkaW5nIiksICJyZ2IoNDcsMTAyLDIzNikiKSk7Ci0g
ICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkQ2F0ZWdvcnkobmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZUNhdGVnb3J5KCJzY3JpcHRpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlw
dGluZyIpLCAicmdiKDE1NywyMzEsMTE5KSIpKTsKLSAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2Rl
bC5hZGRDYXRlZ29yeShuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnkoInJlbmRlcmlu
ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVuZGVyaW5nIiksICJyZ2IoMTY0LDYwLDI1NSki
KSk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuV2luZG93Q2hhbmdlZCwgdGhp
cy5fc2NoZWR1bGVSZWZyZXNoLmJpbmQodGhpcywgZmFsc2UpKTsKICAgICB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLkV2ZW50cy5DYXRlZ29yeVZpc2liaWxpdHlDaGFuZ2VkLCB0aGlzLl9zY2hlZHVs
ZVJlZnJlc2guYmluZCh0aGlzLCB0cnVlKSk7CiAKQEAgLTk4LDE0ICs5NSw4IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2V4cGFuZEVsZW1lbnRz
LmlkID0gIm9ycGhhbi1leHBhbmQtZWxlbWVudHMiOwogICAgIHRoaXMuX2l0ZW1zR3JhcGhzRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9leHBhbmRFbGVtZW50cyk7CiAKLSAgICB0aGlzLl9yb290
UmVjb3JkID0gdGhpcy5fY3JlYXRlUm9vdFJlY29yZCgpOwotICAgIHRoaXMuX3NlbmRSZXF1ZXN0
UmVjb3JkcyA9IHt9OwotICAgIHRoaXMuX3NjaGVkdWxlZFJlc291cmNlUmVxdWVzdHMgPSB7fTsK
LSAgICB0aGlzLl90aW1lclJlY29yZHMgPSB7fTsKLSAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVSZWNvcmRzID0ge307Ci0KICAgICB0aGlzLl9jYWxjdWxhdG9yID0gbmV3IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUNhbGN1bGF0b3IoKTsKLSAgICB2YXIgc2hvcnRSZWNvcmRUaHJlc2hvbGRU
aXRsZSA9IE51bWJlci5zZWNvbmRzVG9TdHJpbmcoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
c2hvcnRSZWNvcmRUaHJlc2hvbGQpOworICAgIHZhciBzaG9ydFJlY29yZFRocmVzaG9sZFRpdGxl
ID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyhXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbC5zaG9ydFJlY29yZFRocmVzaG9sZCk7CiAgICAgdGhpcy5fc2hvd1Nob3J0UmVjb3Jk
c1RpdGxlVGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgcmVjb3JkcyB0aGF0
IGFyZSBzaG9ydGVyIHRoYW4gJXMiLCBzaG9ydFJlY29yZFRocmVzaG9sZFRpdGxlKTsKICAgICB0
aGlzLl9oaWRlU2hvcnRSZWNvcmRzVGl0bGVUZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJI
aWRlIHRoZSByZWNvcmRzIHRoYXQgYXJlIHNob3J0ZXIgdGhhbiAlcyIsIHNob3J0UmVjb3JkVGhy
ZXNob2xkVGl0bGUpOwogICAgIHRoaXMuX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnMoKTsKQEAgLTEy
OSwxMiArMTIwLDEzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQog
ICAgIHRoaXMuX21vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkLCB0aGlzLl9vblJlY29yZHNDbGVhcmVkLCB0aGlzKTsK
IAogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7Ci0gICAgdGhpcy5fbGlua2lmaWVyID0g
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7
CisKKyAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDsKKyAgICB0aGlzLl9hbGxSZWNv
cmRzQ291bnQgPSAwOwogfQogCiAvLyBEZWZpbmUgcm93IGhlaWdodCwgc2hvdWxkIGJlIGluIHN5
bmMgd2l0aCBzdHlsZXMgZm9yIHRpbWVsaW5lIGdyYXBocy4KIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVBhbmVsLnJvd0hlaWdodCA9IDE4OwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuc2hvcnRS
ZWNvcmRUaHJlc2hvbGQgPSAwLjAxNTsKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlID0gewogICAgIC8qKgpAQCAtMjA1LDQyICsxOTcsNiBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ7CiAg
ICAgfSwKIAotICAgIGdldCBfcmVjb3JkU3R5bGVzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhp
cy5fcmVjb3JkU3R5bGVzQXJyYXkpIHsKLSAgICAgICAgICAgIHZhciByZWNvcmRUeXBlcyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7Ci0gICAgICAgICAgICB2YXIgY2F0
ZWdvcmllcyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXM7Ci0KLSAgICAgICAg
ICAgIHZhciByZWNvcmRTdHlsZXMgPSB7fTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNv
cmRUeXBlcy5FdmVudERpc3BhdGNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RXZlbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTGF5b3V0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTGF5b3V0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJyZW5kZXJpbmciXSB9
OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlY2FsY3VsYXRlU3R5bGVz
XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjYWxjdWxhdGUgU3R5bGUiKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuUGFpbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJQYWludCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0gfTsKLSAgICAgICAg
ICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5QYXJzZUhUTUxdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJQYXJzZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJd
IH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZXJJbnN0YWxsXSA9
IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5zdGFsbCBUaW1lciIpLCBjYXRlZ29y
eTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1ty
ZWNvcmRUeXBlcy5UaW1lclJlbW92ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlbW92ZSBUaW1lciIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAg
ICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lckZpcmVdID0geyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lciBGaXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmll
c1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5Y
SFJSZWFkeVN0YXRlQ2hhbmdlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhS
IFJlYWR5IFN0YXRlIENoYW5nZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0g
fTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IGNhdGVnb3Jp
ZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMu
RXZhbHVhdGVTY3JpcHRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFdmFsdWF0
ZSBTY3JpcHQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAg
ICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZVN0YW1wXSA9IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU3RhbXAiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGlu
ZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5k
UmVxdWVzdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbmQgUmVxdWVzdCIp
LCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNlaXZlIFJlc3BvbnNlIiksIGNhdGVnb3J5OiBjYXRlZ29y
aWVzWyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5S
ZXNvdXJjZUZpbmlzaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbmlzaCBM
b2FkaW5nIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAg
IHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5GdW5jdGlvbkNhbGxdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiBDYWxsIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJz
Y3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291
cmNlUmVjZWl2ZWREYXRhXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2
ZSBEYXRhIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAg
IHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5HQ0V2ZW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiR0MgRXZlbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJd
IH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnRd
ID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJET01Db250ZW50IGV2ZW50IiksIGNh
dGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLk1hcmtMb2FkXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTG9hZCBldmVudCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAg
ICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5TY2hlZHVsZVJlc291cmNlUmVxdWVz
dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjaGVkdWxlIFJlcXVlc3QiKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLlJlcXVlc3RBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIiksIGNhdGVnb3J5OiBjYXRl
Z29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5
cGVzLkNhbmNlbEFuaW1hdGlvbkZyYW1lXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ2FuY2VsIEFuaW1hdGlvbiBGcmFtZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0
aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5GaXJlQW5pbWF0
aW9uRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbmltYXRpb24gRnJh
bWUgRmlyZWQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAg
ICAgICB0aGlzLl9yZWNvcmRTdHlsZXNBcnJheSA9IHJlY29yZFN0eWxlczsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkU3R5bGVzQXJyYXk7Ci0gICAgfSwKLQogICAgIF9j
cmVhdGVTdGF0dXNiYXJCdXR0b25zOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnRv
Z2dsZVRpbWVsaW5lQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmQiKSwgInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXIt
aXRlbSIpOwpAQCAtMzU5LDkgKzMxNSwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NyZWF0ZUZpbGVTZWxlY3RvcigpOwogICAgIH0s
CiAKKyAgICBfcm9vdFJlY29yZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNvcmQoKTsKKyAgICB9LAorCiAgICAgX3VwZGF0
ZVJlY29yZHNDb3VudGVyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLnJlY29yZHND
b3VudGVyLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBvZiAlZCBjYXB0
dXJlZCByZWNvcmRzIGFyZSB2aXNpYmxlIiwgdGhpcy5fcm9vdFJlY29yZC5fdmlzaWJsZVJlY29y
ZHNDb3VudCwgdGhpcy5fcm9vdFJlY29yZC5fYWxsUmVjb3Jkc0NvdW50KTsKKyAgICAgICAgdGhp
cy5yZWNvcmRzQ291bnRlci50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQg
b2YgJWQgY2FwdHVyZWQgcmVjb3JkcyBhcmUgdmlzaWJsZSIsIHRoaXMuX3Zpc2libGVSZWNvcmRz
Q291bnQsIHRoaXMuX2FsbFJlY29yZHNDb3VudCk7CiAgICAgfSwKIAogICAgIF91cGRhdGVFdmVu
dERpdmlkZXJzOiBmdW5jdGlvbigpCkBAIC00NzEsNyArNDMyLDcgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXNldFBhbmVsKCk7CiAg
ICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5fbW9kZWwucmVjb3JkczsKICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5faW5u
ZXJBZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZHNbaV0sIHRoaXMuX3Jvb3RSZWNvcmQpOworICAg
ICAgICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZHNbaV0sIHRoaXMu
X3Jvb3RSZWNvcmQoKSk7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaChmYWxzZSk7CiAg
ICAgfSwKIApAQCAtNDgyLDMzICs0NDMsMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlID0gewogCiAgICAgX29uVGltZWxpbmVFdmVudFJlY29yZGVkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZShldmVu
dC5kYXRhLCB0aGlzLl9yb290UmVjb3JkKTsKKyAgICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRU
b1RpbWVsaW5lKGV2ZW50LmRhdGEsIHRoaXMuX3Jvb3RSZWNvcmQoKSk7CiAgICAgICAgIHRoaXMu
X3NjaGVkdWxlUmVmcmVzaChmYWxzZSk7CiAKICAgICAgICAgaWYgKHRoaXMuX21lbW9yeVN0YXRp
c3RpY3MgJiYgZXZlbnQuZGF0YVsiY291bnRlcnMiXSkKICAgICAgICAgICAgIHRoaXMuX21lbW9y
eVN0YXRpc3RpY3MuYWRkVGltbGluZUV2ZW50KGV2ZW50KTsKICAgICB9LAogCi0gICAgX2ZpbmRQ
YXJlbnRSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5f
Z2x1ZVBhcmVudEJ1dHRvbi50b2dnbGVkKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAg
ICAgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3Jk
VHlwZTsKLSAgICAgICAgdmFyIHBhcmVudFJlY29yZDsKLSAgICAgICAgaWYgKHJlY29yZC50eXBl
ID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSB8fAotICAgICAgICAgICAg
cmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlRmluaXNoIHx8Ci0gICAgICAgICAg
ICByZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlZERhdGEpCi0gICAg
ICAgICAgICBwYXJlbnRSZWNvcmQgPSB0aGlzLl9zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRh
dGFbInJlcXVlc3RJZCJdXTsKLSAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29y
ZFR5cGVzLlRpbWVyRmlyZSkKLSAgICAgICAgICAgIHBhcmVudFJlY29yZCA9IHRoaXMuX3RpbWVy
UmVjb3Jkc1tyZWNvcmQuZGF0YVsidGltZXJJZCJdXTsKLSAgICAgICAgZWxzZSBpZiAocmVjb3Jk
LnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3QpCi0gICAgICAgICAgICBw
YXJlbnRSZWNvcmQgPSB0aGlzLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3RzW3JlY29yZC5kYXRh
WyJ1cmwiXV07Ci0gICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5G
aXJlQW5pbWF0aW9uRnJhbWUpCi0gICAgICAgICAgICBwYXJlbnRSZWNvcmQgPSB0aGlzLl9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWVSZWNvcmRzW3JlY29yZC5kYXRhWyJpZCJdXTsKLSAgICAgICAgcmV0
dXJuIHBhcmVudFJlY29yZDsKLSAgICB9LAotCiAgICAgX2lubmVyQWRkUmVjb3JkVG9UaW1lbGlu
ZTogZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNvcmQpCiAgICAgewogICAgICAgICB2YXIgY29u
bmVjdGVkVG9PbGRSZWNvcmQgPSBmYWxzZTsKQEAgLTUxNywxMSArNDU4LDEyIEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJlY29yZC50eXBl
ID09PSByZWNvcmRUeXBlcy5NYXJrRE9NQ29udGVudCB8fCByZWNvcmQudHlwZSA9PT0gcmVjb3Jk
VHlwZXMuTWFya0xvYWQpCiAgICAgICAgICAgICBwYXJlbnRSZWNvcmQgPSBudWxsOyAvLyBObyBi
YXIgZW50cnkgZm9yIGxvYWQgZXZlbnRzLgogICAgICAgICBlbHNlIGlmICghdGhpcy5fc3RhcnRB
dFplcm8gJiYKLSAgICAgICAgICAgICAgICAgICAgKHBhcmVudFJlY29yZCA9PT0gdGhpcy5fcm9v
dFJlY29yZCB8fAorICAgICAgICAgICAgICAgICB0aGlzLl9nbHVlUGFyZW50QnV0dG9uLnRvZ2ds
ZWQgJiYKKyAgICAgICAgICAgICAgICAgICAgKHBhcmVudFJlY29yZCA9PT0gdGhpcy5fcm9vdFJl
Y29yZCgpIHx8CiAgICAgICAgICAgICAgICAgICAgIHJlY29yZC50eXBlID09PSByZWNvcmRUeXBl
cy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSB8fAogICAgICAgICAgICAgICAgICAgICByZWNvcmQu
dHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2ggfHwKICAgICAgICAgICAgICAgICAg
ICAgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZWREYXRhKSkgewot
ICAgICAgICAgICAgdmFyIG5ld1BhcmVudFJlY29yZCA9IHRoaXMuX2ZpbmRQYXJlbnRSZWNvcmQo
cmVjb3JkKTsKKyAgICAgICAgICAgIHZhciBuZXdQYXJlbnRSZWNvcmQgPSB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5fZmluZFBhcmVudFJlY29yZChyZWNvcmQpOwogICAgICAgICAgICAgaWYgKG5l
d1BhcmVudFJlY29yZCkgewogICAgICAgICAgICAgICAgIHBhcmVudFJlY29yZCA9IG5ld1BhcmVu
dFJlY29yZDsKICAgICAgICAgICAgICAgICBjb25uZWN0ZWRUb09sZFJlY29yZCA9IHRydWU7CkBA
IC01NDgsMzUgKzQ5MCwzNSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgZm9ybWF0dGVkUmVj
b3JkID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZChyZWNv
cmQsIHBhcmVudFJlY29yZCwgdGhpcywgdGhpcy5fbGlua2lmaWVyLCBzY3JpcHREZXRhaWxzKTsK
KyAgICAgICAgdmFyIGZvcm1hdHRlZFJlY29yZCA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNy
ZWF0ZUZvcm1hdHRlZFJlY29yZChyZWNvcmQsIHBhcmVudFJlY29yZCwgc2NyaXB0RGV0YWlscyk7
CiAKICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5NYXJrRE9NQ29udGVu
dCB8fCByZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuTWFya0xvYWQpIHsKICAgICAgICAgICAg
IHRoaXMuX3RpbWVTdGFtcFJlY29yZHMucHVzaChmb3JtYXR0ZWRSZWNvcmQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgKyt0aGlzLl9yb290UmVjb3JkLl9hbGxS
ZWNvcmRzQ291bnQ7Ci0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5jb2xsYXBzZWQgPSAocGFyZW50
UmVjb3JkID09PSB0aGlzLl9yb290UmVjb3JkKTsKKyAgICAgICAgKyt0aGlzLl9hbGxSZWNvcmRz
Q291bnQ7CisgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jb2xsYXBzZWQgPSAocGFyZW50UmVjb3Jk
ID09PSB0aGlzLl9yb290UmVjb3JkKCkpOwogCiAgICAgICAgIHZhciBjaGlsZHJlbkNvdW50ID0g
Y2hpbGRyZW4gPyBjaGlsZHJlbi5sZW5ndGggOiAwOwogICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoaWxkcmVuQ291bnQ7ICsraSkKICAgICAgICAgICAgIHRoaXMuX2lubmVyQWRkUmVjb3Jk
VG9UaW1lbGluZShjaGlsZHJlbltpXSwgZm9ybWF0dGVkUmVjb3JkKTsKIAotICAgICAgICBmb3Jt
YXR0ZWRSZWNvcmQuX2NhbGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0aGlzLl9wcmVzZW50YXRpb25N
b2RlbC5jYXRlZ29yaWVzKTsKKyAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGN1bGF0ZUFnZ3Jl
Z2F0ZWRTdGF0cyh0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yaWVzKTsKIAogICAgICAg
ICBpZiAoY29ubmVjdGVkVG9PbGRSZWNvcmQpIHsKICAgICAgICAgICAgIHJlY29yZCA9IGZvcm1h
dHRlZFJlY29yZDsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICB2YXIgcGFyZW50
ID0gcmVjb3JkLnBhcmVudDsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50Ll9sYXN0Q2hpbGRF
bmRUaW1lIDwgcmVjb3JkLl9sYXN0Q2hpbGRFbmRUaW1lKQotICAgICAgICAgICAgICAgICAgICBw
YXJlbnQuX2xhc3RDaGlsZEVuZFRpbWUgPSByZWNvcmQuX2xhc3RDaGlsZEVuZFRpbWU7Ci0gICAg
ICAgICAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gZm9ybWF0dGVkUmVjb3JkLl9hZ2dyZWdh
dGVkU3RhdHMpCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC5fYWdncmVnYXRlZFN0YXRzW2Nh
dGVnb3J5XSArPSBmb3JtYXR0ZWRSZWNvcmQuX2FnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV07Cisg
ICAgICAgICAgICAgICAgaWYgKHBhcmVudC5sYXN0Q2hpbGRFbmRUaW1lIDwgcmVjb3JkLmxhc3RD
aGlsZEVuZFRpbWUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5sYXN0Q2hpbGRFbmRUaW1l
ID0gcmVjb3JkLmxhc3RDaGlsZEVuZFRpbWU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY2F0
ZWdvcnkgaW4gZm9ybWF0dGVkUmVjb3JkLmFnZ3JlZ2F0ZWRTdGF0cykKKyAgICAgICAgICAgICAg
ICAgICAgcGFyZW50LmFnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV0gKz0gZm9ybWF0dGVkUmVjb3Jk
LmFnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV07CiAgICAgICAgICAgICAgICAgcmVjb3JkID0gcGFy
ZW50OwogICAgICAgICAgICAgfSB3aGlsZSAocmVjb3JkLnBhcmVudCk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAocGFyZW50UmVjb3JkICE9PSB0aGlzLl9yb290UmVjb3JkKQot
ICAgICAgICAgICAgICAgIHBhcmVudFJlY29yZC5fc2VsZlRpbWUgLT0gZm9ybWF0dGVkUmVjb3Jk
LmVuZFRpbWUgLSBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lOworICAgICAgICAgICAgaWYgKHBh
cmVudFJlY29yZCAhPT0gdGhpcy5fcm9vdFJlY29yZCgpKQorICAgICAgICAgICAgICAgIHBhcmVu
dFJlY29yZC5zZWxmVGltZSAtPSBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSAtIGZvcm1hdHRlZFJl
Y29yZC5zdGFydFRpbWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gS2VlcCBiYXIgZW50cnkgZm9y
IG1hcmsgdGltZWxpbmUgc2luY2UgbmVzdGluZyBtaWdodCBiZSBpbnRlcmVzdGluZyB0byB0aGUg
dXNlci4KICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lU3RhbXAp
CkBAIC02MDIsMTYgKzU0NCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKGZhbHNlKTsKICAgICB9LAogCi0g
ICAgX2NyZWF0ZVJvb3RSZWNvcmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciByb290
UmVjb3JkID0ge307Ci0gICAgICAgIHJvb3RSZWNvcmQuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAg
cm9vdFJlY29yZC5fdmlzaWJsZVJlY29yZHNDb3VudCA9IDA7Ci0gICAgICAgIHJvb3RSZWNvcmQu
X2FsbFJlY29yZHNDb3VudCA9IDA7Ci0gICAgICAgIHJvb3RSZWNvcmQuX2FnZ3JlZ2F0ZWRTdGF0
cyA9IHt9OwotICAgICAgICByZXR1cm4gcm9vdFJlY29yZDsKLSAgICB9LAotCiAgICAgX2NsZWFy
UGFuZWw6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vZGVsLnJlc2V0KCk7CkBA
IC02MjcsMTYgKzU1OSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgewogICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5yZXNldCgpOwogICAg
ICAgICB0aGlzLl90aW1lU3RhbXBSZWNvcmRzID0gW107Ci0gICAgICAgIHRoaXMuX3NlbmRSZXF1
ZXN0UmVjb3JkcyA9IHt9OwotICAgICAgICB0aGlzLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3Rz
ID0ge307Ci0gICAgICAgIHRoaXMuX3RpbWVyUmVjb3JkcyA9IHt9OwotICAgICAgICB0aGlzLl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVSZWNvcmRzID0ge307Ci0gICAgICAgIHRoaXMuX3Jvb3RSZWNv
cmQgPSB0aGlzLl9jcmVhdGVSb290UmVjb3JkKCk7CiAgICAgICAgIHRoaXMuX2JvdW5kYXJpZXNB
cmVWYWxpZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9vdmVydmlld1BhbmUucmVzZXQoKTsKICAg
ICAgICAgdGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oMCk7CiAgICAgICAgIHRoaXMuX2Nsb3Nl
UmVjb3JkRGV0YWlscygpOwotICAgICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQoKTsKKyAgICAg
ICAgdGhpcy5fdmlzaWJsZVJlY29yZHNDb3VudCA9IDA7CisgICAgICAgIHRoaXMuX2FsbFJlY29y
ZHNDb3VudCA9IDA7CiAgICAgfSwKIAogICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRp
b25zRm9yOiBmdW5jdGlvbigpCkBAIC02OTAsNyArNjE4LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JlZnJlc2hU
aW1lb3V0OwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLnVwZGF0ZSh0
aGlzLl9yb290UmVjb3JkLmNoaWxkcmVuLCB0aGlzLl9zaG93U2hvcnRFdmVudHMpOworICAgICAg
ICB0aGlzLl9vdmVydmlld1BhbmUudXBkYXRlKHRoaXMuX3Jvb3RSZWNvcmQoKS5jaGlsZHJlbiwg
dGhpcy5fc2hvd1Nob3J0RXZlbnRzKTsKIAogICAgICAgICBpZiAoIXRoaXMuX2JvdW5kYXJpZXNB
cmVWYWxpZCkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUJvdW5kYXJpZXMoKTsKQEAgLTcwOSw4
ICs2MzcsOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX2NhbGN1bGF0b3Iud2luZG93TGVmdCA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVs
LndpbmRvd0xlZnQ7CiAgICAgICAgIHRoaXMuX2NhbGN1bGF0b3Iud2luZG93UmlnaHQgPSB0aGlz
Ll9wcmVzZW50YXRpb25Nb2RlbC53aW5kb3dSaWdodDsKIAotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX3Jvb3RSZWNvcmQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAg
ICB0aGlzLl9jYWxjdWxhdG9yLnVwZGF0ZUJvdW5kYXJpZXModGhpcy5fcm9vdFJlY29yZC5jaGls
ZHJlbltpXSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcm9vdFJlY29yZCgp
LmNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRvci51cGRh
dGVCb3VuZGFyaWVzKHRoaXMuX3Jvb3RSZWNvcmQoKS5jaGlsZHJlbltpXSk7CiAKICAgICAgICAg
dGhpcy5fY2FsY3VsYXRvci5jYWxjdWxhdGVXaW5kb3coKTsKICAgICB9LApAQCAtNzE4LDExICs2
NDYsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgIF9m
aWx0ZXJSZWNvcmRzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgcmVjb3Jkc0luV2lu
ZG93ID0gW107Ci0gICAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLl9zdGFydEF0WmVybyA/IG5ldyBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVTdGFydEF0WmVyb1JlY29yZEZpbHRlcih0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbCwgdGhpcy5fcm9vdFJlY29yZCwgdGhpcy5fc2hvd1Nob3J0RXZlbnRzKQorICAg
ICAgICB2YXIgZmlsdGVyID0gdGhpcy5fc3RhcnRBdFplcm8gPyBuZXcgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lU3RhcnRBdFplcm9SZWNvcmRGaWx0ZXIodGhpcy5fcHJlc2VudGF0aW9uTW9kZWwsIHRo
aXMuX3Jvb3RSZWNvcmQoKSwgdGhpcy5fc2hvd1Nob3J0RXZlbnRzKQogICAgICAgICAgICAgOiBu
ZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRmlsdGVyKHRoaXMuX2NhbGN1bGF0b3IsIHRo
aXMuX3Nob3dTaG9ydEV2ZW50cyk7Ci0gICAgICAgIHRoaXMuX3Jvb3RSZWNvcmQuX3Zpc2libGVS
ZWNvcmRzQ291bnQgPSAwOworICAgICAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDsK
IAotICAgICAgICB2YXIgc3RhY2sgPSBbe2NoaWxkcmVuOiB0aGlzLl9yb290UmVjb3JkLmNoaWxk
cmVuLCBpbmRleDogMCwgcGFyZW50SXNDb2xsYXBzZWQ6IGZhbHNlfV07CisgICAgICAgIHZhciBz
dGFjayA9IFt7Y2hpbGRyZW46IHRoaXMuX3Jvb3RSZWNvcmQoKS5jaGlsZHJlbiwgaW5kZXg6IDAs
IHBhcmVudElzQ29sbGFwc2VkOiBmYWxzZX1dOwogICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3Ro
KSB7CiAgICAgICAgICAgICB2YXIgZW50cnkgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTsKICAg
ICAgICAgICAgIHZhciByZWNvcmRzID0gZW50cnkuY2hpbGRyZW47CkBAIC03MzEsNyArNjU5LDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgICArK2VudHJ5LmluZGV4OwogCiAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIuYWNjZXB0
KHJlY29yZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICsrdGhpcy5fcm9vdFJlY29yZC5fdmlz
aWJsZVJlY29yZHNDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICsrdGhpcy5fdmlzaWJsZVJl
Y29yZHNDb3VudDsKICAgICAgICAgICAgICAgICAgICAgICsrcmVjb3JkLnBhcmVudC5faW52aXNp
YmxlQ2hpbGRyZW5Db3VudDsKICAgICAgICAgICAgICAgICAgICAgIGlmICghZW50cnkucGFyZW50
SXNDb2xsYXBzZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3Jkc0luV2luZG93LnB1
c2gocmVjb3JkKTsKQEAgLTc2OCw3ICs2OTYsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVj
b3Jkcyh0aGlzLl9yb290UmVjb3JkLmNoaWxkcmVuLCByZWNvcmRGaW5kZXIpOworICAgICAgICBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5mb3JBbGxSZWNvcmRzKHRoaXMuX3Jvb3RSZWNvcmQo
KS5jaGlsZHJlbiwgcmVjb3JkRmluZGVyKTsKIAogICAgICAgICAvLyBUaGUgcmVjb3JkIGVuZHMg
YmVmb3JlIHRoZSB3aW5kb3cgbGVmdCBib3VuZCBzbyBzY3JvbGwgdG8gdGhlIHRvcC4KICAgICAg
ICAgaWYgKCFyZWNvcmRUb1JldmVhbCkgewpAQCAtNzc3LDcgKzcwNSw3IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEV4
cGFuZCBhbGwgYW5jZXN0b3JzLgotICAgICAgICBmb3IgKHZhciBwYXJlbnQgPSByZWNvcmRUb1Jl
dmVhbC5wYXJlbnQ7IHBhcmVudCAhPT0gdGhpcy5fcm9vdFJlY29yZDsgcGFyZW50ID0gcGFyZW50
LnBhcmVudCkKKyAgICAgICAgZm9yICh2YXIgcGFyZW50ID0gcmVjb3JkVG9SZXZlYWwucGFyZW50
OyBwYXJlbnQgIT09IHRoaXMuX3Jvb3RSZWNvcmQoKTsgcGFyZW50ID0gcGFyZW50LnBhcmVudCkK
ICAgICAgICAgICAgIHBhcmVudC5jb2xsYXBzZWQgPSBmYWxzZTsKICAgICAgICAgdmFyIHJlY29y
ZHNJbldpbmRvdyA9IHRoaXMuX2ZpbHRlclJlY29yZHMoKTsKICAgICAgICAgdmFyIGluZGV4ID0g
cmVjb3Jkc0luV2luZG93LmluZGV4T2YocmVjb3JkVG9SZXZlYWwpOwpAQCAtOTExLDcgKzgzOSw3
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBfc2hvd1Bv
cG92ZXI6IGZ1bmN0aW9uKGFuY2hvciwgcG9wb3ZlcikKICAgICB7CiAgICAgICAgIHZhciByZWNv
cmQgPSBhbmNob3Iucm93Ll9yZWNvcmQ7Ci0gICAgICAgIHBvcG92ZXIuc2hvdyhyZWNvcmQuX2dl
bmVyYXRlUG9wdXBDb250ZW50KHRoaXMuX2NhbGN1bGF0b3IsIHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmNhdGVnb3JpZXMpLCBhbmNob3IpOworICAgICAgICBwb3BvdmVyLnNob3cocmVjb3JkLmdl
bmVyYXRlUG9wdXBDb250ZW50KHRoaXMuX2NhbGN1bGF0b3IpLCBhbmNob3IpOwogICAgIH0sCiAK
ICAgICBfY2xvc2VSZWNvcmREZXRhaWxzOiBmdW5jdGlvbigpCkBAIC05NDYsOSArODc0LDEwIEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IucHJvdG90eXBlID0gewogICAgIGNvbXB1
dGVCYXJHcmFwaFBlcmNlbnRhZ2VzOiBmdW5jdGlvbihyZWNvcmQpCiAgICAgewogICAgICAgICB2
YXIgc3RhcnQgPSAocmVjb3JkLnN0YXJ0VGltZSAtIHRoaXMubWluaW11bUJvdW5kYXJ5KSAvIHRo
aXMuYm91bmRhcnlTcGFuICogMTAwOwotICAgICAgICB2YXIgZW5kID0gKHJlY29yZC5zdGFydFRp
bWUgKyByZWNvcmQuX3NlbGZUaW1lIC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3Vu
ZGFyeVNwYW4gKiAxMDA7Ci0gICAgICAgIHZhciBlbmRXaXRoQ2hpbGRyZW4gPSAocmVjb3JkLl9s
YXN0Q2hpbGRFbmRUaW1lIC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNw
YW4gKiAxMDA7Ci0gICAgICAgIHJldHVybiB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCwgZW5kV2l0
aENoaWxkcmVuOiBlbmRXaXRoQ2hpbGRyZW59OworICAgICAgICB2YXIgZW5kID0gKHJlY29yZC5z
dGFydFRpbWUgKyByZWNvcmQuc2VsZlRpbWUgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeSkgLyB0aGlz
LmJvdW5kYXJ5U3BhbiAqIDEwMDsKKyAgICAgICAgdmFyIGVuZFdpdGhDaGlsZHJlbiA9IChyZWNv
cmQubGFzdENoaWxkRW5kVGltZSAtIHRoaXMubWluaW11bUJvdW5kYXJ5KSAvIHRoaXMuYm91bmRh
cnlTcGFuICogMTAwOworICAgICAgICB2YXIgY3B1V2lkdGggPSByZWNvcmQuY3B1VGltZSAvIHRo
aXMuYm91bmRhcnlTcGFuICogMTAwOworICAgICAgICByZXR1cm4ge3N0YXJ0OiBzdGFydCwgZW5k
OiBlbmQsIGVuZFdpdGhDaGlsZHJlbjogZW5kV2l0aENoaWxkcmVuLCBjcHVXaWR0aDogY3B1V2lk
dGh9OwogICAgIH0sCiAKICAgICBjb21wdXRlQmFyR3JhcGhXaW5kb3dQb3NpdGlvbjogZnVuY3Rp
b24ocmVjb3JkLCBjbGllbnRXaWR0aCkKQEAgLTk2MSw5ICs4OTAsMTAgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBsZWZ0ID0gcGVy
Y2VudGFnZXMuc3RhcnQgLyAxMDAgKiB3b3JraW5nQXJlYTsKICAgICAgICAgdmFyIHdpZHRoID0g
KHBlcmNlbnRhZ2VzLmVuZCAtIHBlcmNlbnRhZ2VzLnN0YXJ0KSAvIDEwMCAqIHdvcmtpbmdBcmVh
ICsgbWluV2lkdGg7CiAgICAgICAgIHZhciB3aWR0aFdpdGhDaGlsZHJlbiA9ICAocGVyY2VudGFn
ZXMuZW5kV2l0aENoaWxkcmVuIC0gcGVyY2VudGFnZXMuc3RhcnQpIC8gMTAwICogd29ya2luZ0Fy
ZWE7CisgICAgICAgIHZhciBjcHVXaWR0aCA9IHBlcmNlbnRhZ2VzLmNwdVdpZHRoIC8gMTAwICog
d29ya2luZ0FyZWEgKyBtaW5XaWR0aDsKICAgICAgICAgaWYgKHBlcmNlbnRhZ2VzLmVuZFdpdGhD
aGlsZHJlbiA+IHBlcmNlbnRhZ2VzLmVuZCkKICAgICAgICAgICAgIHdpZHRoV2l0aENoaWxkcmVu
ICs9IGJvcmRlcldpZHRoICsgbWluV2lkdGg7Ci0gICAgICAgIHJldHVybiB7bGVmdDogbGVmdCwg
d2lkdGg6IHdpZHRoLCB3aWR0aFdpdGhDaGlsZHJlbjogd2lkdGhXaXRoQ2hpbGRyZW59OworICAg
ICAgICByZXR1cm4ge2xlZnQ6IGxlZnQsIHdpZHRoOiB3aWR0aCwgd2lkdGhXaXRoQ2hpbGRyZW46
IHdpZHRoV2l0aENoaWxkcmVuLCBjcHVXaWR0aDogY3B1V2lkdGh9OwogICAgIH0sCiAKICAgICBj
YWxjdWxhdGVXaW5kb3c6IGZ1bmN0aW9uKCkKQEAgLTk4Nyw3ICs5MTcsNyBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBjb25zdCBtaW5p
bXVtVGltZUZyYW1lID0gMC4xOwogICAgICAgICBjb25zdCBtaW5pbXVtRGVsdGFGb3JaZXJvU2l6
ZUV2ZW50cyA9IDAuMDE7Ci0gICAgICAgIHZhciB1cHBlckJvdW5kID0gTWF0aC5tYXgocmVjb3Jk
Ll9sYXN0Q2hpbGRFbmRUaW1lICsgbWluaW11bURlbHRhRm9yWmVyb1NpemVFdmVudHMsIGxvd2Vy
Qm91bmQgKyBtaW5pbXVtVGltZUZyYW1lKTsKKyAgICAgICAgdmFyIHVwcGVyQm91bmQgPSBNYXRo
Lm1heChyZWNvcmQubGFzdENoaWxkRW5kVGltZSArIG1pbmltdW1EZWx0YUZvclplcm9TaXplRXZl
bnRzLCBsb3dlckJvdW5kICsgbWluaW11bVRpbWVGcmFtZSk7CiAgICAgICAgIGlmICh0aGlzLl9h
YnNvbHV0ZU1heGltdW1Cb3VuZGFyeSA9PT0gLTEgfHwgdXBwZXJCb3VuZCA+IHRoaXMuX2Fic29s
dXRlTWF4aW11bUJvdW5kYXJ5KQogICAgICAgICAgICAgdGhpcy5fYWJzb2x1dGVNYXhpbXVtQm91
bmRhcnkgPSB1cHBlckJvdW5kOwogICAgIH0sCkBAIC0xMDE2LDcgKzk0Niw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVN0YXJ0QXRaZXJvQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiB7CiAgICAgICAgICAgICBzdGFydDogcmVjb3JkLl9pbml0aWF0b3JPZmZzZXQgKiBz
Y2FsZSwKICAgICAgICAgICAgIGVuZDogKHJlY29yZC5faW5pdGlhdG9yT2Zmc2V0ICsgcmVjb3Jk
LmVuZFRpbWUgLSByZWNvcmQuc3RhcnRUaW1lKSAqIHNjYWxlLAotICAgICAgICAgICAgZW5kV2l0
aENoaWxkcmVuOiAocmVjb3JkLl9pbml0aWF0b3JPZmZzZXQgKyByZWNvcmQuX2xhc3RDaGlsZEVu
ZFRpbWUgLSByZWNvcmQuc3RhcnRUaW1lKSAqIHNjYWxlCisgICAgICAgICAgICBlbmRXaXRoQ2hp
bGRyZW46IChyZWNvcmQuX2luaXRpYXRvck9mZnNldCArIHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1l
IC0gcmVjb3JkLnN0YXJ0VGltZSkgKiBzY2FsZQogICAgICAgICB9OwogICAgIH0sCiAKQEAgLTEx
NDAsNiArMTA3MCwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdyA9IGZ1
bmN0aW9uKGdyYXBoQ29udGFpbmVyLCBzY2hlZHVsZVJlZnJlc2gpCiAgICAgdGhpcy5fYmFyV2l0
aENoaWxkcmVuRWxlbWVudC5yb3cgPSB0aGlzOwogICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2JhcldpdGhDaGlsZHJlbkVsZW1lbnQpOwogCisgICAgdGhpcy5fYmFy
Q3B1RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHRoaXMuX2Jh
ckNwdUVsZW1lbnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLWdyYXBoLWJhciBjcHUiCisgICAgdGhp
cy5fYmFyQ3B1RWxlbWVudC5yb3cgPSB0aGlzOworICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2JhckNwdUVsZW1lbnQpOworCiAgICAgdGhpcy5fYmFyRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckVsZW1lbnQuY2xh
c3NOYW1lID0gInRpbWVsaW5lLWdyYXBoLWJhciI7CiAgICAgdGhpcy5fYmFyRWxlbWVudC5yb3cg
PSB0aGlzOwpAQCAtMTE2MSw2ICsxMDk2LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
R3JhcGhSb3cucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9iYXJXaXRoQ2hpbGRyZW5FbGVt
ZW50LnN0eWxlLndpZHRoID0gYmFyUG9zaXRpb24ud2lkdGhXaXRoQ2hpbGRyZW4gKyAicHgiOwog
ICAgICAgICB0aGlzLl9iYXJFbGVtZW50LnN0eWxlLmxlZnQgPSBiYXJQb3NpdGlvbi5sZWZ0ICsg
ZXhwYW5kT2Zmc2V0ICsgInB4IjsKICAgICAgICAgdGhpcy5fYmFyRWxlbWVudC5zdHlsZS53aWR0
aCA9ICBiYXJQb3NpdGlvbi53aWR0aCArICJweCI7CisgICAgICAgIHRoaXMuX2JhckNwdUVsZW1l
bnQuc3R5bGUubGVmdCA9IGJhclBvc2l0aW9uLmxlZnQgKyBleHBhbmRPZmZzZXQgKyAicHgiOwor
ICAgICAgICB0aGlzLl9iYXJDcHVFbGVtZW50LnN0eWxlLndpZHRoID0gYmFyUG9zaXRpb24uY3B1
V2lkdGggKyAicHgiOwogICAgICAgICB0aGlzLl9leHBhbmRFbGVtZW50Ll91cGRhdGUocmVjb3Jk
LCBpbmRleCwgYmFyUG9zaXRpb24pOwogICAgIH0sCiAKQEAgLTEyMDAsMzYyICsxMTM3LDYgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVjb3JkcyA9IGZ1bmN0aW9uKHJlY29y
ZHNBcnJheSwgY2FsbGJhY2spCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICovCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQgPSBmdW5jdGlvbihyZWNvcmQsIHBhcmVu
dFJlY29yZCwgcGFuZWwsIGxpbmtpZmllciwgc2NyaXB0RGV0YWlscykKLXsKLSAgICB0aGlzLl9s
aW5raWZpZXIgPSBsaW5raWZpZXI7Ci0gICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZTsKLSAgICB2YXIgc3R5bGUgPSBwYW5lbC5fcmVjb3Jk
U3R5bGVzW3JlY29yZC50eXBlXTsKLSAgICB0aGlzLnBhcmVudCA9IHBhcmVudFJlY29yZDsKLSAg
ICBpZiAocGFyZW50UmVjb3JkKQotICAgICAgICBwYXJlbnRSZWNvcmQuY2hpbGRyZW4ucHVzaCh0
aGlzKTsKLSAgICB0aGlzLmNhdGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7Ci0gICAgdGhpcy50aXRs
ZSA9IHN0eWxlLnRpdGxlOwotICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZSAv
IDEwMDA7Ci0gICAgdGhpcy5kYXRhID0gcmVjb3JkLmRhdGE7Ci0gICAgdGhpcy50eXBlID0gcmVj
b3JkLnR5cGU7Ci0gICAgdGhpcy5lbmRUaW1lID0gKHR5cGVvZiByZWNvcmQuZW5kVGltZSAhPT0g
InVuZGVmaW5lZCIpID8gcmVjb3JkLmVuZFRpbWUgLyAxMDAwIDogdGhpcy5zdGFydFRpbWU7Ci0g
ICAgdGhpcy5fc2VsZlRpbWUgPSB0aGlzLmVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZTsKLSAgICB0
aGlzLl9sYXN0Q2hpbGRFbmRUaW1lID0gdGhpcy5lbmRUaW1lOwotICAgIHRoaXMuX2luaXRpYXRv
ck9mZnNldCA9IChwYXJlbnRSZWNvcmQgJiYgcGFyZW50UmVjb3JkICE9PSBwYW5lbC5fcm9vdFJl
Y29yZCkgPwotICAgICAgICBwYXJlbnRSZWNvcmQuX2luaXRpYXRvck9mZnNldCArIHRoaXMuc3Rh
cnRUaW1lIC0gcGFyZW50UmVjb3JkLnN0YXJ0VGltZSA6IDA7Ci0KLSAgICBpZiAocmVjb3JkLnN0
YWNrVHJhY2UgJiYgcmVjb3JkLnN0YWNrVHJhY2UubGVuZ3RoKQotICAgICAgICB0aGlzLnN0YWNr
VHJhY2UgPSByZWNvcmQuc3RhY2tUcmFjZTsKLSAgICB0aGlzLnRvdGFsSGVhcFNpemUgPSByZWNv
cmQudG90YWxIZWFwU2l6ZTsKLSAgICB0aGlzLnVzZWRIZWFwU2l6ZSA9IHJlY29yZC51c2VkSGVh
cFNpemU7Ci0gICAgaWYgKHJlY29yZC5kYXRhICYmIHJlY29yZC5kYXRhWyJ1cmwiXSkKLSAgICAg
ICAgdGhpcy51cmwgPSByZWNvcmQuZGF0YVsidXJsIl07Ci0gICAgaWYgKHNjcmlwdERldGFpbHMp
IHsKLSAgICAgICAgdGhpcy5zY3JpcHROYW1lID0gc2NyaXB0RGV0YWlscy5zY3JpcHROYW1lOwot
ICAgICAgICB0aGlzLnNjcmlwdExpbmUgPSBzY3JpcHREZXRhaWxzLnNjcmlwdExpbmU7Ci0gICAg
fQotICAgIC8vIE1ha2UgcmVzb3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1ZXN0
IHdhcyBzZW50OyBtYWtlIGZpbmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNwb25zZSByZWNlaXZl
ZC4KLSAgICBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVl
c3QpIHsKLSAgICAgICAgcGFuZWwuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YVsicmVx
dWVzdElkIl1dID0gdGhpczsKLSAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRU
eXBlcy5TY2hlZHVsZVJlc291cmNlUmVxdWVzdCkgewotICAgICAgICBwYW5lbC5fc2NoZWR1bGVk
UmVzb3VyY2VSZXF1ZXN0c1tyZWNvcmQuZGF0YVsidXJsIl1dID0gdGhpczsKLSAgICB9IGVsc2Ug
aWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSkg
ewotICAgICAgICB2YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSBwYW5lbC5fc2VuZFJlcXVlc3RSZWNv
cmRzW3JlY29yZC5kYXRhWyJyZXF1ZXN0SWQiXV07Ci0gICAgICAgIGlmIChzZW5kUmVxdWVzdFJl
Y29yZCkgeyAvLyBGYWxzZSBpZiB3ZSBzdGFydGVkIGluc3RydW1lbnRhdGlvbiBpbiB0aGUgbWlk
ZGxlIG9mIHJlcXVlc3QuCi0gICAgICAgICAgICB0aGlzLnVybCA9IHNlbmRSZXF1ZXN0UmVjb3Jk
LnVybDsKLSAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgcmVzb3VyY2UgaW4gdGhlIGNv
bGxlY3Rpb24sIHJlY2FsY3VsYXRlIGRldGFpbHMgaW4gb3JkZXIgdG8gZGlzcGxheSBzaG9ydCB1
cmwuCi0gICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVmcmVzaERldGFpbHMoKTsKLSAg
ICAgICAgICAgIGlmIChzZW5kUmVxdWVzdFJlY29yZC5wYXJlbnQgIT09IHBhbmVsLl9yb290UmVj
b3JkICYmIHNlbmRSZXF1ZXN0UmVjb3JkLnBhcmVudC50eXBlID09PSByZWNvcmRUeXBlcy5TY2hl
ZHVsZVJlc291cmNlUmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5w
YXJlbnQuX3JlZnJlc2hEZXRhaWxzKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlY29y
ZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0YSB8fCByZWNvcmQudHlw
ZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2gpIHsKLSAgICAgICAgdmFyIHNlbmRSZXF1
ZXN0UmVjb3JkID0gcGFuZWwuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YVsicmVxdWVz
dElkIl1dOwotICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIC8vIEZhbHNlIGZvciBtYWlu
IHJlc291cmNlLgotICAgICAgICAgICAgdGhpcy51cmwgPSBzZW5kUmVxdWVzdFJlY29yZC51cmw7
Ci0gICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuVGltZXJJbnN0YWxs
KSB7Ci0gICAgICAgIHRoaXMudGltZW91dCA9IHJlY29yZC5kYXRhWyJ0aW1lb3V0Il07Ci0gICAg
ICAgIHRoaXMuc2luZ2xlU2hvdCA9IHJlY29yZC5kYXRhWyJzaW5nbGVTaG90Il07Ci0gICAgICAg
IHBhbmVsLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGFbInRpbWVySWQiXV0gPSB0aGlzOwotICAg
IH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlRpbWVyRmlyZSkgewotICAg
ICAgICB2YXIgdGltZXJJbnN0YWxsZWRSZWNvcmQgPSBwYW5lbC5fdGltZXJSZWNvcmRzW3JlY29y
ZC5kYXRhWyJ0aW1lcklkIl1dOwotICAgICAgICBpZiAodGltZXJJbnN0YWxsZWRSZWNvcmQpIHsK
LSAgICAgICAgICAgIHRoaXMuY2FsbFNpdGVTdGFja1RyYWNlID0gdGltZXJJbnN0YWxsZWRSZWNv
cmQuc3RhY2tUcmFjZTsKLSAgICAgICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVySW5zdGFsbGVk
UmVjb3JkLnRpbWVvdXQ7Ci0gICAgICAgICAgICB0aGlzLnNpbmdsZVNob3QgPSB0aW1lckluc3Rh
bGxlZFJlY29yZC5zaW5nbGVTaG90OwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZWNvcmQu
dHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7Ci0gICAgICAgIHBh
bmVsLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVSZWNvcmRzW3JlY29yZC5kYXRhWyJpZCJdXSA9IHRo
aXM7Ci0gICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuRmlyZUFuaW1h
dGlvbkZyYW1lKSB7Ci0gICAgICAgIHZhciByZXF1ZXN0QW5pbWF0aW9uUmVjb3JkID0gcGFuZWwu
X3JlcXVlc3RBbmltYXRpb25GcmFtZVJlY29yZHNbcmVjb3JkLmRhdGFbImlkIl1dOwotICAgICAg
ICBpZiAocmVxdWVzdEFuaW1hdGlvblJlY29yZCkKLSAgICAgICAgICAgIHRoaXMuY2FsbFNpdGVT
dGFja1RyYWNlID0gcmVxdWVzdEFuaW1hdGlvblJlY29yZC5zdGFja1RyYWNlOwotICAgIH0KLSAg
ICB0aGlzLl9yZWZyZXNoRGV0YWlscygpOwotfQotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlID0gewotICAgIGlzTG9uZzogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLl9sYXN0Q2hpbGRFbmRUaW1lIC0gdGhpcy5zdGFy
dFRpbWUpID4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQ7
Ci0gICAgfSwKLQotICAgIGdldCBjaGlsZHJlbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMu
X2NoaWxkcmVuKQotICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2NoaWxkcmVuOwotICAgIH0sCi0KLSAgICBjb250YWluc1RpbWU6IGZ1bmN0aW9u
KHRpbWUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5zdGFydFRpbWUgPD0gdGltZSAmJiB0
aW1lIDw9IHRoaXMuZW5kVGltZTsKLSAgICB9LAotCi0gICAgX2dlbmVyYXRlQWdncmVnYXRlZElu
Zm86IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOwotICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1hZ2dy
ZWdhdGVkLWluZm8iOwotICAgICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLl9hZ2dyZWdhdGVk
U3RhdHMpIHsKLSAgICAgICAgICAgIHZhciBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgICAgICAgICAgbGFiZWwuY2xhc3NOYW1lID0gInRpbWVsaW5lLWFnZ3JlZ2F0
ZWQtY2F0ZWdvcnkgdGltZWxpbmUtIiArIGluZGV4OwotICAgICAgICAgICAgY2VsbC5hcHBlbmRD
aGlsZChsYWJlbCk7Ci0gICAgICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRleHQudGV4dENvbnRlbnQgPSBOdW1iZXIuc2Vjb25k
c1RvU3RyaW5nKHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0c1tpbmRleF0sIHRydWUpOwotICAgICAgICAg
ICAgY2VsbC5hcHBlbmRDaGlsZCh0ZXh0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY2Vs
bDsKLSAgICB9LAotCi0gICAgX2dlbmVyYXRlUG9wdXBDb250ZW50OiBmdW5jdGlvbihjYWxjdWxh
dG9yLCBjYXRlZ29yaWVzKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnRIZWxwZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyKHRoaXMudGl0bGUp
OwotCi0gICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbi5sZW5ndGgp
IHsKLSAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTZWxmIFRpbWUiKSwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9zZWxm
VGltZSwgdHJ1ZSkpOwotICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFnZ3JlZ2F0ZWQgVGltZSIpLCB0aGlzLl9nZW5lcmF0
ZUFnZ3JlZ2F0ZWRJbmZvKCkpOwotICAgICAgICB9Ci0gICAgICAgIHZhciB0ZXh0ID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCIlcyAoYXQgJXMpIiwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlz
Ll9sYXN0Q2hpbGRFbmRUaW1lIC0gdGhpcy5zdGFydFRpbWUsIHRydWUpLAotICAgICAgICAgICAg
Y2FsY3VsYXRvci5mb3JtYXRWYWx1ZSh0aGlzLnN0YXJ0VGltZSAtIGNhbGN1bGF0b3IubWluaW11
bUJvdW5kYXJ5KSk7Ci0gICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpLCB0ZXh0KTsKLQotICAgICAgICBjb25zdCByZWNv
cmRUeXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7Ci0KLSAgICAg
ICAgc3dpdGNoICh0aGlzLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuR0NF
dmVudDoKLSAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdGVkIiksIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMu
ZGF0YVsidXNlZEhlYXBTaXplRGVsdGEiXSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5UaW1lckluc3RhbGw6Ci0gICAgICAgICAgICBjYXNl
IHJlY29yZFR5cGVzLlRpbWVyRmlyZToKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuVGlt
ZXJSZW1vdmU6Ci0gICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIElEIiksIHRoaXMuZGF0YVsidGltZXJJZCJdKTsK
LSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZW91dCA9PT0gIm51bWJlciIpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlRpbWVvdXQiKSwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLnRp
bWVvdXQgLyAxMDAwKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVu
ZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXRzIiksICF0aGlzLnNpbmdsZVNo
b3QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgcmVjb3JkVHlwZXMuRmlyZUFuaW1hdGlvbkZyYW1lOgotICAgICAgICAgICAgICAg
IGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxs
YmFjayBJRCIpLCB0aGlzLmRhdGFbImlkIl0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5GdW5jdGlvbkNhbGw6Ci0gICAgICAgICAgICAgICAg
Y29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxv
Y2F0aW9uIiksIHRoaXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbigpKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuU2NoZWR1bGVSZXNvdXJjZVJl
cXVlc3Q6Ci0gICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3Q6
Ci0gICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlOgot
ICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0YToKLSAgICAg
ICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2g6Ci0gICAgICAgICAgICAgICAg
Y29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
c291cmNlIiksIHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnVybCkpOwotICAgICAgICAgICAg
ICAgIGlmICh0aGlzLmRhdGFbInJlcXVlc3RNZXRob2QiXSkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVl
c3QgTWV0aG9kIiksIHRoaXMuZGF0YVsicmVxdWVzdE1ldGhvZCJdKTsKLSAgICAgICAgICAgICAg
ICBpZiAodHlwZW9mIHRoaXMuZGF0YVsic3RhdHVzQ29kZSJdID09PSAibnVtYmVyIikKLSAgICAg
ICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlN0YXR1cyBDb2RlIiksIHRoaXMuZGF0YVsic3RhdHVzQ29kZSJdKTsKLSAgICAg
ICAgICAgICAgICBpZiAodGhpcy5kYXRhWyJtaW1lVHlwZSJdKQotICAgICAgICAgICAgICAgICAg
ICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTUlN
RSBUeXBlIiksIHRoaXMuZGF0YVsibWltZVR5cGUiXSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLkV2YWx1YXRlU2NyaXB0OgotICAgICAgICAg
ICAgICAgIGlmICh0aGlzLmRhdGEgJiYgdGhpcy51cmwpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRlbnRIZWxwZXIuX2FwcGVuZEVsZW1lbnRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3Jp
cHQiKSwgdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMudXJsLCB0aGlzLmRhdGFbImxpbmVOdW1i
ZXIiXSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSByZWNvcmRU
eXBlcy5QYWludDoKLSAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRpb24iKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCIoJWQsICVkKSIsIHRoaXMuZGF0YVsieCJdLCB0aGlzLmRhdGFbInkiXSkpOwotICAgICAgICAg
ICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEaW1lbnNpb25zIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgw5cgJWQiLCB0aGlzLmRh
dGFbIndpZHRoIl0sIHRoaXMuZGF0YVsiaGVpZ2h0Il0pKTsKLSAgICAgICAgICAgIGNhc2UgcmVj
b3JkVHlwZXMuUmVjYWxjdWxhdGVTdHlsZXM6IC8vIFdlIGRvbid0IHdhbnQgdG8gc2VlIGRlZmF1
bHQgZGV0YWlscy4KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGV0YWlscykKLSAgICAgICAgICAgICAgICAgICAg
Y29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRldGFp
bHMiKSwgdGhpcy5kZXRhaWxzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICh0aGlzLnNjcmlwdE5hbWUgJiYgdGhpcy50eXBlICE9PSByZWNvcmRUeXBl
cy5GdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRnVuY3Rpb24gQ2FsbCIpLCB0aGlzLl9saW5raWZ5
U2NyaXB0TG9jYXRpb24oKSk7Ci0KLSAgICAgICAgaWYgKHRoaXMudXNlZEhlYXBTaXplKQotICAg
ICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlVzZWQgSGVhcCBTaXplIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgb2YgJXMiLCBO
dW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLnVzZWRIZWFwU2l6ZSksIE51bWJlci5ieXRlc1RvU3Ry
aW5nKHRoaXMudG90YWxIZWFwU2l6ZSkpKTsKLQotICAgICAgICBpZiAodGhpcy5jYWxsU2l0ZVN0
YWNrVHJhY2UgJiYgdGhpcy5jYWxsU2l0ZVN0YWNrVHJhY2UubGVuZ3RoKQotICAgICAgICAgICAg
Y29udGVudEhlbHBlci5fYXBwZW5kU3RhY2tUcmFjZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNh
bGwgU2l0ZSBzdGFjayIpLCB0aGlzLmNhbGxTaXRlU3RhY2tUcmFjZSwgdGhpcy5fbGlua2lmeUNh
bGxGcmFtZS5iaW5kKHRoaXMpKTsKLQotICAgICAgICBpZiAodGhpcy5zdGFja1RyYWNlKQotICAg
ICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kU3RhY2tUcmFjZShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNhbGwgU3RhY2siKSwgdGhpcy5zdGFja1RyYWNlLCB0aGlzLl9saW5raWZ5Q2FsbEZy
YW1lLmJpbmQodGhpcykpOwotCi0gICAgICAgIHJldHVybiBjb250ZW50SGVscGVyLl9jb250ZW50
VGFibGU7Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoRGV0YWlsczogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdGhpcy5kZXRhaWxzID0gdGhpcy5fZ2V0UmVjb3JkRGV0YWlscygpOwotICAgIH0s
Ci0KLSAgICBfZ2V0UmVjb3JkRGV0YWlsczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dp
dGNoICh0aGlzLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TW9kZWwuUmVjb3JkVHlwZS5HQ0V2ZW50OgotICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIiVzIGNvbGxlY3RlZCIsIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMu
ZGF0YVsidXNlZEhlYXBTaXplRGVsdGEiXSkpOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlRpbWVyRmlyZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fbGlua2lmeVNjcmlwdExvY2F0aW9uKHRoaXMuZGF0YVsidGltZXJJZCJdKTsK
LSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5G
dW5jdGlvbkNhbGw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlTY3JpcHRM
b2NhdGlvbigpOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5S
ZWNvcmRUeXBlLkZpcmVBbmltYXRpb25GcmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5fbGlua2lmeVNjcmlwdExvY2F0aW9uKHRoaXMuZGF0YVsiaWQiXSk7Ci0gICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhID8gdGhpcy5kYXRhWyJ0eXBlIl0gOiBu
dWxsOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRU
eXBlLlBhaW50OgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbIndpZHRoIl0gKyAi
XHUyMDA5XHUwMGQ3XHUyMDA5IiArIHRoaXMuZGF0YVsiaGVpZ2h0Il07Ci0gICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuVGltZXJJbnN0YWxsOgot
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlRp
bWVyUmVtb3ZlOgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5VG9wQ2FsbEZy
YW1lKHRoaXMuZGF0YVsidGltZXJJZCJdKTsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5SZXF1ZXN0QW5pbWF0aW9uRnJhbWU6Ci0gICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuQ2FuY2VsQW5p
bWF0aW9uRnJhbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlUb3BDYWxs
RnJhbWUodGhpcy5kYXRhWyJpZCJdKTsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5QYXJzZUhUTUw6Ci0gICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUmVjYWxjdWxhdGVTdHlsZXM6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlUb3BDYWxsRnJhbWUoKTsKLSAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5FdmFsdWF0ZVNj
cmlwdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cmwgPyB0aGlzLl9saW5raWZ5TG9j
YXRpb24odGhpcy51cmwsIHRoaXMuZGF0YVsibGluZU51bWJlciJdLCAwKSA6IG51bGw7Ci0gICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuWEhSUmVh
ZHlTdGF0ZUNoYW5nZToKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZS5YSFJMb2FkOgotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0OgotICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlJlc291cmNlU2Vu
ZFJlcXVlc3Q6Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJl
Y29yZFR5cGUuUmVzb3VyY2VSZWNlaXZlZERhdGE6Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6Ci0g
ICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUmVz
b3VyY2VGaW5pc2g6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5
TmFtZUZvclVSTCh0aGlzLnVybCk7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZU1vZGVsLlJlY29yZFR5cGUuVGltZVN0YW1wOgotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmRhdGFbIm1lc3NhZ2UiXTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IHVybAotICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbGluZU51bWJlcgotICAg
ICAqIEBwYXJhbSB7bnVtYmVyPX0gY29sdW1uTnVtYmVyCi0gICAgICovCi0gICAgX2xpbmtpZnlM
b2NhdGlvbjogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewot
ICAgICAgICAvLyBGSVhNRSg2MjcyNSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMg
YXJlIG9uZS1iYXNlZC4KLSAgICAgICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5lTnVt
YmVyIC0gMSA6IGxpbmVOdW1iZXI7Ci0gICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJl
ciA/IGNvbHVtbk51bWJlciAtIDEgOiAwOwotICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmaWVy
LmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgInRpbWVsaW5l
LWRldGFpbHMiKTsKLSAgICB9LAotCi0gICAgX2xpbmtpZnlDYWxsRnJhbWU6IGZ1bmN0aW9uKGNh
bGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24oY2Fs
bEZyYW1lLnVybCwgY2FsbEZyYW1lLmxpbmVOdW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIp
OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZz19IGRlZmF1bHRWYWx1
ZQotICAgICAqLwotICAgIF9saW5raWZ5VG9wQ2FsbEZyYW1lOiBmdW5jdGlvbihkZWZhdWx0VmFs
dWUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lm
eUNhbGxGcmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0pIDogZGVmYXVsdFZhbHVlOwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZz19IGRlZmF1bHRWYWx1ZQotICAgICAqLwot
ICAgIF9saW5raWZ5U2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKGRlZmF1bHRWYWx1ZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnNjcmlwdE5hbWUgPyB0aGlzLl9saW5raWZ5TG9jYXRpb24o
dGhpcy5zY3JpcHROYW1lLCB0aGlzLnNjcmlwdExpbmUsIDApIDogZGVmYXVsdFZhbHVlOwotICAg
IH0sCi0KLSAgICBfY2FsY3VsYXRlQWdncmVnYXRlZFN0YXRzOiBmdW5jdGlvbihjYXRlZ29yaWVz
KQotICAgIHsKLSAgICAgICAgdGhpcy5fYWdncmVnYXRlZFN0YXRzID0ge307Ci0gICAgICAgIGZv
ciAodmFyIGNhdGVnb3J5IGluIGNhdGVnb3JpZXMpCi0gICAgICAgICAgICB0aGlzLl9hZ2dyZWdh
dGVkU3RhdHNbY2F0ZWdvcnldID0gMDsKLQotICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW4pIHsK
LSAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gdGhpcy5fY2hpbGRyZW4ubGVuZ3RoOyBpbmRl
eDsgLS1pbmRleCkgewotICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuX2NoaWxkcmVu
W2luZGV4IC0gMV07Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdv
cmllcykKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5
XSArPSBjaGlsZC5fYWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHNbdGhpcy5jYXRlZ29yeS5uYW1l
XSArPSB0aGlzLl9zZWxmVGltZTsKLSAgICB9LAotCi0gICAgZ2V0IGFnZ3JlZ2F0ZWRTdGF0cygp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYWdncmVnYXRlZFN0YXRzOwotICAgIH0KLX0K
LQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqLwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
UG9wdXBDb250ZW50SGVscGVyID0gZnVuY3Rpb24odGl0bGUpCi17Ci0gICAgdGhpcy5fY29udGVu
dFRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTs7Ci0gICAgdmFyIHRpdGxl
Q2VsbCA9IHRoaXMuX2NyZWF0ZUNlbGwoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAtIERldGFp
bHMiLCB0aXRsZSksICJ0aW1lbGluZS1kZXRhaWxzLXRpdGxlIik7Ci0gICAgdGl0bGVDZWxsLmNv
bFNwYW4gPSAyOwotICAgIHZhciB0aXRsZVJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRy
Iik7Ci0gICAgdGl0bGVSb3cuYXBwZW5kQ2hpbGQodGl0bGVDZWxsKTsKLSAgICB0aGlzLl9jb250
ZW50VGFibGUuYXBwZW5kQ2hpbGQodGl0bGVSb3cpOwotfQotCi1XZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nPX0gc3R5bGVOYW1lCi0gICAgICovCi0gICAgX2NyZWF0ZUNlbGw6IGZ1
bmN0aW9uKGNvbnRlbnQsIHN0eWxlTmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKLSAgICAgICAgdGV4dC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7Ci0gICAgICAgIHZhciBjZWxsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAidGlt
ZWxpbmUtZGV0YWlscyI7Ci0gICAgICAgIGlmIChzdHlsZU5hbWUpCi0gICAgICAgICAgICBjZWxs
LmNsYXNzTmFtZSArPSAiICIgKyBzdHlsZU5hbWU7Ci0gICAgICAgIGNlbGwudGV4dENvbnRlbnQg
PSBjb250ZW50OwotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0gICAgX2FwcGVuZFRl
eHRSb3c6IGZ1bmN0aW9uKHRpdGxlLCBjb250ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHJvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0
aGlzLl9jcmVhdGVDZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKSk7Ci0g
ICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKGNvbnRlbnQsICJ0aW1lbGlu
ZS1kZXRhaWxzLXJvdy1kYXRhIikpOwotICAgICAgICB0aGlzLl9jb250ZW50VGFibGUuYXBwZW5k
Q2hpbGQocm93KTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmc9fSB0
aXRsZVN0eWxlCi0gICAgICovCi0gICAgX2FwcGVuZEVsZW1lbnRSb3c6IGZ1bmN0aW9uKHRpdGxl
LCBjb250ZW50LCB0aXRsZVN0eWxlKQotICAgIHsKLSAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgICAgIHZhciB0aXRsZUNlbGwgPSB0aGlzLl9jcmVh
dGVDZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKTsKLSAgICAgICAgaWYg
KHRpdGxlU3R5bGUpCi0gICAgICAgICAgICB0aXRsZUNlbGwuYWRkU3R5bGVDbGFzcyh0aXRsZVN0
eWxlKTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKHRpdGxlQ2VsbCk7Ci0gICAgICAgIHZhciBj
ZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgY2VsbC5jbGFzc05h
bWUgPSAidGltZWxpbmUtZGV0YWlscyI7Ci0gICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoY29udGVu
dCk7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLSAgICAgICAgdGhpcy5fY29udGVu
dFRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0gICAgfSwKLQotICAgIF9hcHBlbmRTdGFja1RyYWNl
OiBmdW5jdGlvbih0aXRsZSwgc3RhY2tUcmFjZSwgY2FsbEZyYW1lTGlua2lmaWVyKQotICAgIHsK
LSAgICAgICAgdGhpcy5fYXBwZW5kVGV4dFJvdygiIiwgIiIpOwotICAgICAgICB2YXIgZnJhbWVz
VGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHN0YWNrVHJhY2UubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBz
dGFja0ZyYW1lID0gc3RhY2tUcmFjZVtpXTsKLSAgICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAgICAgICAgcm93LmNsYXNzTmFtZSA9ICJ0aW1l
bGluZS1kZXRhaWxzIjsKLSAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVD
ZWxsKHN0YWNrRnJhbWUuZnVuY3Rpb25OYW1lID8gc3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUgOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIiksICJ0aW1lbGluZS1m
dW5jdGlvbi1uYW1lIikpOwotICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0
ZUNlbGwoIiBAICIpKTsKLSAgICAgICAgICAgIHZhciBsaW5rQ2VsbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IGNhbGxGcmFtZUxp
bmtpZmllcihzdGFja0ZyYW1lKTsKLSAgICAgICAgICAgIGxpbmtDZWxsLmFwcGVuZENoaWxkKHVy
bEVsZW1lbnQpOwotICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGxpbmtDZWxsKTsKLSAgICAg
ICAgICAgIGZyYW1lc1RhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0gICAgICAgIH0KLSAgICAgICAg
dGhpcy5fYXBwZW5kRWxlbWVudFJvdyh0aXRsZSwgZnJhbWVzVGFibGUsICJ0aW1lbGluZS1zdGFj
a3RyYWNlLXRpdGxlIik7Ci0gICAgfQotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICovCiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVFeHBhbmRhYmxlRWxlbWVudCA9IGZ1bmN0aW9uKGNvbnRhaW5l
cikKIHsKICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CkBAIC0xNjA5LDcgKzExOTAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGaWx0ZXIg
PSBmdW5jdGlvbihjYWxjdWxhdG9yLCBzaG93U2hvcnRFdmVudHMpCiAKIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZEZpbHRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmR9IHJlY29yZAorICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3Jk
fSByZWNvcmQKICAgICAgKi8KICAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7CkBA
IC0xNjM5LDcgKzEyMjAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTdGFydEF0WmVyb1JlY29y
ZEZpbHRlciA9IGZ1bmN0aW9uKG1vZGVsLCByb290UmVjb3JkLCBzaG93UwogCiBXZWJJbnNwZWN0
b3IuVGltZWxpbmVTdGFydEF0WmVyb1JlY29yZEZpbHRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNv
cmR9IHJlY29yZAorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKICAgICAgKi8KICAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJl
Y29yZCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggNTEyMmU2Yjcz
NGUxMGE4ZTViOTM0ZjgwZDkwMmYxMTkwZDZmZjg3ZS4uYTU4OWQxMjFlYzE4MGI0YTc1NDY1Zjli
ODYwZDZhZjBhMmYyYzYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtMzUs
NiArMzUsMTAgQEAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsID0gZnVu
Y3Rpb24oKQogewogICAgIHRoaXMuX2NhdGVnb3JpZXMgPSB7fTsKKyAgICB0aGlzLl9hZGRDYXRl
Z29yeShuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnkoImxvYWRpbmciLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmciKSwgInJnYig0NywxMDIsMjM2KSIpKTsKKyAgICB0aGlz
Ll9hZGRDYXRlZ29yeShuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnkoInNjcmlwdGlu
ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NyaXB0aW5nIiksICJyZ2IoMTU3LDIzMSwxMTkp
IikpOworICAgIHRoaXMuX2FkZENhdGVnb3J5KG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRl
Z29yeSgicmVuZGVyaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5kZXJpbmciKSwgInJn
YigxNjQsNjAsMjU1KSIpKTsKKyAgICB0aGlzLl9saW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKICAgICB0aGlzLnJlc2V0
KCk7CiB9CiAKQEAgLTQzLDkgKzQ3LDU4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLkV2ZW50cyA9IHsKICAgICBDYXRlZ29yeVZpc2liaWxpdHlDaGFuZ2VkOiAiQ2F0
ZWdvcnlWaXNpYmlsaXR5Q2hhbmdlZCIKIH0KIAorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQgPSAwLjAxNTsKKwogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0geworICAgIGNyZWF0ZUZvcm1h
dHRlZFJlY29yZDogZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNvcmQsIHNjcmlwdERldGFpbHMp
CisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLlJlY29yZCh0aGlzLCByZWNvcmQsIHBhcmVudFJlY29yZCwgdGhpcy5fbGlua2lm
aWVyLCBzY3JpcHREZXRhaWxzKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZVJvb3RSZWNvcmQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByb290UmVjb3JkID0ge307CisgICAgICAgIHJv
b3RSZWNvcmQuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgcm9vdFJlY29yZC5hZ2dyZWdhdGVkU3Rh
dHMgPSB7fTsKKyAgICAgICAgcmV0dXJuIHJvb3RSZWNvcmQ7CisgICAgfSwKKworICAgIHJvb3RS
ZWNvcmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yb290UmVjb3Jk
OworICAgIH0sCisKICAgICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgdGhpcy5f
bGlua2lmaWVyLnJlc2V0KCk7CisgICAgICAgIHRoaXMuX3Jvb3RSZWNvcmQgPSB0aGlzLl9jcmVh
dGVSb290UmVjb3JkKCk7CisgICAgICAgIHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3JkcyA9IHt9Owor
ICAgICAgICB0aGlzLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3RzID0ge307CisgICAgICAgIHRo
aXMuX3RpbWVyUmVjb3JkcyA9IHt9OworICAgICAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJh
bWVSZWNvcmRzID0ge307CisKKyAgICAgICAgdGhpcy5fcmVzZXRXaW5kb3coKTsKKyAgICB9LAor
CisgICAgX2ZpbmRQYXJlbnRSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICB7CisgICAgICAg
IHZhciByZWNvcmRUeXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7
CisgICAgICAgIHZhciBwYXJlbnRSZWNvcmQ7CisgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0g
cmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2UgfHwKKyAgICAgICAgICAgIHJlY29y
ZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZUZpbmlzaCB8fAorICAgICAgICAgICAgcmVj
b3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZWREYXRhKQorICAgICAgICAg
ICAgcGFyZW50UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhWyJy
ZXF1ZXN0SWQiXV07CisgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBl
cy5UaW1lckZpcmUpCisgICAgICAgICAgICBwYXJlbnRSZWNvcmQgPSB0aGlzLl90aW1lclJlY29y
ZHNbcmVjb3JkLmRhdGFbInRpbWVySWQiXV07CisgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBl
ID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVNlbmRSZXF1ZXN0KQorICAgICAgICAgICAgcGFyZW50
UmVjb3JkID0gdGhpcy5fc2NoZWR1bGVkUmVzb3VyY2VSZXF1ZXN0c1tyZWNvcmQuZGF0YVsidXJs
Il1dOworICAgICAgICBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuRmlyZUFu
aW1hdGlvbkZyYW1lKQorICAgICAgICAgICAgcGFyZW50UmVjb3JkID0gdGhpcy5fcmVxdWVzdEFu
aW1hdGlvbkZyYW1lUmVjb3Jkc1tyZWNvcmQuZGF0YVsiaWQiXV07CisgICAgICAgIHJldHVybiBw
YXJlbnRSZWNvcmQ7CisgICAgfSwKKworICAgIF9yZXNldFdpbmRvdzogZnVuY3Rpb24oKQorICAg
IHsKICAgICAgICAgdGhpcy53aW5kb3dMZWZ0ID0gMC4wOwogICAgICAgICB0aGlzLndpbmRvd1Jp
Z2h0ID0gMS4wOwogICAgICAgICB0aGlzLndpbmRvd0luZGV4TGVmdCA9IDA7CkBAIC02MCw3ICsx
MTMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29y
eX0gY2F0ZWdvcnkKICAgICAgKi8KLSAgICBhZGRDYXRlZ29yeTogZnVuY3Rpb24oY2F0ZWdvcnkp
CisgICAgX2FkZENhdGVnb3J5OiBmdW5jdGlvbihjYXRlZ29yeSkKICAgICB7CiAgICAgICAgIHRo
aXMuX2NhdGVnb3JpZXNbY2F0ZWdvcnkubmFtZV0gPSBjYXRlZ29yeTsKICAgICB9LApAQCAtOTUs
NyArMTQ4LDQyOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICBjYXRlZ29yeS5oaWRkZW4gPSAhdmlzaWJsZTsKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNhdGVnb3J5VmlzaWJpbGl0eUNoYW5nZWQsIGNhdGVn
b3J5KTsKKyAgICB9LAorCisgICAgZ2V0IF9yZWNvcmRTdHlsZXMoKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9yZWNvcmRTdHlsZXNBcnJheSkgeworICAgICAgICAgICAgdmFyIHJlY29yZFR5
cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZTsKKyAgICAgICAgICAg
IHZhciBjYXRlZ29yaWVzID0gdGhpcy5fY2F0ZWdvcmllczsKKworICAgICAgICAgICAgdmFyIHJl
Y29yZFN0eWxlcyA9IHt9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2
ZW50RGlzcGF0Y2hdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFdmVudCIpLCBj
YXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5MYXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMYXlvdXQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07CisgICAgICAg
ICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVjYWxjdWxhdGVTdHlsZXNdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNhbGN1bGF0ZSBTdHlsZSIpLCBjYXRlZ29yeTog
Y2F0ZWdvcmllc1sicmVuZGVyaW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNv
cmRUeXBlcy5QYWludF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhaW50Iiks
IGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJyZW5kZXJpbmciXSB9OworICAgICAgICAgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKKyAgICAg
ICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lckluc3RhbGxdID0geyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnN0YWxsIFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29y
aWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LlRpbWVyUmVtb3ZlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIFRp
bWVyIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyRmlyZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlRpbWVyIEZpcmVkIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRp
bmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUlJlYWR5U3Rh
dGVDaGFuZ2VdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgUmVhZHkgU3Rh
dGUgQ2hhbmdlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAg
ICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUkxvYWRdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJYSFIgTG9hZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0
aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmFsdWF0ZVNj
cmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIFNjcmlwdCIp
LCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29y
ZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lU3RhbXBdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTdGFtcCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAg
ICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVNlbmRSZXF1ZXN0XSA9
IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VuZCBSZXF1ZXN0IiksIGNhdGVnb3J5
OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNv
cmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJlY2VpdmUgUmVzcG9uc2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRp
bmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlRmlu
aXNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmluaXNoIExvYWRpbmciKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLkZ1bmN0aW9uQ2FsbF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJd
IH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZl
ZERhdGFdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNlaXZlIERhdGEiKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLkdDRXZlbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJHQyBFdmVudCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAg
ICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5NYXJrRE9NQ29udGVudF0gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRPTUNvbnRlbnQgZXZlbnQiKSwgY2F0ZWdvcnk6IGNh
dGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3Jk
VHlwZXMuTWFya0xvYWRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkIGV2
ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0XSA9IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NoZWR1bGUgUmVxdWVzdCIpLCBjYXRlZ29yeTog
Y2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3Jk
VHlwZXMuUmVxdWVzdEFuaW1hdGlvbkZyYW1lXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVxdWVzdCBBbmltYXRpb24gRnJhbWUiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNj
cmlwdGluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuQ2FuY2Vs
QW5pbWF0aW9uRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYW5jZWwg
QW5pbWF0aW9uIEZyYW1lIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9Owor
ICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZpcmVBbmltYXRpb25GcmFtZV0g
PSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuaW1hdGlvbiBGcmFtZSBGaXJlZCIp
LCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHRoaXMu
X3JlY29yZFN0eWxlc0FycmF5ID0gcmVjb3JkU3R5bGVzOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB0aGlzLl9yZWNvcmRTdHlsZXNBcnJheTsKICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkID0gZnVuY3Rpb24ocHJlc2Vu
dGF0aW9uTW9kZWwsIHJlY29yZCwgcGFyZW50UmVjb3JkLCBsaW5raWZpZXIsIHNjcmlwdERldGFp
bHMpCit7CisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsK
KyAgICB0aGlzLl9saW5raWZpZXIgPSBsaW5raWZpZXI7CisgICAgdGhpcy5fYWdncmVnYXRlZFN0
YXRzID0gW107CisgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZTsKKyAgICB2YXIgc3R5bGUgPSBwcmVzZW50YXRpb25Nb2RlbC5fcmVjb3Jk
U3R5bGVzW3JlY29yZC50eXBlXTsKKyAgICB0aGlzLnBhcmVudCA9IHBhcmVudFJlY29yZDsKKyAg
ICBpZiAocGFyZW50UmVjb3JkKQorICAgICAgICBwYXJlbnRSZWNvcmQuY2hpbGRyZW4ucHVzaCh0
aGlzKTsKKyAgICB0aGlzLmNhdGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7CisgICAgdGhpcy50aXRs
ZSA9IHN0eWxlLnRpdGxlOworICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZSAv
IDEwMDA7CisgICAgdGhpcy5kYXRhID0gcmVjb3JkLmRhdGE7CisgICAgdGhpcy50eXBlID0gcmVj
b3JkLnR5cGU7CisgICAgdGhpcy5lbmRUaW1lID0gKHR5cGVvZiByZWNvcmQuZW5kVGltZSAhPT0g
InVuZGVmaW5lZCIpID8gcmVjb3JkLmVuZFRpbWUgLyAxMDAwIDogdGhpcy5zdGFydFRpbWU7Cisg
ICAgdGhpcy5fc2VsZlRpbWUgPSB0aGlzLmVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZTsKKyAgICB0
aGlzLl9sYXN0Q2hpbGRFbmRUaW1lID0gdGhpcy5lbmRUaW1lOworICAgIHRoaXMuX2luaXRpYXRv
ck9mZnNldCA9IChwYXJlbnRSZWNvcmQgJiYgcGFyZW50UmVjb3JkICE9PSBwcmVzZW50YXRpb25N
b2RlbC5fcm9vdFJlY29yZCkgPworICAgICAgICBwYXJlbnRSZWNvcmQuX2luaXRpYXRvck9mZnNl
dCArIHRoaXMuc3RhcnRUaW1lIC0gcGFyZW50UmVjb3JkLnN0YXJ0VGltZSA6IDA7CisKKyAgICBp
ZiAocmVjb3JkLnN0YWNrVHJhY2UgJiYgcmVjb3JkLnN0YWNrVHJhY2UubGVuZ3RoKQorICAgICAg
ICB0aGlzLnN0YWNrVHJhY2UgPSByZWNvcmQuc3RhY2tUcmFjZTsKKyAgICB0aGlzLnRvdGFsSGVh
cFNpemUgPSByZWNvcmQudG90YWxIZWFwU2l6ZTsKKyAgICB0aGlzLnVzZWRIZWFwU2l6ZSA9IHJl
Y29yZC51c2VkSGVhcFNpemU7CisgICAgaWYgKHJlY29yZC5kYXRhICYmIHJlY29yZC5kYXRhWyJ1
cmwiXSkKKyAgICAgICAgdGhpcy51cmwgPSByZWNvcmQuZGF0YVsidXJsIl07CisgICAgaWYgKHNj
cmlwdERldGFpbHMpIHsKKyAgICAgICAgdGhpcy5zY3JpcHROYW1lID0gc2NyaXB0RGV0YWlscy5z
Y3JpcHROYW1lOworICAgICAgICB0aGlzLnNjcmlwdExpbmUgPSBzY3JpcHREZXRhaWxzLnNjcmlw
dExpbmU7CisgICAgfQorICAgIC8vIE1ha2UgcmVzb3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBz
aW5jZSByZXF1ZXN0IHdhcyBzZW50OyBtYWtlIGZpbmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNw
b25zZSByZWNlaXZlZC4KKyAgICBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291
cmNlU2VuZFJlcXVlc3QpIHsKKyAgICAgICAgcHJlc2VudGF0aW9uTW9kZWwuX3NlbmRSZXF1ZXN0
UmVjb3Jkc1tyZWNvcmQuZGF0YVsicmVxdWVzdElkIl1dID0gdGhpczsKKyAgICB9IGVsc2UgaWYg
KHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5TY2hlZHVsZVJlc291cmNlUmVxdWVzdCkgewor
ICAgICAgICBwcmVzZW50YXRpb25Nb2RlbC5fc2NoZWR1bGVkUmVzb3VyY2VSZXF1ZXN0c1tyZWNv
cmQuZGF0YVsidXJsIl1dID0gdGhpczsKKyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBy
ZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSkgeworICAgICAgICB2YXIgc2VuZFJl
cXVlc3RSZWNvcmQgPSBwcmVzZW50YXRpb25Nb2RlbC5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29y
ZC5kYXRhWyJyZXF1ZXN0SWQiXV07CisgICAgICAgIGlmIChzZW5kUmVxdWVzdFJlY29yZCkgeyAv
LyBGYWxzZSBpZiB3ZSBzdGFydGVkIGluc3RydW1lbnRhdGlvbiBpbiB0aGUgbWlkZGxlIG9mIHJl
cXVlc3QuCisgICAgICAgICAgICB0aGlzLnVybCA9IHNlbmRSZXF1ZXN0UmVjb3JkLnVybDsKKyAg
ICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgcmVzb3VyY2UgaW4gdGhlIGNvbGxlY3Rpb24s
IHJlY2FsY3VsYXRlIGRldGFpbHMgaW4gb3JkZXIgdG8gZGlzcGxheSBzaG9ydCB1cmwuCisgICAg
ICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVmcmVzaERldGFpbHMoKTsKKyAgICAgICAgICAg
IGlmIChzZW5kUmVxdWVzdFJlY29yZC5wYXJlbnQgIT09IHByZXNlbnRhdGlvbk1vZGVsLl9yb290
UmVjb3JkICYmIHNlbmRSZXF1ZXN0UmVjb3JkLnBhcmVudC50eXBlID09PSByZWNvcmRUeXBlcy5T
Y2hlZHVsZVJlc291cmNlUmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29y
ZC5wYXJlbnQuX3JlZnJlc2hEZXRhaWxzKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJl
Y29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0YSB8fCByZWNvcmQu
dHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2gpIHsKKyAgICAgICAgdmFyIHNlbmRS
ZXF1ZXN0UmVjb3JkID0gcHJlc2VudGF0aW9uTW9kZWwuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNv
cmQuZGF0YVsicmVxdWVzdElkIl1dOworICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIC8v
IEZhbHNlIGZvciBtYWluIHJlc291cmNlLgorICAgICAgICAgICAgdGhpcy51cmwgPSBzZW5kUmVx
dWVzdFJlY29yZC51cmw7CisgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlw
ZXMuVGltZXJJbnN0YWxsKSB7CisgICAgICAgIHRoaXMudGltZW91dCA9IHJlY29yZC5kYXRhWyJ0
aW1lb3V0Il07CisgICAgICAgIHRoaXMuc2luZ2xlU2hvdCA9IHJlY29yZC5kYXRhWyJzaW5nbGVT
aG90Il07CisgICAgICAgIHByZXNlbnRhdGlvbk1vZGVsLl90aW1lclJlY29yZHNbcmVjb3JkLmRh
dGFbInRpbWVySWQiXV0gPSB0aGlzOworICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJl
Y29yZFR5cGVzLlRpbWVyRmlyZSkgeworICAgICAgICB2YXIgdGltZXJJbnN0YWxsZWRSZWNvcmQg
PSBwcmVzZW50YXRpb25Nb2RlbC5fdGltZXJSZWNvcmRzW3JlY29yZC5kYXRhWyJ0aW1lcklkIl1d
OworICAgICAgICBpZiAodGltZXJJbnN0YWxsZWRSZWNvcmQpIHsKKyAgICAgICAgICAgIHRoaXMu
Y2FsbFNpdGVTdGFja1RyYWNlID0gdGltZXJJbnN0YWxsZWRSZWNvcmQuc3RhY2tUcmFjZTsKKyAg
ICAgICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnRpbWVvdXQ7Cisg
ICAgICAgICAgICB0aGlzLnNpbmdsZVNob3QgPSB0aW1lckluc3RhbGxlZFJlY29yZC5zaW5nbGVT
aG90OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlw
ZXMuUmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7CisgICAgICAgIHByZXNlbnRhdGlvbk1vZGVsLl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVSZWNvcmRzW3JlY29yZC5kYXRhWyJpZCJdXSA9IHRoaXM7Cisg
ICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuRmlyZUFuaW1hdGlvbkZy
YW1lKSB7CisgICAgICAgIHZhciByZXF1ZXN0QW5pbWF0aW9uUmVjb3JkID0gcHJlc2VudGF0aW9u
TW9kZWwuX3JlcXVlc3RBbmltYXRpb25GcmFtZVJlY29yZHNbcmVjb3JkLmRhdGFbImlkIl1dOwor
ICAgICAgICBpZiAocmVxdWVzdEFuaW1hdGlvblJlY29yZCkKKyAgICAgICAgICAgIHRoaXMuY2Fs
bFNpdGVTdGFja1RyYWNlID0gcmVxdWVzdEFuaW1hdGlvblJlY29yZC5zdGFja1RyYWNlOworICAg
IH0KKyAgICB0aGlzLl9yZWZyZXNoRGV0YWlscygpOworfQorCitXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlID0geworICAgIGdldCBsYXN0Q2hp
bGRFbmRUaW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9sYXN0Q2hpbGRFbmRUaW1l
OworICAgIH0sCisKKyAgICBzZXQgbGFzdENoaWxkRW5kVGltZSh0aW1lKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fbGFzdENoaWxkRW5kVGltZSA9IHRpbWU7CisgICAgfSwKKworICAgIGdldCBzZWxm
VGltZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2VsZlRpbWU7CisgICAgfSwKKwor
ICAgIHNldCBzZWxmVGltZSh0aW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZlRpbWUgPSB0
aW1lOworICAgIH0sCisKKyAgICBnZXQgY3B1VGltZSgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fY3B1VGltZTsKKyAgICB9LAorCisgICAgaXNMb25nOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gKHRoaXMuX2xhc3RDaGlsZEVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZSkg
PiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5zaG9ydFJlY29yZFRocmVz
aG9sZDsKKyAgICB9LAorCisgICAgZ2V0IGNoaWxkcmVuKCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fY2hpbGRyZW4pCisgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IFtdOworICAgICAg
ICByZXR1cm4gdGhpcy5fY2hpbGRyZW47CisgICAgfSwKKworICAgIGNvbnRhaW5zVGltZTogZnVu
Y3Rpb24odGltZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnN0YXJ0VGltZSA8PSB0aW1l
ICYmIHRpbWUgPD0gdGhpcy5lbmRUaW1lOworICAgIH0sCisKKyAgICBfZ2VuZXJhdGVBZ2dyZWdh
dGVkSW5mbzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGNlbGwuY2xhc3NOYW1lID0gInRpbWVsaW5l
LWFnZ3JlZ2F0ZWQtaW5mbyI7CisgICAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuX2FnZ3Jl
Z2F0ZWRTdGF0cykgeworICAgICAgICAgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgICAgICBsYWJlbC5jbGFzc05hbWUgPSAidGltZWxpbmUtYWdn
cmVnYXRlZC1jYXRlZ29yeSB0aW1lbGluZS0iICsgaW5kZXg7CisgICAgICAgICAgICBjZWxsLmFw
cGVuZENoaWxkKGxhYmVsKTsKKyAgICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgdGV4dC50ZXh0Q29udGVudCA9IE51bWJlci5z
ZWNvbmRzVG9TdHJpbmcodGhpcy5fYWdncmVnYXRlZFN0YXRzW2luZGV4XSwgdHJ1ZSk7CisgICAg
ICAgICAgICBjZWxsLmFwcGVuZENoaWxkKHRleHQpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBjZWxsOworICAgIH0sCisKKyAgICBnZW5lcmF0ZVBvcHVwQ29udGVudDogZnVuY3Rpb24oY2Fs
Y3VsYXRvcikKKyAgICB7CisgICAgICAgIHZhciBjb250ZW50SGVscGVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlBvcHVwQ29udGVudEhlbHBlcih0aGlzLnRp
dGxlKTsKKworICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW4gJiYgdGhpcy5fY2hpbGRyZW4ubGVu
Z3RoKSB7CisgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2VsZiBUaW1lIiksIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5f
c2VsZlRpbWUsIHRydWUpKTsKKyAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZEVsZW1l
bnRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBZ2dyZWdhdGVkIFRpbWUiKSwgdGhpcy5fZ2Vu
ZXJhdGVBZ2dyZWdhdGVkSW5mbygpKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgdGV4dCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiJXMgKGF0ICVzKSIsIE51bWJlci5zZWNvbmRzVG9TdHJpbmco
dGhpcy5fbGFzdENoaWxkRW5kVGltZSAtIHRoaXMuc3RhcnRUaW1lLCB0cnVlKSwKKyAgICAgICAg
ICAgIGNhbGN1bGF0b3IuZm9ybWF0VmFsdWUodGhpcy5zdGFydFRpbWUgLSBjYWxjdWxhdG9yLm1p
bmltdW1Cb3VuZGFyeSkpOworICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRHVyYXRpb24iKSwgdGV4dCk7CisKKyAgICAgICAgY29uc3Qg
cmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlOworCisg
ICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7CisgICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVz
LkdDRXZlbnQ6CisgICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3RlZCIpLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0
aGlzLmRhdGFbInVzZWRIZWFwU2l6ZURlbHRhIl0pKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuVGltZXJJbnN0YWxsOgorICAgICAgICAgICAg
Y2FzZSByZWNvcmRUeXBlcy5UaW1lckZpcmU6CisgICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVz
LlRpbWVyUmVtb3ZlOgorICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRS
b3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lciBJRCIpLCB0aGlzLmRhdGFbInRpbWVySWQi
XSk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVvdXQgPT09ICJudW1iZXIi
KSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lb3V0IiksIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhp
cy50aW1lb3V0IC8gMTAwMCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9h
cHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwZWF0cyIpLCAhdGhpcy5zaW5n
bGVTaG90KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIHJlY29yZFR5cGVzLkZpcmVBbmltYXRpb25GcmFtZToKKyAgICAgICAgICAg
ICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q2FsbGJhY2sgSUQiKSwgdGhpcy5kYXRhWyJpZCJdKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuRnVuY3Rpb25DYWxsOgorICAgICAgICAgICAg
ICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZEVsZW1lbnRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMb2NhdGlvbiIpLCB0aGlzLl9saW5raWZ5U2NyaXB0TG9jYXRpb24oKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlNjaGVkdWxlUmVzb3Vy
Y2VSZXF1ZXN0OgorICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5SZXNvdXJjZVNlbmRSZXF1
ZXN0OgorICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25z
ZToKKyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlZERhdGE6Cisg
ICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlJlc291cmNlRmluaXNoOgorICAgICAgICAgICAg
ICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZEVsZW1lbnRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZXNvdXJjZSIpLCB0aGlzLl9saW5raWZ5TG9jYXRpb24odGhpcy51cmwpKTsKKyAgICAgICAg
ICAgICAgICBpZiAodGhpcy5kYXRhWyJyZXF1ZXN0TWV0aG9kIl0pCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZXF1ZXN0IE1ldGhvZCIpLCB0aGlzLmRhdGFbInJlcXVlc3RNZXRob2QiXSk7CisgICAgICAgICAg
ICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGFbInN0YXR1c0NvZGUiXSA9PT0gIm51bWJlciIpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTdGF0dXMgQ29kZSIpLCB0aGlzLmRhdGFbInN0YXR1c0NvZGUiXSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVsibWltZVR5cGUiXSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik1JTUUgVHlwZSIpLCB0aGlzLmRhdGFbIm1pbWVUeXBlIl0pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5FdmFsdWF0ZVNjcmlwdDoKKyAgICAg
ICAgICAgICAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMudXJsKQorICAgICAgICAgICAgICAgICAg
ICBjb250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2NyaXB0IiksIHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnVybCwgdGhpcy5kYXRhWyJsaW5l
TnVtYmVyIl0pKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcmVj
b3JkVHlwZXMuUGFpbnQ6CisgICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4
dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIiksIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiKCVkLCAlZCkiLCB0aGlzLmRhdGFbIngiXSwgdGhpcy5kYXRhWyJ5Il0pKTsKKyAgICAg
ICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGltZW5zaW9ucyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIMOXICVkIiwgdGhp
cy5kYXRhWyJ3aWR0aCJdLCB0aGlzLmRhdGFbImhlaWdodCJdKSk7CisgICAgICAgICAgICBjYXNl
IHJlY29yZFR5cGVzLlJlY2FsY3VsYXRlU3R5bGVzOiAvLyBXZSBkb24ndCB3YW50IHRvIHNlZSBk
ZWZhdWx0IGRldGFpbHMuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGlmICh0aGlzLmRldGFpbHMpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJE
ZXRhaWxzIiksIHRoaXMuZGV0YWlscyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBpZiAodGhpcy5zY3JpcHROYW1lICYmIHRoaXMudHlwZSAhPT0gcmVjb3Jk
VHlwZXMuRnVuY3Rpb25DYWxsKQorICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kRWxl
bWVudFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwgdGhpcy5fbGlu
a2lmeVNjcmlwdExvY2F0aW9uKCkpOworCisgICAgICAgIGlmICh0aGlzLnVzZWRIZWFwU2l6ZSkK
KyAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJVc2VkIEhlYXAgU2l6ZSIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIG9mICVz
IiwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy51c2VkSGVhcFNpemUpLCBOdW1iZXIuYnl0ZXNU
b1N0cmluZyh0aGlzLnRvdGFsSGVhcFNpemUpKSk7CisKKyAgICAgICAgaWYgKHRoaXMuY2FsbFNp
dGVTdGFja1RyYWNlICYmIHRoaXMuY2FsbFNpdGVTdGFja1RyYWNlLmxlbmd0aCkKKyAgICAgICAg
ICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFN0YWNrVHJhY2UoV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDYWxsIFNpdGUgc3RhY2siKSwgdGhpcy5jYWxsU2l0ZVN0YWNrVHJhY2UsIHRoaXMuX2xpbmtp
ZnlDYWxsRnJhbWUuYmluZCh0aGlzKSk7CisKKyAgICAgICAgaWYgKHRoaXMuc3RhY2tUcmFjZSkK
KyAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFN0YWNrVHJhY2UoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDYWxsIFN0YWNrIiksIHRoaXMuc3RhY2tUcmFjZSwgdGhpcy5fbGlua2lmeUNh
bGxGcmFtZS5iaW5kKHRoaXMpKTsKKworICAgICAgICByZXR1cm4gY29udGVudEhlbHBlci5fY29u
dGVudFRhYmxlOworICAgIH0sCisKKyAgICBfcmVmcmVzaERldGFpbHM6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuZGV0YWlscyA9IHRoaXMuX2dldFJlY29yZERldGFpbHMoKTsKKyAg
ICB9LAorCisgICAgX2dldFJlY29yZERldGFpbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAodGhpcy50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZU1vZGVsLlJlY29yZFR5cGUuR0NFdmVudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIlcyBjb2xsZWN0ZWQiLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0
aGlzLmRhdGFbInVzZWRIZWFwU2l6ZURlbHRhIl0pKTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5UaW1lckZpcmU6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbih0aGlzLmRhdGFbInRpbWVySWQi
XSk7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5
cGUuRnVuY3Rpb25DYWxsOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5U2Ny
aXB0TG9jYXRpb24oKTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZS5GaXJlQW5pbWF0aW9uRnJhbWU6CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbih0aGlzLmRhdGFbImlkIl0pOworICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkV2ZW50RGlzcGF0
Y2g6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSA/IHRoaXMuZGF0YVsidHlwZSJd
IDogbnVsbDsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVj
b3JkVHlwZS5QYWludDoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhWyJ3aWR0aCJd
ICsgIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyB0aGlzLmRhdGFbImhlaWdodCJdOworICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlRpbWVySW5zdGFs
bDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlw
ZS5UaW1lclJlbW92ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeVRvcENh
bGxGcmFtZSh0aGlzLmRhdGFbInRpbWVySWQiXSk7CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUmVxdWVzdEFuaW1hdGlvbkZyYW1lOgorICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkNhbmNl
bEFuaW1hdGlvbkZyYW1lOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5VG9w
Q2FsbEZyYW1lKHRoaXMuZGF0YVsiaWQiXSk7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUGFyc2VIVE1MOgorICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5VG9wQ2FsbEZyYW1lKCk7CisgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuRXZhbHVh
dGVTY3JpcHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXJsID8gdGhpcy5fbGlua2lm
eUxvY2F0aW9uKHRoaXMudXJsLCB0aGlzLmRhdGFbImxpbmVOdW1iZXIiXSwgMCkgOiBudWxsOwor
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlhI
UlJlYWR5U3RhdGVDaGFuZ2U6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1vZGVsLlJlY29yZFR5cGUuWEhSTG9hZDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5TY2hlZHVsZVJlc291cmNlUmVxdWVzdDoKKyAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5SZXNvdXJj
ZVNlbmRSZXF1ZXN0OgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2Rl
bC5SZWNvcmRUeXBlLlJlc291cmNlUmVjZWl2ZWREYXRhOgorICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNl
OgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBl
LlJlc291cmNlRmluaXNoOgorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGlz
cGxheU5hbWVGb3JVUkwodGhpcy51cmwpOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlRpbWVTdGFtcDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5kYXRhWyJtZXNzYWdlIl07CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGxpbmVOdW1iZXIK
KyAgICAgKiBAcGFyYW0ge251bWJlcj19IGNvbHVtbk51bWJlcgorICAgICAqLworICAgIF9saW5r
aWZ5TG9jYXRpb246IGZ1bmN0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAg
IHsKKyAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBudW1i
ZXJzIGFyZSBvbmUtYmFzZWQuCisgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8gbGlu
ZU51bWJlciAtIDEgOiBsaW5lTnVtYmVyOworICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1bW5O
dW1iZXIgPyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtp
Zmllci5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJ0aW1l
bGluZS1kZXRhaWxzIik7CisgICAgfSwKKworICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlv
bihjYWxsRnJhbWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeUxvY2F0aW9u
KGNhbGxGcmFtZS51cmwsIGNhbGxGcmFtZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUuY29sdW1uTnVt
YmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBkZWZhdWx0
VmFsdWUKKyAgICAgKi8KKyAgICBfbGlua2lmeVRvcENhbGxGcmFtZTogZnVuY3Rpb24oZGVmYXVs
dFZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUcmFjZSA/IHRoaXMuX2xp
bmtpZnlDYWxsRnJhbWUodGhpcy5zdGFja1RyYWNlWzBdKSA6IGRlZmF1bHRWYWx1ZTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBkZWZhdWx0VmFsdWUKKyAgICAg
Ki8KKyAgICBfbGlua2lmeVNjcmlwdExvY2F0aW9uOiBmdW5jdGlvbihkZWZhdWx0VmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fbGlua2lmeUxvY2F0
aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IGRlZmF1bHRWYWx1ZTsK
KyAgICB9LAorCisgICAgY2FsY3VsYXRlQWdncmVnYXRlZFN0YXRzOiBmdW5jdGlvbihjYXRlZ29y
aWVzKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdncmVnYXRlZFN0YXRzID0ge307CisgICAgICAg
IGZvciAodmFyIGNhdGVnb3J5IGluIGNhdGVnb3JpZXMpCisgICAgICAgICAgICB0aGlzLl9hZ2dy
ZWdhdGVkU3RhdHNbY2F0ZWdvcnldID0gMDsKKyAgICAgICAgdGhpcy5fY3B1VGltZSA9IHRoaXMu
X3NlbGZUaW1lOworCisgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbikgeworICAgICAgICAgICAg
Zm9yICh2YXIgaW5kZXggPSB0aGlzLl9jaGlsZHJlbi5sZW5ndGg7IGluZGV4OyAtLWluZGV4KSB7
CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5fY2hpbGRyZW5baW5kZXggLSAxXTsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBpbiBjYXRlZ29yaWVzKQorICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHNbY2F0ZWdvcnldICs9IGNoaWxkLl9h
Z2dyZWdhdGVkU3RhdHNbY2F0ZWdvcnldOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9y
ICh2YXIgY2F0ZWdvcnkgaW4gdGhpcy5fYWdncmVnYXRlZFN0YXRzKQorICAgICAgICAgICAgICAg
IHRoaXMuX2NwdVRpbWUgKz0gdGhpcy5fYWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHNbdGhpcy5jYXRlZ29yeS5uYW1lXSAr
PSB0aGlzLl9zZWxmVGltZTsKKyAgICB9LAorCisgICAgZ2V0IGFnZ3JlZ2F0ZWRTdGF0cygpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fYWdncmVnYXRlZFN0YXRzOworICAgIH0KK30KKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyID0gZnVuY3Rpb24odGl0bGUpCit7CisgICAgdGhp
cy5fY29udGVudFRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTs7CisgICAg
dmFyIHRpdGxlQ2VsbCA9IHRoaXMuX2NyZWF0ZUNlbGwoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIl
cyAtIERldGFpbHMiLCB0aXRsZSksICJ0aW1lbGluZS1kZXRhaWxzLXRpdGxlIik7CisgICAgdGl0
bGVDZWxsLmNvbFNwYW4gPSAyOworICAgIHZhciB0aXRsZVJvdyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRyIik7CisgICAgdGl0bGVSb3cuYXBwZW5kQ2hpbGQodGl0bGVDZWxsKTsKKyAgICB0
aGlzLl9jb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGl0bGVSb3cpOworfQorCitXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5Qb3B1cENvbnRlbnRIZWxwZXIucHJvdG90eXBl
ID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gc3R5bGVOYW1lCisgICAgICov
CisgICAgX2NyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbnRlbnQsIHN0eWxlTmFtZSkKKyAgICB7Cisg
ICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKKyAgICAg
ICAgdGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7Cisg
ICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAg
Y2VsbC5jbGFzc05hbWUgPSAidGltZWxpbmUtZGV0YWlscyI7CisgICAgICAgIGlmIChzdHlsZU5h
bWUpCisgICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSArPSAiICIgKyBzdHlsZU5hbWU7CisgICAg
ICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb250ZW50OworICAgICAgICByZXR1cm4gY2VsbDsKKyAg
ICB9LAorCisgICAgX2FwcGVuZFRleHRSb3c6IGZ1bmN0aW9uKHRpdGxlLCBjb250ZW50KQorICAg
IHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAg
ICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0
YWlscy1yb3ctdGl0bGUiKSk7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVD
ZWxsKGNvbnRlbnQsICJ0aW1lbGluZS1kZXRhaWxzLXJvdy1kYXRhIikpOworICAgICAgICB0aGlz
Ll9jb250ZW50VGFibGUuYXBwZW5kQ2hpbGQocm93KTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtzdHJpbmc9fSB0aXRsZVN0eWxlCisgICAgICovCisgICAgX2FwcGVuZEVsZW1l
bnRSb3c6IGZ1bmN0aW9uKHRpdGxlLCBjb250ZW50LCB0aXRsZVN0eWxlKQorICAgIHsKKyAgICAg
ICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgIHZhciB0
aXRsZUNlbGwgPSB0aGlzLl9jcmVhdGVDZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0YWlscy1yb3ct
dGl0bGUiKTsKKyAgICAgICAgaWYgKHRpdGxlU3R5bGUpCisgICAgICAgICAgICB0aXRsZUNlbGwu
YWRkU3R5bGVDbGFzcyh0aXRsZVN0eWxlKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRpdGxl
Q2VsbCk7CisgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsK
KyAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAidGltZWxpbmUtZGV0YWlscyI7CisgICAgICAgIGNl
bGwuYXBwZW5kQ2hpbGQoY29udGVudCk7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsK
KyAgICAgICAgdGhpcy5fY29udGVudFRhYmxlLmFwcGVuZENoaWxkKHJvdyk7CisgICAgfSwKKwor
ICAgIF9hcHBlbmRTdGFja1RyYWNlOiBmdW5jdGlvbih0aXRsZSwgc3RhY2tUcmFjZSwgY2FsbEZy
YW1lTGlua2lmaWVyKQorICAgIHsKKyAgICAgICAgdGhpcy5fYXBwZW5kVGV4dFJvdygiIiwgIiIp
OworICAgICAgICB2YXIgZnJhbWVzVGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJs
ZSIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YWNrVHJhY2UubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZVtpXTsKKyAgICAgICAg
ICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICAgICAg
cm93LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1kZXRhaWxzIjsKKyAgICAgICAgICAgIHJvdy5hcHBl
bmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKHN0YWNrRnJhbWUuZnVuY3Rpb25OYW1lID8gc3RhY2tG
cmFtZS5mdW5jdGlvbk5hbWUgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVu
Y3Rpb24pIiksICJ0aW1lbGluZS1mdW5jdGlvbi1uYW1lIikpOworICAgICAgICAgICAgcm93LmFw
cGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoIiBAICIpKTsKKyAgICAgICAgICAgIHZhciBsaW5r
Q2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgICAgICB2YXIgdXJs
RWxlbWVudCA9IGNhbGxGcmFtZUxpbmtpZmllcihzdGFja0ZyYW1lKTsKKyAgICAgICAgICAgIGxp
bmtDZWxsLmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOworICAgICAgICAgICAgcm93LmFwcGVuZENo
aWxkKGxpbmtDZWxsKTsKKyAgICAgICAgICAgIGZyYW1lc1RhYmxlLmFwcGVuZENoaWxkKHJvdyk7
CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudFJvdyh0aXRsZSwgZnJhbWVz
VGFibGUsICJ0aW1lbGluZS1zdGFja3RyYWNlLXRpdGxlIik7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90aW1lbGluZVBhbmVsLmNzcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGltZWxpbmVQYW5lbC5jc3MKaW5k
ZXggMDAwMTIzMmNlZTcyOTYwMDI1ODFiNjQ5OTIzZjkzZmY3MGI1MzExMy4uMzVhY2RlZTY3ZTYx
ZWM3OWZiOTllMTFjN2YyYjBlMzc2ZDU5YTFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC90aW1lbGluZVBhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RpbWVsaW5lUGFuZWwuY3NzCkBAIC0zNTMsNiArMzUzLDEw
IEBACiAgICAgb3BhY2l0eTogMC4yOwogfQogCisudGltZWxpbmUtZ3JhcGgtYmFyLmNwdSB7Cisg
ICAgb3BhY2l0eTogMC42OworfQorCiAudGltZWxpbmUtZ3JhcGgtc2lkZS5ldmVuIHsKICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpOwogfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFjN2MyMjZh
YzY1MDI5NDQ0YTdmYmQxOWI0NjNhYmU5ZTMwMDQwMDAuLmFlYWFmOWE0ZTZmNWY5N2RiYTU2MWQ0
M2Q5MTg4Y2IyMWIwOGEwYmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMi0yNyAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogbW92ZSByZWNvcmQgZm9ybWF0dGluZyBpbnRvIHRoZSB0aW1lbGluZSBwcmVzZW50YXRpb24g
bW9kZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXJlY2VpdmUtcmVzcG9uc2UtZXZlbnQuaHRtbDoK
KwogMjAxMi0wMi0yNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFcnJvciBjaGVjayByZWdleHAgbWluIHF1YW50aWZpZXIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1yZWNlaXZlLXJlc3BvbnNlLWV2ZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvdGltZWxpbmUtcmVjZWl2ZS1y
ZXNwb25zZS1ldmVudC5odG1sCmluZGV4IGM1MTQ4ZTM4ZDUyMmYxZDkzYzY1ZTExNTU1NTViMTJh
MDI2ZjY5ZTUuLjU2MTRjMGU2MmFmNzhhNWU2MDk3ZTU0OGQ1MDViZWJjNjlhMWI4MWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1yZWNlaXZlLXJl
c3BvbnNlLWV2ZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3Rp
bWVsaW5lLXJlY2VpdmUtcmVzcG9uc2UtZXZlbnQuaHRtbApAQCAtNDgsNyArNDgsNyBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnRpbWVs
aW5lLl9tb2RlbC5fY29sbGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKIAotICAgICAgICB2YXIgcmVj
b3JkcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMudGltZWxpbmUuX3Jvb3RSZWNvcmQuY2hpbGRyZW47
CisgICAgICAgIHZhciByZWNvcmRzID0gV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS5fcm9v
dFJlY29yZCgpLmNoaWxkcmVuOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlY29yZHMu
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBkdW1wRm9ybWF0dGVkUmVjb3JkKHJlY29yZHNbaV0p
OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129070</attachid>
            <date>2012-02-27 11:07:21 -0800</date>
            <delta_ts>2012-02-27 11:10:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79684-20120227230719.patch</filename>
            <type>text/plain</type>
            <size>73538</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI0OTAzNmVkNDllZmQy
OGE3ZjA1ZTA1MzY1NWEyYTZlYTEzYjg3MS4uZDE4ZTY0NzFmNzNkN2Q2OWNlMjI5YTM3OGMwMjNh
NTRkOGZjYjg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0IEBACiAyMDEyLTAyLTI3ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9y
OiBtb3ZlIHJlY29yZCBmb3JtYXR0aW5nIGludG8gdGhlIHRpbWVsaW5lIHByZXNlbnRhdGlvbiBt
b2RlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5
Njg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVNb2RlbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlLnVwZGF0ZS51cGRhdGVCb3VuZGFyaWVzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3VsYXRvci5wcm90b3R5
cGUudXBkYXRlQm91bmRhcmllcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9yb290UmVjb3JkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fdXBkYXRlUmVj
b3Jkc0NvdW50ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90
eXBlLl9yZXBvcHVsYXRlUmVjb3Jkcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5wcm90b3R5cGUuX29uVGltZWxpbmVFdmVudFJlY29yZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5l
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fcmVzZXRQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3Jl
ZnJlc2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl91
cGRhdGVCb3VuZGFyaWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnBy
b3RvdHlwZS5fZmlsdGVyUmVjb3Jkcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5wcm90b3R5cGUucmV2ZWFsUmVjb3JkQXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwucHJvdG90eXBlLl9zaG93UG9wb3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZS5jb21wdXRlQmFyR3JhcGhQZXJjZW50YWdl
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZS5j
b21wdXRlQmFyR3JhcGhXaW5kb3dQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZS51cGRhdGVCb3VuZGFyaWVzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVN0YXJ0QXRaZXJvQ2FsY3VsYXRvci5wcm90b3R5cGUuY29tcHV0
ZUJhckdyYXBoUGVyY2VudGFnZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkR3JhcGhSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhS
b3cucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLmNyZWF0ZUZvcm1hdHRlZFJlY29yZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2NyZWF0ZVJv
b3RSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlLnJvb3RSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZmluZFBhcmVudFJlY29yZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUuX3Jlc2V0V2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5fYWRkQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnNldENhdGVnb3J5VmlzaWJpbGl0
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuZ2V0IF9yZWNvcmRTdHlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUuZ2V0IGxhc3RDaGlsZEVuZFRpbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3Jk
LnByb3RvdHlwZS5zZXQgbGFzdENoaWxkRW5kVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLmdldCBzZWxmVGltZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQu
cHJvdG90eXBlLnNldCBzZWxmVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLmdldCBjcHVUaW1lKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUu
aXNMb25nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LlJlY29yZC5wcm90b3R5cGUuZ2V0IGNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUuY29udGFpbnNUaW1lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5w
cm90b3R5cGUuX2dlbmVyYXRlQWdncmVnYXRlZEluZm8pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZS5nZW5lcmF0ZVBvcHVw
Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5SZWNvcmQucHJvdG90eXBlLl9yZWZyZXNoRGV0YWlscyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLl9nZXRSZWNvcmRE
ZXRhaWxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LlJlY29yZC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLl9saW5raWZ5Q2Fs
bEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LlJlY29yZC5wcm90b3R5cGUuX2xpbmtpZnlUb3BDYWxsRnJhbWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZS5fbGlua2lm
eVNjcmlwdExvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUuY2FsY3VsYXRlQWdncmVnYXRlZFN0YXRzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90
b3R5cGUuZ2V0IGFnZ3JlZ2F0ZWRTdGF0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5Qb3B1cENvbnRlbnRIZWxwZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3Rv
dHlwZS5fY3JlYXRlQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50
YXRpb25Nb2RlbC5Qb3B1cENvbnRlbnRIZWxwZXIucHJvdG90eXBlLl9hcHBlbmRUZXh0Um93KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlBvcHVwQ29u
dGVudEhlbHBlci5wcm90b3R5cGUuX2FwcGVuZEVsZW1lbnRSb3cpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3Rv
dHlwZS5fYXBwZW5kU3RhY2tUcmFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC90
aW1lbGluZVBhbmVsLmNzczoKKyAgICAgICAgKC50aW1lbGluZS1ncmFwaC1iYXIuY3B1KToKKwor
MjAxMi0wMi0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogQ3RybCtLIHNob3VsZCBub3Qgem9vbSBpbgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2NzYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzCmluZGV4IDk2
ZjI1NDQxODUxNGUxYTVmMThmYjZmNzQ4OWY4YjJmZmYwZmI3MTMuLjJkMDc4Mzg4N2VmZGMyYTU3
YTM1NzljOTRiZTNmZDUwODVkMjI0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanMKQEAgLTE3MCw3ICsxNzAsNiBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICByZXNldDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgdGhpcy5zdG9wUmVjb3JkKCk7CiAgICAgICAgIHRoaXMuX3Jl
Y29yZHMgPSBbXTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZp
ZXdQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92
ZXJ2aWV3UGFuZS5qcwppbmRleCA1OTI2ZGI3MGU1OGI3MWJkMGEwNTVmYzUyZTE5OWI5ZmU2OTMw
ODIxLi4yNWRmZmNhMDI4ZTI4ZGM5ZmQ0ZjNjMjYxOWFhYWJjYTBiM2Y3MzU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVy
dmlld1BhbmUuanMKQEAgLTE3NCw3ICsxNzQsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdQYW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBDcmVhdGUgc3BhcnNlIGFycmF5
cyB3aXRoIDEwMSBjZWxscyBlYWNoIHRvIGZpbGwgd2l0aCBjaHVua3MgZm9yIGEgZ2l2ZW4gY2F0
ZWdvcnkuCiAgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvci5yZXNldCgpOwotICAgICAg
ICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5mb3JBbGxSZWNvcmRzKHJlY29yZHMsIHRoaXMu
X292ZXJ2aWV3Q2FsY3VsYXRvci51cGRhdGVCb3VuZGFyaWVzLmJpbmQodGhpcy5fb3ZlcnZpZXdD
YWxjdWxhdG9yKSk7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiB1cGRhdGVCb3VuZGFyaWVz
KHJlY29yZCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9y
LnVwZGF0ZUJvdW5kYXJpZXMocmVjb3JkKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9y
QWxsUmVjb3JkcyhyZWNvcmRzLCB1cGRhdGVCb3VuZGFyaWVzLmJpbmQodGhpcykpOwogCiAgICAg
ICAgIGZ1bmN0aW9uIG1hcmtQZXJjZW50YWdlc0ZvclJlY29yZChyZWNvcmQpCiAgICAgICAgIHsK
QEAgLTQ3NywxNSArNDg0LDE2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3Vs
YXRvci5wcm90b3R5cGUgPSB7CiAKICAgICB1cGRhdGVCb3VuZGFyaWVzOiBmdW5jdGlvbihyZWNv
cmQpCiAgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIGlmICh0eXBl
b2YgdGhpcy5taW5pbXVtQm91bmRhcnkgPT09ICJ1bmRlZmluZWQiIHx8IHJlY29yZC5zdGFydFRp
bWUgPCB0aGlzLm1pbmltdW1Cb3VuZGFyeSkgewogICAgICAgICAgICAgdGhpcy5taW5pbXVtQm91
bmRhcnkgPSByZWNvcmQuc3RhcnRUaW1lOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICh0eXBlb2YgdGhp
cy5tYXhpbXVtQm91bmRhcnkgPT09ICJ1bmRlZmluZWQiIHx8IHJlY29yZC5lbmRUaW1lID4gdGhp
cy5tYXhpbXVtQm91bmRhcnkpIHsKICAgICAgICAgICAgIHRoaXMubWF4aW11bUJvdW5kYXJ5ID0g
cmVjb3JkLmVuZFRpbWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKICAgICBnZXQgYm91bmRhcnlTcGFuKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRl
eCAyMTRmMWEyMjcxOGE5YjE2NGFlMTliYzBmYzYzNDE4MWJkODIwNzg4Li45OTUxZjllOTljNGJm
MThlZDI5NzczYjE4MTg3MGY4ZjhmZGJiOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBAIC0zOCw5ICszOCw2IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMucmVnaXN0ZXJS
ZXF1aXJlZENTUygidGltZWxpbmVQYW5lbC5jc3MiKTsKIAogICAgIHRoaXMuX3ByZXNlbnRhdGlv
bk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsKCk7Ci0g
ICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkQ2F0ZWdvcnkobmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZUNhdGVnb3J5KCJsb2FkaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkaW5n
IiksICJyZ2IoNDcsMTAyLDIzNikiKSk7Ci0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRk
Q2F0ZWdvcnkobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5KCJzY3JpcHRpbmciLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdGluZyIpLCAicmdiKDE1NywyMzEsMTE5KSIpKTsK
LSAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRDYXRlZ29yeShuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQ2F0ZWdvcnkoInJlbmRlcmluZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVu
ZGVyaW5nIiksICJyZ2IoMTY0LDYwLDI1NSkiKSk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5FdmVudHMuV2luZG93Q2hhbmdlZCwgdGhpcy5fc2NoZWR1bGVSZWZyZXNoLmJpbmQodGhpcywg
ZmFsc2UpKTsKICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5DYXRlZ29yeVZpc2li
aWxpdHlDaGFuZ2VkLCB0aGlzLl9zY2hlZHVsZVJlZnJlc2guYmluZCh0aGlzLCB0cnVlKSk7CiAK
QEAgLTk4LDE0ICs5NSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24o
KQogICAgIHRoaXMuX2V4cGFuZEVsZW1lbnRzLmlkID0gIm9ycGhhbi1leHBhbmQtZWxlbWVudHMi
OwogICAgIHRoaXMuX2l0ZW1zR3JhcGhzRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9leHBhbmRF
bGVtZW50cyk7CiAKLSAgICB0aGlzLl9yb290UmVjb3JkID0gdGhpcy5fY3JlYXRlUm9vdFJlY29y
ZCgpOwotICAgIHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3JkcyA9IHt9OwotICAgIHRoaXMuX3NjaGVk
dWxlZFJlc291cmNlUmVxdWVzdHMgPSB7fTsKLSAgICB0aGlzLl90aW1lclJlY29yZHMgPSB7fTsK
LSAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVSZWNvcmRzID0ge307Ci0KICAgICB0aGlz
Ll9jYWxjdWxhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IoKTsKLSAg
ICB2YXIgc2hvcnRSZWNvcmRUaHJlc2hvbGRUaXRsZSA9IE51bWJlci5zZWNvbmRzVG9TdHJpbmco
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQpOworICAgIHZh
ciBzaG9ydFJlY29yZFRocmVzaG9sZFRpdGxlID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyhXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5zaG9ydFJlY29yZFRocmVzaG9sZCk7
CiAgICAgdGhpcy5fc2hvd1Nob3J0UmVjb3Jkc1RpdGxlVGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyB0aGUgcmVjb3JkcyB0aGF0IGFyZSBzaG9ydGVyIHRoYW4gJXMiLCBzaG9ydFJl
Y29yZFRocmVzaG9sZFRpdGxlKTsKICAgICB0aGlzLl9oaWRlU2hvcnRSZWNvcmRzVGl0bGVUZXh0
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHRoZSByZWNvcmRzIHRoYXQgYXJlIHNob3J0
ZXIgdGhhbiAlcyIsIHNob3J0UmVjb3JkVGhyZXNob2xkVGl0bGUpOwogICAgIHRoaXMuX2NyZWF0
ZVN0YXR1c2JhckJ1dHRvbnMoKTsKQEAgLTEyOSwxMiArMTIwLDEzIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX21vZGVsLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkLCB0aGlz
Ll9vblJlY29yZHNDbGVhcmVkLCB0aGlzKTsKIAogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRz
KCk7Ci0gICAgdGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7CisKKyAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0Nv
dW50ID0gMDsKKyAgICB0aGlzLl9hbGxSZWNvcmRzQ291bnQgPSAwOwogfQogCiAvLyBEZWZpbmUg
cm93IGhlaWdodCwgc2hvdWxkIGJlIGluIHN5bmMgd2l0aCBzdHlsZXMgZm9yIHRpbWVsaW5lIGdy
YXBocy4KIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJvd0hlaWdodCA9IDE4OwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQgPSAwLjAxNTsKIAogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgIC8qKgpAQCAtMjA1LDQy
ICsxOTcsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLmVsZW1lbnQ7CiAgICAgfSwKIAotICAgIGdldCBfcmVjb3JkU3R5bGVz
KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcmVjb3JkU3R5bGVzQXJyYXkpIHsKLSAgICAg
ICAgICAgIHZhciByZWNvcmRUeXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29y
ZFR5cGU7Ci0gICAgICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmNhdGVnb3JpZXM7Ci0KLSAgICAgICAgICAgIHZhciByZWNvcmRTdHlsZXMgPSB7fTsKLSAg
ICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXSA9IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZlbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNb
InNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTGF5
b3V0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0IiksIGNhdGVnb3J5
OiBjYXRlZ29yaWVzWyJyZW5kZXJpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlJlY2FsY3VsYXRlU3R5bGVzXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVjYWxjdWxhdGUgU3R5bGUiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmlu
ZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUGFpbnRdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYWludCIpLCBjYXRlZ29yeTogY2F0ZWdvcmll
c1sicmVuZGVyaW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5Q
YXJzZUhUTUxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXJzZSIpLCBjYXRl
Z29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuVGltZXJJbnN0YWxsXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSW5zdGFsbCBUaW1lciIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsK
LSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lclJlbW92ZV0gPSB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1lciIpLCBjYXRlZ29yeTogY2F0
ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRU
eXBlcy5UaW1lckZpcmVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lciBG
aXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAg
IHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJSZWFkeVN0YXRlQ2hhbmdlXSA9IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIFJlYWR5IFN0YXRlIENoYW5nZSIpLCBjYXRlZ29y
eTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1ty
ZWNvcmRUeXBlcy5YSFJMb2FkXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhS
IExvYWQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZhbHVhdGVTY3JpcHRdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJFdmFsdWF0ZSBTY3JpcHQiKSwgY2F0ZWdvcnk6IGNhdGVnb3Jp
ZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMu
VGltZVN0YW1wXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhbXAiKSwgY2F0
ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHls
ZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNlbmQgUmVxdWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGlu
ZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNl
aXZlUmVzcG9uc2VdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNlaXZlIFJl
c3BvbnNlIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAg
IHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZUZpbmlzaF0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkZpbmlzaCBMb2FkaW5nIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVz
WyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5GdW5j
dGlvbkNhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiBDYWxs
IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVj
b3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZWREYXRhXSA9IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBEYXRhIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVz
WyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5HQ0V2
ZW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiR0MgRXZlbnQiKSwgY2F0ZWdv
cnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuTWFya0RPTUNvbnRlbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJET01Db250ZW50IGV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmci
XSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtMb2FkXSA9IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZCBldmVudCIpLCBjYXRlZ29yeTogY2F0
ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRU
eXBlcy5TY2hlZHVsZVJlc291cmNlUmVxdWVzdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlNjaGVkdWxlIFJlcXVlc3QiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmci
XSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlcXVlc3RBbmltYXRp
b25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgQW5pbWF0
aW9uIEZyYW1lIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAg
ICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkNhbmNlbEFuaW1hdGlvbkZyYW1lXSA9IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FuY2VsIEFuaW1hdGlvbiBGcmFtZSIpLCBj
YXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5GaXJlQW5pbWF0aW9uRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJBbmltYXRpb24gRnJhbWUgRmlyZWQiKSwgY2F0ZWdvcnk6IGNhdGVnb3Jp
ZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNBcnJheSA9
IHJlY29yZFN0eWxlczsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkU3R5
bGVzQXJyYXk7Ci0gICAgfSwKLQogICAgIF9jcmVhdGVTdGF0dXNiYXJCdXR0b25zOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB0aGlzLnRvZ2dsZVRpbWVsaW5lQnV0dG9uID0gbmV3IFdlYklu
c3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmQiKSwg
InJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSIpOwpAQCAtMzU5LDkgKzMxNSwxNCBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Ny
ZWF0ZUZpbGVTZWxlY3RvcigpOwogICAgIH0sCiAKKyAgICBfcm9vdFJlY29yZDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNv
cmQoKTsKKyAgICB9LAorCiAgICAgX3VwZGF0ZVJlY29yZHNDb3VudGVyOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICB0aGlzLnJlY29yZHNDb3VudGVyLnRleHRDb250ZW50ID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCIlZCBvZiAlZCBjYXB0dXJlZCByZWNvcmRzIGFyZSB2aXNpYmxlIiwgdGhp
cy5fcm9vdFJlY29yZC5fdmlzaWJsZVJlY29yZHNDb3VudCwgdGhpcy5fcm9vdFJlY29yZC5fYWxs
UmVjb3Jkc0NvdW50KTsKKyAgICAgICAgdGhpcy5yZWNvcmRzQ291bnRlci50ZXh0Q29udGVudCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgb2YgJWQgY2FwdHVyZWQgcmVjb3JkcyBhcmUgdmlz
aWJsZSIsIHRoaXMuX3Zpc2libGVSZWNvcmRzQ291bnQsIHRoaXMuX2FsbFJlY29yZHNDb3VudCk7
CiAgICAgfSwKIAogICAgIF91cGRhdGVFdmVudERpdmlkZXJzOiBmdW5jdGlvbigpCkBAIC00NzEs
NyArNDMyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9yZXNldFBhbmVsKCk7CiAgICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5fbW9k
ZWwucmVjb3JkczsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZHNb
aV0sIHRoaXMuX3Jvb3RSZWNvcmQpOworICAgICAgICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRU
b1RpbWVsaW5lKHJlY29yZHNbaV0sIHRoaXMuX3Jvb3RSZWNvcmQoKSk7CiAgICAgICAgIHRoaXMu
X3NjaGVkdWxlUmVmcmVzaChmYWxzZSk7CiAgICAgfSwKIApAQCAtNDgyLDMzICs0NDMsMTMgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX29uVGltZWxp
bmVFdmVudFJlY29yZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2lu
bmVyQWRkUmVjb3JkVG9UaW1lbGluZShldmVudC5kYXRhLCB0aGlzLl9yb290UmVjb3JkKTsKKyAg
ICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKGV2ZW50LmRhdGEsIHRoaXMuX3Jv
b3RSZWNvcmQoKSk7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaChmYWxzZSk7CiAKICAg
ICAgICAgaWYgKHRoaXMuX21lbW9yeVN0YXRpc3RpY3MgJiYgZXZlbnQuZGF0YVsiY291bnRlcnMi
XSkKICAgICAgICAgICAgIHRoaXMuX21lbW9yeVN0YXRpc3RpY3MuYWRkVGltbGluZUV2ZW50KGV2
ZW50KTsKICAgICB9LAogCi0gICAgX2ZpbmRQYXJlbnRSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fZ2x1ZVBhcmVudEJ1dHRvbi50b2dnbGVkKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZTsKLSAgICAgICAgdmFyIHBhcmVudFJlY29y
ZDsKLSAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2Vp
dmVSZXNwb25zZSB8fAotICAgICAgICAgICAgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJl
c291cmNlRmluaXNoIHx8Ci0gICAgICAgICAgICByZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMu
UmVzb3VyY2VSZWNlaXZlZERhdGEpCi0gICAgICAgICAgICBwYXJlbnRSZWNvcmQgPSB0aGlzLl9z
ZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGFbInJlcXVlc3RJZCJdXTsKLSAgICAgICAgZWxz
ZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlRpbWVyRmlyZSkKLSAgICAgICAgICAg
IHBhcmVudFJlY29yZCA9IHRoaXMuX3RpbWVyUmVjb3Jkc1tyZWNvcmQuZGF0YVsidGltZXJJZCJd
XTsKLSAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNl
U2VuZFJlcXVlc3QpCi0gICAgICAgICAgICBwYXJlbnRSZWNvcmQgPSB0aGlzLl9zY2hlZHVsZWRS
ZXNvdXJjZVJlcXVlc3RzW3JlY29yZC5kYXRhWyJ1cmwiXV07Ci0gICAgICAgIGVsc2UgaWYgKHJl
Y29yZC50eXBlID09PSByZWNvcmRUeXBlcy5GaXJlQW5pbWF0aW9uRnJhbWUpCi0gICAgICAgICAg
ICBwYXJlbnRSZWNvcmQgPSB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVSZWNvcmRzW3JlY29y
ZC5kYXRhWyJpZCJdXTsKLSAgICAgICAgcmV0dXJuIHBhcmVudFJlY29yZDsKLSAgICB9LAotCiAg
ICAgX2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZTogZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNv
cmQpCiAgICAgewogICAgICAgICB2YXIgY29ubmVjdGVkVG9PbGRSZWNvcmQgPSBmYWxzZTsKQEAg
LTUxNywxMSArNDU4LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5NYXJrRE9NQ29udGVu
dCB8fCByZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuTWFya0xvYWQpCiAgICAgICAgICAgICBw
YXJlbnRSZWNvcmQgPSBudWxsOyAvLyBObyBiYXIgZW50cnkgZm9yIGxvYWQgZXZlbnRzLgogICAg
ICAgICBlbHNlIGlmICghdGhpcy5fc3RhcnRBdFplcm8gJiYKLSAgICAgICAgICAgICAgICAgICAg
KHBhcmVudFJlY29yZCA9PT0gdGhpcy5fcm9vdFJlY29yZCB8fAorICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9nbHVlUGFyZW50QnV0dG9uLnRvZ2dsZWQgJiYKKyAgICAgICAgICAgICAgICAgICAg
KHBhcmVudFJlY29yZCA9PT0gdGhpcy5fcm9vdFJlY29yZCgpIHx8CiAgICAgICAgICAgICAgICAg
ICAgIHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSB8
fAogICAgICAgICAgICAgICAgICAgICByZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3Vy
Y2VGaW5pc2ggfHwKICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5
cGVzLlJlc291cmNlUmVjZWl2ZWREYXRhKSkgewotICAgICAgICAgICAgdmFyIG5ld1BhcmVudFJl
Y29yZCA9IHRoaXMuX2ZpbmRQYXJlbnRSZWNvcmQocmVjb3JkKTsKKyAgICAgICAgICAgIHZhciBu
ZXdQYXJlbnRSZWNvcmQgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5maW5kUGFyZW50UmVjb3Jk
KHJlY29yZCk7CiAgICAgICAgICAgICBpZiAobmV3UGFyZW50UmVjb3JkKSB7CiAgICAgICAgICAg
ICAgICAgcGFyZW50UmVjb3JkID0gbmV3UGFyZW50UmVjb3JkOwogICAgICAgICAgICAgICAgIGNv
bm5lY3RlZFRvT2xkUmVjb3JkID0gdHJ1ZTsKQEAgLTU0OCwzNSArNDkwLDM1IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIHZhciBmb3JtYXR0ZWRSZWNvcmQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkKHJlY29yZCwgcGFyZW50UmVjb3JkLCB0aGlzLCB0aGlz
Ll9saW5raWZpZXIsIHNjcmlwdERldGFpbHMpOworICAgICAgICB2YXIgZm9ybWF0dGVkUmVjb3Jk
ID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlRm9ybWF0dGVkUmVjb3JkKHJlY29yZCwg
cGFyZW50UmVjb3JkLCBzY3JpcHREZXRhaWxzKTsKIAogICAgICAgICBpZiAocmVjb3JkLnR5cGUg
PT09IHJlY29yZFR5cGVzLk1hcmtET01Db250ZW50IHx8IHJlY29yZC50eXBlID09PSByZWNvcmRU
eXBlcy5NYXJrTG9hZCkgewogICAgICAgICAgICAgdGhpcy5fdGltZVN0YW1wUmVjb3Jkcy5wdXNo
KGZvcm1hdHRlZFJlY29yZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICArK3RoaXMuX3Jvb3RSZWNvcmQuX2FsbFJlY29yZHNDb3VudDsKLSAgICAgICAgZm9ybWF0
dGVkUmVjb3JkLmNvbGxhcHNlZCA9IChwYXJlbnRSZWNvcmQgPT09IHRoaXMuX3Jvb3RSZWNvcmQp
OworICAgICAgICArK3RoaXMuX2FsbFJlY29yZHNDb3VudDsKKyAgICAgICAgZm9ybWF0dGVkUmVj
b3JkLmNvbGxhcHNlZCA9IChwYXJlbnRSZWNvcmQgPT09IHRoaXMuX3Jvb3RSZWNvcmQoKSk7CiAK
ICAgICAgICAgdmFyIGNoaWxkcmVuQ291bnQgPSBjaGlsZHJlbiA/IGNoaWxkcmVuLmxlbmd0aCA6
IDA7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsgKytpKQogICAg
ICAgICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKGNoaWxkcmVuW2ldLCBmb3Jt
YXR0ZWRSZWNvcmQpOwogCi0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5fY2FsY3VsYXRlQWdncmVn
YXRlZFN0YXRzKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3JpZXMpOworICAgICAgICBm
b3JtYXR0ZWRSZWNvcmQuY2FsY3VsYXRlQWdncmVnYXRlZFN0YXRzKHRoaXMuX3ByZXNlbnRhdGlv
bk1vZGVsLmNhdGVnb3JpZXMpOwogCiAgICAgICAgIGlmIChjb25uZWN0ZWRUb09sZFJlY29yZCkg
ewogICAgICAgICAgICAgcmVjb3JkID0gZm9ybWF0dGVkUmVjb3JkOwogICAgICAgICAgICAgZG8g
ewogICAgICAgICAgICAgICAgIHZhciBwYXJlbnQgPSByZWNvcmQucGFyZW50OwotICAgICAgICAg
ICAgICAgIGlmIChwYXJlbnQuX2xhc3RDaGlsZEVuZFRpbWUgPCByZWNvcmQuX2xhc3RDaGlsZEVu
ZFRpbWUpCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC5fbGFzdENoaWxkRW5kVGltZSA9IHJl
Y29yZC5fbGFzdENoaWxkRW5kVGltZTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBjYXRlZ29y
eSBpbiBmb3JtYXR0ZWRSZWNvcmQuX2FnZ3JlZ2F0ZWRTdGF0cykKLSAgICAgICAgICAgICAgICAg
ICAgcGFyZW50Ll9hZ2dyZWdhdGVkU3RhdHNbY2F0ZWdvcnldICs9IGZvcm1hdHRlZFJlY29yZC5f
YWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XTsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50Lmxh
c3RDaGlsZEVuZFRpbWUgPCByZWNvcmQubGFzdENoaWxkRW5kVGltZSkKKyAgICAgICAgICAgICAg
ICAgICAgcGFyZW50Lmxhc3RDaGlsZEVuZFRpbWUgPSByZWNvcmQubGFzdENoaWxkRW5kVGltZTsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBpbiBmb3JtYXR0ZWRSZWNvcmQuYWdn
cmVnYXRlZFN0YXRzKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYWdncmVnYXRlZFN0YXRz
W2NhdGVnb3J5XSArPSBmb3JtYXR0ZWRSZWNvcmQuYWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XTsK
ICAgICAgICAgICAgICAgICByZWNvcmQgPSBwYXJlbnQ7CiAgICAgICAgICAgICB9IHdoaWxlIChy
ZWNvcmQucGFyZW50KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChwYXJlbnRS
ZWNvcmQgIT09IHRoaXMuX3Jvb3RSZWNvcmQpCi0gICAgICAgICAgICAgICAgcGFyZW50UmVjb3Jk
Ll9zZWxmVGltZSAtPSBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSAtIGZvcm1hdHRlZFJlY29yZC5z
dGFydFRpbWU7CisgICAgICAgICAgICBpZiAocGFyZW50UmVjb3JkICE9PSB0aGlzLl9yb290UmVj
b3JkKCkpCisgICAgICAgICAgICAgICAgcGFyZW50UmVjb3JkLnNlbGZUaW1lIC09IGZvcm1hdHRl
ZFJlY29yZC5lbmRUaW1lIC0gZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZTsKICAgICAgICAgfQog
ICAgICAgICAvLyBLZWVwIGJhciBlbnRyeSBmb3IgbWFyayB0aW1lbGluZSBzaW5jZSBuZXN0aW5n
IG1pZ2h0IGJlIGludGVyZXN0aW5nIHRvIHRoZSB1c2VyLgogICAgICAgICBpZiAocmVjb3JkLnR5
cGUgPT09IHJlY29yZFR5cGVzLlRpbWVTdGFtcCkKQEAgLTYwMiwxNiArNTQ0LDYgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zY2hlZHVs
ZVJlZnJlc2goZmFsc2UpOwogICAgIH0sCiAKLSAgICBfY3JlYXRlUm9vdFJlY29yZDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdmFyIHJvb3RSZWNvcmQgPSB7fTsKLSAgICAgICAgcm9vdFJl
Y29yZC5jaGlsZHJlbiA9IFtdOwotICAgICAgICByb290UmVjb3JkLl92aXNpYmxlUmVjb3Jkc0Nv
dW50ID0gMDsKLSAgICAgICAgcm9vdFJlY29yZC5fYWxsUmVjb3Jkc0NvdW50ID0gMDsKLSAgICAg
ICAgcm9vdFJlY29yZC5fYWdncmVnYXRlZFN0YXRzID0ge307Ci0gICAgICAgIHJldHVybiByb290
UmVjb3JkOwotICAgIH0sCi0KICAgICBfY2xlYXJQYW5lbDogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdGhpcy5fbW9kZWwucmVzZXQoKTsKQEAgLTYyNywxNiArNTU5LDEyIEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsLnJlc2V0KCk7CiAgICAgICAgIHRoaXMuX3RpbWVTdGFtcFJlY29yZHMg
PSBbXTsKLSAgICAgICAgdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzID0ge307Ci0gICAgICAgIHRo
aXMuX3NjaGVkdWxlZFJlc291cmNlUmVxdWVzdHMgPSB7fTsKLSAgICAgICAgdGhpcy5fdGltZXJS
ZWNvcmRzID0ge307Ci0gICAgICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZVJlY29yZHMg
PSB7fTsKLSAgICAgICAgdGhpcy5fcm9vdFJlY29yZCA9IHRoaXMuX2NyZWF0ZVJvb3RSZWNvcmQo
KTsKICAgICAgICAgdGhpcy5fYm91bmRhcmllc0FyZVZhbGlkID0gZmFsc2U7CiAgICAgICAgIHRo
aXMuX292ZXJ2aWV3UGFuZS5yZXNldCgpOwogICAgICAgICB0aGlzLl9hZGp1c3RTY3JvbGxQb3Np
dGlvbigwKTsKICAgICAgICAgdGhpcy5fY2xvc2VSZWNvcmREZXRhaWxzKCk7Ci0gICAgICAgIHRo
aXMuX2xpbmtpZmllci5yZXNldCgpOworICAgICAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50
ID0gMDsKKyAgICAgICAgdGhpcy5fYWxsUmVjb3Jkc0NvdW50ID0gMDsKICAgICB9LAogCiAgICAg
ZWxlbWVudHNUb1Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3I6IGZ1bmN0aW9uKCkKQEAgLTY5MCw3
ICs2MTgsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fcmVmcmVzaFRpbWVvdXQ7CiAgICAgICAgIH0KIAotICAgICAg
ICB0aGlzLl9vdmVydmlld1BhbmUudXBkYXRlKHRoaXMuX3Jvb3RSZWNvcmQuY2hpbGRyZW4sIHRo
aXMuX3Nob3dTaG9ydEV2ZW50cyk7CisgICAgICAgIHRoaXMuX292ZXJ2aWV3UGFuZS51cGRhdGUo
dGhpcy5fcm9vdFJlY29yZCgpLmNoaWxkcmVuLCB0aGlzLl9zaG93U2hvcnRFdmVudHMpOwogCiAg
ICAgICAgIGlmICghdGhpcy5fYm91bmRhcmllc0FyZVZhbGlkKQogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlQm91bmRhcmllcygpOwpAQCAtNzA5LDggKzYzNyw4IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2FsY3VsYXRvci53aW5kb3dM
ZWZ0ID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwud2luZG93TGVmdDsKICAgICAgICAgdGhpcy5f
Y2FsY3VsYXRvci53aW5kb3dSaWdodCA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLndpbmRvd1Jp
Z2h0OwogCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcm9vdFJlY29yZC5jaGls
ZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0b3IudXBkYXRlQm91
bmRhcmllcyh0aGlzLl9yb290UmVjb3JkLmNoaWxkcmVuW2ldKTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLl9yb290UmVjb3JkKCkuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICB0aGlzLl9jYWxjdWxhdG9yLnVwZGF0ZUJvdW5kYXJpZXModGhpcy5fcm9vdFJlY29y
ZCgpLmNoaWxkcmVuW2ldKTsKIAogICAgICAgICB0aGlzLl9jYWxjdWxhdG9yLmNhbGN1bGF0ZVdp
bmRvdygpOwogICAgIH0sCkBAIC03MTgsMTEgKzY0NiwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgX2ZpbHRlclJlY29yZHM6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHZhciByZWNvcmRzSW5XaW5kb3cgPSBbXTsKLSAgICAgICAgdmFyIGZpbHRl
ciA9IHRoaXMuX3N0YXJ0QXRaZXJvID8gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVN0YXJ0QXRa
ZXJvUmVjb3JkRmlsdGVyKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLCB0aGlzLl9yb290UmVjb3Jk
LCB0aGlzLl9zaG93U2hvcnRFdmVudHMpCisgICAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLl9zdGFy
dEF0WmVybyA/IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVTdGFydEF0WmVyb1JlY29yZEZpbHRl
cih0aGlzLl9wcmVzZW50YXRpb25Nb2RlbCwgdGhpcy5fcm9vdFJlY29yZCgpLCB0aGlzLl9zaG93
U2hvcnRFdmVudHMpCiAgICAgICAgICAgICA6IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRGaWx0ZXIodGhpcy5fY2FsY3VsYXRvciwgdGhpcy5fc2hvd1Nob3J0RXZlbnRzKTsKLSAgICAg
ICAgdGhpcy5fcm9vdFJlY29yZC5fdmlzaWJsZVJlY29yZHNDb3VudCA9IDA7CisgICAgICAgIHRo
aXMuX3Zpc2libGVSZWNvcmRzQ291bnQgPSAwOwogCi0gICAgICAgIHZhciBzdGFjayA9IFt7Y2hp
bGRyZW46IHRoaXMuX3Jvb3RSZWNvcmQuY2hpbGRyZW4sIGluZGV4OiAwLCBwYXJlbnRJc0NvbGxh
cHNlZDogZmFsc2V9XTsKKyAgICAgICAgdmFyIHN0YWNrID0gW3tjaGlsZHJlbjogdGhpcy5fcm9v
dFJlY29yZCgpLmNoaWxkcmVuLCBpbmRleDogMCwgcGFyZW50SXNDb2xsYXBzZWQ6IGZhbHNlfV07
CiAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHsKICAgICAgICAgICAgIHZhciBlbnRyeSA9
IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgICAgICAgdmFyIHJlY29yZHMgPSBlbnRy
eS5jaGlsZHJlbjsKQEAgLTczMSw3ICs2NTksNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICsrZW50cnkuaW5kZXg7CiAKICAgICAg
ICAgICAgICAgICAgaWYgKGZpbHRlci5hY2NlcHQocmVjb3JkKSkgewotICAgICAgICAgICAgICAg
ICAgICAgKyt0aGlzLl9yb290UmVjb3JkLl92aXNpYmxlUmVjb3Jkc0NvdW50OworICAgICAgICAg
ICAgICAgICAgICAgKyt0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50OwogICAgICAgICAgICAgICAg
ICAgICAgKytyZWNvcmQucGFyZW50Ll9pbnZpc2libGVDaGlsZHJlbkNvdW50OwogICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFlbnRyeS5wYXJlbnRJc0NvbGxhcHNlZCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWNvcmRzSW5XaW5kb3cucHVzaChyZWNvcmQpOwpAQCAtNzY4LDcgKzY5Niw3
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5mb3JBbGxSZWNvcmRzKHRoaXMuX3Jvb3RSZWNvcmQuY2hpbGRy
ZW4sIHJlY29yZEZpbmRlcik7CisgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLmZv
ckFsbFJlY29yZHModGhpcy5fcm9vdFJlY29yZCgpLmNoaWxkcmVuLCByZWNvcmRGaW5kZXIpOwog
CiAgICAgICAgIC8vIFRoZSByZWNvcmQgZW5kcyBiZWZvcmUgdGhlIHdpbmRvdyBsZWZ0IGJvdW5k
IHNvIHNjcm9sbCB0byB0aGUgdG9wLgogICAgICAgICBpZiAoIXJlY29yZFRvUmV2ZWFsKSB7CkBA
IC03NzcsNyArNzA1LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgLy8gRXhwYW5kIGFsbCBhbmNlc3RvcnMuCi0gICAgICAg
IGZvciAodmFyIHBhcmVudCA9IHJlY29yZFRvUmV2ZWFsLnBhcmVudDsgcGFyZW50ICE9PSB0aGlz
Ll9yb290UmVjb3JkOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50KQorICAgICAgICBmb3IgKHZhciBw
YXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJlbnQ7IHBhcmVudCAhPT0gdGhpcy5fcm9vdFJlY29y
ZCgpOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50KQogICAgICAgICAgICAgcGFyZW50LmNvbGxhcHNl
ZCA9IGZhbHNlOwogICAgICAgICB2YXIgcmVjb3Jkc0luV2luZG93ID0gdGhpcy5fZmlsdGVyUmVj
b3JkcygpOwogICAgICAgICB2YXIgaW5kZXggPSByZWNvcmRzSW5XaW5kb3cuaW5kZXhPZihyZWNv
cmRUb1JldmVhbCk7CkBAIC05MTEsNyArODM5LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlID0gewogICAgIF9zaG93UG9wb3ZlcjogZnVuY3Rpb24oYW5jaG9yLCBwb3Bv
dmVyKQogICAgIHsKICAgICAgICAgdmFyIHJlY29yZCA9IGFuY2hvci5yb3cuX3JlY29yZDsKLSAg
ICAgICAgcG9wb3Zlci5zaG93KHJlY29yZC5fZ2VuZXJhdGVQb3B1cENvbnRlbnQodGhpcy5fY2Fs
Y3VsYXRvciwgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuY2F0ZWdvcmllcyksIGFuY2hvcik7Cisg
ICAgICAgIHBvcG92ZXIuc2hvdyhyZWNvcmQuZ2VuZXJhdGVQb3B1cENvbnRlbnQodGhpcy5fY2Fs
Y3VsYXRvciksIGFuY2hvcik7CiAgICAgfSwKIAogICAgIF9jbG9zZVJlY29yZERldGFpbHM6IGZ1
bmN0aW9uKCkKQEAgLTk0Niw5ICs4NzQsMTAgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3Vs
YXRvci5wcm90b3R5cGUgPSB7CiAgICAgY29tcHV0ZUJhckdyYXBoUGVyY2VudGFnZXM6IGZ1bmN0
aW9uKHJlY29yZCkKICAgICB7CiAgICAgICAgIHZhciBzdGFydCA9IChyZWNvcmQuc3RhcnRUaW1l
IC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7Ci0gICAg
ICAgIHZhciBlbmQgPSAocmVjb3JkLnN0YXJ0VGltZSArIHJlY29yZC5fc2VsZlRpbWUgLSB0aGlz
Lm1pbmltdW1Cb3VuZGFyeSkgLyB0aGlzLmJvdW5kYXJ5U3BhbiAqIDEwMDsKLSAgICAgICAgdmFy
IGVuZFdpdGhDaGlsZHJlbiA9IChyZWNvcmQuX2xhc3RDaGlsZEVuZFRpbWUgLSB0aGlzLm1pbmlt
dW1Cb3VuZGFyeSkgLyB0aGlzLmJvdW5kYXJ5U3BhbiAqIDEwMDsKLSAgICAgICAgcmV0dXJuIHtz
dGFydDogc3RhcnQsIGVuZDogZW5kLCBlbmRXaXRoQ2hpbGRyZW46IGVuZFdpdGhDaGlsZHJlbn07
CisgICAgICAgIHZhciBlbmQgPSAocmVjb3JkLnN0YXJ0VGltZSArIHJlY29yZC5zZWxmVGltZSAt
IHRoaXMubWluaW11bUJvdW5kYXJ5KSAvIHRoaXMuYm91bmRhcnlTcGFuICogMTAwOworICAgICAg
ICB2YXIgZW5kV2l0aENoaWxkcmVuID0gKHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1lIC0gdGhpcy5t
aW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7CisgICAgICAgIHZhciBj
cHVXaWR0aCA9IHJlY29yZC5jcHVUaW1lIC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7CisgICAg
ICAgIHJldHVybiB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCwgZW5kV2l0aENoaWxkcmVuOiBlbmRX
aXRoQ2hpbGRyZW4sIGNwdVdpZHRoOiBjcHVXaWR0aH07CiAgICAgfSwKIAogICAgIGNvbXB1dGVC
YXJHcmFwaFdpbmRvd1Bvc2l0aW9uOiBmdW5jdGlvbihyZWNvcmQsIGNsaWVudFdpZHRoKQpAQCAt
OTYxLDkgKzg5MCwxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIGxlZnQgPSBwZXJjZW50YWdlcy5zdGFydCAvIDEwMCAqIHdvcmtp
bmdBcmVhOwogICAgICAgICB2YXIgd2lkdGggPSAocGVyY2VudGFnZXMuZW5kIC0gcGVyY2VudGFn
ZXMuc3RhcnQpIC8gMTAwICogd29ya2luZ0FyZWEgKyBtaW5XaWR0aDsKICAgICAgICAgdmFyIHdp
ZHRoV2l0aENoaWxkcmVuID0gIChwZXJjZW50YWdlcy5lbmRXaXRoQ2hpbGRyZW4gLSBwZXJjZW50
YWdlcy5zdGFydCkgLyAxMDAgKiB3b3JraW5nQXJlYTsKKyAgICAgICAgdmFyIGNwdVdpZHRoID0g
cGVyY2VudGFnZXMuY3B1V2lkdGggLyAxMDAgKiB3b3JraW5nQXJlYSArIG1pbldpZHRoOwogICAg
ICAgICBpZiAocGVyY2VudGFnZXMuZW5kV2l0aENoaWxkcmVuID4gcGVyY2VudGFnZXMuZW5kKQog
ICAgICAgICAgICAgd2lkdGhXaXRoQ2hpbGRyZW4gKz0gYm9yZGVyV2lkdGggKyBtaW5XaWR0aDsK
LSAgICAgICAgcmV0dXJuIHtsZWZ0OiBsZWZ0LCB3aWR0aDogd2lkdGgsIHdpZHRoV2l0aENoaWxk
cmVuOiB3aWR0aFdpdGhDaGlsZHJlbn07CisgICAgICAgIHJldHVybiB7bGVmdDogbGVmdCwgd2lk
dGg6IHdpZHRoLCB3aWR0aFdpdGhDaGlsZHJlbjogd2lkdGhXaXRoQ2hpbGRyZW4sIGNwdVdpZHRo
OiBjcHVXaWR0aH07CiAgICAgfSwKIAogICAgIGNhbGN1bGF0ZVdpbmRvdzogZnVuY3Rpb24oKQpA
QCAtOTg3LDcgKzkxNyw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IucHJvdG90
eXBlID0gewogCiAgICAgICAgIGNvbnN0IG1pbmltdW1UaW1lRnJhbWUgPSAwLjE7CiAgICAgICAg
IGNvbnN0IG1pbmltdW1EZWx0YUZvclplcm9TaXplRXZlbnRzID0gMC4wMTsKLSAgICAgICAgdmFy
IHVwcGVyQm91bmQgPSBNYXRoLm1heChyZWNvcmQuX2xhc3RDaGlsZEVuZFRpbWUgKyBtaW5pbXVt
RGVsdGFGb3JaZXJvU2l6ZUV2ZW50cywgbG93ZXJCb3VuZCArIG1pbmltdW1UaW1lRnJhbWUpOwor
ICAgICAgICB2YXIgdXBwZXJCb3VuZCA9IE1hdGgubWF4KHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1l
ICsgbWluaW11bURlbHRhRm9yWmVyb1NpemVFdmVudHMsIGxvd2VyQm91bmQgKyBtaW5pbXVtVGlt
ZUZyYW1lKTsKICAgICAgICAgaWYgKHRoaXMuX2Fic29sdXRlTWF4aW11bUJvdW5kYXJ5ID09PSAt
MSB8fCB1cHBlckJvdW5kID4gdGhpcy5fYWJzb2x1dGVNYXhpbXVtQm91bmRhcnkpCiAgICAgICAg
ICAgICB0aGlzLl9hYnNvbHV0ZU1heGltdW1Cb3VuZGFyeSA9IHVwcGVyQm91bmQ7CiAgICAgfSwK
QEAgLTEwMTYsNyArOTQ2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU3RhcnRBdFplcm9DYWxj
dWxhdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgIHN0YXJ0
OiByZWNvcmQuX2luaXRpYXRvck9mZnNldCAqIHNjYWxlLAogICAgICAgICAgICAgZW5kOiAocmVj
b3JkLl9pbml0aWF0b3JPZmZzZXQgKyByZWNvcmQuZW5kVGltZSAtIHJlY29yZC5zdGFydFRpbWUp
ICogc2NhbGUsCi0gICAgICAgICAgICBlbmRXaXRoQ2hpbGRyZW46IChyZWNvcmQuX2luaXRpYXRv
ck9mZnNldCArIHJlY29yZC5fbGFzdENoaWxkRW5kVGltZSAtIHJlY29yZC5zdGFydFRpbWUpICog
c2NhbGUKKyAgICAgICAgICAgIGVuZFdpdGhDaGlsZHJlbjogKHJlY29yZC5faW5pdGlhdG9yT2Zm
c2V0ICsgcmVjb3JkLmxhc3RDaGlsZEVuZFRpbWUgLSByZWNvcmQuc3RhcnRUaW1lKSAqIHNjYWxl
CiAgICAgICAgIH07CiAgICAgfSwKIApAQCAtMTE0MCw2ICsxMDcwLDExIEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0gZnVuY3Rpb24oZ3JhcGhDb250YWluZXIsIHNjaGVk
dWxlUmVmcmVzaCkKICAgICB0aGlzLl9iYXJXaXRoQ2hpbGRyZW5FbGVtZW50LnJvdyA9IHRoaXM7
CiAgICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYmFyV2l0aENoaWxk
cmVuRWxlbWVudCk7CiAKKyAgICB0aGlzLl9iYXJDcHVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5fYmFyQ3B1RWxlbWVudC5jbGFzc05hbWUgPSAidGlt
ZWxpbmUtZ3JhcGgtYmFyIGNwdSIKKyAgICB0aGlzLl9iYXJDcHVFbGVtZW50LnJvdyA9IHRoaXM7
CisgICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYmFyQ3B1RWxlbWVu
dCk7CisKICAgICB0aGlzLl9iYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgdGhpcy5fYmFyRWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtZ3JhcGgtYmFy
IjsKICAgICB0aGlzLl9iYXJFbGVtZW50LnJvdyA9IHRoaXM7CkBAIC0xMTYxLDYgKzEwOTYsOCBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX2JhcldpdGhDaGlsZHJlbkVsZW1lbnQuc3R5bGUud2lkdGggPSBiYXJQb3NpdGlv
bi53aWR0aFdpdGhDaGlsZHJlbiArICJweCI7CiAgICAgICAgIHRoaXMuX2JhckVsZW1lbnQuc3R5
bGUubGVmdCA9IGJhclBvc2l0aW9uLmxlZnQgKyBleHBhbmRPZmZzZXQgKyAicHgiOwogICAgICAg
ICB0aGlzLl9iYXJFbGVtZW50LnN0eWxlLndpZHRoID0gIGJhclBvc2l0aW9uLndpZHRoICsgInB4
IjsKKyAgICAgICAgdGhpcy5fYmFyQ3B1RWxlbWVudC5zdHlsZS5sZWZ0ID0gYmFyUG9zaXRpb24u
bGVmdCArIGV4cGFuZE9mZnNldCArICJweCI7CisgICAgICAgIHRoaXMuX2JhckNwdUVsZW1lbnQu
c3R5bGUud2lkdGggPSBiYXJQb3NpdGlvbi5jcHVXaWR0aCArICJweCI7CiAgICAgICAgIHRoaXMu
X2V4cGFuZEVsZW1lbnQuX3VwZGF0ZShyZWNvcmQsIGluZGV4LCBiYXJQb3NpdGlvbik7CiAgICAg
fSwKIApAQCAtMTIwMCwzNjIgKzExMzcsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5m
b3JBbGxSZWNvcmRzID0gZnVuY3Rpb24ocmVjb3Jkc0FycmF5LCBjYWxsYmFjaykKIC8qKgogICog
QGNvbnN0cnVjdG9yCiAgKi8KLVdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJl
Y29yZCA9IGZ1bmN0aW9uKHJlY29yZCwgcGFyZW50UmVjb3JkLCBwYW5lbCwgbGlua2lmaWVyLCBz
Y3JpcHREZXRhaWxzKQotewotICAgIHRoaXMuX2xpbmtpZmllciA9IGxpbmtpZmllcjsKLSAgICB2
YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlOwot
ICAgIHZhciBzdHlsZSA9IHBhbmVsLl9yZWNvcmRTdHlsZXNbcmVjb3JkLnR5cGVdOwotICAgIHRo
aXMucGFyZW50ID0gcGFyZW50UmVjb3JkOwotICAgIGlmIChwYXJlbnRSZWNvcmQpCi0gICAgICAg
IHBhcmVudFJlY29yZC5jaGlsZHJlbi5wdXNoKHRoaXMpOwotICAgIHRoaXMuY2F0ZWdvcnkgPSBz
dHlsZS5jYXRlZ29yeTsKLSAgICB0aGlzLnRpdGxlID0gc3R5bGUudGl0bGU7Ci0gICAgdGhpcy5z
dGFydFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lIC8gMTAwMDsKLSAgICB0aGlzLmRhdGEgPSByZWNv
cmQuZGF0YTsKLSAgICB0aGlzLnR5cGUgPSByZWNvcmQudHlwZTsKLSAgICB0aGlzLmVuZFRpbWUg
PSAodHlwZW9mIHJlY29yZC5lbmRUaW1lICE9PSAidW5kZWZpbmVkIikgPyByZWNvcmQuZW5kVGlt
ZSAvIDEwMDAgOiB0aGlzLnN0YXJ0VGltZTsKLSAgICB0aGlzLl9zZWxmVGltZSA9IHRoaXMuZW5k
VGltZSAtIHRoaXMuc3RhcnRUaW1lOwotICAgIHRoaXMuX2xhc3RDaGlsZEVuZFRpbWUgPSB0aGlz
LmVuZFRpbWU7Ci0gICAgdGhpcy5faW5pdGlhdG9yT2Zmc2V0ID0gKHBhcmVudFJlY29yZCAmJiBw
YXJlbnRSZWNvcmQgIT09IHBhbmVsLl9yb290UmVjb3JkKSA/Ci0gICAgICAgIHBhcmVudFJlY29y
ZC5faW5pdGlhdG9yT2Zmc2V0ICsgdGhpcy5zdGFydFRpbWUgLSBwYXJlbnRSZWNvcmQuc3RhcnRU
aW1lIDogMDsKLQotICAgIGlmIChyZWNvcmQuc3RhY2tUcmFjZSAmJiByZWNvcmQuc3RhY2tUcmFj
ZS5sZW5ndGgpCi0gICAgICAgIHRoaXMuc3RhY2tUcmFjZSA9IHJlY29yZC5zdGFja1RyYWNlOwot
ICAgIHRoaXMudG90YWxIZWFwU2l6ZSA9IHJlY29yZC50b3RhbEhlYXBTaXplOwotICAgIHRoaXMu
dXNlZEhlYXBTaXplID0gcmVjb3JkLnVzZWRIZWFwU2l6ZTsKLSAgICBpZiAocmVjb3JkLmRhdGEg
JiYgcmVjb3JkLmRhdGFbInVybCJdKQotICAgICAgICB0aGlzLnVybCA9IHJlY29yZC5kYXRhWyJ1
cmwiXTsKLSAgICBpZiAoc2NyaXB0RGV0YWlscykgewotICAgICAgICB0aGlzLnNjcmlwdE5hbWUg
PSBzY3JpcHREZXRhaWxzLnNjcmlwdE5hbWU7Ci0gICAgICAgIHRoaXMuc2NyaXB0TGluZSA9IHNj
cmlwdERldGFpbHMuc2NyaXB0TGluZTsKLSAgICB9Ci0gICAgLy8gTWFrZSByZXNvdXJjZSByZWNl
aXZlIHJlY29yZCBsYXN0IHNpbmNlIHJlcXVlc3Qgd2FzIHNlbnQ7IG1ha2UgZmluaXNoIHJlY29y
ZCBsYXN0IHNpbmNlIHJlc3BvbnNlIHJlY2VpdmVkLgotICAgIGlmIChyZWNvcmQudHlwZSA9PT0g
cmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdCkgewotICAgICAgICBwYW5lbC5fc2VuZFJl
cXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhWyJyZXF1ZXN0SWQiXV0gPSB0aGlzOwotICAgIH0gZWxz
ZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0
KSB7Ci0gICAgICAgIHBhbmVsLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3RzW3JlY29yZC5kYXRh
WyJ1cmwiXV0gPSB0aGlzOwotICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5
cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlKSB7Ci0gICAgICAgIHZhciBzZW5kUmVxdWVzdFJl
Y29yZCA9IHBhbmVsLl9zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGFbInJlcXVlc3RJZCJd
XTsKLSAgICAgICAgaWYgKHNlbmRSZXF1ZXN0UmVjb3JkKSB7IC8vIEZhbHNlIGlmIHdlIHN0YXJ0
ZWQgaW5zdHJ1bWVudGF0aW9uIGluIHRoZSBtaWRkbGUgb2YgcmVxdWVzdC4KLSAgICAgICAgICAg
IHRoaXMudXJsID0gc2VuZFJlcXVlc3RSZWNvcmQudXJsOwotICAgICAgICAgICAgLy8gTm93IHRo
YXQgd2UgaGF2ZSByZXNvdXJjZSBpbiB0aGUgY29sbGVjdGlvbiwgcmVjYWxjdWxhdGUgZGV0YWls
cyBpbiBvcmRlciB0byBkaXNwbGF5IHNob3J0IHVybC4KLSAgICAgICAgICAgIHNlbmRSZXF1ZXN0
UmVjb3JkLl9yZWZyZXNoRGV0YWlscygpOwotICAgICAgICAgICAgaWYgKHNlbmRSZXF1ZXN0UmVj
b3JkLnBhcmVudCAhPT0gcGFuZWwuX3Jvb3RSZWNvcmQgJiYgc2VuZFJlcXVlc3RSZWNvcmQucGFy
ZW50LnR5cGUgPT09IHJlY29yZFR5cGVzLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KQotICAgICAg
ICAgICAgICAgIHNlbmRSZXF1ZXN0UmVjb3JkLnBhcmVudC5fcmVmcmVzaERldGFpbHMoKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291
cmNlUmVjZWl2ZWREYXRhIHx8IHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZUZp
bmlzaCkgewotICAgICAgICB2YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSBwYW5lbC5fc2VuZFJlcXVl
c3RSZWNvcmRzW3JlY29yZC5kYXRhWyJyZXF1ZXN0SWQiXV07Ci0gICAgICAgIGlmIChzZW5kUmVx
dWVzdFJlY29yZCkgLy8gRmFsc2UgZm9yIG1haW4gcmVzb3VyY2UuCi0gICAgICAgICAgICB0aGlz
LnVybCA9IHNlbmRSZXF1ZXN0UmVjb3JkLnVybDsKLSAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBl
ID09PSByZWNvcmRUeXBlcy5UaW1lckluc3RhbGwpIHsKLSAgICAgICAgdGhpcy50aW1lb3V0ID0g
cmVjb3JkLmRhdGFbInRpbWVvdXQiXTsKLSAgICAgICAgdGhpcy5zaW5nbGVTaG90ID0gcmVjb3Jk
LmRhdGFbInNpbmdsZVNob3QiXTsKLSAgICAgICAgcGFuZWwuX3RpbWVyUmVjb3Jkc1tyZWNvcmQu
ZGF0YVsidGltZXJJZCJdXSA9IHRoaXM7Ci0gICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0g
cmVjb3JkVHlwZXMuVGltZXJGaXJlKSB7Ci0gICAgICAgIHZhciB0aW1lckluc3RhbGxlZFJlY29y
ZCA9IHBhbmVsLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGFbInRpbWVySWQiXV07Ci0gICAgICAg
IGlmICh0aW1lckluc3RhbGxlZFJlY29yZCkgewotICAgICAgICAgICAgdGhpcy5jYWxsU2l0ZVN0
YWNrVHJhY2UgPSB0aW1lckluc3RhbGxlZFJlY29yZC5zdGFja1RyYWNlOwotICAgICAgICAgICAg
dGhpcy50aW1lb3V0ID0gdGltZXJJbnN0YWxsZWRSZWNvcmQudGltZW91dDsKLSAgICAgICAgICAg
IHRoaXMuc2luZ2xlU2hvdCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnNpbmdsZVNob3Q7Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXF1ZXN0
QW5pbWF0aW9uRnJhbWUpIHsKLSAgICAgICAgcGFuZWwuX3JlcXVlc3RBbmltYXRpb25GcmFtZVJl
Y29yZHNbcmVjb3JkLmRhdGFbImlkIl1dID0gdGhpczsKLSAgICB9IGVsc2UgaWYgKHJlY29yZC50
eXBlID09PSByZWNvcmRUeXBlcy5GaXJlQW5pbWF0aW9uRnJhbWUpIHsKLSAgICAgICAgdmFyIHJl
cXVlc3RBbmltYXRpb25SZWNvcmQgPSBwYW5lbC5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lUmVjb3Jk
c1tyZWNvcmQuZGF0YVsiaWQiXV07Ci0gICAgICAgIGlmIChyZXF1ZXN0QW5pbWF0aW9uUmVjb3Jk
KQotICAgICAgICAgICAgdGhpcy5jYWxsU2l0ZVN0YWNrVHJhY2UgPSByZXF1ZXN0QW5pbWF0aW9u
UmVjb3JkLnN0YWNrVHJhY2U7Ci0gICAgfQotICAgIHRoaXMuX3JlZnJlc2hEZXRhaWxzKCk7Ci19
Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUg
PSB7Ci0gICAgaXNMb25nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gKHRoaXMu
X2xhc3RDaGlsZEVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZSkgPiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5zaG9ydFJlY29yZFRocmVzaG9sZDsKLSAgICB9LAotCi0gICAgZ2V0IGNoaWxkcmVu
KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY2hpbGRyZW4pCi0gICAgICAgICAgICB0aGlz
Ll9jaGlsZHJlbiA9IFtdOwotICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW47Ci0gICAgfSwK
LQotICAgIGNvbnRhaW5zVGltZTogZnVuY3Rpb24odGltZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnN0YXJ0VGltZSA8PSB0aW1lICYmIHRpbWUgPD0gdGhpcy5lbmRUaW1lOwotICAgIH0s
Ci0KLSAgICBfZ2VuZXJhdGVBZ2dyZWdhdGVkSW5mbzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIGNl
bGwuY2xhc3NOYW1lID0gInRpbWVsaW5lLWFnZ3JlZ2F0ZWQtaW5mbyI7Ci0gICAgICAgIGZvciAo
dmFyIGluZGV4IGluIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0cykgewotICAgICAgICAgICAgdmFyIGxh
YmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBsYWJlbC5j
bGFzc05hbWUgPSAidGltZWxpbmUtYWdncmVnYXRlZC1jYXRlZ29yeSB0aW1lbGluZS0iICsgaW5k
ZXg7Ci0gICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGxhYmVsKTsKLSAgICAgICAgICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgdGV4
dC50ZXh0Q29udGVudCA9IE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5fYWdncmVnYXRlZFN0
YXRzW2luZGV4XSwgdHJ1ZSk7Ci0gICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKHRleHQpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjZWxsOwotICAgIH0sCi0KLSAgICBfZ2VuZXJhdGVQ
b3B1cENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGN1bGF0b3IsIGNhdGVnb3JpZXMpCi0gICAgewotICAg
ICAgICB2YXIgY29udGVudEhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Q
b3B1cENvbnRlbnRIZWxwZXIodGhpcy50aXRsZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2NoaWxk
cmVuICYmIHRoaXMuX2NoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYgVGltZSIpLCBOdW1i
ZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX3NlbGZUaW1lLCB0cnVlKSk7Ci0gICAgICAgICAgICBj
b250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWdn
cmVnYXRlZCBUaW1lIiksIHRoaXMuX2dlbmVyYXRlQWdncmVnYXRlZEluZm8oKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgdmFyIHRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIChhdCAlcyki
LCBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX2xhc3RDaGlsZEVuZFRpbWUgLSB0aGlzLnN0
YXJ0VGltZSwgdHJ1ZSksCi0gICAgICAgICAgICBjYWxjdWxhdG9yLmZvcm1hdFZhbHVlKHRoaXMu
c3RhcnRUaW1lIC0gY2FsY3VsYXRvci5taW5pbXVtQm91bmRhcnkpKTsKLSAgICAgICAgY29udGVu
dEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIiks
IHRleHQpOwotCi0gICAgICAgIGNvbnN0IHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTW9kZWwuUmVjb3JkVHlwZTsKLQotICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgewotICAg
ICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5HQ0V2ZW50OgotICAgICAgICAgICAgICAgIGNvbnRl
bnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xsZWN0ZWQi
KSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5kYXRhWyJ1c2VkSGVhcFNpemVEZWx0YSJdKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlRp
bWVySW5zdGFsbDoKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuVGltZXJGaXJlOgotICAg
ICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5UaW1lclJlbW92ZToKLSAgICAgICAgICAgICAgICBj
b250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZXIg
SUQiKSwgdGhpcy5kYXRhWyJ0aW1lcklkIl0pOwotICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yg
dGhpcy50aW1lb3V0ID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgICAgICAgICBjb250ZW50
SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZW91dCIpLCBO
dW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMudGltZW91dCAvIDEwMDApKTsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlcGVhdHMiKSwgIXRoaXMuc2luZ2xlU2hvdCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5GaXJlQW5p
bWF0aW9uRnJhbWU6Ci0gICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGxiYWNrIElEIiksIHRoaXMuZGF0YVsiaWQiXSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLkZ1
bmN0aW9uQ2FsbDoKLSAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRpb24iKSwgdGhpcy5fbGlua2lmeVNjcmlw
dExvY2F0aW9uKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBy
ZWNvcmRUeXBlcy5TY2hlZHVsZVJlc291cmNlUmVxdWVzdDoKLSAgICAgICAgICAgIGNhc2UgcmVj
b3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdDoKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlw
ZXMuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6Ci0gICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVz
LlJlc291cmNlUmVjZWl2ZWREYXRhOgotICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5SZXNv
dXJjZUZpbmlzaDoKLSAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2UiKSwgdGhpcy5fbGlua2lmeUxvY2F0
aW9uKHRoaXMudXJsKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVsicmVxdWVzdE1l
dGhvZCJdKQotICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBNZXRob2QiKSwgdGhpcy5kYXRhWyJyZXF1
ZXN0TWV0aG9kIl0pOwotICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYXRhWyJzdGF0
dXNDb2RlIl0gPT09ICJudW1iZXIiKQotICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVscGVy
Ll9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIENvZGUiKSwgdGhp
cy5kYXRhWyJzdGF0dXNDb2RlIl0pOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbIm1p
bWVUeXBlIl0pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRS
b3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNSU1FIFR5cGUiKSwgdGhpcy5kYXRhWyJtaW1lVHlw
ZSJdKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlw
ZXMuRXZhbHVhdGVTY3JpcHQ6Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlz
LnVybCkKLSAgICAgICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdCIpLCB0aGlzLl9saW5raWZ5TG9jYXRpb24o
dGhpcy51cmwsIHRoaXMuZGF0YVsibGluZU51bWJlciJdKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlBhaW50OgotICAgICAgICAgICAgICAg
IGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2Nh
dGlvbiIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiglZCwgJWQpIiwgdGhpcy5kYXRhWyJ4Il0s
IHRoaXMuZGF0YVsieSJdKSk7Ci0gICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5k
VGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpbWVuc2lvbnMiKSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIlZCDDlyAlZCIsIHRoaXMuZGF0YVsid2lkdGgiXSwgdGhpcy5kYXRhWyJoZWln
aHQiXSkpOwotICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlczog
Ly8gV2UgZG9uJ3Qgd2FudCB0byBzZWUgZGVmYXVsdCBkZXRhaWxzLgotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5k
ZXRhaWxzKQotICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGV0YWlscyIpLCB0aGlzLmRldGFpbHMpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuc2NyaXB0TmFt
ZSAmJiB0aGlzLnR5cGUgIT09IHJlY29yZFR5cGVzLkZ1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAg
IGNvbnRlbnRIZWxwZXIuX2FwcGVuZEVsZW1lbnRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
dW5jdGlvbiBDYWxsIiksIHRoaXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbigpKTsKLQotICAgICAg
ICBpZiAodGhpcy51c2VkSGVhcFNpemUpCi0gICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBl
bmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlZCBIZWFwIFNpemUiKSwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCIlcyBvZiAlcyIsIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMudXNl
ZEhlYXBTaXplKSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy50b3RhbEhlYXBTaXplKSkpOwot
Ci0gICAgICAgIGlmICh0aGlzLmNhbGxTaXRlU3RhY2tUcmFjZSAmJiB0aGlzLmNhbGxTaXRlU3Rh
Y2tUcmFjZS5sZW5ndGgpCi0gICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRTdGFja1Ry
YWNlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbCBTaXRlIHN0YWNrIiksIHRoaXMuY2FsbFNp
dGVTdGFja1RyYWNlLCB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lLmJpbmQodGhpcykpOwotCi0gICAg
ICAgIGlmICh0aGlzLnN0YWNrVHJhY2UpCi0gICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBl
bmRTdGFja1RyYWNlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbCBTdGFjayIpLCB0aGlzLnN0
YWNrVHJhY2UsIHRoaXMuX2xpbmtpZnlDYWxsRnJhbWUuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAg
cmV0dXJuIGNvbnRlbnRIZWxwZXIuX2NvbnRlbnRUYWJsZTsKLSAgICB9LAotCi0gICAgX3JlZnJl
c2hEZXRhaWxzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmRldGFpbHMgPSB0aGlz
Ll9nZXRSZWNvcmREZXRhaWxzKCk7Ci0gICAgfSwKLQotICAgIF9nZXRSZWNvcmREZXRhaWxzOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgewotICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkdDRXZlbnQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgY29sbGVjdGVk
IiwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5kYXRhWyJ1c2VkSGVhcFNpemVEZWx0YSJdKSk7
Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUu
VGltZXJGaXJlOgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5U2NyaXB0TG9j
YXRpb24odGhpcy5kYXRhWyJ0aW1lcklkIl0pOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fbGlua2lmeVNjcmlwdExvY2F0aW9uKCk7Ci0gICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuRmlyZUFuaW1hdGlvbkZyYW1l
OgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5U2NyaXB0TG9jYXRpb24odGhp
cy5kYXRhWyJpZCJdKTsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZS5FdmVudERpc3BhdGNoOgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LmRhdGEgPyB0aGlzLmRhdGFbInR5cGUiXSA6IG51bGw7Ci0gICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUGFpbnQ6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZGF0YVsid2lkdGgiXSArICJcdTIwMDlcdTAwZDdcdTIwMDkiICsgdGhpcy5k
YXRhWyJoZWlnaHQiXTsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZS5UaW1lckluc3RhbGw6Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuVGltZXJSZW1vdmU6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2xpbmtpZnlUb3BDYWxsRnJhbWUodGhpcy5kYXRhWyJ0aW1lcklkIl0pOwot
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlJl
cXVlc3RBbmltYXRpb25GcmFtZToKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTW9kZWwuUmVjb3JkVHlwZS5DYW5jZWxBbmltYXRpb25GcmFtZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fbGlua2lmeVRvcENhbGxGcmFtZSh0aGlzLmRhdGFbImlkIl0pOwotICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlBhcnNl
SFRNTDoKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3Jk
VHlwZS5SZWNhbGN1bGF0ZVN0eWxlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGlu
a2lmeVRvcENhbGxGcmFtZSgpOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVNb2RlbC5SZWNvcmRUeXBlLkV2YWx1YXRlU2NyaXB0OgotICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLnVybCA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnVybCwgdGhpcy5kYXRhWyJs
aW5lTnVtYmVyIl0sIDApIDogbnVsbDsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5YSFJSZWFkeVN0YXRlQ2hhbmdlOgotICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlhIUkxvYWQ6Ci0gICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuU2NoZWR1
bGVSZXNvdXJjZVJlcXVlc3Q6Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1vZGVsLlJlY29yZFR5cGUuUmVzb3VyY2VTZW5kUmVxdWVzdDoKLSAgICAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5SZXNvdXJjZVJlY2VpdmVkRGF0
YToKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlw
ZS5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZToKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHRoaXMudXJsKTsKLSAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5UaW1lU3Rh
bXA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVsibWVzc2FnZSJdOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCi0gICAgICogQHBh
cmFtIHtudW1iZXI9fSBsaW5lTnVtYmVyCi0gICAgICogQHBhcmFtIHtudW1iZXI9fSBjb2x1bW5O
dW1iZXIKLSAgICAgKi8KLSAgICBfbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbih1cmwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FKDYyNzI1KTogc3Rh
Y2sgdHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBhcmUgb25lLWJhc2VkLgotICAgICAgICBsaW5l
TnVtYmVyID0gbGluZU51bWJlciA/IGxpbmVOdW1iZXIgLSAxIDogbGluZU51bWJlcjsKLSAgICAg
ICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gY29sdW1uTnVtYmVyIC0gMSA6IDA7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9saW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCAidGltZWxpbmUtZGV0YWlscyIpOwotICAgIH0sCi0KLSAgICBf
bGlua2lmeUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2xpbmtpZnlMb2NhdGlvbihjYWxsRnJhbWUudXJsLCBjYWxsRnJhbWUubGluZU51
bWJlciwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcik7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nPX0gZGVmYXVsdFZhbHVlCi0gICAgICovCi0gICAgX2xpbmtpZnlUb3BD
YWxsRnJhbWU6IGZ1bmN0aW9uKGRlZmF1bHRWYWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVsw
XSkgOiBkZWZhdWx0VmFsdWU7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3Ry
aW5nPX0gZGVmYXVsdFZhbHVlCi0gICAgICovCi0gICAgX2xpbmtpZnlTY3JpcHRMb2NhdGlvbjog
ZnVuY3Rpb24oZGVmYXVsdFZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0
TmFtZSA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0
TGluZSwgMCkgOiBkZWZhdWx0VmFsdWU7Ci0gICAgfSwKLQotICAgIF9jYWxjdWxhdGVBZ2dyZWdh
dGVkU3RhdHM6IGZ1bmN0aW9uKGNhdGVnb3JpZXMpCi0gICAgewotICAgICAgICB0aGlzLl9hZ2dy
ZWdhdGVkU3RhdHMgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdvcmll
cykKLSAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV0gPSAwOwotCi0g
ICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbikgewotICAgICAgICAgICAgZm9yICh2YXIgaW5kZXgg
PSB0aGlzLl9jaGlsZHJlbi5sZW5ndGg7IGluZGV4OyAtLWluZGV4KSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGNoaWxkID0gdGhpcy5fY2hpbGRyZW5baW5kZXggLSAxXTsKLSAgICAgICAgICAgICAg
ICBmb3IgKHZhciBjYXRlZ29yeSBpbiBjYXRlZ29yaWVzKQotICAgICAgICAgICAgICAgICAgICB0
aGlzLl9hZ2dyZWdhdGVkU3RhdHNbY2F0ZWdvcnldICs9IGNoaWxkLl9hZ2dyZWdhdGVkU3RhdHNb
Y2F0ZWdvcnldOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2FnZ3Jl
Z2F0ZWRTdGF0c1t0aGlzLmNhdGVnb3J5Lm5hbWVdICs9IHRoaXMuX3NlbGZUaW1lOwotICAgIH0s
Ci0KLSAgICBnZXQgYWdncmVnYXRlZFN0YXRzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9hZ2dyZWdhdGVkU3RhdHM7Ci0gICAgfQotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICov
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIgPSBmdW5jdGlv
bih0aXRsZSkKLXsKLSAgICB0aGlzLl9jb250ZW50VGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0YWJsZSIpOzsKLSAgICB2YXIgdGl0bGVDZWxsID0gdGhpcy5fY3JlYXRlQ2VsbChXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIiVzIC0gRGV0YWlscyIsIHRpdGxlKSwgInRpbWVsaW5lLWRldGFp
bHMtdGl0bGUiKTsKLSAgICB0aXRsZUNlbGwuY29sU3BhbiA9IDI7Ci0gICAgdmFyIHRpdGxlUm93
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICB0aXRsZVJvdy5hcHBlbmRDaGls
ZCh0aXRsZUNlbGwpOwotICAgIHRoaXMuX2NvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aXRsZVJv
dyk7Ci19Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlci5w
cm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmc9fSBzdHlsZU5hbWUK
LSAgICAgKi8KLSAgICBfY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29udGVudCwgc3R5bGVOYW1lKQot
ICAgIHsKLSAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIp
OwotICAgICAgICB0ZXh0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbnRl
bnQpKTsKLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwot
ICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1kZXRhaWxzIjsKLSAgICAgICAgaWYg
KHN0eWxlTmFtZSkKLSAgICAgICAgICAgIGNlbGwuY2xhc3NOYW1lICs9ICIgIiArIHN0eWxlTmFt
ZTsKLSAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICAgIHJldHVybiBj
ZWxsOwotICAgIH0sCi0KLSAgICBfYXBwZW5kVGV4dFJvdzogZnVuY3Rpb24odGl0bGUsIGNvbnRl
bnQpCi0gICAgewotICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIi
KTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0aW1l
bGluZS1kZXRhaWxzLXJvdy10aXRsZSIpKTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMu
X2NyZWF0ZUNlbGwoY29udGVudCwgInRpbWVsaW5lLWRldGFpbHMtcm93LWRhdGEiKSk7Ci0gICAg
ICAgIHRoaXMuX2NvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZChyb3cpOwotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge3N0cmluZz19IHRpdGxlU3R5bGUKLSAgICAgKi8KLSAgICBfYXBw
ZW5kRWxlbWVudFJvdzogZnVuY3Rpb24odGl0bGUsIGNvbnRlbnQsIHRpdGxlU3R5bGUpCi0gICAg
ewotICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICAg
ICAgdmFyIHRpdGxlQ2VsbCA9IHRoaXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0aW1lbGluZS1kZXRh
aWxzLXJvdy10aXRsZSIpOwotICAgICAgICBpZiAodGl0bGVTdHlsZSkKLSAgICAgICAgICAgIHRp
dGxlQ2VsbC5hZGRTdHlsZUNsYXNzKHRpdGxlU3R5bGUpOwotICAgICAgICByb3cuYXBwZW5kQ2hp
bGQodGl0bGVDZWxsKTsKLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0ZCIpOwotICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1kZXRhaWxzIjsKLSAg
ICAgICAgY2VsbC5hcHBlbmRDaGlsZChjb250ZW50KTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxk
KGNlbGwpOwotICAgICAgICB0aGlzLl9jb250ZW50VGFibGUuYXBwZW5kQ2hpbGQocm93KTsKLSAg
ICB9LAotCi0gICAgX2FwcGVuZFN0YWNrVHJhY2U6IGZ1bmN0aW9uKHRpdGxlLCBzdGFja1RyYWNl
LCBjYWxsRnJhbWVMaW5raWZpZXIpCi0gICAgewotICAgICAgICB0aGlzLl9hcHBlbmRUZXh0Um93
KCIiLCAiIik7Ci0gICAgICAgIHZhciBmcmFtZXNUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRhYmxlIik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHN0YWNrRnJhbWUgPSBzdGFja1RyYWNlW2ldOwot
ICAgICAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAg
ICAgICAgICByb3cuY2xhc3NOYW1lID0gInRpbWVsaW5lLWRldGFpbHMiOwotICAgICAgICAgICAg
cm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoc3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUg
PyBzdGFja0ZyYW1lLmZ1bmN0aW9uTmFtZSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255
bW91cyBmdW5jdGlvbikiKSwgInRpbWVsaW5lLWZ1bmN0aW9uLW5hbWUiKSk7Ci0gICAgICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2VsbCgiIEAgIikpOwotICAgICAgICAgICAg
dmFyIGxpbmtDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgICAg
IHZhciB1cmxFbGVtZW50ID0gY2FsbEZyYW1lTGlua2lmaWVyKHN0YWNrRnJhbWUpOwotICAgICAg
ICAgICAgbGlua0NlbGwuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7Ci0gICAgICAgICAgICByb3cu
YXBwZW5kQ2hpbGQobGlua0NlbGwpOwotICAgICAgICAgICAgZnJhbWVzVGFibGUuYXBwZW5kQ2hp
bGQocm93KTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9hcHBlbmRFbGVtZW50Um93KHRpdGxl
LCBmcmFtZXNUYWJsZSwgInRpbWVsaW5lLXN0YWNrdHJhY2UtdGl0bGUiKTsKLSAgICB9Ci19Ci0K
LS8qKgotICogQGNvbnN0cnVjdG9yCi0gKi8KIFdlYkluc3BlY3Rvci5UaW1lbGluZUV4cGFuZGFi
bGVFbGVtZW50ID0gZnVuY3Rpb24oY29udGFpbmVyKQogewogICAgIHRoaXMuX2VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTE2MDksNyArMTE5MCw3IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZEZpbHRlciA9IGZ1bmN0aW9uKGNhbGN1bGF0b3IsIHNob3dT
aG9ydEV2ZW50cykKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRmlsdGVyLnByb3RvdHlw
ZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LkZvcm1hdHRlZFJlY29yZH0gcmVjb3JkCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAogICAgICAqLwogICAgIGFjY2Vw
dDogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsKQEAgLTE2MzksNyArMTIyMCw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVN0YXJ0QXRaZXJvUmVjb3JkRmlsdGVyID0gZnVuY3Rpb24obW9kZWwsIHJv
b3RSZWNvcmQsIHNob3dTCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVN0YXJ0QXRaZXJvUmVjb3Jk
RmlsdGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZH0gcmVjb3JkCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAogICAg
ICAqLwogICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50
YXRpb25Nb2RlbC5qcwppbmRleCA1MTIyZTZiNzM0ZTEwYThlNWI5MzRmODBkOTAyZjExOTBkNmZm
ODdlLi5jYTk3ZDQyMTQwMDM1MWYxNjg3ZTYwODgwZGZmOTIwYWViNDc3MWQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zNSw2ICszNSwxMCBAQAogV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fY2F0ZWdv
cmllcyA9IHt9OworICAgIHRoaXMuX2FkZENhdGVnb3J5KG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVDYXRlZ29yeSgibG9hZGluZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZGluZyIpLCAi
cmdiKDQ3LDEwMiwyMzYpIikpOworICAgIHRoaXMuX2FkZENhdGVnb3J5KG5ldyBXZWJJbnNwZWN0
b3IuVGltZWxpbmVDYXRlZ29yeSgic2NyaXB0aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
Y3JpcHRpbmciKSwgInJnYigxNTcsMjMxLDExOSkiKSk7CisgICAgdGhpcy5fYWRkQ2F0ZWdvcnko
bmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5KCJyZW5kZXJpbmciLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlbmRlcmluZyIpLCAicmdiKDE2NCw2MCwyNTUpIikpOworICAgIHRoaXMu
X2xpbmtpZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0
ZUxpbmtpZmllcigpOwogICAgIHRoaXMucmVzZXQoKTsKIH0KIApAQCAtNDMsOSArNDcsNTggQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzID0gewogICAgIENh
dGVnb3J5VmlzaWJpbGl0eUNoYW5nZWQ6ICJDYXRlZ29yeVZpc2liaWxpdHlDaGFuZ2VkIgogfQog
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5zaG9ydFJlY29yZFRocmVz
aG9sZCA9IDAuMDE1OworCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5w
cm90b3R5cGUgPSB7CisgICAgY3JlYXRlRm9ybWF0dGVkUmVjb3JkOiBmdW5jdGlvbihyZWNvcmQs
IHBhcmVudFJlY29yZCwgc2NyaXB0RGV0YWlscykKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkKHRoaXMsIHJlY29y
ZCwgcGFyZW50UmVjb3JkLCBzY3JpcHREZXRhaWxzKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZVJv
b3RSZWNvcmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByb290UmVjb3JkID0ge307
CisgICAgICAgIHJvb3RSZWNvcmQuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgcm9vdFJlY29yZC5h
Z2dyZWdhdGVkU3RhdHMgPSB7fTsKKyAgICAgICAgcmV0dXJuIHJvb3RSZWNvcmQ7CisgICAgfSwK
KworICAgIHJvb3RSZWNvcmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9yb290UmVjb3JkOworICAgIH0sCisKICAgICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKKyAg
ICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7CisgICAgICAgIHRoaXMuX3Jvb3RSZWNvcmQg
PSB0aGlzLl9jcmVhdGVSb290UmVjb3JkKCk7CisgICAgICAgIHRoaXMuX3NlbmRSZXF1ZXN0UmVj
b3JkcyA9IHt9OworICAgICAgICB0aGlzLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3RzID0ge307
CisgICAgICAgIHRoaXMuX3RpbWVyUmVjb3JkcyA9IHt9OworICAgICAgICB0aGlzLl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVSZWNvcmRzID0ge307CisKKyAgICAgICAgdGhpcy5fcmVzZXRXaW5kb3co
KTsKKyAgICB9LAorCisgICAgZmluZFBhcmVudFJlY29yZDogZnVuY3Rpb24ocmVjb3JkKQorICAg
IHsKKyAgICAgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwu
UmVjb3JkVHlwZTsKKyAgICAgICAgdmFyIHBhcmVudFJlY29yZDsKKyAgICAgICAgaWYgKHJlY29y
ZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSB8fAorICAgICAg
ICAgICAgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlRmluaXNoIHx8CisgICAg
ICAgICAgICByZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlZERhdGEp
CisgICAgICAgICAgICBwYXJlbnRSZWNvcmQgPSB0aGlzLl9zZW5kUmVxdWVzdFJlY29yZHNbcmVj
b3JkLmRhdGFbInJlcXVlc3RJZCJdXTsKKyAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09
IHJlY29yZFR5cGVzLlRpbWVyRmlyZSkKKyAgICAgICAgICAgIHBhcmVudFJlY29yZCA9IHRoaXMu
X3RpbWVyUmVjb3Jkc1tyZWNvcmQuZGF0YVsidGltZXJJZCJdXTsKKyAgICAgICAgZWxzZSBpZiAo
cmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3QpCisgICAgICAg
ICAgICBwYXJlbnRSZWNvcmQgPSB0aGlzLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3RzW3JlY29y
ZC5kYXRhWyJ1cmwiXV07CisgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRU
eXBlcy5GaXJlQW5pbWF0aW9uRnJhbWUpCisgICAgICAgICAgICBwYXJlbnRSZWNvcmQgPSB0aGlz
Ll9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVSZWNvcmRzW3JlY29yZC5kYXRhWyJpZCJdXTsKKyAgICAg
ICAgcmV0dXJuIHBhcmVudFJlY29yZDsKKyAgICB9LAorCisgICAgX3Jlc2V0V2luZG93OiBmdW5j
dGlvbigpCisgICAgewogICAgICAgICB0aGlzLndpbmRvd0xlZnQgPSAwLjA7CiAgICAgICAgIHRo
aXMud2luZG93UmlnaHQgPSAxLjA7CiAgICAgICAgIHRoaXMud2luZG93SW5kZXhMZWZ0ID0gMDsK
QEAgLTYwLDcgKzExMyw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1l
bGluZUNhdGVnb3J5fSBjYXRlZ29yeQogICAgICAqLwotICAgIGFkZENhdGVnb3J5OiBmdW5jdGlv
bihjYXRlZ29yeSkKKyAgICBfYWRkQ2F0ZWdvcnk6IGZ1bmN0aW9uKGNhdGVnb3J5KQogICAgIHsK
ICAgICAgICAgdGhpcy5fY2F0ZWdvcmllc1tjYXRlZ29yeS5uYW1lXSA9IGNhdGVnb3J5OwogICAg
IH0sCkBAIC05NSw3ICsxNDgsNDI5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGNhdGVnb3J5LmhpZGRlbiA9ICF2
aXNpYmxlOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2F0ZWdvcnlWaXNpYmlsaXR5Q2hh
bmdlZCwgY2F0ZWdvcnkpOworICAgIH0sCisKKyAgICBnZXQgX3JlY29yZFN0eWxlcygpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0eWxlc0FycmF5KSB7CisgICAgICAgICAgICB2
YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlOwor
ICAgICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0aGlzLl9jYXRlZ29yaWVzOworCisgICAgICAg
ICAgICB2YXIgcmVjb3JkU3R5bGVzID0ge307CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVj
b3JkVHlwZXMuRXZlbnREaXNwYXRjaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAg
ICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkxheW91dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkxheW91dCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0g
fTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxl
c10gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiks
IGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJyZW5kZXJpbmciXSB9OworICAgICAgICAgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUGFpbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07CisgICAgICAg
ICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUGFyc2VIVE1MXSA9IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUGFyc2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmci
XSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVySW5zdGFsbF0g
PSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluc3RhbGwgVGltZXIiKSwgY2F0ZWdv
cnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuVGltZXJSZW1vdmVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZW1vdmUgVGltZXIiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Cisg
ICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZXJGaXJlXSA9IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZXIgRmlyZWQiKSwgY2F0ZWdvcnk6IGNhdGVnb3Jp
ZXNbInNjcmlwdGluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMu
WEhSUmVhZHlTdGF0ZUNoYW5nZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhI
UiBSZWFkeSBTdGF0ZSBDaGFuZ2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJd
IH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSTG9hZF0gPSB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiBMb2FkIiksIGNhdGVnb3J5OiBjYXRlZ29y
aWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LkV2YWx1YXRlU2NyaXB0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVh
dGUgU2NyaXB0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAg
ICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVTdGFtcF0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlN0YW1wIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRp
bmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlU2Vu
ZFJlcXVlc3RdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZW5kIFJlcXVlc3Qi
KSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OworICAgICAgICAgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlXSA9IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBSZXNwb25zZSIpLCBjYXRlZ29yeTogY2F0ZWdv
cmllc1sibG9hZGluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMu
UmVzb3VyY2VGaW5pc2hdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaW5pc2gg
TG9hZGluZyIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRnVuY3Rpb25DYWxsXSA9IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRnVuY3Rpb24gQ2FsbCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1si
c2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNv
dXJjZVJlY2VpdmVkRGF0YV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2Vp
dmUgRGF0YSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuR0NFdmVudF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkdDIEV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmci
XSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtET01Db250ZW50
XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRE9NQ29udGVudCBldmVudCIpLCBj
YXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5NYXJrTG9hZF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxvYWQgZXZlbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Cisg
ICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuU2NoZWR1bGVSZXNvdXJjZVJlcXVl
c3RdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY2hlZHVsZSBSZXF1ZXN0Iiks
IGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5SZXF1ZXN0QW5pbWF0aW9uRnJhbWVdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSIpLCBjYXRlZ29yeTogY2F0
ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRU
eXBlcy5DYW5jZWxBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNhbmNlbCBBbmltYXRpb24gRnJhbWUiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlw
dGluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRmlyZUFuaW1h
dGlvbkZyYW1lXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQW5pbWF0aW9uIEZy
YW1lIEZpcmVkIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAg
ICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzQXJyYXkgPSByZWNvcmRTdHlsZXM7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZFN0eWxlc0FycmF5OwogICAgIH0KIH0KIAogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICovCitXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQgPSBmdW5j
dGlvbihwcmVzZW50YXRpb25Nb2RlbCwgcmVjb3JkLCBwYXJlbnRSZWNvcmQsIHNjcmlwdERldGFp
bHMpCit7CisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsK
KyAgICB0aGlzLl9saW5raWZpZXIgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5fbGlua2lmaWVy
OworICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0cyA9IFtdOworICAgIHZhciByZWNvcmRUeXBlcyA9
IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7CisgICAgdmFyIHN0eWxlID0g
cHJlc2VudGF0aW9uTW9kZWwuX3JlY29yZFN0eWxlc1tyZWNvcmQudHlwZV07CisgICAgdGhpcy5w
YXJlbnQgPSBwYXJlbnRSZWNvcmQ7CisgICAgaWYgKHBhcmVudFJlY29yZCkKKyAgICAgICAgcGFy
ZW50UmVjb3JkLmNoaWxkcmVuLnB1c2godGhpcyk7CisgICAgdGhpcy5jYXRlZ29yeSA9IHN0eWxl
LmNhdGVnb3J5OworICAgIHRoaXMudGl0bGUgPSBzdHlsZS50aXRsZTsKKyAgICB0aGlzLnN0YXJ0
VGltZSA9IHJlY29yZC5zdGFydFRpbWUgLyAxMDAwOworICAgIHRoaXMuZGF0YSA9IHJlY29yZC5k
YXRhOworICAgIHRoaXMudHlwZSA9IHJlY29yZC50eXBlOworICAgIHRoaXMuZW5kVGltZSA9ICh0
eXBlb2YgcmVjb3JkLmVuZFRpbWUgIT09ICJ1bmRlZmluZWQiKSA/IHJlY29yZC5lbmRUaW1lIC8g
MTAwMCA6IHRoaXMuc3RhcnRUaW1lOworICAgIHRoaXMuX3NlbGZUaW1lID0gdGhpcy5lbmRUaW1l
IC0gdGhpcy5zdGFydFRpbWU7CisgICAgdGhpcy5fbGFzdENoaWxkRW5kVGltZSA9IHRoaXMuZW5k
VGltZTsKKyAgICB0aGlzLl9pbml0aWF0b3JPZmZzZXQgPSAocGFyZW50UmVjb3JkICYmIHBhcmVu
dFJlY29yZCAhPT0gcHJlc2VudGF0aW9uTW9kZWwuX3Jvb3RSZWNvcmQpID8KKyAgICAgICAgcGFy
ZW50UmVjb3JkLl9pbml0aWF0b3JPZmZzZXQgKyB0aGlzLnN0YXJ0VGltZSAtIHBhcmVudFJlY29y
ZC5zdGFydFRpbWUgOiAwOworCisgICAgaWYgKHJlY29yZC5zdGFja1RyYWNlICYmIHJlY29yZC5z
dGFja1RyYWNlLmxlbmd0aCkKKyAgICAgICAgdGhpcy5zdGFja1RyYWNlID0gcmVjb3JkLnN0YWNr
VHJhY2U7CisgICAgdGhpcy50b3RhbEhlYXBTaXplID0gcmVjb3JkLnRvdGFsSGVhcFNpemU7Cisg
ICAgdGhpcy51c2VkSGVhcFNpemUgPSByZWNvcmQudXNlZEhlYXBTaXplOworICAgIGlmIChyZWNv
cmQuZGF0YSAmJiByZWNvcmQuZGF0YVsidXJsIl0pCisgICAgICAgIHRoaXMudXJsID0gcmVjb3Jk
LmRhdGFbInVybCJdOworICAgIGlmIChzY3JpcHREZXRhaWxzKSB7CisgICAgICAgIHRoaXMuc2Ny
aXB0TmFtZSA9IHNjcmlwdERldGFpbHMuc2NyaXB0TmFtZTsKKyAgICAgICAgdGhpcy5zY3JpcHRM
aW5lID0gc2NyaXB0RGV0YWlscy5zY3JpcHRMaW5lOworICAgIH0KKyAgICAvLyBNYWtlIHJlc291
cmNlIHJlY2VpdmUgcmVjb3JkIGxhc3Qgc2luY2UgcmVxdWVzdCB3YXMgc2VudDsgbWFrZSBmaW5p
c2ggcmVjb3JkIGxhc3Qgc2luY2UgcmVzcG9uc2UgcmVjZWl2ZWQuCisgICAgaWYgKHJlY29yZC50
eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVNlbmRSZXF1ZXN0KSB7CisgICAgICAgIHByZXNl
bnRhdGlvbk1vZGVsLl9zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGFbInJlcXVlc3RJZCJd
XSA9IHRoaXM7CisgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuU2No
ZWR1bGVSZXNvdXJjZVJlcXVlc3QpIHsKKyAgICAgICAgcHJlc2VudGF0aW9uTW9kZWwuX3NjaGVk
dWxlZFJlc291cmNlUmVxdWVzdHNbcmVjb3JkLmRhdGFbInVybCJdXSA9IHRoaXM7CisgICAgfSBl
bHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlUmVzcG9u
c2UpIHsKKyAgICAgICAgdmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gcHJlc2VudGF0aW9uTW9kZWwu
X3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YVsicmVxdWVzdElkIl1dOworICAgICAgICBp
ZiAoc2VuZFJlcXVlc3RSZWNvcmQpIHsgLy8gRmFsc2UgaWYgd2Ugc3RhcnRlZCBpbnN0cnVtZW50
YXRpb24gaW4gdGhlIG1pZGRsZSBvZiByZXF1ZXN0LgorICAgICAgICAgICAgdGhpcy51cmwgPSBz
ZW5kUmVxdWVzdFJlY29yZC51cmw7CisgICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIHJl
c291cmNlIGluIHRoZSBjb2xsZWN0aW9uLCByZWNhbGN1bGF0ZSBkZXRhaWxzIGluIG9yZGVyIHRv
IGRpc3BsYXkgc2hvcnQgdXJsLgorICAgICAgICAgICAgc2VuZFJlcXVlc3RSZWNvcmQuX3JlZnJl
c2hEZXRhaWxzKCk7CisgICAgICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQucGFyZW50ICE9
PSBwcmVzZW50YXRpb25Nb2RlbC5fcm9vdFJlY29yZCAmJiBzZW5kUmVxdWVzdFJlY29yZC5wYXJl
bnQudHlwZSA9PT0gcmVjb3JkVHlwZXMuU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QpCisgICAgICAg
ICAgICAgICAgc2VuZFJlcXVlc3RSZWNvcmQucGFyZW50Ll9yZWZyZXNoRGV0YWlscygpOworICAg
ICAgICB9CisgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3Vy
Y2VSZWNlaXZlZERhdGEgfHwgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlRmlu
aXNoKSB7CisgICAgICAgIHZhciBzZW5kUmVxdWVzdFJlY29yZCA9IHByZXNlbnRhdGlvbk1vZGVs
Ll9zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGFbInJlcXVlc3RJZCJdXTsKKyAgICAgICAg
aWYgKHNlbmRSZXF1ZXN0UmVjb3JkKSAvLyBGYWxzZSBmb3IgbWFpbiByZXNvdXJjZS4KKyAgICAg
ICAgICAgIHRoaXMudXJsID0gc2VuZFJlcXVlc3RSZWNvcmQudXJsOworICAgIH0gZWxzZSBpZiAo
cmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlRpbWVySW5zdGFsbCkgeworICAgICAgICB0aGlz
LnRpbWVvdXQgPSByZWNvcmQuZGF0YVsidGltZW91dCJdOworICAgICAgICB0aGlzLnNpbmdsZVNo
b3QgPSByZWNvcmQuZGF0YVsic2luZ2xlU2hvdCJdOworICAgICAgICBwcmVzZW50YXRpb25Nb2Rl
bC5fdGltZXJSZWNvcmRzW3JlY29yZC5kYXRhWyJ0aW1lcklkIl1dID0gdGhpczsKKyAgICB9IGVs
c2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lckZpcmUpIHsKKyAgICAgICAg
dmFyIHRpbWVySW5zdGFsbGVkUmVjb3JkID0gcHJlc2VudGF0aW9uTW9kZWwuX3RpbWVyUmVjb3Jk
c1tyZWNvcmQuZGF0YVsidGltZXJJZCJdXTsKKyAgICAgICAgaWYgKHRpbWVySW5zdGFsbGVkUmVj
b3JkKSB7CisgICAgICAgICAgICB0aGlzLmNhbGxTaXRlU3RhY2tUcmFjZSA9IHRpbWVySW5zdGFs
bGVkUmVjb3JkLnN0YWNrVHJhY2U7CisgICAgICAgICAgICB0aGlzLnRpbWVvdXQgPSB0aW1lcklu
c3RhbGxlZFJlY29yZC50aW1lb3V0OworICAgICAgICAgICAgdGhpcy5zaW5nbGVTaG90ID0gdGlt
ZXJJbnN0YWxsZWRSZWNvcmQuc2luZ2xlU2hvdDsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
cmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlcXVlc3RBbmltYXRpb25GcmFtZSkgeworICAg
ICAgICBwcmVzZW50YXRpb25Nb2RlbC5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lUmVjb3Jkc1tyZWNv
cmQuZGF0YVsiaWQiXV0gPSB0aGlzOworICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJl
Y29yZFR5cGVzLkZpcmVBbmltYXRpb25GcmFtZSkgeworICAgICAgICB2YXIgcmVxdWVzdEFuaW1h
dGlvblJlY29yZCA9IHByZXNlbnRhdGlvbk1vZGVsLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVSZWNv
cmRzW3JlY29yZC5kYXRhWyJpZCJdXTsKKyAgICAgICAgaWYgKHJlcXVlc3RBbmltYXRpb25SZWNv
cmQpCisgICAgICAgICAgICB0aGlzLmNhbGxTaXRlU3RhY2tUcmFjZSA9IHJlcXVlc3RBbmltYXRp
b25SZWNvcmQuc3RhY2tUcmFjZTsKKyAgICB9CisgICAgdGhpcy5fcmVmcmVzaERldGFpbHMoKTsK
K30KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3Rv
dHlwZSA9IHsKKyAgICBnZXQgbGFzdENoaWxkRW5kVGltZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fbGFzdENoaWxkRW5kVGltZTsKKyAgICB9LAorCisgICAgc2V0IGxhc3RDaGlsZEVu
ZFRpbWUodGltZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2xhc3RDaGlsZEVuZFRpbWUgPSB0aW1l
OworICAgIH0sCisKKyAgICBnZXQgc2VsZlRpbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3NlbGZUaW1lOworICAgIH0sCisKKyAgICBzZXQgc2VsZlRpbWUodGltZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3NlbGZUaW1lID0gdGltZTsKKyAgICB9LAorCisgICAgZ2V0IGNwdVRpbWUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NwdVRpbWU7CisgICAgfSwKKworICAgIGlz
TG9uZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh0aGlzLl9sYXN0Q2hpbGRF
bmRUaW1lIC0gdGhpcy5zdGFydFRpbWUpID4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQ7CisgICAgfSwKKworICAgIGdldCBjaGlsZHJl
bigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2NoaWxkcmVuKQorICAgICAgICAgICAgdGhp
cy5fY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuOworICAgIH0s
CisKKyAgICBjb250YWluc1RpbWU6IGZ1bmN0aW9uKHRpbWUpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5zdGFydFRpbWUgPD0gdGltZSAmJiB0aW1lIDw9IHRoaXMuZW5kVGltZTsKKyAgICB9
LAorCisgICAgX2dlbmVyYXRlQWdncmVnYXRlZEluZm86IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBj
ZWxsLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1hZ2dyZWdhdGVkLWluZm8iOworICAgICAgICBmb3Ig
KHZhciBpbmRleCBpbiB0aGlzLl9hZ2dyZWdhdGVkU3RhdHMpIHsKKyAgICAgICAgICAgIHZhciBs
YWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgbGFiZWwu
Y2xhc3NOYW1lID0gInRpbWVsaW5lLWFnZ3JlZ2F0ZWQtY2F0ZWdvcnkgdGltZWxpbmUtIiArIGlu
ZGV4OworICAgICAgICAgICAgY2VsbC5hcHBlbmRDaGlsZChsYWJlbCk7CisgICAgICAgICAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIHRl
eHQudGV4dENvbnRlbnQgPSBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX2FnZ3JlZ2F0ZWRT
dGF0c1tpbmRleF0sIHRydWUpOworICAgICAgICAgICAgY2VsbC5hcHBlbmRDaGlsZCh0ZXh0KTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9LAorCisgICAgZ2VuZXJhdGVQ
b3B1cENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGN1bGF0b3IpCisgICAgeworICAgICAgICB2YXIgY29u
dGVudEhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5Q
b3B1cENvbnRlbnRIZWxwZXIodGhpcy50aXRsZSk7CisKKyAgICAgICAgaWYgKHRoaXMuX2NoaWxk
cmVuICYmIHRoaXMuX2NoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYgVGltZSIpLCBOdW1i
ZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX3NlbGZUaW1lLCB0cnVlKSk7CisgICAgICAgICAgICBj
b250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWdn
cmVnYXRlZCBUaW1lIiksIHRoaXMuX2dlbmVyYXRlQWdncmVnYXRlZEluZm8oKSk7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIChhdCAlcyki
LCBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX2xhc3RDaGlsZEVuZFRpbWUgLSB0aGlzLnN0
YXJ0VGltZSwgdHJ1ZSksCisgICAgICAgICAgICBjYWxjdWxhdG9yLmZvcm1hdFZhbHVlKHRoaXMu
c3RhcnRUaW1lIC0gY2FsY3VsYXRvci5taW5pbXVtQm91bmRhcnkpKTsKKyAgICAgICAgY29udGVu
dEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIiks
IHRleHQpOworCisgICAgICAgIGNvbnN0IHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTW9kZWwuUmVjb3JkVHlwZTsKKworICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgeworICAg
ICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5HQ0V2ZW50OgorICAgICAgICAgICAgICAgIGNvbnRl
bnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xsZWN0ZWQi
KSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5kYXRhWyJ1c2VkSGVhcFNpemVEZWx0YSJdKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlRp
bWVySW5zdGFsbDoKKyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuVGltZXJGaXJlOgorICAg
ICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5UaW1lclJlbW92ZToKKyAgICAgICAgICAgICAgICBj
b250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZXIg
SUQiKSwgdGhpcy5kYXRhWyJ0aW1lcklkIl0pOworICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yg
dGhpcy50aW1lb3V0ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICAgICAgICBjb250ZW50
SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZW91dCIpLCBO
dW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMudGltZW91dCAvIDEwMDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlcGVhdHMiKSwgIXRoaXMuc2luZ2xlU2hvdCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5GaXJlQW5p
bWF0aW9uRnJhbWU6CisgICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGxiYWNrIElEIiksIHRoaXMuZGF0YVsiaWQiXSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLkZ1
bmN0aW9uQ2FsbDoKKyAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRpb24iKSwgdGhpcy5fbGlua2lmeVNjcmlw
dExvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBy
ZWNvcmRUeXBlcy5TY2hlZHVsZVJlc291cmNlUmVxdWVzdDoKKyAgICAgICAgICAgIGNhc2UgcmVj
b3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdDoKKyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlw
ZXMuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6CisgICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVz
LlJlc291cmNlUmVjZWl2ZWREYXRhOgorICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5SZXNv
dXJjZUZpbmlzaDoKKyAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2UiKSwgdGhpcy5fbGlua2lmeUxvY2F0
aW9uKHRoaXMudXJsKSk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVsicmVxdWVzdE1l
dGhvZCJdKQorICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBNZXRob2QiKSwgdGhpcy5kYXRhWyJyZXF1
ZXN0TWV0aG9kIl0pOworICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYXRhWyJzdGF0
dXNDb2RlIl0gPT09ICJudW1iZXIiKQorICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVscGVy
Ll9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIENvZGUiKSwgdGhp
cy5kYXRhWyJzdGF0dXNDb2RlIl0pOworICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbIm1p
bWVUeXBlIl0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRS
b3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNSU1FIFR5cGUiKSwgdGhpcy5kYXRhWyJtaW1lVHlw
ZSJdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlw
ZXMuRXZhbHVhdGVTY3JpcHQ6CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlz
LnVybCkKKyAgICAgICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdCIpLCB0aGlzLl9saW5raWZ5TG9jYXRpb24o
dGhpcy51cmwsIHRoaXMuZGF0YVsibGluZU51bWJlciJdKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlBhaW50OgorICAgICAgICAgICAgICAg
IGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2Nh
dGlvbiIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiglZCwgJWQpIiwgdGhpcy5kYXRhWyJ4Il0s
IHRoaXMuZGF0YVsieSJdKSk7CisgICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5k
VGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpbWVuc2lvbnMiKSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIlZCDDlyAlZCIsIHRoaXMuZGF0YVsid2lkdGgiXSwgdGhpcy5kYXRhWyJoZWln
aHQiXSkpOworICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlczog
Ly8gV2UgZG9uJ3Qgd2FudCB0byBzZWUgZGVmYXVsdCBkZXRhaWxzLgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5k
ZXRhaWxzKQorICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGV0YWlscyIpLCB0aGlzLmRldGFpbHMpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuc2NyaXB0TmFt
ZSAmJiB0aGlzLnR5cGUgIT09IHJlY29yZFR5cGVzLkZ1bmN0aW9uQ2FsbCkKKyAgICAgICAgICAg
IGNvbnRlbnRIZWxwZXIuX2FwcGVuZEVsZW1lbnRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
dW5jdGlvbiBDYWxsIiksIHRoaXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbigpKTsKKworICAgICAg
ICBpZiAodGhpcy51c2VkSGVhcFNpemUpCisgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBl
bmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlZCBIZWFwIFNpemUiKSwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCIlcyBvZiAlcyIsIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMudXNl
ZEhlYXBTaXplKSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy50b3RhbEhlYXBTaXplKSkpOwor
CisgICAgICAgIGlmICh0aGlzLmNhbGxTaXRlU3RhY2tUcmFjZSAmJiB0aGlzLmNhbGxTaXRlU3Rh
Y2tUcmFjZS5sZW5ndGgpCisgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRTdGFja1Ry
YWNlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbCBTaXRlIHN0YWNrIiksIHRoaXMuY2FsbFNp
dGVTdGFja1RyYWNlLCB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lLmJpbmQodGhpcykpOworCisgICAg
ICAgIGlmICh0aGlzLnN0YWNrVHJhY2UpCisgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBl
bmRTdGFja1RyYWNlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbCBTdGFjayIpLCB0aGlzLnN0
YWNrVHJhY2UsIHRoaXMuX2xpbmtpZnlDYWxsRnJhbWUuYmluZCh0aGlzKSk7CisKKyAgICAgICAg
cmV0dXJuIGNvbnRlbnRIZWxwZXIuX2NvbnRlbnRUYWJsZTsKKyAgICB9LAorCisgICAgX3JlZnJl
c2hEZXRhaWxzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmRldGFpbHMgPSB0aGlz
Ll9nZXRSZWNvcmREZXRhaWxzKCk7CisgICAgfSwKKworICAgIF9nZXRSZWNvcmREZXRhaWxzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgeworICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkdDRXZlbnQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgY29sbGVjdGVk
IiwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5kYXRhWyJ1c2VkSGVhcFNpemVEZWx0YSJdKSk7
CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUu
VGltZXJGaXJlOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5U2NyaXB0TG9j
YXRpb24odGhpcy5kYXRhWyJ0aW1lcklkIl0pOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkZ1bmN0aW9uQ2FsbDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fbGlua2lmeVNjcmlwdExvY2F0aW9uKCk7CisgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuRmlyZUFuaW1hdGlvbkZyYW1l
OgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5U2NyaXB0TG9jYXRpb24odGhp
cy5kYXRhWyJpZCJdKTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZS5FdmVudERpc3BhdGNoOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LmRhdGEgPyB0aGlzLmRhdGFbInR5cGUiXSA6IG51bGw7CisgICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUGFpbnQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZGF0YVsid2lkdGgiXSArICJcdTIwMDlcdTAwZDdcdTIwMDkiICsgdGhpcy5k
YXRhWyJoZWlnaHQiXTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZS5UaW1lckluc3RhbGw6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuVGltZXJSZW1vdmU6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2xpbmtpZnlUb3BDYWxsRnJhbWUodGhpcy5kYXRhWyJ0aW1lcklkIl0pOwor
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlJl
cXVlc3RBbmltYXRpb25GcmFtZToKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTW9kZWwuUmVjb3JkVHlwZS5DYW5jZWxBbmltYXRpb25GcmFtZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fbGlua2lmeVRvcENhbGxGcmFtZSh0aGlzLmRhdGFbImlkIl0pOworICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlBhcnNl
SFRNTDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3Jk
VHlwZS5SZWNhbGN1bGF0ZVN0eWxlczoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGlu
a2lmeVRvcENhbGxGcmFtZSgpOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVNb2RlbC5SZWNvcmRUeXBlLkV2YWx1YXRlU2NyaXB0OgorICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLnVybCA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnVybCwgdGhpcy5kYXRhWyJs
aW5lTnVtYmVyIl0sIDApIDogbnVsbDsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5YSFJSZWFkeVN0YXRlQ2hhbmdlOgorICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlhIUkxvYWQ6CisgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuU2NoZWR1
bGVSZXNvdXJjZVJlcXVlc3Q6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1vZGVsLlJlY29yZFR5cGUuUmVzb3VyY2VTZW5kUmVxdWVzdDoKKyAgICAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5SZXNvdXJjZVJlY2VpdmVkRGF0
YToKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlw
ZS5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZToKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHRoaXMudXJsKTsKKyAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5UaW1lU3Rh
bXA6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVsibWVzc2FnZSJdOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgICAgICogQHBh
cmFtIHtudW1iZXI9fSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBjb2x1bW5O
dW1iZXIKKyAgICAgKi8KKyAgICBfbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbih1cmwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICB7CisgICAgICAgIC8vIEZJWE1FKDYyNzI1KTogc3Rh
Y2sgdHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBhcmUgb25lLWJhc2VkLgorICAgICAgICBsaW5l
TnVtYmVyID0gbGluZU51bWJlciA/IGxpbmVOdW1iZXIgLSAxIDogbGluZU51bWJlcjsKKyAgICAg
ICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gY29sdW1uTnVtYmVyIC0gMSA6IDA7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9saW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCAidGltZWxpbmUtZGV0YWlscyIpOworICAgIH0sCisKKyAgICBf
bGlua2lmeUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2xpbmtpZnlMb2NhdGlvbihjYWxsRnJhbWUudXJsLCBjYWxsRnJhbWUubGluZU51
bWJlciwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcik7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nPX0gZGVmYXVsdFZhbHVlCisgICAgICovCisgICAgX2xpbmtpZnlUb3BD
YWxsRnJhbWU6IGZ1bmN0aW9uKGRlZmF1bHRWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVsw
XSkgOiBkZWZhdWx0VmFsdWU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nPX0gZGVmYXVsdFZhbHVlCisgICAgICovCisgICAgX2xpbmtpZnlTY3JpcHRMb2NhdGlvbjog
ZnVuY3Rpb24oZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0
TmFtZSA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0
TGluZSwgMCkgOiBkZWZhdWx0VmFsdWU7CisgICAgfSwKKworICAgIGNhbGN1bGF0ZUFnZ3JlZ2F0
ZWRTdGF0czogZnVuY3Rpb24oY2F0ZWdvcmllcykKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZ3Jl
Z2F0ZWRTdGF0cyA9IHt9OworICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBpbiBjYXRlZ29yaWVz
KQorICAgICAgICAgICAgdGhpcy5fYWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XSA9IDA7CisgICAg
ICAgIHRoaXMuX2NwdVRpbWUgPSB0aGlzLl9zZWxmVGltZTsKKworICAgICAgICBpZiAodGhpcy5f
Y2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gdGhpcy5fY2hpbGRyZW4u
bGVuZ3RoOyBpbmRleDsgLS1pbmRleCkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHRo
aXMuX2NoaWxkcmVuW2luZGV4IC0gMV07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY2F0ZWdv
cnkgaW4gY2F0ZWdvcmllcykKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWdncmVnYXRlZFN0
YXRzW2NhdGVnb3J5XSArPSBjaGlsZC5fYWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodmFyIGNhdGVnb3J5IGluIHRoaXMuX2FnZ3JlZ2F0
ZWRTdGF0cykKKyAgICAgICAgICAgICAgICB0aGlzLl9jcHVUaW1lICs9IHRoaXMuX2FnZ3JlZ2F0
ZWRTdGF0c1tjYXRlZ29yeV07CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fYWdncmVnYXRlZFN0
YXRzW3RoaXMuY2F0ZWdvcnkubmFtZV0gKz0gdGhpcy5fc2VsZlRpbWU7CisgICAgfSwKKworICAg
IGdldCBhZ2dyZWdhdGVkU3RhdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2FnZ3Jl
Z2F0ZWRTdGF0czsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYklu
c3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlBvcHVwQ29udGVudEhlbHBlciA9IGZ1
bmN0aW9uKHRpdGxlKQoreworICAgIHRoaXMuX2NvbnRlbnRUYWJsZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRhYmxlIik7CisgICAgdmFyIHRpdGxlQ2VsbCA9IHRoaXMuX2NyZWF0ZUNlbGwo
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAtIERldGFpbHMiLCB0aXRsZSksICJ0aW1lbGluZS1k
ZXRhaWxzLXRpdGxlIik7CisgICAgdGl0bGVDZWxsLmNvbFNwYW4gPSAyOworICAgIHZhciB0aXRs
ZVJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgdGl0bGVSb3cuYXBwZW5k
Q2hpbGQodGl0bGVDZWxsKTsKKyAgICB0aGlzLl9jb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGl0
bGVSb3cpOworfQorCitXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5Qb3B1
cENvbnRlbnRIZWxwZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nPX0gc3R5bGVOYW1lCisgICAgICovCisgICAgX2NyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbnRl
bnQsIHN0eWxlTmFtZSkKKyAgICB7CisgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGFiZWwiKTsKKyAgICAgICAgdGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShjb250ZW50KSk7CisgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGQiKTsKKyAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAidGltZWxpbmUtZGV0YWls
cyI7CisgICAgICAgIGlmIChzdHlsZU5hbWUpCisgICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSAr
PSAiICIgKyBzdHlsZU5hbWU7CisgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb250ZW50Owor
ICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9LAorCisgICAgX2FwcGVuZFRleHRSb3c6IGZ1bmN0
aW9uKHRpdGxlLCBjb250ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVD
ZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKSk7CisgICAgICAgIHJvdy5h
cHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKGNvbnRlbnQsICJ0aW1lbGluZS1kZXRhaWxzLXJv
dy1kYXRhIikpOworICAgICAgICB0aGlzLl9jb250ZW50VGFibGUuYXBwZW5kQ2hpbGQocm93KTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSB0aXRsZVN0eWxlCisg
ICAgICovCisgICAgX2FwcGVuZEVsZW1lbnRSb3c6IGZ1bmN0aW9uKHRpdGxlLCBjb250ZW50LCB0
aXRsZVN0eWxlKQorICAgIHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRyIik7CisgICAgICAgIHZhciB0aXRsZUNlbGwgPSB0aGlzLl9jcmVhdGVDZWxsKHRpdGxl
LCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKTsKKyAgICAgICAgaWYgKHRpdGxlU3R5bGUp
CisgICAgICAgICAgICB0aXRsZUNlbGwuYWRkU3R5bGVDbGFzcyh0aXRsZVN0eWxlKTsKKyAgICAg
ICAgcm93LmFwcGVuZENoaWxkKHRpdGxlQ2VsbCk7CisgICAgICAgIHZhciBjZWxsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAidGltZWxp
bmUtZGV0YWlscyI7CisgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoY29udGVudCk7CisgICAgICAg
IHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKKyAgICAgICAgdGhpcy5fY29udGVudFRhYmxlLmFwcGVu
ZENoaWxkKHJvdyk7CisgICAgfSwKKworICAgIF9hcHBlbmRTdGFja1RyYWNlOiBmdW5jdGlvbih0
aXRsZSwgc3RhY2tUcmFjZSwgY2FsbEZyYW1lTGlua2lmaWVyKQorICAgIHsKKyAgICAgICAgdGhp
cy5fYXBwZW5kVGV4dFJvdygiIiwgIiIpOworICAgICAgICB2YXIgZnJhbWVzVGFibGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHN0YWNrVHJhY2UubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBzdGFja0ZyYW1lID0g
c3RhY2tUcmFjZVtpXTsKKyAgICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0ciIpOworICAgICAgICAgICAgcm93LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1kZXRhaWxz
IjsKKyAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKHN0YWNrRnJh
bWUuZnVuY3Rpb25OYW1lID8gc3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUgOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIiksICJ0aW1lbGluZS1mdW5jdGlvbi1uYW1l
IikpOworICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoIiBAICIp
KTsKKyAgICAgICAgICAgIHZhciBsaW5rQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRk
Iik7CisgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IGNhbGxGcmFtZUxpbmtpZmllcihzdGFj
a0ZyYW1lKTsKKyAgICAgICAgICAgIGxpbmtDZWxsLmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwor
ICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGxpbmtDZWxsKTsKKyAgICAgICAgICAgIGZyYW1l
c1RhYmxlLmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fYXBwZW5k
RWxlbWVudFJvdyh0aXRsZSwgZnJhbWVzVGFibGUsICJ0aW1lbGluZS1zdGFja3RyYWNlLXRpdGxl
Iik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC90aW1lbGluZVBhbmVsLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvdGltZWxpbmVQYW5lbC5jc3MKaW5kZXggMDAwMTIzMmNlZTcyOTYwMDI1ODFiNjQ5OTIzZjkz
ZmY3MGI1MzExMy4uMzVhY2RlZTY3ZTYxZWM3OWZiOTllMTFjN2YyYjBlMzc2ZDU5YTFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90aW1lbGluZVBhbmVs
LmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RpbWVsaW5lUGFu
ZWwuY3NzCkBAIC0zNTMsNiArMzUzLDEwIEBACiAgICAgb3BhY2l0eTogMC4yOwogfQogCisudGlt
ZWxpbmUtZ3JhcGgtYmFyLmNwdSB7CisgICAgb3BhY2l0eTogMC42OworfQorCiAudGltZWxpbmUt
Z3JhcGgtc2lkZS5ldmVuIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAu
MDUpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGFjN2MyMjZhYzY1MDI5NDQ0YTdmYmQxOWI0NjNhYmU5ZTMwMDQwMDAu
LmFlYWFmOWE0ZTZmNWY5N2RiYTU2MWQ0M2Q5MTg4Y2IyMWIwOGEwYmEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMi0wMi0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSByZWNvcmQgZm9ybWF0dGluZyBpbnRvIHRo
ZSB0aW1lbGluZSBwcmVzZW50YXRpb24gbW9kZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXJlY2Vp
dmUtcmVzcG9uc2UtZXZlbnQuaHRtbDoKKwogMjAxMi0wMi0yNyAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBFcnJvciBjaGVjayByZWdleHAgbWluIHF1YW50
aWZpZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS90aW1lbGlu
ZS1yZWNlaXZlLXJlc3BvbnNlLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvdGltZWxpbmUtcmVjZWl2ZS1yZXNwb25zZS1ldmVudC5odG1sCmluZGV4IGM1MTQ4ZTM4
ZDUyMmYxZDkzYzY1ZTExNTU1NTViMTJhMDI2ZjY5ZTUuLjU2MTRjMGU2MmFmNzhhNWU2MDk3ZTU0
OGQ1MDViZWJjNjlhMWI4MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS90aW1lbGluZS1yZWNlaXZlLXJlc3BvbnNlLWV2ZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXJlY2VpdmUtcmVzcG9uc2UtZXZlbnQuaHRt
bApAQCAtNDgsNyArNDgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnRpbWVsaW5lLl9tb2RlbC5fY29sbGVjdGlvbkVuYWJsZWQgPSBm
YWxzZTsKIAotICAgICAgICB2YXIgcmVjb3JkcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMudGltZWxp
bmUuX3Jvb3RSZWNvcmQuY2hpbGRyZW47CisgICAgICAgIHZhciByZWNvcmRzID0gV2ViSW5zcGVj
dG9yLnBhbmVscy50aW1lbGluZS5fcm9vdFJlY29yZCgpLmNoaWxkcmVuOwogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBkdW1wRm9y
bWF0dGVkUmVjb3JkKHJlY29yZHNbaV0pOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129071</attachid>
            <date>2012-02-27 11:10:12 -0800</date>
            <delta_ts>2012-02-27 11:10:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79684-20120227231009.patch</filename>
            <type>text/plain</type>
            <size>73611</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI0OTAzNmVkNDllZmQy
OGE3ZjA1ZTA1MzY1NWEyYTZlYTEzYjg3MS4uNzFiYjQwYWY0ZDBhNTAxNWFlYTdiNzc5ZTI1Mzgy
NmEwZTI2YmEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc2IEBACiAyMDEyLTAyLTI3ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9y
OiBtb3ZlIHJlY29yZCBmb3JtYXR0aW5nIGludG8gdGhlIHRpbWVsaW5lIHByZXNlbnRhdGlvbiBt
b2RlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5
Njg0CisKKyAgICAgICAgRHJpdmUtYnk6IGZpeCBmb3Igc3RvcCByZWNvcmRpbmcgaW4gcmVzZXQ7
IGNwdSB0aW1lIHJlc3RvcmVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlwZS51cGRhdGUudXBk
YXRlQm91bmRhcmllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0Nh
bGN1bGF0b3IucHJvdG90eXBlLnVwZGF0ZUJvdW5kYXJpZXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZS5fcm9vdFJlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90
b3R5cGUuX3VwZGF0ZVJlY29yZHNDb3VudGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLnByb3RvdHlwZS5fcmVwb3B1bGF0ZVJlY29yZHMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9vblRpbWVsaW5lRXZlbnRSZWNvcmRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2lubmVyQWRk
UmVjb3JkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5w
cm90b3R5cGUuX3Jlc2V0UGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlLl9yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLnByb3RvdHlwZS5fdXBkYXRlQm91bmRhcmllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2ZpbHRlclJlY29yZHMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLnJldmVhbFJlY29yZEF0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fc2hvd1BvcG92ZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUuY29tcHV0ZUJh
ckdyYXBoUGVyY2VudGFnZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3Vs
YXRvci5wcm90b3R5cGUuY29tcHV0ZUJhckdyYXBoV2luZG93UG9zaXRpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUudXBkYXRlQm91bmRhcmll
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVTdGFydEF0WmVyb0NhbGN1bGF0b3Iu
cHJvdG90eXBlLmNvbXB1dGVCYXJHcmFwaFBlcmNlbnRhZ2VzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZEdyYXBoUm93LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5jcmVhdGVGb3JtYXR0ZWRSZWNv
cmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlLl9jcmVhdGVSb290UmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5yb290UmVjb3JkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5yZXNldCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2Zp
bmRQYXJlbnRSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwucHJvdG90eXBlLl9yZXNldFdpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZENhdGVnb3J5KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zZXRD
YXRlZ29yeVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLmdldCBfcmVjb3JkU3R5bGVzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLmdldCBs
YXN0Q2hpbGRFbmRUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUuc2V0IGxhc3RDaGlsZEVuZFRpbWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlw
ZS5nZXQgc2VsZlRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZS5zZXQgc2VsZlRpbWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZS5nZXQgY3B1
VGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5S
ZWNvcmQucHJvdG90eXBlLmlzTG9uZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLmdldCBjaGlsZHJlbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBl
LmNvbnRhaW5zVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLl9nZW5lcmF0ZUFnZ3JlZ2F0ZWRJbmZvKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5
cGUuZ2VuZXJhdGVQb3B1cENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZS5fcmVmcmVzaERldGFpbHMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3Rv
dHlwZS5fZ2V0UmVjb3JkRGV0YWlscyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLl9saW5raWZ5TG9jYXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkLnByb3Rv
dHlwZS5fbGlua2lmeUNhbGxGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLl9saW5raWZ5VG9wQ2FsbEZyYW1lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5w
cm90b3R5cGUuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmQucHJvdG90eXBlLmNhbGN1bGF0ZUFnZ3Jl
Z2F0ZWRTdGF0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25N
b2RlbC5SZWNvcmQucHJvdG90eXBlLmdldCBhZ2dyZWdhdGVkU3RhdHMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlBvcHVwQ29u
dGVudEhlbHBlci5wcm90b3R5cGUuX2NyZWF0ZUNlbGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZS5f
YXBwZW5kVGV4dFJvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbC5Qb3B1cENvbnRlbnRIZWxwZXIucHJvdG90eXBlLl9hcHBlbmRFbGVtZW50Um93KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlBvcHVwQ29u
dGVudEhlbHBlci5wcm90b3R5cGUuX2FwcGVuZFN0YWNrVHJhY2UpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvdGltZWxpbmVQYW5lbC5jc3M6CisgICAgICAgICgudGltZWxpbmUtZ3Jh
cGgtYmFyLmNwdSk6CisKKzIwMTItMDItMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29n
bGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEN0cmwrSyBzaG91bGQgbm90IHpvb20g
aW4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5Njc2
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVN
b2RlbC5qcwppbmRleCA5NmYyNTQ0MTg1MTRlMWE1ZjE4ZmI2Zjc0ODlmOGIyZmZmMGZiNzEzLi4y
ZDA3ODM4ODdlZmRjMmE1N2EzNTc5Yzk0YmUzZmQ1MDg1ZDIyNGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzCkBAIC0xNzAs
NyArMTcwLDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwucHJvdG90eXBlID0gewogCiAg
ICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuc3RvcFJlY29yZCgpOwog
ICAgICAgICB0aGlzLl9yZWNvcmRzID0gW107CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLkV2ZW50cy5SZWNvcmRzQ2xlYXJl
ZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKaW5kZXggNTkyNmRiNzBlNThiNzFiZDBhMDU1
ZmM1MmUxOTliOWZlNjkzMDgyMS4uMjVkZmZjYTAyOGUyOGRjOWZkNGYzYzI2MTlhYWFiY2EwYjNm
NzM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZU92ZXJ2aWV3UGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC0xNzQsNyArMTc0LDE0IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gQ3Jl
YXRlIHNwYXJzZSBhcnJheXMgd2l0aCAxMDEgY2VsbHMgZWFjaCB0byBmaWxsIHdpdGggY2h1bmtz
IGZvciBhIGdpdmVuIGNhdGVnb3J5LgogICAgICAgICB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3Iu
cmVzZXQoKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVjb3Jk
cyhyZWNvcmRzLCB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IudXBkYXRlQm91bmRhcmllcy5iaW5k
KHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRvcikpOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24g
dXBkYXRlQm91bmRhcmllcyhyZWNvcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX292
ZXJ2aWV3Q2FsY3VsYXRvci51cGRhdGVCb3VuZGFyaWVzKHJlY29yZCk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsLmZvckFsbFJlY29yZHMocmVjb3JkcywgdXBkYXRlQm91bmRhcmllcy5iaW5k
KHRoaXMpKTsKIAogICAgICAgICBmdW5jdGlvbiBtYXJrUGVyY2VudGFnZXNGb3JSZWNvcmQocmVj
b3JkKQogICAgICAgICB7CkBAIC00NzcsMTUgKzQ4NCwxNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld0NhbGN1bGF0b3IucHJvdG90eXBlID0gewogCiAgICAgdXBkYXRlQm91bmRhcmll
czogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZhbHNlOwog
ICAgICAgICBpZiAodHlwZW9mIHRoaXMubWluaW11bUJvdW5kYXJ5ID09PSAidW5kZWZpbmVkIiB8
fCByZWNvcmQuc3RhcnRUaW1lIDwgdGhpcy5taW5pbXVtQm91bmRhcnkpIHsKICAgICAgICAgICAg
IHRoaXMubWluaW11bUJvdW5kYXJ5ID0gcmVjb3JkLnN0YXJ0VGltZTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAg
ICBpZiAodHlwZW9mIHRoaXMubWF4aW11bUJvdW5kYXJ5ID09PSAidW5kZWZpbmVkIiB8fCByZWNv
cmQuZW5kVGltZSA+IHRoaXMubWF4aW11bUJvdW5kYXJ5KSB7CiAgICAgICAgICAgICB0aGlzLm1h
eGltdW1Cb3VuZGFyeSA9IHJlY29yZC5lbmRUaW1lOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAogCiAgICAgZ2V0IGJvdW5kYXJ5
U3BhbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rp
bWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUGFuZWwuanMKaW5kZXggMjE0ZjFhMjI3MThhOWIxNjRhZTE5YmMwZmM2MzQxODFiZDgyMDc4
OC4uOTk1MWY5ZTk5YzRiZjE4ZWQyOTc3M2IxODE4NzBmOGY4ZmRiYjhlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAt
MzgsOSArMzgsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkKICAg
ICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInRpbWVsaW5lUGFuZWwuY3NzIik7CiAKICAgICB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50
YXRpb25Nb2RlbCgpOwotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZENhdGVnb3J5KG5l
dyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgibG9hZGluZyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTG9hZGluZyIpLCAicmdiKDQ3LDEwMiwyMzYpIikpOwotICAgIHRoaXMuX3ByZXNl
bnRhdGlvbk1vZGVsLmFkZENhdGVnb3J5KG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29y
eSgic2NyaXB0aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRpbmciKSwgInJnYigx
NTcsMjMxLDExOSkiKSk7Ci0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkQ2F0ZWdvcnko
bmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5KCJyZW5kZXJpbmciLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlbmRlcmluZyIpLCAicmdiKDE2NCw2MCwyNTUpIikpOwogICAgIHRoaXMu
X3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLldpbmRvd0NoYW5nZWQsIHRoaXMuX3NjaGVkdWxlUmVm
cmVzaC5iaW5kKHRoaXMsIGZhbHNlKSk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5FdmVu
dHMuQ2F0ZWdvcnlWaXNpYmlsaXR5Q2hhbmdlZCwgdGhpcy5fc2NoZWR1bGVSZWZyZXNoLmJpbmQo
dGhpcywgdHJ1ZSkpOwogCkBAIC05OCwxNCArOTUsOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9leHBhbmRFbGVtZW50cy5pZCA9ICJvcnBoYW4t
ZXhwYW5kLWVsZW1lbnRzIjsKICAgICB0aGlzLl9pdGVtc0dyYXBoc0VsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fZXhwYW5kRWxlbWVudHMpOwogCi0gICAgdGhpcy5fcm9vdFJlY29yZCA9IHRoaXMu
X2NyZWF0ZVJvb3RSZWNvcmQoKTsKLSAgICB0aGlzLl9zZW5kUmVxdWVzdFJlY29yZHMgPSB7fTsK
LSAgICB0aGlzLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3RzID0ge307Ci0gICAgdGhpcy5fdGlt
ZXJSZWNvcmRzID0ge307Ci0gICAgdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lUmVjb3JkcyA9
IHt9OwotCiAgICAgdGhpcy5fY2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVD
YWxjdWxhdG9yKCk7Ci0gICAgdmFyIHNob3J0UmVjb3JkVGhyZXNob2xkVGl0bGUgPSBOdW1iZXIu
c2Vjb25kc1RvU3RyaW5nKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnNob3J0UmVjb3JkVGhy
ZXNob2xkKTsKKyAgICB2YXIgc2hvcnRSZWNvcmRUaHJlc2hvbGRUaXRsZSA9IE51bWJlci5zZWNv
bmRzVG9TdHJpbmcoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuc2hvcnRS
ZWNvcmRUaHJlc2hvbGQpOwogICAgIHRoaXMuX3Nob3dTaG9ydFJlY29yZHNUaXRsZVRleHQgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGhlIHJlY29yZHMgdGhhdCBhcmUgc2hvcnRlciB0
aGFuICVzIiwgc2hvcnRSZWNvcmRUaHJlc2hvbGRUaXRsZSk7CiAgICAgdGhpcy5faGlkZVNob3J0
UmVjb3Jkc1RpdGxlVGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgcmVjb3Jk
cyB0aGF0IGFyZSBzaG9ydGVyIHRoYW4gJXMiLCBzaG9ydFJlY29yZFRocmVzaG9sZFRpdGxlKTsK
ICAgICB0aGlzLl9jcmVhdGVTdGF0dXNiYXJCdXR0b25zKCk7CkBAIC0xMjksMTIgKzEyMCwxMyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9tb2Rl
bC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLkV2ZW50cy5SZWNv
cmRzQ2xlYXJlZCwgdGhpcy5fb25SZWNvcmRzQ2xlYXJlZCwgdGhpcyk7CiAKICAgICB0aGlzLl9y
ZWdpc3RlclNob3J0Y3V0cygpOwotICAgIHRoaXMuX2xpbmtpZmllciA9IFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOworCisgICAgdGhpcy5f
dmlzaWJsZVJlY29yZHNDb3VudCA9IDA7CisgICAgdGhpcy5fYWxsUmVjb3Jkc0NvdW50ID0gMDsK
IH0KIAogLy8gRGVmaW5lIHJvdyBoZWlnaHQsIHNob3VsZCBiZSBpbiBzeW5jIHdpdGggc3R5bGVz
IGZvciB0aW1lbGluZSBncmFwaHMuCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yb3dIZWln
aHQgPSAxODsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnNob3J0UmVjb3JkVGhyZXNob2xk
ID0gMC4wMTU7CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAvKioKQEAgLTIwNSw0MiArMTk3LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50OwogICAgIH0sCiAKLSAgICBn
ZXQgX3JlY29yZFN0eWxlcygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0eWxl
c0FycmF5KSB7Ci0gICAgICAgICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNb2RlbC5SZWNvcmRUeXBlOwotICAgICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSB0aGlz
Ll9wcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yaWVzOwotCi0gICAgICAgICAgICB2YXIgcmVjb3Jk
U3R5bGVzID0ge307Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZlbnRE
aXNwYXRjaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IiksIGNhdGVn
b3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVz
W3JlY29yZFR5cGVzLkxheW91dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxh
eW91dCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0gfTsKLSAgICAgICAgICAg
IHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5OiBjYXRl
Z29yaWVzWyJyZW5kZXJpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5
cGVzLlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFpbnQiKSwgY2F0
ZWdvcnk6IGNhdGVnb3JpZXNbInJlbmRlcmluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHls
ZXNbcmVjb3JkVHlwZXMuUGFyc2VIVE1MXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUGFyc2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OwotICAgICAgICAg
ICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVySW5zdGFsbF0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkluc3RhbGwgVGltZXIiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNb
InNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuVGlt
ZXJSZW1vdmVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgVGltZXIi
KSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNv
cmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZXJGaXJlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVGltZXIgRmlyZWQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJd
IH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSUmVhZHlTdGF0ZUNo
YW5nZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiBSZWFkeSBTdGF0ZSBD
aGFuZ2UiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSTG9hZF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlhIUiBMb2FkIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmci
XSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2YWx1YXRlU2NyaXB0
XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVhdGUgU2NyaXB0IiksIGNh
dGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLlRpbWVTdGFtcF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlN0YW1wIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAg
ICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3RdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZW5kIFJlcXVlc3QiKSwgY2F0ZWdvcnk6IGNh
dGVnb3JpZXNbImxvYWRpbmciXSB9OwotICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5
cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVjZWl2ZSBSZXNwb25zZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJd
IH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2hd
ID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaW5pc2ggTG9hZGluZyIpLCBjYXRl
Z29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuRnVuY3Rpb25DYWxsXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRnVuY3Rpb24gQ2FsbCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsK
LSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0
YV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmUgRGF0YSIpLCBjYXRl
Z29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07Ci0gICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuR0NFdmVudF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkdD
IEV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAg
ICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtET01Db250ZW50XSA9IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRE9NQ29udGVudCBldmVudCIpLCBjYXRlZ29yeTogY2F0ZWdv
cmllc1sic2NyaXB0aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5NYXJrTG9hZF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWQgZXZlbnQi
KSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAgICAgICAgICByZWNv
cmRTdHlsZXNbcmVjb3JkVHlwZXMuU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RdID0geyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY2hlZHVsZSBSZXF1ZXN0IiksIGNhdGVnb3J5OiBjYXRl
Z29yaWVzWyJsb2FkaW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5SZXF1ZXN0QW5pbWF0aW9uRnJhbWVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0
aW5nIl0gfTsKLSAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5DYW5jZWxBbmlt
YXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbmNlbCBBbmlt
YXRpb24gRnJhbWUiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07Ci0gICAg
ICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRmlyZUFuaW1hdGlvbkZyYW1lXSA9IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQW5pbWF0aW9uIEZyYW1lIEZpcmVkIiksIGNh
dGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OwotICAgICAgICAgICAgdGhpcy5fcmVj
b3JkU3R5bGVzQXJyYXkgPSByZWNvcmRTdHlsZXM7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRoaXMuX3JlY29yZFN0eWxlc0FycmF5OwotICAgIH0sCi0KICAgICBfY3JlYXRlU3RhdHVzYmFy
QnV0dG9uczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy50b2dnbGVUaW1lbGluZUJ1
dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVjb3JkIiksICJyZWNvcmQtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0iKTsKQEAgLTM1
OSw5ICszMTUsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9jcmVhdGVGaWxlU2VsZWN0b3IoKTsKICAgICB9LAogCisgICAgX3Jvb3RS
ZWNvcmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wcmVzZW50YXRp
b25Nb2RlbC5yb290UmVjb3JkKCk7CisgICAgfSwKKwogICAgIF91cGRhdGVSZWNvcmRzQ291bnRl
cjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5yZWNvcmRzQ291bnRlci50ZXh0Q29u
dGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgb2YgJWQgY2FwdHVyZWQgcmVjb3JkcyBh
cmUgdmlzaWJsZSIsIHRoaXMuX3Jvb3RSZWNvcmQuX3Zpc2libGVSZWNvcmRzQ291bnQsIHRoaXMu
X3Jvb3RSZWNvcmQuX2FsbFJlY29yZHNDb3VudCk7CisgICAgICAgIHRoaXMucmVjb3Jkc0NvdW50
ZXIudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIG9mICVkIGNhcHR1cmVk
IHJlY29yZHMgYXJlIHZpc2libGUiLCB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50LCB0aGlzLl9h
bGxSZWNvcmRzQ291bnQpOwogICAgIH0sCiAKICAgICBfdXBkYXRlRXZlbnREaXZpZGVyczogZnVu
Y3Rpb24oKQpAQCAtNDcxLDcgKzQzMiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzZXRQYW5lbCgpOwogICAgICAgICB2YXIgcmVj
b3JkcyA9IHRoaXMuX21vZGVsLnJlY29yZHM7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cmVjb3Jkcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX2lubmVyQWRkUmVjb3JkVG9U
aW1lbGluZShyZWNvcmRzW2ldLCB0aGlzLl9yb290UmVjb3JkKTsKKyAgICAgICAgICAgIHRoaXMu
X2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmRzW2ldLCB0aGlzLl9yb290UmVjb3JkKCkp
OwogICAgICAgICB0aGlzLl9zY2hlZHVsZVJlZnJlc2goZmFsc2UpOwogICAgIH0sCiAKQEAgLTQ4
MiwzMyArNDQzLDEzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsK
IAogICAgIF9vblRpbWVsaW5lRXZlbnRSZWNvcmRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB0aGlzLl9pbm5lckFkZFJlY29yZFRvVGltZWxpbmUoZXZlbnQuZGF0YSwgdGhpcy5f
cm9vdFJlY29yZCk7CisgICAgICAgIHRoaXMuX2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZShldmVu
dC5kYXRhLCB0aGlzLl9yb290UmVjb3JkKCkpOwogICAgICAgICB0aGlzLl9zY2hlZHVsZVJlZnJl
c2goZmFsc2UpOwogCiAgICAgICAgIGlmICh0aGlzLl9tZW1vcnlTdGF0aXN0aWNzICYmIGV2ZW50
LmRhdGFbImNvdW50ZXJzIl0pCiAgICAgICAgICAgICB0aGlzLl9tZW1vcnlTdGF0aXN0aWNzLmFk
ZFRpbWxpbmVFdmVudChldmVudCk7CiAgICAgfSwKIAotICAgIF9maW5kUGFyZW50UmVjb3JkOiBm
dW5jdGlvbihyZWNvcmQpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2dsdWVQYXJlbnRCdXR0
b24udG9nZ2xlZCkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIHZhciByZWNv
cmRUeXBlcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7Ci0gICAgICAg
IHZhciBwYXJlbnRSZWNvcmQ7Ci0gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlw
ZXMuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2UgfHwKLSAgICAgICAgICAgIHJlY29yZC50eXBlID09
PSByZWNvcmRUeXBlcy5SZXNvdXJjZUZpbmlzaCB8fAotICAgICAgICAgICAgcmVjb3JkLnR5cGUg
PT09IHJlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZWREYXRhKQotICAgICAgICAgICAgcGFyZW50
UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhWyJyZXF1ZXN0SWQi
XV07Ci0gICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lckZp
cmUpCi0gICAgICAgICAgICBwYXJlbnRSZWNvcmQgPSB0aGlzLl90aW1lclJlY29yZHNbcmVjb3Jk
LmRhdGFbInRpbWVySWQiXV07Ci0gICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNv
cmRUeXBlcy5SZXNvdXJjZVNlbmRSZXF1ZXN0KQotICAgICAgICAgICAgcGFyZW50UmVjb3JkID0g
dGhpcy5fc2NoZWR1bGVkUmVzb3VyY2VSZXF1ZXN0c1tyZWNvcmQuZGF0YVsidXJsIl1dOwotICAg
ICAgICBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuRmlyZUFuaW1hdGlvbkZy
YW1lKQotICAgICAgICAgICAgcGFyZW50UmVjb3JkID0gdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZy
YW1lUmVjb3Jkc1tyZWNvcmQuZGF0YVsiaWQiXV07Ci0gICAgICAgIHJldHVybiBwYXJlbnRSZWNv
cmQ7Ci0gICAgfSwKLQogICAgIF9pbm5lckFkZFJlY29yZFRvVGltZWxpbmU6IGZ1bmN0aW9uKHJl
Y29yZCwgcGFyZW50UmVjb3JkKQogICAgIHsKICAgICAgICAgdmFyIGNvbm5lY3RlZFRvT2xkUmVj
b3JkID0gZmFsc2U7CkBAIC01MTcsMTEgKzQ1OCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlw
ZXMuTWFya0RPTUNvbnRlbnQgfHwgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLk1hcmtMb2Fk
KQogICAgICAgICAgICAgcGFyZW50UmVjb3JkID0gbnVsbDsgLy8gTm8gYmFyIGVudHJ5IGZvciBs
b2FkIGV2ZW50cy4KICAgICAgICAgZWxzZSBpZiAoIXRoaXMuX3N0YXJ0QXRaZXJvICYmCi0gICAg
ICAgICAgICAgICAgICAgIChwYXJlbnRSZWNvcmQgPT09IHRoaXMuX3Jvb3RSZWNvcmQgfHwKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fZ2x1ZVBhcmVudEJ1dHRvbi50b2dnbGVkICYmCisgICAg
ICAgICAgICAgICAgICAgIChwYXJlbnRSZWNvcmQgPT09IHRoaXMuX3Jvb3RSZWNvcmQoKSB8fAog
ICAgICAgICAgICAgICAgICAgICByZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VS
ZWNlaXZlUmVzcG9uc2UgfHwKICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnR5cGUgPT09IHJl
Y29yZFR5cGVzLlJlc291cmNlRmluaXNoIHx8CiAgICAgICAgICAgICAgICAgICAgIHJlY29yZC50
eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0YSkpIHsKLSAgICAgICAgICAg
IHZhciBuZXdQYXJlbnRSZWNvcmQgPSB0aGlzLl9maW5kUGFyZW50UmVjb3JkKHJlY29yZCk7Cisg
ICAgICAgICAgICB2YXIgbmV3UGFyZW50UmVjb3JkID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwu
ZmluZFBhcmVudFJlY29yZChyZWNvcmQpOwogICAgICAgICAgICAgaWYgKG5ld1BhcmVudFJlY29y
ZCkgewogICAgICAgICAgICAgICAgIHBhcmVudFJlY29yZCA9IG5ld1BhcmVudFJlY29yZDsKICAg
ICAgICAgICAgICAgICBjb25uZWN0ZWRUb09sZFJlY29yZCA9IHRydWU7CkBAIC01NDgsMzUgKzQ5
MCwzNSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgZm9ybWF0dGVkUmVjb3JkID0gbmV3IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZChyZWNvcmQsIHBhcmVudFJl
Y29yZCwgdGhpcywgdGhpcy5fbGlua2lmaWVyLCBzY3JpcHREZXRhaWxzKTsKKyAgICAgICAgdmFy
IGZvcm1hdHRlZFJlY29yZCA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUZvcm1hdHRl
ZFJlY29yZChyZWNvcmQsIHBhcmVudFJlY29yZCwgc2NyaXB0RGV0YWlscyk7CiAKICAgICAgICAg
aWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5NYXJrRE9NQ29udGVudCB8fCByZWNvcmQu
dHlwZSA9PT0gcmVjb3JkVHlwZXMuTWFya0xvYWQpIHsKICAgICAgICAgICAgIHRoaXMuX3RpbWVT
dGFtcFJlY29yZHMucHVzaChmb3JtYXR0ZWRSZWNvcmQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgKyt0aGlzLl9yb290UmVjb3JkLl9hbGxSZWNvcmRzQ291bnQ7
Ci0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5jb2xsYXBzZWQgPSAocGFyZW50UmVjb3JkID09PSB0
aGlzLl9yb290UmVjb3JkKTsKKyAgICAgICAgKyt0aGlzLl9hbGxSZWNvcmRzQ291bnQ7CisgICAg
ICAgIGZvcm1hdHRlZFJlY29yZC5jb2xsYXBzZWQgPSAocGFyZW50UmVjb3JkID09PSB0aGlzLl9y
b290UmVjb3JkKCkpOwogCiAgICAgICAgIHZhciBjaGlsZHJlbkNvdW50ID0gY2hpbGRyZW4gPyBj
aGlsZHJlbi5sZW5ndGggOiAwOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVu
Q291bnQ7ICsraSkKICAgICAgICAgICAgIHRoaXMuX2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZShj
aGlsZHJlbltpXSwgZm9ybWF0dGVkUmVjb3JkKTsKIAotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQu
X2NhbGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29y
aWVzKTsKKyAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5jYXRlZ29yaWVzKTsKIAogICAgICAgICBpZiAoY29ubmVj
dGVkVG9PbGRSZWNvcmQpIHsKICAgICAgICAgICAgIHJlY29yZCA9IGZvcm1hdHRlZFJlY29yZDsK
ICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICB2YXIgcGFyZW50ID0gcmVjb3JkLnBh
cmVudDsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50Ll9sYXN0Q2hpbGRFbmRUaW1lIDwgcmVj
b3JkLl9sYXN0Q2hpbGRFbmRUaW1lKQotICAgICAgICAgICAgICAgICAgICBwYXJlbnQuX2xhc3RD
aGlsZEVuZFRpbWUgPSByZWNvcmQuX2xhc3RDaGlsZEVuZFRpbWU7Ci0gICAgICAgICAgICAgICAg
Zm9yICh2YXIgY2F0ZWdvcnkgaW4gZm9ybWF0dGVkUmVjb3JkLl9hZ2dyZWdhdGVkU3RhdHMpCi0g
ICAgICAgICAgICAgICAgICAgIHBhcmVudC5fYWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XSArPSBm
b3JtYXR0ZWRSZWNvcmQuX2FnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV07CisgICAgICAgICAgICAg
ICAgaWYgKHBhcmVudC5sYXN0Q2hpbGRFbmRUaW1lIDwgcmVjb3JkLmxhc3RDaGlsZEVuZFRpbWUp
CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5sYXN0Q2hpbGRFbmRUaW1lID0gcmVjb3JkLmxh
c3RDaGlsZEVuZFRpbWU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gZm9y
bWF0dGVkUmVjb3JkLmFnZ3JlZ2F0ZWRTdGF0cykKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50
LmFnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV0gKz0gZm9ybWF0dGVkUmVjb3JkLmFnZ3JlZ2F0ZWRT
dGF0c1tjYXRlZ29yeV07CiAgICAgICAgICAgICAgICAgcmVjb3JkID0gcGFyZW50OwogICAgICAg
ICAgICAgfSB3aGlsZSAocmVjb3JkLnBhcmVudCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAocGFyZW50UmVjb3JkICE9PSB0aGlzLl9yb290UmVjb3JkKQotICAgICAgICAgICAg
ICAgIHBhcmVudFJlY29yZC5fc2VsZlRpbWUgLT0gZm9ybWF0dGVkUmVjb3JkLmVuZFRpbWUgLSBm
b3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lOworICAgICAgICAgICAgaWYgKHBhcmVudFJlY29yZCAh
PT0gdGhpcy5fcm9vdFJlY29yZCgpKQorICAgICAgICAgICAgICAgIHBhcmVudFJlY29yZC5zZWxm
VGltZSAtPSBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSAtIGZvcm1hdHRlZFJlY29yZC5zdGFydFRp
bWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gS2VlcCBiYXIgZW50cnkgZm9yIG1hcmsgdGltZWxp
bmUgc2luY2UgbmVzdGluZyBtaWdodCBiZSBpbnRlcmVzdGluZyB0byB0aGUgdXNlci4KICAgICAg
ICAgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lU3RhbXApCkBAIC02MDIsMTYg
KzU0NCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKGZhbHNlKTsKICAgICB9LAogCi0gICAgX2NyZWF0ZVJv
b3RSZWNvcmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciByb290UmVjb3JkID0ge307
Ci0gICAgICAgIHJvb3RSZWNvcmQuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgcm9vdFJlY29yZC5f
dmlzaWJsZVJlY29yZHNDb3VudCA9IDA7Ci0gICAgICAgIHJvb3RSZWNvcmQuX2FsbFJlY29yZHND
b3VudCA9IDA7Ci0gICAgICAgIHJvb3RSZWNvcmQuX2FnZ3JlZ2F0ZWRTdGF0cyA9IHt9OwotICAg
ICAgICByZXR1cm4gcm9vdFJlY29yZDsKLSAgICB9LAotCiAgICAgX2NsZWFyUGFuZWw6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vZGVsLnJlc2V0KCk7CkBAIC02MjcsMTYgKzU1
OSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewog
ICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5yZXNldCgpOwogICAgICAgICB0aGlzLl90
aW1lU3RhbXBSZWNvcmRzID0gW107Ci0gICAgICAgIHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3JkcyA9
IHt9OwotICAgICAgICB0aGlzLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3RzID0ge307Ci0gICAg
ICAgIHRoaXMuX3RpbWVyUmVjb3JkcyA9IHt9OwotICAgICAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVSZWNvcmRzID0ge307Ci0gICAgICAgIHRoaXMuX3Jvb3RSZWNvcmQgPSB0aGlzLl9j
cmVhdGVSb290UmVjb3JkKCk7CiAgICAgICAgIHRoaXMuX2JvdW5kYXJpZXNBcmVWYWxpZCA9IGZh
bHNlOwogICAgICAgICB0aGlzLl9vdmVydmlld1BhbmUucmVzZXQoKTsKICAgICAgICAgdGhpcy5f
YWRqdXN0U2Nyb2xsUG9zaXRpb24oMCk7CiAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWls
cygpOwotICAgICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQoKTsKKyAgICAgICAgdGhpcy5fdmlz
aWJsZVJlY29yZHNDb3VudCA9IDA7CisgICAgICAgIHRoaXMuX2FsbFJlY29yZHNDb3VudCA9IDA7
CiAgICAgfSwKIAogICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yOiBmdW5j
dGlvbigpCkBAIC02OTAsNyArNjE4LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JlZnJlc2hUaW1lb3V0OwogICAg
ICAgICB9CiAKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdQYW5lLnVwZGF0ZSh0aGlzLl9yb290UmVj
b3JkLmNoaWxkcmVuLCB0aGlzLl9zaG93U2hvcnRFdmVudHMpOworICAgICAgICB0aGlzLl9vdmVy
dmlld1BhbmUudXBkYXRlKHRoaXMuX3Jvb3RSZWNvcmQoKS5jaGlsZHJlbiwgdGhpcy5fc2hvd1No
b3J0RXZlbnRzKTsKIAogICAgICAgICBpZiAoIXRoaXMuX2JvdW5kYXJpZXNBcmVWYWxpZCkKICAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUJvdW5kYXJpZXMoKTsKQEAgLTcwOSw4ICs2MzcsOCBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Nh
bGN1bGF0b3Iud2luZG93TGVmdCA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLndpbmRvd0xlZnQ7
CiAgICAgICAgIHRoaXMuX2NhbGN1bGF0b3Iud2luZG93UmlnaHQgPSB0aGlzLl9wcmVzZW50YXRp
b25Nb2RlbC53aW5kb3dSaWdodDsKIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
X3Jvb3RSZWNvcmQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9jYWxj
dWxhdG9yLnVwZGF0ZUJvdW5kYXJpZXModGhpcy5fcm9vdFJlY29yZC5jaGlsZHJlbltpXSk7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcm9vdFJlY29yZCgpLmNoaWxkcmVuLmxl
bmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRvci51cGRhdGVCb3VuZGFyaWVz
KHRoaXMuX3Jvb3RSZWNvcmQoKS5jaGlsZHJlbltpXSk7CiAKICAgICAgICAgdGhpcy5fY2FsY3Vs
YXRvci5jYWxjdWxhdGVXaW5kb3coKTsKICAgICB9LApAQCAtNzE4LDExICs2NDYsMTEgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgIF9maWx0ZXJSZWNvcmRz
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgcmVjb3Jkc0luV2luZG93ID0gW107Ci0g
ICAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLl9zdGFydEF0WmVybyA/IG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVTdGFydEF0WmVyb1JlY29yZEZpbHRlcih0aGlzLl9wcmVzZW50YXRpb25Nb2RlbCwg
dGhpcy5fcm9vdFJlY29yZCwgdGhpcy5fc2hvd1Nob3J0RXZlbnRzKQorICAgICAgICB2YXIgZmls
dGVyID0gdGhpcy5fc3RhcnRBdFplcm8gPyBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU3RhcnRB
dFplcm9SZWNvcmRGaWx0ZXIodGhpcy5fcHJlc2VudGF0aW9uTW9kZWwsIHRoaXMuX3Jvb3RSZWNv
cmQoKSwgdGhpcy5fc2hvd1Nob3J0RXZlbnRzKQogICAgICAgICAgICAgOiBuZXcgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkRmlsdGVyKHRoaXMuX2NhbGN1bGF0b3IsIHRoaXMuX3Nob3dTaG9y
dEV2ZW50cyk7Ci0gICAgICAgIHRoaXMuX3Jvb3RSZWNvcmQuX3Zpc2libGVSZWNvcmRzQ291bnQg
PSAwOworICAgICAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDsKIAotICAgICAgICB2
YXIgc3RhY2sgPSBbe2NoaWxkcmVuOiB0aGlzLl9yb290UmVjb3JkLmNoaWxkcmVuLCBpbmRleDog
MCwgcGFyZW50SXNDb2xsYXBzZWQ6IGZhbHNlfV07CisgICAgICAgIHZhciBzdGFjayA9IFt7Y2hp
bGRyZW46IHRoaXMuX3Jvb3RSZWNvcmQoKS5jaGlsZHJlbiwgaW5kZXg6IDAsIHBhcmVudElzQ29s
bGFwc2VkOiBmYWxzZX1dOwogICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7CiAgICAgICAg
ICAgICB2YXIgZW50cnkgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTsKICAgICAgICAgICAgIHZh
ciByZWNvcmRzID0gZW50cnkuY2hpbGRyZW47CkBAIC03MzEsNyArNjU5LDcgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICArK2VudHJ5
LmluZGV4OwogCiAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIuYWNjZXB0KHJlY29yZCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICsrdGhpcy5fcm9vdFJlY29yZC5fdmlzaWJsZVJlY29yZHND
b3VudDsKKyAgICAgICAgICAgICAgICAgICAgICsrdGhpcy5fdmlzaWJsZVJlY29yZHNDb3VudDsK
ICAgICAgICAgICAgICAgICAgICAgICsrcmVjb3JkLnBhcmVudC5faW52aXNpYmxlQ2hpbGRyZW5D
b3VudDsKICAgICAgICAgICAgICAgICAgICAgIGlmICghZW50cnkucGFyZW50SXNDb2xsYXBzZWQp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3Jkc0luV2luZG93LnB1c2gocmVjb3JkKTsK
QEAgLTc2OCw3ICs2OTYsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
LSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVjb3Jkcyh0aGlzLl9y
b290UmVjb3JkLmNoaWxkcmVuLCByZWNvcmRGaW5kZXIpOworICAgICAgICBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQYW5lbC5mb3JBbGxSZWNvcmRzKHRoaXMuX3Jvb3RSZWNvcmQoKS5jaGlsZHJlbiwg
cmVjb3JkRmluZGVyKTsKIAogICAgICAgICAvLyBUaGUgcmVjb3JkIGVuZHMgYmVmb3JlIHRoZSB3
aW5kb3cgbGVmdCBib3VuZCBzbyBzY3JvbGwgdG8gdGhlIHRvcC4KICAgICAgICAgaWYgKCFyZWNv
cmRUb1JldmVhbCkgewpAQCAtNzc3LDcgKzcwNSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEV4cGFuZCBhbGwgYW5j
ZXN0b3JzLgotICAgICAgICBmb3IgKHZhciBwYXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJlbnQ7
IHBhcmVudCAhPT0gdGhpcy5fcm9vdFJlY29yZDsgcGFyZW50ID0gcGFyZW50LnBhcmVudCkKKyAg
ICAgICAgZm9yICh2YXIgcGFyZW50ID0gcmVjb3JkVG9SZXZlYWwucGFyZW50OyBwYXJlbnQgIT09
IHRoaXMuX3Jvb3RSZWNvcmQoKTsgcGFyZW50ID0gcGFyZW50LnBhcmVudCkKICAgICAgICAgICAg
IHBhcmVudC5jb2xsYXBzZWQgPSBmYWxzZTsKICAgICAgICAgdmFyIHJlY29yZHNJbldpbmRvdyA9
IHRoaXMuX2ZpbHRlclJlY29yZHMoKTsKICAgICAgICAgdmFyIGluZGV4ID0gcmVjb3Jkc0luV2lu
ZG93LmluZGV4T2YocmVjb3JkVG9SZXZlYWwpOwpAQCAtOTExLDcgKzgzOSw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0
aW9uKGFuY2hvciwgcG9wb3ZlcikKICAgICB7CiAgICAgICAgIHZhciByZWNvcmQgPSBhbmNob3Iu
cm93Ll9yZWNvcmQ7Ci0gICAgICAgIHBvcG92ZXIuc2hvdyhyZWNvcmQuX2dlbmVyYXRlUG9wdXBD
b250ZW50KHRoaXMuX2NhbGN1bGF0b3IsIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhdGVnb3Jp
ZXMpLCBhbmNob3IpOworICAgICAgICBwb3BvdmVyLnNob3cocmVjb3JkLmdlbmVyYXRlUG9wdXBD
b250ZW50KHRoaXMuX2NhbGN1bGF0b3IpLCBhbmNob3IpOwogICAgIH0sCiAKICAgICBfY2xvc2VS
ZWNvcmREZXRhaWxzOiBmdW5jdGlvbigpCkBAIC05NDYsOSArODc0LDEwIEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZUNhbGN1bGF0b3IucHJvdG90eXBlID0gewogICAgIGNvbXB1dGVCYXJHcmFwaFBl
cmNlbnRhZ2VzOiBmdW5jdGlvbihyZWNvcmQpCiAgICAgewogICAgICAgICB2YXIgc3RhcnQgPSAo
cmVjb3JkLnN0YXJ0VGltZSAtIHRoaXMubWluaW11bUJvdW5kYXJ5KSAvIHRoaXMuYm91bmRhcnlT
cGFuICogMTAwOwotICAgICAgICB2YXIgZW5kID0gKHJlY29yZC5zdGFydFRpbWUgKyByZWNvcmQu
X3NlbGZUaW1lIC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAx
MDA7Ci0gICAgICAgIHZhciBlbmRXaXRoQ2hpbGRyZW4gPSAocmVjb3JkLl9sYXN0Q2hpbGRFbmRU
aW1lIC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4gKiAxMDA7Ci0g
ICAgICAgIHJldHVybiB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCwgZW5kV2l0aENoaWxkcmVuOiBl
bmRXaXRoQ2hpbGRyZW59OworICAgICAgICB2YXIgZW5kID0gKHJlY29yZC5zdGFydFRpbWUgKyBy
ZWNvcmQuc2VsZlRpbWUgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeSkgLyB0aGlzLmJvdW5kYXJ5U3Bh
biAqIDEwMDsKKyAgICAgICAgdmFyIGVuZFdpdGhDaGlsZHJlbiA9IChyZWNvcmQubGFzdENoaWxk
RW5kVGltZSAtIHRoaXMubWluaW11bUJvdW5kYXJ5KSAvIHRoaXMuYm91bmRhcnlTcGFuICogMTAw
OworICAgICAgICB2YXIgY3B1V2lkdGggPSByZWNvcmQuY3B1VGltZSAvIHRoaXMuYm91bmRhcnlT
cGFuICogMTAwOworICAgICAgICByZXR1cm4ge3N0YXJ0OiBzdGFydCwgZW5kOiBlbmQsIGVuZFdp
dGhDaGlsZHJlbjogZW5kV2l0aENoaWxkcmVuLCBjcHVXaWR0aDogY3B1V2lkdGh9OwogICAgIH0s
CiAKICAgICBjb21wdXRlQmFyR3JhcGhXaW5kb3dQb3NpdGlvbjogZnVuY3Rpb24ocmVjb3JkLCBj
bGllbnRXaWR0aCkKQEAgLTk2MSw5ICs4OTAsMTAgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2Fs
Y3VsYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBsZWZ0ID0gcGVyY2VudGFnZXMuc3Rh
cnQgLyAxMDAgKiB3b3JraW5nQXJlYTsKICAgICAgICAgdmFyIHdpZHRoID0gKHBlcmNlbnRhZ2Vz
LmVuZCAtIHBlcmNlbnRhZ2VzLnN0YXJ0KSAvIDEwMCAqIHdvcmtpbmdBcmVhICsgbWluV2lkdGg7
CiAgICAgICAgIHZhciB3aWR0aFdpdGhDaGlsZHJlbiA9ICAocGVyY2VudGFnZXMuZW5kV2l0aENo
aWxkcmVuIC0gcGVyY2VudGFnZXMuc3RhcnQpIC8gMTAwICogd29ya2luZ0FyZWE7CisgICAgICAg
IHZhciBjcHVXaWR0aCA9IHBlcmNlbnRhZ2VzLmNwdVdpZHRoIC8gMTAwICogd29ya2luZ0FyZWEg
KyBtaW5XaWR0aDsKICAgICAgICAgaWYgKHBlcmNlbnRhZ2VzLmVuZFdpdGhDaGlsZHJlbiA+IHBl
cmNlbnRhZ2VzLmVuZCkKICAgICAgICAgICAgIHdpZHRoV2l0aENoaWxkcmVuICs9IGJvcmRlcldp
ZHRoICsgbWluV2lkdGg7Ci0gICAgICAgIHJldHVybiB7bGVmdDogbGVmdCwgd2lkdGg6IHdpZHRo
LCB3aWR0aFdpdGhDaGlsZHJlbjogd2lkdGhXaXRoQ2hpbGRyZW59OworICAgICAgICByZXR1cm4g
e2xlZnQ6IGxlZnQsIHdpZHRoOiB3aWR0aCwgd2lkdGhXaXRoQ2hpbGRyZW46IHdpZHRoV2l0aENo
aWxkcmVuLCBjcHVXaWR0aDogY3B1V2lkdGh9OwogICAgIH0sCiAKICAgICBjYWxjdWxhdGVXaW5k
b3c6IGZ1bmN0aW9uKCkKQEAgLTk4Nyw3ICs5MTcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVD
YWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBjb25zdCBtaW5pbXVtVGltZUZyYW1l
ID0gMC4xOwogICAgICAgICBjb25zdCBtaW5pbXVtRGVsdGFGb3JaZXJvU2l6ZUV2ZW50cyA9IDAu
MDE7Ci0gICAgICAgIHZhciB1cHBlckJvdW5kID0gTWF0aC5tYXgocmVjb3JkLl9sYXN0Q2hpbGRF
bmRUaW1lICsgbWluaW11bURlbHRhRm9yWmVyb1NpemVFdmVudHMsIGxvd2VyQm91bmQgKyBtaW5p
bXVtVGltZUZyYW1lKTsKKyAgICAgICAgdmFyIHVwcGVyQm91bmQgPSBNYXRoLm1heChyZWNvcmQu
bGFzdENoaWxkRW5kVGltZSArIG1pbmltdW1EZWx0YUZvclplcm9TaXplRXZlbnRzLCBsb3dlckJv
dW5kICsgbWluaW11bVRpbWVGcmFtZSk7CiAgICAgICAgIGlmICh0aGlzLl9hYnNvbHV0ZU1heGlt
dW1Cb3VuZGFyeSA9PT0gLTEgfHwgdXBwZXJCb3VuZCA+IHRoaXMuX2Fic29sdXRlTWF4aW11bUJv
dW5kYXJ5KQogICAgICAgICAgICAgdGhpcy5fYWJzb2x1dGVNYXhpbXVtQm91bmRhcnkgPSB1cHBl
ckJvdW5kOwogICAgIH0sCkBAIC0xMDE2LDcgKzk0Niw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVN0YXJ0QXRaZXJvQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB7CiAg
ICAgICAgICAgICBzdGFydDogcmVjb3JkLl9pbml0aWF0b3JPZmZzZXQgKiBzY2FsZSwKICAgICAg
ICAgICAgIGVuZDogKHJlY29yZC5faW5pdGlhdG9yT2Zmc2V0ICsgcmVjb3JkLmVuZFRpbWUgLSBy
ZWNvcmQuc3RhcnRUaW1lKSAqIHNjYWxlLAotICAgICAgICAgICAgZW5kV2l0aENoaWxkcmVuOiAo
cmVjb3JkLl9pbml0aWF0b3JPZmZzZXQgKyByZWNvcmQuX2xhc3RDaGlsZEVuZFRpbWUgLSByZWNv
cmQuc3RhcnRUaW1lKSAqIHNjYWxlCisgICAgICAgICAgICBlbmRXaXRoQ2hpbGRyZW46IChyZWNv
cmQuX2luaXRpYXRvck9mZnNldCArIHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1lIC0gcmVjb3JkLnN0
YXJ0VGltZSkgKiBzY2FsZQogICAgICAgICB9OwogICAgIH0sCiAKQEAgLTExNDAsNiArMTA3MCwx
MSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdyA9IGZ1bmN0aW9uKGdyYXBo
Q29udGFpbmVyLCBzY2hlZHVsZVJlZnJlc2gpCiAgICAgdGhpcy5fYmFyV2l0aENoaWxkcmVuRWxl
bWVudC5yb3cgPSB0aGlzOwogICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2JhcldpdGhDaGlsZHJlbkVsZW1lbnQpOwogCisgICAgdGhpcy5fYmFyQ3B1RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHRoaXMuX2JhckNwdUVsZW1lbnQu
Y2xhc3NOYW1lID0gInRpbWVsaW5lLWdyYXBoLWJhciBjcHUiCisgICAgdGhpcy5fYmFyQ3B1RWxl
bWVudC5yb3cgPSB0aGlzOworICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2JhckNwdUVsZW1lbnQpOworCiAgICAgdGhpcy5fYmFyRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckVsZW1lbnQuY2xhc3NOYW1lID0gInRp
bWVsaW5lLWdyYXBoLWJhciI7CiAgICAgdGhpcy5fYmFyRWxlbWVudC5yb3cgPSB0aGlzOwpAQCAt
MTE2MSw2ICsxMDk2LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9iYXJXaXRoQ2hpbGRyZW5FbGVtZW50LnN0eWxlLndp
ZHRoID0gYmFyUG9zaXRpb24ud2lkdGhXaXRoQ2hpbGRyZW4gKyAicHgiOwogICAgICAgICB0aGlz
Ll9iYXJFbGVtZW50LnN0eWxlLmxlZnQgPSBiYXJQb3NpdGlvbi5sZWZ0ICsgZXhwYW5kT2Zmc2V0
ICsgInB4IjsKICAgICAgICAgdGhpcy5fYmFyRWxlbWVudC5zdHlsZS53aWR0aCA9ICBiYXJQb3Np
dGlvbi53aWR0aCArICJweCI7CisgICAgICAgIHRoaXMuX2JhckNwdUVsZW1lbnQuc3R5bGUubGVm
dCA9IGJhclBvc2l0aW9uLmxlZnQgKyBleHBhbmRPZmZzZXQgKyAicHgiOworICAgICAgICB0aGlz
Ll9iYXJDcHVFbGVtZW50LnN0eWxlLndpZHRoID0gYmFyUG9zaXRpb24uY3B1V2lkdGggKyAicHgi
OwogICAgICAgICB0aGlzLl9leHBhbmRFbGVtZW50Ll91cGRhdGUocmVjb3JkLCBpbmRleCwgYmFy
UG9zaXRpb24pOwogICAgIH0sCiAKQEAgLTEyMDAsMzYyICsxMTM3LDYgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwuZm9yQWxsUmVjb3JkcyA9IGZ1bmN0aW9uKHJlY29yZHNBcnJheSwgY2Fs
bGJhY2spCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICovCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5Gb3JtYXR0ZWRSZWNvcmQgPSBmdW5jdGlvbihyZWNvcmQsIHBhcmVudFJlY29yZCwgcGFu
ZWwsIGxpbmtpZmllciwgc2NyaXB0RGV0YWlscykKLXsKLSAgICB0aGlzLl9saW5raWZpZXIgPSBs
aW5raWZpZXI7Ci0gICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZTsKLSAgICB2YXIgc3R5bGUgPSBwYW5lbC5fcmVjb3JkU3R5bGVzW3JlY29y
ZC50eXBlXTsKLSAgICB0aGlzLnBhcmVudCA9IHBhcmVudFJlY29yZDsKLSAgICBpZiAocGFyZW50
UmVjb3JkKQotICAgICAgICBwYXJlbnRSZWNvcmQuY2hpbGRyZW4ucHVzaCh0aGlzKTsKLSAgICB0
aGlzLmNhdGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7Ci0gICAgdGhpcy50aXRsZSA9IHN0eWxlLnRp
dGxlOwotICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZSAvIDEwMDA7Ci0gICAg
dGhpcy5kYXRhID0gcmVjb3JkLmRhdGE7Ci0gICAgdGhpcy50eXBlID0gcmVjb3JkLnR5cGU7Ci0g
ICAgdGhpcy5lbmRUaW1lID0gKHR5cGVvZiByZWNvcmQuZW5kVGltZSAhPT0gInVuZGVmaW5lZCIp
ID8gcmVjb3JkLmVuZFRpbWUgLyAxMDAwIDogdGhpcy5zdGFydFRpbWU7Ci0gICAgdGhpcy5fc2Vs
ZlRpbWUgPSB0aGlzLmVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZTsKLSAgICB0aGlzLl9sYXN0Q2hp
bGRFbmRUaW1lID0gdGhpcy5lbmRUaW1lOwotICAgIHRoaXMuX2luaXRpYXRvck9mZnNldCA9IChw
YXJlbnRSZWNvcmQgJiYgcGFyZW50UmVjb3JkICE9PSBwYW5lbC5fcm9vdFJlY29yZCkgPwotICAg
ICAgICBwYXJlbnRSZWNvcmQuX2luaXRpYXRvck9mZnNldCArIHRoaXMuc3RhcnRUaW1lIC0gcGFy
ZW50UmVjb3JkLnN0YXJ0VGltZSA6IDA7Ci0KLSAgICBpZiAocmVjb3JkLnN0YWNrVHJhY2UgJiYg
cmVjb3JkLnN0YWNrVHJhY2UubGVuZ3RoKQotICAgICAgICB0aGlzLnN0YWNrVHJhY2UgPSByZWNv
cmQuc3RhY2tUcmFjZTsKLSAgICB0aGlzLnRvdGFsSGVhcFNpemUgPSByZWNvcmQudG90YWxIZWFw
U2l6ZTsKLSAgICB0aGlzLnVzZWRIZWFwU2l6ZSA9IHJlY29yZC51c2VkSGVhcFNpemU7Ci0gICAg
aWYgKHJlY29yZC5kYXRhICYmIHJlY29yZC5kYXRhWyJ1cmwiXSkKLSAgICAgICAgdGhpcy51cmwg
PSByZWNvcmQuZGF0YVsidXJsIl07Ci0gICAgaWYgKHNjcmlwdERldGFpbHMpIHsKLSAgICAgICAg
dGhpcy5zY3JpcHROYW1lID0gc2NyaXB0RGV0YWlscy5zY3JpcHROYW1lOwotICAgICAgICB0aGlz
LnNjcmlwdExpbmUgPSBzY3JpcHREZXRhaWxzLnNjcmlwdExpbmU7Ci0gICAgfQotICAgIC8vIE1h
a2UgcmVzb3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1ZXN0IHdhcyBzZW50OyBt
YWtlIGZpbmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNwb25zZSByZWNlaXZlZC4KLSAgICBpZiAo
cmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKLSAgICAg
ICAgcGFuZWwuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YVsicmVxdWVzdElkIl1dID0g
dGhpczsKLSAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5TY2hlZHVs
ZVJlc291cmNlUmVxdWVzdCkgewotICAgICAgICBwYW5lbC5fc2NoZWR1bGVkUmVzb3VyY2VSZXF1
ZXN0c1tyZWNvcmQuZGF0YVsidXJsIl1dID0gdGhpczsKLSAgICB9IGVsc2UgaWYgKHJlY29yZC50
eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSkgewotICAgICAgICB2
YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSBwYW5lbC5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5k
YXRhWyJyZXF1ZXN0SWQiXV07Ci0gICAgICAgIGlmIChzZW5kUmVxdWVzdFJlY29yZCkgeyAvLyBG
YWxzZSBpZiB3ZSBzdGFydGVkIGluc3RydW1lbnRhdGlvbiBpbiB0aGUgbWlkZGxlIG9mIHJlcXVl
c3QuCi0gICAgICAgICAgICB0aGlzLnVybCA9IHNlbmRSZXF1ZXN0UmVjb3JkLnVybDsKLSAgICAg
ICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgcmVzb3VyY2UgaW4gdGhlIGNvbGxlY3Rpb24sIHJl
Y2FsY3VsYXRlIGRldGFpbHMgaW4gb3JkZXIgdG8gZGlzcGxheSBzaG9ydCB1cmwuCi0gICAgICAg
ICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVmcmVzaERldGFpbHMoKTsKLSAgICAgICAgICAgIGlm
IChzZW5kUmVxdWVzdFJlY29yZC5wYXJlbnQgIT09IHBhbmVsLl9yb290UmVjb3JkICYmIHNlbmRS
ZXF1ZXN0UmVjb3JkLnBhcmVudC50eXBlID09PSByZWNvcmRUeXBlcy5TY2hlZHVsZVJlc291cmNl
UmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5wYXJlbnQuX3JlZnJl
c2hEZXRhaWxzKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBy
ZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0YSB8fCByZWNvcmQudHlwZSA9PT0gcmVjb3Jk
VHlwZXMuUmVzb3VyY2VGaW5pc2gpIHsKLSAgICAgICAgdmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0g
cGFuZWwuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YVsicmVxdWVzdElkIl1dOwotICAg
ICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIC8vIEZhbHNlIGZvciBtYWluIHJlc291cmNlLgot
ICAgICAgICAgICAgdGhpcy51cmwgPSBzZW5kUmVxdWVzdFJlY29yZC51cmw7Ci0gICAgfSBlbHNl
IGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuVGltZXJJbnN0YWxsKSB7Ci0gICAgICAg
IHRoaXMudGltZW91dCA9IHJlY29yZC5kYXRhWyJ0aW1lb3V0Il07Ci0gICAgICAgIHRoaXMuc2lu
Z2xlU2hvdCA9IHJlY29yZC5kYXRhWyJzaW5nbGVTaG90Il07Ci0gICAgICAgIHBhbmVsLl90aW1l
clJlY29yZHNbcmVjb3JkLmRhdGFbInRpbWVySWQiXV0gPSB0aGlzOwotICAgIH0gZWxzZSBpZiAo
cmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlRpbWVyRmlyZSkgewotICAgICAgICB2YXIgdGlt
ZXJJbnN0YWxsZWRSZWNvcmQgPSBwYW5lbC5fdGltZXJSZWNvcmRzW3JlY29yZC5kYXRhWyJ0aW1l
cklkIl1dOwotICAgICAgICBpZiAodGltZXJJbnN0YWxsZWRSZWNvcmQpIHsKLSAgICAgICAgICAg
IHRoaXMuY2FsbFNpdGVTdGFja1RyYWNlID0gdGltZXJJbnN0YWxsZWRSZWNvcmQuc3RhY2tUcmFj
ZTsKLSAgICAgICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnRpbWVv
dXQ7Ci0gICAgICAgICAgICB0aGlzLnNpbmdsZVNob3QgPSB0aW1lckluc3RhbGxlZFJlY29yZC5z
aW5nbGVTaG90OwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVj
b3JkVHlwZXMuUmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7Ci0gICAgICAgIHBhbmVsLl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVSZWNvcmRzW3JlY29yZC5kYXRhWyJpZCJdXSA9IHRoaXM7Ci0gICAgfSBl
bHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuRmlyZUFuaW1hdGlvbkZyYW1lKSB7
Ci0gICAgICAgIHZhciByZXF1ZXN0QW5pbWF0aW9uUmVjb3JkID0gcGFuZWwuX3JlcXVlc3RBbmlt
YXRpb25GcmFtZVJlY29yZHNbcmVjb3JkLmRhdGFbImlkIl1dOwotICAgICAgICBpZiAocmVxdWVz
dEFuaW1hdGlvblJlY29yZCkKLSAgICAgICAgICAgIHRoaXMuY2FsbFNpdGVTdGFja1RyYWNlID0g
cmVxdWVzdEFuaW1hdGlvblJlY29yZC5zdGFja1RyYWNlOwotICAgIH0KLSAgICB0aGlzLl9yZWZy
ZXNoRGV0YWlscygpOwotfQotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRS
ZWNvcmQucHJvdG90eXBlID0gewotICAgIGlzTG9uZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuICh0aGlzLl9sYXN0Q2hpbGRFbmRUaW1lIC0gdGhpcy5zdGFydFRpbWUpID4gV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQ7Ci0gICAgfSwKLQot
ICAgIGdldCBjaGlsZHJlbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2NoaWxkcmVuKQot
ICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2No
aWxkcmVuOwotICAgIH0sCi0KLSAgICBjb250YWluc1RpbWU6IGZ1bmN0aW9uKHRpbWUpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5zdGFydFRpbWUgPD0gdGltZSAmJiB0aW1lIDw9IHRoaXMu
ZW5kVGltZTsKLSAgICB9LAotCi0gICAgX2dlbmVyYXRlQWdncmVnYXRlZEluZm86IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwotICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1hZ2dyZWdhdGVkLWluZm8i
OwotICAgICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLl9hZ2dyZWdhdGVkU3RhdHMpIHsKLSAg
ICAgICAgICAgIHZhciBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
ICAgICAgICAgbGFiZWwuY2xhc3NOYW1lID0gInRpbWVsaW5lLWFnZ3JlZ2F0ZWQtY2F0ZWdvcnkg
dGltZWxpbmUtIiArIGluZGV4OwotICAgICAgICAgICAgY2VsbC5hcHBlbmRDaGlsZChsYWJlbCk7
Ci0gICAgICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
LSAgICAgICAgICAgIHRleHQudGV4dENvbnRlbnQgPSBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRo
aXMuX2FnZ3JlZ2F0ZWRTdGF0c1tpbmRleF0sIHRydWUpOwotICAgICAgICAgICAgY2VsbC5hcHBl
bmRDaGlsZCh0ZXh0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAot
Ci0gICAgX2dlbmVyYXRlUG9wdXBDb250ZW50OiBmdW5jdGlvbihjYWxjdWxhdG9yLCBjYXRlZ29y
aWVzKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnRIZWxwZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyKHRoaXMudGl0bGUpOwotCi0gICAgICAg
IGlmICh0aGlzLl9jaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAg
ICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
ZWxmIFRpbWUiKSwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9zZWxmVGltZSwgdHJ1ZSkp
OwotICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFnZ3JlZ2F0ZWQgVGltZSIpLCB0aGlzLl9nZW5lcmF0ZUFnZ3JlZ2F0ZWRJ
bmZvKCkpOwotICAgICAgICB9Ci0gICAgICAgIHZhciB0ZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCIlcyAoYXQgJXMpIiwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9sYXN0Q2hpbGRF
bmRUaW1lIC0gdGhpcy5zdGFydFRpbWUsIHRydWUpLAotICAgICAgICAgICAgY2FsY3VsYXRvci5m
b3JtYXRWYWx1ZSh0aGlzLnN0YXJ0VGltZSAtIGNhbGN1bGF0b3IubWluaW11bUJvdW5kYXJ5KSk7
Ci0gICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJEdXJhdGlvbiIpLCB0ZXh0KTsKLQotICAgICAgICBjb25zdCByZWNvcmRUeXBlcyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7Ci0KLSAgICAgICAgc3dpdGNoICh0
aGlzLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuR0NFdmVudDoKLSAgICAg
ICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29sbGVjdGVkIiksIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuZGF0YVsidXNlZEhl
YXBTaXplRGVsdGEiXSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSByZWNvcmRUeXBlcy5UaW1lckluc3RhbGw6Ci0gICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVz
LlRpbWVyRmlyZToKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuVGltZXJSZW1vdmU6Ci0g
ICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlRpbWVyIElEIiksIHRoaXMuZGF0YVsidGltZXJJZCJdKTsKLSAgICAgICAgICAg
ICAgICBpZiAodHlwZW9mIHRoaXMudGltZW91dCA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlRpbWVvdXQiKSwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLnRpbWVvdXQgLyAxMDAw
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXRzIiksICF0aGlzLnNpbmdsZVNob3QpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgcmVj
b3JkVHlwZXMuRmlyZUFuaW1hdGlvbkZyYW1lOgotICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxw
ZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxsYmFjayBJRCIpLCB0
aGlzLmRhdGFbImlkIl0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSByZWNvcmRUeXBlcy5GdW5jdGlvbkNhbGw6Ci0gICAgICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIiksIHRo
aXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q6Ci0gICAg
ICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3Q6Ci0gICAgICAgICAg
ICBjYXNlIHJlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlOgotICAgICAgICAgICAg
Y2FzZSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0YToKLSAgICAgICAgICAgIGNhc2Ug
cmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2g6Ci0gICAgICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIiksIHRo
aXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnVybCkpOwotICAgICAgICAgICAgICAgIGlmICh0aGlz
LmRhdGFbInJlcXVlc3RNZXRob2QiXSkKLSAgICAgICAgICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgTWV0aG9kIiks
IHRoaXMuZGF0YVsicmVxdWVzdE1ldGhvZCJdKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZW9m
IHRoaXMuZGF0YVsic3RhdHVzQ29kZSJdID09PSAibnVtYmVyIikKLSAgICAgICAgICAgICAgICAg
ICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0
YXR1cyBDb2RlIiksIHRoaXMuZGF0YVsic3RhdHVzQ29kZSJdKTsKLSAgICAgICAgICAgICAgICBp
ZiAodGhpcy5kYXRhWyJtaW1lVHlwZSJdKQotICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVs
cGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTUlNRSBUeXBlIiksIHRo
aXMuZGF0YVsibWltZVR5cGUiXSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIHJlY29yZFR5cGVzLkV2YWx1YXRlU2NyaXB0OgotICAgICAgICAgICAgICAgIGlmICh0
aGlzLmRhdGEgJiYgdGhpcy51cmwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIu
X2FwcGVuZEVsZW1lbnRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHQiKSwgdGhpcy5f
bGlua2lmeUxvY2F0aW9uKHRoaXMudXJsLCB0aGlzLmRhdGFbImxpbmVOdW1iZXIiXSkpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5QYWludDoK
LSAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTG9jYXRpb24iKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoJWQsICVkKSIs
IHRoaXMuZGF0YVsieCJdLCB0aGlzLmRhdGFbInkiXSkpOwotICAgICAgICAgICAgICAgIGNvbnRl
bnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaW1lbnNpb25z
IiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgw5cgJWQiLCB0aGlzLmRhdGFbIndpZHRoIl0s
IHRoaXMuZGF0YVsiaGVpZ2h0Il0pKTsKLSAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuUmVj
YWxjdWxhdGVTdHlsZXM6IC8vIFdlIGRvbid0IHdhbnQgdG8gc2VlIGRlZmF1bHQgZGV0YWlscy4K
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXMuZGV0YWlscykKLSAgICAgICAgICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRldGFpbHMiKSwgdGhpcy5k
ZXRhaWxzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICh0aGlzLnNjcmlwdE5hbWUgJiYgdGhpcy50eXBlICE9PSByZWNvcmRUeXBlcy5GdW5jdGlvbkNh
bGwpCi0gICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50Um93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRnVuY3Rpb24gQ2FsbCIpLCB0aGlzLl9saW5raWZ5U2NyaXB0TG9jYXRp
b24oKSk7Ci0KLSAgICAgICAgaWYgKHRoaXMudXNlZEhlYXBTaXplKQotICAgICAgICAgICAgY29u
dGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVzZWQgSGVh
cCBTaXplIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgb2YgJXMiLCBOdW1iZXIuYnl0ZXNU
b1N0cmluZyh0aGlzLnVzZWRIZWFwU2l6ZSksIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMudG90
YWxIZWFwU2l6ZSkpKTsKLQotICAgICAgICBpZiAodGhpcy5jYWxsU2l0ZVN0YWNrVHJhY2UgJiYg
dGhpcy5jYWxsU2l0ZVN0YWNrVHJhY2UubGVuZ3RoKQotICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kU3RhY2tUcmFjZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGwgU2l0ZSBzdGFj
ayIpLCB0aGlzLmNhbGxTaXRlU3RhY2tUcmFjZSwgdGhpcy5fbGlua2lmeUNhbGxGcmFtZS5iaW5k
KHRoaXMpKTsKLQotICAgICAgICBpZiAodGhpcy5zdGFja1RyYWNlKQotICAgICAgICAgICAgY29u
dGVudEhlbHBlci5fYXBwZW5kU3RhY2tUcmFjZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGwg
U3RhY2siKSwgdGhpcy5zdGFja1RyYWNlLCB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lLmJpbmQodGhp
cykpOwotCi0gICAgICAgIHJldHVybiBjb250ZW50SGVscGVyLl9jb250ZW50VGFibGU7Ci0gICAg
fSwKLQotICAgIF9yZWZyZXNoRGV0YWlsczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5kZXRhaWxzID0gdGhpcy5fZ2V0UmVjb3JkRGV0YWlscygpOwotICAgIH0sCi0KLSAgICBfZ2V0
UmVjb3JkRGV0YWlsczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0aGlzLnR5
cGUpIHsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3Jk
VHlwZS5HQ0V2ZW50OgotICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIiVzIGNvbGxlY3RlZCIsIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuZGF0YVsidXNlZEhl
YXBTaXplRGVsdGEiXSkpOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVN
b2RlbC5SZWNvcmRUeXBlLlRpbWVyRmlyZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
bGlua2lmeVNjcmlwdExvY2F0aW9uKHRoaXMuZGF0YVsidGltZXJJZCJdKTsKLSAgICAgICAgICAg
IGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGw6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbigpOwot
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkZp
cmVBbmltYXRpb25GcmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeVNj
cmlwdExvY2F0aW9uKHRoaXMuZGF0YVsiaWQiXSk7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5kYXRhID8gdGhpcy5kYXRhWyJ0eXBlIl0gOiBudWxsOwotICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlBhaW50Ogot
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbIndpZHRoIl0gKyAiXHUyMDA5XHUwMGQ3
XHUyMDA5IiArIHRoaXMuZGF0YVsiaGVpZ2h0Il07Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuVGltZXJJbnN0YWxsOgotICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlOgot
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5VG9wQ2FsbEZyYW1lKHRoaXMuZGF0
YVsidGltZXJJZCJdKTsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZS5SZXF1ZXN0QW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuQ2FuY2VsQW5pbWF0aW9uRnJhbWU6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlUb3BDYWxsRnJhbWUodGhpcy5k
YXRhWyJpZCJdKTsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwu
UmVjb3JkVHlwZS5QYXJzZUhUTUw6Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZU1vZGVsLlJlY29yZFR5cGUuUmVjYWxjdWxhdGVTdHlsZXM6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2xpbmtpZnlUb3BDYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy51cmwgPyB0aGlzLl9saW5raWZ5TG9jYXRpb24odGhpcy51
cmwsIHRoaXMuZGF0YVsibGluZU51bWJlciJdLCAwKSA6IG51bGw7Ci0gICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuWEhSUmVhZHlTdGF0ZUNoYW5n
ZToKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlw
ZS5YSFJMb2FkOgotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5S
ZWNvcmRUeXBlLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0OgotICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3Q6Ci0g
ICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUmVz
b3VyY2VSZWNlaXZlZERhdGE6Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1vZGVsLlJlY29yZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6Ci0gICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUmVzb3VyY2VGaW5pc2g6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTCh0
aGlzLnVybCk7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJl
Y29yZFR5cGUuVGltZVN0YW1wOgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbIm1l
c3NhZ2UiXTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9
IHVybAotICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbGluZU51bWJlcgotICAgICAqIEBwYXJhbSB7
bnVtYmVyPX0gY29sdW1uTnVtYmVyCi0gICAgICovCi0gICAgX2xpbmtpZnlMb2NhdGlvbjogZnVu
Y3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewotICAgICAgICAvLyBG
SVhNRSg2MjcyNSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMgYXJlIG9uZS1iYXNl
ZC4KLSAgICAgICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5lTnVtYmVyIC0gMSA6IGxp
bmVOdW1iZXI7Ci0gICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlciA/IGNvbHVtbk51
bWJlciAtIDEgOiAwOwotICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlMb2Nh
dGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgInRpbWVsaW5lLWRldGFpbHMiKTsK
LSAgICB9LAotCi0gICAgX2xpbmtpZnlDYWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24oY2FsbEZyYW1lLnVybCwg
Y2FsbEZyYW1lLmxpbmVOdW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIpOwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZz19IGRlZmF1bHRWYWx1ZQotICAgICAqLwot
ICAgIF9saW5raWZ5VG9wQ2FsbEZyYW1lOiBmdW5jdGlvbihkZWZhdWx0VmFsdWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNhbGxGcmFtZSh0
aGlzLnN0YWNrVHJhY2VbMF0pIDogZGVmYXVsdFZhbHVlOwotICAgIH0sCi0KLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge3N0cmluZz19IGRlZmF1bHRWYWx1ZQotICAgICAqLwotICAgIF9saW5raWZ5
U2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKGRlZmF1bHRWYWx1ZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnNjcmlwdE5hbWUgPyB0aGlzLl9saW5raWZ5TG9jYXRpb24odGhpcy5zY3JpcHRO
YW1lLCB0aGlzLnNjcmlwdExpbmUsIDApIDogZGVmYXVsdFZhbHVlOwotICAgIH0sCi0KLSAgICBf
Y2FsY3VsYXRlQWdncmVnYXRlZFN0YXRzOiBmdW5jdGlvbihjYXRlZ29yaWVzKQotICAgIHsKLSAg
ICAgICAgdGhpcy5fYWdncmVnYXRlZFN0YXRzID0ge307Ci0gICAgICAgIGZvciAodmFyIGNhdGVn
b3J5IGluIGNhdGVnb3JpZXMpCi0gICAgICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHNbY2F0
ZWdvcnldID0gMDsKLQotICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW4pIHsKLSAgICAgICAgICAg
IGZvciAodmFyIGluZGV4ID0gdGhpcy5fY2hpbGRyZW4ubGVuZ3RoOyBpbmRleDsgLS1pbmRleCkg
ewotICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuX2NoaWxkcmVuW2luZGV4IC0gMV07
Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykKLSAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fYWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XSArPSBjaGlsZC5f
YWdncmVnYXRlZFN0YXRzW2NhdGVnb3J5XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHNbdGhpcy5jYXRlZ29yeS5uYW1lXSArPSB0aGlzLl9z
ZWxmVGltZTsKLSAgICB9LAotCi0gICAgZ2V0IGFnZ3JlZ2F0ZWRTdGF0cygpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fYWdncmVnYXRlZFN0YXRzOwotICAgIH0KLX0KLQotLyoqCi0gKiBA
Y29uc3RydWN0b3IKLSAqLwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50
SGVscGVyID0gZnVuY3Rpb24odGl0bGUpCi17Ci0gICAgdGhpcy5fY29udGVudFRhYmxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTs7Ci0gICAgdmFyIHRpdGxlQ2VsbCA9IHRoaXMu
X2NyZWF0ZUNlbGwoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAtIERldGFpbHMiLCB0aXRsZSks
ICJ0aW1lbGluZS1kZXRhaWxzLXRpdGxlIik7Ci0gICAgdGl0bGVDZWxsLmNvbFNwYW4gPSAyOwot
ICAgIHZhciB0aXRsZVJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdGl0
bGVSb3cuYXBwZW5kQ2hpbGQodGl0bGVDZWxsKTsKLSAgICB0aGlzLl9jb250ZW50VGFibGUuYXBw
ZW5kQ2hpbGQodGl0bGVSb3cpOwotfQotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1
cENvbnRlbnRIZWxwZXIucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3Ry
aW5nPX0gc3R5bGVOYW1lCi0gICAgICovCi0gICAgX2NyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbnRl
bnQsIHN0eWxlTmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGFiZWwiKTsKLSAgICAgICAgdGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShjb250ZW50KSk7Ci0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGQiKTsKLSAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAidGltZWxpbmUtZGV0YWls
cyI7Ci0gICAgICAgIGlmIChzdHlsZU5hbWUpCi0gICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSAr
PSAiICIgKyBzdHlsZU5hbWU7Ci0gICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb250ZW50Owot
ICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0gICAgX2FwcGVuZFRleHRSb3c6IGZ1bmN0
aW9uKHRpdGxlLCBjb250ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVD
ZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKSk7Ci0gICAgICAgIHJvdy5h
cHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKGNvbnRlbnQsICJ0aW1lbGluZS1kZXRhaWxzLXJv
dy1kYXRhIikpOwotICAgICAgICB0aGlzLl9jb250ZW50VGFibGUuYXBwZW5kQ2hpbGQocm93KTsK
LSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmc9fSB0aXRsZVN0eWxlCi0g
ICAgICovCi0gICAgX2FwcGVuZEVsZW1lbnRSb3c6IGZ1bmN0aW9uKHRpdGxlLCBjb250ZW50LCB0
aXRsZVN0eWxlKQotICAgIHsKLSAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRyIik7Ci0gICAgICAgIHZhciB0aXRsZUNlbGwgPSB0aGlzLl9jcmVhdGVDZWxsKHRpdGxl
LCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKTsKLSAgICAgICAgaWYgKHRpdGxlU3R5bGUp
Ci0gICAgICAgICAgICB0aXRsZUNlbGwuYWRkU3R5bGVDbGFzcyh0aXRsZVN0eWxlKTsKLSAgICAg
ICAgcm93LmFwcGVuZENoaWxkKHRpdGxlQ2VsbCk7Ci0gICAgICAgIHZhciBjZWxsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAidGltZWxp
bmUtZGV0YWlscyI7Ci0gICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoY29udGVudCk7Ci0gICAgICAg
IHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLSAgICAgICAgdGhpcy5fY29udGVudFRhYmxlLmFwcGVu
ZENoaWxkKHJvdyk7Ci0gICAgfSwKLQotICAgIF9hcHBlbmRTdGFja1RyYWNlOiBmdW5jdGlvbih0
aXRsZSwgc3RhY2tUcmFjZSwgY2FsbEZyYW1lTGlua2lmaWVyKQotICAgIHsKLSAgICAgICAgdGhp
cy5fYXBwZW5kVGV4dFJvdygiIiwgIiIpOwotICAgICAgICB2YXIgZnJhbWVzVGFibGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHN0YWNrVHJhY2UubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBzdGFja0ZyYW1lID0g
c3RhY2tUcmFjZVtpXTsKLSAgICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0ciIpOwotICAgICAgICAgICAgcm93LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1kZXRhaWxz
IjsKLSAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKHN0YWNrRnJh
bWUuZnVuY3Rpb25OYW1lID8gc3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUgOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIiksICJ0aW1lbGluZS1mdW5jdGlvbi1uYW1l
IikpOwotICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoIiBAICIp
KTsKLSAgICAgICAgICAgIHZhciBsaW5rQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRk
Iik7Ci0gICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IGNhbGxGcmFtZUxpbmtpZmllcihzdGFj
a0ZyYW1lKTsKLSAgICAgICAgICAgIGxpbmtDZWxsLmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwot
ICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGxpbmtDZWxsKTsKLSAgICAgICAgICAgIGZyYW1l
c1RhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fYXBwZW5k
RWxlbWVudFJvdyh0aXRsZSwgZnJhbWVzVGFibGUsICJ0aW1lbGluZS1zdGFja3RyYWNlLXRpdGxl
Iik7Ci0gICAgfQotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICovCiBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVFeHBhbmRhYmxlRWxlbWVudCA9IGZ1bmN0aW9uKGNvbnRhaW5lcikKIHsKICAgICB0
aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC0xNjA5LDcg
KzExOTAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGaWx0ZXIgPSBmdW5jdGlvbihj
YWxjdWxhdG9yLCBzaG93U2hvcnRFdmVudHMpCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZEZpbHRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmR9IHJlY29yZAorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKICAg
ICAgKi8KICAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7CkBAIC0xNjM5LDcgKzEy
MjAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTdGFydEF0WmVyb1JlY29yZEZpbHRlciA9IGZ1
bmN0aW9uKG1vZGVsLCByb290UmVjb3JkLCBzaG93UwogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVT
dGFydEF0WmVyb1JlY29yZEZpbHRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmR9IHJlY29yZAor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVj
b3JkfSByZWNvcmQKICAgICAgKi8KICAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggNTEyMmU2YjczNGUxMGE4ZTViOTM0
ZjgwZDkwMmYxMTkwZDZmZjg3ZS4uY2E5N2Q0MjE0MDAzNTFmMTY4N2U2MDg4MGRmZjkyMGFlYjQ3
NzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtMzUsNiArMzUsMTAgQEAK
IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogewog
ICAgIHRoaXMuX2NhdGVnb3JpZXMgPSB7fTsKKyAgICB0aGlzLl9hZGRDYXRlZ29yeShuZXcgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnkoImxvYWRpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxvYWRpbmciKSwgInJnYig0NywxMDIsMjM2KSIpKTsKKyAgICB0aGlzLl9hZGRDYXRlZ29y
eShuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnkoInNjcmlwdGluZyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2NyaXB0aW5nIiksICJyZ2IoMTU3LDIzMSwxMTkpIikpOworICAgIHRo
aXMuX2FkZENhdGVnb3J5KG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSgicmVuZGVy
aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5kZXJpbmciKSwgInJnYigxNjQsNjAsMjU1
KSIpKTsKKyAgICB0aGlzLl9saW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKICAgICB0aGlzLnJlc2V0KCk7CiB9CiAKQEAg
LTQzLDkgKzQ3LDU4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkV2
ZW50cyA9IHsKICAgICBDYXRlZ29yeVZpc2liaWxpdHlDaGFuZ2VkOiAiQ2F0ZWdvcnlWaXNpYmls
aXR5Q2hhbmdlZCIKIH0KIAorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwu
c2hvcnRSZWNvcmRUaHJlc2hvbGQgPSAwLjAxNTsKKwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJl
c2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0geworICAgIGNyZWF0ZUZvcm1hdHRlZFJlY29yZDog
ZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNvcmQsIHNjcmlwdERldGFpbHMpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJl
Y29yZCh0aGlzLCByZWNvcmQsIHBhcmVudFJlY29yZCwgc2NyaXB0RGV0YWlscyk7CisgICAgfSwK
KworICAgIF9jcmVhdGVSb290UmVjb3JkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
cm9vdFJlY29yZCA9IHt9OworICAgICAgICByb290UmVjb3JkLmNoaWxkcmVuID0gW107CisgICAg
ICAgIHJvb3RSZWNvcmQuYWdncmVnYXRlZFN0YXRzID0ge307CisgICAgICAgIHJldHVybiByb290
UmVjb3JkOworICAgIH0sCisKKyAgICByb290UmVjb3JkOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fcm9vdFJlY29yZDsKKyAgICB9LAorCiAgICAgcmVzZXQ6IGZ1bmN0
aW9uKCkKICAgICB7CisgICAgICAgIHRoaXMuX2xpbmtpZmllci5yZXNldCgpOworICAgICAgICB0
aGlzLl9yb290UmVjb3JkID0gdGhpcy5fY3JlYXRlUm9vdFJlY29yZCgpOworICAgICAgICB0aGlz
Ll9zZW5kUmVxdWVzdFJlY29yZHMgPSB7fTsKKyAgICAgICAgdGhpcy5fc2NoZWR1bGVkUmVzb3Vy
Y2VSZXF1ZXN0cyA9IHt9OworICAgICAgICB0aGlzLl90aW1lclJlY29yZHMgPSB7fTsKKyAgICAg
ICAgdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lUmVjb3JkcyA9IHt9OworCisgICAgICAgIHRo
aXMuX3Jlc2V0V2luZG93KCk7CisgICAgfSwKKworICAgIGZpbmRQYXJlbnRSZWNvcmQ6IGZ1bmN0
aW9uKHJlY29yZCkKKyAgICB7CisgICAgICAgIHZhciByZWNvcmRUeXBlcyA9IFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7CisgICAgICAgIHZhciBwYXJlbnRSZWNvcmQ7Cisg
ICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlUmVz
cG9uc2UgfHwKKyAgICAgICAgICAgIHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJj
ZUZpbmlzaCB8fAorICAgICAgICAgICAgcmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291
cmNlUmVjZWl2ZWREYXRhKQorICAgICAgICAgICAgcGFyZW50UmVjb3JkID0gdGhpcy5fc2VuZFJl
cXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhWyJyZXF1ZXN0SWQiXV07CisgICAgICAgIGVsc2UgaWYg
KHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lckZpcmUpCisgICAgICAgICAgICBwYXJl
bnRSZWNvcmQgPSB0aGlzLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGFbInRpbWVySWQiXV07Cisg
ICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVNlbmRS
ZXF1ZXN0KQorICAgICAgICAgICAgcGFyZW50UmVjb3JkID0gdGhpcy5fc2NoZWR1bGVkUmVzb3Vy
Y2VSZXF1ZXN0c1tyZWNvcmQuZGF0YVsidXJsIl1dOworICAgICAgICBlbHNlIGlmIChyZWNvcmQu
dHlwZSA9PT0gcmVjb3JkVHlwZXMuRmlyZUFuaW1hdGlvbkZyYW1lKQorICAgICAgICAgICAgcGFy
ZW50UmVjb3JkID0gdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lUmVjb3Jkc1tyZWNvcmQuZGF0
YVsiaWQiXV07CisgICAgICAgIHJldHVybiBwYXJlbnRSZWNvcmQ7CisgICAgfSwKKworICAgIF9y
ZXNldFdpbmRvdzogZnVuY3Rpb24oKQorICAgIHsKICAgICAgICAgdGhpcy53aW5kb3dMZWZ0ID0g
MC4wOwogICAgICAgICB0aGlzLndpbmRvd1JpZ2h0ID0gMS4wOwogICAgICAgICB0aGlzLndpbmRv
d0luZGV4TGVmdCA9IDA7CkBAIC02MCw3ICsxMTMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeX0gY2F0ZWdvcnkKICAgICAgKi8KLSAgICBhZGRD
YXRlZ29yeTogZnVuY3Rpb24oY2F0ZWdvcnkpCisgICAgX2FkZENhdGVnb3J5OiBmdW5jdGlvbihj
YXRlZ29yeSkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhdGVnb3JpZXNbY2F0ZWdvcnkubmFtZV0g
PSBjYXRlZ29yeTsKICAgICB9LApAQCAtOTUsNyArMTQ4LDQyOSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBjYXRl
Z29yeS5oaWRkZW4gPSAhdmlzaWJsZTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNhdGVn
b3J5VmlzaWJpbGl0eUNoYW5nZWQsIGNhdGVnb3J5KTsKKyAgICB9LAorCisgICAgZ2V0IF9yZWNv
cmRTdHlsZXMoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9yZWNvcmRTdHlsZXNBcnJheSkg
eworICAgICAgICAgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZTsKKyAgICAgICAgICAgIHZhciBjYXRlZ29yaWVzID0gdGhpcy5fY2F0ZWdv
cmllczsKKworICAgICAgICAgICAgdmFyIHJlY29yZFN0eWxlcyA9IHt9OworICAgICAgICAgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2ZW50RGlzcGF0Y2hdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJFdmVudCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5n
Il0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5MYXlvdXRdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQiKSwgY2F0ZWdvcnk6IGNhdGVnb3Jp
ZXNbInJlbmRlcmluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMu
UmVjYWxjdWxhdGVTdHlsZXNdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNh
bGN1bGF0ZSBTdHlsZSIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sicmVuZGVyaW5nIl0gfTsKKyAg
ICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5QYWludF0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlBhaW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJyZW5kZXJp
bmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBhcnNlSFRNTF0g
PSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5OiBjYXRl
Z29yaWVzWyJsb2FkaW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5UaW1lckluc3RhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnN0YWxs
IFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAg
ICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyUmVtb3ZlXSA9IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIFRpbWVyIiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJz
Y3JpcHRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVy
RmlyZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIEZpcmVkIiksIGNh
dGVnb3J5OiBjYXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNhdGVnb3J5OiBjYXRlZ29y
aWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LlhIUkxvYWRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgTG9hZCIpLCBj
YXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5FdmFsdWF0ZVNjcmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkV2YWx1YXRlIFNjcmlwdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0
aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lU3RhbXBd
ID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFtcCIpLCBjYXRlZ29yeTogY2F0
ZWdvcmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRU
eXBlcy5SZXNvdXJjZVNlbmRSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2VuZCBSZXF1ZXN0IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJsb2FkaW5nIl0gfTsKKyAg
ICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25z
ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmUgUmVzcG9uc2UiKSwg
Y2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLlJlc291cmNlRmluaXNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRmluaXNoIExvYWRpbmciKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmci
XSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZ1bmN0aW9uQ2FsbF0g
PSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwgY2F0ZWdv
cnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlZERhdGFdID0geyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZWNlaXZlIERhdGEiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbImxvYWRpbmci
XSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkdDRXZlbnRdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHQyBFdmVudCIpLCBjYXRlZ29yeTogY2F0ZWdv
cmllc1sic2NyaXB0aW5nIl0gfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5NYXJrRE9NQ29udGVudF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRPTUNv
bnRlbnQgZXZlbnQiKSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAg
ICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya0xvYWRdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkIGV2ZW50IiksIGNhdGVnb3J5OiBjYXRlZ29yaWVzWyJz
Y3JpcHRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlNjaGVk
dWxlUmVzb3VyY2VSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2No
ZWR1bGUgUmVxdWVzdCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sibG9hZGluZyJdIH07CisgICAg
ICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVxdWVzdEFuaW1hdGlvbkZyYW1lXSA9
IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBBbmltYXRpb24gRnJhbWUi
KSwgY2F0ZWdvcnk6IGNhdGVnb3JpZXNbInNjcmlwdGluZyJdIH07CisgICAgICAgICAgICByZWNv
cmRTdHlsZXNbcmVjb3JkVHlwZXMuQ2FuY2VsQW5pbWF0aW9uRnJhbWVdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDYW5jZWwgQW5pbWF0aW9uIEZyYW1lIiksIGNhdGVnb3J5OiBj
YXRlZ29yaWVzWyJzY3JpcHRpbmciXSB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29y
ZFR5cGVzLkZpcmVBbmltYXRpb25GcmFtZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkFuaW1hdGlvbiBGcmFtZSBGaXJlZCIpLCBjYXRlZ29yeTogY2F0ZWdvcmllc1sic2NyaXB0
aW5nIl0gfTsKKyAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc0FycmF5ID0gcmVjb3JkU3R5
bGVzOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRTdHlsZXNBcnJheTsK
ICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKKworLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwuUmVjb3JkID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwsIHJlY29yZCwgcGFyZW50UmVj
b3JkLCBzY3JpcHREZXRhaWxzKQoreworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsID0gcHJl
c2VudGF0aW9uTW9kZWw7CisgICAgdGhpcy5fbGlua2lmaWVyID0gdGhpcy5fcHJlc2VudGF0aW9u
TW9kZWwuX2xpbmtpZmllcjsKKyAgICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHMgPSBbXTsKKyAgICB2
YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlOwor
ICAgIHZhciBzdHlsZSA9IHByZXNlbnRhdGlvbk1vZGVsLl9yZWNvcmRTdHlsZXNbcmVjb3JkLnR5
cGVdOworICAgIHRoaXMucGFyZW50ID0gcGFyZW50UmVjb3JkOworICAgIGlmIChwYXJlbnRSZWNv
cmQpCisgICAgICAgIHBhcmVudFJlY29yZC5jaGlsZHJlbi5wdXNoKHRoaXMpOworICAgIHRoaXMu
Y2F0ZWdvcnkgPSBzdHlsZS5jYXRlZ29yeTsKKyAgICB0aGlzLnRpdGxlID0gc3R5bGUudGl0bGU7
CisgICAgdGhpcy5zdGFydFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lIC8gMTAwMDsKKyAgICB0aGlz
LmRhdGEgPSByZWNvcmQuZGF0YTsKKyAgICB0aGlzLnR5cGUgPSByZWNvcmQudHlwZTsKKyAgICB0
aGlzLmVuZFRpbWUgPSAodHlwZW9mIHJlY29yZC5lbmRUaW1lICE9PSAidW5kZWZpbmVkIikgPyBy
ZWNvcmQuZW5kVGltZSAvIDEwMDAgOiB0aGlzLnN0YXJ0VGltZTsKKyAgICB0aGlzLl9zZWxmVGlt
ZSA9IHRoaXMuZW5kVGltZSAtIHRoaXMuc3RhcnRUaW1lOworICAgIHRoaXMuX2xhc3RDaGlsZEVu
ZFRpbWUgPSB0aGlzLmVuZFRpbWU7CisgICAgdGhpcy5faW5pdGlhdG9yT2Zmc2V0ID0gKHBhcmVu
dFJlY29yZCAmJiBwYXJlbnRSZWNvcmQgIT09IHByZXNlbnRhdGlvbk1vZGVsLl9yb290UmVjb3Jk
KSA/CisgICAgICAgIHBhcmVudFJlY29yZC5faW5pdGlhdG9yT2Zmc2V0ICsgdGhpcy5zdGFydFRp
bWUgLSBwYXJlbnRSZWNvcmQuc3RhcnRUaW1lIDogMDsKKworICAgIGlmIChyZWNvcmQuc3RhY2tU
cmFjZSAmJiByZWNvcmQuc3RhY2tUcmFjZS5sZW5ndGgpCisgICAgICAgIHRoaXMuc3RhY2tUcmFj
ZSA9IHJlY29yZC5zdGFja1RyYWNlOworICAgIHRoaXMudG90YWxIZWFwU2l6ZSA9IHJlY29yZC50
b3RhbEhlYXBTaXplOworICAgIHRoaXMudXNlZEhlYXBTaXplID0gcmVjb3JkLnVzZWRIZWFwU2l6
ZTsKKyAgICBpZiAocmVjb3JkLmRhdGEgJiYgcmVjb3JkLmRhdGFbInVybCJdKQorICAgICAgICB0
aGlzLnVybCA9IHJlY29yZC5kYXRhWyJ1cmwiXTsKKyAgICBpZiAoc2NyaXB0RGV0YWlscykgewor
ICAgICAgICB0aGlzLnNjcmlwdE5hbWUgPSBzY3JpcHREZXRhaWxzLnNjcmlwdE5hbWU7CisgICAg
ICAgIHRoaXMuc2NyaXB0TGluZSA9IHNjcmlwdERldGFpbHMuc2NyaXB0TGluZTsKKyAgICB9Cisg
ICAgLy8gTWFrZSByZXNvdXJjZSByZWNlaXZlIHJlY29yZCBsYXN0IHNpbmNlIHJlcXVlc3Qgd2Fz
IHNlbnQ7IG1ha2UgZmluaXNoIHJlY29yZCBsYXN0IHNpbmNlIHJlc3BvbnNlIHJlY2VpdmVkLgor
ICAgIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdCkg
eworICAgICAgICBwcmVzZW50YXRpb25Nb2RlbC5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5k
YXRhWyJyZXF1ZXN0SWQiXV0gPSB0aGlzOworICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09
IHJlY29yZFR5cGVzLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KSB7CisgICAgICAgIHByZXNlbnRh
dGlvbk1vZGVsLl9zY2hlZHVsZWRSZXNvdXJjZVJlcXVlc3RzW3JlY29yZC5kYXRhWyJ1cmwiXV0g
PSB0aGlzOworICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291
cmNlUmVjZWl2ZVJlc3BvbnNlKSB7CisgICAgICAgIHZhciBzZW5kUmVxdWVzdFJlY29yZCA9IHBy
ZXNlbnRhdGlvbk1vZGVsLl9zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGFbInJlcXVlc3RJ
ZCJdXTsKKyAgICAgICAgaWYgKHNlbmRSZXF1ZXN0UmVjb3JkKSB7IC8vIEZhbHNlIGlmIHdlIHN0
YXJ0ZWQgaW5zdHJ1bWVudGF0aW9uIGluIHRoZSBtaWRkbGUgb2YgcmVxdWVzdC4KKyAgICAgICAg
ICAgIHRoaXMudXJsID0gc2VuZFJlcXVlc3RSZWNvcmQudXJsOworICAgICAgICAgICAgLy8gTm93
IHRoYXQgd2UgaGF2ZSByZXNvdXJjZSBpbiB0aGUgY29sbGVjdGlvbiwgcmVjYWxjdWxhdGUgZGV0
YWlscyBpbiBvcmRlciB0byBkaXNwbGF5IHNob3J0IHVybC4KKyAgICAgICAgICAgIHNlbmRSZXF1
ZXN0UmVjb3JkLl9yZWZyZXNoRGV0YWlscygpOworICAgICAgICAgICAgaWYgKHNlbmRSZXF1ZXN0
UmVjb3JkLnBhcmVudCAhPT0gcHJlc2VudGF0aW9uTW9kZWwuX3Jvb3RSZWNvcmQgJiYgc2VuZFJl
cXVlc3RSZWNvcmQucGFyZW50LnR5cGUgPT09IHJlY29yZFR5cGVzLlNjaGVkdWxlUmVzb3VyY2VS
ZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbmRSZXF1ZXN0UmVjb3JkLnBhcmVudC5fcmVmcmVz
aERldGFpbHMoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJl
Y29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZWREYXRhIHx8IHJlY29yZC50eXBlID09PSByZWNvcmRU
eXBlcy5SZXNvdXJjZUZpbmlzaCkgeworICAgICAgICB2YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSBw
cmVzZW50YXRpb25Nb2RlbC5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhWyJyZXF1ZXN0
SWQiXV07CisgICAgICAgIGlmIChzZW5kUmVxdWVzdFJlY29yZCkgLy8gRmFsc2UgZm9yIG1haW4g
cmVzb3VyY2UuCisgICAgICAgICAgICB0aGlzLnVybCA9IHNlbmRSZXF1ZXN0UmVjb3JkLnVybDsK
KyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lckluc3RhbGwp
IHsKKyAgICAgICAgdGhpcy50aW1lb3V0ID0gcmVjb3JkLmRhdGFbInRpbWVvdXQiXTsKKyAgICAg
ICAgdGhpcy5zaW5nbGVTaG90ID0gcmVjb3JkLmRhdGFbInNpbmdsZVNob3QiXTsKKyAgICAgICAg
cHJlc2VudGF0aW9uTW9kZWwuX3RpbWVyUmVjb3Jkc1tyZWNvcmQuZGF0YVsidGltZXJJZCJdXSA9
IHRoaXM7CisgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuVGltZXJG
aXJlKSB7CisgICAgICAgIHZhciB0aW1lckluc3RhbGxlZFJlY29yZCA9IHByZXNlbnRhdGlvbk1v
ZGVsLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGFbInRpbWVySWQiXV07CisgICAgICAgIGlmICh0
aW1lckluc3RhbGxlZFJlY29yZCkgeworICAgICAgICAgICAgdGhpcy5jYWxsU2l0ZVN0YWNrVHJh
Y2UgPSB0aW1lckluc3RhbGxlZFJlY29yZC5zdGFja1RyYWNlOworICAgICAgICAgICAgdGhpcy50
aW1lb3V0ID0gdGltZXJJbnN0YWxsZWRSZWNvcmQudGltZW91dDsKKyAgICAgICAgICAgIHRoaXMu
c2luZ2xlU2hvdCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnNpbmdsZVNob3Q7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXF1ZXN0QW5pbWF0
aW9uRnJhbWUpIHsKKyAgICAgICAgcHJlc2VudGF0aW9uTW9kZWwuX3JlcXVlc3RBbmltYXRpb25G
cmFtZVJlY29yZHNbcmVjb3JkLmRhdGFbImlkIl1dID0gdGhpczsKKyAgICB9IGVsc2UgaWYgKHJl
Y29yZC50eXBlID09PSByZWNvcmRUeXBlcy5GaXJlQW5pbWF0aW9uRnJhbWUpIHsKKyAgICAgICAg
dmFyIHJlcXVlc3RBbmltYXRpb25SZWNvcmQgPSBwcmVzZW50YXRpb25Nb2RlbC5fcmVxdWVzdEFu
aW1hdGlvbkZyYW1lUmVjb3Jkc1tyZWNvcmQuZGF0YVsiaWQiXV07CisgICAgICAgIGlmIChyZXF1
ZXN0QW5pbWF0aW9uUmVjb3JkKQorICAgICAgICAgICAgdGhpcy5jYWxsU2l0ZVN0YWNrVHJhY2Ug
PSByZXF1ZXN0QW5pbWF0aW9uUmVjb3JkLnN0YWNrVHJhY2U7CisgICAgfQorICAgIHRoaXMuX3Jl
ZnJlc2hEZXRhaWxzKCk7Cit9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1v
ZGVsLlJlY29yZC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGxhc3RDaGlsZEVuZFRpbWUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RDaGlsZEVuZFRpbWU7CisgICAgfSwKKworICAg
IHNldCBsYXN0Q2hpbGRFbmRUaW1lKHRpbWUpCisgICAgeworICAgICAgICB0aGlzLl9sYXN0Q2hp
bGRFbmRUaW1lID0gdGltZTsKKyAgICB9LAorCisgICAgZ2V0IHNlbGZUaW1lKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zZWxmVGltZTsKKyAgICB9LAorCisgICAgc2V0IHNlbGZUaW1l
KHRpbWUpCisgICAgeworICAgICAgICB0aGlzLl9zZWxmVGltZSA9IHRpbWU7CisgICAgfSwKKwor
ICAgIGdldCBjcHVUaW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jcHVUaW1lOwor
ICAgIH0sCisKKyAgICBpc0xvbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAo
dGhpcy5fbGFzdENoaWxkRW5kVGltZSAtIHRoaXMuc3RhcnRUaW1lKSA+IFdlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnNob3J0UmVjb3JkVGhyZXNob2xkOworICAgIH0sCisK
KyAgICBnZXQgY2hpbGRyZW4oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9jaGlsZHJlbikK
KyAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuID0gW107CisgICAgICAgIHJldHVybiB0aGlzLl9j
aGlsZHJlbjsKKyAgICB9LAorCisgICAgY29udGFpbnNUaW1lOiBmdW5jdGlvbih0aW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRUaW1lIDw9IHRpbWUgJiYgdGltZSA8PSB0aGlz
LmVuZFRpbWU7CisgICAgfSwKKworICAgIF9nZW5lcmF0ZUFnZ3JlZ2F0ZWRJbmZvOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKKyAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAidGltZWxpbmUtYWdncmVnYXRlZC1pbmZv
IjsKKyAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5fYWdncmVnYXRlZFN0YXRzKSB7Cisg
ICAgICAgICAgICB2YXIgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgICAgIGxhYmVsLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1hZ2dyZWdhdGVkLWNhdGVnb3J5
IHRpbWVsaW5lLSIgKyBpbmRleDsKKyAgICAgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwp
OworICAgICAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CisgICAgICAgICAgICB0ZXh0LnRleHRDb250ZW50ID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0
aGlzLl9hZ2dyZWdhdGVkU3RhdHNbaW5kZXhdLCB0cnVlKTsKKyAgICAgICAgICAgIGNlbGwuYXBw
ZW5kQ2hpbGQodGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfSwK
KworICAgIGdlbmVyYXRlUG9wdXBDb250ZW50OiBmdW5jdGlvbihjYWxjdWxhdG9yKQorICAgIHsK
KyAgICAgICAgdmFyIGNvbnRlbnRIZWxwZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJl
c2VudGF0aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyKHRoaXMudGl0bGUpOworCisgICAgICAg
IGlmICh0aGlzLl9jaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
ZWxmIFRpbWUiKSwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9zZWxmVGltZSwgdHJ1ZSkp
OworICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFnZ3JlZ2F0ZWQgVGltZSIpLCB0aGlzLl9nZW5lcmF0ZUFnZ3JlZ2F0ZWRJ
bmZvKCkpOworICAgICAgICB9CisgICAgICAgIHZhciB0ZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCIlcyAoYXQgJXMpIiwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9sYXN0Q2hpbGRF
bmRUaW1lIC0gdGhpcy5zdGFydFRpbWUsIHRydWUpLAorICAgICAgICAgICAgY2FsY3VsYXRvci5m
b3JtYXRWYWx1ZSh0aGlzLnN0YXJ0VGltZSAtIGNhbGN1bGF0b3IubWluaW11bUJvdW5kYXJ5KSk7
CisgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJEdXJhdGlvbiIpLCB0ZXh0KTsKKworICAgICAgICBjb25zdCByZWNvcmRUeXBlcyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGU7CisKKyAgICAgICAgc3dpdGNoICh0
aGlzLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuR0NFdmVudDoKKyAgICAg
ICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29sbGVjdGVkIiksIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuZGF0YVsidXNlZEhl
YXBTaXplRGVsdGEiXSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSByZWNvcmRUeXBlcy5UaW1lckluc3RhbGw6CisgICAgICAgICAgICBjYXNlIHJlY29yZFR5cGVz
LlRpbWVyRmlyZToKKyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuVGltZXJSZW1vdmU6Cisg
ICAgICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlRpbWVyIElEIiksIHRoaXMuZGF0YVsidGltZXJJZCJdKTsKKyAgICAgICAgICAg
ICAgICBpZiAodHlwZW9mIHRoaXMudGltZW91dCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlRpbWVvdXQiKSwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLnRpbWVvdXQgLyAxMDAw
KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXRzIiksICF0aGlzLnNpbmdsZVNob3QpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgcmVj
b3JkVHlwZXMuRmlyZUFuaW1hdGlvbkZyYW1lOgorICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxw
ZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxsYmFjayBJRCIpLCB0
aGlzLmRhdGFbImlkIl0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSByZWNvcmRUeXBlcy5GdW5jdGlvbkNhbGw6CisgICAgICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIiksIHRo
aXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q6CisgICAg
ICAgICAgICBjYXNlIHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3Q6CisgICAgICAgICAg
ICBjYXNlIHJlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlOgorICAgICAgICAgICAg
Y2FzZSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVkRGF0YToKKyAgICAgICAgICAgIGNhc2Ug
cmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2g6CisgICAgICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kRWxlbWVudFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIiksIHRo
aXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnVybCkpOworICAgICAgICAgICAgICAgIGlmICh0aGlz
LmRhdGFbInJlcXVlc3RNZXRob2QiXSkKKyAgICAgICAgICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgTWV0aG9kIiks
IHRoaXMuZGF0YVsicmVxdWVzdE1ldGhvZCJdKTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9m
IHRoaXMuZGF0YVsic3RhdHVzQ29kZSJdID09PSAibnVtYmVyIikKKyAgICAgICAgICAgICAgICAg
ICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0
YXR1cyBDb2RlIiksIHRoaXMuZGF0YVsic3RhdHVzQ29kZSJdKTsKKyAgICAgICAgICAgICAgICBp
ZiAodGhpcy5kYXRhWyJtaW1lVHlwZSJdKQorICAgICAgICAgICAgICAgICAgICBjb250ZW50SGVs
cGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTUlNRSBUeXBlIiksIHRo
aXMuZGF0YVsibWltZVR5cGUiXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIHJlY29yZFR5cGVzLkV2YWx1YXRlU2NyaXB0OgorICAgICAgICAgICAgICAgIGlmICh0
aGlzLmRhdGEgJiYgdGhpcy51cmwpCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWxwZXIu
X2FwcGVuZEVsZW1lbnRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHQiKSwgdGhpcy5f
bGlua2lmeUxvY2F0aW9uKHRoaXMudXJsLCB0aGlzLmRhdGFbImxpbmVOdW1iZXIiXSkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSByZWNvcmRUeXBlcy5QYWludDoK
KyAgICAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTG9jYXRpb24iKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoJWQsICVkKSIs
IHRoaXMuZGF0YVsieCJdLCB0aGlzLmRhdGFbInkiXSkpOworICAgICAgICAgICAgICAgIGNvbnRl
bnRIZWxwZXIuX2FwcGVuZFRleHRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaW1lbnNpb25z
IiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgw5cgJWQiLCB0aGlzLmRhdGFbIndpZHRoIl0s
IHRoaXMuZGF0YVsiaGVpZ2h0Il0pKTsKKyAgICAgICAgICAgIGNhc2UgcmVjb3JkVHlwZXMuUmVj
YWxjdWxhdGVTdHlsZXM6IC8vIFdlIGRvbid0IHdhbnQgdG8gc2VlIGRlZmF1bHQgZGV0YWlscy4K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuZGV0YWlscykKKyAgICAgICAgICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRldGFpbHMiKSwgdGhpcy5k
ZXRhaWxzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh0aGlzLnNjcmlwdE5hbWUgJiYgdGhpcy50eXBlICE9PSByZWNvcmRUeXBlcy5GdW5jdGlvbkNh
bGwpCisgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRFbGVtZW50Um93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRnVuY3Rpb24gQ2FsbCIpLCB0aGlzLl9saW5raWZ5U2NyaXB0TG9jYXRp
b24oKSk7CisKKyAgICAgICAgaWYgKHRoaXMudXNlZEhlYXBTaXplKQorICAgICAgICAgICAgY29u
dGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVzZWQgSGVh
cCBTaXplIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgb2YgJXMiLCBOdW1iZXIuYnl0ZXNU
b1N0cmluZyh0aGlzLnVzZWRIZWFwU2l6ZSksIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMudG90
YWxIZWFwU2l6ZSkpKTsKKworICAgICAgICBpZiAodGhpcy5jYWxsU2l0ZVN0YWNrVHJhY2UgJiYg
dGhpcy5jYWxsU2l0ZVN0YWNrVHJhY2UubGVuZ3RoKQorICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kU3RhY2tUcmFjZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGwgU2l0ZSBzdGFj
ayIpLCB0aGlzLmNhbGxTaXRlU3RhY2tUcmFjZSwgdGhpcy5fbGlua2lmeUNhbGxGcmFtZS5iaW5k
KHRoaXMpKTsKKworICAgICAgICBpZiAodGhpcy5zdGFja1RyYWNlKQorICAgICAgICAgICAgY29u
dGVudEhlbHBlci5fYXBwZW5kU3RhY2tUcmFjZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGwg
U3RhY2siKSwgdGhpcy5zdGFja1RyYWNlLCB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lLmJpbmQodGhp
cykpOworCisgICAgICAgIHJldHVybiBjb250ZW50SGVscGVyLl9jb250ZW50VGFibGU7CisgICAg
fSwKKworICAgIF9yZWZyZXNoRGV0YWlsczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhp
cy5kZXRhaWxzID0gdGhpcy5fZ2V0UmVjb3JkRGV0YWlscygpOworICAgIH0sCisKKyAgICBfZ2V0
UmVjb3JkRGV0YWlsczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0aGlzLnR5
cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3Jk
VHlwZS5HQ0V2ZW50OgorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIiVzIGNvbGxlY3RlZCIsIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuZGF0YVsidXNlZEhl
YXBTaXplRGVsdGEiXSkpOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVN
b2RlbC5SZWNvcmRUeXBlLlRpbWVyRmlyZToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
bGlua2lmeVNjcmlwdExvY2F0aW9uKHRoaXMuZGF0YVsidGltZXJJZCJdKTsKKyAgICAgICAgICAg
IGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGw6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlTY3JpcHRMb2NhdGlvbigpOwor
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLkZp
cmVBbmltYXRpb25GcmFtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeVNj
cmlwdExvY2F0aW9uKHRoaXMuZGF0YVsiaWQiXSk7CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5kYXRhID8gdGhpcy5kYXRhWyJ0eXBlIl0gOiBudWxsOworICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlBhaW50Ogor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbIndpZHRoIl0gKyAiXHUyMDA5XHUwMGQ3
XHUyMDA5IiArIHRoaXMuZGF0YVsiaGVpZ2h0Il07CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuVGltZXJJbnN0YWxsOgorICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlOgor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5VG9wQ2FsbEZyYW1lKHRoaXMuZGF0
YVsidGltZXJJZCJdKTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWwuUmVjb3JkVHlwZS5SZXF1ZXN0QW5pbWF0aW9uRnJhbWU6CisgICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuQ2FuY2VsQW5pbWF0aW9uRnJhbWU6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlUb3BDYWxsRnJhbWUodGhpcy5k
YXRhWyJpZCJdKTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwu
UmVjb3JkVHlwZS5QYXJzZUhUTUw6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZU1vZGVsLlJlY29yZFR5cGUuUmVjYWxjdWxhdGVTdHlsZXM6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2xpbmtpZnlUb3BDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy51cmwgPyB0aGlzLl9saW5raWZ5TG9jYXRpb24odGhpcy51
cmwsIHRoaXMuZGF0YVsibGluZU51bWJlciJdLCAwKSA6IG51bGw7CisgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuWEhSUmVhZHlTdGF0ZUNoYW5n
ZToKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWwuUmVjb3JkVHlw
ZS5YSFJMb2FkOgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbC5S
ZWNvcmRUeXBlLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0OgorICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNb2RlbC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3Q6Cisg
ICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUmVz
b3VyY2VSZWNlaXZlZERhdGE6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1vZGVsLlJlY29yZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6CisgICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJlY29yZFR5cGUuUmVzb3VyY2VGaW5pc2g6
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTCh0
aGlzLnVybCk7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLlJl
Y29yZFR5cGUuVGltZVN0YW1wOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbIm1l
c3NhZ2UiXTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IHVybAorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbGluZU51bWJlcgorICAgICAqIEBwYXJhbSB7
bnVtYmVyPX0gY29sdW1uTnVtYmVyCisgICAgICovCisgICAgX2xpbmtpZnlMb2NhdGlvbjogZnVu
Y3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICAvLyBG
SVhNRSg2MjcyNSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMgYXJlIG9uZS1iYXNl
ZC4KKyAgICAgICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5lTnVtYmVyIC0gMSA6IGxp
bmVOdW1iZXI7CisgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlciA/IGNvbHVtbk51
bWJlciAtIDEgOiAwOworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlMb2Nh
dGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgInRpbWVsaW5lLWRldGFpbHMiKTsK
KyAgICB9LAorCisgICAgX2xpbmtpZnlDYWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24oY2FsbEZyYW1lLnVybCwg
Y2FsbEZyYW1lLmxpbmVOdW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIpOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IGRlZmF1bHRWYWx1ZQorICAgICAqLwor
ICAgIF9saW5raWZ5VG9wQ2FsbEZyYW1lOiBmdW5jdGlvbihkZWZhdWx0VmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNhbGxGcmFtZSh0
aGlzLnN0YWNrVHJhY2VbMF0pIDogZGVmYXVsdFZhbHVlOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZz19IGRlZmF1bHRWYWx1ZQorICAgICAqLworICAgIF9saW5raWZ5
U2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKGRlZmF1bHRWYWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLnNjcmlwdE5hbWUgPyB0aGlzLl9saW5raWZ5TG9jYXRpb24odGhpcy5zY3JpcHRO
YW1lLCB0aGlzLnNjcmlwdExpbmUsIDApIDogZGVmYXVsdFZhbHVlOworICAgIH0sCisKKyAgICBj
YWxjdWxhdGVBZ2dyZWdhdGVkU3RhdHM6IGZ1bmN0aW9uKGNhdGVnb3JpZXMpCisgICAgeworICAg
ICAgICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHMgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgY2F0ZWdv
cnkgaW4gY2F0ZWdvcmllcykKKyAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0c1tjYXRl
Z29yeV0gPSAwOworICAgICAgICB0aGlzLl9jcHVUaW1lID0gdGhpcy5fc2VsZlRpbWU7CisKKyAg
ICAgICAgaWYgKHRoaXMuX2NoaWxkcmVuKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9
IHRoaXMuX2NoaWxkcmVuLmxlbmd0aDsgaW5kZXg7IC0taW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgY2hpbGQgPSB0aGlzLl9jaGlsZHJlbltpbmRleCAtIDFdOworICAgICAgICAgICAgICAg
IGZvciAodmFyIGNhdGVnb3J5IGluIGNhdGVnb3JpZXMpCisgICAgICAgICAgICAgICAgICAgIHRo
aXMuX2FnZ3JlZ2F0ZWRTdGF0c1tjYXRlZ29yeV0gKz0gY2hpbGQuX2FnZ3JlZ2F0ZWRTdGF0c1tj
YXRlZ29yeV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBp
biB0aGlzLl9hZ2dyZWdhdGVkU3RhdHMpCisgICAgICAgICAgICAgICAgdGhpcy5fY3B1VGltZSAr
PSB0aGlzLl9hZ2dyZWdhdGVkU3RhdHNbY2F0ZWdvcnldOworICAgICAgICB9CisgICAgICAgIHRo
aXMuX2FnZ3JlZ2F0ZWRTdGF0c1t0aGlzLmNhdGVnb3J5Lm5hbWVdICs9IHRoaXMuX3NlbGZUaW1l
OworICAgIH0sCisKKyAgICBnZXQgYWdncmVnYXRlZFN0YXRzKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9hZ2dyZWdhdGVkU3RhdHM7CisgICAgfQorfQorCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICovCitXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5Qb3B1cENv
bnRlbnRIZWxwZXIgPSBmdW5jdGlvbih0aXRsZSkKK3sKKyAgICB0aGlzLl9jb250ZW50VGFibGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOworICAgIHZhciB0aXRsZUNlbGwgPSB0
aGlzLl9jcmVhdGVDZWxsKFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgLSBEZXRhaWxzIiwgdGl0
bGUpLCAidGltZWxpbmUtZGV0YWlscy10aXRsZSIpOworICAgIHRpdGxlQ2VsbC5jb2xTcGFuID0g
MjsKKyAgICB2YXIgdGl0bGVSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAg
IHRpdGxlUm93LmFwcGVuZENoaWxkKHRpdGxlQ2VsbCk7CisgICAgdGhpcy5fY29udGVudFRhYmxl
LmFwcGVuZENoaWxkKHRpdGxlUm93KTsKK30KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZz19IHN0eWxlTmFtZQorICAgICAqLworICAgIF9jcmVhdGVDZWxs
OiBmdW5jdGlvbihjb250ZW50LCBzdHlsZU5hbWUpCisgICAgeworICAgICAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CisgICAgICAgIHRleHQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkpOworICAgICAgICB2YXIgY2VsbCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIGNlbGwuY2xhc3NOYW1lID0g
InRpbWVsaW5lLWRldGFpbHMiOworICAgICAgICBpZiAoc3R5bGVOYW1lKQorICAgICAgICAgICAg
Y2VsbC5jbGFzc05hbWUgKz0gIiAiICsgc3R5bGVOYW1lOworICAgICAgICBjZWxsLnRleHRDb250
ZW50ID0gY29udGVudDsKKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfSwKKworICAgIF9hcHBl
bmRUZXh0Um93OiBmdW5jdGlvbih0aXRsZSwgY29udGVudCkKKyAgICB7CisgICAgICAgIHZhciBy
b3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICByb3cuYXBwZW5kQ2hp
bGQodGhpcy5fY3JlYXRlQ2VsbCh0aXRsZSwgInRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIikp
OworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2VsbChjb250ZW50LCAidGlt
ZWxpbmUtZGV0YWlscy1yb3ctZGF0YSIpKTsKKyAgICAgICAgdGhpcy5fY29udGVudFRhYmxlLmFw
cGVuZENoaWxkKHJvdyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
PX0gdGl0bGVTdHlsZQorICAgICAqLworICAgIF9hcHBlbmRFbGVtZW50Um93OiBmdW5jdGlvbih0
aXRsZSwgY29udGVudCwgdGl0bGVTdHlsZSkKKyAgICB7CisgICAgICAgIHZhciByb3cgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICB2YXIgdGl0bGVDZWxsID0gdGhpcy5f
Y3JlYXRlQ2VsbCh0aXRsZSwgInRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIik7CisgICAgICAg
IGlmICh0aXRsZVN0eWxlKQorICAgICAgICAgICAgdGl0bGVDZWxsLmFkZFN0eWxlQ2xhc3ModGl0
bGVTdHlsZSk7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aXRsZUNlbGwpOworICAgICAgICB2
YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIGNlbGwuY2xh
c3NOYW1lID0gInRpbWVsaW5lLWRldGFpbHMiOworICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGNv
bnRlbnQpOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7CisgICAgICAgIHRoaXMuX2Nv
bnRlbnRUYWJsZS5hcHBlbmRDaGlsZChyb3cpOworICAgIH0sCisKKyAgICBfYXBwZW5kU3RhY2tU
cmFjZTogZnVuY3Rpb24odGl0bGUsIHN0YWNrVHJhY2UsIGNhbGxGcmFtZUxpbmtpZmllcikKKyAg
ICB7CisgICAgICAgIHRoaXMuX2FwcGVuZFRleHRSb3coIiIsICIiKTsKKyAgICAgICAgdmFyIGZy
YW1lc1RhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzdGFja1RyYWNlLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2
YXIgc3RhY2tGcmFtZSA9IHN0YWNrVHJhY2VbaV07CisgICAgICAgICAgICB2YXIgcm93ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgICAgIHJvdy5jbGFzc05hbWUgPSAi
dGltZWxpbmUtZGV0YWlscyI7CisgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3Jl
YXRlQ2VsbChzdGFja0ZyYW1lLmZ1bmN0aW9uTmFtZSA/IHN0YWNrRnJhbWUuZnVuY3Rpb25OYW1l
IDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpLCAidGltZWxp
bmUtZnVuY3Rpb24tbmFtZSIpKTsKKyAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9j
cmVhdGVDZWxsKCIgQCAiKSk7CisgICAgICAgICAgICB2YXIgbGlua0NlbGwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBjYWxsRnJh
bWVMaW5raWZpZXIoc3RhY2tGcmFtZSk7CisgICAgICAgICAgICBsaW5rQ2VsbC5hcHBlbmRDaGls
ZCh1cmxFbGVtZW50KTsKKyAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChsaW5rQ2VsbCk7Cisg
ICAgICAgICAgICBmcmFtZXNUYWJsZS5hcHBlbmRDaGlsZChyb3cpOworICAgICAgICB9CisgICAg
ICAgIHRoaXMuX2FwcGVuZEVsZW1lbnRSb3codGl0bGUsIGZyYW1lc1RhYmxlLCAidGltZWxpbmUt
c3RhY2t0cmFjZS10aXRsZSIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvdGltZWxpbmVQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3RpbWVsaW5lUGFuZWwuY3NzCmluZGV4IDAwMDEyMzJjZWU3Mjk2
MDAyNTgxYjY0OTkyM2Y5M2ZmNzBiNTMxMTMuLjM1YWNkZWU2N2U2MWVjNzlmYjk5ZTExYzdmMmIw
ZTM3NmQ1OWExYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvdGltZWxpbmVQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC90aW1lbGluZVBhbmVsLmNzcwpAQCAtMzUzLDYgKzM1MywxMCBAQAogICAgIG9wYWNpdHk6
IDAuMjsKIH0KIAorLnRpbWVsaW5lLWdyYXBoLWJhci5jcHUgeworICAgIG9wYWNpdHk6IDAuNjsK
K30KKwogLnRpbWVsaW5lLWdyYXBoLXNpZGUuZXZlbiB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiYSgwLCAwLCAwLCAwLjA1KTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYzdjMjI2YWM2NTAyOTQ0NGE3ZmJkMTli
NDYzYWJlOWUzMDA0MDAwLi5hZWFhZjlhNGU2ZjVmOTdkYmE1NjFkNDNkOTE4OGNiMjFiMDhhMGJh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDItMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgcmVjb3JkIGZv
cm1hdHRpbmcgaW50byB0aGUgdGltZWxpbmUgcHJlc2VudGF0aW9uIG1vZGVsLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci90aW1lbGlu
ZS90aW1lbGluZS1yZWNlaXZlLXJlc3BvbnNlLWV2ZW50Lmh0bWw6CisKIDIwMTItMDItMjcgIE1p
Y2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgRXJyb3IgY2hlY2sg
cmVnZXhwIG1pbiBxdWFudGlmaWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUvdGltZWxpbmUtcmVjZWl2ZS1yZXNwb25zZS1ldmVudC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXJlY2VpdmUtcmVzcG9uc2UtZXZlbnQuaHRt
bAppbmRleCBjNTE0OGUzOGQ1MjJmMWQ5M2M2NWUxMTU1NTU1YjEyYTAyNmY2OWU1Li41NjE0YzBl
NjJhZjc4YTVlNjA5N2U1NDhkNTA1YmViYzY5YTFiODFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdGltZWxpbmUvdGltZWxpbmUtcmVjZWl2ZS1yZXNwb25zZS1ldmVudC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1yZWNlaXZlLXJl
c3BvbnNlLWV2ZW50Lmh0bWwKQEAgLTQ4LDcgKzQ4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgIH0KICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS5fbW9kZWwuX2NvbGxl
Y3Rpb25FbmFibGVkID0gZmFsc2U7CiAKLSAgICAgICAgdmFyIHJlY29yZHMgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLnRpbWVsaW5lLl9yb290UmVjb3JkLmNoaWxkcmVuOworICAgICAgICB2YXIgcmVj
b3JkcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMudGltZWxpbmUuX3Jvb3RSZWNvcmQoKS5jaGlsZHJl
bjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgKytpKQogICAg
ICAgICAgICAgZHVtcEZvcm1hdHRlZFJlY29yZChyZWNvcmRzW2ldKTsKICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
</data>
<flag name="review"
          id="131626"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>