<?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>157819</bug_id>
          
          <creation_ts>2016-05-17 16:20:43 -0700</creation_ts>
          <short_desc>Web Inspector: Remove TimelineSidebarPanel.js as it&apos;s no longer referenced anywhere</short_desc>
          <delta_ts>2016-05-17 21:29:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1194045</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2016-05-17 16:20:43 -0700</bug_when>
    <thetext>* SUMMARY
Remove TimelineSidebarPanel.js as it&apos;s no longer referenced anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194046</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-05-17 16:21:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/26334501&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194047</commentid>
    <comment_count>2</comment_count>
      <attachid>279179</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2016-05-17 16:22:01 -0700</bug_when>
    <thetext>Created attachment 279179
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194069</commentid>
    <comment_count>3</comment_count>
      <attachid>279179</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 17:12:27 -0700</bug_when>
    <thetext>Comment on attachment 279179
[Patch] Proposed Fix

Clearing flags on attachment: 279179

Committed r201057: &lt;http://trac.webkit.org/changeset/201057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194070</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 17:12:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194143</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-17 21:29:17 -0700</bug_when>
    <thetext>Seems to have broken the GTK build:
ninja: error: &apos;../../Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js&apos;, needed by &apos;DerivedSources/webkit2gtk/InspectorGResourceBundle.xml&apos;, missing and no known rule to make it
program finished with exit code 1</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279179</attachid>
            <date>2016-05-17 16:22:01 -0700</date>
            <delta_ts>2016-05-17 17:12:27 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-157819-20160517162258.patch</filename>
            <type>text/plain</type>
            <size>50149</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
NTFjZTM2NTdjMGFhNWMzM2NlYjUzMmE3ODllMTk2NzIzZWRlNTUyLi5kNGQzYTM4MDlhZDc3ZDcz
YTBiNjI0OTlkY2U4MjMyNTRlYzU4ODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNi0wNS0xNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIFRpbWVsaW5lU2lkZWJhclBhbmVsLmpz
IGFzIGl0J3Mgbm8gbG9uZ2VyIHJlZmVyZW5jZWQgYW55d2hlcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzgxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZVNpZGViYXJQYW5lbC5qczogUmVtb3ZlZC4KKyAgICAgICAgUmVtb3ZlZCB1bnVzZWQgZmls
ZS4KKwogMjAxNi0wNS0xNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBpbnNwZWN0b3IgdGVzdHMgc2hvdWxkIHJlZGlyZWN0IGFuZCBsb2cg
Y29uc29sZS50cmFjZSgpIGNhbGxzIGluIHRlc3Qgb3V0cHV0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lU2lk
ZWJhclBhbmVsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzc5NGViNzcwNWVh
ODY2ZWIzNWQ0OGQ5MTIwOGZiY2M2NTI1NzNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lU2lkZWJhclBhbmVsLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTA2NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVs
ID0gY2xhc3MgVGltZWxpbmVTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvblNpZGViYXJQYW5lbAotewotICAgIGNvbnN0cnVjdG9yKGNvbnRlbnRCcm93c2VyKQotICAg
IHsKLSAgICAgICAgc3VwZXIoInRpbWVsaW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1l
bGluZXMiKSk7Ci0KLSAgICAgICAgdGhpcy5jb250ZW50QnJvd3NlciA9IGNvbnRlbnRCcm93c2Vy
OwotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJDb250YWluZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fdGltZWxpbmVFdmVudHNU
aXRsZUJhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5UaXRsZUJhclN0eWxlQ2xhc3MpOwotICAgICAgICB0aGlzLl90aW1lbGluZUV2ZW50
c1RpdGxlQmFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsLlRpbWVsaW5lRXZlbnRzVGl0bGVCYXJTdHlsZUNsYXNzKTsKLQotICAgICAgICB0
aGlzLl90aW1lbGluZUV2ZW50c1RpdGxlQmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgICAgICB0aGlzLl90aW1lbGluZUV2ZW50c1RpdGxlQmFyRWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaXRsZUJhclRl
eHRTdHlsZUNsYXNzKTsKLSAgICAgICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhckNvbnRh
aW5lci5hcHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZUV2ZW50c1RpdGxlQmFyRWxlbWVudCk7Ci0K
LSAgICAgICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhclNjb3BlQ29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRz
VGl0bGVCYXJTY29wZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5UaXRsZUJhclNjb3BlQmFyU3R5bGVDbGFzcyk7Ci0gICAgICAgIHRoaXMu
X3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fdGltZWxp
bmVFdmVudHNUaXRsZUJhclNjb3BlQ29udGFpbmVyKTsKLQotICAgICAgICB0aGlzLmVsZW1lbnQu
aW5zZXJ0QmVmb3JlKHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJDb250YWluZXIsIHRoaXMu
ZWxlbWVudC5maXJzdENoaWxkKTsKLQotICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZUxh
YmVsID0gIiI7Ci0KLSAgICAgICAgdGhpcy5fdGltZWxpbmVzQ29udGVudENvbnRhaW5lckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fdGltZWxp
bmVzQ29udGVudENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVzQ29udGVudENvbnRhaW5lclN0eWxlQ2xhc3MpOwot
ICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRD
b250YWluZXJFbGVtZW50LCB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCk7Ci0KLSAgICAgICAgdGhp
cy5fZGlzcGxheWVkUmVjb3JkaW5nID0gbnVsbDsKLSAgICAgICAgdGhpcy5fZGlzcGxheWVkQ29u
dGVudFZpZXcgPSBudWxsOwotICAgICAgICB0aGlzLl92aWV3TW9kZSA9IG51bGw7Ci0gICAgICAg
IHRoaXMuX3ByZXZpb3VzU2VsZWN0ZWRUaW1lbGluZVR5cGUgPSBudWxsOwotCi0gICAgICAgIC8v
IE1haW50YWluIGFuIGludmlzaWJsZSB0cmVlIG91dGxpbmUgY29udGFpbmluZyB0cmVlIGVsZW1l
bnRzIGZvciBhbGwgcmVjb3JkaW5ncy4KLSAgICAgICAgLy8gVGhlIHZpc2libGUgcmVjb3JkaW5n
J3MgdHJlZSBlbGVtZW50IGlzIHNlbGVjdGVkIHdoZW4gdGhlIGNvbnRlbnQgdmlldyBjaGFuZ2Vz
LgotICAgICAgICB0aGlzLl9yZWNvcmRpbmdUcmVlRWxlbWVudE1hcCA9IG5ldyBNYXA7Ci0gICAg
ICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVP
dXRsaW5lKHRydWUsIHRydWUpOwotICAgICAgICB0aGlzLl9yZWNvcmRpbmdzVHJlZU91dGxpbmUu
ZGlzY2xvc3VyZUJ1dHRvbnMgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nc1RyZWVP
dXRsaW5lLmhpZGRlbiA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGlu
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5FdmVudC5TZWxlY3Rp
b25EaWRDaGFuZ2UsIHRoaXMuX3JlY29yZGluZ3NUcmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlz
KTsKLSAgICAgICAgdGhpcy5fdGltZWxpbmVzQ29udGVudENvbnRhaW5lckVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lLmVsZW1lbnQpOwotCi0gICAgICAgIC8v
IE1haW50YWluIGEgdHJlZSBvdXRsaW5lIHdpdGggdHJlZSBlbGVtZW50cyBmb3IgZWFjaCB0aW1l
bGluZSBvZiB0aGUgc2VsZWN0ZWQgcmVjb3JkaW5nLgotICAgICAgICB0aGlzLl90aW1lbGluZXNU
cmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHRydWUsIHRydWUpOwot
ICAgICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5kaXNjbG9zdXJlQnV0dG9ucyA9IGZh
bHNlOwotICAgICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5sYXJnZSA9IHRydWU7Ci0g
ICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcy5fdGltZWxp
bmVzVHJlZVNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3RpbWVsaW5l
c0NvbnRlbnRDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lc1RyZWVP
dXRsaW5lLmVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAg
PSBuZXcgTWFwOwotCi0gICAgICAgIHRoaXMuX2Jhc2ljVGl0bGVCYXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fYmFzaWNUaXRsZUJhci50ZXh0Q29udGVu
dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIik7Ci0gICAgICAgIHRoaXMuX2Jh
c2ljVGl0bGVCYXIuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwuVGl0bGVCYXJTdHlsZUNsYXNzKTsKLSAgICAgICAgdGhpcy5fYmFzaWNUaXRsZUJhci5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZXNUaXRs
ZUJhclN0eWxlQ2xhc3MpOwotICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMu
X2Jhc2ljVGl0bGVCYXIsIHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTsKLQotICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLkZQU0luc3RydW1lbnQuc3VwcG9ydGVkKCkpIHsKLSAgICAgICAgICAgIGxl
dCB0aW1lbGluZXNOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25O
YXZpZ2F0aW9uSXRlbShXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5WaWV3TW9kZS5UaW1l
bGluZXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIikpCi0gICAgICAgICAgICBs
ZXQgcmVuZGVyaW5nRnJhbWVzTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlJhZGlv
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuVmlld01v
ZGUuUmVuZGVyaW5nRnJhbWVzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbmRlcmluZyBGcmFt
ZXMiKSkKLSAgICAgICAgICAgIHRoaXMuX3ZpZXdNb2RlTmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhcihudWxsLCBbdGltZWxpbmVzTmF2aWdhdGlvbkl0ZW0sIHJl
bmRlcmluZ0ZyYW1lc05hdmlnYXRpb25JdGVtXSwgInRhYmxpc3QiKTsKLSAgICAgICAgICAgIHRo
aXMuX3ZpZXdNb2RlTmF2aWdhdGlvbkJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLkV2ZW50Lk5hdmlnYXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMuX3ZpZXdNb2Rl
U2VsZWN0ZWQsIHRoaXMpOwotCi0gICAgICAgICAgICB0aGlzLl9yZW5kZXJpbmdGcmFtZXNUaXRs
ZUJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdGhpcy5f
cmVuZGVyaW5nRnJhbWVzVGl0bGVCYXIuY2xhc3NOYW1lID0gIm5hdmlnYXRpb24tYmFyLWNvbnRh
aW5lciI7Ci0gICAgICAgICAgICB0aGlzLl9yZW5kZXJpbmdGcmFtZXNUaXRsZUJhci5hcHBlbmRD
aGlsZCh0aGlzLl92aWV3TW9kZU5hdmlnYXRpb25CYXIuZWxlbWVudCk7Ci0gICAgICAgICAgICB0
aGlzLl9yZW5kZXJpbmdGcmFtZXNUaXRsZUJhci5oaWRkZW4gPSB0cnVlOwotICAgICAgICAgICAg
dGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9yZW5kZXJpbmdGcmFtZXNUaXRsZUJhciwg
dGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpOwotCi0gICAgICAgICAgICB0aGlzLl9jaGFydENvbG9y
cyA9IG5ldyBNYXA7Ci0gICAgICAgICAgICB0aGlzLl9jaGFydENvbG9ycy5zZXQoV2ViSW5zcGVj
dG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuVGFza1R5cGUuU2NyaXB0LCAicmdiKDE1
MywgMTEzLCAxODUpIik7Ci0gICAgICAgICAgICB0aGlzLl9jaGFydENvbG9ycy5zZXQoV2ViSW5z
cGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuVGFza1R5cGUuTGF5b3V0LCAicmdi
KDIxMiwgMTA4LCAxMDgpIik7Ci0gICAgICAgICAgICB0aGlzLl9jaGFydENvbG9ycy5zZXQoV2Vi
SW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuVGFza1R5cGUuUGFpbnQsICJy
Z2IoMTUyLCAxODgsIDc3KSIpOwotICAgICAgICAgICAgdGhpcy5fY2hhcnRDb2xvcnMuc2V0KFdl
Ykluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkLlRhc2tUeXBlLk90aGVyLCAi
cmdiKDIyMSwgMjIxLCAyMjEpIik7Ci0KLSAgICAgICAgICAgIHRoaXMuX2ZyYW1lU2VsZWN0aW9u
Q2hhcnRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkNoYXJ0RGV0YWlsc1NlY3Rpb25Sb3codGhpcywg
NzQsIDAuNSk7Ci0gICAgICAgICAgICB0aGlzLl9mcmFtZVNlbGVjdGlvbkNoYXJ0Um93LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNoYXJ0RGV0YWlsc1NlY3Rpb25Sb3cuRXZlbnQuTGVn
ZW5kSXRlbUNoZWNrZWQsIHRoaXMuX2ZyYW1lU2VsZWN0aW9uTGVnZW5kSXRlbUNoZWNrZWQsIHRo
aXMpOwotCi0gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gV2ViSW5zcGVjdG9yLlJlbmRlcmlu
Z0ZyYW1lVGltZWxpbmVSZWNvcmQuVGFza1R5cGUpIHsKLSAgICAgICAgICAgICAgICBsZXQgdGFz
a1R5cGUgPSBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5UYXNrVHlw
ZVtrZXldOwotICAgICAgICAgICAgICAgIGxldCBsYWJlbCA9IFdlYkluc3BlY3Rvci5SZW5kZXJp
bmdGcmFtZVRpbWVsaW5lUmVjb3JkLmRpc3BsYXlOYW1lRm9yVGFza1R5cGUodGFza1R5cGUpOwot
ICAgICAgICAgICAgICAgIGxldCBjb2xvciA9IHRoaXMuX2NoYXJ0Q29sb3JzLmdldCh0YXNrVHlw
ZSk7Ci0gICAgICAgICAgICAgICAgbGV0IGNoZWNrYm94ID0gdGFza1R5cGUgIT09IFdlYkluc3Bl
Y3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkLlRhc2tUeXBlLk90aGVyOwotICAgICAg
ICAgICAgICAgIHRoaXMuX2ZyYW1lU2VsZWN0aW9uQ2hhcnRSb3cuYWRkSXRlbSh0YXNrVHlwZSwg
bGFiZWwsIDAsIGNvbG9yLCBjaGVja2JveCwgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHRoaXMuX3JlbmRlcmluZ0ZyYW1lVGFza0ZpbHRlciA9IG5ldyBTZXQ7Ci0KLSAgICAg
ICAgICAgIHZhciBjaGFydEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwKFt0aGlzLl9mcmFtZVNlbGVjdGlvbkNoYXJ0Um93XSk7Ci0gICAgICAgICAgICB0aGlzLl9m
cmFtZVNlbGVjdGlvbkNoYXJ0U2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24oImZyYW1lcy1zZWxlY3Rpb24tY2hhcnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVj
dGVkIEZyYW1lcyIpLCBbY2hhcnRHcm91cF0sIG51bGwsIHRydWUpOwotICAgICAgICAgICAgdGhp
cy5fdGltZWxpbmVzQ29udGVudENvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZnJh
bWVTZWxlY3Rpb25DaGFydFNlY3Rpb24uZWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLl90b2dnbGVSZWNvcmRpbmdTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU3BhY2UsIHRo
aXMuX3RvZ2dsZVJlY29yZGluZ09uU3BhY2ViYXIuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMu
X3RvZ2dsZVJlY29yZGluZ1Nob3J0Y3V0LmltcGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQgPSBmYWxz
ZTsKLSAgICAgICAgdGhpcy5fdG9nZ2xlUmVjb3JkaW5nU2hvcnRjdXQuZGlzYWJsZWQgPSB0cnVl
OwotCi0gICAgICAgIHRoaXMuX3RvZ2dsZU5ld1JlY29yZGluZ1Nob3J0Y3V0ID0gbmV3IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLlNoaWZ0LCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU3BhY2UsIHRo
aXMuX3RvZ2dsZU5ld1JlY29yZGluZ09uU3BhY2ViYXIuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRo
aXMuX3RvZ2dsZU5ld1JlY29yZGluZ1Nob3J0Y3V0LmltcGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQg
PSBmYWxzZTsKLSAgICAgICAgdGhpcy5fdG9nZ2xlTmV3UmVjb3JkaW5nU2hvcnRjdXQuZGlzYWJs
ZWQgPSB0cnVlOwotCi0gICAgICAgIHRoaXMuX3JlY29yZGluZ05hdmlnYXRpb25CYXIgPSBuZXcg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRC
ZWZvcmUodGhpcy5fcmVjb3JkaW5nTmF2aWdhdGlvbkJhci5lbGVtZW50LCB0aGlzLmVsZW1lbnQu
Zmlyc3RDaGlsZCk7Ci0KLSAgICAgICAgbGV0IHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlN0YXJ0IHJlY29yZGluZyAoJXMpXG5DcmVhdGUgbmV3IHJlY29yZGluZyAoJXMpIikuZm9y
bWF0KHRoaXMuX3RvZ2dsZVJlY29yZGluZ1Nob3J0Y3V0LmRpc3BsYXlOYW1lLCB0aGlzLl90b2dn
bGVOZXdSZWNvcmRpbmdTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIGxldCBhbHRUb29s
VGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIHJlY29yZGluZyAoJXMpIikuZm9ybWF0
KHRoaXMuX3RvZ2dsZVJlY29yZGluZ1Nob3J0Y3V0LmRpc3BsYXlOYW1lKTsKLQotICAgICAgICB0
aGlzLl9yZWNvcmRCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRp
b25JdGVtKCJyZWNvcmQtc3RhcnQtc3RvcCIsIHRvb2xUaXAsIGFsdFRvb2xUaXAsICJJbWFnZXMv
UmVjb3JkLnN2ZyIsICJJbWFnZXMvU3RvcC5zdmciLCAxMywgMTMpOwotICAgICAgICB0aGlzLl9y
ZWNvcmRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVjb3JkQnV0dG9uQ2xpY2tlZCwgdGhpcyk7Ci0g
ICAgICAgIHRoaXMuX3JlY29yZEJ1dHRvbi5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
b3ZlciIsIHRoaXMuX3JlY29yZEJ1dHRvbk1vdXNlZE92ZXIuYmluZCh0aGlzKSk7Ci0gICAgICAg
IHRoaXMuX3JlY29yZEJ1dHRvbi5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iiwg
dGhpcy5fcmVjb3JkQnV0dG9uTW91c2VkT3V0LmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9y
ZWNvcmRpbmdOYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3JlY29yZEJ1dHRv
bik7Ci0KLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nU3RhdHVzSXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtOwotICAgICAgICB0aGlzLl9yZWNvcmRpbmdO
YXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3JlY29yZGluZ1N0YXR1c0l0ZW0p
OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5zaG93UmVwbGF5SW50ZXJmYWNlU2V0dGluZy5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Vw
ZGF0ZVJlcGxheUludGVyZmFjZVZpc2liaWxpdHksIHRoaXMpOwotCi0gICAgICAgIC8vIFdlIGFs
d2F5cyBjcmVhdGUgYSByZXBsYXkgbmF2aWdhdGlvbiBiYXI7IGl0cyB2aXNpYmlsaXR5IGlzIGNv
bnRyb2xsZWQgYnkgV2ViSW5zcGVjdG9yLnNob3dSZXBsYXlJbnRlcmZhY2VTZXR0aW5nLgotICAg
ICAgICB0aGlzLl9yZXBsYXlOYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVwbGF5TmF2
aWdhdGlvbkJhci5lbGVtZW50KTsKLQotICAgICAgICB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJCZWdpbiBDYXB0dXJpbmciKTsKLSAgICAgICAgYWx0VG9vbFRpcCA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRW5kIENhcHR1cmluZyIpOwotICAgICAgICB0aGlzLl9yZXBsYXlDYXB0
dXJlQnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbSgicmVwbGF5LWNhcHR1cmUiLCB0b29sVGlwLCBhbHRUb29sVGlwLCAiSW1hZ2VzL0NpcmNs
ZS5zdmciLCAxNiwgMTYpOwotICAgICAgICB0aGlzLl9yZXBsYXlDYXB0dXJlQnV0dG9uSXRlbS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5D
bGlja2VkLCB0aGlzLl9yZXBsYXlDYXB0dXJlQnV0dG9uQ2xpY2tlZCwgdGhpcyk7Ci0gICAgICAg
IHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICB0
aGlzLl9yZXBsYXlOYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3JlcGxheUNh
cHR1cmVCdXR0b25JdGVtKTsKLQotICAgICAgICB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdGFydCBQbGF5YmFjayIpOwotICAgICAgICBhbHRUb29sVGlwID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQYXVzZSBQbGF5YmFjayIpOwotICAgICAgICB0aGlzLl9yZXBsYXlQYXVzZVJl
c3VtZUJ1dHRvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25J
dGVtKCJyZXBsYXktcGF1c2UtcmVzdW1lIiwgdG9vbFRpcCwgYWx0VG9vbFRpcCwgIkltYWdlcy9S
ZXN1bWUuc3ZnIiwgIkltYWdlcy9QYXVzZS5zdmciLCAxNSwgMTUpOwotICAgICAgICB0aGlzLl9y
ZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVwbGF5UGF1c2VSZXN1
bWVCdXR0b25DbGlja2VkLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcmVwbGF5UGF1c2VSZXN1bWVC
dXR0b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fcmVwbGF5TmF2aWdhdGlv
bkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0p
OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuRXZlbnQuQ2FwdHVyZVN0YXJ0ZWQsIHRoaXMuX2Nh
cHR1cmVTdGFydGVkLCB0aGlzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5FdmVudC5DYXB0dXJl
U3RvcHBlZCwgdGhpcy5fY2FwdHVyZVN0b3BwZWQsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuX3Jl
Y29yZGluZ05hdmlnYXRpb25CYXIuZWxlbWVudC5vbmNvbnRleHRtZW51ID0gdGhpcy5fY29udGV4
dE1lbnVOYXZpZ2F0aW9uQmFyT3JTdGF0dXNCYXIuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5f
cmVwbGF5TmF2aWdhdGlvbkJhci5lbGVtZW50Lm9uY29udGV4dG1lbnUgPSB0aGlzLl9jb250ZXh0
TWVudU5hdmlnYXRpb25CYXJPclN0YXR1c0Jhci5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl91
cGRhdGVSZXBsYXlJbnRlcmZhY2VWaXNpYmlsaXR5KCk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9y
LnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1h
bmFnZXIuRXZlbnQuUmVjb3JkaW5nQ3JlYXRlZCwgdGhpcy5fcmVjb3JkaW5nQ3JlYXRlZCwgdGhp
cyk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGluZ0xvYWRlZCwgdGhp
cy5fcmVjb3JkaW5nTG9hZGVkLCB0aGlzKTsKLQotICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJl
bnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY29udGVudEJyb3dzZXJDdXJyZW50Q29udGVu
dFZpZXdEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5D
YXB0dXJpbmdTdGFydGVkLCB0aGlzLl9jYXB0dXJpbmdTdGFydGVkT3JTdG9wcGVkLCB0aGlzKTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RvcHBlZCwgdGhpcy5f
Y2FwdHVyaW5nU3RhcnRlZE9yU3RvcHBlZCwgdGhpcyk7Ci0KLSAgICAgICAgZm9yICh2YXIgcmVj
b3JkaW5nIG9mIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIucmVjb3JkaW5ncykKLSAgICAg
ICAgICAgIHRoaXMuX2FkZFJlY29yZGluZyhyZWNvcmRpbmcpOwotCi0gICAgICAgIHRoaXMuX3Jl
Y29yZGluZ0NvdW50Q2hhbmdlZCgpOwotCi0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IudGltZWxp
bmVNYW5hZ2VyLmFjdGl2ZVJlY29yZGluZykKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ0xv
YWRlZCgpOwotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IG1pbmltdW1XaWR0aCgp
Ci0gICAgewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkZQU0luc3RydW1lbnQuc3VwcG9ydGVk
KCkpCi0gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5fcmVwbGF5TmF2aWdhdGlvbkJh
ci5taW5pbXVtV2lkdGgsIHRoaXMuX3ZpZXdNb2RlTmF2aWdhdGlvbkJhci5taW5pbXVtV2lkdGgp
OwotICAgICAgICByZXR1cm4gdGhpcy5fcmVwbGF5TmF2aWdhdGlvbkJhci5taW5pbXVtV2lkdGg7
Ci0gICAgfQotCi0gICAgc2hvd24oKQotICAgIHsKLSAgICAgICAgc3VwZXIuc2hvd24oKTsKLQot
ICAgICAgICBpZiAodGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcpCi0gICAgICAgICAgICB0aGlz
LmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlldyh0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmll
dyk7Ci0KLSAgICAgICAgdGhpcy5fdG9nZ2xlUmVjb3JkaW5nU2hvcnRjdXQuZGlzYWJsZWQgPSBm
YWxzZTsKLSAgICAgICAgdGhpcy5fdG9nZ2xlTmV3UmVjb3JkaW5nU2hvcnRjdXQuZGlzYWJsZWQg
PSBmYWxzZTsKLQotICAgICAgICB0aGlzLl91cGRhdGVUaW1lbGluZU92ZXJ2aWV3SGVpZ2h0KCk7
Ci0gICAgfQotCi0gICAgaGlkZGVuKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLmhpZGRlbigpOwot
Ci0gICAgICAgIHRoaXMuX3RvZ2dsZVJlY29yZGluZ1Nob3J0Y3V0LmRpc2FibGVkID0gdHJ1ZTsK
LSAgICAgICAgdGhpcy5fdG9nZ2xlTmV3UmVjb3JkaW5nU2hvcnRjdXQuZGlzYWJsZWQgPSB0cnVl
OwotICAgIH0KLQotICAgIGNsb3NlZCgpCi0gICAgewotICAgICAgICBzdXBlci5jbG9zZWQoKTsK
LQotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNldHRpbmcucmVtb3Zl
RXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnJl
cGxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGws
IG51bGwsIHRoaXMpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIucmVz
ZXQoKTsKLSAgICB9Ci0KLSAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3KCkKLSAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldykKLSAgICAgICAgICAgIHRoaXMuc2hv
d1RpbWVsaW5lT3ZlcnZpZXcoKTsKLSAgICB9Ci0KLSAgICB0cmVlRWxlbWVudEZvclJlcHJlc2Vu
dGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQotICAgIHsKLSAgICAgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nKQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZ1RyZWVFbGVtZW50TWFwLmdldChyZXByZXNl
bnRlZE9iamVjdCk7Ci0KLSAgICAgICAgLy8gVGhpcyBmYWlscyBpZiB0aGUgdGltZWxpbmUgZG9l
cyBub3QgYmVsb25nIHRvIHRoZSBzZWxlY3RlZCByZWNvcmRpbmcuCi0gICAgICAgIGlmIChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSkgewotICAgICAg
ICAgICAgdmFyIGZvdW5kVHJlZUVsZW1lbnQgPSB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFw
LmdldChyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgICAgICAgICBpZiAoZm91bmRUcmVlRWxlbWVu
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRUcmVlRWxlbWVudDsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGlzIHVzZWQgYXMgdGhlIHJlcHJlc2VudGVk
T2JqZWN0IGluc3RlYWQgb2YgRnJhbWUgaW4gb3VyIHRyZWUuCi0gICAgICAgIGlmIChyZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSkKLSAgICAgICAgICAgIHJl
cHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QubWFpblJlc291cmNlOwotCi0gICAg
ICAgIHZhciBmb3VuZFRyZWVFbGVtZW50ID0gdGhpcy5jb250ZW50VHJlZU91dGxpbmUuZ2V0Q2Fj
aGVkVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOwotICAgICAgICBpZiAoZm91bmRUcmVl
RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBmb3VuZFRyZWVFbGVtZW50OwotCi0gICAgICAg
IC8vIExvb2sgZm9yIFRyZWVFbGVtZW50cyBsb29zZWx5IGJhc2VkIG9uIHJlcHJlc2VudGVkIG9i
amVjdHMgdGhhdCBjYW4gY29udGFpbiB0aGUgcmVwcmVzZW50ZWQKLSAgICAgICAgLy8gb2JqZWN0
IHdlIGFyZSByZWFsbHkgbG9va2luZyBmb3IuIFRoaXMgYWxsb3dzIGEgU291cmNlQ29kZVRpbWVs
aW5lVHJlZUVsZW1lbnQgb3IgYQotICAgICAgICAvLyBUaW1lbGluZVJlY29yZFRyZWVFbGVtZW50
IHRvIHN0YXkgc2VsZWN0ZWQgd2hlbiB0aGUgUmVzb3VyY2UgaXQgcmVwcmVzZW50cyBpcyBzaG93
aW5nLgotCi0gICAgICAgIGZ1bmN0aW9uIGxvb3NlbHlDb21wYXJlUmVwcmVzZW50ZWRPYmplY3Rz
KGNhbmRpZGF0ZVRyZWVFbGVtZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWNhbmRp
ZGF0ZVRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICAgICAgdmFyIGNhbmRpZGF0ZVJlcHJlc2VudGVkT2JqZWN0ID0gY2FuZGlkYXRlVHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlUmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZVJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGUg
PT09IHJlcHJlc2VudGVkT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNh
bmRpZGF0ZVJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
ICYmIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKSB7
Ci0gICAgICAgICAgICAgICAgLy8gUmVvcGVuIHRvIHRoZSBzYW1lIHRpbWVsaW5lLCBldmVuIGlm
IGEgZGlmZmVyZW50IHBhcmVudCByZWNvcmRpbmcgaXMgY3VycmVudGx5IHNob3duLgotICAgICAg
ICAgICAgICAgIGlmIChjYW5kaWRhdGVSZXByZXNlbnRlZE9iamVjdC50eXBlID09PSByZXByZXNl
bnRlZE9iamVjdC50eXBlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
IChjYW5kaWRhdGVSZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZCkgewotICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUmVwcmVzZW50ZWRP
YmplY3Quc291cmNlQ29kZUxvY2F0aW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZVJlcHJlc2VudGVkT2JqZWN0LnNvdXJj
ZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSByZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlUmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIFRyZWVF
bGVtZW50IiwgY2FuZGlkYXRlVHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2sgdGhlIHNlbGVjdGVkIHRyZWUgZWxlbWVu
dCBmaXJzdCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGEgbG9uZ2VyIHNlYXJjaCBhbmQgaXQgaXMK
LSAgICAgICAgLy8gbGlrZWx5IHRvIGJlIHRoZSBiZXN0IGNhbmRpZGF0ZSBmb3IgdGhlIGN1cnJl
bnQgdmlldy4KLSAgICAgICAgaWYgKGxvb3NlbHlDb21wYXJlUmVwcmVzZW50ZWRPYmplY3RzKHRo
aXMuY29udGVudFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpKQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7Ci0KLSAg
ICAgICAgdmFyIGN1cnJlbnRUcmVlRWxlbWVudCA9IHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5j
aGlsZHJlblswXTsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnRUcmVlRWxlbWVudCAmJiAhY3VycmVu
dFRyZWVFbGVtZW50LnJvb3QpIHsKLSAgICAgICAgICAgIGlmIChsb29zZWx5Q29tcGFyZVJlcHJl
c2VudGVkT2JqZWN0cyhjdXJyZW50VHJlZUVsZW1lbnQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBjdXJyZW50VHJlZUVsZW1lbnQ7Ci0gICAgICAgICAgICBjdXJyZW50VHJlZUVsZW1lbnQgPSBj
dXJyZW50VHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIG51bGwsIGZh
bHNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIGdl
dCBjb250ZW50VHJlZU91dGxpbmVMYWJlbCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
dGltZWxpbmVFdmVudHNUaXRsZUJhckVsZW1lbnQudGV4dENvbnRlbnQ7Ci0gICAgfQotCi0gICAg
c2V0IGNvbnRlbnRUcmVlT3V0bGluZUxhYmVsKGxhYmVsKQotICAgIHsKLSAgICAgICAgbGFiZWwg
PSBsYWJlbCB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lIEV2ZW50cyIpOwotCi0g
ICAgICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LnRleHRDb250ZW50ID0g
bGFiZWw7Ci0gICAgICAgIHRoaXMuZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJGaWx0ZXIgJXMiKS5mb3JtYXQobGFiZWwpOwotICAgIH0KLQotICAgIGdldCBj
b250ZW50VHJlZU91dGxpbmVTY29wZUJhcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
dGltZWxpbmVFdmVudHNUaXRsZUJhclNjb3BlQ29udGFpbmVyLmNoaWxkcmVuOwotICAgIH0KLQot
ICAgIHNldCBjb250ZW50VHJlZU91dGxpbmVTY29wZUJhcihzY29wZUJhcikKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJTY29wZUNvbnRhaW5lci5yZW1vdmVDaGls
ZHJlbigpOwotCi0gICAgICAgIGlmICghc2NvcGVCYXIgfHwgIXNjb3BlQmFyLmVsZW1lbnQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJh
clNjb3BlQ29udGFpbmVyLmFwcGVuZENoaWxkKHNjb3BlQmFyLmVsZW1lbnQpOwotICAgIH0KLQot
ICAgIHNob3dUaW1lbGluZU92ZXJ2aWV3KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl90aW1l
bGluZXNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQotICAgICAgICAgICAgdGhpcy5f
dGltZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVjdCgpOwotCi0g
ICAgICAgIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3LnNob3dPdmVydmlld1RpbWVsaW5lVmll
dygpOwotICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlldyh0aGlzLl9k
aXNwbGF5ZWRDb250ZW50Vmlldyk7Ci0gICAgfQotCi0gICAgc2hvd1RpbWVsaW5lVmlld0ZvclRp
bWVsaW5lKHRpbWVsaW5lKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fZGlzcGxheWVkUmVjb3JkaW5nLnRpbWVsaW5lcy5oYXModGltZWxp
bmUudHlwZSksICJDYW5ub3Qgc2hvdyB0aW1lbGluZSBiZWNhdXNlIGl0IGRvZXMgbm90IGJlbG9u
ZyB0byB0aGUgc2hvd24gcmVjb3JkaW5nLiIsIHRpbWVsaW5lLnR5cGUpOwotCi0gICAgICAgIGlm
ICh0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmhhcyh0aW1lbGluZSkpIHsKLSAgICAgICAg
ICAgIC8vIERlZmVyIHNob3dpbmcgdGhlIHJlbGV2YW50IHRpbWVsaW5lIHRvIHRoZSBvbnNlbGVj
dCBoYW5kbGVyIG9mIHRoZSB0aW1lbGluZXMgdHJlZSBlbGVtZW50LgotICAgICAgICAgICAgdmFy
IHdhc1NlbGVjdGVkQnlVc2VyID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhciBzaG91bGRTdXBwcmVz
c09uU2VsZWN0ID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50
TWFwLmdldCh0aW1lbGluZSkuc2VsZWN0KHRydWUsIHdhc1NlbGVjdGVkQnlVc2VyLCBzaG91bGRT
dXBwcmVzc09uU2VsZWN0LCB0cnVlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRo
aXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3LnNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGluZSh0aW1l
bGluZSk7Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlldyh0
aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB1cGRh
dGVGcmFtZVNlbGVjdGlvbihzdGFydEZyYW1lSW5kZXgsIGVuZEZyYW1lSW5kZXgpCi0gICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydChzdGFydEZyYW1lSW5kZXggPD0gZW5kRnJhbWVJbmRleCwg
c3RhcnRGcmFtZUluZGV4LCBlbmRGcmFtZUluZGV4KTsKLSAgICAgICAgaWYgKHRoaXMuX3N0YXJ0
RnJhbWVJbmRleCA9PT0gc3RhcnRGcmFtZUluZGV4ICYmIHRoaXMuX2VuZEZyYW1lSW5kZXggPT09
IGVuZEZyYW1lSW5kZXgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fc3Rh
cnRGcmFtZUluZGV4ID0gc3RhcnRGcmFtZUluZGV4OwotICAgICAgICB0aGlzLl9lbmRGcmFtZUlu
ZGV4ID0gZW5kRnJhbWVJbmRleDsKLQotICAgICAgICB0aGlzLl9yZWZyZXNoRnJhbWVTZWxlY3Rp
b25DaGFydCgpOwotICAgIH0KLQotICAgIGZvcm1hdENoYXJ0VmFsdWUodmFsdWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVTZWxlY3Rpb25DaGFydFJvdy50b3RhbCA9PT0gMCA/
ICIiIDogTnVtYmVyLnNlY29uZHNUb1N0cmluZyh2YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gUHJv
dGVjdGVkCi0KLSAgICByZXByZXNlbnRlZE9iamVjdFdhc0ZpbHRlcmVkKHJlcHJlc2VudGVkT2Jq
ZWN0LCBmaWx0ZXJlZCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLnJlcHJlc2VudGVkT2JqZWN0V2Fz
RmlsdGVyZWQocmVwcmVzZW50ZWRPYmplY3QsIGZpbHRlcmVkKTsKLQotICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQpCi0g
ICAgICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldy5yZWNvcmRXYXNGaWx0ZXJlZChy
ZXByZXNlbnRlZE9iamVjdCwgZmlsdGVyZWQpOwotICAgIH0KLQotICAgIHVwZGF0ZUZpbHRlcigp
Ci0gICAgewotICAgICAgICBzdXBlci51cGRhdGVGaWx0ZXIoKTsKLQotICAgICAgICB0aGlzLl9k
aXNwbGF5ZWRDb250ZW50Vmlldy5maWx0ZXJEaWRDaGFuZ2UoKTsKLSAgICB9Ci0KLSAgICBzaG91
bGRGaWx0ZXJQb3B1bGF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgaGFzQ3VzdG9tRmlsdGVycygpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1l
bnQpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3ZpZXdNb2RlID09PSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5WaWV3TW9kZS5SZW5kZXJpbmdGcmFtZXMgJiYg
dGhpcy5fcmVuZGVyaW5nRnJhbWVUYXNrRmlsdGVyLnNpemUpIHsKLSAgICAgICAgICAgIHdoaWxl
ICh0cmVlRWxlbWVudCAmJiAhKHRyZWVFbGVtZW50LnJlY29yZCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZCkpCi0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSB0cmVl
RWxlbWVudC5wYXJlbnQ7Ci0KLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50
LCAiQ2Fubm90IGFwcGx5IHRhc2sgZmlsdGVyOiBubyBUaW1lbGluZVJlY29yZCBmb3VuZC4iKTsK
LSAgICAgICAgICAgIGlmICghdHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgICAgICBsZXQgcmVjb3JkczsKLSAgICAgICAgICAgIGlmICh0cmVlRWxl
bWVudC5yZWNvcmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGlu
ZVJlY29yZCkKLSAgICAgICAgICAgICAgICByZWNvcmRzID0gdHJlZUVsZW1lbnQucmVjb3JkLmNo
aWxkcmVuOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlY29yZHMgPSBbdHJl
ZUVsZW1lbnQucmVjb3JkXTsKLQotICAgICAgICAgICAgY29uc3QgZmlsdGVyZWQgPSByZWNvcmRz
LmV2ZXJ5KGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgICAgICAgICAgIHZhciB0YXNrVHlwZSA9
IFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkLnRhc2tUeXBlRm9yVGlt
ZWxpbmVSZWNvcmQocmVjb3JkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVy
aW5nRnJhbWVUYXNrRmlsdGVyLmhhcyh0YXNrVHlwZSk7Ci0gICAgICAgICAgICB9LCB0aGlzKTsK
LQotICAgICAgICAgICAgaWYgKGZpbHRlcmVkKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmll
dy5tYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpOwotICAg
IH0KLQotICAgIHRyZWVFbGVtZW50QWRkZWRPckNoYW5nZWQodHJlZUVsZW1lbnQpCi0gICAgewot
ICAgICAgICBpZiAodHJlZUVsZW1lbnQuc3RhdHVzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGlmICghdHJlZUVsZW1lbnQudHJlZU91dGxpbmUgfHwgdHlwZW9mIHRyZWVFbGVtZW50
LnRyZWVPdXRsaW5lLl9fY2FuU2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQgIT09ICJmdW5j
dGlvbiIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCF0cmVlRWxlbWVudC50
cmVlT3V0bGluZS5fX2NhblNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVu
dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0KLSAgICAgICAgdmFyIGNsb3NlQnV0dG9uID0g
bmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbih1c2VTVkdTeW1ib2woIklt
YWdlcy9DbG9zZS5zdmciLCBudWxsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsb3NlIHJlc291
cmNlIHZpZXciKSkpOwotICAgICAgICBjbG9zZUJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImNsb3NlIik7Ci0gICAgICAgIGNsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RyZWVFbGVt
ZW50Q2xvc2VCdXR0b25DbGlja2VkLCB0aGlzKTsKLSAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hp
bGQoY2xvc2VCdXR0b24uZWxlbWVudCk7Ci0KLSAgICAgICAgdmFyIGdvVG9CdXR0b24gPSBuZXcg
V2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uKFdlYkluc3BlY3Rvci5jcmVhdGVH
b1RvQXJyb3dCdXR0b24oKSk7Ci0gICAgICAgIGdvVG9CdXR0b24uX190cmVlRWxlbWVudCA9IHRy
ZWVFbGVtZW50OwotICAgICAgICBnb1RvQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RyZWVFbGVt
ZW50R29Ub0Fycm93V2FzQ2xpY2tlZCwgdGhpcyk7Ci0gICAgICAgIGZyYWdtZW50LmFwcGVuZENo
aWxkKGdvVG9CdXR0b24uZWxlbWVudCk7Ci0KLSAgICAgICAgdHJlZUVsZW1lbnQuc3RhdHVzID0g
ZnJhZ21lbnQ7Ci0gICAgfQotCi0gICAgY2FuU2hvd0RpZmZlcmVudENvbnRlbnRWaWV3KCkKLSAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9jbGlja2VkVHJlZUVsZW1lbnRHb1RvQXJyb3cpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBpZiAodGhpcy5jb250ZW50QnJvd3Nlci5j
dXJyZW50Q29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmdDb250ZW50VmlldykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1
cm4gIXRoaXMucmVzdG9yaW5nU3RhdGUgfHwgIXRoaXMuX3Jlc3RvcmVkU2hvd2luZ1RpbWVsaW5l
UmVjb3JkaW5nQ29udGVudFZpZXc7Ci0gICAgfQotCi0gICAgc2F2ZVN0YXRlVG9Db29raWUoY29v
a2llKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29va2llKTsKLQotICAgICAgICBj
b29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNob3dpbmdUaW1lbGluZVJl
Y29yZGluZ0NvbnRlbnRWaWV3Q29va2llS2V5XSA9IHRoaXMuY29udGVudEJyb3dzZXIuY3VycmVu
dENvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29u
dGVudFZpZXc7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3ZpZXdNb2RlID09PSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlldy5WaWV3TW9kZS5SZW5kZXJpbmdGcmFtZXMpCi0gICAgICAgICAgICBj
b29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVjdGVkVGltZWxpbmVW
aWV3SWRlbnRpZmllckNvb2tpZUtleV0gPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlw
ZS5SZW5kZXJpbmdGcmFtZTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgY3VycmVu
dFRpbWVsaW5lVmlldyA9IHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3ID8gdGhpcy5fZGlzcGxh
eWVkQ29udGVudFZpZXcuY3VycmVudFRpbWVsaW5lVmlldyA6IG51bGw7Ci0gICAgICAgICAgICBp
ZiAoY3VycmVudFRpbWVsaW5lVmlldyAmJiBjdXJyZW50VGltZWxpbmVWaWV3LnJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKQotICAgICAgICAgICAgICAg
IGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2VsZWN0ZWRUaW1lbGlu
ZVZpZXdJZGVudGlmaWVyQ29va2llS2V5XSA9IGN1cnJlbnRUaW1lbGluZVZpZXcucmVwcmVzZW50
ZWRPYmplY3QudHlwZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb29raWVb
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVjdGVkVGltZWxpbmVWaWV3SWRl
bnRpZmllckNvb2tpZUtleV0gPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuT3Zl
cnZpZXdUaW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZTsgICAgCi0gICAgICAgIH0KLQotICAg
ICAgICBzdXBlci5zYXZlU3RhdGVUb0Nvb2tpZShjb29raWUpOwotICAgIH0KLQotICAgIHJlc3Rv
cmVTdGF0ZUZyb21Db29raWUoY29va2llLCByZWxheGVkTWF0Y2hEZWxheSkKLSAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGNvb2tpZSk7Ci0KLSAgICAgICAgLy8gVGhlIF9kaXNwbGF5ZWRD
b250ZW50VmlldyBpcyBub3QgcmVhZHkgb24gaW5pdGlhbCBsb2FkLCBzbyBkZWxheSB0aGUgcmVz
dG9yZS4KLSAgICAgICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBkZWxheWVkIHdvcmsgaW4gdGhlIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbCBjb25zdHJ1Y3Rvci4KLSAgICAgICAgaWYg
KCF0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldykgewotICAgICAgICAgICAgc2V0VGltZW91dCh0
aGlzLnJlc3RvcmVTdGF0ZUZyb21Db29raWUuYmluZCh0aGlzLCBjb29raWUsIHJlbGF4ZWRNYXRj
aERlbGF5KSwgMCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLl9yZXN0b3JlZFNob3dpbmdUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY29va2ll
W1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TaG93aW5nVGltZWxpbmVSZWNvcmRp
bmdDb250ZW50Vmlld0Nvb2tpZUtleV07Ci0KLSAgICAgICAgdmFyIHNlbGVjdGVkVGltZWxpbmVW
aWV3SWRlbnRpZmllciA9IGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
U2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVudGlmaWVyQ29va2llS2V5XTsKLSAgICAgICAgaWYgKHNl
bGVjdGVkVGltZWxpbmVWaWV3SWRlbnRpZmllciA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkLlR5cGUuUmVuZGVyaW5nRnJhbWUgJiYgIVdlYkluc3BlY3Rvci5GUFNJbnN0cnVtZW50LnN1
cHBvcnRlZCgpKQotICAgICAgICAgICAgc2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVudGlmaWVyID0g
bnVsbDsKLQotICAgICAgICBpZiAoc2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVudGlmaWVyICYmIHRo
aXMuX2Rpc3BsYXllZFJlY29yZGluZy50aW1lbGluZXMuaGFzKHNlbGVjdGVkVGltZWxpbmVWaWV3
SWRlbnRpZmllcikpCi0gICAgICAgICAgICB0aGlzLnNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGlu
ZSh0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcudGltZWxpbmVzLmdldChzZWxlY3RlZFRpbWVsaW5l
Vmlld0lkZW50aWZpZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5zaG93VGlt
ZWxpbmVPdmVydmlldygpOwotCi0gICAgICAgIC8vIERvbid0IGNhbGwgTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5yZXN0b3JlU3RhdGVGcm9tQ29va2llLCBiZWNhdXNlIGl0IHRyaWVzIHRvIG1hdGNo
IGJhc2VkCi0gICAgICAgIC8vIG9uIHR5cGUgb25seSBhcyBhIGxhc3QgcmVzb3J0LiBUaGlzIHdv
dWxkIGNhdXNlIHRoZSBmaXJzdCByZWNvcmRpbmcgdG8gYmUgcmVzZWxlY3RlZCBvbiByZWxvYWQu
Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3RvZ2dsZVJlY29yZGluZ09uU3BhY2Vi
YXIoZXZlbnQpCi0gICAgewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzRXZlbnRUYXJnZXRB
bkVkaXRhYmxlRmllbGQoZXZlbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRo
aXMuX3RvZ2dsZVJlY29yZGluZygpOwotCi0gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
Ci0gICAgfQotCi0gICAgX3RvZ2dsZU5ld1JlY29yZGluZ09uU3BhY2ViYXIoZXZlbnQpCi0gICAg
ewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzRXZlbnRUYXJnZXRBbkVkaXRhYmxlRmllbGQo
ZXZlbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3RvZ2dsZVJlY29y
ZGluZyh0cnVlKTsKLQotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0KLQot
ICAgIF90b2dnbGVSZWNvcmRpbmcoc2hvdWxkQ3JlYXRlUmVjb3JkaW5nKQotICAgIHsKLSAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuaXNDYXB0dXJpbmcoKSkgewotICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5zdG9wQ2FwdHVyaW5nKCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2Vy
LnN0YXJ0Q2FwdHVyaW5nKHNob3VsZENyZWF0ZVJlY29yZGluZyk7Ci0gICAgICAgICAgICAvLyBT
aG93IHRoZSB0aW1lbGluZSB0byB3aGljaCBldmVudHMgd2lsbCBiZSBhcHBlbmRlZC4KLSAgICAg
ICAgICAgIHRoaXMuX3JlY29yZGluZ0xvYWRlZCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
X3RyZWVFbGVtZW50R29Ub0Fycm93V2FzQ2xpY2tlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX2NsaWNrZWRUcmVlRWxlbWVudEdvVG9BcnJvdyA9IHRydWU7Ci0KLSAgICAgICAgdmFyIHRy
ZWVFbGVtZW50ID0gZXZlbnQudGFyZ2V0Ll9fdHJlZUVsZW1lbnQ7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KTsK
LQotICAgICAgICB0cmVlRWxlbWVudC5zZWxlY3QodHJ1ZSwgdHJ1ZSk7Ci0KLSAgICAgICAgdGhp
cy5fY2xpY2tlZFRyZWVFbGVtZW50R29Ub0Fycm93ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgX3Ry
ZWVFbGVtZW50Q2xvc2VCdXR0b25DbGlja2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGN1
cnJlbnRUaW1lbGluZVZpZXcgPSB0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldyA/IHRoaXMuX2Rp
c3BsYXllZENvbnRlbnRWaWV3LmN1cnJlbnRUaW1lbGluZVZpZXcgOiBudWxsOwotICAgICAgICBp
ZiAoY3VycmVudFRpbWVsaW5lVmlldyAmJiBjdXJyZW50VGltZWxpbmVWaWV3LnJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKQotICAgICAgICAgICAgdGhp
cy5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUoY3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNl
bnRlZE9iamVjdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5l
T3ZlcnZpZXcoKTsKLSAgICB9Ci0KLSAgICBfcmVjb3JkaW5nc1RyZWVTZWxlY3Rpb25EaWRDaGFu
Z2UoZXZlbnQpCi0gICAgewotICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSBldmVudC5kYXRhLnNl
bGVjdGVkRWxlbWVudDsKLSAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZyk7Ci0KLSAgICAg
ICAgdGhpcy5fcmVjb3JkaW5nU2VsZWN0ZWQodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Qp
OwotICAgIH0KLQotICAgIF9yZW5kZXJpbmdGcmFtZVRpbWVsaW5lVGltZXNVcGRhdGVkKGV2ZW50
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3ZpZXdNb2RlID09PSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlldy5WaWV3TW9kZS5SZW5kZXJpbmdGcmFtZXMpCi0gICAgICAgICAgICB0aGlz
Ll9yZWZyZXNoRnJhbWVTZWxlY3Rpb25DaGFydCgpOwotICAgIH0KLQotICAgIF90aW1lbGluZXNU
cmVlU2VsZWN0aW9uRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IHRyZWVFbGVt
ZW50ID0gZXZlbnQuZGF0YS5zZWxlY3RlZEVsZW1lbnQ7Ci0gICAgICAgIGlmICghdHJlZUVsZW1l
bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
dGltZWxpbmVUcmVlRWxlbWVudE1hcC5nZXQodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Qp
ID09PSB0cmVlRWxlbWVudCwgdHJlZUVsZW1lbnQpOwotCi0gICAgICAgIC8vIElmIG5vdCBzZWxl
Y3RlZCBieSB1c2VyLCB0aGVuIHRoaXMgc2VsZWN0aW9uIG1lcmVseSBzeW5jZWQgdGhlIHRyZWUg
ZWxlbWVudCB3aXRoIHRoZSBjb250ZW50IHZpZXcncyBjb250ZW50cy4KLSAgICAgICAgbGV0IHNl
bGVjdGVkQnlVc2VyID0gZXZlbnQuZGF0YS5zZWxlY3RlZEJ5VXNlcjsKLSAgICAgICAgaWYgKCFz
ZWxlY3RlZEJ5VXNlcikgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZGlzcGxh
eWVkQ29udGVudFZpZXcuY3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCA9PT0g
dHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbGV0IHRpbWVsaW5lID0gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRP
YmplY3Q7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2Rpc3BsYXllZFJlY29yZGluZy50aW1lbGluZXMuZ2V0KHRpbWVsaW5lLnR5cGUpID09PSB0aW1l
bGluZSwgdGltZWxpbmUpOwotCi0gICAgICAgIHRoaXMuX3ByZXZpb3VzU2VsZWN0ZWRUaW1lbGlu
ZVR5cGUgPSB0aW1lbGluZS50eXBlOwotCi0gICAgICAgIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRW
aWV3LnNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGluZSh0aW1lbGluZSk7Ci0gICAgICAgIHRoaXMu
Y29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3
KTsKLSAgICB9Ci0KLSAgICBfY29udGVudEJyb3dzZXJDdXJyZW50Q29udGVudFZpZXdEaWRDaGFu
Z2UoZXZlbnQpCi0gICAgewotICAgICAgICBsZXQgZGlkU2hvd1RpbWVsaW5lUmVjb3JkaW5nQ29u
dGVudFZpZXcgPSB0aGlzLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50VmlldyBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3OwotICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlld1Nob3dpbmdTdHlsZUNsYXNzLCBkaWRT
aG93VGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldyk7Ci0KLSAgICAgICAgaWYgKCFkaWRTaG93
VGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0aGlzLl91cGRhdGVWaWV3TW9kZUlmTmVlZGVkKCk7Ci0gICAgICAgIHRoaXMuX3RpbWVs
aW5lQ291bnRDaGFuZ2VkKCk7Ci0KLSAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXIoKTsKLQotICAg
ICAgICBsZXQgdGltZWxpbmVWaWV3ID0gdGhpcy5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVu
dFZpZXcuY3VycmVudFRpbWVsaW5lVmlldzsKLSAgICAgICAgaWYgKHRpbWVsaW5lVmlldy5yZXBy
ZXNlbnRlZE9iamVjdC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5S
ZW5kZXJpbmdGcmFtZSkKLSAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hGcmFtZVNlbGVjdGlvbkNo
YXJ0KCk7Ci0gICAgfQotCi0gICAgX2NhcHR1cmluZ1N0YXJ0ZWRPclN0b3BwZWQoZXZlbnQpCi0g
ICAgewotICAgICAgICBsZXQgaXNDYXB0dXJpbmcgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5h
Z2VyLmlzQ2FwdHVyaW5nKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVJlY29yZEJ1dHRvbihpc0Nh
cHR1cmluZyk7Ci0gICAgfQotCi0gICAgX3JlY29yZGluZ0NyZWF0ZWQoZXZlbnQpCi0gICAgewot
ICAgICAgICB0aGlzLl9hZGRSZWNvcmRpbmcoZXZlbnQuZGF0YS5yZWNvcmRpbmcpCi0gICAgICAg
IHRoaXMuX3JlY29yZGluZ0NvdW50Q2hhbmdlZCgpOwotICAgIH0KLQotICAgIF9hZGRSZWNvcmRp
bmcocmVjb3JkaW5nKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVjb3JkaW5nIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLCByZWNvcmRpbmcpOwotCi0g
ICAgICAgIHZhciByZWNvcmRpbmdUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJh
bFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TdG9wd2F0Y2hJ
Y29uU3R5bGVDbGFzcywgcmVjb3JkaW5nLmRpc3BsYXlOYW1lLCBudWxsLCByZWNvcmRpbmcpOwot
ICAgICAgICB0aGlzLl9yZWNvcmRpbmdUcmVlRWxlbWVudE1hcC5zZXQocmVjb3JkaW5nLCByZWNv
cmRpbmdUcmVlRWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5h
cHBlbmRDaGlsZChyZWNvcmRpbmdUcmVlRWxlbWVudCk7Ci0gICAgfQotCi0gICAgX3JlY29yZGlu
Z0NvdW50Q2hhbmdlZCgpCi0gICAgewotICAgICAgICB2YXIgcHJldmlvdXNUcmVlRWxlbWVudCA9
IG51bGw7Ci0gICAgICAgIGZvciAodmFyIHRyZWVFbGVtZW50IG9mIHRoaXMuX3JlY29yZGluZ1Ry
ZWVFbGVtZW50TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNUcmVlRWxl
bWVudCkgewotICAgICAgICAgICAgICAgIHByZXZpb3VzVHJlZUVsZW1lbnQubmV4dFNpYmxpbmcg
PSB0cmVlRWxlbWVudDsKLSAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5wcmV2aW91c1NpYmxp
bmcgPSBwcmV2aW91c1RyZWVFbGVtZW50OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBw
cmV2aW91c1RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBfcmVjb3JkaW5nU2VsZWN0ZWQocmVjb3JkaW5nKQotICAgIHsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQocmVjb3JkaW5nIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5n
LCByZWNvcmRpbmcpOwotCi0gICAgICAgIHZhciBvbGRSZWNvcmRpbmcgPSB0aGlzLl9kaXNwbGF5
ZWRSZWNvcmRpbmcgfHwgbnVsbDsKLQotICAgICAgICBpZiAob2xkUmVjb3JkaW5nKSB7Ci0gICAg
ICAgICAgICBvbGRSZWNvcmRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRpbmcuRXZlbnQuSW5zdHJ1bWVudEFkZGVkLCB0aGlzLl9pbnN0cnVtZW50QWRk
ZWQsIHRoaXMpOwotICAgICAgICAgICAgb2xkUmVjb3JkaW5nLnJlbW92ZUV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50Lkluc3RydW1lbnRSZW1vdmVkLCB0
aGlzLl9pbnN0cnVtZW50UmVtb3ZlZCwgdGhpcyk7Ci0KLSAgICAgICAgICAgIC8vIERlc3Ryb3kg
dHJlZSBlbGVtZW50cyBpbiBvbmUgb3BlcmF0aW9uIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGZpeHVw
cy4KLSAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVu
KCk7Ci0gICAgICAgICAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmNsZWFyKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aGlzLl9jbGVhckluc3RydW1lbnRzKCk7Ci0KLSAgICAgICAg
dGhpcy5fZGlzcGxheWVkUmVjb3JkaW5nID0gcmVjb3JkaW5nOwotICAgICAgICB0aGlzLl9kaXNw
bGF5ZWRSZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRpbmcuRXZlbnQuSW5zdHJ1bWVudEFkZGVkLCB0aGlzLl9pbnN0cnVtZW50QWRkZWQsIHRoaXMp
OwotICAgICAgICB0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuSW5zdHJ1bWVudFJlbW92ZWQsIHRoaXMu
X2luc3RydW1lbnRSZW1vdmVkLCB0aGlzKTsKLQotICAgICAgICBmb3IgKGxldCBpbnN0cnVtZW50
IG9mIHJlY29yZGluZy5pbnN0cnVtZW50cykKLSAgICAgICAgICAgIHRoaXMuX2luc3RydW1lbnRB
ZGRlZChpbnN0cnVtZW50KTsKLQotICAgICAgICAvLyBTYXZlIHRoZSBjdXJyZW50IHN0YXRlIGlu
Y2FzZSB3ZSBuZWVkIHRvIHJlc3RvcmUgaXQgdG8gYSBuZXcgcmVjb3JkaW5nLgotICAgICAgICB2
YXIgY29va2llID0ge307Ci0gICAgICAgIHRoaXMuc2F2ZVN0YXRlVG9Db29raWUoY29va2llKTsK
LQotICAgICAgICBpZiAodGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcpCi0gICAgICAgICAgICB0
aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlldy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0
ZVZpZXdNb2RlSWZOZWVkZWQsIHRoaXMpOwotCi0gICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIHJl
Y29yZGluZyBjb250ZW50IHZpZXcgaWYgaXQgZXhpc3RzIGFscmVhZHksIGlmIGl0IGRvZXMgd2Ug
ZG9uJ3Qgd2FudCB0byByZXN0b3JlIHRoZSBjb29raWUuCi0gICAgICAgIHZhciBvbmx5RXhpc3Rp
bmcgPSB0cnVlOwotICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldyA9IHRoaXMuY29u
dGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlzLl9kaXNwbGF5
ZWRSZWNvcmRpbmcsIG9ubHlFeGlzdGluZywge3RpbWVsaW5lU2lkZWJhclBhbmVsOiB0aGlzfSk7
Ci0gICAgICAgIGlmICh0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldykgewotICAgICAgICAgICAg
dGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVW
aWV3TW9kZUlmTmVlZGVkLCB0aGlzKTsKLQotICAgICAgICAgICAgLy8gU2hvdyB0aGUgdGltZWxp
bmUgdGhhdCB3YXMgYmVpbmcgc2hvd24gdG8gdXBkYXRlIHRoZSBzaWRlYmFyIHRyZWUgc3RhdGUu
Ci0gICAgICAgICAgICB2YXIgY3VycmVudFRpbWVsaW5lVmlldyA9IHRoaXMuX2Rpc3BsYXllZENv
bnRlbnRWaWV3LmN1cnJlbnRUaW1lbGluZVZpZXc7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFRp
bWVsaW5lVmlldyAmJiBjdXJyZW50VGltZWxpbmVWaWV3LnJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKQotICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Rp
bWVsaW5lVmlld0ZvclRpbWVsaW5lKGN1cnJlbnRUaW1lbGluZVZpZXcucmVwcmVzZW50ZWRPYmpl
Y3QpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5l
T3ZlcnZpZXcoKTsKLQotICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXIoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG9ubHlFeGlzdGluZyA9IGZhbHNlOwot
ICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldyA9IHRoaXMuY29udGVudEJyb3dzZXIu
Y29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcs
IG9ubHlFeGlzdGluZywge3RpbWVsaW5lU2lkZWJhclBhbmVsOiB0aGlzfSk7Ci0gICAgICAgIGlm
ICh0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldykKLSAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXll
ZENvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2
ZW50Lk5hdmlnYXRpb25JdGVtc0RpZENoYW5nZSwgdGhpcy5fdXBkYXRlVmlld01vZGVJZk5lZWRl
ZCwgdGhpcyk7Ci0KLSAgICAgICAgLy8gUmVzdG9yZSB0aGUgY29va2llIHRvIGNhcnJ5IG92ZXIg
dGhlIHByZXZpb3VzIHJlY29yZGluZyB2aWV3IHN0YXRlIHRvIHRoZSBuZXcgcmVjb3JkaW5nLgot
ICAgICAgICB0aGlzLnJlc3RvcmVTdGF0ZUZyb21Db29raWUoY29va2llKTsKLQotICAgICAgICB0
aGlzLnVwZGF0ZUZpbHRlcigpOwotICAgIH0KLQotICAgIF9yZWNvcmRpbmdMb2FkZWQoZXZlbnQp
Ci0gICAgewotICAgICAgICB0aGlzLl9yZWNvcmRpbmdTZWxlY3RlZChXZWJJbnNwZWN0b3IudGlt
ZWxpbmVNYW5hZ2VyLmFjdGl2ZVJlY29yZGluZyk7Ci0gICAgfQotCi0gICAgX2NsZWFySW5zdHJ1
bWVudHMoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5jbGVh
cigpOwotCi0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuRlBTSW5zdHJ1bWVudC5zdXBwb3J0ZWQo
KSkKLSAgICAgICAgICAgIHRoaXMuX3JlbW92ZWRGUFNJbnN0cnVtZW50KCk7Ci0gICAgfQotCi0g
ICAgX2luc3RydW1lbnRBZGRlZChpbnN0cnVtZW50T3JFdmVudCkKLSAgICB7Ci0gICAgICAgIGxl
dCBpbnN0cnVtZW50ID0gaW5zdHJ1bWVudE9yRXZlbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
SW5zdHJ1bWVudCA/IGluc3RydW1lbnRPckV2ZW50IDogaW5zdHJ1bWVudE9yRXZlbnQuZGF0YS5p
bnN0cnVtZW50OwotICAgICAgICBjb25zb2xlLmFzc2VydChpbnN0cnVtZW50IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkluc3RydW1lbnQsIGluc3RydW1lbnQpOwotCi0gICAgICAgIGxldCB0aW1l
bGluZSA9IHRoaXMuX2Rpc3BsYXllZFJlY29yZGluZy50aW1lbGluZUZvckluc3RydW1lbnQoaW5z
dHJ1bWVudCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90aW1lbGluZVRyZWVFbGVt
ZW50TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsKLQotICAgICAgICBpZiAodGltZWxpbmUu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJhbWUp
IHsKLSAgICAgICAgICAgIHRoaXMuX2FkZGVkRlBTSW5zdHJ1bWVudCgpOwotICAgICAgICAgICAg
dGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuVGlt
ZXNVcGRhdGVkLCB0aGlzLl9yZW5kZXJpbmdGcmFtZVRpbWVsaW5lVGltZXNVcGRhdGVkLCB0aGlz
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCBkaXNwbGF5
TmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmRpc3BsYXlOYW1lRm9y
VGltZWxpbmUodGltZWxpbmUpOwotICAgICAgICBsZXQgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3Lmljb25DbGFzc05hbWVGb3JUaW1lbGluZSh0aW1l
bGluZSk7Ci0gICAgICAgIGxldCBnZW5lcmljQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lVGFiQ29udGVudFZpZXcuZ2VuZXJpY0NsYXNzTmFtZUZvclRpbWVsaW5lKHRpbWVsaW5lKTsK
LSAgICAgICAgbGV0IHRpbWVsaW5lVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudChbaWNvbkNsYXNzTmFtZSwgZ2VuZXJpY0NsYXNzTmFtZSwgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkxhcmdlSWNvblN0eWxlQ2xhc3NdLCBkaXNwbGF5TmFt
ZSwgbnVsbCwgdGltZWxpbmUpOwotICAgICAgICBsZXQgdG9vbHRpcCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ2xvc2UgJXMgdGltZWxpbmUgdmlldyIpLmZvcm1hdChkaXNwbGF5TmFtZSk7Ci0g
ICAgICAgIGxldCBidXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0
dG9uKHVzZVNWR1N5bWJvbCgiSW1hZ2VzL0Nsb3NlTGFyZ2Uuc3ZnIiwgImNsb3NlLWJ1dHRvbiIs
IHRvb2x0aXApKTsKLSAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLkV2ZW50LkNsaWNrZWQsIHRoaXMuc2hvd1RpbWVsaW5l
T3ZlcnZpZXcsIHRoaXMpOwotICAgICAgICB0aW1lbGluZVRyZWVFbGVtZW50LnN0YXR1cyA9IGJ1
dHRvbi5lbGVtZW50OwotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLmFwcGVu
ZENoaWxkKHRpbWVsaW5lVHJlZUVsZW1lbnQpOwotICAgICAgICB0aGlzLl90aW1lbGluZVRyZWVF
bGVtZW50TWFwLnNldCh0aW1lbGluZSwgdGltZWxpbmVUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAg
dGhpcy5fdGltZWxpbmVDb3VudENoYW5nZWQoKTsKLSAgICB9Ci0KLSAgICBfaW5zdHJ1bWVudFJl
bW92ZWQoZXZlbnQpCi0gICAgewotICAgICAgICBsZXQgaW5zdHJ1bWVudCA9IGV2ZW50LmRhdGEu
aW5zdHJ1bWVudDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaW5zdHJ1bWVudCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50LCBpbnN0cnVtZW50KTsKLQotICAgICAgICBsZXQgdGlt
ZWxpbmUgPSB0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcudGltZWxpbmVGb3JJbnN0cnVtZW50KGlu
c3RydW1lbnQpOwotCi0gICAgICAgIGlmICh0aW1lbGluZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmQuVHlwZS5SZW5kZXJpbmdGcmFtZSkgewotICAgICAgICAgICAgdGhpcy5f
cmVtb3ZlZEZQU0luc3RydW1lbnQoKTsKLSAgICAgICAgICAgIHRpbWVsaW5lLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlRpbWVzVXBkYXRlZCwgdGhpcy5f
cmVuZGVyaW5nRnJhbWVUaW1lbGluZVRpbWVzVXBkYXRlZCwgdGhpcyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90aW1lbGlu
ZVRyZWVFbGVtZW50TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsKLQotICAgICAgICBsZXQg
dGltZWxpbmVUcmVlRWxlbWVudCA9IHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAudGFrZSh0
aW1lbGluZSk7Ci0gICAgICAgIGxldCBzaG91bGRTdXBwcmVzc09uRGVzZWxlY3QgPSBmYWxzZTsK
LSAgICAgICAgbGV0IHNob3VsZFN1cHByZXNzU2VsZWN0U2libGluZyA9IHRydWU7Ci0gICAgICAg
IHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLnJlbW92ZUNoaWxkKHRpbWVsaW5lVHJlZUVsZW1l
bnQsIHNob3VsZFN1cHByZXNzT25EZXNlbGVjdCwgc2hvdWxkU3VwcHJlc3NTZWxlY3RTaWJsaW5n
KTsKLSAgICAgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5kZWxldGUodGltZWxpbmUp
OwotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lQ291bnRDaGFuZ2VkKCk7Ci0gICAgfQotCi0gICAg
X2FkZGVkRlBTSW5zdHJ1bWVudCgpCi0gICAgewotICAgICAgICB0aGlzLl9iYXNpY1RpdGxlQmFy
LmhpZGRlbiA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3JlbmRlcmluZ0ZyYW1lc1RpdGxlQmFyLmhp
ZGRlbiA9IGZhbHNlOwotICAgIH0KLQotICAgIF9yZW1vdmVkRlBTSW5zdHJ1bWVudCgpCi0gICAg
ewotICAgICAgICB0aGlzLl9iYXNpY1RpdGxlQmFyLmhpZGRlbiA9IGZhbHNlOwotICAgICAgICB0
aGlzLl9yZW5kZXJpbmdGcmFtZXNUaXRsZUJhci5oaWRkZW4gPSB0cnVlOwotICAgIH0KLQotICAg
IF90aW1lbGluZUNvdW50Q2hhbmdlZCgpCi0gICAgewotICAgICAgICB2YXIgcHJldmlvdXNUcmVl
RWxlbWVudCA9IG51bGw7Ci0gICAgICAgIGZvciAodmFyIHRyZWVFbGVtZW50IG9mIHRoaXMuX3Rp
bWVsaW5lVHJlZUVsZW1lbnRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGlmIChwcmV2aW91
c1RyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNUcmVlRWxlbWVudC5uZXh0
U2libGluZyA9IHRyZWVFbGVtZW50OwotICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LnByZXZp
b3VzU2libGluZyA9IHByZXZpb3VzVHJlZUVsZW1lbnQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHByZXZpb3VzVHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVsaW5lT3ZlcnZpZXdIZWlnaHQoKTsKLSAgICB9Ci0KLSAg
ICBfdXBkYXRlVGltZWxpbmVPdmVydmlld0hlaWdodCgpCi0gICAgewotICAgICAgICBjb25zdCBl
dmVudFRpdGxlQmFyT2Zmc2V0ID0gNTg7Ci0gICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50T2Zm
c2V0ID0gODE7Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldykKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgb3ZlcnZpZXdIZWlnaHQgPSB0aGlzLl9k
aXNwbGF5ZWRDb250ZW50Vmlldy50aW1lbGluZU92ZXJ2aWV3SGVpZ2h0OwotICAgICAgICB0aGlz
Ll90aW1lbGluZUV2ZW50c1RpdGxlQmFyQ29udGFpbmVyLnN0eWxlLnRvcCA9IChvdmVydmlld0hl
aWdodCArIGV2ZW50VGl0bGVCYXJPZmZzZXQpICsgInB4IjsKLSAgICAgICAgdGhpcy5jb250ZW50
Vmlldy5lbGVtZW50LnN0eWxlLnRvcCA9IChvdmVydmlld0hlaWdodCArIGNvbnRlbnRFbGVtZW50
T2Zmc2V0KSArICJweCI7Ci0gICAgfQotCi0gICAgX3JlY29yZEJ1dHRvbkNsaWNrZWQoZXZlbnQp
Ci0gICAgewotICAgICAgICBsZXQgaXNDYXB0dXJpbmcgPSAhV2ViSW5zcGVjdG9yLnRpbWVsaW5l
TWFuYWdlci5pc0NhcHR1cmluZygpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVJlY29yZEJ1dHRv
bihpc0NhcHR1cmluZyk7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZVJlY29yZGluZyhldmVudC5zaGlm
dEtleSk7Ci0gICAgfQotCi0gICAgX3JlY29yZEJ1dHRvbk1vdXNlZE92ZXIoZXZlbnQpCi0gICAg
ewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5pc0NhcHR1cmluZygp
KQotICAgICAgICAgICAgdGhpcy5fcmVjb3JkaW5nU3RhdHVzSXRlbS5lbGVtZW50LnRleHRDb250
ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIFJlY29yZGluZyIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdTdGF0dXNJdGVtLmVsZW1lbnQudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFJlY29yZGluZyIpOwotICAgIH0K
LQotICAgIF9yZWNvcmRCdXR0b25Nb3VzZWRPdXQoZXZlbnQpCi0gICAgewotICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5pc0NhcHR1cmluZygpKQotICAgICAgICAgICAg
dGhpcy5fcmVjb3JkaW5nU3RhdHVzSXRlbS5lbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZWNvcmRpbmciKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhp
cy5fcmVjb3JkaW5nU3RhdHVzSXRlbS5lbGVtZW50LnRleHRDb250ZW50ID0gIiI7Ci0gICAgfQot
Ci0gICAgX3VwZGF0ZVJlY29yZEJ1dHRvbihpc0NhcHR1cmluZykKLSAgICB7Ci0gICAgICAgIHRo
aXMuX3JlY29yZGluZ1N0YXR1c0l0ZW0uZWxlbWVudC50ZXh0Q29udGVudCA9IGlzQ2FwdHVyaW5n
ID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmciKSA6ICIiOwotICAgICAgICB0aGlz
Ll9yZWNvcmRCdXR0b24udG9nZ2xlZCA9IGlzQ2FwdHVyaW5nOwotICAgIH0KLQotICAgIF92aWV3
TW9kZVNlbGVjdGVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQu
dGFyZ2V0LnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0pOwotICAgICAgICBpZiAoIWV2ZW50LnRhcmdl
dC5zZWxlY3RlZE5hdmlnYXRpb25JdGVtKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGxldCBzZWxlY3RlZE5hdmlnYXRpb25JdGVtID0gZXZlbnQudGFyZ2V0LnNlbGVjdGVkTmF2aWdh
dGlvbkl0ZW07Ci0gICAgICAgIGxldCBuZXdWaWV3TW9kZSA9IHNlbGVjdGVkTmF2aWdhdGlvbkl0
ZW0uaWRlbnRpZmllcjsKLSAgICAgICAgaWYgKHRoaXMuX3ZpZXdNb2RlID09PSBuZXdWaWV3TW9k
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgdGltZWxpbmVUeXBlID0gdGhp
cy5fcHJldmlvdXNTZWxlY3RlZFRpbWVsaW5lVHlwZTsKLSAgICAgICAgaWYgKG5ld1ZpZXdNb2Rl
ID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5WaWV3TW9kZS5SZW5kZXJpbmdGcmFt
ZXMpIHsKLSAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU2VsZWN0ZWRUaW1lbGluZVR5cGUgPSB0
aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ID8gdGhpcy5fdGlt
ZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC50
eXBlIDogbnVsbDsKLSAgICAgICAgICAgIHRpbWVsaW5lVHlwZSA9IFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZC5UeXBlLlJlbmRlcmluZ0ZyYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHRpbWVsaW5lVHlwZSkgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZGlzcGxh
eWVkUmVjb3JkaW5nLnRpbWVsaW5lcy5oYXModGltZWxpbmVUeXBlKSwgdGltZWxpbmVUeXBlKTsK
LSAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5lVmlld0ZvclRpbWVsaW5lKHRoaXMuX2Rpc3Bs
YXllZFJlY29yZGluZy50aW1lbGluZXMuZ2V0KHRpbWVsaW5lVHlwZSkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5zaG93VGltZWxpbmVPdmVydmlldygp
OwotICAgIH0KLQotICAgIF92aWV3TW9kZUZvclRpbWVsaW5lKHRpbWVsaW5lKQotICAgIHsKLSAg
ICAgICAgaWYgKHRpbWVsaW5lICYmIHRpbWVsaW5lLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZC5UeXBlLlJlbmRlcmluZ0ZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LlZpZXdNb2RlLlJlbmRlcmluZ0ZyYW1lczsKLQotICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuVmlld01vZGUuVGltZWxp
bmVzOwotICAgIH0KLQotICAgIF9mcmFtZVNlbGVjdGlvbkxlZ2VuZEl0ZW1DaGVja2VkKGV2ZW50
KQotICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LmRhdGEuY2hlY2tlZCkKLSAgICAgICAgICAgIHRo
aXMuX3JlbmRlcmluZ0ZyYW1lVGFza0ZpbHRlci5kZWxldGUoZXZlbnQuZGF0YS5pZCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3JlbmRlcmluZ0ZyYW1lVGFza0ZpbHRlci5hZGQo
ZXZlbnQuZGF0YS5pZCk7Ci0KLSAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXIoKTsKLSAgICB9Ci0K
LSAgICBfcmVmcmVzaEZyYW1lU2VsZWN0aW9uQ2hhcnQoKQotICAgIHsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoV2ViSW5zcGVjdG9yLkZQU0luc3RydW1lbnQuc3VwcG9ydGVkKCkpOwotICAgICAg
ICBpZiAoIVdlYkluc3BlY3Rvci5GUFNJbnN0cnVtZW50LnN1cHBvcnRlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghdGhpcy52aXNpYmxlKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkUmVjb3JkcygpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Rpc3BsYXllZFJlY29yZGluZyk7Ci0g
ICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcudGltZWxp
bmVzLmhhcyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SZW5kZXJpbmdGcmFtZSks
ICJDYW5ub3QgZmluZCByZW5kZXJpbmcgZnJhbWVzIHRpbWVsaW5lIGluIGRpc3BsYXllZCByZWNv
cmRpbmciKTsKLQotICAgICAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5fZGlzcGxheWVkUmVj
b3JkaW5nLnRpbWVsaW5lcy5nZXQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVu
ZGVyaW5nRnJhbWUpOwotICAgICAgICAgICAgdmFyIHNlbGVjdGVkUmVjb3JkcyA9IFtdOwotICAg
ICAgICAgICAgZm9yICh2YXIgcmVjb3JkIG9mIHRpbWVsaW5lLnJlY29yZHMpIHsKLSAgICAgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChyZWNvcmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVu
ZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZCk7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBm
cmFtZSBpcyBjb21wbGV0ZWx5IGJlZm9yZSB0aGUgYm91bmRzIG9mIHRoZSBncmFwaCwgc2tpcCB0
aGlzIHJlY29yZC4KLSAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmZyYW1lSW5kZXggPCB0aGlz
Ll9zdGFydEZyYW1lSW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICAgICAgLy8gSWYgdGhpcyByZWNvcmQgaXMgY29tcGxldGVseSBhZnRlciB0aGUgZW5k
IHRpbWUsIGJyZWFrIG91dCBub3cuCi0gICAgICAgICAgICAgICAgLy8gUmVjb3JkcyBhcmUgc29y
dGVkLCBzbyBhbGwgcmVjb3JkcyBhZnRlciB0aGlzIHdpbGwgYmUgYmV5b25kIHRoZSBlbmQgdGlt
ZSB0b28uCi0gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5mcmFtZUluZGV4ID4gdGhpcy5fZW5k
RnJhbWVJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAg
ICBzZWxlY3RlZFJlY29yZHMucHVzaChyZWNvcmQpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICByZXR1cm4gc2VsZWN0ZWRSZWNvcmRzOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHJl
Y29yZHMgPSBnZXRTZWxlY3RlZFJlY29yZHMuY2FsbCh0aGlzKTsKLSAgICAgICAgZm9yIChsZXQg
a2V5IGluIFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkLlRhc2tUeXBl
KSB7Ci0gICAgICAgICAgICBsZXQgdGFza1R5cGUgPSBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJh
bWVUaW1lbGluZVJlY29yZC5UYXNrVHlwZVtrZXldOwotICAgICAgICAgICAgbGV0IHZhbHVlID0g
cmVjb3Jkcy5yZWR1Y2UoZnVuY3Rpb24ocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSB7IHJl
dHVybiBwcmV2aW91c1ZhbHVlICsgY3VycmVudFZhbHVlLmR1cmF0aW9uRm9yVGFzayh0YXNrVHlw
ZSk7IH0sIDApOwotICAgICAgICAgICAgdGhpcy5fZnJhbWVTZWxlY3Rpb25DaGFydFJvdy5zZXRJ
dGVtVmFsdWUodGFza1R5cGUsIHZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcmVj
b3Jkcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHRoaXMuX2ZyYW1lU2VsZWN0aW9uQ2hhcnRSb3cu
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZyYW1lczogTm9uZSBTZWxlY3RlZCIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGZpcnN0UmVjb3Jk
ID0gcmVjb3Jkc1swXTsKLSAgICAgICAgdmFyIGxhc3RSZWNvcmQgPSByZWNvcmRzLmxhc3RWYWx1
ZTsKLQotICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICB0aGlz
Ll9mcmFtZVNlbGVjdGlvbkNoYXJ0Um93LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
cmFtZXM6ICVkIFx1MjAxMyAlZCAoJXMgXHUyMDEzICVzKSIpLmZvcm1hdChmaXJzdFJlY29yZC5m
cmFtZU51bWJlciwgbGFzdFJlY29yZC5mcmFtZU51bWJlciwKLSAgICAgICAgICAgICAgICBOdW1i
ZXIuc2Vjb25kc1RvU3RyaW5nKGZpcnN0UmVjb3JkLnN0YXJ0VGltZSksIE51bWJlci5zZWNvbmRz
VG9TdHJpbmcobGFzdFJlY29yZC5lbmRUaW1lKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB0aGlzLl9mcmFtZVNlbGVjdGlvbkNoYXJ0Um93LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJGcmFtZTogJWQgKCVzIFx1MjAxMyAlcykiKS5mb3JtYXQoZmlyc3RSZWNvcmQuZnJh
bWVOdW1iZXIsCi0gICAgICAgICAgICAgICAgTnVtYmVyLnNlY29uZHNUb1N0cmluZyhmaXJzdFJl
Y29yZC5zdGFydFRpbWUpLCBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKGxhc3RSZWNvcmQuZW5kVGlt
ZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgb25seSB1
c2VkIHdoZW4gUmVwbGF5QWdlbnQgaXMgYXZhaWxhYmxlLgotCi0gICAgX3VwZGF0ZVJlcGxheUlu
dGVyZmFjZVZpc2liaWxpdHkoKQotICAgIHsKLSAgICAgICAgdmFyIHNob3VsZFNob3dSZXBsYXlJ
bnRlcmZhY2UgPSAhISh3aW5kb3cuUmVwbGF5QWdlbnQgJiYgV2ViSW5zcGVjdG9yLnNob3dSZXBs
YXlJbnRlcmZhY2VTZXR0aW5nLnZhbHVlKTsKLQotICAgICAgICB0aGlzLl9yZWNvcmRpbmdOYXZp
Z2F0aW9uQmFyLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwuSGlkZGVuU3R5bGVDbGFzc05hbWUsIHNob3VsZFNob3dSZXBsYXlJbnRlcmZh
Y2UpOwotICAgICAgICB0aGlzLl9yZXBsYXlOYXZpZ2F0aW9uQmFyLmVsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuSGlkZGVuU3R5bGVDbGFz
c05hbWUsICFzaG91bGRTaG93UmVwbGF5SW50ZXJmYWNlKTsKLSAgICB9Ci0KLSAgICBfY29udGV4
dE1lbnVOYXZpZ2F0aW9uQmFyT3JTdGF0dXNCYXIoKQotICAgIHsKLSAgICAgICAgaWYgKCF3aW5k
b3cuUmVwbGF5QWdlbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IHRvZ2ds
ZVJlcGxheUludGVyZmFjZSA9ICgpID0+IHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93
UmVwbGF5SW50ZXJmYWNlU2V0dGluZy52YWx1ZSA9ICFXZWJJbnNwZWN0b3Iuc2hvd1JlcGxheUlu
dGVyZmFjZVNldHRpbmcudmFsdWU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbGV0IGNvbnRleHRN
ZW51ID0gV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7Ci0g
ICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNldHRpbmcudmFsdWUp
Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSGlkZSBSZXBsYXkgQ29udHJvbHMiKSwgdG9nZ2xlUmVwbGF5SW50ZXJmYWNlKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNob3cgUmVwbGF5IENvbnRyb2xzIiksIHRvZ2dsZVJlcGxheUludGVyZmFjZSk7
Ci0gICAgfQotCi0gICAgX3JlcGxheUNhcHR1cmVCdXR0b25DbGlja2VkKCkKLSAgICB7Ci0gICAg
ICAgIGlmICghdGhpcy5fcmVwbGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uYWN0aXZhdGVkKSB7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zdGFydENhcHR1cmluZygpOwotICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5zdGFydENhcHR1cmluZygpOwot
Ci0gICAgICAgICAgICAvLyBEZS1ib3VuY2UgZnVydGhlciBwcmVzc2VzIHVudGlsIHRoZSBiYWNr
ZW5kIGhhcyBiZWd1biBjYXB0dXJpbmcuCi0gICAgICAgICAgICB0aGlzLl9yZXBsYXlDYXB0dXJl
QnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgdGhpcy5fcmVwbGF5Q2Fw
dHVyZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc3RvcENhcHR1cmluZygpOwotICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5zdG9wQ2FwdHVyaW5nKCk7Ci0KLSAg
ICAgICAgICAgIHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIF9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkNsaWNrZWQo
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uSXRlbS50
b2dnbGVkKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGF1c2VQbGF5
YmFjaygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5yZXBsYXlUb0NvbXBsZXRpb24oKTsKLSAgICB9Ci0KLSAgICBfY2FwdHVyZVN0YXJ0ZWQo
KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVwbGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9
IHRydWU7Ci0gICAgfQotCi0gICAgX2NhcHR1cmVTdG9wcGVkKCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtLmFjdGl2YXRlZCA9IGZhbHNlOwotICAgICAgICB0
aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9IHRydWU7Ci0gICAgfQot
Ci0gICAgX3BsYXliYWNrU3RhcnRlZCgpCi0gICAgewotICAgICAgICB0aGlzLl9yZXBsYXlQYXVz
ZVJlc3VtZUJ1dHRvbkl0ZW0udG9nZ2xlZCA9IHRydWU7Ci0gICAgfQotCi0gICAgX3BsYXliYWNr
UGF1c2VkKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uSXRl
bS50b2dnbGVkID0gZmFsc2U7Ci0gICAgfQotCi0gICAgX3VwZGF0ZVZpZXdNb2RlSWZOZWVkZWQo
KQotICAgIHsKLSAgICAgICAgbGV0IHRpbWVsaW5lVmlldyA9IHRoaXMuY29udGVudEJyb3dzZXIu
Y3VycmVudENvbnRlbnRWaWV3LmN1cnJlbnRUaW1lbGluZVZpZXc7Ci0gICAgICAgIGxldCBuZXdW
aWV3TW9kZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LlZpZXdNb2RlLlRpbWVsaW5l
czsKLSAgICAgICAgaWYgKHRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5UaW1lbGluZSAmJiB0aW1lbGluZVZpZXcucmVwcmVzZW50ZWRPYmplY3Qu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJhbWUp
Ci0gICAgICAgICAgICBuZXdWaWV3TW9kZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
LlZpZXdNb2RlLlJlbmRlcmluZ0ZyYW1lczsKLQotICAgICAgICBpZiAobmV3Vmlld01vZGUgPT09
IHRoaXMuX3ZpZXdNb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3Zp
ZXdNb2RlID0gbmV3Vmlld01vZGU7Ci0KLSAgICAgICAgbGV0IGlzU2hvd2luZ1RpbWVsaW5lcyA9
IHRoaXMuX3ZpZXdNb2RlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5WaWV3TW9k
ZS5UaW1lbGluZXM7Ci0gICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLmhpZGRlbiA9
ICFpc1Nob3dpbmdUaW1lbGluZXM7Ci0KLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5GUFNJbnN0
cnVtZW50LnN1cHBvcnRlZCgpKSB7Ci0gICAgICAgICAgICB0aGlzLl9mcmFtZVNlbGVjdGlvbkNo
YXJ0U2VjdGlvbi5jb2xsYXBzZWQgPSBpc1Nob3dpbmdUaW1lbGluZXM7Ci0gICAgICAgICAgICB0
aGlzLl92aWV3TW9kZU5hdmlnYXRpb25CYXIuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHRoaXMu
X3ZpZXdNb2RlOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
U2lkZWJhclBhbmVsLkhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7Ci1XZWJJbnNwZWN0
b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGl0bGVCYXJTdHlsZUNsYXNzID0gInRpdGxlLWJhciI7
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGl0bGVCYXJUZXh0U3R5bGVDbGFz
cyA9ICJ0aXRsZS1iYXItdGV4dCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
VGl0bGVCYXJTY29wZUJhclN0eWxlQ2xhc3MgPSAidGl0bGUtYmFyLXNjb3BlLWJhciI7Ci1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVzVGl0bGVCYXJTdHlsZUNsYXNz
ID0gInRpbWVsaW5lcyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxp
bmVFdmVudHNUaXRsZUJhclN0eWxlQ2xhc3MgPSAidGltZWxpbmUtZXZlbnRzIjsKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZXNDb250ZW50Q29udGFpbmVyU3R5bGVD
bGFzcyA9ICJ0aW1lbGluZXMtY29udGVudCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwuTGFyZ2VJY29uU3R5bGVDbGFzcyA9ICJsYXJnZSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxp
bmVTaWRlYmFyUGFuZWwuU3RvcHdhdGNoSWNvblN0eWxlQ2xhc3MgPSAic3RvcHdhdGNoLWljb24i
OwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lUmVjb3JkaW5nQ29u
dGVudFZpZXdTaG93aW5nU3R5bGVDbGFzcyA9ICJ0aW1lbGluZS1yZWNvcmRpbmctY29udGVudC12
aWV3LXNob3dpbmciOwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2hvd2lu
Z1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXdDb29raWVLZXkgPSAidGltZWxpbmUtc2lkZWJh
ci1wYW5lbC1zaG93aW5nLXRpbWVsaW5lLXJlY29yZGluZy1jb250ZW50LXZpZXciOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRpZmll
ckNvb2tpZUtleSA9ICJ0aW1lbGluZS1zaWRlYmFyLXBhbmVsLXNlbGVjdGVkLXRpbWVsaW5lLXZp
ZXctaWRlbnRpZmllciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuT3ZlcnZp
ZXdUaW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZSA9ICJvdmVydmlldyI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>